Строим motion simulator из палок и синей изоленты.

Простой, бесплатный конструктор для создания несложных 2D и псевдо-3D-игр. Прочитав инструкцию, Вы сможете сделать свою первую простую игрушку, всего за пару часов.

Внимание! Приведённое ниже описание работы с программой относится к более ранней версии: Game Maker 7.0.

Если Вы провели детство, сидя у телевизора и играя в игры на телевизионных приставках (Dendy, Sega и им подобных), то Вам стоит обязательно прочитать эту статью! Почему? Потому что у Вас наверняка возникало чувство, что ту или иную игру надо переделать и сделать еще лучше. Сегодня мы и займемся этим делом. Мы будем создавать собственную компьютерную игру!!!

Но как же? Программировать, ведь, мы не обучены!!! :) Именно для нас с Вами (тех, кому не терпится сделать игру, но не хочется вникать в принципы создания программ) существуют специальные инструменты, которые позволяют наглядно соорудить тот или иной игровой процесс без применения знаний в области программирования. Знакомимся с Game Maker"ом.

Эта программа может помочь нам создать несложную игру, скомпилировать ее и даже распространять в Интернете без каких-либо ограничений. Причем создавать можно не только 2D (хотя их делать проще и быстрее, а главное без знания программирования), но и полноценные трехмерные проекты!

Лучше Game Maker"a может быть только Game Maker Pro (платная версия программы). Давайте посмотрим, чего мы лишаемся в бесплатной редакции.

Сравнение платной и бесплатной версий редактора Game Maker

Если мы доплатим 20$, то получим полностью функциональную среду разработки игр. Однако кое-что можно решить и без покупки лицензии (но тут надо знать внутренний скриптовый язык Game Maker"a). Мы с Вами создадим сегодня простенькую игру, для того, чтобы Вы могли понять принцип работы и реализовать свои более сложные идеи.

Установка гейм-редактора

Но сначала установим Game Maker. Установка происходит с использованием инсталлятора, поэтому Ваша задача - только соглашаться со всем, что Вам предложат (если Вас это конечно устраивает:)). Запустив программу, Вы увидите окно, которое предлагает усовершенствовать Game Maker до Pro версии:

Чтобы запустить саму программу нажмите на самую нижнюю кнопочку ("Don"t Upgrade Now"). Теперь Вы увидите рабочее окно:

Да, Game Maker - на английском, но в архиве с программой Вы найдете русификатор (а также руководство пользователя на русском и русификатор библиотек программы (хотя они иногда не срабатывают:))). Запускаем русификатор и устанавливаем его в папку с программой. Перезапустим Game Maker и, вуаля, вот он русский интерфейс:):

Интерфейс и работа с редактором

Сам интерфейс довольно прост и незамысловат. Вверху расположена панель меню (которой мы зачастую пользоваться не будем:)). Под ней - панель с кнопками управления и создания элементов игры. А ниже - рабочая область, поделенная на две колонки: в левой отображена структура игры, а в правой части будут появляться окна настройки компонентов.

Внимательнее посмотрим на дерево ресурсов игры.

Первая папка - "Sprites" (спрайты), служит для хранения картинок, которые соответствуют героям Вашей игры. Нажав правой кнопкой мыши на этой папке, выберите в меню "Create sprite" (точно так же добавляются элементы во все остальные папки) и сможете нарисовать или загрузить готовую картинку с персонажем.

Папка "Sounds" - предназначена для хранения музыкальных файлов к игре (лучше всего MIDI или MP3 формат).

В "Backgrounds" будем добавлять фоновые рисунки.

Папка "Paths" хранит траектории движения объектов игры.

В "Scripts" Вы можете добавлять собственноручно написанные сценарии для выполнения их в игровом процессе.

В "Fonts" хранятся шрифты, которые Вы желаете видеть при отображении надписей.

"Time Lines" хранит, так называемые, тайм-лайны. Это специальные процессы, благодаря которым, любое событие в игре можно сопоставить с определенным моментом времени.

Папка "Objects" является одной из самых главных. Именно здесь спрайты будут превращаться в персонажей игры и наделяться теми или иными характеристиками.

Не менее важная папка "Rooms". Здесь мы будем хранить информацию об этапах игры.

