Хотите услышать рассказ о том, как классика ролевых игр на PC смогла возродиться как мультиплатформенный проект, да еще и в виде «расширенного издания»? Один из основателей Bioware Трент Остер (сегодня — президент компании Beamdog / Overhaul Games, занимавшейся разработкой переиздания) готов провести нас за кулисы и рассказать, как же все происходило.
Итак, разговор пойдет про Baldur's Gate: Enhanced Edition (внутри студии мы ласково зовем ее BG: EE), которая вышла на PC 28 ноября 2012 года, а на iPad — 8 декабря, и вызвала огромный интерес среди игроков, который позволил ей подняться до второго места в U.S. App Store и до первого — в App Store ряда других стран.
Нашим первоначальным планом был практически одновременный запуск на всех возможных платформах; сейчас становится ясно, каким же наивным было это решение, если учесть размер нашей команды и объем предстоящей работы. Сейчас мы усиленно трудимся над версиями для всех оставшихся платформ и надеемся на то, что кросс-платформенный мультиплеер в BG станет реальностью. Игра достигла значительных успехов на PC и iPad, нас встретили успешные продажи и позитивный отклик фанатов, так что оставшиеся платформы не заставят себя ждать.
Разработка Baldur's Gate: Enhanced Edition стала интересным приключением. Мы пережили незабываемое чувство, когда впервые запустили Baldur's Gate на планшете и доказали свою теорию — как мы и думали, BG и планшеты были просто созданы друг для друга. Были моменты вдохновения — нам многое открылось из тех опытов, когда мы привлекали людей из коммьюнити моддеров и давали им попробовать бета-версии. Были и моменты отчаяния — например, когда оказалось, что оригиналы арта безвозвратно утеряны, или когда нам приходилось идти на уступки ради того, чтобы сделка состоялась. Были моменты, когда мы испытывали жутчайший стресс — например, когда нам пришлось продлять контракт на выпуск игры с сентября до ноября. Каждый день ждали разрешения на публикацию любой новой информации об игре — поэтому общение с фанатами превращалось в настоящую пытку. Мы старались прийти к соглашению как можно быстрее, но из-за возни с подписями наш график все дальше катился под откос.
Мы пережили несколько отличных моментов как команда — например, когда мы первый раз увидели новый UI в самой игре, или когда новая музыка, написанная Сэмом, наконец-то заиграла в одной из локаций. Благодаря всему этому увлекательному приключению мы стали сильной командой из тринадцати человек и поняли, что способны на великие дела. Поработали с такими профессионалами, как Марк Мир, Джон Галахер и Сэм Хулик (персонал BioWare — соответственно, актер озвучки, концепт-художник и композитор — прим. переводчика). Возможность поработать с великолепным оригиналом потребовала от нас умения создавать что-то не менее хорошее — знакомое, но в то же время и непохожее. Короче говоря, Baldur's Gate: Enhanced Edition стала для нас вызовом, но мы смогли закончить разработку, не сойдя при этом с ума, и даже более того — с прекрасным пониманием механизмов игры, технологии игрового движка и всего того, что сделало Baldur's Gate настоящей легендой.
Что пошло хорошо
1. Поклонники и коммьюнити
Мы с самого начала знали, что ключевой элемент успеха «Enhanced Edition» — в привлечении максимального количества людей из коммьюнити Baldur's Gate и авторов модов. Работая с ними вместе и внимательно прислушиваясь к их идеям, мы смогли сделать игру лучше, предпринять правильные выборы и удовлетворить желания поклонников (напоминает то, как Bioware работала над оригинальной игрой: разработчики постоянно присутствовали на крупных форумах поклонников CRPG, внимательно исследуя пожелания игроков в отношении игры и CRPG в целом — во многом благодаря этому они точно знали, что делать, и Baldur's Gate заведомо был хитом еще до появления на прилавках магазинов — это немного проясняет, почему игра так многим пришлась по вкусу — прим. переводчика). Первые наши попытки построить совместную работу были достаточно грубы и неумелы — Reddit по инвайтам, прямые электронные письма — но все стало гораздо лучше, когда мы запустили официальный форум игры, где смогли напрямую высказывать свои мысли и выслушивать соображения поклонников. Мы делились с ними всем новым контентом так скоро, насколько это вообще было возможно, и старились реагировать на их фидбек. Помощь в этом нам оказала закрытая бета — мы постоянно выкладывали новые бета-версии, а поклонники честно рассказывали нам о том, что им понравилось, а что — нет.
Ядро коммьюнити сформировалось достаточно быстро, и произошло это само собой — в основном оно состояло из людей, которые выделялись своим здоровым критицизмом и продуманными предложениями. Мы читали вообще весь фидбек, но реагировали в первую очередь на глубокую и серьезную критику — в коммьюнити быстро это прочуяли и все принялись углубляться в проект. Вся закрытая бета формировалась как раз среди членов этой активной «вдумчивой» группы.
И да, мы всю свою жизнь будем благодарны тем, кто вместе с нами сражался на форуме за то, чтобы сделать Baldur's Gate лучше.
2. Прошлые рабочие связи
Нашу ситуацию осложняло то, какое количество компаний принимало участие в этом проекте: Atari, Hasbro, Wizards of the Coast, BioWare, EA и мы (Beamdog). Когда мы наконец-то утрясли основные условия сделки и убедили всех в том, что мир ждет не дождется возможности еще разок погрузиться в мир Baldur's Gate, у нас появилась возможность заняться сбором всех заинтересованных сторон вместе. Разобраться со всем быстро нам помогли наши прошлые связи. На то, чтобы пробиться через стену безразличия Atari и поговорить с нужными людьми, у меня ушло больше времени, чем на большую часть работ над игрой. Я помню, как на GDC встретился с человеком, который несколько месяцев не хотел разрешать мне поговорить с руководством компании. Когда мы увиделись, он сказал «Ты, должно быть, меня просто ненавидишь». На что я ответил «Уже нет».
Рад, что среди моих друзей оказались Ричард Иванюк, Грег Зичук и Рэй Музика. Они помогли связаться со всеми, от кого требовалось получить подписи, за более-менее разумное время. Ричард смог собрать всех ключевых авторов «на том конце провода» вместе и помогал нам отстаивать свои решения относительно игры. Дерек Френч помогал со стороны BioWare — он помогал нам не утонуть в безднах кода и с ассетами артворка во время всего процесса разработки. (Урок, который мы из этого вынесли — без человека, который был бы связан с каждой из групп авторов, ничего бы сделать не удалось.)
Я 15 лет проработал в BioWare и был рад встретиться со старыми знакомыми снова. Я начинал как один из ее оригинальных основателей, работая над дизайном, программированием и артом на проекте Shattered Steel. И я — тот самый человек, что провел Neverwinter Nights от одной строчки в контракте «все, что угодно, в коробке с надписью D&D» до того, чем она стала в конечном итоге — за семь лет разработки и два больших дополнения. Свое странствие я продолжил как технологический директор и незадолго до ухода в 2009 году вернулся к любви все моей жизни — управлению разработкой проектов. Величайшее преимущество игровой разработки — это люди, которые ей занимаются. Я надеюсь, что когда-нибудь я смогу отплатить им за все, что они для нас сделали — знать бы еще, как это сделать.
3. iPad и тачевый интерфейс
Мы доказали, что рынок планшетов готов к приходу на них серьезных и больших RPG. Успех был впечатляющим, как и отзывы от изданий Touch Arcade и Pocket Tactics — да и фидбек от обычных игроков был не хуже. (Существует поверье, что аудитория относится к планшетам и другим мобильным устройствам как к платформе для небольших развлекательных игр, относясь к анонсам серьезных игр чуть ли не как к оскорблению. Игроки (например, на Кикстартере) все еще не верят, что ААА-тайтл может посетить планшеты. — прим. переводчика)
Сооснователь Beamdog и разработчик-ветеран Кэмерон Тофер сходил с ума по версии для планшета с самого начала. Версия для iPad была запущена и наполовину работала еще за год до ее выпуска. Каждый новый билд привносил радикальные перемены — по мере того, как мы познавали способ связи логических действий в Baldur's Gate, используя принципы тачевого управления.
В конце концов, подход Кэмерона свелся к выделению самых частых действий в игре и упрощению управления ими. В BG самое популярное действие — это скролл экрана, поэтому мы использовали для него принятый в приложении Фото драг. Следующим по популярности идет перемещение/взаимодействие, которое мы привязали к простому тапу. Сначала мы попробовали сделать выбор группы, но после нескольких попыток мало-мальски удобно реализовать эту функцию пришли к выводу, что большая часть действий в BG выполняется с одним персонажей или сразу всей группой, поэтому в конце концов убрали ее на отдельную кнопку. Если вы пробовали планшетную версию BG: EE, то вам должно было понравиться управление — оно обладает определенным логическим единством.
Примерно в это же время мы добавили то улучшение, которое назвали «умным радиусом». Умный радиус позволяет получить точность управления мышью на менее аккуратном управлении пальцами, делая проще вход в здания, поднятие с земли предметов и все в том же духе.
Мы продолжаем думать на тему того, как сделать управление еще лучше — этот процесс происходит итерациями. С точки зрения общего дизайна UI, нам хотелось сберечь оригинальные ощущения от игры, но приспособить ее к новому разрешению 1024x768. Моим приоритетом в UI было создание максимально больших портретов пользователя. Мы выписали все элементы UI и не спеша переделали весь арт и все панели вокруг новых размеров портретов, попытавшись при этом последовать требованиям к UI от Apple — например, стараясь сделать кнопки больше 44 пикселей в высоту (не удалось нам это только в немногих местах — например, на экране выбора класса). Этот процесс напоминал соревнование — поскольку нам приходилось работать с кодом UI, при этом стараясь не трогать остальной сложный код приложения — а это был чертовски тесно интегрированный с системой UI код — черт бы тебя побрал, Скотт Крейг!
4. Бета тестирование
Бета тест игры шел около шести месяцев. Все это время мы получали просто невероятный поток обратной связи — мы находили и исправляли баги в быстром темпе, да и опытные авторы модов иногда предлагали свои решения, чтобы сберечь наше время.
Как мы считаем, бета была ключевым элементов успеха проекта. Обратная связь по поводу нашего контента была замечательной, благодаря ей мы нашли много странных моментов, когда квесты ломались самым непредсказуемым путем. Из-за сложности Baldur's Gate нам требовалось проводить очень много тестирования: сначала тестеры искали возможные пути того, как квест можно «сломать», затем мы быстро фиксили проблему и снова отдавали игру им на растерзание.
Поскольку мы придерживались структуры игровых архивов и форматов ассетов, использованных в оригинале, мы смогли привлечь к проекту еще и коммьюнити разработчиков, а не только нашу команду. Как уже упоминалось выше, бета-тестеры были набраны с наших форумов — мы выбирали тех, у кого было много опыта в общении с оригинальной игрой, поэтому вся обратная связь была быстрой и строго по делу. Бета-тестеры имели доступ к нашему баг-трекеру, и поэтому мы сразу видели все поступившие новые баги.
Кроме того, мы наняли стороннюю компанию тестировщиков iBeta, и она помогла нам с завершением работ над версией для iPad — в том числе, удостоверилась в том, что все специфические места покрыты тестами. Они провели для нас что-то вроде «пре-сертификации» и помогли узнать о различиях в «железной» начинке разных поколений iPad.
5. Наш собственный сервис цифровой дистрибьюции
Компания Beamdog состоит из двух частей; сервиса онлайновой дистрибьюции и нашей команды игровой разработки, которую мы называем Overhaul Games. Мы разработали Beamdog Store с целью прямой продажи наших игр пользователям — без посредников, проблем с поддержкой и прочим — чтобы все происходило только между разработчиком и покупателем. Прямые продажи и предзаказы позволили нам заработать первые деньги за месяцы до того, как мы получили бы их по роялти — для маленького самофинансированного разработчика это было отлично. Конечно, были небольшие «косяки» с ПО пользователей и устаревшими SSL-сертификатами на их компьютерах, но система все равно сработала прекрасно.
К моменту запуска игры мы смогли запустить серверы в Германии, Сингапуре и на Западном и Восточном побережьях США, и передать сотни терабайт своим пользователям. Мы используем свой внутренний сервис для распространения всех билдов игры — без него мы не смогли бы так гибко делать патчи, эффективно следить за контролем версий или быстро распространять игру — ведь мы используем этот сервис даже для распространения рабочих версий игры для OSX, iPad и Android. Мы планируем расширять его функционал в дальнейшем.
Что пошло не так
1. Эпичная сложность кода
Работа над проектом заняла джва года. Сначала мы планировали «пробраться внутрь как ниндзя, немного поправить тут и там, заменить всю графику и сматываться». Когда же мы начали работать с кодом игры, то сразу всплыло несколько проблем с производительностью и стабильностью движка. Часть проблем мы решили отследить… и все дорожки в конечном итоге привели нас к модели потоков, реализованной в движке Infinity.
Дело в том, что Infinity был многопоточным еще тогда, когда не существовало процессоров с параллельным выполнением кода. Как результат, движок был спроектирован вокруг такой модели потоков, которой на самом деле не существует. Главная проблема его была в том, что все потоки разделяли один и тот же набор данных; все эти потоки создавались, получали доступ к одной и той же памяти и в итоге блокировали друг друга — все потоки останавливались до той поры, пока не будет выполнен текущий.
Код также был испещрен использованием критических секций, которые в отдельных случаях тратили до 70% рабочего времени на простаивание. Нашим долгосрочным решением было разрубить их словно при помощи мачете и убрать потоки — вырезав таким образом пару сотен тысяч строк кода из игры. Полученный результат был более стабилен и реже вызывал падения производительности. Подход в стиле ниндзя был опробован нами и в других местах, и каждый раз заканчивался одним и тем же — мы всегда упирались в очень сложные проблемы, которые сущестовали в 90-ые и не существовали сегодня. Мы все еще продолжаем находить в коде подобные места и убираем их по мере работы над патчами.
2. Сложные зависимости данных и кода
У меня есть своя шутка про разработчиков, которую я люблю часто повторять. Звучит она так: «Худшие из злодеяний совершаются тогда, когда программист уверен в том, что он умный». В Infinity Engine полно подобных «умудренных» выходок. Например: рендеринг персонажа на экране начинается с того, что при помощи дико громоздкой системы управления ресурсами происходит загрузка из файла ресурсов правильного фрейма и направления спрайта персонажа. Затем со спрайтом производится преобразование цвета с использованием 256-цветной замены цветов («palette swap»). После этого преобразования со спрайтом может происходить любое число дальнейших манипуляций с палитрой (это требуется, например, для камней). Затем спрайт рендерится с учетом потенциально перекрывающих его элементов поблизости.
Финальный результат отправляется на экран в тайлах 64x64 для рендеринга. Вся система работает под руководством динамического управления, которое помечает тайлы 64x64 как обновленные и рисует их или — если нет изменений — рисует сохраненный в буфере тайл. Количество хитроумных сдвигов и ухищрений, производимых над простым спрайтом, отследить становится практически невозможно. В некоторых случаях, для манипуляций может потребовать обращение к .2da-файлам, которые отвечают за что угодно — от анимации смены оружия до смены спрайта с обычного человека на дварфа. Понятное дело, что код RPG такого масштаба не мог оказаться простым — но, тем не менее, подобные нюансы существенно ограничили нас в своем творческом полете, не позволив сделать необходимые архитектурные изменения.
3. Потерянные исходники арта
Первоначально сделка была заключена в расчете на то, что мы сделаем Baldur's Gate: HD. Наш план был прост: берем оригинальный артворк, чистим его, перерендериваем в больших разрешениях и с лучшими материалами — и таким образом получаем потрясающие версии до боли знакомых каждому локаций. Еще мы планировали взять модели персонажей и тоже их перерендерить — добавить еще фреймов ко всем анимациям, новые направления движения, — в общем, сделать игру более «плавной». Мы долго обсуждали все это между собой, уже приготовились к началу работ и тут мы получили первую посылку с ассетами от BioWare.
Несколько дней спустя мы заметили огромную дыру в том месте, где должны были быть исходники артворка — не хватало моделей 3DS Max и текстур. «Не проблема», сказал я и связался с Дереком Френчем из BioWare, который покопался в закромах и прислал нам еще данных. Мы принялись их изучать — и снова не нашли исходников арта. Я договорился с Дереком и IT-отделом BioWare о визите к ним — и, захватив с собой съемный жесткий диск, отправился на поиски потерянных ассетов.
После двух дней непрерывных поисков мы пришли к ужасному открытию — оказалось, что все исходники арта к игре хранились на обычном сетевом диске, а не на диске проекта, и бекапы с него делались совсем уж нечасто. Мы пересмотрели все бекапы, но наши усилия были напрасны. Исходный арт был безвозвратно утерян.
Настало время сообщить о своей находке Atari — и мы понимали, что теперь у проекта нет ни единого шанса. Кэмерон и я провели несколько недель, изобретая концепт переиздания заново. Мы предложили Atari делать не «HD»-версию, а «Расширенное издание». Мы обсудили возможные последствия выпуска проекта со старой графикой, и значительно срезали роялти — и все ради того, чтобы вернуться к проекту. Проще говоря, мы целиком выкинули наши старые планы и начали все с нуля — и это после целого года переговоров, которые тоже прошли впустую.
Что в результате? Ну, графической «красоты» стало поменьше, чем мы изначально планировали, но все это обернулось неожиданным бонусом — у нас было больше времени на изменение остального содержимого игры. Что из этого стоит усвоить? Никогда не паникуйте и всегда держите при себе полотенце — ведь никогда не знаешь, где притаился очередной сюрприз… так что полотенце всегда пригодится.
4. Поддержка OpenGL на интегрированных видеокартах Intel
Когда мы приступили к разработке BG: EE, мы четко решили использовать спецификацию OpenGL 2.0 от 2004 года — для того, чтобы совместимость функциональности на всех устройствах была одинаковой. Мы быстро прогнали тесты на PC, Mac, iPad, Android — словно галочки напротив названий из списка покупок в магазине. Raspberry Pi… Raspberry-мать его-Pi с поддержкой OpenGL 2.0! Вот, еще одна галочка.
Мы расширили группу бета-тестеров и (возможно, все дело в том, что все участники теста по натуре были еще те энтузиасты) мы считали, что у нас практически нет проблем с производительностью. Сейчас мне кажется, что все дело было в том, что мы имели дело с геймерами, по натуре предпочитающих дорогие видеокарты, в которых с поддержкой OpenGL старых спецификаций, понятное дело, все и так хорошо. Ближе к дате релиза мы увидели первые отчеты о том, что на встроенных карточках Intel все далеко не так хорошо — особенно на старых ноутбуках. Мы сунулись было выяснить, в чем дело, и тут нас ждало еще одно «приятное» открытие — оказывается, многие из производителей ноутубуков не обновляли драйвера для них годами.
В это время мы как раз выпустили игру на PC. И тут же начали получать все больше отчетов о низкой производительности и проблемах с графикой. Конечно, нам удалось найти несколько способов решить проблемы — например, принудительно заставлять обновляться драйвера карточек Intel до последней версии (производители, на минуточку, очень часто даже их не пытались подписывать). Наше дальнейшее исследование привело к ужасному выводу — большинство старых карточек Intel не имели полной поддержки OpenGL 2.0. Да что там — они и OpenGL 1.0 часто не могли поддерживать как надо.
Мы, разработчики, попали в засаду. Мы потратили весь бюджет, отведенный на разработку (да и еще сверху добавили), а теперь у нас есть разозленные пользователи, которые не могут поиграть в игру, за которую заплатили свои деньги — и все из-за проблем с драйверами. В конце концов мы смогли придумать решение для этой проблемы и в дальнейшем собираемся потратить немалое количество времени и денег на полное переписывание системы рендеринга в BG:EE для компенсации того функционала, которого не хватает в проблемных драйверах.
Погорив с парнями из Intel, мы узнали, где же мы свернули с правильного пути на кривую дорожку — и у нас есть новый план, как исправить допущенные ошибки. Однако, объем кода, который нам потребуется переписать, очень велик — поэтому мы очень надеемся, что поклонники проявят терпеливость и дождутся того момента, когда мы решим все проблемы.
Какой урок из всего этого? Даже если у вас множество тестеров, это все равно не значит, что вы смогли хорошо покрыть все доступное железо. Возможно, ваш проект хорошо работает на новейшем оборудовании энтузиастов — но это далеко не все оборудование. То, что поначалу показалось нам проблемой с очень старым железом, на поверку оказалось гораздо большей неприятностью. И да, представьте себе, спецификация из 2004 года и «стандарт индустрии» еще не означают, что у вас не возникнет проблем с драйверами.
Нам нужно было все протестировать на всем доступном железе раньше. Разнообразие на PC платформе — хорошая штука, поскольку позволяет производителям железа создавать свои собственные продукты и соревноваться друг с другом — и это положительно влияет на цены, снижая их. Но какой же это кошмар для разработчика — ведь всегда есть шанс очередного сюрприза, когда на определенной конфигурации все начнет страшно тормозить. Я занимаюсь разработкой для PC с 1994 года (да, я такой старый), и на каждом проекте сталкивался хотя бы с одной проблемой из-за железа. Поэтому новые поколения PC приносят мне не больше радости, чем заползшая в постель кобра.
5. iOS 6
Немного позже мы начали тестировать игру на бете выходящей вскоре iOS 6. Мы никак не могли понять, что же такого Apple изменила в механизме работы с графикой на iOS (iOS Core Graphics), но в результате у нас очень сильно просел FPS на всех iPad с первого по третье поколение — на этих планшетах стало просто невозможно играть. По доброй традиции, этот сюрприз обнаружился тогда, когда до официальной даты выхода игры оставалось уже меньше месяца.
Что нам оставалось делать? Мы быстро перекинули основную часть наших усилий с других частей проекта на проблемы производительности. Пришлось резать по живому — ведь выбор был между качеством картинки и увеличением частоты кадров. Чем это все кончилось? Наши основные разработчики потеряли кучу времени на незапланированную задачу, и как результат — большая часть времени, которую мы отвели под баг-фиксинг, ушла на борьбу с производительностью, и в результате пострадало качество продукта — пользователи столкнулись с целой россыпью новых багов. Урок был выучен — теперь мы понимаем, что сроки надо всегда немного увеличивать в расчете на незапланированные изменения и проблемы. К тому же, еще немного времени должно быть выделено на тестирование проекта на текущей и бета-версиях iOS.
Заключение
В конечном итоге, получившийся у нас BG: EE — это нестареющее качество оригинального BG, к которому приложила свою руку маленькая команда небезразличных поклонников. Мы могли бы завершить разработку быстрее и, возможно, собрать меньший букет багов, если бы решились произвести в игре серьезные изменения — но мы изначально планировали взять на себя роль «хранителя традиций». Мы не собирались прикасаться к Baldur's Gate для того, чтобы показать себя или оставить свой след в мире игровой разработки — нет, мы хотели сделать великую игру еще лучше и принести ее на новые платформы. Успех игры у критиков и публики — в том числе, и коммерческий — намекает на то, что мы не собираемся на этом останавливаться и уже твердо решили, что хотим увидеть Baldur's Gate 2: Enhanced Edition.
От переводчика
С момента написания пост-мортема успело пройти несколько месяцев, и сегодня дела у Beamdog обстоят, увы, не слишком хорошо.
Во второй половине июня Beamdog была вынуждена изъять BG:EE из продажи со своего сайта и из мобильного App Store. Тогда студия объяснила этот факт конфликтом с издательством Atari. Студии пришлось прекратить разработку патча к Baldur's Gate, а также версии игры для Android и Baldur's Gate II Enhanced Edition. Судьба Baldur's Gate III, которую планировала создать студия, стала неопределенной. Остер тогда заметил, что разработчики «деморализованы», однако надеются на лучшее.
Автор: HotWaterMusic