uQuake1 evolution

Случайно наткнулся тут на собственный блог. Полистал, почитал. Вздохнул с ноткой какой-то безысходности )).


Два года прошло, как я перевелся в ОИКТ и стал официально программистом. Жизнь здесь размеренная, спокойная. Обратная сторона этому - гиподинамия, ухудшение памяти из-за тонн информационного хлама, который надо фильтровать, время летит просто с сумасшедшей скоростью! За два года я переписал десятки тысяч строк кода (если не сотни тысяч), модифицировал несколько программ, несколько переписал с нуля. Творчество перестало быть таковым, когда НУЖНО писать.
Так или иначе, но я не забросил свой проект Marco : Long Road Out of Hell. Были трудности из-за завалов на работе, из-за разочарования выбранным движком. Несколько раз я пытался сменить движок - то Leadwerks (даже купил две лицензии по акции - себе и подельнику Agd Mfg), то 3D Game Studio A8, то WorldSim3D, который является по сути враппером Иррлихт на Basic, то варианты в Lazarus. В ходе программирования на WorldSim3D я открыл для себя новые понятия в 3д-программировании, реализовал 3д-звук с помощью OpenAL, поиск пути по вейпоинтам, вкурил технологию bump mapping. Но в целом 2015 год просто выпал из разработки - я метался от движка к движку, от игры к игре (отвлекался на старые и новые проекты). А когда я увидел в конце года, что УЖЕ реализовано на Unity, то понял, что это фигня какая-то и нужно заканчивать эти метания и заканчивать проект! К этому времени уже вышел Unity 5.x, в котором в Free версии стали открыты технологии куллинга, пост-шейдеров и значительно улучшено быстродействие. И понеслась! Сначала мы продолжили в старой манере, но затем решили произвести рестайлинг - уйти в темную, мрачную атмосферу с активным использованием бамп- параллакс маппинга и динамических теней. Короче вдохновились Doom 3, как бы его не кляли некоторые товарищи.
Я добавил множество фич в игру, исправил старые ошибки, оптимизировал код, т.к. имею теперь большее представление о мире 3D (хотя уверен, что я ещё сопляк в этом). Мой подельник тоже заметно вкачался в моделировании и принялся переделывать модели персонажей. По-моему его работы выглядят очень круто. Я попробовал себя в роли левел-дизайнера, используя инструмент ProBuilder, но во-первых это пиратство ((, а во-вторых инструмент не успевает за обновлениями Unity и постоянно падает. И у меня то ли фантазии не хватает, то ли усидчивости, но карты получаются не ахти, судя по отзывам на форумах мапперов. Я стал искать подельника и это оказалось капец как сложно! То ли проект не интересен народу, то ли ленивые все стали, то ли бабло им подавай. На данный момент вызвался помочь мой старый приятель, одноклассник, с которым так или иначе я тесно общаюсь, хотя сейчас всё реже. Когда-то давно он активно участвовал в моих поделках, как генератор идей или как актер озвучки :D Посмотрим, что из этого выйдет.
Левел-дизайн в Unity осложняется так же тем, что в нём НЕТ редактора карт, есть редактор сцен, где вы расставляете префабы, а это дерьмо собачье. Я нашёл способ обойти это - использовать BSP-карты из Quake3, конвертировать их в FBX и уже эту модель импортировать в Unity. Но этот способ имеет один главный недостаток - модель режется и вся информация о сущностях теряется:


На данный момент я уже модифицировал код uQuake1, внеся серьезные поправки:
- сбор фейсов в модель, как в исходном BSP-файле(в оригинальном uQuake1 фейсы создаются пачкой без разделения, что вообще не даёт возможности нормально работать с триггерами и сущностями - картинка). При настройке Combine Meshes на родителя навешивается полный сборный меш с коллайдером;
- небо удаляется совсем при настройке SkipSky (в оригинале просто отключается рендер);
- триггеры становятся триггерами Unity;
- имена моделей и триггеров на манер Quake1 (не совсем уверен в правильности имён, но по списку ентитей они такие);
- вывод списка ентитей;
- материалы с шейдером Standard (если без опции Lightmaps Enabled);
- загрузка параметров сущностей (реализованы ключи: class_name, angle, spawnflags, origin, но по аналогии можно добавить все);
- расстановка сущностей на карте (реализованы light, info_player_start, item_health, но по аналогии можно добавить все).
Об этом в видео:


Результат мне понравился - карта грузится вместе с ентитями, а фейсы объединяются в родительском объекте, что позволяет ими манипулировать. Теперь время сотворить на базе получившегося и кода uQuake3 подобное, но с картами Quake3, потому что в формате этих карт, кроме обычных примитивов - "брашей" есть также кривые плоскости Безье или "патчи". А для создания карт под эту игру (и её производные) есть куча удобных редакторов. Лично мне по душе Jackhammer. О том, что у меня получится я постараюсь отписаться для истории здесь. Если не забуду...

Ну а проект uQuake1 evolution можете скачать здесь - ТЫЦ!

Комментарии