데브허브 | DEVHUB | Improving the Performance of my Game by 4xImproving the Performance of my Game by 4x
- 맵 확장 후 120 FPS에서 47 FPS로 급락한 게임 성능 문제를 브라우저 성능 탭과 Flame Graph를 활용하여 진단했습니다. 📉
- 초기 병목은 전체 맵을 순회하는 O(N^2) 루프를 포함한
render darkness 함수로 식별되었습니다. 💡
render darkness 함수를 플레이어에게 보이는 타일만 렌더링하도록 최적화하여 FPS를 120으로 회복시키는 큰 성능 개선을 이루었습니다. 🚀
- 다음 병목은 모든 광원을 대상으로 BFS를 실행하는
calculate light propagation 함수였으며, 플레이어 근처의 광원만 필터링하여 처리하도록 개선했습니다. 🔦
- 추가적으로 광원 캐싱(light map cache)을 구현하고, 광원 재계산을 매 게임 틱마다 하지 않고 200-300ms 간격으로 수행하여 최적화를 심화했습니다. 💾
- 미니맵 렌더링 등 다른 비효율적인 2D 루프 코드도 개선하여 전반적인 성능을 끌어올렸습니다. 🗺️
- 최종적으로 게임 성능을 4배 이상 향상시켰으며, 저사양 환경(4배 또는 6배 느린 CPU)에서도 게임이 원활하게 플레이 가능하도록 만들었습니다. 🏆
- 이 과정을 통해 성능 프로파일링의 중요성과 게임 루프에서 CPU 시간을 절약하는 것이 멀티플레이어 게임의 확장성과 안정성에 얼마나 중요한지 강조했습니다. ⚙️