Ваша игра не удалась. Начать ещё одну?

cBJunuf

В начале декабря поучаствовал в джеме Ludum Dare 40. Кто вдруг не знает — это такая сходка разработчиков игр от мала до велика, где за выходные надо сделать игру и загрузить на сайт с последующей оценкой участниками работ друг друга. Игра создаётся на объявляемую в самом начале мероприятия тему. До этого я участвовал 4 раза в одиночном варианте (Compo) и 4 раза — в команде (Jam). В Jam менее жёсткие правила: можно без всяких формальностей использовать код из других своих проектов, брать кого-то ещё в команду, и есть дополнительные сутки (всего 72 часа) на разработку игры. Судятся Compo и Jam тоже отдельно, так что одиночки обычно идут в Compo, иначе сложно конкурировать с другими командами.

Подготовка

Где-то за месяц до LD загорелся желанием поджемить и написал мне об этом 3D-модельщик Егор, с которым мы вместе уже проходили джем, например, с игрой-головоломкой Mr. BigCash. Позже подтвердил участие и музыкант указанной игры Фёдор.

iIK8JNp

На все последние джемы я ставлю какую-то задачу (или несколько), которую заинтересован решить. В этот раз я присматривался к движку Godot для одного из своих проектов. Поскольку в этом движке можно и 3D, а Егор лучше всего умеет и давно хочет на джеме 3D, я предложил сделать игру в 3D. Отмечу, что это не первый мой опыт в 3D, хотя с кватернионами и матрицами преобразования я всё ещё «на вы». В качестве фокуса проекта я решил выбрать полировку — то есть улучшение поверхностной составляющей игры, по которой складывается первое впечатление и «ощущение игры» («game feel»). Фокус выбран таким из-за того, что в предыдущих джемах на это почти не хватало времени.
Те, кто участвует, чтобы попробовать победить и якобы раскрутить свою игру, возразят, что надо выбирать инструменты и жанры, которыми хорошо владеешь. Исторически так сложилось, что для меня Ludum Dare гораздо полезнее в плане обучения, а не в плане создания прототипов для их последующего переделывания в коммерческие продукты. Поэтому я по возможности стараюсь выходить из зоны комфорта и обкатывать навыки, которые так или иначе связаны с проектами, над которыми я уже работаю.
Подготовка шла неторопливо по вечерам, в ходе неё был сделан каркас игры на Godot с 6 вариантами управления/камеры, в том числе, а ля стратегический вариант, который хоть и не беспроблемно, но прижился на джеме. Подготовка прошла в целом удачно, но было сделано только около трети всего задуманного, изначально даже не следовало так замахиваться, но зато на джеме иллюзий благодаря подготовке у меня было меньше. Также отправил на github движка пару сообщений о багах, и один даже успели исправить до джема.

Один из уровней, сделанный во время подготовки (второй персонаж — это забавный баг):

OCwlwsW

Помимо этого был накидан список из сеттингов, и к каждой теме финального раунда голосования за темы был прикреплён набор из 3х сеттингов, описанных несколькими словами (см. под спойлерами). Такой подход выбран потому, что меня напрягают длинные утренние субботние мечтания Егора по поводу того, какую игру нужно начать делать. :-P

Floating islands — 1, 19, 40
The more you have, the worse it is — 13, 43, 44
A single resource — 20, 37, 34
Limited space — 2, 27, 29
Expanding — 32, 34, 41
You are not the main character — 5, 39, 44
Tiny machines — 25, 42, 50
Only three colors — 21, 30, 35
Broken world — 14, 43, 48
Start with nothing — 29, 45, 49
You control the scenario, not the character — 4, 8, 40
One level, but constantly changing — 8, 21, 34
Death is useful — 8, 16, 38
One minute — 18, 21, 36
Into the unknown — 4, 16, 37
Everything is connected — 5, 17, 40

