Эффект «Сильная нога»

«Сильная нога» — это довольно распространённый баг, который можно видеть в 95% игр. Мои игры тоже не исключение из этого правила. Для демонстрации того, что это такое, нет ничего красноречивей скриншота:

Самое смешное, что бороться с этим можно достаточно просто.

0) Сделать анимацию баллансировки на краю. Такое можно видеть в играх старой школы, т.к. они были довольно продуманы. Например, в играх типа Sonic, Commander Keen....

1) Либо делается соскальзывание персонажа когда он на краю. Для этого нужно искуссвтенно проверять наличие пропасти под «висячей» ногой. И сталкивать персонажа в эту строну. Желательно, с анимацией.

2) Либо персонажу делается оооочень узкая маска столкновений. Похоже с первым, но недостаток в том, что персонаж будет наполовину утопать в стене при упирании лобом в оные.

3) Маска столкновений с полом и потолком находится в той половине персонажа, куда он смотрит. Тогда при резком повороте на краю пропасти можно в неё свалиться. В целом, сойдёт как фишка, но не очень удачный вариант на самом деле.

Знаете ещё как устранить данный эффект? Комментируйте!

Парадигма Game Maker :: Объектная модель и события

GameMaker

Продолжим препарацию этого движка. В этом посте я расскажу про то что указано в заголовке.

Объектная модель в GameMaker начинается с объектов. То что на самом деле называется «классом» в других языках. Но в отличие от других языков класс начинается не с написания

class <ClassName> extends{

}

… а с создания объекта в дереве ресурсов. Где-то внутри, незримо, ему создаются все свойства типа x,y, speed, direction, grvaity, gravity_direction, sprite_index,image_index и т.д.

Так же там задаются обработчики перекрёстных свойств таких как direction, speed и hspeed,vspeed. Измененние одной пары свойств влияет на другую. Если так подумать, то этот набор свойств обычно всё равно создаётся практически в любой игре, а так вы делаете это за один клик.


Читать дальше...

Парадигма Game Maker :: Общие слова

GameMaker

Есть такая штука, как парадигма программирования. Типа как можно программировать и какие языки поддерживают эти парадигмы. Логика построения программ — если говорить кратко.

Моё глубокое убеждение — большинство «тру программистов» учатся фуфлу. Их выдрессировывают на один-два языка, на две-три парадигмы. А дальше эти товарищи начинают плеваться на всё, что не вписывается в усвоенную ими парадигму. Даже не попробовав приспособиться к новому инструменту эти кадры начинают заводить свою пластинку на тему "Ну мне там удобнее, а здесь нету этого". А если подумать, то любой инструмент был создан именно с целью облегчить труд! То есть как-то это сделать всё-таки можно, нужно найти метод! Или прочитать про него.


Читать дальше...

Гамак — Структура игры

GameMaker

GM-Игра состоит из разновсяких частей (на картинке — древовидный список слева), называемых ещё ассетами (в новой версии Studio) или ресурсами (в старой):

  • Спрайты — это плоские анимированные либо статичные изображения
  • Звуки — а также музыка
  • Фоны — это недвижимые, неанимированные плоские картинки, как правило большие
  • Пути — там можно нарисовать любые двухмерные фигуры и пускать по ним объекты
  • Скрипты — вызываются из кода объектов, но в простых играх могут и отсутствовать
  • Шейдеры — это не ко мне, думаю и так понятно
  • Шрифты — которыми писать буквы, цифры, и прочие символы
  • Линии Времени — это как Пути, только для событий (точнее реакций на них)
  • Объекты — вся основная логика игры описывается здесь
  • Комнаты — содержат в себе «уровни» игры, в виде двухмерных карт с расставленными объектами
  • Включённые файлы — любые свои файлы можно присоединить к дистрибутиву игры
  • Расширения — тут не рассматриваются
  • Макросы — фрагменты текста, подставляемые в код по шаблону

Но нас в данном случае интересуют всего лишь Объекты и Комнаты. Ну и наверное Спрайты, чтобы видеть Объекты.

Тут нужно замечание об именовании ресурсов — каждому ресурсу необходимо уникальное название, поэтому практикуются префиксы, например s_wall для спрайта и o_wall для объекта. Если названия совпадают, ГМ может перепутать индексы и возникнут баги. Поэтому лучше заранее всё называть с префиксами и не беспокоиться.

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

Так что теперь посмотрим на объекты.

Кнопка Add Event посередине внизу добавляет Событие объекту, а выбрав конкретное Событие из существующих, можно назначить ему ту или иную реакцию. На «кнопках» ГМа можно много чего сделать, но моя практика показывает что куда лучше кодить на GML, что даётся нам кнопкой «Execute a piece of code», находящейся во вкладке control справа. Её нужно перетащить в Actions, и можно кодить. Но что кодить? Это уже зависит от объекта и события.

Тут много знать не надо. Самые главные события это Create (создание объекта, оно же «конструктор»), Destroy (уничтожение объекта, «деструктор»), Step (шаг объекта, самое главное событие) и Draw (отрисовка объекта, но по умолчанию он отрисовывает свой спрайт и сам, а добавление пустого Draw делает его невидимым). В Create желательно инициализировать переменные, в Destroy часто ставят создание объектов для спецэффектов типа взрывов, в Step ставят всевозможные вычисления и управление объектом, а в Draw — прорисовывают интерфейс, меню, или что там нужно.

