Всем привет!
Завершил я работу над конкурсным проектом (на Гаминатор 27 на сайте Gamin.me) и хотел бы показать его и немного рассказать о разработке.
Поиграть можно найти тут: https://e1e5en.itch.io/go-back.
Это не первый мой проект с использованием трёх измерений, хотя 2D больше. Но раньше я его использовал в качестве отображения, а не "применения". Например, в игре СлИБ, я создавал модели в Asset Forge, потом экспортировал в формате изображения и получал пререндеренные модели.
А в игре "Погоня за Землёй" уже было полноценное 3D, в котором пространство было лишь "картинкой".
В текущей игре же игре всё построено на трех измерениях. Самое сложное для меня это создание графики для игры. Чем проще, тем лучше. Поэтому минимализм очень помогает. И вот появился Куб.
О графике
Игр, где используется эта незамысловатая фигура много. Поэтому оставлять его таким "простым" не хочется. Но сначала нужно ответить на вопрос: Куб, а ты кто?
От этого может зависеть дальнейшая разработка. И он похож на пиксель. Героя игры со старых консолей, который попал в другой мир! Если оставить Куб в первоначальном виде, то он будет выглядеть как посторонний, но это не совсем то. Хочется, чтобы объект вписывался в окружающую обстановку и, при этом, был инородным. И появилась идея "стилизации". Надо создать некий рельеф/текстуру на гранях, и так, чтобы можно было легко применить эффект ко всем объектам окружения. Если всё будет в одном стиле и приближено к реальным объектам, то белый куб будет выделяться.
Появилась идея добавления на нашего персонажа "видимость полигонов", как бы обновление, расширение графики. Я нашёл простой способ, в котором нам необходимо 4 операции из Blender'а.
1. Операция Subdivide.
2. Модификатор Bevel.
3. Модификатор Triangulate.
4. Модификатор Displace.
Вот так и получили главного героя. К остальным объектам (готовым моделям) применяем необходимые из этих 4 операций.
Blender для меня был инструментом для подготовки объекта (сетки), все материалы я настраивал в движке непосредственно. Вот такой мой путь абсолютного новичка к некому стилю. Наверное, это можно назвать низкополигональные модели, но я наоборот добавляю их, так что не знаю.
Есть, конечно, ещё способы формирования "рельефа" на объекте за счёт материалов (dump), карты нормалей, но я выбрал этот как более быстрый и простой для меня на данный момент.
Об игровой механике
Сам куб мне и подсказал игровую механику. Мне вспомнился Кубик Рубика, с его вращениями. Так почему бы не применить это для уровней, в ограниченном виде. Менять окружения для меня всегда интересно, да ещё если и двигаться по всей площади объекта.
Получив идею игры, я размышлял как должен двигаться персонаж. Можно было бы сделать просто скольжение и прыжки, как в 3D-платформере (например, в игре Captain Toad: Treasure Tracker). Но это "нереалистично для куба". Так же появились бы проблемы с расположением персонажа при вращении, чтобы его "не закусило".
Выбор пал на движение по клеткам и, конечно, поворотами. Сделать это не сложно, если кому-то лень придумывать самому, то можно воспользоваться уроками. При изучении движка Godot Engine, я находил эти уроки. И сейчас просто вспомнил про них:
Конечно, это лишь вариант для старта и его недостаточно для движения по всем плоскостям.
Когда наступил момент тестировать всех механик, то я залип при этом. Создав ранее тестовое окружение, я на кнопки клавиатуры привязал операции поворота частей уровня по осям и просто начал бегать. Меня затянуло, я больше часа просто игрался с этим.
Уровни
В тоже время, я начал понимать, что большие уровни делать не только сложно разработчику, но и сложно в них будет играть. Потому что при вращении нужно учитывать и представлять расположение многих объектов. А плюс к этому постоянные провалы "в ямы", откуда нельзя будет выбраться, приведёт игрока в ужас "проб и перезапусков". Возможно, в далёкой перспективе, при развитии это бы не составило проблем, но не в начале. В итоге, сформировались требования:
- уровни делать маленькими;
- вращений нужно делать в меру;
- проектировать уровни "без ям".
Я старался придерживаться этих правил. Хотя в начальных уровнях я специально нарушил и получилось место, куда можно упасть и не выбраться. Но для этого есть кнопка в меню, чтобы обучить игрока.
Уровней получилось немного, но их тестирование занимает время: при каждом повороте я бегал по уровню искал "ямы". Надеюсь, я поправил их все. Перезапускать уровни в таких играх мне не нравится, лучше если игрок может исправить или вернуть без этого.
В заключении
Приглашаю поиграть в мою небольшую игру.
Ссылка: https://e1e5en.itch.io/go-back
Всем спасибо! Удачи! =)