Игрушечный программист - мой опыт Construct 3
46 постов
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
Некоторое время назад на Пикабу появился свой раздел с играми.
Долго я собирался, но всё же собрался предложить туда несколько своих старых игр.
Не сильно надеялся, что всё получится, но вроде получается.
Одна игра (Пятнашки с Евой - Таблица умножения) уже лежит в разделе Головоломок.
Единственная пока оценка у игры - "Так себе", что впрочем не удивительно. Делал её ещё в самом начале изучения Construct 3.
Ещё несколько игр на подходе - сейчас проходят тестирование.
Тоже в основном незатейливые, картинки рисовал сам либо тырил с бесплатных сервисов. Бесплатную музыку брал у Кевина Маклауда.
В общем, просто подумал, что наверное нужно поделиться этим маленьким успехом.
Вдруг кто-то тоже пилит свои игры и пока только подумывает, куда бы их выложить.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
1) В играх стараюсь использовать принцип Final State Machine.
То есть, в каждый момент времени игра находится только в одном состоянии.
2) Для этого использую переменные mode (текущий режим) и modePrevious (предыдущий режим).
К примеру, на стартовом экране у нас игра запускается в режиме "start".
В этом режиме кнопка Поделиться будет работать.
3) Когда игрок нажал на кнопку Поделиться, происходит следующее:
в переменной modePrevious запоминаем то, что было в mode,
переменной mode задаём состояние "share".
появляется окно Поделиться
кнопка Поделиться уже не будет срабатывать, поскольку это не нужно и будет только мешать игроку.
Таким образом, мы разделяем все режимы, чтобы не было ненужных пересечений. Например, чтобы герои не продолжали стрелять, когда игра уже закончилась.
4) Когда игрок закрывает окно Поделиться, возвращаем предыдущий режим.
Таким образом, мы блокируем неуместные срабатывания кнопок и прочих активностей, которые всё ещё на экране, но в определённые моменты срабатывать не должны.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
Слои старюсь называть типовыми именами c маленькой буквы.
Типовой набор для игрового экрана.
transition - непрозрачный слой для плавного затемнения при переходах между экранами. Для этого использую специальную функцию.
windows - окна, которые нужно показать поверх остального интерфейса,
windowsBackground - фон для окон,
gui - кнопки, тексты и т.д.
objects - игровые объекты: персонажи, оружие, предметы. спецэффекты,
buttons - необязательный слой, который был нужен именно в том проекте, из которого сделан скриншот.
background - всевозможные фоны на заднем плане.
На некоторых экранах могут быть не нужны слои типа objects, или наоборот, нужно ещё +100500 дополнительных слоёв.
Но, как правило, везде есть transition, gui и background.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
1) Комментарии на русском добавляю к каждому действию и к каждой группе условий.
Иногда голова не очень хорошо соображает и лучше иметь подсказку на русском, чем ждать озарения свыше о назначении конкретного фрагмента кода.
2) Когда хочется визуально выделить какие-то блоки кода внутри группы, не создавая новую группу, добавляю дополнительные строки комментариев.
В частности, если используется объёмное условие «Если» - «То», «Иначе» - «То», нельзя заключить в отдельные группы блоки «Если» - «То» - это сломает логику игры.
Поэтому приходится как-то визуально выделять эти блоки с помощью комментариев.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
1) Все блоки кода, повторяющиеся более 1 раза или представляющие из себя отдельный законченный блок - выношу в функции.
2) Имена функций пишу на английском с выделением первой буквы каждого слова.
3) Название функции дублирую в названии её группы - чтобы проще было искать по закрытым группам.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
Итак, группы в Construct 3.
1) Все события раскидываю по группам и подгруппам, чтобы всегда представлять себе, где искать нужную часть кода, если она вдруг потерялась.
Или свернуть временно ненужные группы.
2) Группы называю по-русски, чтобы быстро понять, что они содержат. С английским дружу постольку-поскольку
3. Группы верхнего уровня выделяю прописными буквами и дополнительными символами, чтобы сразу бросались в глаза.
В общем, тут всё просто, но группы меня очень выручают в плане ориентации в структуре проекта.
Как обычно, Телеграм:
https://t.me/toyprogrammer
Добрый день!
Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.
Сегодня напишу немного об управлении объектами в Construct 3.
1) Для всех объектов создаю 3 разных подкаталога:
В Interface у меня хранятся кнопки, окна, фоны и всё, что не участвует непосредственно в игровом процессе.
В Objects лежат объекты, составляющие основу игровых механик: персонажи, оружие, всё, что летает по игровому полю, а также массивы.
В Object Types кидаю поведения и плагины (Touch, Keyboard, AJAX и прочие вещи, не выносящиеся на игровое поле).
2) Объекты называю с заглавной буквы.
3) Количество однообразных объектов в проекте (кнопок, текстов, фонов и т.д.) стараюсь ограничивать насколько это возможно, но не более того.
4) Для различения однообразных объектов (кнопок, надписей и др.) добавляю им собственные переменные class, classSub, num, id.
Затем выбираю нужные объекты по их переменным.
5) С помощью собственной переменной state включаю-выключаю отдельные кнопки, когда это нужно.
И потом отслеживаю, если у кнопки включена state = ”on”, то нажатие на кнопку вызывает реакцию.
Иначе ничего не происходит.
6) Для текстовых объектов использую несколько типовых имён:
TextButton - текстовая кнопка (часто располагается поверх пустой резиновой кнопки),
TextInfo - изменяющийся текст (таймеры, счётчики, очки, патроны и т.п.),
TextTest - тестовый текст - помогает отслеживать параметры игры при ошибках. Обычно он скрыт и включается по какой-то кнопке.
7) Для графических объектов использую типовые имена:
Button - кнопки,
Mask - маски,
Array - массивы,
Background - фоны и т.д.
Если нужно разнообразить - добавляю в конец имени уточняющие слова. На примере массивов:
Так их проще вспомнить, если нужно подставить имя объекта в какую-то переменную.
Пока всё, что имею сказать по поводу объектов.
Как обычно, Телеграм:
https://t.me/toyprogrammer