Сам себе гном. Основы варения бюргерского пива из хомячков
О гномоводы и гномоведы, ликуйте! Свершилось чудо! Открыта полная формула ДНК самого удивительного из созданий во всем подземном мире — ГНОМА. Тысячи ученых трудились многие годы, скрестили немало троллей и личинок, разбили немало колбочек с растворами подозрительных цветов и на лабораторных спиртовках поджарили огромное количество хомячков. И их усилия увенчались успехом. Теперь мы знаем не только детальное внутреннее устройство Гнома, но и вполне можем изменить его под собственные нужды и вкусы. В шахту! “Гномы” — игра нестабильная, порой необоснованно сложная и затягивающаяся, а процесс копания Гномские проблемы “Гномы” — игра замечательная, но все ее достоинства омрачает необыкновенно глючный и нестабильный движок. Жаль, что братья наши немцы уделили так мало внимания оптимизации. Но все можно исправить, особенно если ты мастер виртуального скальпеля. Эта проблема — хроническое отсутствие звука на некоторых звуковых картах семейства SB Live!. Проблема возникает оттого, что звуковая карта конфликтует с видео. Исправить это, а также устранить назойливые тормоза, можно, выставив ползунок аппаратного ускорения на единицу до максимума. Этот ползунок находится здесь: Панель управления\Система\Быстродействие\Графика. По словам разработчиков, это должно помочь.
в потемках может вывести из себя кого угодно. И что самое неприятное, коды для “Гномов” недоступны. Вот последнее обстоятельство мы и сможем исправить. А заодно покопаемся в игровых ресурсах (там есть на что посмотреть), и (кто знает?), может быть, нам удастся сделать из старых добрых “Гномов” совсем другую игру. Мы будем рассматривать русскую версию “Гномов” от 1C/Snowball Interactive , так как другие в России не распространены. Разведка на местности Для начала проведем рекогносцировку и разведаем общее положение дел у пациента. Сразу видны целые россыпи полезных ресурсов. Посмотрим на них повнимательнее. В папке Manual основного каталога игры лежит весьма детальный справочник по гномоведению. Из него можно почерпнуть массу интересных особенностей этого нелегкого дела. Но самые вкусные вещи лежат в папке Data. В файле Data\messages.txt находятся все игровые сообщения и их переводы на русский язык. При этом активно используются метасимволы подстановки, такие как %1. Вы можете изменить любое игровое сообщение, сделав его более оригинальным. Например, у меня дружественный клан в момент воровства говорит не скучноватую стандартную фразу, а “А ну стой, воришка!”. Если вы хорошо знаете немецкий и не удовлетворены переводом Snowball, можете сделать альтернативный перевод. Вот только, изменяя сообщения, ни в коем случае не трогайте символы подстановки. Они должны остаться на тех же самых местах, где были до правки. В файле msgmisses.txt того же каталога находятся все символические названия, используемые в игре. Среди них порой попадаются и русские варианты. Надписи, начинающиеся со слова Dummy , — объекты-пустышки, служащие для внутриигровых целей. Не стоит здесь что-либо изменять — это может отразиться на работоспособности игры. В файле quotes.txt хранятся любопытные изречения таких великих личностей, как Конфуций, Эйнштейн, Линкольн, Шекспир, Гете и, разумеется, разработчики игры. Если вы хорошо знаете немецкий, непременно загляните в этот файл. Некоторые изречения вызывали у автора этих строк неестественно долгие приступы смеха. Но русского перевода, к сожалению, нет. В папке Data нас интересует еще один файл — start.avi. Как вы, наверное, уже догадались, это вступительный ролик. Копаем глубже Давайте теперь исследуем поддиректории Data. В папке Data\Music в открытом виде лежит вся игровая музыка в формате mp3. Вы можете легко заменить любой трек из “Гномов” на свое любимое музыкальное произведение или же использовать эту музыку для подсобных целей. В папке Data/Sound обосновались игровые звуки в формате wav , которые также легко поддаются изменению. С музыкой и звуками разобрались, теперь перейдем к внутриигровой графике. Вся графика хранится в формате tga , который вполне сносно переваривается любым продвинутым графическим редактором, например, Photoshop. Вы можете изменить все текстуры в игре, раскрасив их в любимые цвета. Только одно предупреждение: формат tga содержит, кроме всего прочего, еще и альфа-канал прозрачности. Некоторые графические редакторы легко откроют и сохранят гномовскую графику, а альфа-канал будет игнорироваться. Это может привести к тяжелым последствиям. Поэтому пользуйтесь только проверенными в лабораториях и испытанными в подземельях
“Игромании” редакторами. Photoshop — идеально подходит. А вот и сама графика. Data\Ground — текстуры земли. В файлах, начинающихся с Gnd_ , лежат собственно текстуры, а в файлах, начинающихся с Msk_ , — маски. В подпапке detail лежат спрайты и текстуры подножной мелочи — зелень, веточки, камешки и… лава. Data\Gui — текстуры интерфейса игры (Graphic user interface). Кнопки, линии, курсор, иконки, элементы управления, даже шрифты — все там. Вот уж есть где разгуляться буйной фантазии гномоведов, не обделенных художественным вкусом. Может, вам придет в голову превратить подземно-мрачноватый облик игры в поднебесно-воздушный? Data\Templates — папка с заготовками уровней. Что это такое? Ни для кого не секрет, что “Гномы” автоматически генерируют уровни, как это было, например, в Diablo. Однако совершенно случайный уровень — скорее предмет выставки художников-абстракционистов, чем удобный игровой плацдарм. Поэтому для создания новых уровней используется блочный алгоритм. Его суть в том, что при генерации случайным образом на карту выкладываются не отдельные объекты, а их совокупности, образующие цельный смысловой блок. Своеобразные микрокарты есть для пещер, туннелей, совокупностей растений и хомячков, элементов базы противников и т.д. И вот из них, а не из примитивных объектов, создается карта. В папке Data\Templates лежат эти самые описания микрокарт, из которых собираются уровни. Основные данные о структуре блока содержатся в файлах с расширением pmp. Если вы откроете такой файл в текстовом редакторе, увидите странную мешанину символов и спецзначков. Изменив какой-нибудь значок, вы тем самым измените соответствующий кусок микроблока. И посреди пещеры неожиданно вырастет гриб или разольется лавовый поток. Любопытно поэкспериментировать с изменением микрокарт. Однако перед любыми экспериментами не забывайте сохранять копию изменяемого файла — мало ли что. Data\Texture — одна из самых интересных папок игровых ресурсов. Именно здесь хранятся текстуры игровых объектов, фоны и спрайты, а также элементы оформления. Все легко поддается изменению. В папках m032 , m064 , m128 и m256 хранятся одни и те же “шкурки” гномов разного качества, предназначенные для разных разрешений экрана. И если вы решите заменить что-либо из этого комплекта, не забудьте сохранить измененные “шкурки” в каждой из этих папок с соответствующим качеством. Особое внимание обратите на файл texlevels.txt. В нем хранятся описания всех “шкурок” с указанием, какому качеству “шкурка” из какой папки соответствует. Изменив “шкурку”, не забудьте внести поправки и в этот файл. Нити кукловода В процессе поиска разных интересностей в ресурсах “Гномов” мы избегали папку Scripts. И это неспроста. В ней содержатся ключи к управлению и жизнедеятельности гномов — игровые скрипты. Естественно, такую вкусную вещь мы оставили на десерт. Каждый игровой скрипт — отдельный файл с расширением tcl. Написаны скрипты на странной помеси С++ и Visual Basic , сдобренной изрядной долей авторских нововведений. Но ничего — секретные лаборатории “Игромании” и не такое расшифровывали. Сперва, чтобы нам было сухо и комфортно копаться в скриптах, давайте познакомимся с некоторыми особенностями этого гибридного языка. После символов " // " и " # " всегда следуют комментарии. Это пояснения разработчиков относительно того, что та или иная строчка делает. К сожалению, большая часть этих комментариев написана по-немецки, хотя временами встречаются длинные английские тексты. Вообще, это довольно странно. Создается впечатление, что команда разработчиков игры была интернациональной. Почти каждая законченная строчка скрипта оканчивается на " ; ". Команды, стоящие в фигурных скобках, представляют собой единый подблок, выполняющий какую-то функцию. По названию подблока (которое указывается до открывающейся скобки) можно легко судить о том, что она выполняет. Вот и весь необходимый минимум знаний, который нужен вам для работы со скриптами. Остальное рассмотрим по дороге. Папка ai содержит единственный файл — std_ai.tcl. Он отвечает за искусственный интеллект в игре. Здесь можно поправить практически все: параметры гномов, их образ действия и методы достижения целей. Правда, без хорошего программистского образования здесь не разобраться. А посему переходим к следующей папке. В папке classes размещаются много подпапок со скриптами, отвечающими за героев, декорации, предметы,
режимы работы и жизнедеятельности “Гномов”. В папке Gameplay лежат скрипты, которые определяют порядок следования миссий и методы загрузки карт. Папка Init не представляет для нас особой ценности — там находятся, как вы могли догадаться, процедуры инициализации геймплея. Папка Misc содержит скрипты, которые не могут быть отнесены ни к одной из предыдущих групп. Они заслуживают нашего пристального внимания в силу своей неординарности, но не сейчас. Всему свое время. Давайте лучше копнем в папку text. Здесь содержатся не только все игровые тексты и сообщения, но и скрипты, отвечающие за их вывод. Покопавшись в скриптах, вы сможете легко изменить любой игровой текст. Только обращайте внимание на комментарии авторов вроде " // —— do not change anything above this line — ". Не советуют — значит, не будем. В такие моменты разработчики не шутят. Изменять можно надписи в кавычках после команды print , которая отвечает за вывод текста на экран. Интересно, а в каком виде будет выводится текст? Это определяется директивой, которая стоит перед этой командой. Например, textwin указывает, что надпись надо выводить в заголовок или основную часть окна. На то, что текст будет выводиться в заголовок, указывает команда ohlp_ttheadlinestyle. В остальных папках вы найдете скрипты, отвечающие за диалоги между гномами. Обязательно загляните сюда. Очень многие фразы, которые вы не увидите в игре, написаны с изрядной долей юмора. Да к тому же по-русски. Мы наш, мы новый мир построим Мы вооружились детальными знаниями о структуре и Блуждание в потемках Этот совет поможет тем, кто терпеть не может копать без ощутимой цели впереди. Многие игроки недоумевают, почему, во-первых, ключевые объекты находятся в совершенно произвольных местах и, во-вторых, как, черт возьми, до них дорыться. Терпение, только терпение. В “Гномах”, как я уже говорил, локации генерируются на лету. Причем не перед загрузкой карты, а в процессе копания. Этим объясняется феномен, что если копать в любую сторону, обязательно раскопаешь какую-нибудь пещеру. Игра как бы замечает, что игрок начинает скучать, и подсовывает ему еще один интересный (ну или не очень) объект для исследования. Чтобы отловить ключевые объекты (крепость троллей, Врата и так далее), присматривайтесь к нераскопанным участкам карты, примерно представляйте себе размер объектов и где они могут разместиться. На большинстве уровней главной ошибкой игроков бывает то, что они копают вширь, когда надо копать вглубь. Именно там сосредоточены все основные объекты.
размещении скриптов в игре и можем приступать к тотальному изменению игрового мира. Еще раз повторяю, что с помощью скриптов в “Гномах” можно сделать тотальную конверсию игры, приспособить ее под свои вкусы. Однако описывать все эти возможности — значит отнимать хлеб у своих коллег на несколько лет вперед. Поэтому ограничимся наиболее интересными изменениями, а все остальное вы легко сможете найти, основываясь на наших первоначальных изысканиях. Берем файл Scripts\classes\zwerg\z_events.tcl. В нем есть интересная строчка за номером 1826. В этом месте происходит сравнение текущего возраста гнома с максимальным значением — 24. Если гном старше — запускается процесс старения, кончающийся летальным исходом. Обидно! Так сделаем наших гномов практически бессмертными! Для этого изменяем это значение на, скажем, 1000. И все. Остается только подправить периоды старения (ниже в этом же файле число 24 встретится несколько раз), и получаем аналог известного кода god. Хотите изменить рождаемость ваших гномов? И это сделать несложно. В очень многих скриптах есть параметр willing_to_reprod (желание к репродукции… хм). Стоит везде изменить этот параметр с 0 на 1 , и грядет демографический взрыв. В папке Scripts\classes\zwerg находим файл z_spare_reprod.tcl. В нем есть командный блок sparetime_reprod_check. Как видно из названия, именно здесь проверяется желание гнома размножаться. Это происходит только при достаточном количестве хитпойнтов, хорошем настроении, богатом рационе и отсутствии опасности. Так почему бы не обеспечить все эти условия не на реальном, а на программном уровне? Для этого в начало блока вписываем: set_attrib this atr_Hitpoints 1 set_attrib this atr_Mood 1 set_attrib this atr_Nutrition 1 set_attrib this atr_Alertness 1 Как нетрудно догадаться, эти команды устанавливают по максимуму все вышеперечисленные критерии, играющие ключевые роли в репродукции гномов. Пиво из хомячков В папке Scripts\misk есть интересный файл techtreetunes.tcl. Он отвечает за дерево технологий. Внимательно присматриваемся… И что мы видим? Строчки типа " set tttpreinv_Feuerstelle {Grillpilz Zelt Feuerstelle} ". Это не что иное, как ветка технологического дерева. В левой части — название технологии, здания или изобретения, а в правой — список предметов, умений или технологий, которые требуются для его открытия/производства. Иногда в фигурных скобках перечисляются не просто объекты/технологии, а численные величины. Например, выражение " exp_Stein 0.03 ". Оно означает, что для постройки данного здания требуется навык “Камень”, равный 0.03. Чем это может быть нам полезно? А тем, что мы можем легким мановением руки заставить здания строиться без ресурсов, технологии — открываться без опыта, а
заклинания и умения — применяться без всяких навыков. Халявная жизнь, одним словом. А устроить себе дольче вита совсем просто: надо только удалить все в фигурных скобках около соответствующих зданий/предметов/технологий. И объект этот будет производиться за просто так. А можно и приколоться. Например, благодаря строчке " set tttmaterial_Kristall {Hamster} " в игре мы будем производить кристаллы из… хомячков! Все в дело — из грибов добываем железо, воздух разлагаем на палатки и лестницы, из хомячков гоним пиво… что за жизнь! Кстати, а как реализовать последний пункт нашей предвыборной программы на пост Одина — гнать пиво из хомячков? Да очень просто: set tttmaterial_Bier {Hamster}. Избиратели будут в восторге. Давайте теперь займемся хомячками. За них отвечает скрипт Scripts\classes\characters\hamster.tcl. Ищем, что бы изменить. Видим подозрительную фразу: " set_attrib this weight 0.01 ". А что если эту цифру заменить на 1? Легкий в оригинале хомячок станет тяжелее мастодонта. А если в строке " set scan_range 4 " вместо 4 поставить число побольше, то хомячок будет видеть пытающегося его поймать гнома чуть ли не за полкарты. Ну а если вам надоело гоняться за непослушными хомячками, почему бы их не парализовать? Пишем " set is_paralyzed 1 ", и все хомяки замерли в священном ужасе, ожидая нашего прибытия. Продолжим поиски. В той же папке открываем файл wuker.tcl и сразу же видим строчку " set enemy_classes {Zwerg Spinne Drachenbaby Troll Lavabrut Kristallbrut} ". Удаляем из фигурных скобок слово Zwerg , и вукеры станут нашими лучшими друзьями. Еще одна любопытная деталь, не имеющая отношение к скриптам, но крайне интересная. В файле Scripts\classes\zwerg\names.txt содержатся имена всех гномов. Если вашего имени здесь нет, можете вписать, ну или изменить на что-либо более интересное. Только обращайте внимание на надписи " MALE " и " FEMALE ", чтобы не назвать бравого гнома-вояку, скажем, Ингой. *** Вот и все премудрости. С полученными знаниями вы без труда найдете в обширных игровых скриптах “Гномов” что-либо, что вы захотите изменить… Удачи вам в разборе гномьего движка. И да пребудут ваши хомячки вечно резвыми! P.S. Выражаю глубокую благодарность посетителям форума “Гномов” за любознательность и страсть к новым открытиям. Если бы не они, кто знает, начал ли бы я исследовать ДНК “Гномов”…