구성 #

YAML 구성 파일에는 Nakama 서버가 실행되는 방식의 다양한 측면이 지정됩니다. 구성 파일을 지정하지 않고 Nakama를 실행할 수 있으며 대신 기본 설정이 사용됩니다.

구성 파일 지정 #

--config 플래그를 사용하여 런타임 시 구성 파일을 지정할 수 있습니다.

1
nakama --config my-special-config.yml

Docker-Compose를 통해 Nakama를 실행하는 경우 Docker에서 사용할 수 있도록 시스템의 폴더를 바인딩해야 합니다. Docker에서 실행되는 Nakama 구성 문서를 참조하세요.

서버 포트 #

Nakama는 매우 유연한 시스템입니다. gRPC, HTTP, Websockets 및 rUDP를 통해 서버와 데이터를 교환할 수 있습니다. 이러한 유연성으로 인해 Nakama는 다음에 바인딩할 때 4개의 포트를 사용할 수 있어야 합니다:

  • 포트 7350의 HTTP API 서버. 포트는 구성에서 변경할 수 있습니다.
  • 포트 7351에서 임베디드 개발자 콘솔에 전원을 공급하는 HTTP API 서버. 포트는 구성에서 변경할 수 있습니다.
  • 포트 7349의 gRPC API 서버. 포트는 API 서버 포트를 기반으로 선택됩니다.
  • 포트 7348의 내장 콘솔용 gRPC API 서버. 포트는 API 서버 포트를 기반으로 선택됩니다.

일반 속성 #

대부분의 환경에서 몇 가지 구성 속성을 변경해야 합니다. 예를 들어 실제 프로덕션 환경에 Nakama를 배포하기 전에 socket.server_key, session.encryption_key 및 **runtime.http_key**의 값을 변경해야 합니다. 전체 구성 목록은 페이지 하단에 있습니다.

