GameMaker

Рейтинг
+0.40
2 читателя , 21 статья
О блоге RSS

for (i=0 i<max i+=1) больше не работает

GameMaker

Потому что какой-то муд... рец в ЙоЙо Геймс решил что нужно накатить апдейт на GameMaker: Studio (первую), после которого высвечивается вагон ошибок такого вида:

In Script orb_draw_info at line 7 : Assignment operator expected

In Script orb_draw_info at line 7 : unexpected symbol «<» in expression

In Script orb_draw_info at line 7 : malformed assignment

In Script orb_draw_info at line 7 : got '<' expected ';'

In Script orb_draw_info at line 7 : unexpected symbol «<» in expression

In Script orb_draw_info at line 7 : unexpected symbol «<» in expression

In Script orb_draw_info at line 7 : malformed assignment

In Script orb_draw_info at line 7 : got '<' expected ')'

In Script orb_draw_info at line 7 : got 'orb_coordinates_list' expected ')'

In Script orb_draw_info at line 7 : wrong number of arguments for function ds_list_size

In Script orb_visualize at line 33 : Assignment operator expected

In Script orb_visualize at line 33 : unexpected symbol «<» in expression

In Script orb_visualize at line 33 : malformed assignment

In Script orb_visualize at line 33 : got '<' expected ';'

In Script orb_visualize at line 33 : unexpected symbol «<» in expression

In Script orb_visualize at line 33 : unexpected symbol «<» in expression

In Script orb_visualize at line 33 : malformed assignment

In Script orb_visualize at line 33 : got '<' expected ')'

In Script orb_visualize at line 33 : malformed assignment

In Script ds_grid3_destroy at line 2 : Assignment operator expected

In Script ds_grid3_destroy at line 2 : unexpected symbol «<» in expression

In Script ds_grid3_destroy at line 2 : malformed assignment

In Script ds_grid3_destroy at line 2 : got '<' expected ';'

In Script ds_grid3_destroy at line 2 : unexpected symbol «<» in expression

In Script ds_grid3_destroy at line 2 : unexpected symbol «<» in expression

In Script ds_grid3_destroy at line 2 : malformed assignment

In Script ds_grid3_destroy at line 2 : got '<' expected ')'

In Script ds_grid3_destroy at line 2 : malformed assignment

In Script statistics_init at line 3 : Assignment operator expected

In Script statistics_init at line 3 : unexpected symbol «<» in expression

In Script statistics_init at line 3 : malformed assignment

In Script statistics_init at line 3 : got '<' expected ';'

In Script statistics_init at line 3 : unexpected symbol «<» in expression

In Script statistics_init at line 3 : unexpected symbol «<» in expression

In Script statistics_init at line 3 : malformed assignment

In Script statistics_init at line 3 : got '<' expected ')'

In Script statistics_init at line 3 : malformed assignment

In Script statistics_draw at line 18 : Assignment operator expected

In Script statistics_draw at line 18 : unexpected symbol «<» in expression

In Script statistics_draw at line 18 : malformed assignment

In Script statistics_draw at line 18 : got '<' expected ';'

In Script statistics_draw at line 18 : unexpected symbol «<» in expression

In Script statistics_draw at line 18 : unexpected symbol «<» in expression

In Script statistics_draw at line 18 : malformed assignment

In Script statistics_draw at line 18 : got '<' expected ')'

In Script statistics_draw at line 18 : got 'global' expected ')'

In Script statistics_draw at line 18 : wrong number of arguments for function ds_list_size

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : Assignment operator expected

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : unexpected symbol «<» in expression

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : malformed assignment

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : got '<' expected ';'

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : unexpected symbol «<» in expression

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : unexpected symbol «<» in expression

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : malformed assignment

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : got '<' expected ')'

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : malformed assignment

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : Assignment operator expected

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : unexpected symbol «<» in expression

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : malformed assignment

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : got '<' expected ';'

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : unexpected symbol «<» in expression

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : unexpected symbol «<» in expression

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : malformed assignment

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : got '<' expected ')'

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : got 'global' expected ')'

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : wrong number of arguments for function ds_list_size

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : Assignment operator expected

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : unexpected symbol «<» in expression

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : malformed assignment

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : got '<' expected ';'

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : unexpected symbol «<» in expression

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : unexpected symbol «<» in expression

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : malformed assignment

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : got '<' expected ')'

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : malformed assignment

