소규모 팀으로 멀티플레이어 게임 개발하기

이번 달 12일에 홍릉에 있는 콘텐츠진흥원 인재캠퍼스에서 발표한 내용.

요약하자면,

  • 팀이 작다면 모두 만드는 건 불가능 => 최대한 외부에서 가져다 쓰자(아웃소싱)
  • 멀티플레이어 게임을 개발하려면 서버 쪽에 클라이언트 로직을 복제 하고 이를 비교하는 코드가 필요한데, 클라이언트 엔진의 데디케이티드 서버 기능을 쓰면 이 부분은 필요하지 않음
  • 게임 서버 쪽에선 상점, 커뮤니티, 메일함 같은 비지니스 로직과 게임 시작을 위한 매치메이킹에 집중 / 게임 컨텐츠는 데디케이티드 서버 기반 구조에 집중
  • 이런 방법은 단순히 요즘 시작된게 아니라 과거 (25년 전의 DOOM) 부터 시작 된 것. 그러니 외부 툴과 서비스를 잘 활용해서 만들어보자.
  • 다만 데디케이티드 서버의 고질적인 자원 문제 (CPU,메모리) 때문에 별도의 스케일링 방법이 필요하다고 얘기하고, 매치메이킹도 규모가 커지면 생길 수 있는 문제를 간략히 설명.

… 라는 내용을 발표했다. (30분짜리)

사내에서 개발한 프레임워크를 써서 아래와 같은 구성으로 데모를 했음. (게임은 만만한 Pong으로)

  • Unity 3D 기반 데디케이티드 서버
  • 게임 서버: 인증/매치메이킹/ELO 레이팅 변경 등등 - 이건 내가 재직 중인 회사에서 만든 솔루션 위에 작성
  • AWS 기반 데디케이티드 서버 스케일링 - 이것도 역시 같은 솔루션 위에서 처리.

발표 자료 준비할 때 독감으로 앓아누워서 촉박하게 준비했는데, 이미 있던 데모를 수정해서 발표 자료를 만들 수 있어서 어떻게어떻게 시간 내에 해결. 데디케이티드 서버 관련 역사랑 용어 부분에서도 이승재 군이 적절하게 피드백을 줘서 — 예를 들어 나는 DOOM도 리플레이 기반으로 동기화한 줄 알았으나 락 스텝이었음 — 자료 준비도 꽤 스무스하게 끝났음. 다음 발표 때도 이 정도로 금방 준비할 수 있었으면 좋겠네.