Pull to refresh

Игра за два дня

Game development *Unity3D *
Sandbox
Как-то здесь на хабре была заметка о мероприятии про игру за два дня. Предлагалось зарегистрироваться, найти себе команду (всех тех, кого раньше не хватало), вспомнить старые залежавшиеся задумки, укрыться от внешнего мира на два дня и реализовать игру. Идея мне понравилась, и мне сразу захотелось попробовать ее на практике.

Вот что у нас получилось.


С чего все началось


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

Плюс к этому:
  • руководитель проекта
  • ответственный по продажам наших игр
  • знакомый композитор и звукорежиссер (с которым предстояло выйти на связь)

Движок для игры – Unity3d. Он был опробован на основном проекте, в большей степени изучен и выглядел идеальным для нашей цели. Язык программирования – С#. Хороший развивающийся язык, на котором удобно и быстро писать код (особенно при наличии связки Visual Studio + Resharper) с меньшей вероятностью ошибок при быстром написании кода, чем в С++. Разрабатываем мы игры для iOS-устройств, что тоже в нашей ситуации плюс, т.к. устройства эти распространены, а AppStore — хорошая платформа для того, чтобы почти сразу начать продукт продавать.

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

Дело было добровольным. Кто не хотел – мог не участвовать. К счастью, всем идея понравилась. Было решено, сделать все в выходные, а именно – разработка игры была намечена на воскресенье и понедельник. Суббота – на отдых. А во вторник можно было отоспаться и прийти на работу позже. Чтобы не тратить время на дорогу домой, решено было ночевать в офисе (благо наш офис – больше квартира, нежели офис, и некоторые остаются ночевать в нем). Обед и ужин решили тоже заказывать в офис.

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

День D


В назначенный день, в воскресенье, все в хорошем расположении духа утром были в офисе. Расписание было боевым: к 12 часам путем мозгового штурма выбрать идею, затем развить и облечь в законченную форму, к 15.00 сделать прототип, чтобы можно было опробовать и, если что, что-то вычеркнуть из планов разработки, а что-то новое внести. Далее – интенсивная разработка до 13.00 следующего дня. К этому времени должна была быть практически готовая игра. До 20.00 понедельника предлагалось ее тестировать и «допиливать». А к 22.00 отправить на одобрение в Apple.

Идея выбиралась в соответствии с правилом: никто не против. Одна из идей победила. Это должна была стать игра про пингвина, в которой нужно было найти оптимальный маршрут между плавающими рыбками, чтобы собрать их всех до того, как кончится кислород. Идея не новая, но при проработанном геймплее и красивой графике должна получиться хорошая игра. В первую очередь учитывались вероятные работы по написанию кода и рисованию текстур, и вообще, возможность быстрой реализации. Почти все участники были «за», один «не против». Попутно обсудили функционал: должно быть несколько уровней, два параметра пингвина и т.д. Но к 12 часам подробной картинки того, что именно должно было получиться, не было. Только в общих чертах.

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

Мы поигрались с прототипом. Понимание того, что в результате получиться и успеем ли мы окончить всрок, он нам не дал, и я просто продолжил реализовывать основной функционал игры. В данный момент основная работа была на мне (строчить код) и на художнике (он очень быстро и красиво «генерировал» текстуры). Остальные прорабатывали идеи и занимались другими, не связанными непосредственно с разработкой делами. А один человек (тот, что был «не против» идеи), к сожалению, вообще как-то выпал из процесса разработки. Объяснить это можно так:
  • у него не было особого энтузиазма (в отличие от других, у которых он более чем был) разрабатывать игру по идее, предложенной не им;
  • он не знал, чем бы он мог всем помочь;
  • другие ему тоже не нашли вовремя дела, т.к. сами были очень заняты (хотя некоторые вещи ему можно было поручить).

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

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

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

Где-то к 02.00 все, кроме меня, легли спать. Я так увлекся, что до 4 утра не мог остановиться. Только здравый смысл (!) и мысль, что поспать все-таки нужно, заставили меня завалиться спать. Уснул сразу же.

День второй


Проснулся я в 8 утра и сразу же продолжил программировать. Потом подтянулись остальные, и разработка продолжилась. Почему-то именно второй день не так ярко запомнился, как первый. Во второй день необходимо было «допилить» игру, разнообразить и сделать интересней. Даже к 15.00 игра не была готова. К этому моменту решили делать один, но бесконечный уровень. Нужно было настроить игру так, чтобы играть было интересно все время (что практически невозможно). Были выдвинуты некоторые идеи по этому поводу, и я сел их реализовывать.

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

К середине дня было выбрано название для игры: «Papa Penguin». Игра получалась действительно про папу-пингвина, который должен был добывать рыбу для своих детишек, а те просили все больше и больше!
Так же необходимо было оптимизировать игру, чтобы она запускалась и работала без тормозов на всех устройствах iPod и iPhone, начиная с младших поколений, и iPad. Следовало учесть их отличия в разрешении экрана, соотношении сторон, наличии вибрации и тд. Самая большая проблема была в отличии в разрешении Retina-экрана iPhone/iPod 4 по сравнению с предыдущими поколениями. Но эта задача была решена. Не пришлось ничего перерисовывать. Только для меню задники сделали разными для обычных и для HD-устройств.

