История разработки одной игры: Как я участвовал в конкурсе "Кубок Игровой Вспышки 2"

Написать эту статью я планировал сразу после окончания "Кубка Игровой Вспышки 2", но поскольку все послерабочие вечера и выходные были отданы шлифовке конкурсной игры и подготовке ее к продаже – выделить время для написания получилось только сейчас. Эта статья по-сути является сильно адаптированным и немного сокращенным переводом статьи с моего блога (на украинском). Правда есть здесь и некоторые размышления, которых в оригинальной статье вы не найдете.

When I Was Young

Статья получилась очень длинной, поскольку в ней я попытался осветить все, что касалось конкурса, а также «послеконкурсной жизни» игры. Кого не пугает много букв – welcome под кат.

За свой недолгий опыт флеш-разработки, раньше я никогда не работал над платформером. Но очень хотелось попробовать. Поэтому, узнав за несколько недель до Нового Года о начале подготовки ко второму конкурсу флеш-разработчиков, я решил, что во что бы то не стало, возьму в нем участие. Для полного погружения в разработку я даже взял недельный отпуск на основной работе.

Как вы понимаете – о жанре своей игры я знал заранее. Надеялся только, что тема конкурса окажется «сочетаемой» с платформером. Впрочем – было бы желание – а соединить жанр можно практически с любой темой.

Подготовка к конкурсу

Наверное, было бы наивно приступать к разработке игры в абсолютно новом для меня жанре без предварительной подготовки. Но предновогодние хлопоты не оставляли времени на программирование. Только накануне конкурса (2 января) я сел за компьютер с твердым намерением разобраться в «платформерной кухне».

Почти все, что было нужно для создания платформера, я нашел в книге Foundation Game Design with Flash, а так же внимательно изучил урок о создании простого платформера на Xitri.

В течении дня я создал «одноэкранный» платформер, исправил баги с «проваливанием» сквозь платформы и заставил ГГ более-менее адекватно реагировать на события клавиатуры.

prototype

И хотя выглядело это крайне примитивно, я в принципе остался доволен – «движок» для будущей игры был готов. Не обошлось, правда, и без мелких багов – как то «соскальзывание» ГГ, когда он стоит на краю платформы. Но впоследствии их удалось исправить.

День 1 (вторник): Концепция, главный герой, карта

Во вторник жена уехала на пару дней к маме, что позволило с головой погрузится в разработку: только я, большая кружка чая, компьютер и ветка обсуждения конкурса на FlashGameDev.

Идея игры родилась практически сразу. Коль уж тема "Путешествия во времени", а жанр – платформер, то и концепция будет заключаться в возвращении в прошлое. Главный герой (старый дедушка с палочкой) пожелал вернуться во времена своей молодости. Для этого ему нужно найти соответствующие артефакты, коллекционируя которые он становится моложе, становясь при этом более быстрым и ловким. Геймплейно это должно было отображаться в повышении скорости передвижения и высоты прыжков ГГ. Карту же я задумал таким образом, чтобы в некоторые места нельзя было попасть, пока ГГ не станет моложе.

Собственно, почти весь первый день ушел на создание карты и «допиливание» движка платформера. Сразу решил, что игровой мир будет двигатся не плавно (ГГ всегда находиться в центре), а методом переключения экранов, когда ГГ подходит к границе. Некоторым членам жури такая реализация не очень понравилась, но это был сознательный выбор, который позволил не только создать некоторые игровые фишки («тайный ход», который позволяет пройти игру на 30% быстрее) но и заранее исключить проблемы с производительностью (за счет того, что не нужно постоянно двигать игровой мир).

Рисовал карту на развороте тетрадочного листа в клеточку. Выглядело это так (извините за качество, сканером пока не разжился):

