Мега Человек в стиле прокрутки экрана дизайн

25

Классическая серия NES Mega Man использует очень специфическую технику прокрутки, которую я с трудом решаю реализовать. По сути, уровень делится на «экраны», которые имеют одинаковый размер. Некоторые экраны плавно переходят друг в друга, создавая иллюзию более широких игровых полей. Некоторые экраны не позволяют камере прокручиваться до тех пор, пока проигрыватель не достигнет края экрана, после чего происходит переход и отображается следующий экран. Для одного экрана также возможно иметь более одного перехода, например, у него есть лестница, которая поднимается на один экран, но вы также можете перейти к другому экрану.

Как можно смоделировать эти переходы экрана?

Mega Man диаграмма перехода экрана

  • Экран 0 - это стартовый экран, с которого начинается плеер.
  • Экран 0-3 имеет горизонтальную плавную прокрутку и представляется игроку как одно непрерывное игровое поле.
  • Поскольку происходит переход между Экраном 3 и соседними экранами 4 и 5, камера не продвинется выше правого или верхнего края Экрана 3, если игрок не переместится к этому соответствующему краю и не «продвинется» к следующему экрану.
  • Когда игрок перемещается к одному из краев перехода, пользовательский ввод на мгновение отключается, и камера переходит в новую область, после чего пользовательский ввод восстанавливается.

  • Синий экран (Экран 5) отключил горизонтальную прокрутку, поэтому возможны только вертикальные переходы.

  • Зеленый экран (Экран 6) имеет вертикальный переход обратно к Экрану 5, но также обеспечивает горизонтальную плавную прокрутку на Экран 7.

Редактировать : Реализация переходов с точки зрения комнат приводит меня к этому:

Схема реализации структуры помещения

Маленькие выемки со стрелкой - это области, в которых может происходить переход. Каждый регион имеет «направление» и ложь только вне видимой области комнаты. Как только игрок попадет в регион, начнется переход.

Зак Человек
источник
1
такое поведение также присутствует в 2D-играх серии Metroid.
Спарр
Да, это по сути то же самое. Разница в том, что IIRC Metroid допускал вертикальную плавную прокрутку в некоторых комнатах / шахтах, тогда как у Mega Man никогда не было вертикальной плавной прокрутки; всегда был переход.
Зак Человек
Я слышал, что это называется «просмотр фильма».
Блецки

Ответы:

21

Звучит так, как будто вам нужна концепция комнат, а не экранов . Экраны 1-3 - это одна комната, например, ваши комнаты могут быть любого размера и формы или даже ограничены размером, кратным размеру экрана .

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

В каждой комнате будет набор точек доступа, которые сопоставляются с точками доступа другой комнаты - создавая точки перехода.

TreDubZedd
источник
Спасибо за предложение. Это то, что я изначально хотел сделать, но я наткнулся на умственный барьер, пытаясь справиться с переходами. Скажем, например, есть длинная комната с входом сверху на левом конце комнаты и выходом наверху правого конца. Я полагаю, что для решения этой проблемы необходимо определить небольшие регионы, которые могут вызвать переход, а?
Зак Человек
Чуть дальше: концепция «комнаты» - это то, что у меня есть в моей игре. Комнаты могут быть произвольного размера, но я еще не определил, как переходить из комнаты в комнату.
Зак Человек
1
@Zack: камера следует за игроком. Границы камеры никогда не должны перекрывать комнату за пределами той, в которой находится игрок (т.е. если правый край области просмотра находится напротив правого края этой комнаты, камера не может двигаться вправо). Если Игрок проходит сквозь стену комнаты в соседнюю комнату, проследите, чтобы Камера быстро отслеживалась до тех пор, пока она не окажется в безопасности в новой Комнате (для этого движения вам нужно беспокоиться только о том, чтобы вверх / вниз / влево / вправо в вашей структуре). По желанию, если игрок подходит к стене комнаты, возьмите автоматическое управление и заставьте его идти вперед, чтобы полностью оказаться внутри новой комнаты.
doppelgreener
1
@Zack: ваш вопрос редактирования, кажется, соотносится с тем, что я думал. Позиция игрока может перемещаться из заданной комнаты только в этих переходных положениях (между y1 и y2 на вертикальной стене или x1 и x2 на горизонтальной стене), и как только это происходит, вы размещаете свою позицию в следующей комнате. - таким образом, избегая петли «назад и вперед» - и выполняйте визуальный переход.
TreDubZedd
1
Вы также можете рассмотреть «границу» вокруг каждой комнаты, которая обычно является неиграемой областью (за исключением переходных областей). Вы можете графически оформить свои комнаты так, чтобы неиграбельная граница всегда содержала «настенную» графику, но переходные области оставались открытыми, как и остальная часть комнаты. Вы можете подделать переходное «перекрытие», подождав, пока игрок полностью перейдет границу (воспроизводимую), и в следующей комнате убедитесь, что новая позиция вообще не пересекает границу.
TreDubZedd
-8

Концепция больших областей плавной прокрутки, состоящих из блоков размером с экран, является артефактом серьезных ограничений ресурсов на классических консолях, где повышение производительности может быть достигнуто за счет хранения данных в блоках определенного размера (например, одной странице памяти). Существует очень мало причин использовать такую ​​систему в современной игре.

Sparr
источник
7
Я понимаю, что первоначальные разработчики должны были реализовать прокрутку таким образом, чтобы загружать плитки, спрайты и т. Д. Мне не нужно реализовывать систему на основе экрана, описанную в моем вопросе, что мне действительно нужно, так это эмулировать камеру и или прокрутка движения.
Зак Человек
4
-1 - Разделение игровой зоны на прерывистые куски может больше не иметь значения для загрузки, но это все равно создает определенное чувство места для игроков и помогает им мысленно отобразить область.
@ Джо, как это относится к моему ответу? Я специально и прямо обращаюсь к блокам размером с несколько экранов. Я ничего не сказал о том, что куски прерывистые или нет.
Спарр
Я хотел, чтобы вы знали, что я не понизил ваш ответ, но я не думаю, что он отвечает на мой вопрос: «Как можно смоделировать эти переходы экрана?».
Зак Человек
@ Зак спасибо. если он станет слишком отрицательным, я его удалю, но если он останется на уровне -3, я оставлю его, так как считаю, что это уместно, даже если это не прямой ответ
Sparr