개발/Mighty Online

Mighty Online: Tranquil Tempest 개발기 #1

Syphon 2019. 11. 15. 16:24

요즘 우리 과의 웹/앱개발 동아리인 WaffleStudio 친구 셋과 함께 진행 중인 프로젝트는 카드 게임 '마이티'를 멀티플레이어로 할 수 있는 플랫폼, Mighty Online의 개발이다. 마이티라는 게임은 일반인들에게는 잘 알려져 있지 않지만, 일부 고등학교 학생들과 서울대를 포함한 몇몇 대학의 특정 과에서는 즐겨 플레이하는 사람들이 매우 많은, 소수에게 꾸준한 사랑을 받는 게임이다.

 

사실 이번 프로젝트는 '연습용'으로 내가 제안한 프로젝트이다. 팀의 멤버 네명은 각각 다른 수준의 개발 경험이 있지만, 모두 다 웹과 앱 개발 경험이 적다. WaffleStudio에 들어온 만큼, 무엇인가를 만들면서 웹/앱을 배우고 싶었고, 고민 끝에 해보기로 결정된 프로젝트가 Mighty Online인 것이다.

 

연습용 프로젝트라 다들 뭘 해야할지를 잘 모른다. 진행이 없다.

 

서비스를 만들기 위해서 우선은 백엔드 서버를 구축하고, 웹 프론트엔드를 시험 삼아 만들기로 했다. 테스트가 끝나면 앱 개발을 시작할 계획이다.

 

팀원 네명의 역할 분담은 다음과 같다:

  • dooly9931: 프론트엔드
  • MathAmp: 게임 방 관리 서버
  • cr0sh: 단일 게임 관리 코드
  • SyphonArch: 게임 로직 및 게임 AI

 

로직은 짰다.

그래서 나는 지금 마이티 AI를 만들어야 한다.

 

구현할 마이티 인공지능의 이름은 고2때 정보올림피아드 공모전에 출품한 나의 오셀로/오목 AI Silent Storm에 대한 homage(?)로 동일한 뜻의 Tranquil Tempest라고 지을 예정이다. 유저에게는 고요한 화면만이 보이지만, 그 수면 아래에서 일어나는 연산의 폭풍을 비유한 표현이다.

 

마이티 인공지능에 대한 자료는 인터넷에서 찾기 힘들다.

Imperfect information game은 AI 개발 경험이 없기 때문에 AI 마스터 GGOSinon에게 조언을 구해보았다. MCTS 얘기를 했더니 차라리 ISMCTS를 쓰라고 하더라.

 

그래서 지금 ISMCTS 논문(Peter I. Cowling, Edward J. Powley, and Daniel Whitehouse. Information set Monte Carlo tree search. IEEE Transactions on Computational Intelligence and AI in Games, 4(2):120– 143, 2012.)을 읽고 있다.

 

ISMCTS를 이용하면 주어진 패를 갖고 게임을 진행하는 알고리즘을 완성할 수 있을 것으로 기대한다. 공약 AI는 이 ISMCTS 기반의 인공지능을 여러번 돌려 획득 점수카드의 기댓값을 실험적으로 구한 후, 그 데이터 기반으로 구현할 계획이다.

 

앞으로 개발에 진전이 있는 대로 블로그에 정리해서 올릴 예정이다. 개발이 완료되면, 논문 형식으로 정리해 보는것도 생각 중에 있다.

 

그럼 오늘은 다시 논문을 읽으러 가겠다.

'개발 > Mighty Online' 카테고리의 다른 글

Game Logic의 OOP Refactor  (0) 2020.02.09