개발일지. 25년 2월

February 14th, 2025

개인 작업을 작년쯤부터 재개했다. 정확히는 23년 9월에 시작했는데, 너무 오랜만에 시작한거라 이래저래 세팅하고 하면서 몇달은 허비했다.

심지어 24년 5월쯤 게임 엔진을 bevy에서 axmol로 교체하면서 사실상 다시 시작한 수준. 그러니까 제대로 한지는 이제 1년이 채 안되는 시간이긴 하다.

axmol엔진은 딱시 새로울건 없는 엔진이다. cocos2d-x 4.0에서 포크된거라서 거의 그대로 사용할수 있다. 자잘한 문법이 바뀐 정도.

미국에 오지 않았다면 몇년의 공백도 없었을까? 그런 아쉬움도 살짝 들긴 하지만 if 붙이기 시작하면 끝이 없다.

아직도 초기개발에 가까운 수준인데, 요즘 작업하는 쪽은 퍼포먼스 쪽이다. 개발 막바지에나 하지 않을까 생각했었지만 태생이 엔지니어라서인지 게임 느리게 돌아가는 꼴을 못보겠다. 릴리즈모드에서 오브젝트 500개 정도에서 시작해서 이제는 5천개까지 스폰에도 무리없이돌아간다. 나중을 위해 기록하자면

  1. ttf폰트를 bitmap폰트로 바꾼게 가장 결정적으로 퍼포먼스 향상에 도움이 됐다. 퍼포먼스가 중요한 게임에서 트루타입 폰트는 사용할 수 없다. 기억하자.
  2. 충돌 처리를 물리엔진으로 하다가 물리엔진을 걷어내고 수동으로 구현했다. 물리엔진은 cost가 너무 크다.
  3. 수동으로 돌린다해도 enemy+bullet수가 N일때 충돌체크만 N^2가 발생한다. 이쪽은 개선하기 위해서 맵을 구획으로 나누고 구획 안쪽만 체크하도록 했다.

아직 texture atlas도 적용하지 않았고 해서 개선의 여지가 더 있기는 한데 퍼포먼스 튜닝은 이제 그만 하고 다음으로 넘어가려고 한다. 현재 만들려고 하는 게임에서 object 5천개 정도만 되어도 충분 할 거라고 예상 하니까 더 시간을 투자할 필요는 없겠지?

코딩하다가 블로그에 글이나 써볼까 하고 오랜만에(아니 처음인가?) 써보는 개발일지.