IGROMANIA.RU
Registration
MoreLess
Популярные за неделю
Популярные за месяц
Ассасины и тамплиеры на большом экране. Фильм «Кредо убийцы» Кино > Ассасины и тамплиеры на большом экране. Фильм «Кредо убийцы»
Ассасины и тамплиеры на большом экране. Удался ли эксперимент?
Комментариев: 50
Самые интересные проекты января: от Gravity Rush 2 и Resident Evil 7 до Yakuza 0 и Tales of Berseria Спец > Самые интересные проекты января: от Gravity Rush 2 и Resident Evil 7 до Yakuza 0 и Tales of Berseria
Продолжение Gravity Rush, возвращение «Обители зла», приключения в мире японской мафии и прочие интересности.
Комментариев: 8
Planet Coaster: парк развлечений своими руками Рецензии > Planet Coaster: парк развлечений своими руками
С самого детства мечтали построить идеальный парк аттракционов? Planet Coaster от Frontier Developments это позволяет!
Комментариев: 3
Главные новинки CES 2017: от VR-устройств до «умных» велосипедов и систем слежения за холодильником Железный цех > Главные новинки CES 2017: от VR-устройств до «умных» велосипедов и систем слежения за холодильником
Подводим итоги крупнейшей международной выставки потребительской электроники.
Комментариев: 1
Информация по игре
Project: Nomads
Название: Project: Nomads   PC
Русское название: Проект «Бродяги»
Мультиплеер: Интернет, локальная сеть (8)
Разработчик: Radon Labs
Издатель: cdv Software Entertainment
Издатель в России: СофтКлаб
Локализатор: Nival Interactive
Дата выхода: 7 ноябрь 2002
Дата выхода в России: 25 апрель 2003
Рейтинги игры
9
Рейтинг
журнала
0
Рейтинг
сайта
Рейтинг
игроков
Rating
0,00,51,01,52,02,53,03,54,04,55,05,56,06,57,07,58,08,59,09,5
МОЙ рейтинг
Еще материалы по
Project: Nomads
Всего: 5
Статьи о Project: Nomads
  ОБ ИГРЕ. Симулятор икаров, RPG про наследников барона Экзюпери, стратегия про мрачный фантастический мир летающих островов в ...More
"...На основе движка Project Nomads мы создадим с&...More
Есть на свете игры, что называется, "не от мира сего". Их нельзя назвать "стратегией с элементами action", "RPG с элементами тактического планирования" или "симулятором с элементами всего-на-свете". П...More
<Каталог игры>\Misc - пара иконок, файл с регистрацией и ссылки на официальные ресурсы. <Каталог игры>\Run\Bin\Win32 - вот хлопцы разработчики куда забросили основной exe'шник игры! А по...More
А вместо сердца — пламенный мотор! Из старой песни Истребительный маневр не удался, зато у нас появился шанс погибнуть как Гастелло. Project Nomads — не сов...More
   Огненное светило посылает прощальные лучи золотым облакам и медленно тонет за далеким островом. Мир погружаются во тьму. Над головой перемигиваются звезды... Вы включаете турбо-ранец и летите осматривать свои владения. Мановение руки — и вы взлетели на верхушку навигационной башни. Включаются древние механизмы, и остров несется навстречу неизведанному...
   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. Такая команда заставляет камеру или объект переместиться на определенные координаты с
19 Kb
Кто выключил свет? Это мы
всего-навсего заменили объект
Skybox на... дерево.
определенной скоростью. Немного поэкспериментировав с параметрами, вы сможете написать даже самый сложный анимационный скрипт. Единственная проблема — команд в таком скрипте очень много, и процесс создания анимации долог. Но результат того стоит.  
   В папке 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
26 Kb
Летающие деревья -
феерическое зрелище!

   .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. Здесь
29 Kb
Вражеские самолеты с
отключенным интеллектом
несутся на мою пушку, словно
слепые котята.
хранятся скрипты, отвечающие за искусственный интеллект самолетов, турелей и прочих тех. средств. Мы можем полностью переписать интеллект вражин. Например, чуть-чуть изменив скрипт airplane_avoidcollision.tcl, можно заставить вражеские самолеты врезаться в скалы. Вот как это можно сделать. Скрипт состоит из нескольких десятков процедур вида:
   proc aacdownsmall_test {} {
   if {[.getavoidcollisionkind] == "small"} {
   if {[.getavoidcollisiondirection] == "down"} {
   return 1.0
   } else {
   return 0.0
   }
   } else {
   return 0.0
   }
   }

   Они не уводят самолет от опасного объекта,
