Портирование системы частиц Aurora, ч.1 - ретроспектива
Поскольку речь пойдет о событиях более чем двадцатилетней давности, неплохо бы ознакомить читателей с действующими лицами, общим состоянием любительского геймдева на тот момент, а так же основными инструментами.
Надеюсь, никому не надо объяснять что такое Half-Life, Counter-Strike и GoldSource? Скажу лишь, что система подключения модификаций к играм, придуманная в своё время Джоном Кармаком ещё для первого Quake, оставалась стандартом довольно долгое время, а поскольку примерно до 2007-го года (времён выхода Кризиса и Сталкера) каждый игровой FPS движок так или иначе испытывал на себе влияние Quake и частично воплощал идеи Кармака (или же был прямым форком от продуктов Id Software - даже Unreal не был исключением!), то и механизм этот использовался довольно часто.
Об этом стоит рассказать поподробнее.
Довольно долгое время специализированных игровых движков не было вовсе. Но после выхода первого Doom, где уже появились зачатки возможностей модификации, наметилась тенденция к тому, чтобы лицензировать успешные коммерческие движки, вносить в них некоторые исправления (обычно в плане добавления новых эффектов) и выпускать на них собственные игры.
Основным поставщиком таких движков выступала Id Software (не забывающая выпускать и собственные игры), а немного погодя и Epic Mega Games (тогда ещё Mega), поскольку Суини очень хотел "догнать и перегнать" Кармака на этом поприще. Нет, разумеется, были и какие-то сторонние движки, типа Genesis или Torque, но студии всё же предпочитали связываться с проверенными в деле продуктами.
Так вот, поскольку этот процесс набирал обороты, вполне естественным было вводить в игровые движки элементы, позволяющие отвязать ядро от родительской игры и заменить все ресурсы, игровой код, механики геймплея - так, чтобы на одном и том же движке можно было создавать игры разных жанров. В Quake, как вы знаете, это вполне удалось - каких только игр на нём не делали: и аркады и гонки и шахматы и даже тетрис (ну правда не на ванильной версии).
Сам механизм подмены ресурсов на тот момент был довольно прост и примитивен:
- есть родительская папка, которая движок считает базовой. По умолчанию все ресурсы грузятся оттуда
- есть дополнительная папка, которую указывает пользователь через ключ командной строки -game <folder>.
- Всё что движок пытается загрузить, сперва ищется в пользовательской папке, а затем в родительской.
Конечно, лицензиат движка (а после открытия исходников - любой энтузиаст), мог поменять имя родительской папки прямо в коде, если бы ему это понадобилось. Ну а пока исходники были закрыты, никто не запрещал обычным игрокам пробовать себя в новом непривычном деле - построении уровней из конвексных примитивов. Внезапно оказалось, что это хороший способ обучения разработке.
Поясню на конкретном примере.
Когда вы пытаетесь сделать в наше время игру на движке, не имеющем родительской игры, но созданном специально для создания игр произвольного жанра, то в лучшем случае вы увидите несколько базовых примеров, сможете пройти какие-то курсы, обучающие использованию возможностей движка, накачать платных и бесплатных ассетов, но ничто из этого не приблизит вас к пониманию, а как же собственно делается игра.
И наоборот - в те времена вы могли начинать с создания уровней, используя стандартные ресурсы родительской игры. Понятное дело, что вы не могли сразу взять и сделать игру в любом жанре, но на начальных этапах обучения это всё равно ведь и не нужно.
Научившись делать уровни, у вас наверняка возникала мысль, что неплохо бы разнообразить их собственными текстурами/звуками/моделями. Потом хотелось сделать собственных NPC, для чего требовалось изучать базовые принципы моделирования и знакомиться с языком программирования QuakeC.
На каждом этапе вы имели работающую игру с небольшими изменениями, сделанными лично вами. Если приводить аналогии, то это можно сравнить с домом, который вы понемногу перестраивали под себя, а современными движки - с домом, от которого есть только фундамент, а всё остальное надо строить самостоятельно.
Я не буду вдаваться в рассуждения какой подход лучше, т.к. это тема для отдельной заметки. Но теперь, благодаря столь длинному вступлению, вам станет понятно, что же такое Sprit Of Half-Life. Это модификация для GoldSource, содержащая в себе только игровой код, значительно расширяющий возможности разработчика без необходимости программировать.
Надо заметить, что аналогичных тулкитов для первого Quake, я как-то не припоминаю. Обычно при создании очередного мода/игры, разработчики добавляли новые фишки, а другие разработчики просто брали библиотеки от этой игры в свою. Разумеется всё это было на некоммерческой основе - чисто любительская возня, как минимум на втором уровне (т.е. когда выходил к примеру очередной мод для Quake, который мог быть и платным, а уже его библиотеки использовали обычные пользователи в своих модах), но с потенциальной возможностью перейти и в настоящий геймдев.
В конце девяностых и начале нулевых, как вы знаете, очень многие левел-дизайнеры начинали свой путь с создания карт под Quake или Counter-Strike. Но такой путь был возможен и для разработчиков тулкитов.
Так, к примеру, Laurie Cheers - создатель Spirit Of Half-Life - впоследствии устроился на работу в Rare, ту самую легендарную компанию, которая подарила нам культовую Donkey Kong Country на Super Nintendo. Кстати не так давно, он давал интервью создателю Half-Quake.
Надеюсь я достаточно погрузил вас в атмосферу тех лет, теперь можно поподробнее рассказать о возможностях Spirit, какое влияние он оказал на разработку модов для Half-Life и какое отношение к этому имею лично я.