Серия «Игрушечный программист - мой опыт Construct 3»

6

11. Режимы игры - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

1) В играх стараюсь использовать принцип Final State Machine.

То есть, в каждый момент времени игра находится только в одном состоянии.

2) Для этого использую переменные mode (текущий режим) и modePrevious (предыдущий режим).

К примеру, на стартовом экране у нас игра запускается в режиме "start".

11. Режимы игры - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Разработка, Construct 3, Порядок, Режим

Режим start

В этом режиме кнопка Поделиться будет работать.

11. Режимы игры - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Разработка, Construct 3, Порядок, Режим

Кнопка Поделиться

3) Когда игрок нажал на кнопку Поделиться, происходит следующее:

11. Режимы игры - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Разработка, Construct 3, Порядок, Режим

Включаем окно Поделиться

  • в переменной modePrevious запоминаем то, что было в mode,

  • переменной mode задаём состояние "share".

  • появляется окно Поделиться

  • кнопка Поделиться уже не будет срабатывать, поскольку это не нужно и будет только мешать игроку.

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

4) Когда игрок закрывает окно Поделиться, возвращаем предыдущий режим.

11. Режимы игры - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Разработка, Construct 3, Порядок, Режим

Закрываем окно Поделиться

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

Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 3
3

12. Слои - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

Слои старюсь называть типовыми именами c маленькой буквы.
Типовой набор для игрового экрана.

12. Слои - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Construct 3, Порядок, Слои

Слои в проекте Construct 3

  • transition - непрозрачный слой для плавного затемнения при переходах между экранами. Для этого использую специальную функцию.

  • windows - окна, которые нужно показать поверх остального интерфейса,

  • windowsBackground - фон для окон,

  • gui - кнопки, тексты и т.д.

  • objects - игровые объекты: персонажи, оружие, предметы. спецэффекты,

  • buttons - необязательный слой, который был нужен именно в том проекте, из которого сделан скриншот.

  • background - всевозможные фоны на заднем плане.

На некоторых экранах могут быть не нужны слои типа objects, или наоборот, нужно ещё +100500 дополнительных слоёв.

Но, как правило, везде есть transition, gui и background.

Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью
3

10. Комментарии - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

10. Комментарии

1) Комментарии на русском добавляю к каждому действию и к каждой группе условий.

Иногда голова не очень хорошо соображает и лучше иметь подсказку на русском, чем ждать озарения свыше о назначении конкретного фрагмента кода.

10. Комментарии - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Разработка, Комментарии

Комментарии на русском.

2) Когда хочется визуально выделить какие-то блоки кода внутри группы, не создавая новую группу, добавляю дополнительные строки комментариев.

В частности, если используется объёмное условие «Если» - «То», «Иначе» - «То», нельзя заключить в отдельные группы блоки «Если» - «То» - это сломает логику игры.

Поэтому приходится как-то визуально выделять эти блоки с помощью комментариев.

10. Комментарии - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Разработка, Комментарии

Выделение комментариев.

Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 1
2

9. Функции - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

Функции

1) Все блоки кода, повторяющиеся более 1 раза или представляющие из себя отдельный законченный блок - выношу в функции.

2) Имена функций пишу на английском с выделением первой буквы каждого слова.

9. Функции - Порядок в проекте Construct 3 - собственный взгляд Construct 3, Функция, Браузерные игры, Gamedev, Порядок

Функции в Construct 3.

3) Название функции дублирую в названии её группы - чтобы проще было искать по закрытым группам.

Как обычно, Телеграм:
https://t.me/toyprogrammer

3

8. Группы - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.


Итак, группы в Construct 3.

1) Все события раскидываю по группам и подгруппам, чтобы всегда представлять себе, где искать нужную часть кода, если она вдруг потерялась.

Или свернуть временно ненужные группы.

8. Группы - Порядок в проекте Construct 3 - собственный взгляд Construct 3, Gamedev, Браузерные игры, Проект, Группа

Группы в проекте construct 3.

2) Группы называю по-русски, чтобы быстро понять, что они содержат. С английским дружу постольку-поскольку

3. Группы верхнего уровня выделяю прописными буквами и дополнительными символами, чтобы сразу бросались в глаза.

В общем, тут всё просто, но группы меня очень выручают в плане ориентации в структуре проекта.

Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 1
3

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

Сегодня напишу немного об управлении объектами в Construct 3.

1) Для всех объектов создаю 3 разных подкаталога:

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

Каталоги с объектами.

  • В Interface у меня хранятся кнопки, окна, фоны и всё, что не участвует непосредственно в игровом процессе.

  • В Objects лежат объекты, составляющие основу игровых механик: персонажи, оружие, всё, что летает по игровому полю, а также массивы.

  • В Object Types кидаю поведения и плагины (Touch, Keyboard, AJAX и прочие вещи, не выносящиеся на игровое поле).

2) Объекты называю с заглавной буквы.

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

Объекты.

3) Количество однообразных объектов в проекте (кнопок, текстов, фонов и т.д.) стараюсь ограничивать насколько это возможно, но не более того.