Под папками находятся еще три пунктика. Последний - "Extension Packages" - в бесплатной версии не работает. Два же предыдущих отвечают за глобальные настройки проекта и информацию, которую будет получать пользователь (хотя его не обязательно заполнять).

Суть программы кратко изложил:), теперь к делу. Для начала Вы можете посмотреть готовые примеры игр (их там четыре), а потом возьметесь за создание своих. Мне, например, пришла в голову идея сделать игру, в которой за определенное время надо уничтожить комаров, которые летают по экрану:). Как реализовать эту идею? Рассмотрим по порядку.

Создание и использование спрайтов (картинок) для игры

Начнем с того, что создадим спрайты к нашей игре, то есть картинки, из которых потом получатся все объекты. Кликнем правой кнопкой мыши по папке "Sprites" и выберем пункт "Create sprite".

Спрайт можно нарисовать прямо, не выходя из программы, а можно загрузить уже готовую картинку (как делал я). Картинка должна быть на однотонном или (что еще лучше) на прозрачном фоне (например, в PNG-формате). Если нас не устраивает что-то, после загрузки картинки жмем на кнопку "Редактировать" и переходим к подгонке:

В этом окне можно настроить размер, применить эффекты и переориентировать изображения. Если же Вам и этого недостаточно, нажмите на иконку с карандашом, и сможете перейти ко встроенному графическому редактору.

Когда все поправки внесены, нажимаем зеленую галочку под пунктом "Файл" и возвращаемся к первому окну. Здесь нам потребуется указать, что фон будет прозрачным и установить границы видимого изображения. Для прозрачности поставим галочку в пункте "Прозрачность".

Теперь обратим внимание на рамку, которой обведен наш рисунок. Если она совпадает с границей спрайта, то ничего не надо делать. Если же какая-то часть обрезана, в менюшке "Граница спрайта" изменим положение кнопки с "Автомат" на "Вручную" и отрегулируем положение рамки. Также можно установить для данного спрайта центр. Нажмем кнопку "По центру" и мышью сами установим крестик, который появится, в нужное место.

Создание музыки к игре

Теперь создадим музыкальное сопровождение и графические фоны к нашей игре. Здесь все предельно просто. Находим папку "Sounds", создаем в ней новый звуковой файл и в открывшемся окошке жмем "Загрузить звук". Выбираем заранее подготовленный звук (желательно в mp3 или midi не дольше минуты) и нажимаем "Открыть". Звук добавлен!

Создание фонового изображения

Точно так же поступаем и с фоновым изображением. Создаем новое, загружаем готовую картинку и жмем "Ok". Единственный нюанс - фоном можно сделать небольшую картинку, которая будет использоваться как тайл. То есть, если не требуется определенный четкий рисунок, а лишь абстрактный фон, то можно применить небольшое по размеру изображение, которое будет многократно повторяться.

Для того, чтобы это сделать достаточно отметить в параметрах изображения галочкой пункт "Фон как тайл".

Создание объектов игры

Следующий этап - создание из спрайтов объектов игры. Это самый важный и самый сложный момент, так как Вы должны тщательно продумать все взаимосвязи, которые будут происходить между объектами.

В нашем примере игры надо чтобы по экрану летали комары, существовал какой-то интервал времени, по истечению которого игра бы заканчивалась, и существовала мухобойка, которой можно управлять. При этом мухобойка должна изменяться ("рабочее" и "нерабочее" состояние), убивать комаров и при этом добавлять нам очки.

Рассмотрим варианты создания объекта на примере все той же мухобойки:). При создании объект получается "пустым". Чтобы привязать к нему подготовленное изображение, надо выбрать его в окошке "Спрайт", сразу под именем объекта.

Теперь, когда объект готов, приступим к его конфигурированию. Вот, что получилось у меня:

Создание игровых событий

Событие "Create" - подразумевает исполнение ряда действий, которые происходят при создании объекта. Здесь у нас есть три действия: начинает играть фоновая музыка, отображается сообщение о том, как играть и запускается таймер. Остальные действия связаны с нажатием и отпусканием клавиш управления.

Например, событие "Press Space" изменяет спрайт нашей мухобойки на спрайт "Мухобойка 2" (имитирует удар), и наоборот "Release Space" возвращает мухобойку в исходное положение.