In Script orb_draw_info at line 7 : malformed for statement

In Script orb_visualize at line 33 : malformed for statement

In Script ds_grid3_destroy at line 2 : malformed for statement

In Script statistics_init at line 3 : malformed for statement

In Script statistics_draw at line 18 : malformed for statement

In Object o_test_castle_navigator, in Event DrawEvent action number 1 at line 8 : malformed for statement

In Object o_test_locale, in Event DrawEvent action number 1 at line 17 : malformed for statement

In Object o_language_select, in Event DrawEvent action number 1 at line 6 : malformed for statement

Compile Failed — Please check the Compile window for any additional information

Только потому что теперь правильным компилятор считает for (i=0; i<max; i+=1)

Нафига это надо? Почему бы тогда не зафорсить эти точки с запятой вообще везде? Много лет уже пишу код на ГМе без точек с запятой, но сначала начались приколы с var, потом с break, теперь это, но всё остальное в ГМе можно писать без точки с запятой в конце.

И самое тупое даже не это. Самое тупое то, что в списке ошибок сообщение ссылается на строку выше, чем та где находится «malformed statement», где на самом деле просто for с непроставленными точками с запятой.

Отныне for Гамака такой же, как все мейнстримные. Неужели потому что «настоящие программисты» уже так привыкли к этим разделителям, что без них ошибаются?

баах! с гамина

GameMaker

замучился я уже за неделю пиления! но вроде вышло забавно. 

раскажу что ли чего... вобщем забавное дело! о проблеме перепутанных кнопок я знал с самого начала и до самого конца ХД только исправлять всёвремя забывал)

хтмл версию к сожалению даже не тестировал и в ней обнаружилось пару странных надеюсь лишь графическивещей

сразу после запуска нашёл фитчу: что если тронуть овцу стригалкой в критическом состоянии она тригериться) по идее такого не должно быть ноооо чёб нет и так норм, и даже логично)

забавно что игра была полностью закончена в срок но! 50% её работало не правильно) а так же некоторая часть отсутствовала ну да... и после того как я разобрался с этой ерундой! Я Добавил! ПАУЗУ! пол дня переписывал код, мучался с разными малыми проблемами, а так же со всякой ерундой связанной с тем что я использовал пост драв это было весьма печально что я решил его использовать по полной так как этот гад игнорирует глубину что как бы странно ведь вызываться он может отнюдь не в одном инстансе соответственно сейчас думаю что он годиться лишь для отрисовки курсора и только( так вот так же другие пол дня рисовал плашку паузы хотя не особо закончил ХД но смориться вроде норм...

конечно да... чем дольше разработка тем чаще переписывать игру... особенно если ты не особо опытен в разработке так же как и я (или ленив(или забывчев(или торт(или...)))) вобщем это было весьма не просто) или не достаточно просто)хотя можно наверное и проще ХД

ладно наверно на этом сей нипонятный текст и завершится надеюсь комуто было интересно прочесть) и этот кто то напишет чего в ответ)

и да! пост с игрой в конкурсе:

 

https://gamin.me/posts/19464

собстна, я сделаль плохой альфа!

GameMaker

некоторое время назад если кому интерестно я начал мучат проектик который назвал 11цветов соответственно сейчас я наконецто добился нормально (относительно) работы моей дурацкой физики и могого другого чего нет в этом билде по этому просто по хвастаюсь тем что всё более менее работает)

https://www.dropbox.com/s/ll5cuxx8ma02sip/11clours_alpha.-1.exe?dl=0

Платформер на android