map
В первый же день приступил к реализации игровой карты, но при отсутствии редактора процесс двигался очень медленно, поскольку приходилось вручную позиционировать платформы, прописывая их координаты в AS-файле. Это, конечно же не самый правильный подход, поэтому, если в будущем буду делать платформер, обязательно подумаю над созданием игрового редактора.

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

first day

День 2 (среда): Продолжения работ над картой, визуальное представление ГГ

Половину второго дня работал над картой, которая создавалась из большого количества прямоугольных блоков. Каждому блоку нужно было указать размеры и координаты на «глобальной» карте, после чего протестировать игру и проверить, в правильное ли место «встал» блок.

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

Создание графики здорово отвлекает от математических подсчетов. Но поскольку рисовать я только учусь – работа двигалась очень медленно. На полную отрисовку и анимацию еще двух «амплуа» главного героя (молодой мужчина и мальчик) ушло никак не меньше 6 часов. Не знаю, можно ли считать такое время нормой, но мне кажется, что рисунки такой «сложности» должны создаваться быстрее. Будем надеться, что все прийдет с практикой.

three heroes

Когда закончил графику для главного героя, время на часах было уже пол третьего ночи. Но я твердо решил, что не пойду спать, пока не реализую первый артефакт, который увеличивает силу прыжков ГГ, позволяя ему взбираться на ранее недоступные платформы. В результате лег спать ближе к 4-ем.

День 3 (четверг): Наконец закончил карту. Работа над чекпоинтами и шипами

Проснулся в 11 и приступил к карте, поставив перед собой цель закончить ее к вечеру. И если раньше у меня еще возникали мысли сделать несколько уровней, то в этот день я окончательно от них отказался – было очевидно, что не успею.

Окончание работ над картой было для меня первой маленькой победой, ведь именно с этого момента игру стало возможно «пройти» от начала и до конца.

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

День 4 (пятница): Графика. Первые враги

Наступило время приступать к созданию графики. Судя по времени, которое ушло на «собирание» карты из прямоугольных блоков, всю графику для заднего плана я создать (а тем более – интегрировать в игру) не успею. Решил ограничиться травой.

Чтобы как-то «натянуть» графику на уже готовую карту, сделал небольшой логический класс, который создает спрайты травы нужного размера. Но размещать их снова же пришлось вручную.

Вся графика, которая не берет участия в «физическом» взаимодействии с ГГ, создавалась в отдельном контейнере поверх спрайта с платформами.

Удивительно, как сильно изменяется игра, стоит только добавить в нее несколько элементов графики. Банальная трава очень существенно оживила игровой мир и добавила вдохновения работать дальше. Жаль только, что я уже не успевал создать полноценный задний фон.
grass

Но нужно было двигаться дальше – и я приступил к врагам. Поскольку идея игры заключалась в возвращении в прошлое, то и врагами стали злые часы. В четверг успел сделать только агрессивный будильник, логика ИИ которого ограничивалась движением туда и обратно на заданном участке карты.

День 5 (суббота): Враги, исправления багов, озвучка

Хотя в течении каждого из предыдущих дней я работал над игрой не менее 12 часов, все равно суббота оказалась самой напряженной и продуктивной. Общее время за компьютером в этот день составило 18 часов.

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

Первое, чем я занялся, были враги. В субботу я создал второй тип врагов – злобные настенные часы, которые стреляют в главного героя своими стрелками. Немало времени ушло на расстановку врагов на карте и исправление мелких багов.

Второе – озвучка. Если на озвучку предыдущих проектов я тратил по 3-4 дня, то тут время поджимало. На адаптирование SoundManager-a (благо, уже создавал подобный для предыдущих проектов) и поиск подходящих звуков/музыки ушло часов 7.

В 2 часа ночи я понял, что спать сегодня не буду. Жена решила меня поддержать и тоже не ложилась. Создал последний артефакт, который нужно «собрать», чтобы закончить игру.

В 4-ре почти все запланированное было готово. Оставался час на исправление мелких «глюков» – и пора ехать на вокзал.