Вообще, несмотря на ограничения в бесплатной версии Game Maker, возможностей здесь тоже немало. Вы, например, не ограничены в задании событий. Вот те из них, которые можно использовать.

О "Создании" мы уже говорили. Противоположное событие - "Уничтожение". В нашем примере его можно применить к комарам (например, при уничтожении добавляются очки). Событие "Сигнал" можно использовать при проектировании неких действий, связанных с определенным временем. "Шаг" используется для программирования действий объектов при передвижении.

Если предметы в игре соприкасаются друг с другом, то при помощи события "Столкновение" можно задать параметры их взаимодействия.

События "Клавиатура" и "Мышь" используют для программирования управления игровым процессом. Для этих же целей используются события "Нажать/Отпустить клавишу". Событие "Рисование" применяется для того, чтобы объекты могли в результате взаимодействия между собой выводить на экран какие-либо графические фигуры. "Другие события" позволяют всячески корректировать действия объекта в той или иной ситуации, либо создавать пользовательские события.

Создание комнат (этапов)

Когда Вы разберетесь с действиями объектов, переходите к созданию комнат. Комнаты это и будут наши этапы игры. При создании комнаты Вы можете задать такие параметры, как имя, заголовок (то, что будет отображаться в углу экрана), размер окна, скорость.

Также Вы сможете добавить фоновые изображения (в виде тайлов или статической картинки), виды (та часть комнаты, которая отображается в данный момент игры) и объекты. Все это можно сделать за пару кликов мышки.

Использование путей и тайм-лайнов

Заметно расширяет возможности игры использование путей (paths), тайм-лайнов (time lines) и скриптов (scripts). В нашем примере были использованы пути для задания свойств передвижения комаров (для каждой группы свой путь). Создание пути происходит в результате простого указания точек:

Также в примере игры я использовал тайм-лайн для ограничения времени, отводимого на прохождение уровня. Суть его такова: период указывается с учетом не определенного времени, а шагов (1 секунда = около 33 шагов). Поэтому, если хотите использовать данный ресурс, поэкспериментируйте со значением.

В данном случае, я выбрал количество шагов - 400 (около 12 секунд). На последнем шаге программа проверяет количество оставшихся комаров и, если оно равняется нулю, то Вы переходите на следующий этап. В противном случае Вы увидите сообщение о том, что Вы проиграли и игра перезапустится.

Вот теперь, когда все готово, можно запустить нашу игру и проверить на ошибки. Нажимаем на зеленый треугольник на панели кнопок, и после компиляции игра будет запущена.

Создание скриптов

Для решения более сложных задач Вам рано или поздно придется писать скрипты. В этом нет ничего сложного, если хорошенько разобраться. Я советую Вам почитать мануал, который находится в архиве вместе с программой - там Вы найдете советы и объяснения касательно скриптового решения той или иной задачи.

Во второй версии игры "Комариный убийца" я использовал скрипт чтобы изменить курсор на спрайт мухобойки. Он выглядит очень просто, всего одна строчка, - {cursor_sprite=object2} .

Выводы

Создавать игры с Game Maker очень легко и просто, а, особенно, интересно! Как утверждают разработчики и фаны этой программы, на базе ее движка можно реализовать проект любой сложности. Начиная с одноэкранной бродилки и заканчивая трехмерным миром в стиле War Craft - все это можно сделать, освоив Game Maker! Удачи Вам в Ваших начинаниях!

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.

Написать собственную игру - достаточно сложно, особенно если вы решились делать это самостоятельно. Вы должны для этого обладать навыками дизайнера, программиста, помимо этого у вас должно быть достаточно свободного времени.

