Как сделать лестницу в game maker

Добавил пользователь Дмитрий К.
Обновлено: 04.10.2024

Если вы решили все-таки сделать игру на Game Maker, то приступим. Для начала создаем объект камеры и назвем его obj_cam. В Create нужно прописать такой код. Совет не копирует код а сами пишите(так легче запомнить).

Code
d3d_start();\\Это значит что функция 3D включена
draw_set_color(c_white);\\Окружение будет белым цветом
z=20;
pitch=0;

Я решил не все писать кодом. Зачем если есть кнопки, которые упрощают:
Нужно добавить кнопку Set Friction и даем значение 0.4
И добавляем еще кнопку Set Cursor. Там ничего не меняем.
Теперь в событии Step пишем, а не копируем:

Code
direction -= (display_mouse_get_x() -display_get_width()/2)/10;
pitch += (display_mouse_get_y() -display_get_height()/2)/10;
pitch = max(min(pitch,100),-100);
display_mouse_set(display_get_width()/2,display_get_height()/2);

Со Step завершили.
Теперь нужно добавить управление:
В событии клавиши Влево:

Code
<
var xn,yn;
xn = x - sin(direction*pi/180);
yn = y - cos(direction*pi/180);
< x = xn; y = yn; >
>

В событии клавиши Вверх:

Code
Вставляем кнопку Set Variable
В верхнюю строчку пишем speed
В нижнюю 5.

В событии клавиши Вправо:

Code
<
var xn,yn;
xn = x + sin(direction*pi/180);
yn = y + cos(direction*pi/180);
< x = xn; y = yn; >
>

В событии клавиши Вниз:

Code
Вставляем кнопку Set Variable
В верхнюю строчку пишем speed
В нижнюю 5.

В событии Draw пишем такой код:

Все с obj_cam завершили.
Теперь создаем объект пола и потолка и называем его так obj_floor
и создаем фоны для пола и потолка и называем для пола floor для потолка roof
В событии Draw пишем такое:

Code
d3d_draw_floor(0,0,0,room_width,room_height,0,background_get_texture(floor),24,24);\\Это рисуется пол
d3d_draw_floor(0,0,64,room_width,room_height,64,background_get_texture(roof),12,12);\\Это рисуется потолок

И не забудьте сделать его твердым)
Все с obj_floor завершили.
Теперь создаем фон для стен и называем его wall.
Теперь создаем объект и называем его hor_wall делаем твердым.
В событии Draw:

Теперь создаем объект ver_wall, делаем твердым.
И в событии Draw:

А теперь возвращаемся к объекту obj_cam
В столкновении с hor_wall, пишем такое:

Code
x=xprevious;
y=yprevious;

В столкновении с ver_wall, пишем такое:

Code
x=xprevious;
y=yprevious;

Все с объектами завершено, теперь комната:
Создаем комнату и добавляем obj_cam и объект obj_floor где то с краю. И произвольно добавляем, стены не забываем что они у нас под именем ver_wall, hor_wall.

Во всех играх Source имеются лестницы (кроме Team Fortress 2 и Portal 2, где их нет), состоящие из модели или браша, и системы невидимых энтить, расположенных рядом. Эти невидимые энтити и создают видимость того, что игрок взбирается по модели/брашу лестницы.

Видимая часть лестницы

Для её создания вы можете использовать

  • энтитю prop_static с моделью лестницы (например, models\props_c17\metalladder001.mdl), или
  • браш с текстурой лестницы (например, metal/metalladder001a).

Система подъёма

Принцип работы системы подъёма зависит от игры, для которой она предназначена. Лестницы в Half-Life 2 и Half-Life 2: Deathmatch создаются немного не так, как в ранних играх, они стали удобнее для дизайнеров карт и игроков, а лестницы в Counter-Strike: Source и Day of Defeat: Source реализованы также, как в старых играх. Материал по созданию лестниц для Counter-Strike: Source и Day of Defeat: Source, см. ниже.

Энтити лестницы для Half-Life 2 / Half-Life 2 Deathmatch

