gosu 엔진을 사용하기로 결정했다
며칠간 Ruby로 어떤 클라 게임 엔진을 사용할지 선택의 기로에 놓여있었다.
후보는 mkxp-z와 gosu인데, 후자를 사용하는 것으로 결정내렸다.
mkxp-z vs gosu
1. IDE 디버깅 여부
내가 gosu를 사용하려는 결정적인 요인이다.
이걸 지원하지 않으면 아무리 좋은 엔진이라도 사용하기가 꺼려진다.
대부분에 디버깅에 많은 시간을 써야 할텐데, 예전에 했던 p/print/콘솔 출력 등을 이용하는 디버깅은 더 이상 하고 싶지 않다.
- mkxp-z: 제한적인 OS 에서만 IDE 디버깅을 할 수 있다.
- Windows에서는 IDE 디버깅을 할 방법이 없어 보인다.
- ruby_jard 는 Windows 에서 지원하지 않는다. (https://rubyjard.org/docs/)
- ruby-debug-ide 로 Game.exe 내의 루비 스크립트를 IDE 디버깅 할 방법을 찾지 못했다.(https://github.com/ruby-debug/ruby-debug-ide)
- 참고: https://github.com/Ancurio/mkxp/issues/198
- gosu: IDE 디버깅이 가능하다.
2. 한글 IME 지원
- mkxp-z: 한글 입력을 지원하는데, gosu에서는 영어만 지원한다.
- gosu: 한글 입력이 가능하도록 소스코드를 변경할 수 있을지는 알 수 없다.
3. ruby 설치
- mkxp-z: 미리 만들어진 dll의 루비 라이브러리를 사용할 수 있기 때문에 루비 설치가 필요 없다.
- gosu: 개발 시에는 반드시 설치해야 한다.
4. 프로젝트 규모 / 5. RGSS 호환성
- mkxp-z: 프로젝트를 exe로 빌드하려면 1-2시간은 소요된다. 그만큼 의존성도 높고 코드가 방대하다. 대신 기존 RGSS과의 호환성도 좋고 확장성도 높은 것으로 보인다.
- gosu: gosu 라이브러리를 직접 빌드해 본 경험은 없지만, gosu 웹사이트에서 미니멀한 의존성만 갖고 있다고 언급해서 mkxp-z 보다는 빌드 속도가 빠르지 않을까 기대하고 있다.
6. 라이센스
- mkxp-z: GNU 라이센스를 사용중이어서, 내가 이 소스코드를 변경 시, 코드도 함께 무조건 공개적으로 배포해야 하는 의무가 생긴다. (https://github.com/mkxp-z/mkxp-z?tab=GPL-2.0-1-ov-file#readme)
- gosu: 사본의 사용, 복사, 수정, 병합, 출판, 배포, 서브 라이선스 및/또는 판매 권한이 포함된다. (https://github.com/gosu/gosu?tab=License-1-ov-file#readme)
7. 클라이언트 변조
- mkxp-z: 플레이어는 mkxp.json을 마음대로 수정할 수가 있다. 또한 rxdata와 루비 스크립트가 노출되어 손쉬운 클라이언트 코드 수정이 가능하다. 반가운 상황은 아니다.
- gosu: 아직 해보진 않았지만 ocra 라는 프로그램으로 루비 스크립트를 하나의 exe 바이너리로 만들 수 있다. (https://github.com/gosu/gosu/wiki/Ruby-Packaging-on-Windows)
gosu는 connect_nonblock을 사용할 수 있는 것도 덤으로 남긴다.
읽어봤습니다만 타당한 이유인 것 같습니다. 특히 라이센스 문제도 그렇구요. OCRA는 저도 써봤는데, 프로그램이 약간 거대해졌던걸로 알고 있습니다.
답글삭제좋은 공유 감사합니다!
삭제다만 어느 쪽을 택하든 많이 고생하시긴 하겠네요.... 화이팅입니다.
답글삭제이제 선조들이 만든 RM-Gosu를 많이 참고 해봐야겠습니다. ㅎㅎ
삭제