Инструкция

  • Выучите язык программирования, на котором вы хотите написать симулятор. Для этого вам необходимо прочитать достаточное количество литературы и обладать хорошими практическими навыками в написании сложных программ, если вы собираетесь заниматься изучением языка программирования самостоятельно, то это может занять у вас времени от полугода и больше.
  • Если же вы обладаете данными навыками, перейдите к созданию игрового движка. Для получения помощи по ходу его создания периодически обращайтесь к альтернативным источникам информации, например, различным тематическим форумам.
  • Обратите внимание, что при написании движка программы вам уже необходимо наличие плана игры, и чем более детальным он будет, тем меньше проблем возникнет у вас в дальнейшем. Сначала напишите в кодовом виде общий план вашего симулятора, продумайте основные аспекты, пусть даже они будут не связаны пока что между собой, в дальнейшем вы придумаете, каким образом соединить их в одно.
  • Продумайте их графическое исполнение. Постепенно от более общего вида переходите к конкретному вплоть до прописания цвета одежды персонажей (к примеру). В самом начале процесса постарайтесь не заострять внимание на мелочах, поскольку это отвлекает от виденья общей картины.
  • Реализуйте написанную вами игру графически. Для этого используются специальные редакторы. Для целей моделирования вам также необходимо программное обеспечение. Обратите внимание, что процесс создания собственной игры настолько трудоемкий и сложный, что вряд ли вы обойдетесь своими силами, скорее всего, вам придется нанять сторонних специалистов. Также этот процесс достаточно затратный, начиная от программного обеспечения и заканчивая оплатой услуг привлеченных разработчиков и дизайнеров.
  • Обычно первый комментарий к статье про какую-то неведомую технологию выглядит так: «Вы бы перед тем как углубляться сначала рассказали что это и зачем нужно». Итак, сия чуднАя периферия призвана при игре в автомобильные симуляторы имитировать воздействие перегрузок на игрока. В данном случае это обеспечивается наклоном кресла по двум осям, следовательно получился симулятор движения с двумя степенями свободы.

    Наглядная демонстрация:

    Кусочек истории
    Несколько лет назад увидел в Интернетах этот ролик . Захотелось построить что-то похожее. Рассудив, что такую конструкцию я не осилю, решил сделать просто качающееся кресло. Погуглил, оказалось Америку я не открыл и такие устройства бывают. Девайс, описанный в топике реализован по схеме racingseat, когда кресло закреплено на карданной передаче или её функциональном аналоге. Это уже вторая попытка реализации. Первой была схема joyrider, при которой кресло вращается на двух перпендикулярных осях в идеале пересекающихся в центре масс платформы. Также я исходил из того, что денег нет. Поэтому между хорошим, дешевым, плохим и дорогим пришлось выбирать хорошее и дешевое.
    Комплектующие
    Двигатель. Изучая тематические ресурсы на предмет выбора, так и не смог найти четкий ответ какой мощности двигатель нужен. В предыдущей версии я использовал двигатель от аккумуляторного шуруповерта, результат был не очень. Обычно для таких целей используют мотор-редукторы для стеклоочистителей автомобилей. Рекомендуют использовать узлы от автомобилей с большими лобовыми окнами (большие легковушки, автобусы, грузовые автомобили), поскольку электромоторы там мощнее. И даже несмотря на это симоводы обычно жалуются на малую мощность. Оценив бюджет я решил забить на рекомендации, смириться с малой мощностью и сделать дешево и сердито - прикупил два мотор-редуктора от Ланоса по $20 каждый. Двигатель маркирован как 30Ваттный. Я полагал пластиковая ведомая шестерня редуктора проживет недолго. К счастью я ошибся, спустя пол года использования не появилось даже люфта. Могу сказать, что по ощущениям мощности этих двигателей вполне достаточно. При желании можно поднять напряжение питания и получить еще немного динамики.

    Карданная передача использована от карданного вала ВАЗ-2101. ~$20
    Блок питания 12В 350Вт заказан в Китае, поскольку в ATX"овом блоке питания чуть меньшей мощности срабатывала защита даже при работе одного двигателя. Думаю эту защиту при желании можно легко отключить, но не стал заморачиваться. Китайский же тянет оба двигателя не напрягаясь. ~$30
    Шарниры ball joint – шарниры, передающие усилие мотор-редукторов на кресло. Не знаю как этот шарнир называется по-русски. Возможно шаровой шарнир. Первая мысль была использовать рулевые наконечники от автомобиля. Купил, попробовал - оказались слишком тугие и громоздкие. Затем решил сколхозить самодельные - оказались слишком большими зазоры. В результате заказал в том же Китае по $3 за штуку. Забавно, что когда я пытался найти такие шарниры в оффлайн, в конторе, специализирующейся на продаже подшипников, надо мной малость посмеялись и сказали что такое найти невозможно.
    Пара автоматических выключателей для защиты от КЗ.
    Автомобильное кресло с неизвестной родословной, и совершенно точно нелегкой судьбой.
    Метизы, железо, провода, всякие мелочи вроде вениляторов, ХЗ сколько.
    Игровой контроллер aka Logitech G25, компьютер, монитор и остальное уже было в наличии.
    Несколко фотографий для понимания механической части. Крепление карданного шарнира и двигателей с упомянутыми выше ball joint. Заодно можете посмеяться над над моими скилами сварщика и маляра:

    Электроника.
    Был бы я поумнее, купил или скопировал китайские драйвера двигателей и подключил бы к Arduino, благо реализации есть в открытом доступе. Но нет, я надумал пойти своим путем. И чтобы в пути было не скучно, я решил во время похода потащить на своей спине свежеизобретенный велосипед с квадратными колесами. Да, я забубенил свои драйвера и контроллер с прошивкой. Причем драйверов я сделал, наверное, больше десятка версий, а количество сгоревших полевиков впору измерять на вес. Итак, смертельный номер, не рекомендуемые к повторению схемы:

    контроллера


    драйвера двигателя


    Некоторые места в схемах были исправлены уже на текстолите, так что не рекомендую повторять. Рисуем платы, расчехляем лазерный утюг, тапок для съемки. Получаем следующее:

    И упаковываем все в элегантный корпус:


    Само собой не обошлось без косяков и в некоторых местах плату пришлось исправлять.

    Необходимая для работы информация (задание положения двигателя) передается через переходник USB-Serial TTL на микросхеме cp2102 в контроллер. Контроллер реализован на МК atmega88 с минимальной обвязкой. Для удобства добавлен четырехразрядный семисегментный индикатор. Контроллер по сигналу обратной связи, датчиком которой выступает переменный резистор на оси мотор-редуктора, определяет фактическое положение двигателя и при необходимости вносит в него коррективы. В контроллере реализован пропорциональный регулятор. Прошивкой скорее всего не поделюсь, т. к. не люблю бэкапы. В драйверах двигателей реализован H-мост. Контроллер имеет возможность открыть любой из транзисторов моста, что в данном случае избыточно. Из-за этого пришлось городить логическую защиту от КЗ. Достаточно было бы передать из контроллера в драйвер сигналы направления и разрешения.

    Рисуем остальные части совы Как то так все это выглядит если собрать вместе:

    Софт для компьютера.
    Для меня было откровением, что многие игры реализуют вывод телеметрии. Раньше я думал, что получить данные о физической модели игры можно только с помощью черной магии и метода научного тыка в память процесса. Оказывается нет, часто разработчики игр заморачиваются над выводом соответствующих данных через сокет. Отличное место чтобы изобрести еще один велосипед, а то я уже почти оправился от предыдущего. Но тут что-то пошлО не так и я решил посмотреть готовые варианты. А их есть как минимум два бесплатных:
    X-Sim напичкана массой свистелок вроде возможности прикручивания плагинов, перехватывания состояния джойстиков, но сложна для старта. Список поддерживаемых игр .
    SimTools относительно новая программа, значительно проще первой, но обладает меньшим функционалом. Для старта самое оно. Список поддерживаемых игр .
    Обе программы допускают вывод необходимой информации через последовательный порт (в данном случае виртуальный). Поддерживаются практически все более-менее известные преимущественно автомобильные, но есть также и авиационные симуляторы.

    Думаю в комплект к этому девайсу неплохо бы поиметь Oculus Rift. Только вероятно понадобится вторая версия, поскольку у первой гироскопы с ума сойдут.

    Хочу извиниться перед теми, кто просмотрел все картинки, но так и не увидел синюю изоленту, и перед читателями, кто сюда дочитал, за пост вида КакНарисоватьСову.jpg. Изначально он не планировался, поэтому не вся информация о процессе изготовления сохранилась. Но по крайней мере статья расскажет о подобных устройствах тем, кто не задумывался об их существовании. Еще несколько видео с этой железкой есть в этом плейлисте .

    Теги:

    • diy
    • 2dof
    • motion simulator
    Добавить метки