1. Аналог, но с возможностями 3Д (Лягушка прыгает по брёвнам и черепахам, брёвна крутятся.)
2. Цирк — идти по канату, на тебя (или шест) прыгают макаки, сложней идти.
3. Машинка ездит по городу и собирает монетки и бензин. Которого мало.
4. Мистер Биг 3д (возможно попроще)
5. Хоррор в бесконечном поезде (типо чтоб повторялся, и мульт-герои для простоты, типо «время приключений» или «унесённые призраками»)
6. Стратегия экологическая
7. Нанороботы, с их точки зрения мир вокруг кажется гигантским
8. Похождения вампира в склепе/замке, юмористический хоррор
9. Светлячок заблудился в сказочном ночном лесу
10. На космическом корабле, дрейфующем в космосе
11. Город зимой, замерзшие бездомные бродяги
12. Архипелаг в тропиках, много маленьких островов, можно между ними ходить
13. Жадный король страны гномов
14. Типа фильма ТРОН, мы внутри компа, а владелец компа его то и дело апгрейдит
15. Заброшенный замок с ловушками
16. Морские существа топят средневековые корабли
17. Сигнальные костры индейцев
18. Тибетские монахи, сверхспособности
19. Девочка воображает животных, состоящих из облаков и ходящих в облаках
20. Постапокалипсис. В качестве валюты используются шурупы :D
21. Приключения овощей на кухне. Причем человек в процессе готовки еды
22. Поиски артефактов под водой
23. Инопланетяне прилетели и поменяли генетический код существ на Земле
24. Рыцарь и его оруженосец
25. Крот-изобретатель механизмов
26. Флорист, делает клумбы на заказ для привередливых дам
27. Космический патруль не пускает народ за пределы их годного клочка космоса
28. Из гаража убежали колеса
29. Снеговики сражаются на арене
30. Танцующие грибы
31. В канализации пародия на черепашек ниндзя
32. Пожар распространяется по земле
33. Спутники на орбите, связь между пунктами на Земле
34. Слизистые болотные монстры-камикадзе
35. Инопланетяне, дифференциация по цвету штанов
36. Спецслужбе нужно удерживать на телефоне подозреваемых
37. Полеты на воздушном шаре, балласт
38. Кузнец делает оружие на заказ
39. Рыцарь и его лошадь
40. Служба почтовых голубей
41. Рекламщики продвигают сериалы
42. Искусственный интеллект на базе микроорганизмов
43. Сказочное фэнтези: МЧС спасает незадачливых горожан
44. Голем-гигант, у которого сила черпается из маленького существа, сидящего на нем. И существо как помогает, так и паразитирует
45. Инопланетяне кидают мусор (б/у устройства) на Землю, а сталкеры его собирают и находят применение
46. Кочевники в пустыне
47. Мир разлетелся на осколки, парящие в воздухе, и избранный пытается восстановить его
48. Фэнтезийный мир, в котором время идет задом наперед
49. Одиночка на необитаемой планете
50. Тестировщик устройств. К нему поступают упаковки с разными миниатюрными устройствами, чтобы он по инструкции проверил их

Суббота

Тема джема в этот раз — The more you have, the worse it is.

Как с утра узнали тему, так и выбрали вариант сеттинга под номером 13 и начали работу (точнее, Егор одобрил этот вариант ещё заранее, поэтому я не стал ждать, пока он выйдет на связь, и сразу начал проектировать уровни и писать/адаптировать код).

Концепция была следующей: есть страна гномов, и ей правит жадный король. Король отправляет гномов на опасные задания ради получения разных безделушек. Я хотел, чтобы предметы надо было искать и они располагались случайным образом при перезапуске уровня, но ради упрощения работы не стал так делать. Решено было ограничиться несколькими маленькими уровнями-туториалами, т.к., по опыту предыдущих джемов, большие уровни делать некогда.

В первый же час программирования стало понятно, что запекание навигационных мешей для pathfinding перестало работать в Godot (совсем перестало, даже с откатыванием версии проекта и/или версии движка). Решил взять код управления от третьего лица и скрестить его со стратегическим.

К обеду работало управление юнитами по одному и ручное управление камерой (курсор мышки к краю окна или WASD).

