Мы разработали движок и теперь делаем свою первую игру. Нам нужно ваше мнение. Часть 2
Теперь мне бы хотелось сделать акцент на самом движке - двух основных его "фишках". Сразу сделаю объявление: я не буду спорить с тем, что функционал, описанный тут, можно так или иначе реализовать на Unity/Unreal Engine/Game Maker/rpg maker(нет). Просто в один прекрасный день я проснулся и понял, что хочется пощупать OpenGL и заиметь стимул прокачать линейную алгебру. И все заверте...в общем, поехали!
1. Воксельный движок.
Все же знают, что такое воксели, правильно? Вот эти вот кубики из майнкрафта:
А ещё, согласно википедии это volumetric pixel - то есть, это фактически просто некоторая "ячейка" пространства. А вот чем именно её можно заполнить - ограничено только вашим воображением :)
Т.е. программист может обратится к любой ячейке пространства и сделать то, что нужно в данный момент:
Так же можно иметь объекты, состоящие из нескольких "кусков", чтобы иметь, например, частичную разрушаемость:
Совсем необязательно при этом делать предметы состоящие из таких воксельных "кусков" квадратными! Такой подход имеет логическое продолжение в виде использования мешей вместо спрайтов, и в общем-то внешний вид мира ограничен только навыками художника - любую геометрию можно "интерполировать" в кубики любого размера :D
Для честности повествования следует упомянуть более сложные версии "терраформинга", так же так же интерполирующие геометрию из простой в сложную и наоборот - например, marching cubes или хз-как-назвать симуляцию жидкости. Если дело пойдёт, хотелось бы сделать и их нативную поддержку :)
Лачуга на видео из предыдущей статьи вообще-то является "многовоксельным" объектом и очень успешно разбирается на составляющие.
2. Освещение двумерных тайлов.
Наивно предположив, что имея скромные ресурсы в виде двух (даже без половины) рудокопов, в самом начале мы решили делать двумерную игру - она в последствии переехала в трёхмерное пространство, но плоские спрайты остались. Поэтому было решено придать плоскому внешнему виду немного ощущения глубины, используя игру теней.
Вот красивая версия (в конце видео я двигаю тени от "глобально источника" так что они тоже не статичные, если что):
...и функциональная версия, где лучше видно, как именно свет может взаимодействовать со спрайтами:
...и ещё один прикольный эффект, полученный случайно :D (если что, это shadow acne)
Собственно, на этом у меня всё! Я уверен, тут найдутся адепты известных движков, и вопрос к ним - на сколько сложно было бы сделать вышеописанное на знакомом вам движке? Как именно вы бы это сделали?
Так же зацените игру в магазине - это будущий битэм-ап:
Всем добра :D