Голливуд отдыхает! Редактор MaxEd (Max Payne)
Max Payne — игра замечательная, но уж очень короткая. Если вы истинный поклонник “Макса”, то игра скорее всего пройдена многократно… И продолжения банкета в ближайшем будущем не ожидается. А так хотелось бы. Впрочем, нет ничего нереального. Можно играть, играть, играть и еще раз играть в одиночные уровни, пока не выйдет продолжение. А разве не тот уровень лучший, который сделан собственными руками? Основы основ Первым делом вставьте компакт с игрой и установите с него пакет утилит под названием Max-FX Tools , в который входит и нужный нам редактор уровней MaxEd (удобнее всего сделать это с помощью автозапуска, выбрав пункт меню Tools). Прежде всего стоит отметить, что MaxEd удобен в обращении и в то же время обладает обширным списком возможностей. Все это в совокупности делает его хорошим редактором, не лишенным своих недостатков, конечно. Нельзя также не сказать про то, что редактор, как, собственно, и сама игра, очень требователен к железу. Оптимальные системные требования для работы с ним таковы: быстрый процессор, работающий на тактовой частоте не менее 800 MHz, 256 мегабайт оперативной памяти для создания небольших уровней, 384 и более — для работы с большими картами. Не отчаивайтесь, если ваш компьютер немного не дотягивает до рекомендованных системных требований: в этом случае при создании и редактировании больших уровней редактор будет нередко подтормаживать, но работать будет исправно. А вот для создания небольших уровней вполне сойдет даже средний по нынешним меркам компьютер. Интерфейс Начнем с того, что ознакомимся с интерфейсом программы, экран которой можно условно разбить на три составляющих. **__**Большую часть экрана занимает окно
Интерфейс программы. 1 — основное окно, 2 — панель объектов, 3 — панель текстур.
с полем (основное окно), где отображается структура редактируемого уровня (для удобства поле разбито на клетки). В левом верхнем углу программы находится панель объектов. Основным объектом считается игровой мир ( World group ). Когда вы создаете комнату (или любой другой объект), она автоматически становится дочерним объектом всего игрового мира. При создании в этой комнате, скажем, двери вы должны сделать последнюю дочерним объектом первой (как это сделать, рассказано ниже). Чтобы осмотреть любой игровой объект на наличие “детей”, просто щелкните на кнопочку с плюсом, изображенную рядом с ним на панели объектов. Если вам нужно выбрать какой-либо объект из вашего уровня (например, дверь) и проделать над ним какие-либо операции, найдите его в общем списке, пользуясь панелью объектов, и, наведя на него курсор мыши, нажмите на ее правую кнопку. Делайте с этим объектом все, что только можно при помощи местных команд. Kill — удаление выбранного объекта вместе с его “детьми”, Remove, Save children — удаление объекта без его “детей”, Remove children — удаление его дочерних объектов, Hidden — сделать объект невидимым для нас (или попросту скрыть), чтобы он не мешался (если вы хотите снова сделать его видимым, воспользуйтесь этой командой еще раз), Hide children — скрыть “детей” данного объекта, Unhide children — показать дочерние объекты (эта команда является обратной по отношению к предыдущей), Properties — просмотр и редактирование свойств и характеристик объекта. Под панелью объектов располагается панель текстур, которая состоит из диалогового окна, где вы можете выбрать нужную вам группу текстур (если, конечно, вы уже создали или экспортировали в ваш уровень хоть одну такую группу; о том, как это делается, читайте ниже), и небольшого окошка серого цвета, которое располагается чуть ниже. В нем отображается содержимое выбранной группы текстур. Управление Во время использования MaxEd вам часто придется переходить из одного режима работы редактора в другой (осуществляется это при помощи выбора пунктов менюшки Mode или нажатия на соответствующие горячие клавиши), так как в каждом из них вы можете совершать различные действия и пользоваться разными командами. Раз уж заговорил про горячие клавиши, то отмечу, что они играют здесь очень важную роль. Старайтесь привыкнуть к использованию горячих клавиш, связанных с наиболее важными командами (особенно удобно с помощью горячих клавиш переключаться между режимами работы MaxEd): это значительно ускорит и упростит общение с редактором. С помощью пункта меню Mode/Wireframe или посредством нажатия на клавишу F2 вы можете переключаться между режимами просмотра уровня (прежде чем переключаться между режимами, щелкните на основное окно программы). Основной режим просмотра карты (или, как его тут называют, Wireframe ) отображает ваш уровень без учета текстур и различных украшений типа освещения. Что касается второго режима, то он в этом плане является полной противоположностью первого. Так что используйте его, когда хотите узнать, как будет выглядеть уровень в игре. Стоит отметить, что при активизации второго режима для больших уровней скорость работы редактора значительно падает. Теперь поговорим о режимах работы редактора, коих насчитывается аж семь штук. Move Перемещение по карте осуществляется в режиме Move (для его активизации выберите пункт меню Mode/Move или используйте клавишу Пробел ) с помощью мыши. Зажав левую кнопку мыши, вы, двигая ее курсор, можете крутить камеру в разные стороны, а зажав правую и двигая курсор вверх/вниз, можете приближать/удалять изображение. Model Наряду с режимом Move существует и масса других, первый из которых — Model ( F3 ) — используется для рисования различных фигур. Эти фигуры затем с помощью режима Extrude можно превратить в разнообразные объекты (в частности, большой прямоугольник можно превратить в комнату). Рисуется любая фигура путем последовательного указания всех ее вершин. Чтобы создать вершину, щелкайте левой кнопкой мыши на место, где вы хотели бы ее установить. Когда фигура будет готова, просто нажмите на правую кнопку мыши. Если вы задались целью разместить на вашей карте какой-либо предмет, вещь, врага и т.п., вам на помощь придет все тот же режим Model. Чтобы осуществить задуманное, установите курсор на нужное место и нажмите на клавишу N , после чего на экране появится диалоговое окошко, именуемое New entity. В нем вы должны выбрать нужный вам пункт (в зависимости от того, что вы хотите установить) и в следующем окне указать значения для общих свойств и характеристик объекта. Создав последний, обязательно сделайте его дочерним объектом комнаты, где он лежит, с помощью режима Transform. Extrude Режим Extrude ( F4 ) создан для растяжения фигур (то есть для увеличения их высоты и превращения в полноценные трехмерные объекты), созданных в режиме Model. Чтобы увеличить высоту любой фигуры, щелкните левой кнопкой мыши на ее центр и, не отпуская кнопки, ведите курсор мыши вверх до нужной высоты. Если вы хотите уменьшить высоту объекта, делайте все то же самое, за исключением того, что курсор следует вести вниз, а не вверх. Если же вам нужно, скажем, укоротить созданную вами комнату (то есть уменьшить ее длину), выделите одну из ее стен с помощью левой кнопки мыши и передвигайте курсор влево/вправо. Чтобы наклонить любую стену, щелкните на нее правой кнопкой мыши и двигайте курсор вверх/вниз. Transform С помощью режима Transform ( F5 ) можно перетащить с одного места на другое любой созданный вами объект (или любого субъекта), щелкая при этом на него левой кнопкой мыши, если вам нужно передвинуть его влево/вправо, или правой — если вверх/вниз. Находясь в данном режиме, вы можете также сделать любой объект дочерним по отношению к другому. Для этого подведите камеру поближе к объекту, который вы хотите сделать дочерним, и выделите его, щелкнув на нем левой кнопкой мыши. Далее выберите пункт меню Mode commands/Grouping/Group selected ( G ) и щелкните все той же левой кнопкой мыши на объект (если это комната, щелкните на одну из ее стен), который по вашему замыслу должен быть “родителем” выделенного. Texture Режим Texture ( F6 ) предоставляет вам услуги по текстурированию любой поверхности. Прежде чем приниматься за текстурирование, посетите меню Material и ознакомьтесь с его пунктами. Первый из них — Add Category — позволяет вам создать новую группу (или категорию, кому как больше нравится) текстур, куда затем вы можете добавлять сами текстуры. Второй и третий пункты, а именно — Remove category и Edit category name , созданы соответственно для удаления и переименования выбранной группы текстур. С помощью пункта меню Merge category into… можно объединить друг с другом две категории текстур. Что же касается пункта Purge unused materials , то его задача — удалять из файла вашего уровня все текстуры, которые в нем имеются, но при этом никак не задействованы. Пункт Insert materials from file… используется в том случае, если вам нужно вставить в вашу карту текстуры из файла другого уровня. Наконец, последний пункт — Insert bitmaps… — предоставляет вам возможность обогащать ваш уровень текстурами собственного производства. Перед тем как накладывать текстуру на любой объект, добавьте в файл вашего уровня ряд текстур с помощью команды Insert materials from file… или Insert bitmap… чтобы было чем текстурировать. В качестве источника текстур рекомендую использовать файл BasicRoom.lvl , находящийся в подкаталоге \Examples директории, куда был установлен MaxEd. Чтобы что-нибудь затекстурировать, вам нужно при помощи панели текстур выбрать подходящую текстуру и щелкнуть левой кнопкой мыши на нужную поверхность. Exit creation Exit creation ( F7 ) является, пожалуй, наиболее редко используемым режимом. Создан он специально для того, чтобы вы могли установить невидимые для игрока, но видимые для игры выходы между комнатами. Их задача — не допустить существенного спада скорости игры при переходе из одной области уровня в другую. Впрочем, такие выходы имеет реальный смысл создавать только на действительно больших картах, посему вас на первых порах этот режим интересовать не будет. Move grid Последний режим, именуемый Move grid ( F12 ), используется для перемещения поля, на котором располагаются все объекты вашего уровня. Так же, как и предыдущий режим, Move grid вам поначалу особенно не понадобится. Первая карта Для начала создадим простейший уровень, представляющий собой пустую небольшую комнату, дабы вы смогли получше ознакомиться с основными функциями и командами редактора и научиться как следует ими пользоваться. Для этого вам нужно переключиться в режим Model и нарисовать большой прямоугольник (или параллелограмм), который задаст форму вашей будущей комнаты (этот прямоугольник можно условно назвать фундаментом для будущей комнаты). __
Теперь растяните ваш прямоугольник до нужной высоты, находясь при этом в режиме Extrude. Получившийся параллелепипед есть не что иное, как шаблон вашей комнаты.
Следующим этапом нашего комнатостроения является текстурирование (на время наложения текстур отключите Wireframe ). Пользуясь режимом Texture , затекстурируйте поочередно все четыре стены комнаты, а также пол и потолок (чтобы наложить текстуру на потолок, нужно проникнуть внутрь комнаты), и можно идти дальше. **_
_Настало время установить стартовую точку для играющего, то есть определить его начальную позицию в вашем уровне. Стартовая точка, как и любой подобный объект, устанавливается в режимеModelпосредством нажатия на клавишуN**, выбора пунктаJumppointв окнеNew entityи последующего щелчка на кнопочкуOK. Следующим шагом является указание под надписьюNameназвания стартовой точки — обязательно напишите здесь “Player_Start ” (без кавычек). И не забудьте после добавления точки сделать ее дочерним объектом комнаты, в которой она располагается.
Наконец, смените имя вашей комнате, назвав ее, скажем, StartRoom. Чтобы сделать это, используйте панель объектов. Щелкните правой кнопкой мыши на вашу комнату, в появившемся меню выберите пункт меню Properties и измените характеристику Name. Увеличение **
**
Вот что у вас должно получиться…
Увеличим размеры карты путем добавления к уже имеющейся комнате новой и прохода, соединяющего их друг с другом. Для этого прежде всего “постройте” новую комнатку (по тому же алгоритму, что и начальную, только без установки стартовой точки и переименования комнаты), сделав ее по высоте такой же, как и первая, и оставив между ними место для будущего коридора. Последний создается так же, как и соединяемые им залы, только длиной и шириной он должен быть поменьше (высота же должна полностью соответствовать комнатам). Учтите, что проход должен вплотную подходить к стенам комнат, к которым он прилегает. После возведения “соединения” вы должны “слить” его с залами, превратив все в единый объект. Сделать это можно, перейдя в режим Transform и наведя курсор мыши на проход между комнатами. После этого следует нажать на клавишу U и выделить одну из комнат, щелкнув на нее левой кнопкой мыши. В выскочившем меню просто воспользуйтесь услугами клавиши OK — таким образом вы превратите одну из комнат и проход в единый объект. Тем же способом объедините проход, соединенный с первой комнатой, со вторым залом. Теперь вы можете увеличивать до бесконечности ваш уровень, добавляя в него новые комнаты и проходы между ними. Украшения и улучшения Теперь, когда вы умеете создавать простую по своей архитектуре карту, не мешает научиться ее всячески украшать, улучшать и увеличивать. Вы можете обогатить ваш уровень объектами и предметами различного назначения или населить его врагами. Как добавить в ваш уровень новый объект или субъект, в общих чертах описано выше. Теперь подробней о самых интересных из них.
Призы Если вам нужно разместить на просторах вашего уровня призы (под этим словом подразумеваются различные виды оружия, патроны к ним и обезболивающее — в общем, все полезное, что может валяться на карте), после нажатия на клавишу N в диалоговом окошке New entity сделайте выбор в пользу пункта Level item , после чего появится новое окно. В нем вы должны нажать на вкладку Entity и выбрать, какой именно приз вы хотите установить (обратите внимание на то, что обезболивающее тут величается не painkiller, а medipack_small). __ Друзья и враги Для того чтобы оживить вашу карту путем установки на ней врагов, мирных граждан и даже крыс, выберите из списка в окне New entity пункт Enemy. В следующем окне нажмите на вкладку Entity и решите, кого именно вы будете добавлять. Выбрать есть из кого (мирные люди в лице ученых, рабочие и т.п.; враги, представленные различными бандитами, полицейскими и т.д.) — вашему вниманию предлагаются все модели, задействованные в той или иной степени в игре (из общего списка явно выделяется субъект rat — крыса). Вы можете также определить поведение для созданного вами персонажа (особенно важно определить поведение для врага, иначе его и врагом назвать будет сложно) или не делать этого. В последнем случае он будет все время стоять на месте, лишь изредка поворачивая в стороны голову. Думаю, вы не ограничитесь созданием “прикованного к земле” человека. Если это так, переключитесь в режим Transform , затем наведите курсор мыши на персонажа и нажмите на клавиатуре цифру 4. В появившемся окошке щелкните на клавишу с надписью Messages. В новом окне воспользуйтесь вкладкой Startup и, нажав на кнопку Add (таких кнопок здесь три, но нас интересует лишь верхняя), наберите в вылезшем окне под надписью Enter message название команды, которую будет выполнять данный герой. Если последний относится к разряду врагов, вы можете научить его драться с вами, причем разными способами. Делается это с помощью команд вида: this- > C_SetStateMachine(X);, где X — название команды. Перечислять все возможные команды для ваших врагов попросту бессмысленно, ограничусь лишь самыми важными. MercCombat — при использовании данной команды враг будет постоянно приближаться к играющему и активно уворачиваться от его пуль во время перестрелки с ним.
MercCombatDefensive — эта команда имеет то же назначение, что и предыдущая, только в данном случае противник уделяет больше внимания обороне, то есть ни при каких обстоятельствах не подходит к Максу слишком близко. MobsterCombat — эта команда делает вашего противника агрессивным, но не слишком заботящимся о своем здоровье. MobsterCombatDefensive — то же самое, что и предыдущий пункт, только с большим уклоном в сторону ведения оборонительных действий со стороны врага. WalkAndShoot — в данном случае враг пешочком устремляется по направлению к играющему и периодически постреливает по нему. SingleShootAccurately — при этой команде неприятель один раз прицельно стреляет в вас, после чего начинает стоять на месте, словно статуя. Если вам нужно заставить созданного вами персонажа передвигаться из места, являющего его начальной позицией, в какую-нибудь точку, создайте при помощи окна New entity объект Waypoint , который и будет являться точкой назначения. Команда, позволяющая осуществить подобное передвижение, имеет следующую структуру: this- >C_GoTo(::X::Y, Z);. X в ней — название комнаты, где располагается конечная точка маршрута, Y — название этой точки, а Z — скорость передвижения героя во время преодоления данного маршрута. Чтобы вам было легче ориентироваться, подскажу: 1 — нормальная скорость передвижения героя. Пример: this- >C_GoTo(::startroom::waypoint_00, 1);. Если же вам нужно, чтобы субъект при передвижении стрелял в вас (был вашим оппонентом), к вашим услугам команда “ this- >C_GoToAndShoot(::X::Y, Z);”, имеющая ту же структуру, что и предыдущая. Можете также использовать команду “ this- >C_GoToPlayer(Z);” (Z — скорость передвижения героя), если хотите, чтобы данный персонаж все время следовал за вами. Освещение Что-то несколько темноватый уровень у нас получается… Чтобы исправить это, первым делом подберите место, которые вы хотели бы осветить. Потом выберите в окне New entity пункт Pointlight. В следующем окошке нажмите на одноименную вкладку и настройте яркость света, подаваемого данным источником освещения (характеристика Intensity ). После этого щелкните на небольшую кнопку, названную Set color , и, используя местную палитру, подберите для света понравившийся вам цвет. Подтвердите свой выбор с помощью кнопки OK и наслаждайтесь результатом проделанной вами работы. Компиляция После завершения работы над уровнем сохраните его, используя пункт меню File/Save , и следуйте дальнейшим указаниям, которые помогут вам откомпилировать вашу карту и добавить ее в игру. Прежде всего создайте у себя на жестком диске новую папку и назовите ее, например, Development. Распакуйте туда содержимое файла tutorial.zip , который нашел себе приют на нашем компакте. В результате этого в директории \Development появится подкаталог \Tutorial , в который вы должны скопировать два файла ( RASMaker.exe и rl.dll ), лежащие в подкаталоге \RasMaker. Последний находится внутри папки, куда вы установили пакет утилит Max-FX Tools. Затем внутри того же каталога \Tutorial отыщите файл Compile.bat и откройте его в обычном " Блокноте ", чтобы слегка подредактировать. В строке Move my_level.mpm “G:\Max Payne” в кавычках укажите путь, по которому прописалась игра на вашем винчестере. Далее, загрузив ваш уровень в MaxEd, зайдите в меню File и выберите команду Export X_LevelDB… (при этом вам предложат выбрать размер текстур в вашем уровне: чем выше размер, тем детализированней текстуры). Назовите файл с базой данных вашего уровня level и сохраните его по адресу: **\Development\Tutorial\Data\Database\Levels\MyMod**. Если на вашей карте присутствуют враги или какие-либо субъекты, вам нужно отредактировать два файла с помощью любого текстового редактора. Первый из них зовется levels.txt и имеет путь: \Development\Tutorial\Data\Database\Levels. В нем найдите блок, названный level.ldb (имя блока заключено в квадратные скобки, а его содержимое — в фигурные), и внутри него в строке EnableAI = FALSE; измените слово FALSE на TRUE. Далее сходите по адресу: \Development\Tutorial\Data\Menu , и вашему взору предстанет файл menu.txt , содержимое которого вы тоже должны подкорректировать. Отыщите строчку [Message] String = “maxpayne_gamemode- >gm_init( level.ldb );”; и поменяйте надпись gm_init на GM_InitAndCalcAI. Для старта процесса компиляции запустите файл Compile.bat , который мы ранее отредактировали. По окончании компиляции запустите игру и в появившемся окошке отыщите блок, названный “ Choose Customized Game ”, где вам нужно выбрать пункт my_level. Нажав на клавишу Play , подождите, пока загрузится игра, и в ее главном меню воспользуйтесь услугами пункта My Level , располагающегося в самом верху. Поздравляю, вы создали свой первый уровень. Уровень этот, как ни крути, простой, но… не все сразу. В наших планах — продолжить публикацию материалов по редактору MaxEd. В самом ближайшем будущем мы познакомим вас с тонкостями редактирования “Макса”, а заодно ответим на наиболее актуальные вопросы, связанные с редактором, которые вы прислали в редакцию.