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

https://www.slideshare.net/iFunFactory/cto-125771356

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

요약하자면,

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

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

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

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

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

M.2 인터페이스 쓰는 SSD 설치하기

메인보드가 M.2 지원하는지만 보고 샀다가 설치하느라 땀 좀 뺌. 그거에 대한 후기.

  • 메인보드로 Gigabyte H170 Gaming 3 (DDR3버전)을 쓴다. 이전에 펌업하다가 보드 날려먹어서(…) 급하게 업그레이드한다고 DDR4로 못 넘어갔더니 오늘의 삽질에 지대한 공헌을.
  • 새 디스크 — 더 이상 디스크 가 들어있진 않은데 디스크라고 불러도 괜찮은가? — 로 샘숭 EVO 960 (M.2 인터페이스) 구입.
  • 현재 디스크로 SSD x 2 (샘숭 830 PRO, 840 PRO 하나씩) + HDD 하나 연결. (모두 SATA3)

이 상태에서 새로 산 M.2 인터페이스의 SSD를 연결하고 부팅했더니 BIOS에서 기존 디스크 3개가 모두 사라졌다?!
급하게 구글링해보니 나만 같은 현상을 목격한게 아님.

매뉴얼을 다운로드 받아서 보니, 대략,

  • PCIe lane 을 소진해서 특정 SATA포트가 disable 된다.
  • disable 되는 포트는 M.2 인터페이스 번호와 AHCI vs. RAID 구성에 따라다름.

정도의 상황. 좀 더 확인해보니,

  • M.2 + PCIe 면 SATA 0, 1, 2, 3이 비활성화.
  • 현재 디스크 3개가 0, 1, 3을 쓰고 있던 상황
  • 근데 DDR3 말고 DDR4 지원하는 버전의 보드는 M.2 인터페이스가 2개. 이 중 한쪽을 쓰면 SATA포트를 거의다 쓸 수 있다 억울하다 ㅠㅠ

이에 따라,

  • SSD 하나를 포기하고 — 안 그래도 그냥 스팀 파티션 — 제거.
  • SATA 4, 5 번에 SSD, HDD를 하나씩 연결.
  • BIOS 에서 부팅 순서 조정

…하고나니 잘 돈다. 좀 더 잘 알아보고 살걸. 스팀용 디스크만 확보하려던 거였는데 SSD만 하나 놀리게 된듯 Orz.