영속성
항상 온라인으로 24/7 지속되는 배포로 영구적인 월드를 관리하는 방법을 알아보세요 프라이빗 플릿.
다양한 장르(MMO, 샌드박스, 소셜 게임)는 영구 월드를 활용하여 플레이어가 다음을 할 수 있게 합니다:
새로운 친구를 만나고 소셜 활동을 하며 유기적인 플레이어 커뮤니티를 육성하기 위해,
플레이어가 배치한 사용자 생성 콘텐츠로 가득한 살아있는 오픈 월드를 탐험하고,
대규모 그룹이나 전체 길드와 함께 몇 시간이나 지속되는 대규모 공격전(레이드)에 참여합니다.
다음 전략을 살펴보세요 최상의 플레이어 경험을 제공하고 비용을 통제하며 정전이나 롤백으로 인한 플레이어의 좌절을 제거하세요. 게임 개발자가 쉽게 사용할 수 있도록 패키지화된 엣지 컴퓨팅의 장점을 전통적인 서버 모델에 더하세요.
✔️ 준비
지속적이고 중단 없는 24/7 항상 온라인 배포를 활성화하려면:
API로 새 앱 버전을 생성(또는 기존 버전 업데이트)하세요,
지정하세요
"max_duration": -124시간 후 자동 종료를 방지하려면,
)과 각 내부 포트에 대한 외부 포트가 할당됩니다. 프라이빗 플릿 배포 API 시작하려면 대기 서버 사용: 영속성.
가상 머신(성능) 또는 베어 메탈(오버드라이브) 사양 중에서 선택하세요.
서버 스케일링과 종료 프로세스를 테스트하세요 비용 제어의 신뢰성을 확인하기 위해. 메모리에 저장된 서버 상태는 배포가 중지되면 손실되니, 참조하세요 영속성.
🔑 서버 소유권
엣지 컴퓨팅의 변형을 포함한 현대적 및 전통적 소유권 모델의 장단점을 살펴보세요.
스튜디오 호스팅
서버 호스팅은 전통적으로 스튜디오가 관리하며, 호스팅 비용은 게임 수익에서 부담합니다.
👍 장점
투명한 제품 가격 책정 - 호스팅 비용은 플레이어의 라이선스/구독으로 충당됩니다,
클라이언트, 서비스, 스케일링의 느슨한 결합으로 강한 클라이언트/서버 호환성,
서버가 폐쇄 소스여서 치팅 및 리버스 엔지니어링에 더 강건합니다.
👎 단점
서버의 무결성과 안정성을 보장하기 위해 커뮤니티 모딩 지원은 제한됩니다.
커뮤니티 서버
플레이어가 자체 서버를 호스팅하고 비용을 부담하도록 하여 제3자 임대 서비스의 필요를 제거하세요. 엔드 유저 경험 품질에 대한 통찰이 부족한 제3자 대신 수익을 스튜디오로 유입하세요.
👍 장점
선별된 모드 목록을 통한 향상된 모딩 지원, 앱 및 버전,
커뮤니티와의 더 긴밀한 협업으로 향상된 플레이어 피드백 루프,
플레이어가 호스팅 비용을 부담하므로 재정적 위험 감소.
👎 단점
플레이어 요청 중재 및 결제 수금 등 스튜디오의 운영 업무 증가,
모드된 버전 수 증가로 인한 약화된 클라이언트/서버 호환성,
분산된 코드베이스와 리버스 엔지니어링 가능성으로 치팅에 취약함.
🥛 용량 및 스케일링
서버 가용성, 호스팅 비용 및 서비스 품질을 최적화하는 고급 기법을 배우세요.
용량
배포는 활성 플레이어 연결을 추적하거나 관리하지 않습니다 귀하가 배포 모든 설계를 구현할 수 있는 절대적 제어와 자유를 제공하기 위해.
서버 용량 관리를 구현하여 서버가 다음을 보장하도록 하세요:
비용 절감 극대화 - 벤치마크 및 서버 자원을 효율적으로 활용하세요,
원활한 게임 플레이 제공 - 동시에 너무 많은 플레이어로 서버 과부하를 방지하세요,
충돌로 인한 나쁜 리뷰를 방지 - 예기치 않은 예외를 포착하고 처리하세요.
효율적인 서버 용량 관리를 위해:
다음 경우 플레이어 슬롯을 해제하세요 게임 서버에 매칭된 플레이어가 몇 초 내에 연결하지 않으면,
활동을 추적하기 위해 클라이언트에서 서버로 최소한의 하트비트 메시지를 자주 전송하세요,
몇 초 동안 활동이 감지되지 않으면 클라이언트 연결을 끊고 플레이어 슬롯을 해제하세요,
용량이 가득 차고 사용 가능한 플레이어 슬롯이 없는 서버에 플레이어가 추가되지 않도록 하세요.
보기 당사 관리 서비스로 자동 용량 처리를 위해.
스케일 업
영구 서버의 스케일링은 지역 트래픽이나 서버 비용을 "어림짐작"할 필요가 없습니다 지역 트래픽이나 서버 비용. 예비 예약하세요 프라이빗 플릿 용량을 비수기 예상치 못한 급증 시 자동으로 클라우드로 오버플로우되도록 하세요.
다음의 서버 스케일링 전략을 구현하세요:
남용을 주의 깊게 방지하면서 대규모 호스팅을 가능하게 하세요,
대기 서버의 비어 있는 비용 낭비를 최소화하세요,
플레이어 수요 증가에 신속히 대응하여 긴 대기열 시간을 방지하세요.