Вначале нужно определиться с размером лестницы. Это можно сделать двумя способами: с помощью энтити func_useableladder, или устаревшей func_ladderendpoint (которая кратко описана ниже для понимания работы старых карт).

Энтитя func_useableladder разделяется на две под-энтити: начальную и конечную точки (см. рис. 1a). Их позиции можно задавать как в поле значения, так и путём перетаскивания кружка при выделении энтити (см. рис. 1b). Это делается в окне 2D-вида. Начало и конец лестницы могут быть произвольной ориентации и длины (см. рис. 1c). Просто тяните эти точки туда, где должна располагаться лестница.




Убедитесь, что конечные точки лестницы не касаются её видимого браша, и находятся на расстоянии в паре единиц от него (а таже любого другого браша или модели), иначе часть лестницы может не работать.

Сегодня устаревшая сущность func_ladderendpoint состоит лишь из одной конечной точки. Размер лестницы создаётся путём связывания двух func_ladderendpoints, которые указываются в свойствах.

Точки схода


Также, вы можете задать точки схода с лестницы (см. Рис. 2). Они создаются с помощью энтити info_ladder_dismount. Во время лазания игрок может сойти, нажав клавишу использования (обычно так делается, когда лестница выше двух этажей). В данном же случае игрок сходит сам, просто достигнув одной из точек. Вы можете использовать несколько маркеров info_ladder_dismount, чтобы задавать больше направлений схода с лестницы.

Чтобы избежать возможной путаницы между соседними лестницами, каждая info_ladder_dismount имеет параметр, называемый LadderName, который связывает точку с конкретной лестницей.

Как и в случае с лестницей, точки схода не должны пересекаться с геометрией карты.

Полевые испытания

После того, как вы создали лестницу, то можете скомпилировать карту и протестировать её. Если хотите, то в игре можно увидеть энтити лестниц вместе с отладочной информацией, введя в консоли sv_showladders 1 , а затем загрузив или перезагрузив нужную карту (введя restart ). Будут показаны все начальные и конечные точки лестниц (энтити func_useableladder и func_ladderendpoint), а также точки схода (энтити info_ladder_dismount) (См. Рис. 3a), что поможет вам определить, правильно ли настроены эти энтити, пересекаются ли они с твёрдой геометрией или моделями лестниц (см. Рис. 3b), а также соединяются ли энтити func_ladderendpoint друг с другом.



Как лестница работает в игре

Самый безопасный способ взобраться по лестнице в Half-life 2 – это подойти к её невидимой зоне, и в пределах досягаемости нажать клавишу использования. Это автоматически поставит игрока на лестницу. (Если же просто ходить возле лестницы, то есть большой риск упасть.)

Чтобы сойти с лестницы, вы всегда можете спрыгнуть или нажать клавишу использования. Если у лестницы имеются info_ladder_dismounts, вы легко спешитесь на её концах.

Лестницы для Counter Strike: Source, Day of Defeat: Source и Garry's Mod

Перед объектом/брашем, который должен быть лестницей, как можно ближе нарисуйте ещё один браш, но так, чтобы они не касались. Убедитесь, что ширина/высота поверхности соответствует объекту-лестнице. Покройте этот браш материалом tools/toolsinvisibleladder и преобразуйте в энтитю (CTRL+T). В диалоге Object Properties выберите func_ladder. Теперь у вас есть поверхность-лестница в передней части объекта/браша.


Когда вы стоите на лестнице в CS:S, точность вашей стрельбы значительно снижается.

Подобные лестницы используются в Half-Life 1, но они покрыты текстурой AAATRIGGER вместо tools/toolsinvisibleladder.

Лестницы для Counter Strike: Global Offensive

Лестницы для Left 4 Dead & Left 4 Dead 2

Читайте следующие руководства по созданию лестниц для Left 4 Dead & Left 4 Dead 2:

