게임 핵심
게임 플레이 모드
게임 플레이를 제어하고 승리 조건을 평가하는 기본 스크립트입니다. GameplayMode
의 일부는 플레이어 킬/데스를 처리하고 플레이어 통계를 작성하는 것입니다.
데스매치
표준 데스매치 기능을 갖춘 가장 기본적인 게임 플레이 모드입니다.
엘리미네이션
플레이어의 수명은 한정되어 있습니다. 마지막까지 살아남은 플레이어가 승리합니다. 이 게임 모드는 시간이 지남에 따라 사용 가능한 맵 영역을 줄이는 축소 영역을 특징으로 합니다.
배틀 로얄
플레이어들은 줄어드는 지역을 날고 있는 비행기에서 시작합니다. 낙하 시작 후, 비행기는 활성 맵 영역에 들어가고, 선수들은 제트팩을 가지고 낙하하고 착륙할 수 있습니다. 플레이어는 단 한 개의 목숨만 있으며, 마지막까지 살아남은 사람이 승리합니다.
비행기에서 플레이어의 입력은 AirplaneAgent
에 의해 처리됩니다.
축소되는 영역
축소 영역은 시간이 지남에 따라 축소되고 이 영역 밖에 있는 플레이어는 피해를 받는 원형 영역입니다. 축소는 여러 단계에서 발생합니다. 단계별로 축소되기 전에 UI에 경고와 남은 시간이 표시됩니다. 축소 단계 사이의 시간은 활성 플레이어를 기준으로 합니다. 즉, 살아 있는 플레이어가 적을수록 영역은 더 빨리 축소됩니다.
축소 영역은 배틀 로얄 및 엘리미네이션 모드에서 사용 가능합니다.
아나운서
Announcer
시스템은 멀티 킬, 남은 시간, 남은 플레이어 등 게임 내 이벤트를 알려주는 간단한 시스템입니다. 모든 게임 플레이 모드는 평가 및 플레이어에게 제공되는 다양한 공지를 정의할 수 있습니다.
Announcement
는 게임 내 이벤트를 정의하는 스크립팅 가능한 객체입니다. 모든 알림 객체는 사용자 정의 평가 로직을 가지며 트리거 된 후 플레이어에게 어떤 메시지 또는 오디오 클립을 제공해야 하는지 포함합니다. 알림은 서로 다른 우선순위를 가질 수 있으며 특정 채널에서 플레이할 수 있습니다. 동일한 채널에서 두 개의 알림이 동시에 트리거 되면 우선순위가 더 높은 알림만 표시됩니다. 이렇게 하면 예를 들어 더블 킬 알림과 트리플 킬 알림이 모두 활성화되었음에도 불구하고 트리플 킬 알림만 표시됩니다.
레벨 생성
200명의 플레이어에게 의미 있는 레벨을 만드는 것은 시간이 많이 걸리기 때문에, 코드를 통해 반 절차적으로 레벨을 생성하는 것을 선택했습니다.
서버가 씬을 로드할 때 런타임에 지정된 매개변수에 따라 모든 레벨이 생성됩니다. 생성 프로세스에는 무작위성이 일부 포함되므로 실행할 때마다 다릅니다.
씬 GenArea2
- GenArea 7
은 Gameplay/NetworkGame
게임 객체에 있는 매개 변수 설정에서만 다릅니다.
레벨 생성에 대한 자세한 내용은 이 설명서의 범위를 벗어나지만, 간단히 말해서 레벨은 영역(색상으로 분리된 섹션)으로 나뉩니다. 모든 영역은 블록(사전 제작 프리팹)으로 구성되며 블록은 커넥터(사전 제작 프리팹 - 램프, 박스 더미)로 연결됩니다. 각 영역의 중심은 특별한 타워 블록으로 정의됩니다. 생성을 제어하는 값은 LevelGenerator
스크립트에서 확인할 수 있습니다.
모든 블록은 가능한 플레이어 스폰 위치 및 아이템 상자의 위치를 정의할 수 있습니다. 아이템 상자는 생성 프로세스의 일부로 레벨에 생성됩니다.
NetworkGame
네트워크 게임은 연결된 플레이어의 참여와 종료를 처리하고 각 클라이언트에 대해 Player
프리팹을 생성합니다. 연결이 끊긴 플레이어는 저장되므로 재연결 시 데이터를 복구할 수 있습니다. NetworkGame
은 초기화 프로세스에서 GameplayMode
를 스폰 시킵니다.
Scene & SceneContext
**Scene
**은 UI, 카메라, 음악, 미니맵 등의 씬별 기능 및 서비스(SceneService
)를 처리합니다. 씬 서비스는 Scene
에서 수동으로 업데이트되므로 언제든지 초기화, 활성화, 비활성화 및 업데이트할 수 있습니다.
**SceneContext
**는 코드베이스 전반에 걸쳐 필요한 공통 서비스 또는 기타 정보에 대한 정적 사용 없이 안전하게 접근할 수 있습니다. 씬 컨텍스트는 자동으로 씬 서비스로 전달되고 Gameplay
와 NetworkObjectPool
의 네트워크 객체에 할당됩니다. 씬 컨텍스트에 접근하려면 NetworkBehaviour
및 SimulationBehaviour
대신 ContextBehaviour
과 ContextSimulationBehaviour
에서 상속이 필요합니다.
게임 코어
다음 그림은 애플리케이션 루프를 표현합니다:
다음 다이어그램은 코어 게임 스크립트의 수명을 보여줍니다:
Back to top