Вход в систему
Информация по игре "Project: Nomads"
Название: Project: Nomads PC
Версия игры:
Жанр: Action/RTS
Мультиплеер: Интернет, локальная сеть
Разработчик: Radon Labs
Издатель: cdv Software Entertainment
Издатель в России: 1C
Локализатор: Nival Interactive
Дата выхода: 27 сентябрь 2002
Сайты игры:
http://www.project-nomads.de
http://www.project-nomads.de
Объем: Один CD
Минимум: CPU 450 MHz, 64 Mb, 32 Mb Video
Рекомендуем: CPU 1 GHz, 256 Mb, 128 Mb Video
Последние статьи
Самые комментируемые статьи
Новые приключения в Project Nomads. Дар рожденному летатьАвтор: Константин Артемьев
Полный текст
Огненное светило посылает прощальные лучи золотым облакам и медленно тонет за далеким островом. Мир погружаются во тьму. Над головой перемигиваются звезды... Вы включаете турбо-ранец и летите осматривать свои владения. Мановение руки — и вы взлетели на верхушку навигационной башни. Включаются древние механизмы, и остров несется навстречу неизведанному...
Project Nomads — это кладезь захватывающих приключений. И если одно закончилось — не беда. На основе движка Project Nomads мы создадим свое приключение, полное тайн и чудесных открытий. Мы перепишем сюжет, населим мир новыми персонажами, изменим интерфейс, сделаем врагов умнее, а друзей мудрее, и приправим все это сочным звуком. Захватывающее приключение гарантировано. В путь! От винта! Зайдите в папку Run, находящуюся в корневой директории игры. Здесь мы видим много подпапок и один большой файл в неизвестном формате. В этом файле содержатся все графические ресурсы игры. Они нам пока не интересны, потому что изменять графику без соответствующих конвертеров нельзя, а их пока не создали, ждем поступлений. Направляйтесь в папку Bin. Здесь хранится святая святых игры — главные скрипты. Лучше не изменять их, если только вы не программист со стажем. А вот посмотреть стоит. Откройте, например, в текстовом редакторе файл nsh.tcl. Что-то знакомое, не находите? Конечно, ведь точно такая же скриптовая система применялась в "Гномах" (смотрите подробное вскрытие игры с разбором принципа написания скриптов, опубликованное в 7 номере "Игромании" за 2002 год, на нашем компакт-диске). Разработчики у игр разные, идею тоже никто ни у кого не воровал. Все объясняется проще. В Project Nomads, как и в "Гномах", используется мощнейшая бесплатная скриптовая система Tcl/Tk, которая может быть использована не только для скриптов, но и для создания полноценных отдельных программ и игр. И Project Nomads из этой системы выжали все, что можно. Читатели, знакомые с программированием, могут детально изучить скрипты игры. Здесь найдется множество ценных идей, которые можно использовать для создания собственных игр. Ну а тем же, кто не умеет самостоятельно читать и понимать сложные скрипты, что называется, навскидку, лучше сразу перейти в папку Book. Посмотри налево, направо посмотри В каталоге Book содержатся пять подпапок, каждая из которых посвящена одной из пяти глав игры. Две оставшиеся папки будут интересны любителям ресурсов. В папке Music лежит игровая музыка и эффекты, а в папке Feedback — остальные звуки и надписи в незашифрованном графическом формате. Названия файлов соответствуют названиям событий. Например, когда атакуют ваш остров, на экран выводится надпись if_island_attacked.bmp и проигрывается звук islandattacked.wav. Заменяя эти файлы, можно русифицировать игру. Только следите, чтобы размеры надписей на русском и английском языках совпадали. Вернемся в папку Book. Здесь лежит три интереснейших скриптовых файла: character.n, defaultevents.tcl и story.tcl. Структура файлов с расширением .n отличается от файлов с расширением .tcl, но это те же самые скрипты. В файлах с расширением .n чаще всего содержатся команды инициализации. Давайте откроем, например, скрипт character.n. Сначала задаются параметры нового клана. Обратите внимание на эти три строчки: .setrealname "Anton Guenther" .setcurrentenergy 35 .setbasemaximum 35 Вам не нравится имя вашего персонажа? Разработчики не предусмотрели возможности его сменить. Измените его в этом скрипте. Первая строчка отвечает за имя персонажа. А цифры во второй и третьей строчках — за текущую и за максимально возможную энергию игрока. Хотите стать бессмертным? Поставьте число побольше. Следующая группа команд: .createandselvehiclewithname meta_char meta_char1 .setposition -2.495641568 31.7738441 -18.34972835 .setdirection 0 0 0 .setrelenergy 1 .announcestate "normal" .setvisible true .setartefactmode false .setsymbolicname "player" .setthrowevents true sel .. Они создают самого игрока. Первая строчка создает игрока как объект — ее лучше не менять. А вот со второй можно поэкспериментировать. Установите новые координаты, и ваш игрок появится в совершенно другой точке уровня. Следующая строчка задает направление взгляда игрока. Если будете ее менять, учтите, что каждое число должно лежать в интервале от -1 до 1. Можно даже сделать игрока невидимым. Просто напишите .setvisible false. Следующая группа команд отвечает за создание острова. Параметры очень похожи на параметры для модели игрока. Можете, оставив игрока видимым, сделать невидимым остров. Тогда игрок и все здания будут как бы парить над облаками. Выглядит очень красиво. Следующие команды создают три дерева и добавляют их на остров. Почему на острове только три деревца? Сделаем целую рощу. Главное — не забудьте указать для каждого дерева уникальное имя. Скрипт defaultevents.tcl отвечает за обработку событий. Он состоит из нескольких десятков подобных строк: on _islandattacked { playfeedbacksound book:feedback/islandattacked.wav textmessage island_attacked } Ничего не замечаете? Здесь задается, какой должен играть звук и какое текстовое сообщение должно появляться при определенном событии. Последний файл содержит команды загрузки всех пяти глав игры. Если вы будете добавлять свою главу, не забудьте изменить этот файл. Дело за малым — понять, как организованы главы игры, тогда мы сможем создать собственную полноценную игру на основе Project Nomads. Основы игрового действа Зайдите в папку Chapter00. В ней собраны файлы, отвечающие за вступительную часть игры. Корневой файл каждой главы содержит скрипт story.tcl, в котором находятся команды загрузки всех частей данной главы (в игре глава подразделяется на части, а не наоборот). В первой главе всего одна часть, которую разработчики поместили в папку part01. Рассмотрим, что содержится в story.tcl. Скрипт построен на событиях. Например, самое первое событие — on part_activated — происходит в самом начале игры, по сути это запуск уровня. Команда resetplayerat помещает игрока в указанную позицию. Не забудьте скорректировать эту позицию, когда будете создавать свою карту игры (о картостроении мы поговорим попозже). Командой daytime устанавливается текущее время (влияет на освещенность и положение солнца), а wind задает скорость ветра. Корректируя только эти параметры, уже можно создавать простенькие моды. В моей модификации царит ночь. Точнее — полночь. Луны нет. Звезды чуть мерцают. Остров на огромной скорости несется навстречу неведомому. Порывы ветра заставляют гнуться хлипкие деревца. И вся эта атмосфера создается изменением всего двух параметров. Командой loadencounter загружаются игровые скрипты из папки encounters. В данном случае это скрипт intro.n. Это один из важнейших скриптов каждой части игры. Поэтому о нем мы поговорим особо. Команда startpart задает начало игры, а setplayerpos перемещает игрока в нужную позицию. Командой playanimation задается анимация персонажа. Файлы анимации — это тоже скрипты. Команду playsound вы уже знаете. Оставшаяся часть этого файла задает разнообразные реакции игры на стандартные события. Например, вот событие, которое обрабатывается, когда игрок строит первую оборонительную башню: on navtowergebaut { setvar navtowerbuildcount [expr [getvar navtowerbuildcount] + 1] if { [getvar navtowerbuildcount] == 1 } { loadencounter cam_navbuild.n playanimation basaltface_cinedummy3 oneshottimer 17.5 zumnavstart } } Первой командой приращивается на единицу значение переменной navtowerbuildcount, которая показывает число построенных оборонительных башен. Далее следует условие. Если эта башня — первая построенная (if { [getvar navtowerbuildcount] == 1 }), происходят следующие действия: запускается внешний скрипт cam_navbuild.n (он отвечает за то, чтобы камера красиво показала только что построенную башню), проигрывается анимация basaltface_cinedummy3 и создается таймер события. За это отвечает команда oneshottimer. Ее первый параметр — время задержки, а второй — имя события, которое должно сработать по истечении заданного времени. А где же само событие? Да вот оно, чуть ниже: on zumnavstart { islandmoveto navpoint_start enablenavpoint navpoint1 } Первая команда этого обработчика события перемещает остров в навигационную точку navpoint_start, вторая — делает активной навигационную точку navpoint1. Таким образом вы можете построить любой скрипт. Шальной полет с заплечным ранцем В папке Cinematics хранятся все анимационные скрипты. Скрипты, начинающиеся с префикса cam_, относятся к камере. Каждый такой скрипт состоит из очень простых команд, например .addtranslate 0.2 -7746.367861 -166.9116924 -6270.469975. Такая команда заставляет камеру или объект переместиться на определенные координаты с
В папке encounters хранятся скрипты событий, а также крайне интересный скрипт intro.n. В Project Nomads нет специальных файлов-карт. Игровые пространства и объекты создаются здесь через скрипты. Если вы захотите создать свою собственную карту, скрипт intro.n послужит вам образцом. Он состоит из большого числа однотипных блоков, каждый из которых создает какой-то объект. Например: .createandselvehiclewithname weather_normal weather_normal1 .setposition 0 0 0 .setdirection 0 0 0 .announcestate "normal" .setvisible true .setartefactmode false .setareaofeffect 500
.setthrowevents true sel .. Здесь создается виртуальный объект "погода". Область действия этого объекта задается командой setareaofeffect. А вот так выглядит скрипт для создания облака: .createandselvehiclewithname wolke10 wolke1014 .setposition -8056.97505 -312.4202724 -5261.262293 .setdirection -16.98896475 601.7249387 -178.4645352 .setrelenergy 1 .announcestate "normal" .setvisible true .setartefactmode false .setcharges 10 .setthrowevents true sel .. Команды у облака почти такие же, как и у "погоды". Замените wolke10 на tree14 — и по небу будут летать... деревья. Добавляя подобные блоки, вы можете создать любые объекты. Но где же взять названия этих самых объектов? Ведь пока непонятно, что подставить вместо названия облака. Слева — дерево, справа — самолет Обратите внимание на файл loadlist.txt. Это и есть список объектов, задействованных на уровне. Его нельзя изменять (об этом предупреждает соответствующая надпись), но вот позаимствовать из него названия объектов — можно. Когда будете создавать свою кампанию, не забудьте в папку Objective поместить картинку с надписью, описывающей цель миссии. В папку Sound поместите задействованные на уровне звуки, а в папку Subtitle — игровые сообщения. Мы с вами изучили принцип построения типичной главы. Корректируя имеющиеся скрипты, можно полностью изменить главу. Сквозь гущу облаков Кампанию мы создали. Двигаемся дальше по дорожке сотворения новой игры. Выходите в папку Run. В папке Locale лежат графические образы всех надписей и кнопок в игре. Если хотите русифицировать игру, то начинать надо именно отсюда. Но нам сейчас больше интересна папка Scripts. В ней хранятся игровые скрипты. Если раньше мы имели дело со скриптами, отвечающими за миссии, события и сюжет, то теперь перед нами — глобальные скрипты, которые контролируют работу ядра игры. В файле alias.tcl можно посмотреть, каким игровым объектам какие символические имена соответствуют. Для этого же пригодится скрипт commands.tcl. В commands.tcl также собрано множество функций и процедур, с помощью которых можно оперировать ядром движка. Если хотите заняться созданием модов всерьез, обязательно изучите этот файл. Вы сможете найти такую полезную процедуру, как fx. Она запускает любой игровой спецэффект (напомню, что названия спецэффектов можно посмотреть в alias.tcl) Процедура setfullenergy устанавливает для выделенного объекта 100% энергии (она зависит от максимально допустимой энергии этого объекта, которую можно узнать с помощью процедуры getmaxenergy). В этом файле есть еще много интересных процедур, разобраться с которыми очень легко самостоятельно по описанному образцу. Тем же нехитрым способом можно изучить скрипты scriptlib.tcl. Это целая библиотека, отвечающая за обработку миссий. Батон! Еще батон! В Project Nomads нельзя переназначить управление ("батон" — значит клавиша), которое нравится далеко не всем. Редактируя скрипт input.tcl, отвечающий за карту ввода, клавиши управления можно переназначить. Каждому программному прерыванию (нажатие кнопки, клик мыши и т.д.) назначается соответствующая процедура-обработчик. Обратите внимание, что в скрипте по умолчанию прописаны несколько раскладок клавиатур — для игрока, для разработчика. Чтобы переназначить управление, нужно изменять строчки вида: .map keyb0:f2.down "script:/sys/servers/menuhandler.showhelpscreen" В этой строке записано, что по нажатию клавиши F2 запускается скрипт, который выводит на экран справку об игре. Вы можете легко изменить строчку, чтобы то же действие выводилось по нажатию клавиши F1: .map keyb0:f1.down "script:/sys/servers/menuhandler.showhelpscreen" Но ведь на клавише F1 в Project Nomads изначально "висит" главное меню. Его надо куда-нибудь переопределить. Самая подходящая для этого кнопка — Esc. Ищите строчку .map keyb0:f1.down "script:ingame_menu" и меняйте ее на .map keyb0:esc.down "script:ingame_menu". Точно так же можно переназначить все управление в игре. Обратите внимание, что в скрипте может быть несколько строчек, отвечающих за одну и ту же команду. Соответственно, если хотите "повесить" эту команду на другую кнопку, ищите все места в скрипте, где эта команда попадается (легко находится, через функцию "Поиск" в любом текстовом редакторе). Новый интерфейс налицо В файле newmenu.tcl хранится скрипт, отвечающий за создание и обработку игрового меню. Изменяя скрипты в этом файле, вы сможете полностью изменить игровое меню, добавить свои элементы или удалить ненужные пункты, переназначить команды... Давайте на простом примере посмотрим, как это сделать. Помните, при попытке выхода из игры она услужливо спрашивает подтверждение? Уберем это сообщение и организуем прямой выход из игры. Загружайте скрипт в текстовый редактор и ищите слово quit. Найдите процедуру-обработчик, которая вызывается, как только игрок щелкнет по пункту меню "Выход": proc nm_killgame {last} { global confirmedMenu set confirmedMenu $last /sys/servers/menuhandler.openmenu "really_abort" } Две первые команды подготавливают создание окошка-вопроса, а третья его вызывает. Функция, отвечающая за обработку этого окна, должна называться really_abort. Через поиск находим участок текста: new nguistandardmenu really_abort sel really_abort .settitlerect -0.4 0.4 0.3 0.0 .settitle really_abort .setabortable true new nroot entries sel entries new nguistandardmenuentry no sel no .setrect -0.8 0.0 0.0 -0.3 .setcommand "nm_goback" sel .. new nguistandardmenuentry yes sel yes .setrect 0.0 0.8 0.0 -0.3 .setcommand "nm_reallykillgame" sel .. sel .. sel .. Эта процедура создает окошко и две кнопки в нем. Обратите внимание, как это происходит, — по образу и подобию можно сделать любое окошко. Для кнопки "Yes" командой .setcommand "nm_reallykillgame" создается обработчик события кнопки. Опять открываем наше верное окошко поиска и вводим nm_reallykillgame. Находим еще одну процедуру. В ней много команд, но нам больше всего интересна /world.killgame. Теперь можно быть уверенным — именно процедура nm_reallykillgame закрывает игру. Вставим ее напрямую в процедуру-обработчик nm_killgame: proc nm_killgame {last} { global confirmedMenu set confirmedMenu $last .nm_reallykillgame } И все премудрости. Этот новый заоблачный мир Обратим внимание на скрипты statewatch_scripts.tcl и commandlist_lib.tcl и соответствующие им папки statewatcher и commandlists. Скрипт commandlist_lib.tcl — это список инициализации для скриптов из папки commandlists. Аналогично, в statewatch_scripts.tcl содержатся команды инициализации скриптов из папки statewatcher. В папке statewatcher хранятся скрипты-обработчики объектов, например бомбы, самолета, облака, электростанции. Систему команд Project Nomads мы с вами изучили, вы можете изменить любой объект и даже создать новые. Только не забудьте добавить их в скрипт statewatch_scripts.tcl. Давайте для примера сделаем что-нибудь забавное. Откройте скрипт silo.tcl. Он отвечает за бункер. Найдите процедуру: proc silowatch_explode {} { if {[.isanimfinished] == "true"} { if {[.getcharges] <= 0} { .setremoveable true } else { .announcestate normal .removefromisland } } } Удалите строчку .removefromisland. Теперь, если ваш бункерпо несчастной случайности взорвут, он... останется цел. Асы на хвосте Перейдем в папку Commandlists. Здесь
proc aacdownsmall_test {} { if {[.getavoidcollisionkind] == "small"} { if {[.getavoidcollisiondirection] == "down"} { return 1.0 } else { return 0.0 } } else { return 0.0 } } Они не уводят самолет от опасного объекта,
Посмотрите на нее внимательнее. Если тип объекта — "маленький" и для уклонения надо снизиться, возвращается 1, иначе возвращается 0. Если возвращается 1, самолет уклоняется от препятствия. Давайте изменим в строчке return 1.0 единицу на ноль. Теперь, если опасность маленькая и находится сверху, самолет будет лететь на нее. Если же вы хотите сделать вражин слепыми младенцами, везде в этом файле измените в строчках return единицу на ноль. Первая же скала станет могилой для неприятеля. Сохрани меня с собой Project Nomads почти вся создана на скриптах. Мало того, что разработчики сделали все игровые карты скриптами, так еще и... сохраненки тоже записываются в виде скриптов! Они хранятся в папке Save. Там же хранятся и скрипты для сохранения и загрузки. Структура этих файлов — список однотипных команд для создания объектов и присвоения им типовых свойств. Хотите починить не вовремя взорвавшуюся турель? Сохраняйтесь и идите в папку Save. Ищите файл с именем-номером слота сохранения и расширением .n. Открывайте его в текстовом редакторе, ищите строку, соответствующую вашей турели, и изменяйте цифру рядом с параметром setenergy. Так же просто меняются и другие параметры. * * * Ночь-чародейка накинула на мир свое звездное покрывало. Попутный ветер дует прямо в лицо. А значит, вам снова пора в путь, навстречу новому приключению. Вашему приключению. Вы пройдете через тернии собственного сюжета, мир вам откроют ваши персонажи, и их разум будет подчиняться вашей воле. Статей: 5 Все статьи по игре 22.01.2004 - Краткие обзоры. Локализация. Проект "Бродяги"27.05.2003 - Новые приключения в Project Nomads. Дар рожденному летать22.01.2003 - Project Nomads21.01.2003 - Коды по "Project: Nomads" (ресурсы)20.01.2003 - Руководство и прохождение по "Project: Nomads" Файлов: 2 Все файлы по игре |