게임 코어
게임 플레이 모드
게임 플레이를 제어하고 승리 조건을 평가하는 메인 스크립트. 게임 플레이 모드의 일부는 플레이어의 킬/데스와 플레이어의 통계 작성을 처리하는 것입니다.
데스 매치
표준 데스매치 기능을 갖춘 가장 기본적인 게임 플레이 모드입니다.
엘리미네이션
플레이어의 수명은 제한되어 있습니다. 마지막까지 남아있는 플레이어가 이깁니다. 이 게임 플레이 모드는 시간이 지남에 따라 사용 가능한 맵 공간을 줄이는 수축 영역이 특징입니다.

배틀 로열
플레이어들은 줄어드는 지역 주위를 도는 비행기에서 시작합니다. 낙하가 시작된 후, 비행기는 활성 지도 지역으로 들어가고, 선수들은 제트팩을 가지고 낙하하고 착륙할 수 있습니다. 플레이어들은 단 한 번의 삶을 살 수 있고, 마지막까지 서 있는 사람이 이깁니다.
비행기 안에 있는 동안 플레이어의 입력은 AirplaneAgent
에 의해 처리됩니다.

줄어드는 지역
축소 영역은 시간이 지남에 따라 축소되고 이 영역 밖의 플레이어에게 피해를 주는 원형 영역입니다. 축소는 여러 단계로 이루어집니다. 모든 단계 전에 경고와 남은 시간이 UI에 표시됩니다. 축소 단계 사이의 시간은 활성 플레이어를 기반으로 합니다. 플레이어가 덜 살아있을수록 영역이 더 빨리 축소됩니다.

축소 영역은 배틀 로열 및 엘리미네이션 모드에서 활성화됩니다.
아나운서
Announcer
시스템은 멀티 킬, 남은 시간, 남은 플레이어 등 게임 내 이벤트를 알려주는 간단한 시스템입니다. 모든 게임 플레이 모드는 플레이어에게 평가되고 제공되는 서로 다른 알림 세트를 정의할 수 있습니다.

안내방송은 게임 내 이벤트를 정의하는 스크립트로 작성 가능한 객체입니다. 모든 안내방송 객체는 사용자 지정 평가 로직을 가지며 트리거 되면 플레이어에게 어떤 메시지 또는 오디오 클립을 제공해야 하는지를 포함합니다. 안내방송은 우선순위가 다를 수 있으며 특정 채널에서 재생할 수 있습니다. 동일한 채널에서 두 개의 안내방송이 동시에 트리거 되면 우선순위가 높은 알림 방송만 표시됩니다. 이를 통해 더블 킬 및 트리플 킬 안내방송이 모두 활성화되었음에도 불구하고 트리플 킬 안내방송만 표시됩니다.
레벨 생성
200명의 플레이어에게 의미 있는 레벨을 만드는 데 시간이 많이 걸리기 때문에 코드별로 반 절차적으로 레벨을 생성하는 것을 선택했습니다.

서버가 씬을 로드할 때 모든 레벨은 런타임에 지정된 매개 변수를 기반으로 생성됩니다. 생성 프로세스에 일부 무작위성이 포함되어 있으므로 모든 실행이 다릅니다.
GenArea2
- GenArea 7
씬은 Gameplay/NetworkGame
게임 객체에 있는 파라미터 설정에서만 차이가 있습니다.

레벨 생성에 대한 구체적인 내용은 이 문서의 범위를 벗어나지만, 간단히 말해서 지역(색상 영역)로 레벨이 구분됩니다. 모든 영역은 블록(미리 제작된 프리탭)로 구성되며, 블록은 연결자(미리 제작된 프리탭 - 경사로, 박스 더미)로 연결됩니다. 각 영역의 중심은 특별한 타워 블록으로 정의됩니다. 생성을 제어하는 값은 LevelGenerator
스크립트에서 확인할 수 있습니다.

모든 블록은 가능한 플레이어 스폰 위치와 아이템 상자의 위치를 정의할 수 있습니다. 아이템 상자는 생성 프로세스의 일부로 레벨로 스폰 됩니다.
NetworkGame
NetworkGame
은 접속한 플레이어의 참여와 탈퇴를 처리해 클라이언트별로 Player
프리팹을 생성합니다. 접속하지 않은 플레이어는 저장되므로 재접속 시 데이터를 복구할 수 있습니다. NetworkGame
은 초기화 과정에서 GameplayMode
를 생성합니다.
Scene & SceneContext
**Scene
**은 UI, 카메라, 음악, 미니맵 등 장면별 기능 및 서비스(SceneService
에서 상속됨)를 처리합니다. 씬 서비스는 언제든지 초기화, 활성화, 비활성화 및 업데이트가 가능하도록 Scene
에서 수동으로 업데이트됩니다.
**SceneContext
**는 코드 베이스 전반에 걸쳐 필요한 공통 서비스나 기타 정보를 정적으로 사용하지 않고 안전하게 접근할 수 있습니다. 씬 컨텍스트는 자동으로 씬 서비스로 전달되어 Gameplay
및 NetworkObjectPool
에서 네트워크 객체로 할당됩니다. SceneContext
에 접근하려면 NetworkBehaviour
r 대신 ContextBehaviour
에서 상속해야 합니다.
게임 코어
다음 이미지는 애플리케이션 루프를 보여줍니다:

다음 다이어그램은 코어 게임 스크립트의 수명을 보여줍니다:
