Verse 처치(Verse Elimination)에서 플레이어는 처치 시마다 변경되는 편성으로 전투를 합니다. 이 메커니즘은 아이템 지급 장치(Item Granter) 같은 장치를 Verse 장치에 연결하여 구현할 수 있습니다.
이 고급 Verse 템플릿은 다음 Verse API의 사용을 보여줍니다.
맵 컨테이너 타입
배열
Fort_character EliminateEvent 등록
개요
새 프로젝트를 생성하고 섬 설정을 수정하여 게임을 구성합니다.
장치를 설정합니다.
Verse 스크립트를 추가합니다.
Verse 장치를 구성합니다.
새 프로젝트 생성 및 게임 구성하기
UEFN을 실행하여 신규 빈 프로젝트를 생성합니다.
아웃라이너(Outliner)에서 섬 설정(IslandSettings) 장치를 선택하여 사용자 옵션 - 게임 규칙(User Options - Game Rules)을 찾습니다.
사용자 옵션을 아래와 같이 수정합니다.
| 옵션 | 값 | 설명 |
|---|---|---|
처치된 플레이어의 아이템(Eliminated Player’s Items) | 유지(Keep) | 플레이어가 편성과 함께 부활합니다. |
아이템 드롭 허용(Allow Item Drop) | False | 플레이어가 게임 도중에 인벤토리에서 아이템을 드롭할 수 없습니다. |
환경 피해(Environment Destruction) | Off | 게임 도중 환경이 파괴되지 않습니다. |
장치 구성하기
이 튜토리얼에서는 다음 장치를 사용합니다.
아이템 지급 장치(N)
게임 종료 장치(1)
플레이어 생성 패드(N)
아이템 지급 장치
아이템 지급 장치(Item Granter)를 사용하여 플레이어에게 무기를 지급합니다. 다이렉트 이벤트 바인딩을 사용하여 아이템 지급 장치를 Verse 장치에 연결한 후 Verse 스크립트에서 무기의 순서를 셔플하고 처치 시마다 보상으로 지급할 수 있습니다.
아이템 지급 장치는 몇 개든 사용할 수 있습니다. Verse 장치 배열에서 연결하면 게임에서 그에 맞춰 스케일이 조절됩니다.
콘텐츠 드로어에서 Fortnite > 장치(Devices)로 이동하여 아이템 지급 장치를 맵으로 드래그합니다.
이 장치를 구성하려면 사용자 옵션(User Options)을 다음과 같이 환경설정합니다.
| 옵션 | 값 | 설명 |
|---|---|---|
아이템 정의(Item Definition) | 무기 선택 | 아이템 지급 장치별로 고유 무기를 하나 선택합니다. |
게임 종료 장치
조건이 충족되면 게임 종료(End Game) 장치를 사용하여 라운드를 종료합니다. 처치 횟수가 일정 한계치에 도달하면 Verse 스크립트가 이 장치를 활성화하여 라운드를 종료합니다.
이 장치의 경우 기본 설정을 사용합니다.
플레이어 생성 패드
플레이어 생성 패드(Player Spawn Pads)를 사용하여 맵에 플레이어를 생성할 수 있습니다. 맵 곳곳에 생성 패드를 골고루 분산시키면 플레이어가 그룹으로 생성되지 않습니다.
이 장치의 경우 기본 설정을 사용합니다.
Verse 스크립트 추가하기
다음 Verse 스크립트를 추가하여 @editable 함수로 장치를 참조하는 것부터 시작합니다.
작성된 순서대로 코드를 복사할 수 있습니다. 코멘트는 스크립트를 명확하게 설명하기 위해 추가됩니다.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Characters }
using { /Fortnite.com/Game }
using { /Verse.org/Simulation }
using { /Verse.org/Simulation/Tags }
using { /Verse.org/Random }
using { /UnrealEngine.com/Temporary/Diagnostics }
elimination_game_device := class(creative_device):
위의 코드는 변수 정의를 보여줍니다.
OnBegin<override>()<suspends>:void=
# Can use this variable to scale the number of eliminations needed based on how many item granters there are in the experience
set NumberOfEliminationsToWin = WeaponItemGranters.Length
Print("Number of Weapon Item Granters: {WeaponItemGranters.Length}")
# Randomize the order in which the weapons are granted
set WeaponItemGranters = Shuffle(WeaponItemGranters)
# Get all the players in the experience
AllPlayers := GetPlayspace().GetPlayers()
위의 코드에서는 승리에 필요한 처치 횟수에 관한 게임 규칙을 설정하는 로직을 보여줍니다. 아이템 지급 장치의 배열 순서가 셔플됩니다.
플레이어가 맵에 추가되어 진행 상황과 다음에 지급되어야 할 아이템을 모두 추적합니다.
# Event that handles when a player is eliminated
OnPlayerEliminated(Result:elimination_result):void=
Print("Player Eliminated")
EliminatingCharacter := Result.EliminatingCharacter
if (FortCharacter := EliminatingCharacter?):
if (EliminatingAgent := FortCharacter.GetAgent[]):
GrantNextWeapon(EliminatingAgent)
위의 코드는 플레이어가 처치될때 발생하는 이벤트입니다. 처치하는 플레이어에게 다음 총이 지급됩니다.
# Check if there is a winner for the game, if not then grant the next weapon
GrantNextWeapon(Agent:agent):void=
if (var CurrentItemNumber:int = AgentMap[Agent]):
if (IsVictoryConditionMet(CurrentItemNumber) = true):
EndGame(Agent) # Game has been won
else: # Game is not over yet
set CurrentItemNumber = CurrentItemNumber + 1
if (ItemGranter := WeaponItemGranters[CurrentItemNumber - 1]):
ItemGranter.GrantItem(Agent)
위의 코드는 처치한 플레이어에게 어떤 총을 지급할지와 플레이어에게 매치를 끝낼 마지막 총을 지급할 단계인지 여부를 모두 확인합니다.
# Check if the victory condition has been met and return the the result
IsVictoryConditionMet(EliminationNumber:int)<transacts>:logic=
if:
EliminationNumber = NumberOfEliminationsToWin
then:
return true
else:
return false위의 코드는 승리 조건이 충족되었는지 여부를 확인하는 로직입니다.
EndGame(Agent:agent):void=
EndGameDevice.Activate(Agent)
위의 코드는 게임 종료 장치가 승리 플레이어를 호출하는 것을 보여주는 로직입니다.
Verse 장치 구성하기
Verse 장치는 다이렉트 이벤트 바인딩을 사용하여 연결된 아이템 지급 장치의 배열을 통해 게임 종료와 처치 시 무기 지급을 제어합니다.
Verse 스크립트를 컴파일한 다음 콘텐츠 드로어(Content Drawer)에서 장치를 찾습니다. Verse 장치를 맵의 미확인 영역으로 드래그하여 세팅을 커스터마이징합니다.
Verse 스크립트가 참조할 수 있도록 이 장치를 사용하여 다이렉트 이벤트 바인딩에 필요한 장치를 연결합니다.
장치의 디테일(Details) 패널에서 참조된 각 장치가 위 사진과 일치하도록 세팅을 환경설정합니다.
이 장치를 구성하려면 사용자 옵션(User Options)을 다음과 같이 환경설정합니다.
| 옵션 | 값 | 설명 |
|---|---|---|
EndGameDevice | 게임 종료 장치 | Verse 장치를 게임 종료 장치에 연결합니다. |
WeaponItemGranters - 0 | 아이템 지급 장치 | 아이템 지급 장치를 Verse 장치에 연결합니다. |
WeaponItemGranters - 1 | Item Granter2 | 아이템 지급 장치를 Verse 장치에 연결합니다. |
WeaponItemGranters - 2 | Item Granter3 | 아이템 지급 장치를 Verse 장치에 연결합니다. |
WeaponItemGranters - 3 | Item Granter4 | 아이템 지급 장치를 Verse 장치에 연결합니다. |
세션 시작(Launch Session)을 선택하여 완성된 레벨을 테스트합니다.