Хотел заранее приготовить еды, но было некогда, так что сделал кастрюлю супа в этот день, хватило и на другие дни джема. Разумеется, ел я не только суп, да и вообще на протяжении джема я ел целых 4 раза в день из-за стресса :-(

После обеда налаживал стрельбу гоблина-лучника и работал над сценаристикой. Записал забавную гифку про яйца.

GQx70bX

Накануне джема было решено не выкладывать никакие скриншоты/гифки наработок публично до вечера воскресенья (московское время), т. к. в США утро наступает позже, и могут позаимствовать идеи (и это уже происходило).

К концу дня был готов проходимый вариант первого уровня с временным артом, включающий первый вариант музыки и первый вариант текста диалогов.

S4BHBGD

Воскресенье

Придумал название игры.

Большая часть звуков была записана в этот день, часть записана в понедельник. Для звуков использовался портативный рекордер фирмы Sony, мой голос и взаимодействие половника (суп помог и здесь) с воздухом и разными объектами комнаты. Диалоги во дворце короля — повышение высоты тона и реверберация — добавляются в реальном времени встроенными средствами Godot.

К середине дня стало понятно, что Егор увлёкся модельками гнома и гоблина и забыл про остальной арт. В понедельник к нему на помощь пришёл музыкант Фёдор, который тоже умеет делать 3D-моделирование.

К концу дня заработали уровень 2 и первый вариант уровня 3, были добавлены в игру арт гномов и лучников. Управление камерой заменено на автоматическое.

ZgFMjK7

Понедельник (и ночь вторника)

Доделали арт, какой успели. Доделал сюжетную фишку в конце уровня 3 (игра короткая, если пройдёте, то узнаете, что за фишка :P). Из звуков — оружие и бубнение персонажей в конце уровней 2 и 3. Музыка основная и короткая для обозначения победы в уровне.

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

Gxs3hM2

Но в целом я доволен своим собственным тайм-менеджментом в этот раз, обычно много моей критической для прохождения работы доделывалось в последний день джемов, в этот раз — облажались, в основном, с артом. С одной стороны, у меня плохо получается параллельно руководить собой и кем-то ещё, с другой стороны, я всегда хотел, чтобы ребята сами учились управлять своим временем, а не тупо слушались меня — что-то вроде мечты о коммунизме в рамках отдельно взятого джема.

Это единственный день, когда я не спал около 20 часов подряд, что не так уж и много, главное — после этого хорошенько выспаться. Если надо утром на работу в пятидневку, то советую заранее отпроситься на понедельник и вторник — для Jam, или на понедельник — для Compo.

— производить атаку по триггеру из анимации, а не по таймеру, при долгой атаке фаза анимации расходится с самой атакой
— полоску здоровья над головой у гоблина
— величина наносимого урона над юнитом в виде числа, летящего вверх
— бег лучников за гномами в уровне 3
— выделение нескольких юнитов рамкой
— кружки выбора под ногами у гномов (но арт кружка всё равно не был сделан)
— пение пьяных гномов во второй части уровня 3 синхронно с музыкой
— монстра-мини-босса во второй части уровня 3
— переговоры гоблинов в уровне 3 а ля игры жанра стелс
— запоминание цветов выживших гномов между уровнями
— подсчёт числа выживших гномов советником и разные реплики короля в зависимости от количества
— реверберацию в пещере для всех звуков (как это сделано для диалогов с королём)

Последжемие

Скачать результат наших стараний можно тут (ссылки внизу страницы между описанием и рейтингами).

После джема хорошо бы набрать минимум 20 оценивших игроков, чтобы попасть в таблицу рейтинга. Тут самые очевидные для меня варианты:
 — выкладывать вечером, когда джем ещё не закончен, в твиттер красивые гифки с хештегом #ldjam. Если повезёт, то ретвитнет кто-то из крупных деятелей мероприятия, например, сам аккаунт @LudumDare :-)
 — пойти к стримерам за фидбеком и игроками (остановлюсь на этом пункте подробнее ниже);
 — добавить игру в разные комьюнити, например, теги на itch.io и newgrounds.com или в ответе на посты на разных сайтах с просьбой отметиться всех участников LD по какому-то критерию (такие посты любят делать ответственные за аккаунты игровых движков в соцсетях);
 — играть в другие игры, оценивать их и оставлять конструктивные комментарии.

Ещё один важный момент — обновлять страницу с игрой, добавляя туда подсказки будущим игрокам, если у кого-то были трудности с игрой. Страница игры на сайте джема — это то, что вы можете, не нарушая правила, сколько угодно раз дополнять любыми подсказками, которые не вошли в игру.

Также по правилам LD можно выпускать после джема (и засчитать это как джем-версию) порты на другие платформы и исправлять серьёзные баги, связанные с работоспособностью игры.

Стримеры

На сайте мероприятия часто создается специальный тред, в котором отмечаются разные летсплееры и стримеры, но этот тред бесполезен чуть менее, чем полностью! :D
Все, что нужно — это регулярно проверять панель справа на сайте ldjam.com или список каналов по этой ссылке. Собственно, на панель они попадают из того же фильтра, как по ссылке.

PYVAUO3

^ Стример доволен прохождением

Как только появляется новый стример, то заходим к нему на канал и узнаем, как добавить игру к нему в очередь. Чем меньше зрителей у канала, тем меньше ждать, пока у стримера дойдут руки до вашей игры (а зрители, как вы могли догадаться — это такие же разработчики с LD, как и вы).
Обращу внимание, что лучше не напрашиваться к нескольким стримерам одновременно, за исключением случаев, когда очереди очень длинные, тогда можно добавиться в длинные и в это время ходить по коротким. Иначе есть вероятность, что у нескольких ваша игра будет одновременно. Конечно, можно потом посмотреть запись стрима, но качество фидбека понизится, нельзя будет вовремя подсказать, если стример где-то застрянет, и он может просто не выдержать и выйти из игры. Также не отсылайте игры перед тем, как пойти спать, многие стримеры предпочитают личное присутствие разработчика и будут выкидывать/отодвигать неугодных в очереди. :-)