Оптимизация лестниц

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

  • Если это прямая лестница для HL2 или HL2:DM, то лучший способ зависит от того, нужно ли стрелять сквозь неё. Если нет (например, лестница на стене), то просто измените значение Collisions (столкновения) на Use Bounding Box (использовать рамку-ограничитель). Если да, то выберите значение Not Solid (не твёрдый) и поместите брашевый невидимый Clip (toolsclip), который будет отвечать за столкновения.
  • Если это наклонная лестница для HL2 или HL2:DM, рамка-ограничитель не будет поворачиваться вместе с моделью и станет мешать системе подъёма, в этом случае вам нужно сделать модель лестницы Not Solid, и рядом с ней поместить невидимый повёрнутый браш, покрытый текстурой Clip (toolsclip) или Player Clip (toolsplayerclip) (в зависимости от того, требуется ли стрелять сквозь лестницу).
  • Если это лестница для карт CS:S или DoD:S, вам нужно изменить значение Collisions на Not Solid и создать браш func_ladder поверх модели лестницы, вращая его по необходимости.

На многопользовательских картах лестницы нужно рисовать так, чтобы можно было свободно лазить параллельно поверхности, вдоль которой они проходят. Брашевые лестницы надо преобразовывать в нетвёрдый func_brush, чтобы избежать временного "застревания" игроков; модели лестниц зачастую торчат из стены, и когда игрок стоит на такой, это выглядит неправдоподобно. В этом случае лучше использовать два браша с текстурой Player Clip по краям пропа, которые будут выравнивать игрока на модели.

Если ничего другого, то преобразуйте браш лестницы в func_detail, чтобы он не разрезал листья.

Привет! Наверняка прошлый урок вызвал головную боль, если вы его полностью прочли, так как он громоздкий и сложный для усвоения новичками. Если что-то непонятно - это ничего страшного. Аппетит приходит во время еды.
Сегодня мы рассмотрим важный аспект при разработке игры - движение объектов.

О, наконец-то практика! Но сначала все-таки узнаем, что движение тела, не что иное, как изменение его координат. Разумеется, в 2D играх, а значит и в GM, используется Декартова прямоугольная система координат. К сожалению (или к счастью), в GM ось ординат Y направлена вниз, а не вверх (ось абсцисс, как принято, направлена вправо). Вот картинка:

Изменяем х и у - двигаем объект! Элементарно, Ватсон! Достаточно в step событии объекта разместить код:

Важно: x и y - так называемые свойства объекта, являются встроенными разработчиками переменными, значения которых можно менять, и которые влияют на характеристики объекта и его поведение. Помимо всего, у объектов очень много свойств, к примеру, sprite_index или depth. Это также означает, что вы не сможете создать переменную с именем свойства. Но сейчас важны только свойства, относящиеся к движению. Примечание Uber

И, о да! Результат налицо, наш подопытный кролик потопал направо. Также можно и изменять координату у. Ради эксперимента, поиграйте со значениями.
А если движение на протяжении всей игры почти не изменятся? Как, например, движение платформы в платформере (влево-вправо, вверх-вниз). Для этого у каждого объекта есть свойства hspeed (от англ. horizontal speed), vspeed (vertical speed) и направление движения - direction (измеряется в градусах, от 0 до 360). В GM направления опять же немного отличаются от привычных, а именно:

  1. Создать объект, поместить его в комнату.
  2. В событии create объекта сначала попробовать изменять координаты (х-=2, у+=1, например). Какой можно сделать вывод?
  3. Теперь вместо изменения координат задайте hspeed и/или vspeed (например, hspeed=3) Понаблюдайте за эффектом.
  4. Ну и почти последний шаг: задайте переменную speed (скорость, она является результатом сложения hspeed и vspeed) и direction, заодно.
  5. Порадуйтесь своему успеху!

