멀티플레이어 게임을위한 단독으로 실행가능한( 서버로직+클라이언트 로직) 어플리케이션 구조를 먼저 살펴보자

베이스는 Spring Boot Application을 그대로 이용했으며 , spring boot start(https://start.spring.io/) 를 이용하였다.



  • actor : 게임 로직을 액터패턴으로 구성하였다.
  • thread : 게임 로직을 스레드를 사용하여 구성하였다. actor와 thread 둘중하나를 선택할수 있다.
  • config : 웹소켓/AKKA/어플리케이션 구성을 위한 설정에 관련된 파일이 있다.
  • controler : 웹접근 엔드포인트가 정의되어 있으며, 클라이언트는 실제 이 경로를 통해 메시지 전송이 가능하다.
  • gameobj : 게임에 이용되는 오브젝트를 정의한다.
  • message : 서버 to 서버 , 서버 to client 를 비롯하여 통신에 사용되는 메시지들을 정의한다.
  • resources-static : 스탠드 얼론으로 작동시키기 위해 클라이언트의 웹리소스(html/js)를 이곳에서 포함하였다. -최근 모던웹은 분리하는 추세이나 ,프로토타잎에서 분리하는것은 바람직하지 않다.
  • test : JUNIT을 활용한 각종 유닛 테스트들을 정의한다. / 비동기 메시지 게임로직을 유닛테스트로 할수 있는 방법 연구도 이 프로젝트의 일부입니다. 


참고자료 : 몇가지 게임서버를 작성하는 패턴을 살펴보는것은 도움이 된다. 이 프로젝트에서는 단순하게 액터만 이용을 하고

여기서 활용을 못했지만, Akka Steam/Akka FSM 등 게임의상태와 메시지를 더 우아하게 처리하는 방법이 아래에 소개되어 있으며 

언젠가 적용을 시킬것이다.


  • No labels