CMWlMhT

^ Cтример ищет лёгкий режим в настройках, секунды до rage quit

Стримеры — тоже люди, и у них свои заморочки по поводу очереди игр, например: некоторые будут играть только игры с itch.io, некоторые будут только веб-версии, некоторые — только скачиваемые версии, некоторые принимают ссылки напрямую из чата, некоторым — надо послать ссылку через гугл-форму, обычно, у таких продвинутых стримеров есть и личный бот на канале, который покажет все ссылки на формы, если написать команду типа !ldjam или !submit. Знакомьтесь и как можно раньше уточняйте насчёт их личных предпочтений. ;-) И не забудьте поиграть в игры стримеров, которые поиграли в вашу игру, и поставить сердечко их каналу.
Важный момент: поскольку некоторые стримеры преследуют именно цель набрать себе 20+ оценок, то они будут только сразу после джема (если вам не надо куда-то ходить на работу, то как только вы проснётесь после джема, то возможно, уже будет кто-то стримить), а потом ряды стримеров поубавятся, так что торопитесь.
Как и с обычными тестами с привлечением игроков, главное — это не слушать советы (хотя советы тоже дают весьма полезные), а наблюдать, где у стримеров возникают трудности с пониманием игры, с управлением, со сложностью и т. д.

Дал поиграть в Majestyland около 10 стримерам. Вот несколько наблюдений и советов (самые очевидные поверхностные вещи я сюда не писал):