В итоге: мы «допиливали» игру до 7 утра вторника. Без сна. Самое интересное, что к этому времени мы были еще полны сил. Но нужно было решать, выкладывать игру сейчас, или же допилить ее позже. А допиливать еще было что… Где-то начиная с вечера, я перестал периодически заливать игру на iPod 2, в итоге утром оказалось, что она на нем не запускается. Так же необходимо было оптимизировать игру, т.к. она стала подтормаживать, плюс всякие мелкие недоделки, которые всегда остаются после разработки, и которые постоянно хочется переделать (синдром «рефакторинга» у программистов).

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

Следующая неделя


Американское понятие XP (eXtreme Programming – экстремальное программирование) напрямую связано с нашим мини-проектом. Все делалось быстро, но и качественно, в любой момент планы и требования могли измениться (и менялись). Только у нас был extreme development – экстремальная разработка, если быть точным. По-немецки это можно было бы назвать Blitzentwicklung – молниеносная разработка, по аналогии с Blitzkrieg – молниеносная война. Эти наши два дня и были молниеносной разработкой. Эффективность была высока, т.к. все были мотивированы, в хорошем настроении, и сама идея, что игра действительно быстро получается, несла только позитив. Теперь немного о печальном.

В среду утром пришли не все. Два человека заболели. Так же выбывший во время разработки человек все еще занимался другими, не связанными с нашей текущей игрой делами. За эти два дня игра была сделана практически полностью. Практически. Т.е., в ближайшей перспективе задача нами выполнена не была. За два дня полностью завершить игру не удалось. Попробую перечислить все то, что на мой взгляд, привело к этому:
  1. Это был наш первый опыт участия в подобном мероприятии. Мы до начала разработки не имели практически ни малейшего понятия, как она будет проходить.
  2. Идея игры была не проработана до конца. Детали не уточнены.
  3. Работать с перерывом на сон в 4 часа очень трудно.
  4. Планировалась мини-игра. Со всеми наворотами получилась не такая уже и «мини».

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

На шестой день мы ее залили в iTunes на рассмотрение Apple. Еще неделю она была в очереди на рассмотрение, и один день в Apple ее «обозревали», а сейчас она уже в AppStore.

Итоги и выводы


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

Теперь мы ждем, чтобы посмотреть, как идея экстремальной разработки себя окупит. «Текущая» задача была выполнена: мы получили новый интересный продукт, который уже продается. К тому же сейчас у нас множество идей по его улучшению и дальнейшему продвижению. Мы пришли к выводу, что сделать качественную игру за два дня можно. Но только если это «супер-мини»-игра (типа пятнашек, например), её идея хорошо проработана и все спланировано до минуты. Но то, что получилось у нас – тоже неплохо. Игра получилась явно не «супер-мини» и явно не плохая. По крайней мере, по собственным ощущениям и отзывам знакомых. Судить в конечном счете игрокам.

О том, что привело к успеху в разработке игры:
  • сама идея такой разработки и новой игры подняла наш «боевой» дух;
  • профессионализм участников, их способности к обучаемости и быстром впитывании всего нового;
  • C# + Visual Studio + Resharper + Unity3d – с программисткой точки зрения.

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

Общий, оптимальный, по моему мнению, план подобной разработки выглядит так:
  • Неделя на сбор идей, их обсуждение, выбор. Это все помимо основного проекта, т.е. в свободное время, во время отдыха, обеда и тд.
  • В конце недели – собрание. Выбор идеи, её утверждение и проработка.
  • Два дня – экстремальная разработка. Возможно, с большим временем на сон, чем было у нас.
  • Дополнительное время на разработку появляется из расчета на то, что ночевать участники будут в офисе.
  • Один день после экстремальной разработки – отсыпной.
  • До конца недели – доработка игры в спокойном темпе.

В итоге получаем неделю на разработку. Это – очень даже реально. Особенно если есть уже опыт и наработки по другим играм.

Теперь о плюсах и минусах такого подхода:
+ Можно реализовать то, что давно хотелось сделать.
+ В конце недели получается новый продукт.
+ Каждый в полной мере показывает, на что он способен, реализует свои возможности.
+ Настроение и мотивация сильно повышаются, а вместе с ними и производительность.
+ Коллектив становится более сплоченным (как в походе – человека узнаешь в беде).
— Разрабатывать с перерывом на 4 часа сна очень тяжело. В свои студенческие годы я так еще мог, да и сейчас могу, но это уже тяжелее. Напомню, я программировал в общей сложности где-то 38 часов, + 4 часа сна.
— Никогда не знаешь, что получится в конце, если изначально все досконально не проработано.
— Интенсивная разработка приводит к стрессу, в результате чего кто-то может из нее выбыть (у нас в процессе разработки такое чуть не случилось, и все равно, после двух дней некоторые участники заболели).

Наш итог: делать игры таким способом мы, скорее всего, еще будем не раз (по крайней мере, я себе взял это на заметку). И, надеемся, когда-нибудь мы достигнем такого профессионализма, что сделаем полностью законченную игру ровно за два дня!

Всем удачи!
Tags: разработка игригра за два дняHackDayэкстремальное программированиеXPUnity3dCResharperIdeal BureaucracyPapa Penguin
Hubs: Game development Unity3D
Total votes 140: ↑135 and ↓5 +130
Comments 58
Comments Comments 58

Popular right now