Unreal Engine 4 - Как мне прекратить возвращаться в камеру игрока после последовательности уровней? - PullRequest
0 голосов
/ 24 октября 2019

Итак, это займет немного объяснений, я постараюсь предоставить всю информацию, которую смогу. Я работаю над «серьезной игрой» в UE 4.22, которая предназначена для использования в качестве учебной системы для школьных учителей и тренеров, которая используется для понимания и реагирования на сотрясения ученика и спортсмена. Игра состоит из 2 основных режимов игры, контроля учителя от третьего лица, проходящего через школьную среду, и уровней последовательности / кинематографических с выбором кнопок пользовательского интерфейса, которые должен сделать игрок. Выбор заставляет играть последовательности разветвления / чередования уровней. Например, игроку может быть предложено 2 варианта, сделать опцию X или опцию Y. X приведет игру к запуску последовательности 1 уровня, а Y приведет нас к другой последовательности уровней. На всех уровнях присутствует общий контроллер, который поддерживает текущее состояние и определяет последовательность уровней для загрузки на основе взаимодействия с пользователем. Мы используем события, запускаемые в последовательностях уровней, чтобы сообщить контроллеру, когда последовательность заканчивается, затем следующая последовательность ставится в очередь и воспроизводится.

Моя проблема заключается в том, что между временем окончания одной последовательности уровней и началом следующейвверх, затем двигатель возвращает управление игроку, на мгновение заставляя камеру вернуться к камере персонажа от третьего лица на короткий промежуток времени, прежде чем загрузится следующая последовательность. Вероятно, это происходит менее чем за 200 мс (более вероятно, менее чем за 100 мс на большинстве машин со средней мощностью). Это не похоже на большое дело, но это очень неприятно. Быстрая вспышка другого вида камеры похожа на странное подсознательное сообщение и очень нежелательна, поскольку наша целевая аудитория не является геймером. На самом деле, это довольно привлекательно, когда я вижу видеозаписи этого выпуска. Генеральный директор нашей компании в течение нескольких месяцев говорил, что он видит странные вещи повсюду, и моя команда и я отвергаем это, говоря, что мы этого не делаем. Ну, я думаю, проблема в том, что мы привыкли к множеству визуальных откликов за годы игр, и он не геймер, поэтому для него это нежелательно, но для нас это просто очередная вспышка информации.

Здесьпример одной из наших последовательностей уровней:

Пример последовательности уровней

Последовательность уровней имеет событие EndScene ближе к концу. Это выбранный на скриншоте. Следующая диаграмма объясняет ход событий.

Диаграмма деятельности

К вашему сведению, я унаследовал большую часть этого кода от предыдущего ведущего разработчика, когда я взял на себя управление проектомнесколько месяцев назад. Я могу говорить о том, что происходит, но не всегда о том, почему это происходит таким образом. На данный момент, мы приближаемся к нашей запланированной альфа-фазе, и серьезной переделки нет в картах. Мы начинающий с ограниченным финансированием, поэтому мы застряли с существующей архитектурой. Вполне возможно, что все в порядке, но я просто хотел добавить этот отказ от ответственности для информационных целей.

Вот пример того, как BP уровня ожидает событие и вызывает контроллер SR:

Пример уровня проекта

Вот сцена конца контроллера SR, начинающая следующую последовательность:

SRController EndScene Обработка событий

И это контроллер сцены, фактически определяющий следующую последовательность для загрузки и запускающий ее:

SceneController, запускающий следующую LevelSequence

Я предполагаю, что происходитобработка событий асинхронна, и движок возвращает управление игроку, поэтому переключает окно просмотра обратно на камеру третьего лица, в то время как контроллер уровня BP / SR обрабатывает событие и ставит в очередь следующую последовательность. Есть ли способ сделать это лучше?

Некоторые мысли, которые у меня были:

Могу ли я помешать камере переключиться обратно на камеру от третьего лица, если я явно не попросил об этом? Было бы лучше, если бы игра оставляла камеру «Последовательность уровней» до тех пор, пока не загрузится следующая последовательность.

Могу ли я добавить затемнение или что-то в область просмотра? По сути, создающий эффект постепенного исчезновения? Это должно сохраняться на всех камерах в течение этого переходного периода.

Я открыт для любых предложений на данный момент. Я действительно ценю любой вклад, который кто-либо имеет для этого.

Большое спасибо! Fitz

...