장르 | 개발자 툴 |
---|---|
게임버전 | 1.17, 1.17.1 |
원산지 | 국산 |
개발자 | 네더랄드 |
저작권 | 저희가 직접 만들었고, 라이선스는 GPL 3.0입니다. |
자료 출처 | https://github.com/Netherald/mine.js |
소스 | https://github.com/Netherald/mine.js |
[주의: 이 플러그인은 완전히 개발된것이 아닙니다. 그래서 많은 이벤트들이 없습니다. 필요한 이벤트가 있다면 GitHub Issue를 남겨주세요.]
Skript를 대체할 새 플러그인, Mine.js를 소개합니다.
JavaScript(JS)를 이용해 마인크래프트 서버 프로그래밍을 할 수 있는 플러그인입니다. 또한, J2V8(Java binding of V8 Engine)을 이용해 네이티브에서 실행하게되어 스크립트 로드 시간도 더 빠릅니다.
사용 방법은 위키 를 참고하세요.
속도 측정
Skript와 Mine.js의 속도 차이를 측정해보겠습니다.
속도 측정기 소스코드입니다.
public class CommandSpeedCheck extends JavaPlugin implements CommandExecutor { @Override public void onEnable() { System.out.println("Enabled!!"); getCommand("test2").setExecutor(this); getCommand("test").setExecutor(this); } @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { // lol System.out.println("Command~!"); if(label.startsWith("commandspeedcheck:test")) { sender.sendMessage(Component.text("SpeedCheck start!")); long startTime = System.nanoTime(); Bukkit.dispatchCommand(sender, args[0]); long endTime = System.nanoTime(); sender.sendMessage(Component.text("Speed check done! Speed: " + ((endTime - startTime) / 1000000) + "ms")); } else if(label.startsWith("commandspeedcheck:test2")) { int a = 0; for(int i = 0; i < 10000000; i++) { a += 1; } sender.sendMessage(Component.text("A: " + a)); } return true; } }
이제 Mine.js와 Skript 소스코드를 알아보겠습니다. 둘은 모두 1억번 연산합니다.
Mine.js
function onInit() { createCommand('testa', [], (args, sender) => { let a = 0 for(let i = 0; i < 100000000; i++) { a += 1 } sender.send('A: ' + a) }) }
Skript
command /testsk: trigger: set {_int} to 0 loop 100000000 times: add 1 to {_int} send "IntSk: %{_int}%" to player
속도 비교를 시작해보겠습니다.
오, 바로 멈췄네요. 메인 스레드가 터진것같네요. 아예 틱이 멈췄습니다 ㅋㅋㅋㅋㅋ
총 27449ms가 걸렸습니다.
이제는 Mine.js 코드로 해보겠습니다.
?????????
솔직히 이정도까지는 예상 못했는데.... 놀랍네요.
이로 주작 없는 속도체크는 끝났습니다. 이 두 명령어는
Skript: 27449ms
Mine.js: 870ms가 걸렸고
이를 계산해보면 약 31~32배 차이납니다.
솔직히 이 결과는 틀릴 수도 있습니다... ㅠ 저도 이렇게 빠를거라고는 예상 못했는데
아마도 네이티브에서 Interprete하는게 도움이 되었다고 봅니다.
그 뒤로 궁금해서 한번 더 테스트를 해보았습니다.
Reload 속도는 누가 더 빠를까?
코드는 이정도 변경했습니다.
실행해본 결과...
아쉽게도 Skript가 더 빨랐네요 ㅠ 그렇지만 뭐 이정도는 인정합니다 ㅋㅋ..
다운로드
적용법
위에 표시된 버튼을 누른뒤 다운로드된 플러그인을 plugins에 설치하세요.
(스크립트 폴더는 plugins/script입니다)
RANK0816
2021.08.22이정도면 조금 더 만들어지면 Skript 대체 가능할것 같네요
ingpungya
2021.08.23이벤트 같은거 조금만 더 추가하면 Skript도 금방 잡을것 같네요!
이건 혁명이다!