Ума не приложу, как мы не проспали свою остановку в электричке…

День 7 (понедельник): Экраны старта и окончания игры. «Указатели движения»

Воскресенье прошло в приятном общении с родными за праздничным столом. Как и планировали – вернулись в Киев ближе к обеду в понедельник, когда до окончания конкурса оставалось менее 12 часов.

Впрочем, сделать оставалось не так и много – экраны старта и окончания игры, а так же «указатели движения» на границах екранов, где не совсем понятно, в какую сторону прыгать.
final

Время на часах – 21.00 (в Москве, значит, уже 22.00). Делаю иконку и загружаю на FGL. Теперь можно вздохнуть спокойнее – в игру вступает жури!

Оценки, обзоры, впечатление от работы жури

Моя игра When I Was Young набрала 7,03 бала из 10 возможных, что позволило ей занять третье место среди 15 учасников категории «Одиночки». Это стало для меня очень приятным сюрпризом. Честно говоря, не ожидал занять призовое место, когда в декабре регистрировался в конкурсе. Кстати, мне удалось сразу после окончания конкурса и задолго до начала голосования жури угадать игры, которые займут первое и второе места – YZX (Disco Fish) и A Friend For The Ages (dennatolich). Считаю, что эти две игры победили заслуженно.

Полный список победителей можно посмотреть в отчете Flazm-а.

Главное и самое приятное впечатления от этого конкурса – видео-обзоры игр от членов жури. Вряд ли в какой-либо другой ситуации у вас будет возможность гарантировано получить фидбек от 11 ведущих разработчиков. Такой опыт без преувеличения – бесценен.

Лично для меня наиболее полезными и интересными оказались те обзоры, в которых судьи играли в игру впервые. Эмоции при просмотре были непередаваемые. Например, почти все судьи столкнулись с трудностями при попытке перепрыгнуть первую яму с шипами. И хотя в момент разработки я сознательно сделал ямы широкими, поскольку на этом был завязан геймплей (герой не должен перепрыгнуть яму прежде, чем получит соответствующий апгрейд), но под впечатлением от видео, где некоторые судьи умирали на шипах по 10 раз к ряду, я существенно пересмотрел концепцию и увеличил начальную скорость ГГ.

Так же не всем членам жури было очевидно, в какую сторону бежать. Поэтому, столкнувшись с препятствием, они пытались преодолеть его, не смотря на то, что для этого нужно было сначала получить апгрейд. Уже после окончания конкурса и оценки я добавил в сложных местах таблички, которые предупреждают, что вам рановато двигаться в эту сторону и предлагают поискать альтернативный путь.

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

graphics

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

Организация конкурса тоже была на высшем уровне. Единственное, что можно еще улучшить – это систему оценки игр. Возможно, имеет смысл ввести для судей единую систему (как это делали fedoit и Lerika) – в которой каждый судья ставит игре оценку по нескольким категориям (арт, фан, звуки, обучение, соответствие теме и т. п.), а потом выводит среднее значение.

В текущем конкурсе были судьи, которые придерживались концепции FGL и почти не ставили оценки ниже 6 (добрый Flazm), но были и такие, которые без зазрения совести ставили ноли нескольким играм к ряду (привет Mokus). Впрочем, это право каждого судьи. Но все же желательно, чтобы система оценивания была более прозрачной и единой для всех.

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

Жизнь игры после конкурса

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

Конечно, можно было бы увеличить количество контента/врагов/артефактов, но я подумал, что это неоправданно затянет время разработки, и по примеру именитых разработчиков решил вернуться к этому в сиквеле, если When I Was Young более-менее понравится аудитории игроков.

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

achievements

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

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

Сейчас игра находится в процессе торгов на FGL. Доступ открыт для всех разработчиков. Вот ссылка: When I Was Young на FGL.

Если игра заинтересует кого-то из отечественных спонсоров – буду очень рад.

