본문 바로가기
프로그래밍/Game Dev

[Node.js] 간단한 멀티 슈팅게임 소스 분석

by YuminK 2023. 9. 26.

크리스코스 유튜브의 멀티플레이어 게임 소스를 분석했다.

https://github.com/chriscourses/multiplayer-game

 

 

게임 상의 로직은 각도로 총알 쏘는 슈팅게임인데, Node.js 기반에서 동작하는 멀티플레이 게임이다.

서버단에서 총알 리스트와 플레이어 리스트를 가지고 있고 일정 tick마다 update를 클라에게 내려준다.

클라는 해당 데이터를 받아 플레이어와 총알을 그린다.

 

서버쪽 데이터를 보고 없는 데이터는 생성, 있었으면 업데이트, 클라에서 있던 것이 없어졌으면 삭제

총알은 이렇게 처리하고 플레이어는 점수판에 대한 갱신도 추가적으로 해주고 있다.

 

또한 서버는 플레이어와 총알의 충돌 처리도 동시에 진행하는데 충돌이 일어난 경우,

서버의 플레이어 리스트에서 제거하고 총알도 제거한다. 

 

클라 쪽에서 입력을 넣으면 그에 따른 이벤트 처리를 진행하여 플레이어 정보를 변경해준다.

클라에서 렌더링을 하는데 requestAnimationFrame을 계속 호출하는 형태로 되어 있다. 

 

클라가 처음 입장할 때, 자신의 canvas 정보와 DevicePixelRatio 정보를 넘겨준다.

연결이 끊기면, 플레이어 정보를 수정하여 이벤트를 준다.

 

Update, Collision 같은 주요 로직을 서버에서 처리하고 클라는 정보를 받아다가 Render하도록 한다. 


내가 주로 클라이언트 개발을 위주로 해서 그런지, 어떠한 로직을 서버에서 처리하곤 하는지에 대한 감이 부족한 것 같다. 자바스크립트 환경이 낯설기도 하고 ㅎㅎ.

 

간단하지만 소스 자체는 충분히 양질이라고 생각한다.

2번 따라쳐보고, 로그 찍으면서 분석해봤다.  

'프로그래밍 > Game Dev' 카테고리의 다른 글

[Phaser] Pixel bleeding 이슈  (0) 2023.10.02
[Phaser] Animation, TileMap  (0) 2023.09.28
[C#] Thread Local Storage  (0) 2023.08.28
[C#] AutoResetEvent  (0) 2023.08.26
[C#] SpinLock  (0) 2023.08.26

댓글