Тестирование многопользовательского режима может оказаться затруднительным по той причине, что такой режим подразумевает участие нескольких игроков, а у нас не всегда есть возможность поиграть с другими. В этом случае можно протестировать механику устранений в условиях одиночной игры при помощи стрелков. Поскольку к стрелкам привязано событие EliminatedEvent
, на которое можно подписаться, их можно использовать в качестве вражеских игроков для тестирования механики устранения.
Выполним следующие действия, чтобы реализовать выдачу оружия за устранение стрелка.
-
В класс
team_elimination_game
добавьте новый методTestPlayerEliminated
. Метод будет вызываться при каждом устранении стрелка.TestPlayerEliminated(Agent : ?agent) : void = Print("Стрелок устранён!")
-
В
TestPlayerEliminated
проверьте, был ли стрелок устранён игроком. Если это так, передайте устранившего игрока в качестве аргумента методуGiveNextWeapon
. Поскольку функцияTestPlayerEliminated
уже принимает в качестве аргумента агента (типаoption
), вы неявно знаете, какой игрок совершил это устранение.TestPlayerEliminated(Agent: ?agent) : void = Print("Стрелок устранён!") if(TeamPlayer := Agent?): GiveNextWeapon(TeamPlayer)
-
В блок
OnBegin
добавьте новый циклfor
, чтобы подписаться наEliminatedEvent
каждого стрелка при помощиTestPlayerEliminated
. БлокOnBegin
теперь должен выглядеть следующим образом.OnBegin<override>()<suspends> : void = set Teams = GetPlayspace().GetTeamCollection().GetTeams() set EliminationsToEndGame = WeaponGranters.Length Logger.Print("Количество устранений для завершения игры: {EliminationsToEndGame}") Logger.Print("Начинаю назначение игроков") PopulateTeamsAndPlayers() for (Spawner : PlayerSpawners): Spawner.SpawnedEvent.Subscribe(OnPlayerSpawn) # Подписываемся на каждую точку появления игроков for (Sentry : Sentries): Sentry.EliminatedEvent.Subscribe(TestPlayerEliminated) # Подписываемся на каждого стрелка # Подписываемся на присоединяющихся игроков GetPlayspace().PlayerAddedEvent().Subscribe(OnPlayerAdded)
Сохраните сценарий в Visual Studio Code, скомпилируйте его и нажмите Запустить сеанс на панели инструментов UEFN, чтобы выполнить игровой тест уровня. Устранение вражеского игрока или стрелка позволит получить оружие следующего уровня. Если вы проводите тест в многопользовательском режиме, то повышение уровня должно выполняться с соблюдением двух правил, описанных в разделе «5. Выдача оружия за устранения». Получение оружия последнего уровня должно приводить к завершению игры, а устранивший игрок, достигший этого уровня, будет считаться победителем.

Окончательный результат
В заключении приведён полный сценарий этой игры.