Спасибо за внимание! Надеюсь, было интересно.
  • +27

Комментарии (35)

0
О, знакомая иконка. Я очень надеюсь оно поможет с продажей…
0
Спасибо! :) У этой иконки, кстати, достаточно высокий рейтинг. Но поставил я ее слишком поздно — где-то через 2 недели после начала торгов.
0
Отличная история, удачи в продажах :)
  • hitab
  • hitab
0
Рад, что понравилось.
0
Удачи с продажей и успехов в дальнейших начинаниях!
0
Спасибо :)
0
Хорошая игра и интересная история. :)
Немного попридираюсь — стрела от часов с кукушкой пролетает через землю, не знаю баг или фича, но несколько неожиданно в первый раз.
Если управление на клавиатуре, то «продолжить» можно еще активизировать, например, пробелом — на заставляет переключаться на мышь и обратно.
  • abyss
  • abyss
0
Спасибо за отзыв.
«Продолжить» активируется клавишей ESC (убрать окно с экрана). Возможно, действительно имеет смысл продублировать еще и на пробел (хотя могут быть и случайные нажатия, ведь на пробеле сейчас прыжок).
По поводу стрелы — так и задумывалось. Если стрела не будет пролетать сквозь платформы — то становится слишком просто.
0
Видя абсолютно одинаковые кусты, в одном и том же месте, на двух соседних экранах заставляет мозг плавится, В остальном всё нормально.
А то что для стрелок часов блоки не препятствие это фича?)
0
Уже написали про стрелки)
Я 1 место к слову не смог пройти из за часов, поле с координатами(по вашему листу) (3«4)
0
Если я понял правильно, о каком экране речь, то странно, почему не смогли пройти. Далеко не самое сложное место с часами. Там надо на предпоследней «ступеньке» подождать, когда стрела подлетит и прыгнуть в последний момент. В трейлере, кажется, есть это место.

Вообще, по отзывам кардинально противоположные впечатления по сложности. Большинство говорит, что сложность как-раз то что надо. Но есть и такие, кому слишком сложно или слишком просто. Один мой хороший друг (хардкорщик по натуре) сказал, что игра ему понравилась, но сложность нужно увеличить в несколько раз. Как рефренс предложил Митбоя ;)
0
Интересно было почитать! Идея игры тоже понравилась!
Кстати, твоя схема уровня напомнила одну статью по дизайну уровней для платформеров.
Моежт уже была ссылка, но довольно полезная статья.
devmag.org.za/2011/07/04/how-to-design-levels-for-a-platformer/
  • Mak
  • Mak
0
Очень интересная стаття. Спасибо за ссылку. Раньше не видел, но, как оказалось, действительно использовал много похожих принципов при разработке. Впрочем, они достаточно интуитивны. Я не представляю, как создать качественный уровень, если нет глобальной карты…
0
Хотел спросить вас и других опытных игроделов.
Честно говоря, мне вообще не понятна логика создания ачивок, если я, конечно, правильно перевел, которые можно получить только при первом проходе, а если уж не получил, то все — «в пролете».

Хотелось бы узнать, какой в этом резон и как это способствует возвратам в игру.
Спасибо.

Игра хороша, с удовольствием опять прошел.
По ходу в тот раз я нашел секретный проход. В этот раз как-то не попался он мне.
Удачных продаж.
0
Спасибо за отзыв. Секретный проход в прошлой версии был слишком очевиден (несколько судей нашли его, играя впервые, хоть и не искали специально), поэтому в новой версии я немножко изменил ландшафт уровня. Секретный проход остался там же, но теперь по дизайну это не так очевидно. Так что найдут только те, кто будет специально искать. Ну и по карте тоже можно определить.

По поводу ачивок:
Если не получил ачивку с первого раза — то это и мотивирует вернутся и переиграть, чтобы все-таки получить. Вообще не считаю себя специалистом по ачивкам, так что будем смотреть.
0
Ну, да — в этот раз специально не искал, потому что хотел посмотреть, что за ачивки у вас. Поэтому и возник вопрос. Так-то я нередко люблю порыскать где-нибудь.