Кроме x и y, у нас есть ещё свойства, относящиеся к передвижению. Вот их список:
xprevious Отражает координату экземпляра объекта по оси X в предыдущем шаге.
yprevious Отражает координату экземпляра объекта по оси Y в предыдущем шаге.
xstart Отражает координату по оси X в текущей комнате при старте.
ystart Отражает координату по оси Y в текущей комнате при старте.
friction Отражает текущее трение экземпляра объекта (пикселей за шаг).
Трение просто постоянно замедляет объект, пока его скорость speed не упадёт до нуля. Примечание Uber
gravity Отражает силу гравитации для текущего экземпляра объекта (пикселей за шаг).
Стоит отметить, что это не скорость, с которой полетит объект в заданном gravity_direction направлении, а ускорение, которое получает объект и измеряется в пикселях за шаг в шаге (или шаг в квадрате). Примечание Uber
gravity_direction Отражает направление гравитации в градусах для текущего экземпляра объекта (270 - вниз).

GameMaker: Studio - это полноценный инструмент для разработки игр, в котором представлены редактор уровней, менеджер ресурсов, редактор кода и собственный скриптовый язык, известный как GameMaker Language (GML). Ранние версии GameMaker были очень простыми и многие люди помнят их, как в основном для начинающих - сделать с ними коммерческую игру было бы похоже на шутку. Теперь все изменилось, с несколькими коммерческими успехами, включая некоторые очень нашумевшие игры.

Для кого предназначен движок GameMaker: Studio?

В Master коллекции движка GM:S реализована кроссплатформенная совместимость для настольных компьютеров, HTML5 и мобильных устройств (как для Android, так и для iOS). Кроме того, имеется возможность интеграции системы управления версиями и монетизации (например, реклама и покупки в приложении). Общая стоимость master коллекции составляет около $800 долларов на момент написания этой статьи. Поэтому этот движок идеален для:

  • Любого желающего кто интересуется кроссплатформенной разработкой
  • Инди-команд разработчиков с небольшим бюджетом

Низкий порог вхождения в GM:S возможен благодаря интеграции drag-and-drop интерфейса. Таким образом, это фантастический инструмент для людей с небольшими знаниями программирования в качестве первого опыта; этот интерфейс является отличным способом изучить процесс выполнения программы и некоторую базовую логику.

Благодаря своим возможностям управления, GM:S позволяет разработчикам быстро создавать и запускать очень простые игры, что отлично подходит для игровых джемов и создания игровых прототипов.

Что в нем хорошего

GM:S очень хорош в управлении ресурсами, включением ресурсов в код, обеспечивает легкий способ изменения логики игровых объектов и событийное программирование.

Управление ресурсами

Как только разработчик создал спрайт, добавить его в GM:S можно за несколько кликов. После импорта спрайта, модификации могут быть сделаны уже в GM:S.

Creating a sprite

Создание спрайта.

Интеграция ресурсов в код

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

Изменение логики игровых объектов и событийное программирование.

Редактор игровых объектов — это отличное средство обучения, для новичков в разработке игр, и предоставляет удобный способ изменения логики игрового объекта. Как вы можете видеть на этом скриншоте, GM:S позволяет вам писать код для конкретных событий:

Modifiying game object events
Modifiying game object events
Modifiying game object events

Модификация событий игрового объекта.

Для кого это не подойдет?

  • Людям, которые хотят создать полнофункциональную игру, нажатием нескольких кнопок. Для великих игр потребуется время.
  • Для тех, кто хочет разработать следующую грандиозную MMO. Создание сетевых игр является относительно новым направлением для GM:S, и для создания многопользовательских игр есть инструменты получше.
  • Элитные программисты которые требуют, чтобы их язык не мог управлять собственной памятью. GM:S - это не C/C++, и не является конечным языком, ориентированным на производительность. (Нельзя сказать, что производительность здесь плохая, просто C/C++ по-прежнему остается королем этой категории.)

Что в нем плохого

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

GM:S поддерживает 3D, но это не главное. Нет 3D-редактора, отсутствует программа импорта 3D моделей, а код для работы с трехмерной графикой довольно запутан. Если вас интересуют 3D-игры, я рекомендую вам использовать другой инструмент. В будущем 3D может стать более приоритетным для YoYo Games (компании, владеющей GM:S), но на данный момент это явно последнее в списке.

Где я могу получить GameMaker: Studio?