24 Kb
Обратите внимание на правую
нижнюю часть картинки. Как вы
думаете, что это такое
гигантское и серое? Да это
наша тень! Как она там
оказалась?
Доэкспериментировался со
скриптами...
а просто проверяют, есть ли опасность и где она. Значит, где-то есть скрипт, который, пользуясь этими процедурами, уводит самолет от столкновения. Можно, конечно, найти этот скрипт и редактировать его, но мы сделаем проще. Если наводчик будет давать стрелку ложные данные о целях, то стрелок наверняка промахнется. Эта процедура как раз выступает в роли "наводчика".
   Посмотрите на нее внимательнее. Если тип объекта — "маленький" и для уклонения надо снизиться, возвращается 1, иначе возвращается 0. Если возвращается 1, самолет уклоняется от препятствия. Давайте изменим в строчке return 1.0 единицу на ноль. Теперь, если опасность маленькая и находится сверху, самолет будет лететь на нее. Если же вы хотите сделать вражин слепыми младенцами, везде в этом файле измените в строчках return единицу на ноль. Первая же скала станет могилой для неприятеля.

   Сохрани меня с собой

    Project Nomads почти вся
создана на скриптах. Мало того, что разработчики сделали все игровые карты скриптами, так еще и... сохраненки тоже записываются в виде скриптов! Они хранятся в папке Save. Там же хранятся и скрипты для сохранения и загрузки. Структура этих файлов — список однотипных команд для создания объектов и присвоения им типовых свойств. Хотите починить не вовремя взорвавшуюся турель?  
   Сохраняйтесь и идите в папку Save. Ищите файл с именем-номером слота сохранения и расширением .n. Открывайте его в текстовом редакторе, ищите строку, соответствующую вашей турели, и изменяйте цифру рядом с параметром setenergy. Так же просто меняются и другие параметры.
   * * *

   Ночь-чародейка накинула на мир свое звездное покрывало. Попутный ветер дует прямо в лицо. А значит, вам снова пора в путь, навстречу новому приключению. Вашему приключению. Вы пройдете через тернии собственного сюжета, мир вам откроют ваши персонажи, и их разум будет подчиняться вашей воле.
Франшизы родом из девяностых продолжают доказывать, что им почти нет равных на арене.
Подводим итоги крупнейшей международной выставки потребительской электроники.
Знаменитая серия отправляет в прошлое, чтобы рассказать историю о том, как Кадзума Кирю стал одним из самых известных мафиози.
Каждый год выходят десятки замечательных инди-игр, и 2016-й не стал в этом плане исключением. Выбор тройки лучших дался нам очень тяжело.
Комментарии к статьям
Войти и прокомментировать                Войти под логином игромании | Зарегистрироваться
Самые комментируемые статьи за месяц:
Кино > Ассасины и тамплиеры на большом экране. Фильм «Кредо убийцы»
Спец > Лучший мой подарочек — это Xbox One S!
Спец > Достать геймпад и плакать: игры, берущие за душу: от Ori and the Blind Forest и This War Of Mine до BioShock Infinite и Life is Strange
Спец > Игра в кубики. В чем сила Minecraft?
Рецензии > Соборы в небесах. Обзор Space Hulk: Deathwing
Спец > Влюбиться в убийцу: история серии Assassin’s Creed
Железный цех > В ожидании ZEN. Тестируем игровой компьютер Edelweiss MSI Edition на базе AMD 970
Спец > Горячий осенне-зимний сезон Windows Store. Главные игровые новинки
Спец > На скорости 160 км/ч, или Как работают гоночные игры
Прямым текстом > Darksiders: Warmastered Edition — жизнеспособное чудище Франкенштейна
Поиск по сайту Игровые платформы: PC  |   X360  |   XONE  |   PS3  |   PS4  |   Wii  |   Wii U  |   PSP  |   Vita  |   NDS  |   3DS  |   Android  |   iOS
1997-2017 ООО «Игромедиа». Мнение авторов и посетителей сайта может не совпадать с мнением редакции. Полное или частичное воспроизведение материалов сайта и журнала допускается только с согласия редакции. Для прямого контакта с редакцией пишите на основную почту «Игромании.ру».
Пользовательское соглашение

КОММЕРЧЕСКИЕ ССЫЛКИ:
Механизм выбора платформы позволяет отображать на страницах информационного портала материалы, относящиеся строго к выбранным платформам.

Каждый пользователь индивидуально выбирает для себя интересующие его игровые платформы.
 
Rambler's Top100 Яндекс цитирования