Ещё одно главное событие это Collision, или событие столкновения — оно срабатывает всякий раз, когда два объекта пересекаются своими масками столкновений. Маски по умолчанию совпадают со спрайтами, но могут быть переназначены на другой спрайт.


Читать дальше...

Гамак — Названия и термины

GameMaker
Обычные ООП-языкиGameMakerОсобенности GM
переменнаяпеременнаяМогут менять свой тип во время исполнения кода
Типов очень мало — вещественные числа, строки, массивы
Традиционных указателей нет
функция (НЕ метод)скриптСкрипты не принадлежат объектам, могут вызываться откуда угодно
Вызванный скрипт выполняется в контексте вызвавшего объекта
У скриптов может быть не более 16 параметров
Параметры скриптов никак не именуются: argument0...argument15, но
для наглядности можно вручную называть полученные аргументы,
записывая их во временные переменные только ради названия.
классобъектВсе объекты могут обращаться ко всем переменным всех объектов
GM-объект описывается как реакции (действия в ответ) на события
GM-объекты могут иметь родителя, наследуя его реакции на события
Унаследованные реакции можно переопределить либо дополнить новыми
объектэкземплярЭкземпляры GM-объектов содержат множество встроенных переменных,
поэтому использовать их в качестве структур данных — плохое решение
(для этого просто заводят множество массивов с похожими названиями)
событиесобытиеСвои события создавать нельзя, но можно назначать номерные
User Events, и вызывать их вручную через event_user(номер).
Впрочем, встроенных событий хватает на очень многие вещи.
обработчик событиядействие событияРаньше ГМ затачивали под то, чтобы в этой колонке складывать несколько
«кнопок», где пользователь задаёт только параметры действий. Однако,
для большей гибкости лучше писать код на GML, а «кнопки» игнорировать.
 исключениенетМеханизма исключений в GM нет, и никогда не было
Впрочем, можно подавлять возникающие ошибки, и игра никогда не вылетит
в традиционном смысле этого слова, если это не аппаратная проблема или
проблема на стороне операционной системы.
Конструктор

Create Event

(ev_create)

Событие, вызываемое сразу при создания объекта, на том же шаге

Модификатор Persistent позволяет объектам «жить вечно», переходя между
разными Комнатами (по смыслу — уровнями), если только их принудительно
не удалить через код скриптов, комнат или других объектов.

Деструктор

Destroy Event

(ev_destroy)

Событие, вызываемое сразу при уничтожении объекта, после конца
выполнения текущего участка кода

При переходе между Комнатами, непостоянные объекты удаляются, но
событие Destroy в них не происходит.

games-list

Цех имени DarkDes'а

| Обсуждение | Список Игр | Видео |

 

 

Игры* в порядке разработки

Эпоха**НазваниеОписаниеПримерное Время\Конкурс? Скриншоты?Скачать\Ссылки
1Лети, корабль, лети!Простой shoot'em up сделанный на GameMaker 6 (конвертирован в GM8).2010 Скачать .zip
2Последняя защита

 На самом деле это Shoot'em up и является переработкой «Лети, корабль, лети!», вернее ЛКЛ — это был прототип-игра.

В 3Д, но механика 2Д разумеется.

2011

Раз

Два

Три

 Оригинал потерян.

Запускается и работает с переменным успехом.

 -/-/-Проект по Биологии Некая «обучающая программа», не игра, но были идеи как переделать в нормальную такую игрушку, возможно, в стратегию.2012

Раз

Два

 На Win7 особо не пашет.

Относительно стабильная версия.

3Люк бункера номер 3

Бродим по бункеру и помогаем Люку открыть люк на поверхность.

2014

Gaminator 15

 Gamin.me:Gaminator15 версия
Пост-G15 версия
GamesJamKanobu версия

Читать дальше...

Сделал веселенькую игрушку

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

Управление: стрелки — передвижение, открыть рот — правая кнопка мыши (будьте осторожны), выстрел окрошками пончика.

Если непонятны особенности управления:

 

На правую кнопку мыши Вы открываете рот, при этом вы можете кушать пончики. Однако если вы откроете рот и попытаетесь съесть камень — вы получите урон. За съеденные пончики у вас увеличивается боезапас, и вы можете «стрелять».

 

Правила: уничтожьте инопланетян — выиграете, потеряете жизни — прогираете, шкала сверху — здоровье, число — кол-во еды.

Музыка: Sour Tennessee Red — John Deley and the 41 Players, музыка без авторских прав,

              https://www.youtube.com/watch?v=Vfc9sAQjJtc

Ghost 1.0

Обзоры игр

Геймплейно это аркадная 2D-стрелялка типа Abuse, с платформерным управлением и прокачкой. Да, пример может не самый подходящий, но это единственная похожая игра по игровой механике, к-я пришла мне на ум — в 2D-стрелялки с видом сбоку я редко играю.


Читать дальше...