Ниже приведено сравнение различных версий GameMaker, взятых с веб-сайта YoYo Games:

feature compare
feature compare
feature compare

Как вы видите, бесплатная версия (Studio) довольно ограничена, но это отличный способ увидеть рабочий процесс и расположение инструментов, а также потратить некоторое время на изучение языка.

Обновление: Бесплатная версия GameMaker: Studio теперь та же, что и стандартная версия! Для получения дополнительной информации см. GameMaker: Studio будет бесплатной.

Стандартная версия отлично подходит для разработчиков одиночек, которые только планируют разработку компьютерных игр; Профессиональная версия идеально подходит для небольшой команды разработчиков планирующих переходить в конечном итоге на кроссплатформенную разработку, поскольку они могут добавлять различные модули с течением времени после получения некоторого дохода; и Master Collection отлично подойдет для небольших команд, которые являются частью созданных студий, и хотели бы использовать кроссплатформенную разработку с самого начала.

GM:S также доступен в Steam, но я бы рекомендовал не покупать его там, так как YoYo Games не знает, что вы его приобрели, и, следовательно обладателям их продукта будет больше хлопот в отделе обслуживания клиентов. Кроме того, они иногда предлагают дешевые апгрейды для тех, у кого уже есть определенная версия GM:S, и они не могут дать то же обновление пользователям купившим в Steam. Кроме того, если вы покупаете у Steam, то необходимо войти в Steam, чтобы запустить GM:S, а это может раздражать.

Обучение GameMaker: Studio

GM:S предлагает два различных способа создавать игры. Первый это так называемый интерфейс Drag and Drop (сокращённо DnD). Он довольно мощный и позволяет создавать сложную логику. Однако, он не такой мощный, как второй вариант: использование языка программирования GameMaker Language (сокращённо GML). GML - это прекрасный язык сценариев, который может делать все, что может делать DND, и многое другое.

Начало работы

После того, как вы загрузили версию движка GM:S которая соответствует вашим потребностям, вам следует ознакомиться с учебными материалами, которые поставляются вместе с GM:S. Их можно найти во вкладке Tutorials после того, как вы откроете GM:S.

В начале уроков будет показано, как использовать drag and drop интерфейс, а более поздние руководства начинают охватывать язык программирования GML. Самое приятное в предложенных уроках - это то, что они фактически добавляют окно к интерфейсу, в котором вы узнаете, как создавать каждую игру, поэтому вам не нужно обращаться к веб-странице - все доступно изложено для вас в GM:S!

Для самого продвинутого обучения можно посмотреть демки на вкладке Demos после запуска GM:S. Они не откроют окно обучения, но они предоставляют доступ ко всему используемому исходному коду, чтобы можно было просматривать его, запускать отладчик и наблюдать за тем, что происходит, так что вы получите хорошее представление как использовать их методы в своих играх.

Руководство


Руководство в программе GM:S

Если вы выполняете поиск как в прилагаемом руководстве, так и в онлайн-руководстве и не можете найти ответы, не бойтесь! На reddit существует большое сообщество /r/gamemaker и есть официальные форумы. Кроме того, имеется отличный сайт полон инди-разработчиков, некоторые из них часто используют GM:S на форумах TIG. Эти сообщества полны полезных людей, поэтому не бойтесь задавать свои вопросы!

Расширения

Если вам не хватает встроенных функций движка GameMaker, не волнуйтесь; он расширяемый! Бесплатная версия не позволяет использовать расширения, но в платной версии это возможно.

Что могут делать расширения?

Расширения добавляют новую функциональность, изначально не предусмотренную YoYo games. Вот некоторые примеры:

GiiMote - позволяет разработчику интегрировать WiiMote элементы управления в свою игру, добавляя функции, которые опрашивают состояние WiiMote (положение и нажатие кнопок).

FX Creator Extension - упрощает создание таких эффектов, как погода, лучи и брызги воды.

