Пользователь
0,0
рейтинг
15 апреля 2011 в 15:20

Разработка → Игра за два дня из песочницы

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

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


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


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

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

Движок для игры – 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 часа сна.
— Никогда не знаешь, что получится в конце, если изначально все досконально не проработано.
— Интенсивная разработка приводит к стрессу, в результате чего кто-то может из нее выбыть (у нас в процессе разработки такое чуть не случилось, и все равно, после двух дней некоторые участники заболели).

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

Всем удачи!
Антон Григорьев @fischer
карма
66,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • –1
    Недавно на Хабре проскальзывал топик про работу в «потоке».
    Вот вам и поток. Самый натуральный :)
    А PC версия будет? :) И где её можно будет купить?
    • –4
      на iTunes сказали же…
      • +6
        Вы всегда сначала пишите, а потом читаете, а потом думаете?
  • +3
    Стиль описания специфический, но опыт работы в таком режиме интересен, особенно тем, что это своеобразный отдых от рутины, «мягкий» экстрим. Удачи в продажах и дальнейших разработках =)
  • +7
    Картинок бы :)
  • 0
    Ни картинок, ни ссылок
  • +1
    Знаете — у меня есть опыт написания песен таким вот нон-стопом и с потолка. Но у нас сроки поменьше — ночь на песню — вечером идея — к полуночи музыка и к утру песня. Ясно, что ничего гениального, но в конечном итоге все превратилось в такое себе времяпрепровождение с концентрированным процессом — и никто не знает что будет в конце. Вот уже больше года мы так собираемся — и нас по прежнему прет.… нужно с играми попробовать. :) Но боюсь, что за ночь не управимся… разве что тетрис или реверси… :)
  • +2
    Молодцы конечно, что сделали так быстро. Но вот только к чему этот конь в вакууме за два дня. Смотрю на японцев и совсем не хочется быть овощем при таких темпах. Лучше за две недели, но без стресса.
  • 0
    Думал, что идея игрушки была взята из flOw, но видать показалось.
  • +2
    itunes.apple.com/us/app/papa-penguin/id429419818?mt=8&ls=1
    вот это она? Да, выглядит очень даже ничего как на работу за два дня :)
  • +1
    Честно говоря, я так и не понял, зачем так поступать? Зачем работать на износ? Какой в этом смысл? Надолго вас не хватит, особенно если делать похожие забеги часто. Да и представить, что у вас творилось в проекте — просто страшно. Это не в обиду вам сказано, просто такие темпы никак не способствуют элегантному коду и красивой архитектуре.

    P.S. У слова «допилить» есть замечательные синонимы: доделать, дописать, доработать, закончить наконец…
    • +1
      Про «допилить» — согласен. Я сам всегда за правильный русский язык. Но тема — IT и Game Development. Поэтому решил оставить это общеупотребительное в этих кругах слово.
      А про работу на износ: да, сейчас смотрю и понимаю — было тяжело. Но тогда это было здорово! Нужно просто попробовать! Кому-то может понравиться, кому-то нет. Мне — понравилось:) И мы обязательно еще не раз воспользуюсь этим методом (на самом деле, как уже писали, его можно использовать не только для разработки игр). Может быть, чуть в «более спокойном»темпе.
  • +2
    отличная реализация фразы «взять и сделать», спасибо было интересно.
  • +18
    Да я джва дня ждал такую игру!
  • –2
    После этого топика термин «экстремальное программирование» приобрел второй смысл :)
  • +2
    Выглядит отлично, но где же ваш продажник — за 6 дней не одного отзыва в US App Store

    Можете так же сказать как вы программировали для iPhone в VS, думал что для iPhone можно программить только в Обджект-С на маках… %)
    • +3
      Unity3d — кроссплатформенный движок. Позволяет писать игры для: iOS, Mac OS X, Windows, XBox 360, Wii, PS3, Android и WebPlayer. Скрипты пишутся на C#, Java и Boo (все .NET). Базовая версия (для Windows, Mac и WebPlayer) — бесплатная.
    • 0
      Кстати да, как с продажами дела обстоят? Все-таки интересно…
  • –1
    c# на iphone?
    • 0
      Я тоже сначала опешил… Но Unity3D позволяет писать скрипты на C#. И даже предлагает интеграцию с Visual Studio
    • 0
      Давно: monotouch.net/
      Unity3D создано на базе Mono
    • 0
      на c# можно писать для платформ android, iPhone и WP7. Вот здесь можно посмотреть кроссплатформенное приложение.https://github.com/conceptdev/RestaurantGuide
  • 0
    Мероприятие называется HackDay. Приходите на следующее. Еще много игр сделаете.
  • +3
    Два дня жить работой легко.

    Научите, как 2 дня бездельничать и не думать о разработке.
  • 0
    лайт версию или промокодов бы еще.
  • +1
    Но ведь папа-пингвин обычно остается с пингвинятами, а мама идет добывать пропитание.
    Или я что-то не понимаю? :)
    • +2
      Про маму-пингвина. Скоро выйдет ролик игры. Там, возможно, раскроется история того, куда делась мама;)
      Фишка игры как раз в том, чтобы почувствовать, как самоотверженно именно папа-пингвин добывает еду для своих деток.
  • 0
    А как решали проблему с анимациями? Unity 3D не очень анимирует спрайты. SpriteManager покупали?
    • 0
      Нет. Спрайты у нас свои. А в Unity есть компонент Animation. Этого вполне хватило. На самом деле, это очень мощная штука! С каждым днем узнаю о ней что-нибудь да новое;)
      • +7
        может вам стоит написать краткий курс по 2d hello world для unity?
        • +6
          Хорошая идея! В свое время я перерыл много информации по этой теме. Пока сам не написал все, что нужно было. Если будет немного свободного времени, напишу. Структура статьи и все, что хочу в ней написать, уже вырисовывается в голове;)
          • 0
            С нетерпением жду статью, как-раз под 2D есть концепт, а выдумывать движок из желудей и Cocoa не хочется.
          • 0
            тоже с радостью почитал бы…
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Поиграл в вашу игру на ipad. Неплохо для такого короткого срока.
  • 0
    А как по вашему мнению такой темп повлиял на качество кода? О «синдроме рефакторинга» вы упомянули, но не сказали, насколько сильно он проявился. Не было ли ощущения, что в спешке пришлось многие вещи делать «неправильно»?
    • +1
      На самом деле за эти два дня я писал код лучше, чем когда-либо. Мозг работал на ура! За эти два дня я узнал, как делаются многие вещи на Unity, во многом разобрался. Производительность и качество были высокие. Какие-то мелкие детали — да (причем я любитель доводить все до блеска, да и студия у нас с соответствующим названием;). Но сейчас намного больше мыслей по поводу того, как развить игру, сделать ее еще интересней. Т.е. по геймплею, нежели по коду.
      Вообще, один из принципов экстремального программирования примерно звучит так: «пиши код; по ходу дела он будет меняться, при этом в лучшую сторону». Так было и у меня. И Unity — хорошая для этого платформа. Не нужно тратить время на разработку кода, связанного с OS, графикой и тд. Полностью концентрируешься на скриптах, которые описывают игровую логику. А это куда менее рутинное и более интересное занятие. И буквально сразу же видишь результат.
  • 0
    Под андроид будет? :)
  • 0
    А разве под iOS можно писать на C#? Думал только C++ и Objective-C. А на чем еще можно?
    • 0
      Для совсем не понимающих C++ и ObjC — Adobe Air, AS 3.0 соответственно, как рекомендованный самой Adobe (ну правда, не шучу).

      Единственный затык — без сертификата и аккаунта на девелоперской зоне Apple нельзя «пощупать» опубликованную версию приложения (не опубликованную в Appstore, а Publish из Flash IDE или Build из, скажем, FlashDevelop через FlexSDK). Эмуляторов тоже не находил.
      • 0
        Тьфу ты. Не Adobe Air, конечно же. Adobe Flash. Совсем разработка эйровская мозги забила.
        • 0
          А разве Flash на iOS актуален. В том смысле, что пресловутый packager от Adobe — это есть ни что иное, как обычный Flash Player и тормозит это дело безбожно.

          Вроде как флэш — не вариант, если писать под iOS
  • 0
    Ещё раз подтвердили старую истину — 90% работы делается за 10% времени…
  • +1
    Помимо хабра где-то проводили раскрутку?)
  • 0
    Жаль нет бесплатной демо версии
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Надеюсь, что Вы хоть немного работали с Unity и/или C#, чтобы так утверждать) Потому что Objective-C и все остальное, что предлагается для разработки под iOS (а я с этим раньше работал), ни в какое сравнение не идет с Unity и MonoTouch. Конечно, если есть уже наработки на Objective-C/C++, то грех их не использовать. Но если таковых нет, и нужно быстро (да даже если и не быстро) реализовать проект — я одназначно отдаю свой голос Unity.
      Я уже писал, что при разработке на Unity о многом можно не беспокоится. Кроме того, движок кроссплатформенный. В любой момент проект можно выпустить на другой платформе. Кстати, Unity также предлагает встраивать код, если нужно что-то оптимизировать, например на С/С++. Плюс к тому, это очень дешевый движок по сравнению с другими существующими (а базовая версия вообще бесплатная), в то время как он имеет безграничные возможности.
      И еще. Если честно, Вы пока первый, от кого я открыто слышу, что игра не понравилась. Ну или хотя бы, что «жалко» потраченный бакс. Ну что ж, все люди разные, и вкусы не могут быть одинаковые, я понимаю;) Не в обиду сказано;)
      • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Уже спрашивали, но вы проигнорировали вопрос :)

    Как дела с продажами?
    • 0
      В AppStore скоро появится обновление 1.2, в котором будет много улучшений и новых фич:)
      И наконец-то появился ролик:
      www.youtube.com/watch?v=s0hjMzKdXco
    • 0
      К сожалению, не могу ответить на этот вопрос, т.к. не имею права разглашать такую информацию.
  • 0
    Появилась Web-версия игры! Прошу ознакомиться!;)
    Играть!

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