GameMaker
PlatformEngine — alpha 0.34

 


 

 

 

Название игры: PlatformEngine

Жанр: RPG платформер

Платформа: Android

Программа: Game maker studio

Разработчик: Панюков Олег


Версия: v034

Предположительная дата выхода: неизвестно

 

Описание:

PlatformEngine 2d RPG-платформер.

Бегаем по случайным уровням, случайный героем (как внешне, так и в плане характеристик), 

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

 

Особенности:

— Генерация уровней

— Взаимодействие стихий между собой (Вода, электричество, огонь и тд) 

— Хардкор (Если ваш герой мертв, значит это навсегда)

— Различные стили поведения врагов

 

 

 

Список изменений в игре

 

Ver 031

— Добавил генератор уровней

 

Ver 032

— Теперь игра намного лучше выглядит

— Намного быстрее генерирует уровни

— Намного быстрее работает

— Добавлены двери на другой уровень

— И еще монетки

 

Ver 033

— Изменения в главном меню

— Атака ближнего и дальнего боя

— Появился меч и лук со стрелами

— Изменено управление на стик

— Бот, летающий глаз (пока тупенький)

 

Ver 034

— Прикручена физика

— Новый генератор уровней

— Разнообразие декораций


 

Ждем ваших идей, мыслей, конструктивных отзывов. Будем рады сотрудничеству с творческими людьми,

прошаренными в области анимации, пиксельной графики и звуковых эффектов. 

Все Ваши предложения, замечания будут учтены и по возможности внесены)

 

 



 

What you need to know about Eli Manning  

GameMaker

 

Early on professional, days and college occupation

Eli Manning’s complete name is Elisha Nelson Manning. He was given birth to in 3rd Jan, 1981 in Louisiana, New Orleans to moms and dads Archie and Olivia Manning. They have two older siblings branded Peyton and Cooper Manning and both of them were professional nfl football people similar to their father. His father and brothers were actually former quarterbacks in NFL league.

The adolescence of Eli Manning biography reveals his date of birth as the 3rd of January in 1981, in New Orleans. He was the youngest of the three kids of Olivia and Archie Manning. Eli stepped into the world with a couple of brothers already there, namely Peyton and Cooper. As every man of his family Eli was intended to be a star footballer.

Eli Manning continues to be messing around with the modern York Titans for more than ten years now. He won the Super Bowl championship twice and is one of the only five players to have won it more than once. Eli Manning has claimed many awards and trophies similar to the Maxwell honor as well as Johnny Unitas Wonderful Arms honors. He holds the greatest report in making the absolute maximum volume of touchdown passes and lawn passes which are usually 35 and 229,345 travels in multitude respectively.

Eli Manning wiki consists of his early life, college or university lifestyle, his qualified daily life and his awesome personal existence. All his activities and achievements are talked about in facts. Eli Manning is amongst the most useful players in the team and the man is also one of several best paid for participants. His once-a-year salary is 26.5 mil US cash. Eli Manning’s truly worth improved following he led the team to gain the Very Dish. He was awarded essentially the most Beneficial Player whenever the group won against New Great britain Patriots. Four years after, New York Giants received with the New Great britain Patriots nevertheless yet again.

Unique Daily life

Eli Manning is committed to his family. He bought hitched to his college girlfriend Abby McGrew. Their narrative begun back throughout his years from the School of Mississippi. They received married during 2008 following Manning suggested to McGrew in 2007. She delivered an infant little princess in 2011 plus they named her Ava Francis. Two years later, their next daughter Lucy Thomas was given birth to and their third daughter Caroline Olivia was born in 2015. He refused to play the Super Bowl before his daughter was born so that he could be with his family.

Eli Manning is the spokesperson of Reebok, Citizen and Toyota View Co. He or she is into a lot of endorsement offers in which he makes practically 7 thousand money through the recommendations. Eli Manning has been in a few commercials, shows and talk exhibits. His per year cash flow is 26.5 mil $ $ $ $. He or she is an extremely valuable participant in the workforce which is the reason his pay out could be the top.