Взаимодействие с базами данных с помощью SQL - позволяет вашей игре подключиться к базе данных SQL, получить данные в виде строки, а затем использовать их в игре. Расширение добавляет такие функции, как TestDatabaseConnection и ExecuteSQL так, что вы можете получить данные обратно в виде двух строк кода.

Одно серьезное ограничение - некоторые расширения несовместимы с мобильными платформами.

Где найти расширения

Самые лучшие места, которые я нашел, это официальный сайт ресурсов и неофициальный сайт под названием GMToolbox.

Как их установить

  1. Необходимо загрузить расширение - это должен быть файл .gex .
  2. Щелкните правой кнопкой мыши папку Extensions в GM:S и выберите Add Existing Extension.
  3. Это должно вызвать диалоговое окно, и в правом нижнем углу вы увидите кнопку с надписью Install. Нажмите ее.
  4. Откроется другое диалоговое окно со списком установленных пакетов (возможно, пустым). Справа от этого окна есть кнопка, которая снова с надписью Install. Нажмите ее.
  5. Это открывает еще одно диалоговое окно; перейдите в папку, в которой сохранен файл .gex , щелкните его и нажмите кнопку Open.

Учебные ресурсы

Уроки инди-разработчиков

Список уроков Chevy Ray - Chevy Ray является разработчиком Flash-игрового движка FlashPunk, частый соперник на Ludum Dare и разработчик нескольких классных игр. Он написал несколько уроков по GameMaker, и это подборка тех его материалов, которые он считает лучшими. Уроки охватывают такие темы, как масштабирование вида, оптимизация скорости, параллакс-скроллинг.

Серия уроков Derek Yu's - Derek Yu является членом TIGSource и разработчиком Spelunky. Эта серия уроков для более старой версии GameMaker, но вы по-прежнему можете легко пройти ее. Это полное пошаговое руководство по созданию космической сайд-скроллер стрелялки; по мере создания вы узнаете, как работают игровые объекты, как создавать прокручивающиеся фоны, как создавать спрайт шрифты и множество других замечательных тем. Обязательно к прочтению.

Другие уроки и руководства

Официальные уроки - официальные уроки посвящены созданию нескольких игр разных стилей (некоторые из них 3D-игры, поэтому эти уроки могут быть особенно глубокими, если вы будете использовать GM:S). Кроме того, имеется урок по созданию многопользовательских игр, который, по моему мнению, является одним из лучших в Интернете по изучению создания многопользовательской игры в GM:S.

Я рекомендую их для людей, которые хотят разработать определенный тип игры и желают узнать как разрабатывать игры подобного типа, но если вы ищете урок для начинающих, я рекомендую уроки Derek Yu's.

Также ознакомьтесь с официальными и неофициальными руководствами, поскольку они дают большой справочный материал.

Становимся профессионалом

Несколько GameMaker игр стали коммерчески успешными, и есть много других великолепных GameMaker игр, которые являются прекрасными примерами того, что возможно создать используя GM:S.

Отточеные игры

Spelunky - оригинальная версия Spelunky была создана в GameMaker; более новая XBLA версия и новая ПК-версия игры, нет. Это коммерческий успех, версия, созданная в GameMaker, бесплатная.


A Nation of Wind - эта игра скрытый драгоценный камень и в нее стоит определенно поиграть.


Dustforce - вышла в Steam, это не был огромный коммерческий успех, но тем не менее, это отличная игра!


Коммерческие хиты





Заключение

GameMaker: Studio отлично подходит для новичков и профессионалов. Его великолепный код и функции управления ресурсами, в сочетании с относительно низкой ценой, делают его великолепным игровым движком для небольших команд и независимых разработчиков, обладающих приличным опытом программирования, и его доступность, и событийность, и также система drag-and-drop на основе действий, делает его отличным движком для тех, кто практически не имеет опыта программирования.

Надеюсь, вам понравилось читать этот обзор, и теперь у вас есть хорошая идея, как начать работу с GM:S. Если вы считаете, что я, что-то упустил или вам нужна дополнительная информация, не стесняйтесь, напишите мне в комментариях. Удачи вам на вашем пути разработчика игр!

Читайте также: