예전에 웹에서 멀티코어 기반 게임을 만들어보고 싶다는 글을 올린 적이 있고, 이어서 직접 개발 중인 키위엔진도 소개했었습니다.


https://gall.dcinside.com/mgallery/board/view?id=game_dev&no=192721


현실성이 떨어질 수도 있겠지만... - 인디 게임 개발 마이너 갤러리

저는 주로 웹 베이스로 게임을 만드는 편입니다. TypeScript로 개발하며, Pixi.js와 Matter.js라는 라이브러리를 주로 사용합니다.지금 구상하고 있는게 있어서 공유해보고자 합니다. 현실성이 떨어질 수도

gall.dcinside.com


https://gall.dcinside.com/mgallery/board/view?id=game_dev&no=193760


TypeScript 기반 2D 웹 게임 엔진을 오픈소스로 공개했습니다. - 인디 게임 개발 마이너 갤러리

안녕하세요? 개인적인 목적으로 개발중이던 TypeScript 기반 2D 웹 게임 엔진을 오픈소스로 공개했습니다.웹 사이트http:// kiwiengine.github.io/ko(띄어쓰기를 지워주세요, 이 갤러리에 //

gall.dcinside.com




최근에는 캐릭터 1천 개가 뭉칠 때 물리엔진에서 렉이 발생한다는 문제를 겪으면서 고민을 했는데요, 이 문제를 해결하고자 Hydra 엔진이라는 새로운 실험을 해보았습니다.


https://gall.dcinside.com/mgallery/board/view?id=game_dev&no=193515


물리엔진 최적화는 정말 힘드네요... - 인디 게임 개발 마이너 갤러리

고작 1천개 캐릭터에 물리 엔진을 적용해도 렉이 나는군요.시연https://examples-kiwiengine.pages.dev/simple-battle결국 유니티로 바꾸었다지만, 초기 뱀파이어 서바이버는 Phaser

gall.dcinside.com




Hydra는 이름처럼 머리가 여럿 달린 구조를 지향합니다.


- 로직 처리

- 물리엔진 처리

- 트랜스폼 변환

- 렌더링 처리


이 네 가지를 각각 웹워커(Web Worker)로 분리해서 동작시키고, SharedA.rrayBuffer를 적극 활용하여 워커 간 데이터 복제가 일어나지 않도록 설계했습니다.




데모는 다음과 같습니다.


https://hydraengine.pages.dev/examples/simple-battle



ac5939a70001b942813e33669735c1bcc2a977c21c773585f0dabed5e42e074dc2d2552d4eadfd28c8a114c2d1971e9e422dbbc8ac5b73a506c4d82f05ec8ab025d5c3c55c44c044952213a516b47c



실험 결과, 캐릭터가 뭉칠 때 Physics나 로직 쪽에서는 다소 프레임이 떨어지긴 하지만, 렌더링 워커는 안정적으로 120FPS를 유지하는 것을 확인했습니다.


웹 환경에서 멀티코어를 적극적으로 활용하는 사례가 드문데, Hydra는 이런 엣지한 니즈를 충족시킬 수 있는 도구가 될 것 같습니다.




키위엔진과 마찬가지로 Hydra 엔진도 오픈소스로 공개했습니다.


https://github.com/hydra-engine/hydra


GitHub - hydra-engine/hydra - 인디 게임 개발 마이너 갤러리

Contribute to hydra-engine/hydra development by creating an account on GitHub.

github.com




필요하신 분들께 도움이 되길 바랍니다.


읽어주셔서 감사합니다.