게임 서버
는 만이 아닙니다. 플레이어가 누구이고 누구와 함께 노는지가 전부 여기 있습니다.
게임 서버는 규칙을 돌리는 속도보다 계정·친구·채팅·리더보드 같은 커뮤니티 기능으로 골라요. 필요한 기능을 적고 Nakama 와 대안들을 비교해 보세요.
게임 로직이 아니라 커뮤니티 기능으로 고르세요
게임 서버는 아주 다른 두 가지 일을 합니다. 하나는 게임 자체 — 말을 옮기고, 명중을 판정하고, 세계를 일관되게 유지하는 것. 다른 하나는 게임을 둘러싼 모든 것이며, 이 두 번째 일이 초보자가 예상하는 것보다 훨씬 큽니다. 그리고 플레이어가 내일 다시 돌아올지를 결정하는 것도 이쪽입니다.
를 비교하기 전에, 아래 중 몇 개를 직접 만들고 을 챙기고 운영까지 해야 하는지 세어 보세요.
- 계정과 로그인 — 기기·이메일·Apple·Google·, 그리고 그 모두를 한 플레이어로 묶어 기기가 바뀌어도 진도가 이어지게 하는 것.
- 채팅과 게시판 — 1:1·그룹·방 채팅, 재접속해도 남아 있는 대화 이력, 그리고 신고와 차단.
- 길드와 친구 — 가입 신청, 역할과 , 구성원 목록, (지금 누가 온라인인가).
- 리더보드와 토너먼트 — 일간·주간 초기화, 동점 처리 규칙, 그리고 부정 사용자를 상위권에서 걸러내는 것.
- 푸시 알림과 결제 — 에너지가 찼다고 알려주는 것, 그리고 무언가를 주기 전에 이 진짜인지 검증하는 것.
Docker — 서버는 결국 이렇게 돕니다
어떤 서버를 고르든 결국 어딘가에서 돌아야 하고, 오늘날 그 어딘가는 거의 항상 입니다. 는 서버와 그것이 돌아가는 데 필요한 모든 것 — , , 설정 — 을 한 덩어리로 묶습니다. 그 결과로 나온 이미지 하나가 내 노트북에서든 다른 나라에 빌린 컴퓨터에서든 똑같이 동작합니다.
게임 서버에서는 이것이 더 중요합니다. 게임 는 하나가 아니기 때문입니다. 서버에 가 붙고, 보통 까지 붙습니다. 이것들이 서로를 찾아 올바른 순서로 켜져야 합니다. Docker 를 쓰면 한 페이지짜리 설치 안내가 파일 하나와 명령 하나로 줄어듭니다. 뒤 탭에서 다룰 게임 백엔드 서버 도 공식 빠른 시작을 로 안내합니다.
알아야 할 네 단어
Compose — 전체 스택을 파일 하나로
게임 백엔드는 함께 떠야 하는 여러 컨테이너입니다. Docker Compose 는 그 전부 — 서버·데이터베이스·캐시 — 를 볼륨·네트워크·기동 순서와 함께 파일 하나에 적습니다. 그러면 한 줄로 전체가 살아나고, 실제 서버에 복사하는 것도 같은 파일입니다.
오늘 밤 당장 Nakama(뒤에서 볼 게임 백엔드 서버)를 시험해 볼 수 있는 이유가 이것입니다. 공식 빠른 시작이 서비스 두 개짜리 compose 파일이고, 명령 하나면 데이터베이스가 붙은 게임 백엔드가 에서 돕니다. 시스템에 설치되는 것도 없고, 나중에 지울 것도 없습니다.
초보자가 걸려 넘어지는 세 가지
- 볼륨을 지우면 데이터베이스가 사라집니다. 볼륨까지 정리하는 옵션이 붙은 명령은 컨테이너와 함께 플레이어 데이터도 기꺼이 지웁니다. 정리 명령을 돌리기 전에 그것이 어떤 볼륨을 건드리는지 정확히 아세요 — 그리고 알기 전에 먼저 하세요.
- 호스트 포트 하나에 프로세스 하나입니다. 이미 무언가가 그 포트를 쥐고 있으면 두 번째 컨테이너는 그냥 기동에 실패합니다. 사이트를 여럿 돌리는 컴퓨터에서 흔한 원인이며, 해법은 포트를 열지 말고 앞단의 하나가 으로 갈라 보내게 하는 것입니다.
- 안 뜨면 로그를 읽으세요. 컨테이너 실패의 대부분은 자기 이유를 적어 둡니다. 그리고 초보자 대부분은 보는 대신 짐작합니다. 로그 읽기를 마지막이 아니라 첫 번째로 하세요.
SONUB 은 Compose 파일 하나에 적힌 여러 컨테이너로 돕니다 — 과 뒤에서 일하는 일꾼(큐·), PostgreSQL, , 실시간을 맡는 , 백업. 그 앞의 공용 리버스 프록시가 연결을 받아 풀고 안으로 넘깁니다. 변경을 배포하는 일은 를 올리고 서비스를 다시 하는 것입니다. 게임 서버를 위해 Docker 를 배우면, 앞으로 만들 다른 것을 배포하는 법도 함께 배운 셈입니다.
SpacetimeDB
는 보통의 게임 서버와 다른 길을 갑니다. 가 곧 서버입니다. 데이터베이스와 대화하는 게임 서버를 따로 짜지 않고, · 같은 언어로 쓴 을 올리면 그 안의 함수()가 데이터베이스 안에서 돌며 을 바꿉니다. 는 리듀서를 불러 상태를 바꾸고, 필요한 테이블을 해 바뀐 줄을 바로 받습니다. 시스템이 하나뿐이라, 따로 할 서버 프로세스도 두 시스템을 맞추는 도 없습니다.
그래서 지속되는 세계를 만들 때 진짜로 우아하고, 구조가 단순해서 한 사람이 전체를 머리에 담을 수 있습니다. 대가는 아직 젊고 가 작다는 것, 그리고 사고방식의 전환이 실제로 품이 든다는 것입니다 — 단순하지만, 이미 알고 있는 그것이 아닙니다.
Nakama 란 무엇인가
는 Heroic Labs 가 만든 게임 서버입니다. 로 작성되었고, 단일 하나와 호환 로 됩니다. 도 아니고 도 아닙니다 — 그 둘 사이의 계층입니다. 플레이어가 누구이고, 무엇을 가지고 있으며, 누구와 함께 놀고 있는지를 아는 쪽입니다.
설치하면 곧바로 다음을 제공합니다.
- 신원과 — 기기 ·이메일·Apple·Google·Facebook··커스텀. 하나의 계정에 여러 인증 수단을 연결해 플랫폼을 넘나듭니다.
- — 이 붙는 문서, 마다의 소유권과 접근 규칙. 플레이어 저장 가 여기 들어갑니다.
- 소셜 — 친구, 그룹과 , , 그리고 채팅(1:1·그룹·방)과 대화 이력.
- 경쟁 — 초기화 주기를 설정할 수 있는 와 토너먼트, 그리고 속성으로 조건을 거는 .
- 경제 — 를 지원하는 지갑, 그리고 Apple·Google·Steam .
- 실시간 — 과 , 그리고 을 맡는 매치 — 서버 쪽 를 직접 작성합니다.
- 런타임 — Go·· 로 서버를 확장합니다. 자신만의 를 등록하고, 내장 동작의 앞뒤에 를 겁니다.
이 페이지는 Nakama 를 여러 선택지 가운데 하나로 가르칩니다. 이 사이트 자체는 · PostgreSQL · · 로 돌아가며 Nakama 를 쓰지 않습니다. 우리가 쓰는 기술이 아니라 하나의 도구를 설명하는 것입니다.
실제로 좋은 점
잘 못하는 것
결정하기 전에 알아 둘 것들입니다. 감춰진 비밀이 아니라, 위에서 본 설계 선택의 결과입니다.
대안들
와 똑같이 좋은 하나짜리 답은 없습니다. 무엇을 최적화하려는가에 따라 갈립니다. 내 어려운 문제가 무엇인지 먼저 정하고 고르세요. 아래 ''은 게임 판 밖의 기능(계정·친구·채팅·저장·), ''는 출시 뒤 이벤트·상점·업데이트를 운영하는 일입니다.
결이 가장 가까운 것 — 오픈소스, 자체 호스팅 가능
| 언어 | 강점 | Nakama 대비 약점 | |
|---|---|---|---|
| / | 동급 최고의 자동 상태 , 내장 , ···· . | 실시간 방만 다룹니다 — 신원·저장·소셜·경제·리더보드가 없습니다. 메타 계층은 직접 만들어야 합니다. | |
| / | 근본적으로 다른 모델 — 가 곧 서버입니다. 는 를 하고, 대신 를 씁니다. 지속되는 세계를 만들 때 진짜로 우아합니다. | 아직 젊고 가 작으며, 사고방식의 전환에 실제로 품이 듭니다. | |
| Rivet | Rust 코어, JS/TS 스크립팅 | 이고 가능. 게임 서버·매치메이킹·에 스크립팅까지 — Nakama 를 통째로 대체하는 데 가장 가깝습니다. | 커뮤니티가 작고, 회사가 범용 쪽으로 방향을 틀어 게임 집중도가 옅어졌습니다. |
| + | Google 이 뒷받침하며, 무리를 하는 업계 표준입니다. | 다른 문제를 풉니다 — 메타 계층이 아예 없습니다. Nakama 를 대체하는 것이 아니라 함께 씁니다. |
관리형·상업용
- — Microsoft 의 제품이며 이 분야에서 기능 폭이 가장 넓습니다 — LiveOps··세그먼트·분석·경제. 매치메이킹과 전용 서버를 모두 갖췄지만 에서만 돕니다. 사용량 기반 과금이고, 는 내 것이 아닙니다.
- AccelByte — 엔터프라이즈급이며, 전용 서버 오케스트레이션을 직접 운영하는 유일한 경쟁자입니다. 투자를 받은 스튜디오를 겨냥한 가격입니다.
- Pragma — 서비스 게임을 위한 「백엔드 게임 엔진」을 표방합니다. 깊은 커스터마이즈, 파티와 매치메이킹, 서버 할당, 인벤토리, 성장, 와 상점. 상업 진영에서 Nakama 와 철학이 가장 비슷한 쪽입니다.
- (Fusion / Quantum) — 백엔드가 아니라 네트워킹이 먼저입니다. Quantum 의 은 경쟁 액션 게임에서 견줄 것이 없지만, 서비스가 딸린 제품이지 그 반대가 아닙니다.
- LootLocker · brainCloud · Beamable — 이고 시작이 빠르며 얇습니다. LootLocker 는 매치메이킹도 서버도 없고, Beamable 은 만 하고 실시간은 외부로 넘깁니다. 게임이 백엔드를 거의 필요로 하지 않을 때 좋습니다.
이 분야는 다른 분야보다 빠르게 통합됩니다 — 이 영역의 호스팅 서비스들이 큰 예고 없이 문을 닫거나 사업에서 빠져나간 사례가 있습니다. 몇 년을 굴려야 하는 라이브 서비스를 계획한다면, 자체 호스팅 가능한 쪽을 택할 이유가 됩니다.
어떻게 고를 것인가
- 어려운 것은 실시간 동기화이고 메타 계층은 단순하다 →
- 지속되는 공유 세계이고, 구조를 새로 생각할 각오가 있다 →
- 신원·소셜·경제·리더보드가 필요하고 자체 호스팅을 원한다 →
- 매치마다 전용 서버 무리가 필요하다 → + , 또는 — 그 옆에 메타 를 따로 둔다
- LiveOps 도구를 만들기보다 사서 쓰고 싶다 → PlayFab 또는 Pragma
- 이미 자체 실시간 서버가 있다 → 메타 서비스만 Nakama 로 쓰는 것도 흔하고 합리적인 방식이다
을 선호하고 특정 것을 싫어한다면, 정직한 후보는 Nakama · Colyseus · 직접 만들기 셋입니다. Nakama 를 택하는 거래는 이렇습니다 — 크고 고집 있는 하나를 받아들이는 대신, 친구·채팅·지갑·를 만드는 여섯 달을 건너뜁니다. 물어야 할 질문은 이것입니다: 내 게임의 메타 계층이 Nakama 의 전제와 충분히 닮아서, 그것과 싸우지 않고 확장하게 될 것인가.