Какой же платформер без врагов? Нужно
населить ваш виртуальный мир монстрами, которые так и норовят откусить
от героя кусок, да побольше.
Начнем мы, как всегда, с
малого. Помните летающего призрака, самого первого противника в GQ? Вот
его-то мы сейчас и реализуем.
Создаем новый спрайт
размерами 14х25, рисуем что-то похожее на летающую простыню с глазами и
проставляем значения Hotspot по центру (X=7, Y=12). P.S. если
рисунок создается за фоном – то перетаскиваем его на слой выше (в нашем
случае – на слой Carcas). Чтобы рисунки всегда создавались на слое
Carcas, нужно просто выделить его. P.P.S. если вы не можете
перетаскивать спрайт, проверьте, не стоит ли замок на том слое, на
котором он находится.
Переименуйте спрайт в
Ghost. Далее добавляем поведение призраку. Выделяем
Ghost – Properties – Behaviors – Add – Bullet. Bullet (пуля) –
это поведение, при котором объект всегда летит прямо в выбранном
направлении. Сразу изменим пункт Speed (скорость), поставив
значение 50. И сделаем отзеркаливание – Properties – Angle – Auto
mirror.
Нажимаем Run layout, проверяем. Наш
призрак летит вправо с невысокой скоростью. Как же заставить его
повернуть?
Здесь мы можем пойти двумя путями. Первый
зависит от времени, второй – от конкретных позиций на уровне (в GQ
использовался второй метод).
Первый путь. Суть его в
том, что каждые X секунд призрак поворачивается и идет в противоположную
сторону. Когда X секунд прошло снова – призрак вновь поворачивает и так
до бесконечности. Реализация: Переходим в редактор
событий. Новое событие – System – Every X milliseconds – и пишем
значение времени, допустим, 5 секунд (время в редакторе указывается в
миллисекундах, т.е. 1 секунда = 1000 миллисекунд, соответственно 5
секунд = 5000 миллисекунд). Действие – New Action – Ghost – Set
Angle (установить угол) – пишем
Ghost.Angle+180
Разберем фразу
Ghost.Angle+180 Слово перед точкой обозначает объект, над
которым мы хотим провести манипуляции. Нашим объектом является призрак
Ghost. После точки указываем то, что хотим изменить. Мы хотим изменить
угол (Angle). По умолчанию угол равен 0 градусов. К этим 0 градусам мы
каждые пять секунд добавляем 180 градусов, т.е. пишем "+180”. Можно
написать "-180”, значения не имеет.
Проверяем – все
нормально, призрак поворачивается каждые 5 секунд в другую
сторону.
Второй путь (или путь
самурая). Удаляем все то, что мы нахимичили в первом методе.
Переходим в Layout Editor и создаем новый спрайт, размеры произвольные
(для удобства поставьте где-то 10х50), заливаем его любым цветом,
сохраняем, переименовываем в Wall. Объект Wall – это стенка,
при соприкосновении с которой призрак поворачивается на 180 градусов.
Эта стенка не должна быть видимой в игре, поэтому выделяем ее –
Properties – Appearance – ставим галочку у пункта Invisible on
start.
Логично предположить, что стенок должно быть
две: одна слева, вторая справа. Поэтому копируем Wall и ставим одну
стенку на позиции, где призрак должен поворачиваться влево, а вторую на
позиции, где призрак должен поворачиваться вправо. Между ними
располагаем призрака.
Переходим в редактор
событий. Новое событие – Ghost – On collision with another
object (взаимодействует с другим объектом) – Pick an object (выбрать
объект) – Wall – Finish. Действие – New Action – Ghost – Set
angle – прописываем Ghost.Angle+180 – Finish.
Все
готово. Получился летающий призрак, но… Какой-то он не реалистичный.
Можно, конечно, нарисовать ему пару анимаций, но мы пойдем другим
путем.
Переходим в Layout Editor. Выделяем Ghost –
Properties – Bullet Behavior – Add – Sine Изменяем следующие
параметры: Period (частота) – ставим 1600 Range
(высота) – 5
Смотрим что получилось. Вполне себе
симпатично, и без анимирования. А если еще и анимацию
добавить…
Что-то в этом призраке не так.. Он не
атакует героя. Пока что наш герой бессмертный, давайте это
исправим.
Выделяем bazis – Properties – Private
Variables – Add/Edit Вылезло небольшое окно, в котором хранятся
все переменные объекта bazis. Переменные – это очень важная
функция. С помощью нее можно реализовать очень и очень много
действий. Как пример: здоровье героя и врагов, патроны к
оружию, очки, модели поведения любых объектов на экране. Я вам
настоятельно рекомендую почитать специализированные статьи по
переменным, т.к. без их знания даже в Scirra Construct далеко не
уедешь.
Рассмотрим, что можно здесь
сделать: Зеленый крест – добавить новую
переменную Красный крест – удалить выбранную
переменную Листок с карандашом – редактировать выбранную
переменную Стрелки – перемещение выбранной переменной
выше/ниже
Нажимаем на зеленый крест. И изменяем
следующие параметры: Name – Life Type (тип переменной:
числовой или текстовый) – Оставляем Number Initial (значение
при старте) – 4
Мы создали частную переменную для
объекта bazis со значением 4. Предполагается, что это 4 жизни у
героя.
Переходим в редактор событий. Новое
событие – bazis – On collision with another object – Pick an object –
Ghost – Finish Действие – New action – bazis – Substruct from
value – в пункте Value прописываем 1
Теперь при
соприкосновении героя с призраком, у героя отнимается единица из
переменной Life. Давайте сделаем так, чтобы при Life = 0 герой
умирал.
Новое событие – bazis – Compare a private
variable и проверяем, чтобы следующие параметры были
такими: Private variable (частная переменная) –
Life Comparison – Equal to (равно) Value –
0 Т.е. частная переменная Life равна 0. Если все ок -
Finish
У Comparison есть еще несколько параметров, на
все случаи жизни: Not equal to – не равно Less than –
меньше, чем Less or equal – меньше или равно Greater
than – больше, чем Greater or equal – больше или
равно
Действие – New action – bazis –
Destroy Вторичное действие (еще одно действие для этого же
события) – New action – Hero – Destroy.
Теперь, если
вы соприкоснетесь с призраком 4 раза – герой
умрет.
Неплохо было бы сделать, чтобы героя
отталкивало от призрака, при соприкосновении. Можно делать
отдачу для каждого типа призраков отдельно, но мы позаботимся обо всех
сразу.
Переходим в Layout editor и выделяем Ghost –
Properties – Groups – Families – Add – выделяем Enemy -
Ok Нашему призраку добавился класс Enemy. Теперь мы будем всех
призраков добавлять в данный класс, чтобы им устанавливались одинаковые
настройки.
!!!ВНИМАНИЕ!!! Следующая реализация
соприкосновений работает не совсем корректно, в чем причина – напишу
несколькими абзацами
ниже.
Переходим в редактор
событий.
Новое событие. Обратите внимание, что
добавилась группа Families. Группы и пункты добавляются в редактор
событий только в том случае, если они присутствуют в Layout Editor или в
параметрах у уже созданных объектов. Выбираем Enemy – On
collision with another object – Pick an object –
bazis
Правой кнопкой мыши по только что созданному
событию – Insert sub-event (вставить под-событие) – Hero – Compare angel
– пишем 0 – Finish Опять правой кнопкой мыши по созданному
под-событию – Insert sub-event – System – Trigger once while true
(выполнить один раз, если правда) Действие – New action – bazis
– Platform – Set X component of motion – пишем -500 (минус пятьсот) -
Finish
Sub-event (под-событие) – это события, которые
будут выполняться только в том случае, если будет выполнено событие,
находящееся выше него.
Мы сделали так, что при
соприкосновении bazis с любым призраком, входящим в группу Enemy,
включалось под-событие, которое проверяет, в какую сторону смотрит наш
герой. Если герой смотрим в правую сторону (0 градусов), то его
отталкивает на 500 единиц влево.
Теперь сделаем
аналогичное действие, но для того события, когда герой смотрит влево
(180 градусов).
Новое событие – Enemy - On collision
with another object – Pick an object – bazis Создаем
sub-event – hero – Compare angel – пишем 180 – Finish Sub-event
для только что созданного sub-event’а – System – Trigger once while
true Действие – New action – bazis – Platform – Set X component
of motion – пишем 500 - Finish
Все готово,
проверяем.
Перед реализацией данной системы, я писал,
что у нее есть один существенный минус. Минус заключается в том, что
даже если вы будете просто стоять на месте так, чтобы герой смотрел в
левую сторону, а призрак подойдет с правой стороны – героя все равно
унесет в правую сторону, за место положенной левой. Если кто-то знает,
как сделать нормальную коллизию героя – напишите, я изменю этот
пункт.
Стрельба и уничтожение
противника
Далее я хотел бы показать вам,
как реализовать стрельбу. Для начала, нам понадобиться
реализовать пулю. Переходим в Layout Editor, создаем новый
спрайт с размерами 20х15 и точкой Hotspot по центру (10х8), рисуем пулю,
сохраняем. Если вы хотите, чтобы ваша пуля была не статичной,
а, например, как огненное кольцо в GQ – добавляем новые кадры анимации в
группу Default. В GQ огненное кольцо состоит из 5 кадров, а скорость
смены кадров – 10, зацикливание включено.
Далее
выделяем пулю, переименуем спрайт в Bullet и добавим поведение пули:
Properties – Behaviors – Add – Bullet Изменим скорость (Speed)
на 330 Также изменим пункт Destroy when (когда уничтожить) на
Offscreen (за пределами экрана).
Переходим в редактор
уровней. Новое событие – MouseKeyboard – On key pressed –
выбираем X – Finish Создаем вторичное событие (Insert new
condition) – Hero – Compare angel – Finish Создаем третичное
событие (Insert new condition) – System – Compare и далее
прописываем: Value 1 – bullet.count Comparison – Lower
than Value 2 – 3 И создаем последнее событие (Insert
new condition) – System – Every X milliseconds – 100 –
Finish
Первым действием мы указали, на какую клавишу
нажал игрок. X – это клавиша, на которую будет осуществляться стрельба.
Можете изменить на нужную. Вторичным событием мы вычислили
угол, т.е. сторону, в которую повернут герой. Третичное событие
– ограничили число выстрелов. Т.е. если пуль на экране больше, чем 3 –
герой больше не будет стрелять. Ну и последним событием мы
ограничили частоту выстрелов. Чем больше число – тем реже герой сможет
стрелять. Проследите за тем, чтобы четвертое событие стояло на последнем
месте, иначе, перед стрельбой будет задержка в 100
миллисекунд.
Новое действие – New action – Hero –
Spawn another object (создать объект) – Pick an object (выбор
создаваемого объекта) – Bullet – где Layer (слой) ставим 2, где Image
point name or number ставим 1 – Finish Еще одно действие – New
action – Bullet – Set angle – 0 – Finish
Мы сделали
так, что bazis создает внутри себя другой объект на слое 2, и
устанавливает ему угол, равным 0 градусов (т.е. пуля летит вправо). Как
вы помните, на первом слое у нас фон, на втором – каркас. Пулю нужно
создавать на том слое, где у нас находится герой, а герой у нас
находится на втором слое. Если вы будете создавать больше слоев
– всегда следите за тем, на каком из них находится герой и на каком
создается пуля. Номера слоев написаны слева от названия, под
изображением замка.
Теперь сделаем все то же самое,
но для левой стороны.
Новое событие – MouseKeyboard –
On key pressed – выбираем X – Finish Создаем вторичное событие
(Insert new condition) – Hero – Compare angel – 180 –
Finish Создаем третичное событие (Insert new condition) –
System – Compare и далее прописываем: Value 1 –
bullet.count Comparison – Lower than Value 2 –
3 И создаем последнее событие (Insert new condition) – System –
Every X milliseconds – 100 – Finish Опять-таки проследите,
чтобы четвертое событие стояло на последнем
месте.
Новое действие – New action – Hero – Spawn
another object – Pick an object – Bullet – где Layer ставим 2, где Image
point name or number ставим 1 – Finish Еще одно действие – New
action – Bullet – Set angle – 180 – Finish
Можно
проверить что получилось. По нажатию X из героя вылетает пуля, их число
ограничено, интервал стрельбы тоже ограничен, пуля летит в нужную
сторону. Все вроде ничего, но как сделать так, чтобы пуля
вылетала не из другой части героя, а, к примеру, из его головы, руки или
левой пятки? Перейдите в Layout Editor и щелкните два раза по
спрайту Hero. Далее в Picture Editor, на левой панельке
выберите Image points и поставьте его в ту точку, из которой хотите,
чтобы пули вылетали.
Так, теперь нужно
реализовать, чтобы призраки от выстрелов исчезали. Сделаем так,
чтобы призрака можно было убить с двух выстрелов. Для этого
нужно дать призраку переменную Life, и указать число при старте –
2.
Выбираем призрака – Properties – Private Variables
– Add/Edit. Создаем новую переменную с именем Life, Type –
Number, Initial – 2.
Переходим в редактор
событий. Мы должны создать такое событие, когда при
столкновении пули с призраком, у него отнималась одна единица жизни и
пуля исчезала.
Новое событие – Bullet – On collision
with another object – Pick an object – Ghost Действие – New
action – Ghost – Subtract from value – Private variable: Life, Value: 1 –
Finish Вторичное действие – New action – Bullet -
Destroy
Далее нужно создать такое событие, что когда
переменная Life = 0, призрак уничтожался.
Новое
событие – Ghost – Compare a private variable – Private variable: Life,
Compression: Equal to, Value: 0 – Finish Действие – New action –
Ghost – Destroy
Проверяем. Еще было бы
неплохо анимировать героя, когда он совершает выстрел. Но это, я думаю,
вы теперь и сами сможете сделать.
Создаем
удобства (ESC, рестарт)
Основная механика
готова. Давайте, теперь реализуем некоторые удобства, такие, как
выключение игры клавишей, растягивание уровня по всему экрану и рестарт
уровня.
Первое – это совсем просто. Новое
событие – MouseKeyboard – On key pressed – Escape Действие –
New action – System – Close Готово.
Теперь
реализуем растягивание уровня по всему экрану. Переходим в
Layout Editor и дважды щелкаем по пустому месту на уровне. Выбираем
объект Window. Переходим обратно в редактор
событий. Новое событие – MouseKeyboard – On key pressed –
F1 Действие – New action – Window – Maximize Это мы
сделали растягивание по нажатию клавиши F1.
Новое
событие – MouseKeyboard – On key pressed – F2 Действие – New
action – Window – Restore А это мы уже реализовали возвращение
экрана к первоначальным настройкам.
Все готово. А что
там с рестартом? Здесь суть в том, что при включении игры,
происходит сохранение, а при нажатии клавиши R – игра загружала это
сохранение.
Новое событие – System – Start of
layout Действие – New action – System – Quicksave / Quickload –
Quicksave – Finish
Теперь при старте уровня игра
сохраняется. Реализуем загрузку:
Новое событие –
MouseKeyboard – On key pressed – R Действие – New action –
System - Quicksave / Quickload – Quickload –
Finish
Готово.
Интерфейс:
жизни и очки
Наш интерфейс будет
показывать жизни и очки. Для отображения жизней нам
понадобиться 4 спрайта. Рисуем 1 кружок серого цвета, размером
21х21 . Не забудьте Hotspot выставить по центру. Копируем круг и
вставляем три раза через Paste clone. Итого у нас должно получиться 4
спрайта, дайте им следующие
имена: 1.
Life1 2.
Life2 3.
Life3 4.
Life4
Создаем новый слой, который будет расположен
выше всех. Повторю, как это сделать: В правой панельке
переходим во вкладку Layers и нажимаем на зеленую стрелку вверх. Имейте
ввиду, чтобы жизни и очки отображались поверх всего остального в игре,
нужно, чтобы только что созданный слой всегда был
сверху.
Выделите слой, переименуйте его в Info. А
также измените следующие параметры у слоя: Scroll X Rate – 0%
(скорость прокрутки по X) Scroll Y Rate – 0% (скорость
прокрутки по Y) Тем самым мы отключили прокрутку слоя
Info.
Перетащите кружки на слой
Info.
Переходим в редактор событий. Сейчас
мы будем делать несколько событий, направленных на одно и то же действие
– отображение здоровья. Но, прежде чем начать, для удобства, можно
создать группу, в которой мы будем хранить все эти
события. Делается это так: Правой кнопкой мыши по
пустому месту в редакторе событий – Insert group. Title – это
название группы, напишите Score and Lifes. Description –
описание, напишите: "Здесь хранятся события, отображающие жизни и
очки”. Сейчас вы можете наплевать на это действие, объяснив это
тем, что итак знаете, что да где расположено. Но через некоторое время,
когда вы решите что-то доработать или исправить, вы просто забудете,
где, то самое событие, и вам придется перебирать все
имеющееся.
Ближе к делу. Новое событие –
bazis – Compare a private variable – Life, Equal to, 0 –
Finish Действие 1 – New action – Life1 – Set position - -200
(минус двести); -200 (минус двести) - Finish Действие 2 – New
action – Life2 – Set position - -200 (минус двести); -200 (минус двести)
- Finish Действие 3 – New action – Life3 – Set position - -200
(минус двести); -200 (минус двести) - Finish Действие 4 – New
action – Life4 – Set position - -200 (минус двести); -200 (минус двести)
- Finish
Сейчас мы сделали так, что когда у героя не
остается жизней, все круги выходят за пределы экрана, т.е. становятся
для игрока невидимыми. Теперь нужно сделать почти аналогичные действия,
но для событий, когда у героя остается 1, 2, 3 или 4
жизней.
Новое событие – bazis – Compare a private
variable – Life, Equal to, 1 – Finish Действие 1 – New action –
Life1 – Set position - 35; 25 - Finish Действие 2 – New action
– Life2 – Set position - -200 (минус двести); -200 (минус двести) -
Finish Действие 3 – New action – Life3 – Set position - -200
(минус двести); -200 (минус двести) - Finish Действие 4 – New
action – Life4 – Set position - -200 (минус двести); -200 (минус двести)
- Finish
У этого события два отличия от
предыдущего: 1. Рассматривается событие, когда у игрока
осталась 1 жизнь 2. Когда у игрока осталась одна жизнь, три
круга вылетают за экран, но один остается на позиции 35; 25, т.е.
остается там, где ему и положено
быть.
Продолжаем. Новое событие – bazis –
Compare a private variable – Life, Equal to, 2 –
Finish Действие 1 – New action – Life1 – Set position - 35; 25 -
Finish Действие 2 – New action – Life2 – Set position - 70; 25
- Finish Действие 3 – New action – Life3 – Set position - -200
(минус двести); -200 (минус двести) - Finish Действие 4 – New
action – Life4 – Set position - -200 (минус двести); -200 (минус двести)
- Finish
Новое событие – bazis – Compare a private
variable – Life, Equal to, 3 – Finish Действие 1 – New action –
Life1 – Set position - 35; 25 - Finish Действие 2 – New action
– Life2 – Set position - 70; 25 - Finish Действие 3 – New
action – Life3 – Set position - 105; 25 - Finish Действие 4 –
New action – Life4 – Set position - -200 (минус двести); -200 (минус
двести) - Finish
Новое событие – bazis – Compare a
private variable – Life, Equal to, 4 – Finish Действие 1 – New
action – Life1 – Set position - 35; 25 - Finish Действие 2 –
New action – Life2 – Set position - 70; 25 - Finish Действие 3 –
New action – Life3 – Set position - 105; 25 - Finish Действие 4
– New action – Life4 – Set position - 140; 25 -
Finish
Вот и все готово.
Приступим
к реализации очков. Если мы хотим, чтобы очки продолжали
накапливаться на всех уровнях, а не каждый раз заново, то частная
переменная нам не поможет. Для этих целей нам понадобится глобальная
переменная. Глобальные переменные сохраняются на протяжении
всех уровней, а частные – только на
выбранном.
Создаем глобальную переменную: В
правой панели переходим во вкладку Project – щелкаем правой кнопкой мыши
на папке Global Variable – Add global variable Name –
Score Type – Number Initial -
0
Глобальная переменная добавлена. Далее добавляем
текст, который будет отображать переменную. Переходим в Layout
Editor. Правой кнопкой мыши – Insert an object – Text – щелкаем в любое
место. Выделяем текст – Properties: Name –
text_score X – 704 Y – 20
Ниже, во
вкладке Properties настраиваем: Size (размер) –
24 Ставим галочку напротив Bold (жирный) и Italics
(курсив) Color (цвет) – Light Grey (4 ряд, 8
место)
Также проследите за тем, чтобы текст был на
слое Info.
Возвращаемся в редактор
событий. Находим наше самое первое событие Always, к нему
добавляем новое действие: New action – text_score – Set text
(установить текст) – внизу, из списка объектов, выбираем System – Get
global variable (получить глобальную переменную): Теперь в поле
Text вы увидите строку global(‘Variable name’). Если вместо
Variable name просто вписать имя глобальной переменной (score), то на
экране будут отображаться только цифры (очки). Нам же нужно, чтобы перед
цифрами была надпись, которая показывает, что это за цифры. Для этого
перед global(‘Variable name’) нужно написать тот текст в кавычках,
который мы хотим видеть перед цифрами, и соединить текст и цифры знаком
&. Итого в поле Text пишем: "Score:
"&global('Score')
Готово, теперь на экране
есть надпись, показывающая очки. Что теперь? А теперь мы
сделаем сбор очков и назначим награду за
призраков.
Сперва разберемся с
призраками: Найдите наше событие Ghost: Value ‘Life’ Equal to
0 Как вы помните, оно означает, что когда здоровье у призрака
равно 0 – он исчезает. Добавим за это награду: New
action – System – Add to value – Variable: Score, а в пункте Value
ставим награду, допустим в 10 единиц - Finish Готово, теперь за
убийство призраков дается 10 очков.
Организуем сбор
очков. Нам понадобится новый круглый спрайт, размером 10х10, желтого
цвета. Рисуем, сохраняем, переименовываем в Point, расставляем их по
уровню. Проследите за тем, чтобы Point были расположены на слое
Carcas.
Заходим в редактор событий. В нашей
группе Score and Lifes создаем новое событие – Hero – On collision with
another object – Pick an object – Point – Finish Вторичное
событие – System – For Each Object – Pick an object – Point –
Finish Проследите за тем, чтобы событие For Each Object было
выше события On collision… New action – Point –
Destroy New action – System – Add to value – Variable: Score,
Value: 10 – Finish
Если не прописывать событие For
Each Object, то вы можете столкнуться с такой проблемой: когда герой
взаимодействует сразу с двумя спрайтами Point, очки добавляются только
за один спрайт.
Переход на новый
уровень
Перед тем, как устраивать переход
на другой уровень, нужно, чтобы этот самый другой уровень
существовал. Опять-таки есть два способа создания
уровней: 1. На правой панели переходим во вкладку Project –
нажимаем правой кнопкой мыши по Layouts – Add layout. Уровень
создан. Но он…совершенно пустой. А если вы хотите, чтобы все настройки
со старого уровня перенеслись на новый? Тогда читаем второй
способ.
2. На правой панели переходим во вкладку
Project – нажимаем правой кнопкой мыши по Layout 1 – Clone
layout. Все готово, теперь у вас 2 идентичных уровня, причем
при изменении местоположения спрайтов или их удаление на одном уровне,
не будут сказываться на другом. Но! Если изменять спрайты в Picture
Editor – то они будут изменяться на обоих уровнях
сразу!
Обратите внимание, что в созданном новом
уровне, отсутствуют настройки из редактора событий первого уровня. Их
нужно просто скопировать.
Допустим, вы создали два
уровня. Как теперь их соединить? Суть в том, что когда спрайт
соприкасается с невидимым объектом, запускается событие, которое
переносит нас на другой уровень. Значит, нам нужен этот самый невидимый
спрайт. Создаем новый спрайт, размерами 30х200, ставим его в
конец уровня, где будет осуществляться переход, изменим имя на Next, а
ниже, во вкладке Appearance ставим галочку напротив Invisible on
start.
Переходим в редактор событий. Новое
событие – Hero – On collision with another object – Pick an object –
Next – Finish Действие – System – Next layout –
Finish
Готово.
Эпилог
Вот
и все. Я надеюсь, что дал вам необходимую информацию по созданию 2D
платформера а-ля Ghost Quest.
Зарег. на сайте Всего: 3672 Новых за месяц: 1 Новых за неделю: 0 Новых вчера: 0 Новых сегодня: 0 Из них Админинистраторов:1 Модераторов:0 Проверенных:0 Обычных юзеров:3671 Из них Парней:3192 Девушек:480
Здравствуйте уважаемые любители игростроя! Этот сайт создан специально для вас! Здесь есть всё что нужно для редактирования и созданию игр, в том числе и без программирования... На этом сайте вы найдёте очень много файлов статей для редактирования игор. Также на сайте есть очень много различных файлов к играм, программ, патчей, трейнеров и др., для таких известных игор как GTASA, NFS, CS1.6, Crysis и др. Также есть различные программы связаны с играми, для создания 3D-моделей, для извлечения ресурсов из разных игор. На сайте очень много картинок, скриншотов и обоев на рабочий стол из игор. Здесь вы найдёте всё необходимое для создания модификаций к вашим любимым играм, а так же создания собственных игр. Для игроделов на сайте можно скачать необходимые для этого инструменты (конструкторы игр, движки), изучить необходимую литературу (статьи, журналы, книги) и т.д. На нашем форуме вы всегда сможете спросить совет или поделиться своими наработками. Если у вас имеются интересные файлы, то вы так же можете разместить их на нашем сайте.Ващей фантизии нет границ? Тогда вперёд, покажите всем на, что вы способны! А наш сайт вам в этом поможет. Играйте, создавайте, модифицируйте, удивляйте людей! И может быть через какое то время весь мир узнает о Вас!