통합 핵심 포인트
스케일링 권한은 실행 중인 서버를 할당하거나 플레이어를 위해 새 서버를 시작합니다.
서버는 서버 시작/중지 및 플레이어 연결 변경에 대해 실시간으로 스케일링 권한에 알립니다.
스케일링 권한은 응답이 없는(충돌한) 서버의 오래된 레코드를 삭제(만료)합니다.
클라이언트는 서버에 직접 연결하여 게임 세션을 설정하고 게임 플레이를 진행합니다.
물리적 부하(CPU 및 RAM)의 일시적 변동이 예측 불가능한 가용성으로 이어질 수 있으므로 연결 수를 기준으로 스케일링하는 것을 강력히 권장합니다 (CPU 및 RAM), 순간적인 물리적 부하 변동이 예측 불가능한 가용성으로 이어질 수 있으므로.
스케일 다운
효율적인 축소 정책은 비용 최적화의 핵심이지만, 서버를 종료하는 것은 주의 없이 수행하면 플레이어 경험에 부정적 영향을 줄 수 있습니다. 다음 요소를 고려하고 변경 사항을 배포하기 전에 테스트하세요:
플레이어 활동/연결 끊김 탐지가 신뢰할 수 있나요?
입력 부재가 신뢰성 있게 플레이어 비활성화를 나타내나요? 플레이어는 종종 봇, 매크로 및 기타 기법을 사용하여 활동을 가장하고 대기 시간을 피하기 위해 활성 연결을 유지합니다.
활성 플레이어가 자주 수행하지만 위조하기 어려운 동작이 있나요?
봇이나 매크로 사용이 영속성 서버에서 문제인가요 아니면 기능인가요?
서버를 끄는 것이 쉽게 그리고 빠르게 되돌릴 수 있나요(다시 스케일 업 가능)?
로딩 장면, 미니게임, 로비 또는 기타 수단을 통해 서버 로딩을 숨길 수 있나요?
플레이어가 특정 서버 인스턴스에 묶여 있나요 아니면 쉽게 마이그레이션할 수 있나요?
다른 서버에 연결하는 것이 플레이어의 계정, 구매 내역, 소셜 경험, 진행 상태, 인벤토리 및 기타 게임플레이 측면에 어떤 영향을 미치나요?
다음을 검토하세요 영속성 그리고 중요한 데이터가 손실되지 않도록 하세요.
중요한 데이터를 복원하기 위한 자동화된 방법 또는 플레이어 도구를 구현하세요.
인간의 지원을 제공하고 정전 및 문제에 대해 커뮤니티에 소통하세요.
🔎 검색성
새 플레이어를 받는 활성 서버를 찾으려면 하나 이상의 검색 방법을 구현하세요:
플레이어가 서버를 찾아보고 목록에서 선택하게 하려면 서버 브라우저.
충분한 플레이어가 모이면 새 게임을 시작하세요 매치메이킹.
플레이어를 추가하여 백필로 기존 매치의 이탈자를 교체하세요.
💭 구성 및 상태
초기 서버 요구 사항을 정의하고 플레이어 및 서버 상태를 관리하기 위해 서비스를 통합하세요.
구성 관리
구성이란 배포 중 서버에 전달되는 초기 데이터를 의미합니다:
예: 클라이언트/서버 버전 호환성 데이터,
타사 통합 매개변수, 키 및 시크릿.
구성은 불변입니다 - 서버 시작 후 한 번 읽히며 이후에는 변경되지 않습니다.
상태 관리
상태는 다음을 설명하는 데이터를 의미합니다: 이전 플레이어 동작 및 서버 이벤트의 연속 결과:
플레이어 연결, 플레이어가 제어하는 상태 변경(예: 폰(Pawn)),
상태 데이터는 자주 변경됩니다. 클라이언트는 서버 권한에 의해 관련 정보만 선택적으로 업데이트됩니다.
예기치 않은 클라이언트 또는 서버 문제에 대비해 데이터 손실을 방지하려면 상태를 자주 백업하세요: 실시간으로 비동기 방식으로 타사 서비스를 사용하여, 예:
Heroic Labs의 Nakama 클라이언트/서버 시작 또는 종료 시, 역직렬화된 상태 파일로,
클라우드 오브젝트 스토리지에 게임 오브젝트는 일반적으로 그것을 제어하는 소유자를 지정하며, 이는 서버거나 플레이어일 수 있습니다..
서버 소유 오브젝트
서버 소유 오브젝트는 서버만 조작할 수 있습니다. 연결된 플레이어는 서버 소유 오브젝트에 대해 제한된 읽기 권한을 가집니다. 서버 소유 오브젝트는 일반적으로 다른 서버와 공유되지 않습니다.
서버 소유 오브젝트는
예기치 않은 서버 충돌 시 교체 서버에 의해 로드될 수 있습니다 . 사용하세요배포 ID 처음 실행할 때 새 저장 파일을 식별하고 서버 소유 오브젝트 상태를 저장하려면. 플레이어 소유 오브젝트
플레이어 소유 오브젝트는 플레이어와 서버 모두가 조작할 수 있습니다. 영구 오브젝트의 소유권을 플레이어에게 할당하면 나중에 다른 서버로의 마이그레이션이 더 쉬워집니다.
플레이 세션 간 플레이어 소유 오브젝트의 상태를 플레이어 기기나 게임 백엔드에 백업하세요.
플레이 세션 사이에. 변경 사항을 서버 권한으로 검증하여 치팅을 방지하세요. 권한과 소유권은 분리될 수 있습니다.
복구 목표
문제가 발생할 경우 일부 데이터 카테고리는 데이터 손실에 더 민감할 수 있습니다. 예를 들면:
계정, 구독, 구매 및 마이크로트랜잭션 데이터 -
중요 진행도, 업적, 리더보드 및 인벤토리 데이터 -,
치트 탐지, 중재, 성능 및 오류 추적 데이터 - 중요합니다,
플레이어 행동, 소셜, 채팅 데이터 - 중요합니다,
중요도 낮음 최상의 경험을 위해 독립 거래 내역 소스에서 구매 복원을 구현하세요..
다음 사항을 팀 내에서 논의할 것을 강력히 권장합니다: 게임 클라이언트와 서버에서 처리되는 데이터 카테고리,
각 카테고리가 비즈니스와 플레이어에게 가지는 중요도와 민감도,
복구 지점 목표(RPO) - 심각한 손해가 발생하기 전에 허용되는 데이터 손실량,
복구 시간 목표(RTO) - 심각한 손해가 발생하기 전에 허용되는 다운타임.
장기간 실행되는 영구 서버는 모니터링, 로깅 및 버그 추적에서 이상을 감지하는 등 새로운 가시성(관찰성) 문제를 가져옵니다.
우리는
신호가 전송되어 배포가 중지됩니다.
서버 재시작에 대한 경고를 구현할 것을 강력히 권장합니다
문제에 대한 가시성을 높이기 위해. 로그 통합 는 로그만 전송합니다
저희의 엔드포인트 저장소 후에 부분적 실패와 버그를 해결하기 위해 맞춤 로그와 버그 추적(예: Sentry 배포)를 추가하세요. 예측 가능한 트래픽 패턴을 가진 게임의 경우대기 용량을 예약하는 것을 고려하세요.
대기 용량을 예약하는 것을 고려하세요. 프라이빗 플릿 대기 용량을 예약하는 것을 고려하세요.
마지막 업데이트
도움이 되었나요?