4) Для различения однообразных объектов (кнопок, надписей и др.) добавляю им собственные переменные class, classSub, num, id.

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

Собственные переменные объектов.

Затем выбираю нужные объекты по их переменным.

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

Выбор нужного объекта по его переменной.

5) С помощью собственной переменной state включаю-выключаю отдельные кнопки, когда это нужно.

И потом отслеживаю, если у кнопки включена state = ”on”, то нажатие на кнопку вызывает реакцию.

Иначе ничего не происходит.

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

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

6) Для текстовых объектов использую несколько типовых имён:

  • TextButton - текстовая кнопка (часто располагается поверх пустой резиновой кнопки),

  • TextInfo - изменяющийся текст (таймеры, счётчики, очки, патроны и т.п.),

  • TextTest - тестовый текст - помогает отслеживать параметры игры при ошибках. Обычно он скрыт и включается по какой-то кнопке.

7) Для графических объектов использую типовые имена:

  • Button - кнопки,

  • Mask - маски,

  • Array - массивы,

  • Background - фоны и т.д.

Если нужно разнообразить - добавляю в конец имени уточняющие слова. На примере массивов:

7. Управление объектами - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Порядок, Объект, Массивы, Переменные, Длиннопост, Construct 3

Названия массивов.

Так их проще вспомнить, если нужно подставить имя объекта в какую-то переменную.

Пока всё, что имею сказать по поводу объектов.


Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 5
0

6. Переменные - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

Часть 6. Переменные.

1) Переменные всегда называю латинскими буквами с редкими вкраплениями цифр. Это даёт уверенность, что игра правильно всё поймёт и не создаст проблем из-за кириллицы в именах или я не перепутаю латиницу с кириллицей.

2) К переменным применяю «верблюжий» принцип camalCase: начинаются они со строчной буквы, а каждое следующее слово в ней - с прописной:

6. Переменные - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Construct 3, Переменные, Порядок

Верблюжий принцип.

3) Для каждой переменной подписываю её назначение. Иногда это очень помогает быстро вспомнить, зачем она вообще нужна:

6. Переменные - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Construct 3, Переменные, Порядок

Комментарии к переменным.

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

4) Никогда не создаю булевых переменных (boolean - триггеров true-false). Не нравятся они мне :)

А если быть точнее, их сложно преобразовать во что-то другое. К примеру, вчера мне казалось, что переменная mode будет переключать только 2 режима. А сегодня выяснилось, что их будет 3.

Чтобы не скакать потом по всему коду заменяя булеву переменную, я заранее делаю её строковой (string) и задаю ей одно из двух значений: on или off,

Почему не true и false? Так короче, легче менять одно на другое (on на off и обратно) и понятнее по смыслу (включено-выключено).

6. Переменные - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Construct 3, Переменные, Порядок

Строковые переменные вместо булевых.

5) Константы почему-то не использую. Пытался, но потом всё равно про них забываю. Поэтому пользуюсь только обычными переменными.

6) Большая часть переменных, как и большая часть событий у меня оказывается в листе common.

7) Список переменных в листе сортирую по алфавиту (латинскому), чтобы быстрее находить нужные.

6. Переменные - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Браузерные игры, Проект, Construct 3, Переменные, Порядок

Сортировка переменных по алфавиту.

Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 2
2

5. Экраны и листы событий - Порядок в проекте Construct 3 - собственный взгляд

Добрый день!

Меня зовут Руслан.
С 2016 года делаю игры в редакторе Construct 3.

В этой заметке вкратце покажу как управляю экранами и листами событий в Construct 3.

1) Экраны (они же макеты) всегда называю с заглавной буквы.

5. Экраны и листы событий  - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Вкладки, Макет, Название

Названия экранов.

2) Листы событий - всегда с маленькой.

5. Экраны и листы событий  - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Вкладки, Макет, Название

Листы событий.

3) Если лист событий относится к определённому экрану - у них одинаковое имя (разница только в регистре первой буквы).

Это позволяет сразу понять, что это за вкладка - экран или лист событий. И не съедается лишнее место в пространстве вкладки.

5. Экраны и листы событий  - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Вкладки, Макет, Название

Вкладки с экранами и листами событий.

4) В отдельные листы событий выношу:

  • массивы (array),

  • обработку кнопок (menu),

  • обработку непрерывными действиями: бег персонажа, всякие ползунки, прокрутки и т.п. вещи (control),

  • тестовые кнопки и события (test),

  • столкновения (collisions),

  • обработку функций Вконтакте, Яндекса, Google (vk, yandex, google, gamePush),

  • мультиплеерные функции (photon),

  • прочие обособленные наборы событий,

  • общее для всех - выношу в лист common. Обычно он получается самый объёмный.

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

5. Экраны и листы событий  - Порядок в проекте Construct 3 - собственный взгляд Gamedev, Проект, Браузерные игры, Construct 3, Вкладки, Макет, Название

Вложенные листы событий.


Как обычно, Телеграм:
https://t.me/toyprogrammer

Показать полностью 3
Отличная работа, все прочитано!