Form Framework или как работать с Game Maker Studio 2
На этой неделе будут публиковаться видео посвященные разработке игрового фреймворка на Game Maker Studio 2.3
Сам фреймворк изначально задумывался для разработки игр с интерфейсом, но спустя несколько циклов переосмысления превратился в машину закрывающую многие косяки гейм мейкера, подходящую для разработки всех типов игр.
За косноязычие не судите строго, времени на подготовку совершенно нет, поэтому пишу в лайв режиме, когда есть свободная минутка.
Видео первое:
Видео второе:
- 15 июля 2020, 07:24
- 09
Второй видос подехал
В пост добавлен опрос, тупо посчитать сколько человек кликнет
Кликнул на результат
Жаль у меня GMS 1, но всё равно может там что-то интересное будет из инфы по гамаку.
А так люблю всякие "упрощалки" для разработки.
Там на видео нет ничего такого, чего нельзя сделать на гмс1.
Задавай вопросы, могу более подробно разжевать, что конкретно не понял
Красиво линию сверху сделал. Дизайн.
А то, я старался, для себя делал
На этой неделе больше видосов не будет, ибо не успел, но поскольку народа набралось достаточно, продолжу рубрику на следующий неделе.
Правда, народ хоть и набрался, но комментов по теме нет. Либо всем все понятно, либо материал тупо не актуален. Хз, пока продолжу.
Мне вот не понятно зачем делать формы в гамаке, потому и не актуально, наверное.
Материал на тему того как сделать заебательский шутан или клёвую аркаду был бы более актуальный.
То есть разбор алгоритмов и фишек тебе не интересен сам по себе?
Смотря в каком разрезе. Разбор алгоритмов и фишек на примере игры интереснее чем на непонятно зачем нужном фреймворке форм. Тут изначально установка что "это для меня бесполезно, значит не очень интересно". В обучающих видео хочется изначально видеть актуальную область применимости алгоритмов.
Пример конкретной игры сужает область применения знаний. Тебе дали абстракцию - придумай, что с ней можно сделать. В геометрии ведь не изучают конкретных квадратов. Их дают только в задачах. Область применения воображения широка насколько можно. А целые игры по туторам делать - это неинтересно.
Смотря что за игры. Интересно было бы осветить как сделано время в Super Time Force Ultra каком-нибудь.
Я кстати только за такие уроки!
Как деятельность - поддерживаю. (Но я не с гамака, так что если я порчу объективную картину, в следующий раз не буду голосовать)
Если смотришь, то не так важно с гамака ты или нет. Если можно перенять какой-то опыт с не родной платформы, то почему бы это не делать
Не, ну просто я на ГМ8.1 (7 лет назад) уже делал формы с вложенными элементами.
https://www.dropbox.com/s/lf7xl4das1vfsi8/GM%20GUI%201.0.exe?dl=0
Собственно и исходник вот раздам пожалуй:
https://www.dropbox.com/s/r978sknztz6qxxr/GM%20GUI%201.0.gmk?dl=0
Спасибо)
А почему нельзя создать виндовое диалоговое окно в окне игры?
Потому что в нём не будет души.
Вообще-то можно, была такая DLL. Просто, кто всерьёз будет в это играть?
(а ШП уже на C# сделана)
Пропал энтузиазм. Раз ни один не хочет методы разработки смотреть, тогда нет смысла видосы пилить. Вопрос как сделать крутой шутан к коду не относится — это к Дыбовскому обращайтесь.
Ты методы разработки показывай на актуальных задачах и всё будет ОК.
Актуальная задача то что я пишу. У меня как бы нет цели лепить видео, просто пишу фреймворк и походу дела копится много общей инфы. Хотя я не понимаю почему пауза или создание эффектов не актуальный вопрос. Мне интересно не просто как сделать что-то, а как это лучше структурировать в проекте и какая архитектура(ы) в принципе применима и удобна в гм. Ровно тоже самое я хотел бы послушать от других гм-разработчиков
Вполне актуальные вопросы, недавно Алекс спрашивал вон как раз. Но тут вроде про них не было?
Как же не было, если второе видео посвящено паузе целиком, специально для Алекса. Причем со скриптами изи паузы для экшенов
А, извини, действительно там про паузу есть. Но тут проблема с ЦА - Алекс использует ГМС1, и вряд ли будет писать свой вариант этого же, думаю ему пригодился бы больше твой исходник.
На самом деле мне не жалко исходник, а видосы хотел писать на случай, если кто-то им заинтересуется. Но сейчас ещё и по свободному времени не очень вписывается такая деятельность. Как бы надо еще готовиться к видосам, а не как первые два
Я кстати подписался :3 такие видосы всегда полезны.
Наверное, потому что здесь очень большую роль играет контекст(решаемая задача) о чём я пишу уже третий комментарий в этом сабже. Я могу придумать довольно много игр, где твой метод паузы не применим, например или очень тяжело поддерживаем. При том что метод, который описывали мы с Кситилоном (через скриншот) - применим в 90% случаев. Он проще и не требует такой суровой обвязки и поддержки, и можно изначально не закладывать паузу в архитектуру, т.е. более гибкий. Этим и лучше.
Если ты описываешь у себя какой-то особый метод - расскажи в каком контексте ты собираешься его применять. Чем он лучше обычного снимка экрана?
Я бы понял если бы ты делал через timescale, тогда всё понятно. Тогда такая архитектура даёт тебе не только возможность запаузиться, но и делать всякие примочки типа слоумо.
сделай про "интеллект" для врагов на пример
Дело в том, что ии сейчас не занимаюсь, нет кода на чем основываться и нет универсального понимания. Раньше ии делал по наитию, когда потребуется. В целом, могу лично тебе рассказать, общий принцип как раньше писал
да мне то не нужно, но кому-то может быть полезно :)
А в итоге сами формы не показаны?
С превью второго видео всё интересен момент как там у тебя инпут устроен.
Мне интересно кто какие архитектуры лепит (не только в ГМС, но и вообще).
И как тебе моя?
Пока не смотрел. Подожди, так это опять старый ГМ? yak
Кситилон последний раз кодил в 2007 на gm6
Чего старый, на нём вон Castle of no Escape 2 (2016), и ты сам его писал в нём! Спалился!!! :yak:
Сами формы были в предыдущих версиях, в новой пока не делал. Сделаю - покажу, но сейчас пока у меня не в приоритете. Просто еще постоянно ищу более удобную в работе формулу этих самых форм. Принципиально, есть понимание основы. Если горит, могу старое показать. Где меня искать знаешь.
В прошлой версии было все реализовано, но вышло очень грамоздко и сильно менялось парадигму
У меня где-то тоже были формы, вернее даже недоформы и надо бы их переписать по уму. Интересно как другие выкручиваются для UI различного.
Свои контролы я использовал во Взертосе да в Бумажном обновлённую версию (оба случая - меню настроек). При этом для второй версии (Бумажное) выкинул значительную часть и "упростил".
Вообще, немного обламывает, что в ГМС к 2-ой или даже 2.3-ей версии не завезли какого-то простого конструктора для интерфейса. Конечно можно накостылить себе либо редактор, либо использовать объекты-гмс и комнаты
Насколько я понял, yoyo подразумевает использования объекта со спрайтом в качестве кнопок, что понятно из событий типа Gesture.
Тоже все веду на упрощение. Вообще, после того как один раз написал систему форм, можно уже не использовать ее саму, а программировать следуя структуре которая сформировалась в голове. В идеале, я стремлюсь приблизить процесс работы с формами к парадигме гейм мейкера, но с некоторой автоматизации.
Было бы неплохо посмотреть твой опыт перед тем как начну писать свежую версию
Ага. Даже слои добавили в ГМС2, что теперь с этим проще с этим.
Вообще, честно говоря особо мне и не пригождались мои UI элементы в игре - настройки, да. Меню - тоже. Но всегда можно сделать игру на базе UI с менеджментом окон и этим всем.
Да мой опыт не особо хороший. Это что-то уровня говнокода, который хорошо бы переписать как следует.
Собственно есть контроллер - от него наследуется какое-либо конкретное меню (например, настройки). Элемент это базовый объект всех UI штук типа кнопок. Stick Cursor пока спорный момент, но это управляетор курсором и его данными (нужен по большей части для геймпада и не использования явного запроса положений мышки). Часть с *_option_* это особо новые элементы, так сказать с упрощением и усложнением одновременно - проще они от того, что по замыслу это просто линии, а сложность заключается в явном подсасывании к другому моему скриптовому набору про настройки. То есть option-ы полу-автоматически читают\записывают значение настроек.
Контекстно меню понятно - изначально создавалось как классическое Виндовское. Используется в Бумажном как главное меню.
Элементы немного могут в иерархию.
Тогда мне казалось логичным разбивать на просто ивенты. Но сейчас думаю, что можно переписать на один конкретный ивент и передачу в виде константы какой именно это был ивент.
Все которые OLD - не используются в Бумажном, но во Взертосе на них меню настроек реализовано. Более виндовски-стильные элементы типа чекбокса, списка и просто кнопки.
Весь UI только кодом создаю, не использую комнаты или объекты-ui в комнате явно.
Думал, что юи тебе в первую очередь был нужен для редактора трехмерных уровней. Как же ты реализовал редактор без форм?
Да, те самые the Стенки. Там действительно использовался частично те же структуры wdx, добавились и новые.
В основе своей тот редактор имел хоткеи и прочие "мышкой тяни". При этом хоткеи (да и вообще большая часть того редактора) была хардкодом каким-то.
Но даже там я умудрился написать новый "класс" виджета:
(Гифка на самом деле показывает, что этот элемент "схлопывается"). Строчки редактировать можно было через встроенные в ГМ функции по запросу строки от пользователя.
В какой-то момент я забил (учитывая, что ГМС2 таки поломал мне редактор при конвертации - проще будет новый написать при 2.3) и даже подумывал на всяких сях с winAPI чего сделать - даже сделал немного, но хочется формашлёпить.
(Пытался найти скриншот редактора - так и не смог найти)
Выглядит мощно.
А глич эффект ты специально делал или это артефакт гифа?
Не совсем понял про какой именно глитч речь. Уменьшение "окна" закодированно
На анимации под словом walls
А, мерцание зелёной линии? Это просто так называемый Z-fighting, когда на одной z-глубине (дистанции до камеры) рисуются 3д примитивы
Нашёл немного скриншотов, если кому интересно. Это уже с версии ГМС2.
Выглядит мощно. Как у тебя реализованы столкновения с диагоналями? Только под 45 градусов или с любыми. Была у меня хорошая разработка с коллизиями под любым углом и круг-круг. Там стены хранились в дата структурах и по математической формуле игрок скользит по стенам
Ага, мощно, спасибо. Жаль, что пока в игру не превратилось (а было в планах).
Раза два переписывал столкновения - сначала "как деды", а потом что-то сломал.
Математическую\геометрическую основу понимаю, так как писал уже такое несколько раз.
Столкновения с любым углом, да. Скольжения тоже есть (или были).
Ещё у меня физическая бага со столкновениями была, где-то в твиттере лежит. Суть в том, что каждая ступенька это сектор и следовательно имеет стены, а от этого игрока выкидывает при столкновении (не помню почему раньше оно же работало, а теперь - нет).
Крутой ты дядя
Вот кстати чего мне реально не хватает в почти всех движках и конструкторах (GMS, Construct, Stencyl, Unity):
1) Встроенная диалоговая система в духе Bitsy, но с возможностью выбора. И пока открыт диалог, то другой следующий за ним диалог не появляется ждёт своей очереди как State Machine.
2) Также в этом диалоге можно было бы работать с переменными, также просто как в Bitsy.
3) чтобы эта система могла ставить на паузу Delay на время для катсцен
PS пришлось для этого Юнити недавно ещё раз переписывать, переводил код с JS на C#, и также чтобы диалоговая система была как бы без дополнительного мусора в коде, чтобы этот шаблон для будущих игр использовать не один раз, долго же пришлось помучиться с этим, но на Game Maker я не смогу осилить это, ибо не очень знаком, там я сделал простой уровень, в духе "один персонаж - одна фраза", уровня Zelda на NES.
Вот так это выглядит, ещё удобно что компилятор юнити при этом не мучает, если захочешь короткий код написать, где не важна оптимизация, но важны уникальные, катсцены или диалоговые скрипты.
А чем этот скрипт обрабатывается? Его формат жёстко задан, или это ты сам додумал?
могу скинуть полную версию, там текст разделяется на пробелы с помощью Split,
а потом обычный switch проверяет первое слово, это и будет оператор,
а дальнейшие слова это свойства оператора,
и пока стоит пауза в скрипте (ну например Delay и Menu или Диалог показан)
то дальше просто не читаем скрипт, пока диалог или меню не уберётся
Ну это прям ровно как мой D4, только ключевые слова писать долго каждый раз.
формат не жёсткий, пиши что хочешь, потому понять,
где появилась ошибка сложно, дебагеры я не научился разрабатывать)
А как насчёт всяких yarn spinner, inkle и т.п. плагинов?
У меня с чужими плагинами на юнити как бывает:
Рано или поздно они перестанут обновляться, а с чужим кодом мне не совладать,
когда юнити перестанет поддерживать какие-то фичи плагина, я уже от многих плагинов избавился, из-за того что они больше не работают на новых версиях юнити, а сам их я не смогу прокачать/исправить ошибки
Что это значит? Ставить на паузу (1) задержку (2) на время (3) - это всё об одном и том же.
Я же кидал сто лет назад свою систему D4 с управляемыми диалогами на 4 персонажа... Или не кидал? Забыл.
Пример был, а кода вроде не было, или я такой не внимательный)
ну просто не читаем код дальше, пока не выполнится условие или не уберётся прошлый диалог
А, так это вроде как встроенное поведение у диалога и должно быть?
https://www.dropbox.com/s/3o3h7sr9ji8t0du/Dialogue4-1.1.zip?dl=0 - EXE и файл скрипта (нужен)
https://www.dropbox.com/s/czvc4m9i52r8gdr/Dialogue4-1.1.gmk?dl=0 - исходник.
О, спасибо большое! Гляну!
https://forum.hellroom.ru/index.php?topic=19040.0
Вот тебе диалоговая система
Спасибо! :3