Как стать автором
Обновить

Имитация трёхмерных зданий в 2D-игре

Уровень сложности Средний
Время на прочтение 7 мин
Количество просмотров 15K
Всего голосов 67: ↑67 и ↓0 +67
Комментарии 16

Комментарии 16

Очень здорово, что вы добавляете такие детали в игру, класс!

У меня такой вопрос, а зачем вот этот шаг вначале с представлением примитивами (кубами, цилиндрами)? Мне кажется просто же можно использовать локальные координаты позиций вершин и какой-то uniform параметр высоты основания, или пересчитать все локальные координаты, чтобы локальный (0,0,0) был в основании. И никакие примитивы делать не нужно... Или я что-то упускаю?

Еще рекомендую технику: Horizon Mapping, описана в книге Эрика Ленгьеля еще богаче может картинку сделать (в книге FGED2):
Horizon Mapping

  • 7.8.1 Horizon Map Construction

  • 7.8.2 Rendering with Horizon Maps

upd: я понял - игра то 2D

Спасибо!

Да, игра в 2D, поэтому особо много информации из спрайтов не вытащишь, приходится изощряться.

Скоро будет продолжение про другие эффекты, которые я успел сделать для проекта.

Но ведь можно положить информацию о высотах в спрайт в момент его создания, тогда не нужны будут нейросети для высасывания из пальспрайта.

Жду вашу игру! Во многом потому, что сам делаю стратегию в гамаке. Ну как, только хочу начать, лол. Но очень интересно, как вы всё это размутите!

Спасибо)

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

Обновление 2.3+ улучшило синтаксис gml и позволило строить сложные архитектуры (но пришлось переписать половину проекта), но до идеального 2д движка ещё далеко.

Если не пользуйтесь GMEdit, то мой второй непрошенный совет - попробуйте. Это лучше, чем стандартная IDE гейммейкера. Типизация делает чудеса на сложных проектах.

Спасибо за советы! Да, конечно, я никогда и не думал делать что-нибудь сложное. Тем более, что я работаю один.

А вы добавляете поддержку геймпада в игру? Вообще, планируете выходить на консоли?

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

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

Насчёт 3d модели - все верно, так и есть. 2д накладывает очень много ограничений и требований к дополнительным телодвижениям. Но фарш уже не повернуть назад и нужно работать с тем, что есть и нужно сделать красиво!

Хотелось бы увидеть похожую анимацию, но в более сложной сцене. Если поставить рядом 2 здания, деревья и ещё что-то, то как свет и тени будут взаимодействовать между собой? Нет ли там какой-то неришаемой проблемы?

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

давным давно было шикарное демо на эту тему, 13 лет назад, черт возьми.

Игра со светом интересная, а вот с тенями тут не сложилось, насколько я вижу. Есть только базовое затенение земли, движения тени в зависимости от источника света я не заметил.

Автор как раз работает с тенью, но интересно было бы посмотреть как она взаимодействует с другими объектами.

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

Спасибо за объяснение. Жаль, конечно. В тайне надеялся, что какая-то хитрость есть.

Получается, что тень падает только на землю, верно? Левел дизайнерам надо по возможности избегать болших объектов побоизости? Иначе могут быть ситуации, когда, например, часть здания ярко освещена, хотя явно должа быть в тени.

Статья в принципе заебись. В золотой пантеон Хабра хоть записывай. Смущает одна цитата:

Для ручного или полу-автоматического (с ожидаемым средне-плохим результатом) создания карт нормалей из 2D изображений существует какое-то количество софта. 

Что это за пренебрежительное отношение к ручной кисти? В этом же весь художественный аспект видеоигр.

Во многом именно таких мелочей не хватает современным видеоиграм.

Гонятся за реализмом, конечно, весело. Но всё таки вещи натуральными делают их несовершенства, которые показывают, что у них есть какая-то история. Собственно за такой аспект даже полюбил дизайн в The Room / The Room 2. Да и многие культовые игры, больше делали акцент на таких вещах.

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

Часть цитаты "с ожидаемым средне-плохим результатом " относится именно к полу-автоматическим методам генерирования нормалей, к ручной кисти вопросов нет.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории