Боевой нанокостюм. Вскрытие Crysis
Нанокостюм расслабляет. Он не только защищает от дождя, града и прочих природных экзерсисов, но и принимает на себя чрезмерную нагрузку, усиливает и без того неслабые мышцы главного героя, восстанавливает здоровье, защищает от прямых попаданий… От возможностей, которые дает этот необычайно продвинутый агрегат, голова идет кругом.
Но, совершая очередной фантастический кульбит, главный герой вдруг ловит на грудь прямое попадание из «калашникова»: в глазах темно, координация сбита, заключенное в нанокостюм тело мешком падает на землю, пытается судорожно отползти в кусты и затаиться.
Что случилось со сверхспособностями? Да в общем-то ничего, просто они были немного ограничены новыми скриптами и доработаны при помощи специальных консольных команд. Сегодня мы разберемся, как при помощи сохраненного разработчиками режима DevMode подправить некоторые игровые характеристики и видоизменить геймплей.
Естественный отбор
После недолгого, но тщательного осмотра основных каталогов выяснилось, что игровые архивы формата PAK — это самые обычные ZIP-архивы, а текстуры хранятся в DDS -формате. Для написания скриптов в Crysis используется уже изученный нами на примере множества других игр язык Lua. Параметры различных заданий описываются в довольно стандартных XML-файлах. И, что самое важное, разработчики не стали исключать из игры developer mode (DevMode), то есть у нас есть совершенно уникальная возможность попробовать себя в роли девелоперов.
Вообще-то вскрытие игры можно проводить несколькими путями. Работать в «Фотошопе», планомерно перерисовывая текстуру за текстурой, изучать тонкости Lua и перепрограммировать скрипты, парсить в XML… Но мы пойдем самым простым путем, чтобы не пришлось осваивать программирование и проводить ночи напролет в графическом редакторе. Все изменения мы внесем при помощи уже упомянутого DevMode.
Режим разработчика
Данный режим открывает в игровой консоли (вызывается по кнопке «~») дополнительные команды, позволяющие менять в игре погоду, время суток, поведение противника, физику игры, параметры костюма главного героя, угол обзора и множество других параметров. Казалось бы, здорово, но есть у режима разработчиков и свои недостатки: в правом верхнем углу экрана выводится техническая информация — количество кадросекунд, наличие источников света и тому подобные не особенно нужные простому геймеру параметры. Поначалу раздражает, но к мельтешащим на экране числам быстро привыкаешь.
Чтобы включить режим разработчика, необходимо создать ярлык для Crysis.exe или провести данную операцию над уже имеющимся ярлыком. Нажмите на ярлык правой кнопкой мыши и в выпадающем меню выберите пункт Свойства. В поле Объект добавьте в конец строки пробел и -DEVMODE. Примените изменения. Все — ярлык для запуска игры в режиме разработчика готов.
Дабы каждый раз не вводить по несколько раз одни и те же команды, имеет смысл создать в папке *Каталог игры\Game\Config* конфигурационные файлы (обычные текстовые файлы с расширением, измененным на *.cfg), занести в них необходимые команды и, когда надо, их активировать консольной командой exec имя_файла. Создадим файл suit.cfg , откроем его «Блокнотом» и добавим туда следующий текст вместе с комментариями, чтобы не запутаться. Перед комментариями непременно нужно ставить тире:
— Сколько энергии тратит режим «Невидимки»
g_suitCloakEnergyDrainAdjuster = 0.1
— Сколько энергии снимается в режиме усиления брони
g_suitRecoilEnergyCost = 0.1
— Сколько энергии тратится в режиме «Увеличения скорости»
g_suitSpeedEnergyConsumption = 0.1
— Во сколько раз увеличивается скорость при использовании режима «Увеличения скорости», столкновение со стеной или деревом на большой скорости приведет к гибели
g_suitSpeedMult = 1.85
— Показатель защиты в режиме усиления брони
g_suitArmorHealthValue = 600.0
— Сколько времени надо для регенерации 1% здоровья в режиме усиления брони
g_playerSuitArmorModeHealthRegenTime = 0.1
— Сколько времени надо для регенерации 1% здоровья в режиме усиления брони во время передвижения
g_playerSuitArmorModeHealthRegenTimeMoving = 0.1
— Сколько времени надо для регенерации 1% здоровья
g_playerSuitHealthRegenTime = 0.1
— Сколько времени надо для регенерации 1% здоровья во время передвижения
g_playerSuitHealthRegenTimeMoving = 0.1
— Сколько времени надо костюму, чтобы «прийти в себя» после получения повреждения и начать регенерацию здоровья
g_playerSuitHealthRegenDelay = 0.1
— Сколько времени надо для восстановления брони
g_playerSuitEnergyRechargeTimeArmor = 6
— Сколько времени надо для восстановления брони во время передвижения
g_playerSuitEnergyRechargeTimeArmorMoving = 7
— Сколько времени требуется, чтобы восстановить энергию, потраченную в режимах увеличения силы и невидимости
g_playerSuitEnergyRechargeTime = 8
— Сколько времени костюму надо, чтобы начать регенерацию энергии после последнего расхода энергии
g_playerSuitEnergyRechargeDelay = 1.0
— Максимальное здоровье игрока
g_playerHealthValue = 200.0
— Водитель транспорта может стрелять транспортным орудием, не вставая за него (из кабины). На самом сложном уровне параметр автоматически отключается
v_driverControlledMountedGuns = 1
Теперь, запустив игру, в консоли достаточно набрать exec Suit , и вы получите практически неубиваемого игрока (если хотите совсем неубиваемого, введите g_Godmode 1 ) с бесконечным ускорением и значительно усиленной броней.
Уменьшая скорость регенерации брони в различных режимах и процент энергии, который отдает костюм главному герою, можно усложнить геймплей. Но куда интереснее не просто усложнять или упрощать игру, а видоизменять ее, не нарушая баланса. Например, если увеличить скорость регенерации персонажа в бою, но при этом уменьшить процент мощности, с помощью которой костюм залечивает раны в процессе передвижения, то мы добьемся очень забавного эффекта. Можно будет врываться в деревушки словно терминатор, крушить там все, а когда боекомплект закончится — убегать. И вот тут начинаются самые настоящие прятки с противником. Чтобы полностью восстановиться, вам придется найти укромное место, где ни один враг вас не найдет, и отлежаться несколько минут.
Или вот другой пример. Немного уменьшаете время, за которое персонаж приходит в себя после прямого попадания пули, одновременно наращиваете броню и увеличиваете время между двумя регенерациями. После этого игра станет похожа на стелс-миссию в Call of Duty 4: Modern Warfare (в Припяти): стоит чуть-чуть зазеваться, пропустить одно попадание — и бай-бай победа.
Обратите внимание, создавая файлы конфигурации с различными параметрами, вы, по сути, делаете самые настоящие моды. Стоит подгрузить новый скрипт, как игра меняется кардинально. На многих форумах геймеры уже начали обмениваться файлами, устраивая самые настоящие соревнования. Кто-то изменяет геймплей, выкладывает файл со скриптом для скачивания, а затем другие геймеры пытаются пройти определенные локации на скорость. Победитель получает право создать свой скрипт и выложить его для прохождения другими участниками.
Свободный полет
В игре прекрасная физика, но ее можно сделать еще более зрелищной или реалистичной. Основным параметром, описывающим поведение объектов в Crysis, является гравитация — p_gravity_z. Изначально она равна -9.8.
Чтобы уменьшить высоту прыжков и увеличить повреждения от падения с небольшой высоты, значение надо уменьшить (увеличить по модулю), например, до -12 или -20. В этом случае даже простой прыжок с одноэтажной хибары может закончиться весьма плачевно.
Если хотите, чтобы герой прыгал повыше, а обломки от взорванного дома взмывали в воздух на несколько десятков метров, пропишите параметру p_gravity_z значение в районе -0.5. Ну а уж если возникнет необходимость воспарить словно птица, смело ставьте любое положительное значение.
Впрочем, это все шалости. Куда интереснее использовать гравитацию в качестве оружия. Вот как это можете сделать. Заходите в дом (важно, чтобы над головой был потолок), изменяете гравитацию на 10 , ждете, пока большая часть противников поднимется в верхние слои атмосферы, увеличиваете гравитацию до обычной -9.8 и наблюдаете, как град из человеческих тех сводит на нет кукурузную плантацию за околицей.
Управление временем
Бессмысленно говорить о красотах Crysis, это нужно видеть. Но зачастую полюбоваться всеми прелестями местной природы нам просто не дают, силком загоняя на ночные миссии. Какая уж тут красота, когда даже огромную лягушку, прыгающую под ногами, разглядеть не получается.
Чтобы рассеять мглу или, наоборот, сделать ночными дневные миссии, в игре существует команда E_TIME_OF_DAY. Ей можно присваивать как целые значения (от 1 до 23), так и дробные (17.30, например). Вот только описать их все практически невозможно. Дело в том, что в этот параметр, помимо времени суток, зашита еще и погода для текущей локации. В итоге получается полная неразбериха. Допустим, число 23, прописанное в E_TIME_OF_DAY, в одной локации дает тихую ночь, а в другой — поздний вечер с густым туманом и мелким накрапывающим дождиком. Поэтому вам придется поэкспериментировать, чтобы добиться нужного сочетания погоды и времени суток на каждом уровне.
Что забавно, далеко не все ночные локации смотрятся красиво при дневном свете, немного украсить их можно командой для записи демонстрационных роликов — EXEC Recording. Если у вас после ее выполнения отключится звук, то можете вернуть его обратно, напечатав в консоли s_SoundEnable 1. Также после этого можно слегка замедлить время в игре (на слабых компьютерах не рекомендуется) командой Record , она включит режим записи деморолика и ограничит временной шаг, что даст эффект замедления как в «Матрице» или в F.E.A.R.. Отключить запись можно командой Stoprecord.
В поисках интересного
В Crysis очень много команд, параметров и режимов. Описать их все в рамках одной статьи нет ровным счетом никакой возможности. Зато мы опишем алгоритм, где все эти параметры искать и в каком направлении с ними работать. Если в консоли нажать какую-либо букву и затем кликнуть кнопку Tab , то рядом появится список всех доступных команд, начинающихся на эту букву. Список можно прокручивать кнопками PageUp и PageDown. Причем выведены будут не только сами команды и параметры, но и даны их текущие значения.
Например, на латинскую «a» выпадет множество параметров с началом ai_ , то есть описывающих искусственный интеллект. Экспериментируя с ними, можно сделать врагов гениями или, наоборот, полными тупицами. И так далее. К сожалению, никаких таблиц, примеров или других данных, которые бы позволяли точно определить, какой параметр за что отвечает, на данный момент нет. Мы в нашей игрострой-лаборатории заняты как раз расшифровкой самых интересных команд, так что, вполне возможно, в самом ближайшем будущем в «Игромании» будет опубликована еще одна статья по вскрытию Crysis.
Но ждать совсем необязательно. Вооружайтесь англо-русским словарем, переводите названия параметров и пробуйте менять их значения, а затем отследить, как это повлияло на геймплей. Работенка довольно муторная, но результат стоит того.
Мы путем описанных выше экспериментов уже обнаружили, что пример ca_DrawSkeleton 1 включает отрисовку скелетов игровых персонажей и животных. С одной стороны, можно посмотреть более детально, как в игре анимированы бабочки и лягушки, с другой — скелеты очень яркие и в игре их видно намного дальше, что дает определенное преимущество перед соперником (раньше увидел — раньше выстрелил).
Чтобы манипулировать с инвентарем, достаточно набрать букву I и нажать Tab , в полученном списке сразу бросаются в глаза следующие параметры:
I_GIVE_ALL_ITEMS — дает персонажу все игровые гаджеты;
I_UNLIMITED_AMMO 1 — из всего оружия, кроме дробовика, можно стрелять бесконечно (патроны не кончаются);
I_NOWEAPONLIMIT 1 — снимает ограничение на количество оружия, переносимого игроком. Теперь вы можете утащить на себе и снайперскую винтовку, и дробовик, и «калаш», и вообще все, что переносится и из чего можно стрелять.
Правда, эти параметры — скорее чит-коды, но есть и другие, позволяющие тонко влиять на геймплей и создавать необычные моды. Скажем, геймерам, регулярно играющим в Quake 3 Arena или в Counter-Strike , должен быть хорошо знаком параметр CL_FOV , определяющий угол обзора. Увеличивая его значение, можно добиться интересного эффекта: стоя рядом с трейлером или зданием, вы краем глаза будете как бы видеть то, что происходит внутри. Если же уменьшать значение, то угол обзора сузится, предметы приблизятся — и вы получите зум покруче, чем у снайперской винтовки.
Ну и в завершении разговора вот вам еще один интересный параметр. CL_FPBODY отвечает за отрисовку ног и живота главного героя, когда камера направлена вниз. Если значение равно 2 , рисуются только ноги, 1 — ноги и живот, 0 — ни то, ни другое.
Если игра у вас тормозит или, наоборот, слишком резво бегает, но не выдает приличной картинки, обязательно изучите параметры из групп « e » и « r ». В первом случае можно уменьшить число полигонов в персонажах, во втором — прибавить сочности картинке. Заметьте, что эти параметры никак не продублированы в меню настроек. Какие показатели лучше менять, а какие нет — смотрите в конфигурационных файлах, составленных разработчиками (например, в recording.cfg ).
* * *
Напоследок дадим полезный совет. Когда просматриваете различные параметры и настройки, обязательно тщательно запоминайте, а лучше записывайте, в каком именно разделе встретилось что-то интересное. Иначе потом отыскать нужную характеристику среди тысяч ей подобных будет не так-то просто.
У нас в игрострой-лаборатории произошел довольно забавный случай. Один из авторов обнаружил среди консольных параметров Crysis некую характеристику RagDoll , которая, судя по описанию, позволяла включать в игре «покостный» подсчет повреждений у персонажей. Нашел, не записал, где она находится, а затем мы всем миром битых два часа пытались найти ее в группе «r» (что логично — ragdoll ведь!), но так ничего и не обнаружили, уже начали посмеиваться над «первооткрывателем» (мол, примерещилось тебе), когда Света Померанцева совершенно случайно обнаружила искомый параметр в категории «p».