КсиТехнология-03 — F.R.E.A.K. (First Run Easy Access Konfigurator)

GameMaker

Игрок запускает игру в первый раз. Ему ничего не известно об игре, игре ничего не известно о нём. Идея КсиТехнологии-03 в том, чтобы этот первый запуск сделать ознакомительным, позволив игроку настроить некие базовые вещи.

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

    Кто его знает, какой геймпад у игрока? Впрочем, есть какие-то широко распространённые привязки, в таком случае хотелось бы видеть такие варианты (причём эти варианты тоже должны быть локализованы — уместно делать локализацию F.R.E.A.K. внутри него самого, модульно, без зависимостей от целевой игры):

    1) X-Box Compatible Controller
    2) PS Compatible Controller
    3) Other

    И только при выборе 3 переходить к полной калибровке геймпада. В такую входит, по только что на коленке придуманному методу, следующее:

    1) Отвести D-Pad в верхний левый угол
    2)… в нижний правый угол
    3) Выбрать обозначения для кнопок основных действий:
    3.А) Треугольник, квадрат, круг, крестик
    3.Б) A, B, X, Y
    3.В) 1, 2, 3, 4
    4) Нажать последовательно на каждую из основных кнопок, на экране должно отображаться «ожидается ввод кнопки такой-то»
    5) Выбрать обозначения для кнопок управления:
    5.А) Select, Start
    5.Б) Back, Start
    5.В) 5, 6
    6) Ввести эти кнопки.
    7) Выбрать обозначения для дополнительных «плечевых» кнопок («шифтов»):
    7.А) L1, L2, R1, R2
    7.Б) LB, RB
    7.В) 7, 8, 9, 10
    8) Ввести и эти кнопки.
    9) Что-то дальше разобрать с аналоговыми джойстиками, если это нужно игре

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

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

Гамак — клон Неизвестного Инопланетянина

GameMaker

В предыдущем посте я предложил клонировать мою игрушку Aliens X, релиз 2006 года. Версия 1.8 — ведь их было много, и в этом была своя романтика. Я каждый раз менял цвет фона и цвет текста в меню «Информация об игре», вместе с изменением версии. Механика слегка менялась, уровней становилось больше. Так-то я её начал в 2005, а потом обновлял в 2008, но по сути её конструкция, заложенная в самом начале, всё это время не менялась. Так вот её-то я и рассмотрю здесь, плюс дам прямые инструкции, как сделать свою аналогичную игру в Гамаке.

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

  • Меню игры
  • Игровые уровни

Воу воу воу, как сложно! Неужели нельзя было обойтись одним меню?!


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

Гамак — varенье

GameMaker

Данную штуковину мне поведал ДаркДес, что меня (с 10 годами опыта ГМа, да) удивило.

Вот у нас есть два объекта, для простоты и понятности возьмём самые обычные названия — object0 и object1.

В Create в object0 пишем:

var a;

a=10;

with object1 a=20;

b=a;

Вопрос — что будет в object1.a, и что в object0.b?

Вообще, я сам считал что команда with переключает контекст выполнения (точнее, объект для доступа), и поэтому должен установить переменную в object1. Соответствено в object1.a будет 20, а в object0.b будет 10.

На практике же — ключевое слово var объявляет переменную, которая локальна не для объекта, а для самого участка кода. Соответственно, несмотря на with, мы обращаемся к объявленной нами переменной a, в которую чуть выше записали 10, и теперь записываем туда 20. При этом переменной a у object1 и не создаётся. Этого можно было бы добиться через variable_local_set(...), будь это ГМ8, или с помощью self.a=20 / id.a=20;

В итоге — в object0.b находится 20, а object1.a — не существует.

Лихо, да?

Однако, лично мне var пригождается в Гамаке чуть чаще чем никогда, кроме каких-то очень узких случаев оптимизаций.

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

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 в них не происходит.