Не хочу снова проходить, чтобы привести цитату. Просто я не нашел, либо у вас нельзя зайти в меню до игры — только играть.
Так вот, там в ачивках (я не про все вообще) после золотого кубка — 3 кубка, где написано что-то вроде «получишь, если пройдешь на золото с первого раза»…
… Блин, я тупой, все понял. Я сначала воспринял это как «при первом запуске». Мне показалось это зверством и бессмысленностью. Теперь я сообразил — не до конца отупел, видимо — имеется ввиду первое прохождение до получения бонуса по скорости. Если так, то вопрос снят. ОК.
0
имеется ввиду первое прохождение до получения бонуса по скорости

Так и есть. :)
P.S.: Кстати, достичь этого (получить золото до получения бонуса на скорость) легко, если идти через секретный ход. Если же идти обычным путем — то получить эту ачивку почти нереально.
0
Суть ачивок в том, что когда долго делаешь одно и то же действие, думаешь не только о том что за него получаешь сразу, а и о том, что еще приближается открытие ачивки. Не так скучно гриндить :)
0
Клёвый рассказ.:) +1
Удачи в продаже…
0
Спасибо. Когда будет третья часть о разработке Sky Castle? ;)
0
К сожалению погодно-морозо-в-квартирные условия подпортили график, но в пятницу очередной этап обязательно будет…
0
Знаю «художниов», которые на разработку арта персонажа вроде твоего тратят по 1 дню :)

По поводу сложностей с левелдизайном. А зачем надо было координаты объектов в коде размещать? Гораздо проще во флэш иде создать заготовки уровней с размещением врагов, вэйпойнтов, платформ и всех прочих элементов. Собсно, нужно в коде только сделать простой парсер этой красоты, и подставлять по координатам размещенных примитивов нужные объекты.
Насколько помню, кто-то уже публиковал на блогах подобный подход, где-то год назад.
0
Думаю, что вариантов, на самом деле, много. Просто об таком подходе не знал, а мне он в голову во время разработки не пришел.

На самом деле, если буду когда либо еще работать над платформером, скорее всего постараюсь сделать для этих целей игровой редактор.
0
Такой вот «редактор» на основе флэша в большинстве видов игр можно использовать — от физ паззлов и до стратегий. А разработка нормального редактора нечасто окупается — просто по совокупности затраченного на разработку времени.
0
Хороший рассказ, и игра интересная:)
Удачи с продажей
+1
Игра понравилась, но стоит увеличить дальность прыжка у мальчика.
Очень хотел пройти её до конца, но мои нервы не выдержали ловить миллиметры и постоянно умирать на шипах.
  • FreeS
  • FreeS
0
Спасибо за отзыв.
Вообще, критики именно по прыжкам было много. В общей сумме я трижды увеличивал силу прыжка. Сейчас мне кажется, что все наоборот — слишком просто. Для меня критерием было, когда моя жена без особых усилий начала перепрыгивать все ямы (хотя, может просто наловчилась).
0
И не одной картинки в посте. ):
0
Это шутка?
0
Нет, это глюк браузера. (:
+2
Люблю смотреть на тест-альфа-бета графику. Как игра рождается из пары квадратиков. Это всегда завораживает. Спасибо за интересный пост, игра очень забавная и по механике напоминает серию игр «Robot Wants...». Удачи в торгах. (:
0
Очень рад, что статья понравилась. Спасибо :)
0
Отчет очень хороший, игра после полировки стала еще лучше.
Умничка.
0
Спасибо. Приятно слышать. Надеюсь в скором времени порадовать отчетом о продаже ;)
0
Приятно было почитать, удачи в торгах =)
  • TeNoR
  • TeNoR
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.