ParameterDescription
nameNakama 노드 이름(고유해야 함) - 기본값이 nakama로 설정됩니다.
data_dirNakama가 로그를 포함한 데이터를 저장할 쓰기 가능한 폴더의 절대 경로. 기본값은 Nakama가 시작된 작업 디렉터리입니다.
runtime.path스캔하고 로드할 모듈의 경로. 기본값은 data_dir/modules입니다.
database.address연결할 대상 데이터베이스 노드의 목록. username:password@address:port/dbname(postgres:// 프로토콜은 경로에 자동으로 추가됨) 형식을 따라야 합니다. 기본값은 root@localhost:26257입니다.
socket.server_key서버에 대한 연결 설정에 사용할 서버 키. 기본값은 defaultkey입니다.
runtime.http_key키는 서버의 런타임 HTTP 호출을 보호하는 데 사용됩니다. 기본값은 defaulthttpkey입니다.
session.encryption_key클라이언트 토큰 생성에 사용되는 암호화 키. 기본값은 defaultencryptionkey입니다.
session.token_expiry_sec세션 토큰 만료 기간(초). 기본값은 60입니다.
session.refresh_encryption_key세션 새로 고침 토큰 생성에 사용되는 암호화 키. 기본값은 defaultrefreshencryptionkey입니다.
session.refresh_token_expiry_sec새로 고침 토큰 만료 기간(초). 기본값은 3600입니다.

서버 구성 #

Nakama는 다양한 사용 사례 및 배포 환경에 최대한 유연하게 사용할 수 있도록 구성 옵션을 다양하게 제공합니다.

Nakama는 모든 구성 옵션에 대해 적정한 기본값을 제공하므로 옵션의 일부만 재정의하면 됩니다. 또한 고유한 구성 파일을 설정하고 명령줄 플래그를 통해 구성 파일의 값을 재정의할 수 있습니다. 예를 들어 런타임 경로를 재정의하려면 다음을 수행합니다:

1
nakama --runtime.path /tmp/my-modules

필드가 구체적이지 않으면 기본값이 사용됩니다. 플래그를 재정의하는 방법에 대한 자세한 내용은 서버 명령줄 페이지를 참조하세요.

ParameterFlagDescription
namenameNakama 노드 이름(고유해야 함) - 기본값이 nakama로 설정됩니다. 로그 파일에서도 이 이름이 사용됩니다.
data_dirdata_dirNakama가 로그를 포함한 데이터를 저장할 쓰기 가능한 폴더의 절대 경로. 기본값은 Nakama가 시작된 작업 디렉터리입니다.
shutdown_grace_secshutdown_grace_sec시스템 종료 전에 서버가 작업이 완료되기를 기다리는 최대 시간(초). 이 값이 0이면 서버가 종료 신호를 받는 즉시 종료됩니다. 기본값은 ‘0’입니다.

클러스터 #

이 섹션에서는 클러스터를 형성하기 위해 노드를 서로 연결하는 방법을 설명합니다.

Nakama Enterprise 전용

다음 구성 옵션은 Nakama 서버의 Nakama Enterprise 버전에서만 사용할 수 있습니다.

Nakama는 프로덕션 환경에서 고가용성 클러스터로 실행되도록 설계되었습니다. Nakama Enterprise를 실행 중인 경우 개발 머신에서 로컬로 클러스터를 시작할 수 있습니다. 프로덕션에서는 Nakama Enterprise 또는 Heroic Cloud 서비스를 사용할 수 있습니다.

ParameterFlagDescription
gossip_bindaddrcluster.gossip_bindaddr검색을 위해 Nakama를 바인딩할 인터페이스 주소. 기본적으로 모든 인터페이스에서 수신 대기합니다.
gossip_bindportcluster.gossip_bindport검색을 위해 Nakama를 바인딩할 포트 번호. 기본값은 7352입니다.
joincluster.join연결할 다른 Nakama 노드의 호스트 이름 및 포트의 목록.
max_message_size_bytescluster.max_message_size_bytes메시지당 Nakama 노드 간에 전송할 수 있는 최대 데이터양(바이트). 기본값은 4194304입니다.
rpc_portcluster.rpc_portNakama 노드 간에 데이터를 전송하는데 사용할 포트 번호. 기본값은 7353입니다.
local_prioritycluster.local_priority’true’로 설정할 때 가능하면 로컬 리소스를 기본 설정으로 둡니다.
work_factor_interval_mscluster.work_factor_interval_ms작업 요소 동기화 작업의 업데이트 빈도.

콘솔 #

이 섹션에서는 임베디드 개발자 콘솔에 관련된 구성을 정의했습니다.

ParameterFlagDescription
addressconsole.address콘솔 트래픽을 수신 대기할 인터페이스의 IP 주소. 사용 가능한 모든 주소/인터페이스에서 기본적으로 수신 대기합니다.
max_message_size_bytesconsole.max_message_size_bytes메시지당 클라이언트 소켓에서 읽을 수 있도록 허용되는 최대 데이터양(바이트).
idle_timeout_msconsole.idle_timeout_ms연결 유지가 활성화될 때 다음 요청을 기다리는 최대 시간(밀리초).
passwordconsole.password내장 콘솔의 암호. 기본값은 “암호"입니다.
portconsole.port내장 콘솔에 대한 연결을 수락해 모든 인터페이스에서 수신 대기하기 위한 포트. 기본값은 7351입니다.
read_timeout_msconsole.read_timeout_ms전체 요청을 읽기 위한 최대 지속 시간(밀리초).
signing_keyconsole.signing_key콘솔 세션 토큰 서명에 사용되는 키.
token_expiry_secconsole.token_expiry_sec토큰 만료 기간(초). 기본값은 86400입니다.
usernameconsole.username내장 콘솔의 사용자 이름. 기본값은 “관리자"입니다.
write_timeout_msconsole.write_timeout_ms응답 쓰기 시간 제한에 도달하기까지의 최대 지속 시간(밀리초).

데이터베이스 #

Nakama를 사용하려면 CockroachDB 서버 인스턴스가 필요합니다. Nakama는 CockroachDB 데이터베이스 내에서 nakama(이)라는 자체 데이터베이스를 생성하고 관리합니다.

ParameterFlagDescription
addressdatabase.address연결할 대상 데이터베이스 노드의 목록. username:password@address:port/dbname(postgres:// 프로토콜은 경로에 자동으로 추가됨) 형식을 따라야 합니다. 기본값은 root@localhost:26257입니다.
conn_max_lifetime_msdatabase.conn_max_lifetime_ms연결이 종료되고 새 연결이 생성되기까지 데이터베이스 연결을 재사용하는 시간(밀리초). 기본값은 0(무기한)입니다.
max_idle_connsdatabase.max_idle_conns데이터베이스에 대해 허용되어 열려 있지만 사용되지 않는 연결의 최대 개수. 기본값은 100입니다.
max_open_connsdatabase.max_open_conns데이터베이스에 대해 허용되어 열려 있는 연결의 최대 개수. 기본값은 0(무제한)입니다.
dns_scan_interval_secdatabase.dns_scan_interval_sec데이터베이스 호스트 이름에 대한 DNS 확인 변경 사항을 찾는 스캔 사이의 시간(초). 기본값은 60입니다.

다음과 같은 명령을 사용하여 여러 데이터베이스 주소를 Nakama에 전달할 수 있습니다:

1
nakama --database.address "root@db1:26257" --database.address "root@db2:26257"

IAP (인앱 구매) #

Nakama는 다양한 상점에 연결하여 인앱 구매를 검증할 수 있으며 유효한 구매 원장을 보관합니다. 따라서 유효한 영수증을 통해 일반적인 인앱 구매 재생 공격이 방지되고 필요에 따라 사용자 계정에 대한 구매를 복원할 수 있습니다.

Apple #

Apple 인앱 구매 구성

ParameterFlagDescription
shared_passwordapple.shared_password애플리케이션의 공유 암호.

Google #

Google 인앱 구매 구성

ParameterFlagDescription
client_emailgoogle.client_email서비스 계정 클라이언트 이메일 값.
private_keygoogle.private_key서비스 계정 개인 키 값.

Huawei #

ParameterFlagDescription
public_keyhuawei.public_keyHuawei IAP는 Base64로 인코딩된 공개 키를 저장합니다.
client_idhuawei.client_idHuawei OAuth 클라이언트 비밀.
client_secrethuawei.client_secretHuawei OAuth 앱 클라이언트 비밀.

순위표 #

순위표 및 토너먼트 시스템 관련 구성 옵션을 변경할 수 있습니다.

ParameterFlagDescription
blacklist_rank_cacheleaderboard.blacklist_rank_cache리더보드 이름이 일치하는 리더보드의 순위 캐시를 비활성화합니다. 순위 캐시를 완전히 비활성화하려면 *를 사용하고, 그렇지 않으면 비워 두어 순위 캐시를 활성화하십시오.
callback_queue_sizeleaderboard.callback_queue_size만료/재설정/종료 호출의 순서를 정하는 리더보드 및 토너먼트 콜백 큐의 크기. 기본값은 65536입니다.
callback_queue_workersleaderboard.callback_queue_workers리더보드 및 토너먼트 콜백의 동시 처리에 사용할 작업자 수. 기본값은 8입니다.

로거 #

Nakama는 다양한 시스템이 로그와 상호 작용할 수 있도록 JSON 형식의 로그를 생성합니다. 기본적으로 로그는 표준 출력(콘솔)에 표시됩니다.

ParameterFlagDescription
compresslogger.compress이에 따라 gzip 을 사용하여 순환된 로그 파일을 압축해야 하는지 여부가 결정됩니다.
filelogger.file파일에 출력을 기록합니다(설정된 경우 stdout도 포함). 디렉터리와 파일이 쓰기 가능한 상태인지 확인합니다.
formatlogger.format로깅 출력 형식을 설정합니다. ‘JSON’ 또는 ’ Stackdriver ‘일 수 있습니다. 기본값은 ‘JSON’입니다.
levellogger.level생성할 최소 로그 수준. 값은 ‘디버그’, ‘정보’, ‘경고’, ‘오류’입니다. 기본값은 ‘정보’입니다.
local_timelogger.local_time이에 따라 백업 파일의 타임스탬프 형식을 지정하는데 사용되는 시간이 컴퓨터의 현지 시간인지 여부가 결정됩니다. 기본값은 UTC 시간을 사용하는 것입니다.
max_agelogger.max_age파일 이름에 인코딩된 타임스탬프를 기반으로 이전 로그 파일을 보존할 최대 일수. 기본값은 보존 기간을 기준으로 이전 로그 파일을 제거하지 않는 것입니다.
max_backupslogger.max_backups보존할 이전 로그 파일의 최대 개수. (max_age로 인해 여전히 삭제될 수 있지만) 기본값은 이전 로그 파일을 전부 보존하는 것입니다.
max_sizelogger.max_size로그 파일이 순환되기 전 로그 파일의 최대 크기(MB). 기본값은 100MB로 설정됩니다. 기본값은 100입니다.
rotationlogger.rotation로그 파일을 순환합니다. 기본값은 false입니다.
stdoutlogger.stdout로그를 콘솔 표준 출력으로 리디렉션합니다. 로그 파일이 더 이상 사용되지 않습니다. 기본값은 ’true’입니다.

표준 시작 로그 메시지는 logger.stdout 필드 값에 관계없이 항상 콘솔에 표시됩니다.

대결 #

권한 부여 멀티플레이어 런타임 관련 구성 옵션을 변경할 수 있습니다.

ParameterFlagDescription
call_queue_sizematch.call_queue_size겹치지 않도록 보장하기 위해 매치 처리기 콜백에 대한 호출을 시퀀싱하는 신뢰할 수 있는 매치 버퍼의 크기. 기본값은 128입니다.
deferred_queue_sizematch.deferred_queue_size각 루프 실행이 끝날 때까지 지연된 메시지 브로드캐스트를 유지하는 신뢰할 수 있는 매치 버퍼의 크기. 기본값은 128입니다.
input_queue_sizematch.input_queue_size다음 틱에서 처리할 수 있을 때까지 클라이언트 메시지를 저장하는 신뢰할 수 있는 매치 버퍼의 크기. 기본값은 128입니다.
join_attempt_queue_sizematch.join_attempt_queue_size진행 중인 조인 시도 횟수를 제한하는 신뢰할 수 있는 매치 버퍼의 크기. 기본값은 128입니다.
join_marker_deadline_msmatch.join_marker_deadline_ms클라이언트의 신뢰할 수 있는 매치 조인이 매치 핸들러가 조인을 승인하기를 기다리는 최종 기한(밀리초). 기본값은 5000입니다.
label_update_interval_msmatch.label_update_interval_ms매치 레이블이 업데이트되는 시점 간의 시간(밀리초). 기본값은 1000입니다.
max_empty_secmatch.max_empty_sec신뢰할 수 있는 매치가 중지되기까지 비어 있도록 허용되는 최대 연속 시간(초). 0은 최대값이 없음을 나타냅니다. 기본값은 0입니다.

메트릭스 #

Nakama는 메트릭스 정보를 생성합니다. 이 정보는 Prometheus로 내보낼 수 있습니다.

중요한 서버 정보가 포함되어 있으므로 메트릭스 내보내기가 보호되는지 확인합니다.

런타임 #

런타임 엔진 관련 옵션입니다.

ParameterFlagDescription
call_stack_sizeruntime.call_stack_size(사용되지 않음) 각 런타임 인스턴스의 호출 스택 크기. 기본값은 128입니다.
envruntime.env런타임 스크립트에 환경 변수로 노출되는 키-값 속성의 목록.
event_queue_sizeruntime.event_queue_size이벤트 큐 버퍼의 크기. 기본값은 65536입니다.
event_queue_workersruntime.event_queue_workers이벤트의 동시 처리에 사용할 작업자 수. 기본값은 8입니다.
http_keyruntime.http_keyHTTP 런타임 호출 인증에 사용되는 키. 기본값은 defaultkey입니다.
js_entrypointruntime.js_entrypoint번들형 JavaScript 런타임 소스 코드의 위치를 지정합니다.
js_max_countruntime.js_max_count할당할 JavaScript 런타임 인스턴스의 최대 개수. 기본값은 32입니다.
js_min_countruntime.js_min_count할당할 JavaScript 런타임 인스턴스의 최소 개수. 기본값은 16입니다.
js_read_only_globalsruntime.js_read_only_globals활성화되면 모든 JavaScript 런타임 전역 테이블을 읽기 전용으로 표시하여 메모리 공간을 줄입니다. 기본값은 true입니다.
lua_call_stack_sizeruntime.lua_call_stack_size각 런타임 인스턴스의 호출 스택 크기. 기본값은 128입니다.
lua_max_countruntime.lua_max_count할당할 Lua 런타임 인스턴스의 최대 개수. 기본값은 48입니다.
lua_min_countruntime.lua_min_count할당할 Lua 런타임 인스턴스의 최소 개수. 기본값은 16입니다.
lua_read_only_globalsruntime.lua_read_only_globals활성화되면 모든 Lua 런타임 전역 테이블을 읽기 전용으로 표시하여 메모리 공간을 줄입니다. 기본값은 true입니다.
lua_api_stacktraceruntime.lua_api_stacktraceAPI 응답에 Lua 스택 추적을 추가합니다. 기본값은 true입니다.
lua_registry_sizeruntime.lua_registry_size각 Lua 런타임 인스턴스의 레지스트리 크기. 기본값은 512입니다.
max_countruntime.max_count(사용되지 않음) 할당할 런타임 인스턴스의 최대 개수. 기본값은 256입니다.
min_countruntime.min_count(사용되지 않음) 할당할 런타임 인스턴스의 최소 개수. 기본값은 16입니다.
pathruntime.path서버가 시작 시 스캔하고 로드할 모듈의 경로. 기본값은 data_dir /modules입니다.
read_only_globalsruntime.read_only_globals(사용되지 않음) 활성화되면 모든 런타임 전역 테이블을 읽기 전용으로 표시하여 메모리 공간을 줄입니다. 기본값은 true입니다.
registry_sizeruntime.registry_size(사용되지 않음) 각 런타임 인스턴스의 레지스트리 크기. 기본값은 512입니다.

런타임 환경은 키-값 쌍입니다. 다음과 같이 = 문자로 구분됩니다:

1
nakama --runtime.env "key=value" --runtime.env "key2=value2" --runtime.env "key3=valuecanhave=sign"

세션 #

토큰 생성에 사용된 암호화 키와 같이 각 사용자에 관련된 구성 옵션을 변경할 수 있습니다.

ParameterFlagDescription
encryption_keysession.encryption_key클라이언트 토큰 생성에 사용되는 암호화 키. 기본값은 defaultencryptionkey입니다.
token_expiry_secsession.token_expiry_sec토큰 만료 기간(초). 기본값은 60입니다.
refresh_encryption_keysession.refresh_encryption_key세션 새로 고침 토큰 생성에 사용되는 암호화 키. 기본값은 defaultrefreshencryptionkey입니다.
refresh_token_expiry_secsession.refresh_token_expiry_sec새로 고침 토큰 만료 기간(초). 기본값은 3600입니다.
single_socketsession.single_socket사용자당 하나의 소켓만 허용하고 이전 세션은 연결이 해제됩니다. 기본값은 ‘false’입니다.
single_matchsession.single_match사용자당 하나의 매치만 허용하고 오래된 매치는 휴가를 받습니다. 활성화하려면 single_socket이 필요합니다. 기본값은 ‘false’입니다.

소셜 #

Nakama에서는 다양한 소셜 네트워크에 연결하여 사용자 정보를 가져올 수 있습니다. 또한 알림을 전달하고 유지하기 위한 알림 센터 역할도 가능합니다.

Apple #

Apple iOS/iPadOS 앱에 관련된 구성입니다.

ParameterFlagDescription
bundle_idsocial.apple.bundle_idApple 로그인 번들 ID.

Steam #

Steam 네트워크 설정을 구성합니다. Facebook, Google 및 GameCenter의 경우 서버 설정이 필요하지 않습니다.

ParameterFlagDescription
app_idsocial.steam.app_idSteam 앱 ID.
publisher_keysocial.steam.publisher_keySteam 게시자 키.

Facebook 인스턴트 게임 #

Facebook 인스턴트 게임에 관련된 구성입니다.

ParameterFlagDescription
app_secretsocial.facebook_instant_game.app_secretFacebook 인스턴트 앱 보안
app_idsocial.facebook_limited_login.app_idFacebook 제한적 로그인 앱 ID.

소켓 #

서버와 클라이언트 간의 연결 소켓 및 전송 프로토콜에 관련된 옵션입니다.

제공된 기본값은 소켓 연결에서 “응답형” 느낌에 최적화되어 있으며 경험이 없는 사용자가 수정해서는 안 됩니다. 도움이 필요하면 Heroic Labs에 문의하십시오.
ParameterFlagDescription
addresssocket.address클라이언트 트래픽을 수신 대기할 인터페이스의 IP 주소. 사용 가능한 모든 주소/인터페이스에서 기본적으로 수신 대기합니다.
idle_timeout_mssocket.idle_timeout_ms연결 유지가 활성화될 때 다음 요청을 기다리는 최대 시간(밀리초). HTTP 연결에 사용됩니다. 기본값은 60000입니다. 더 큰 값은 프로덕션이 아닌 로컬 디버깅에만 권장됩니다.
max_message_size_bytessocket.max_message_size_bytes메시지당 클라이언트 소켓에서 읽을 수 있도록 허용되는 최대 데이터양(바이트). 실시간 연결에 사용됩니다. 기본값은 4096입니다.
max_request_size_bytessocket.max_request_size_bytes요청당 클라이언트에서 읽을 수 있도록 허용되는 최대 데이터양(바이트). gRPC 및 HTTP 연결에 사용됩니다. 기본값은 4096입니다.
outgoing_queue_sizesocket.outgoing_queue_size클라이언트로 전송되기를 기다리는 메시지의 최대 개수. 이 수를 초과하면 클라이언트가 너무 느린 것으로 간주되어 연결이 해제됩니다. 실시간 연결을 처리할 때 사용됩니다. 기본값은 16입니다.
ping_backoff_thresholdsocket.ping_backoff_threshold정기적으로 활성화되는 연결을 통해 불필요한 ping을 보내지 못하도록, 다음 ping 주기까지 ping 전송을 지연하는 단일 ping 주기동안 클라이언트에서 수신된 메시지의 최소 개수. 기본값은 20입니다.
ping_period_mssocket.ping_period_ms클라이언트 ping 메시지 간의 대기 시간(밀리초). 이 값은 pong_wait_ms보다 작아야 합니다. 실시간 연결에 사용됩니다. 기본값은 15000입니다.
pong_wait_mssocket.pong_wait_msping을 전송한 후 클라이언트의 pong 메시지를 기다리는 시간(밀리초). 실시간 연결에 사용됩니다. 기본값은 25000입니다.
portsocket.port클라이언트에서 연결을 수락해 모든 인터페이스에서 수신 대기하기 위한 포트. 기본값은 7350입니다.
protocolsocket.protocol트래픽을 수신 대기하는 네트워크 프로토콜. 가능한 값이 IPv4와 IPv6 모두인 경우 tcp, IPv4 전용인 경우 tcp4 또는 IPv6 전용인 경우 tcp6입니다. 기본값은 tcp입니다.
read_buffer_size_bytessocket.read_buffer_size_bytes미리 할당된 소켓 읽기 버퍼의 크기(바이트). 기본값은 4096입니다.
read_timeout_mssocket.read_timeout_ms전체 요청을 읽기 위한 최대 지속 시간(밀리초). HTTP 연결에 사용됩니다. 기본값은 10000입니다.
server_keysocket.server_key서버에 대한 연결을 설정하는데 사용할 서버 키. 기본값은 defaultkey입니다.
ssl_certificatesocket.ssl_certificate서버에서 SSL을 직접 사용하도록 하려는 경우 인증서 파일의 경로. ssl_private_key도 제공해야 합니다. 프로덕션 용도로는 권장되지 않습니다.
ssl_private_keysocket.ssl_private_key서버에서 SSL을 직접 사용하도록 하려는 경우 개인 키 파일의 경로. ssl_certificate도 제공해야 합니다. 프로덕션 용도로는 권장되지 않습니다.
write_buffer_size_bytessocket.write_buffer_size_bytes미리 할당된 소켓 쓰기 버퍼의 크기(바이트). 기본값은 4096입니다.
write_timeout_mssocket.write_timeout_ms응답 쓰기 시간 제한에 도달하기까지의 최대 지속 시간(밀리초). HTTP 연결에 사용됩니다. 기본값은 10000입니다.
write_wait_mssocket.write_wait_ms데이터를 쓸 때 클라이언트의 승인을 기다리는 시간(밀리초). 실시간 연결에 사용됩니다. 기본값은 5000입니다.

추적기 #

세션 추적에 관련된 구성 옵션을 변경할 수 있습니다.

ParameterFlagDescription
event_queue_sizetracker.event_queue_size추적기 현재 상태 이벤트 버퍼의 크기. 서버가 짧은 시간에 많은 수의 현재 상태 이벤트를 생성할 것으로 예상되는 경우 증가시킵니다. 기본값은 1024입니다.

다음 구성 옵션은 Nakama 서버의 Nakama Enterprise 버전에서만 사용할 수 있습니다.

Nakama는 프로덕션 환경에서 고가용성 클러스터로 실행되도록 설계되었습니다. Nakama Enterprise를 실행 중인 경우 개발 머신에서 로컬로 클러스터를 시작할 수 있습니다. 프로덕션에서는 Nakama Enterprise 또는 Heroic Cloud 서비스를 사용할 수 있습니다.

ParameterFlagDescription
broadcast_period_mstracker.broadcast_period_ms각 클러스터 노드에 대한 트래커 현재 상태 복제 브로드캐스트 사이의 시간(밀리초). 기본값은 1500입니다.
clock_sample_periodstracker.clock_sample_periods브로드캐스트가 예상대로 수신되지 않을 경우 클러스터 노드에서 현재 상태 전송을 요청하기 전에 이루어지는 브로드캐스트 횟수. 기본값은 2입니다.
max_delta_sizestracker.max_delta_sizes클러스터 노드에 현재 상태 데이터의 최소 하위 집합을 브로드캐스트하는데 사용되는 현재 상태 스냅샷의 델타 수와 델타당 최대 현재 상태 수. 기본값은 100, 1000, 10000입니다.
max_silent_periodstracker.max_silent_periods클러스터 노드의 현재 상태 전송 기능이 다운된 것으로 간주되기까지의 최대 누락 브로드캐스트 횟수. 기본값은 10입니다.
permdown_period_mstracker.permdown_period_ms클러스터 노드의 현재 상태 전송 기능이 영구적으로 다운된 것으로 간주되어 제거되기까지 마지막 브로드캐스트 이후의 시간(밀리초). 기본값은 1200000입니다.

매치 메이커 #

매치메이킹에 관련된 구성 옵션을 변경할 수 있습니다.

ParameterFlagDescription
max_ticketsmatchmaker.max_tickets세션 또는 파티당 허용되는 최대 동시 매치 메이킹 티켓 수. 기본값은 3입니다.
interval_secmatchmaker.interval_sec매치 메이커가 매치를 빠르게 성사시키려 시도하는 시간(초). 기본값은 15입니다.
max_intervalsmatchmaker.max_intervals최소 카운트를 허용하기 전에 매치 메이커가 최대 플레이어 수에서 매치를 찾으려고 시도하는 간격 횟수. 기본값은 2입니다.
rev_precisionmatchmaker.rev_precision역매칭 정밀도, 즉 플레이어 A가 플레이어 B와 일치하면 매치메이커는 플레이어 B가 플레이어 A와 일치하는지 여부도 확인합니다. 기본값은 거짓입니다.
rev_thresholdmatchmaker.rev_threshold단방향 매칭으로 돌아가기 전에 역매칭을 허용할 매치메이커 간격의 수입니다. 기본값은 1입니다.

예제 파일 #

전체 파일을 사용하거나 구성의 일부만 사용할 수 있습니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
name: nakama-node-1
data_dir: "./data/"

logger:
  stdout: false
  level: "warn"
  file: "/tmp/path/to/logfile.log"
  rotation: false
  max_size: 100
  max_age: 0
  max_backups: 0
  local_time: false
  compress: false

metrics:
  reporting_freq_sec: 60
  namespace: ""
  prometheus_port: 7354

database:
  address:
    - "root@localhost:26257"
  conn_max_lifetime_ms: 0
  max_open_conns: 0
  max_idle_conns: 100

runtime:
  env:
    - "example_apikey=example_apivalue"
    - "encryptionkey=afefa==e332*u13=971mldq"
  path: "/tmp/modules/folders"
  http_key: "defaulthttpkey"

socket:
  server_key: "defaultkey"
  port: 7350
  max_message_size_bytes: 4096 # bytes
  read_timeout_ms: 10000
  write_timeout_ms: 10000
  idle_timeout_ms: 60000
  write_wait_ms: 5000
  pong_wait_ms: 10000
  ping_period_ms: 8000 # Must be less than pong_wait_ms
  outgoing_queue_size: 16

session:
  encryption_key: "defaultencryptionkey"
  token_expiry_sec: 60
    refresh_encryption_key: "defaultrefreshencryptionkey"
    refresh_token_expiry_sec: 3600

social:
  steam:
  publisher_key: ""
  app_id: 0

console:
  port: 7351
  username: "admin"
  password: "password"

cluster:
  join:
    - "10.0.0.2:7352"
    - "10.0.0.3:7352"
  gossip_bindaddr: "0.0.0.0"
  gossip_bindport: 7352
  rpc_port: 7353
  local_priority: true
  work_factor_interval_ms: 1000

tracker:
  max_delta_sizes:
    - 100
    - 1000
    - 10000

matchmaker:
  max_tickets: 2
  interval_sec: 15
  max_intervals: 3

iap:
  apple:
    shared_password: "password"
  google:
    client_email: "email@google.com"
    private_key: "pk"
  huawei:
    public_key: "pk"
    client_id: "id"
    client_secret: "secret"