— стримеры придумали несколько хитрых тактик против тупых гоблинов, например, спрятать одного гнома за стеной, чтобы в него стреляли, а остальными гномами спокойно пройти мимо лучников; в случае Majestyland наличие таких альтернативных тактик — это хорошо
— добавить больше гномов в уровень 2 (гоблин научился стрелять вниз с моста уже под конец джема, не затестил, как следует)
— музыка при запуске сразу громкая (надо начинать ненавязчиво и дать возможность отрегулировать прежде, чем оглохнешь)
— мышкой можно кликнуть мимо окна игры (надо использовать режим «confined»)
— кубики уровня сливаются, и не видно, где проход, а где стена (надо иметь неплоские поверхности или не направленный свет, а точечный)
— надо бы дать гномам фору по скорости атаки, слишком часто гном уже дошел и замахивается на гоблина, но облом
— не всем понятно, что гоблин stun’ится только временно (а поскольку большинство гоблинов — одиночки, то можно было сразу убивать в один удар и не нервировать игрока)
— не понятно в уровне 3, какого гоблина надо убить перед тем, как засчитается победа (а еще лучше навязать игроку способ прохождения более мягко, например, ключ от сундука всегда у гоблина с определенным типом внешности)
— надо бы сделать, чтобы сообщения-подсказки закрывались игроком, а не по времени (не успевают читать)
— надо бы игнорировать повторные клики при атаке гномом (иначе приказ и атака начинаются заново)
— слабый визуальный контраст между пещерой и гоблинами
— нужен дополнительный уровень, чтобы игроки освоились с управлением гномами по одному, либо переделать уровень 2, чтобы мостик был в начале, а не в конце (в конце может остаться всего один гном)
— не понятна загадка в конце 3 уровня, совсем не понятна, приходится подсказывать каждому индивидуально
— гномы застревают в стенах то и дело, а также друг в друге при атаке (пытался устранить во время джема, но не до конца получилось. можно просто добавить pathfinding)
— гном на мосту не хочет ходить понемногу, ходит далеко рывками
— не хватает индикатора выбранного гнома и индикатора радиуса видимости гоблина (радиус видимости можно показать левел-дизайном вместо явного индикатора)
— поскольку многие пытаются пробежать мимо нижнего гоблина в уровне 2, то неплохо пойти навстречу и разрешить такую тактику в этом месте уровня
— динамическая сложность, с каждым проигрышем сделать больше гномов (я хотел так сделать на джеме, но из-за багов отменил)
— не хватает возможности группировать гномов и управлять несколькими, но не всеми
— одному стримеру не понравилось, что советник короля — «adviser», а не «advisor», хотя у меня в Lingvo они помечены как равнозначные
— некоторые люди сразу в первом уровне начинали управлять гномами по одному и проигрывали
— если гномы далеко друг от друга, то они не останаливаются при достижении края экрана, а уходят за экран

Апдейтов к игре не выпускали (некогда :-().

Рейтинги

Во вторник весь день активно надоедал стримерам. К утру среды набралось минимально необходимое для попадания в таблицу рейтинга количество оценок. Потом в течение оценочного периода, который длится около 3х недель, постарался поиграть игры с Гамина, с постов в комьюнити Godot, игры ребят, которых я читаю в Твиттере, те, что понравились на стримах и, конечно же, игры тех, кто оставил комментарий на странице нашей игры. Также на новом сайте ldjam.com добавили возможность сортировать игры по количеству полученных оценок, чтобы, например, помочь получить последнюю оценку до минимума.

На момент написания этого поста рейтинги не выставлены, посмотреть для нашей игры можно будет на её странице: https://ldjam.com/events/ludum-dare/40/majestyland

Думаю, что снова будут где-то в диапазоне 200−600 место по разным категориям. Посмотрим, сильно ли помогла полировка :-)

Итог

Поставленная цель — добавить в игру множество приятных декоративных мелочей — достигнута. Внезапно, народу понравились мои диалоги и их озвучка на псевдоязыке. Понравились графика гномов и музыка, ребята знают своё дело.
Не очень хорошо получилось с графикой в уровнях, а совсем плохо — с управлением.
В очередной раз не удалось собрать посреди джема промежуточный билд и дать его поиграть кому-то не из команды.
Более-менее удался туториал в первом уровне, во 2 м и 3м — не очень, игрокам не хватало зоны комфорта.
Задача на следующий джем — прокачаться в этих слабых местах.

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

9X0skpI

Контакты команды

Ребята в том числе занимаются подработками на фрилансе, обращайтесь:

Егор (арт) — twodreams.ru

Фёдор (музыка и арт) — vk.com/jackerton или fedoreli [at] mail [dot] ru

В качестве бонуса — стикеры для Телеграма

Tata!