Как организовать разработку: рассказывают авторы Gothic 1 Classic, Hail to the Rainbow и других игр
Нарративный дизайнер, директор по развитию, соло-разработчик, программист графики и создатели карт для Counter-Strike — о том, как организовать работу, всё успеть и не выгореть.
Иллюстрация: Катя Павловская для Skillbox Media
Рабочий процесс в крупных студиях обычно жёстко структурирован. Одним из методов такого структурирования выступает философия пайплайна — мысленный аналог работы заводского конвейера с чётко обозначенными зонами ответственности и делением на простые операции. Всё для того, чтобы разработка грядущего большого хита стала более предсказуемой и эффективной, а риски, затраты и внутренний хаос сошли к минимуму.
Пайплайны востребованы в игровой индустрии, а «железный» пайплайн-документ, в котором на несколько лет вперёд расписаны задачи для каждого участника команды, — своеобразный островок контроля в неспокойном море разработки. С его помощью можно оценить производственный бюджет, распределить ресурсы и рассчитать сроки, определив примерную дату выхода. Но у подобного метода с жёстким контролем есть альтернатива — инди-разработчики с их хаотичным подходом.
Некоторые называют менее организованный рабочий процесс более творческим, потому что в нём больше пространства для полёта фантазии и нестандартных решений. С другой стороны, такой подход может привести к банальной потере времени. Яркий пример — Эрик Барон, разработчик Stardew Valley. В книге «Кровь, пот и пиксели» Джейсон Шрайер пишет, как из-за недостатка организованности и внутренних противоречий геймдизайнер вместо работы над игрой мог целый день листать всевозможные ленты в соцсетях, растягивая сроки разработки.
Какой бы путь вы ни выбрали, стоит помнить, что у вас сформируется уникальный взгляд на рабочий процесс, ведь на одни и те же вещи каждый смотрит по-разному. Например, легендарный программист Джон Кармак, соавтор Doom и Quake, считает что нужно работать как можно больше, чтобы как можно больше успеть.
Есть и другой взгляд. Мартин Бьяуго и Джордан Милн, авторы неоднозначной книги «Меньше, но лучше. Работать надо не 12 часов, а головой», советуют больше отдыхать и меньше думать непосредственно о работе, потому что мозг и так о ней думает «в фоновом режиме». В понимании авторов, чем меньше уровень стресса и чем больше новых нейронных связей формируется — тем изобретательнее будут ваши решения.
Мы пообщались с нарративным дизайнером, с директором по развитию, с соло-разработчиком, с программистом графики и с создателями карт для Counter-Strike: Global Offensive и Counter-Strike 2 — спросили у них, как они выстраивают свой рабочий процесс, распределяют внутренние ресурсы и решают производственные задачи. По уже сложившейся традиции ответы получились разные, и в этом их главная ценность. Каждое эссе здесь — в первую очередь личный опыт и неочевидные знания, которыми разработчики хотят поделиться.
Раис Туйкин
Игровой сценарист, нарративный дизайнер (Life is Feudal, Night is Coming, Spark in the Dark)
Геймдев — это выживач
Управление нарративным отделом и организация его работы похожи на выживание в зомби-шутере. Да и не только руководство — работа даже начинающего игрового сценариста и нарративного дизайнера похожа на выживач. Патронов вечно не хватает, со здоровьем проблемы, на пути — орды проблем и препятствий, но ты всё тащишь и тащишь эту катку.
По дороге некоторые тиммейты погибают и исчезают с твоих радаров… далеко не все идут с тобой дальше. Проекты замораживаются или закрываются, отряды выживших распадаются, собираются в новые кучки и вновь движутся вперёд, чтобы выживать вместе, плечом к плечу. Здесь нет места нытью и слабости, выживают лишь сильнейшие.
Но когда ты понимаешь, зачем тебе всё это нужно и для чего ты это делаешь (не только ради денег, но и ради личных творческих целей, например для саморазвития как автора), тогда проходить уровни становится чуть проще. Ты падаешь, но находишь в себе силы подняться и снова идти вперёд.
Постепенно вокруг тебя собираются проверенные временем тиммейты. У тебя появляется опыт выживания, и ты уже знаешь гибельные места (компании), куда не стоит соваться, и с кем из встречных не стоит иметь дел. Заодно понимаешь, с кем ты можешь разделить все свои припасы и кому можешь доверить своё ближайшее будущее, пока несколько лет работаешь на очередном проекте.
В одиночку ты тут точно не выживешь. Либо ты ищешь, к какой фракции (студии) примкнуть и влиться в ряды боевых товарищей, стойко разделяя с ними все трудности и испытания, выполняя свою роль на проекте и самоотверженно трудясь на благо компании (и на своё благо тоже).
Либо же сам создаёшь собственную фракцию и ищешь тех, кто примкнёт к тебе по пути. Как лидер — принимаешь все риски не только за себя, но и за тех выживших, кто в тебя поверил и пошёл за тобой. В таком случае цена твоих ошибок будет намного выше, но и успех, а также все прочие ресурсы тоже будут твоими.
Мой опыт выживания
Поделюсь своим опытом брутального выживания. Попасть в геймдев в 2015-м было сложно (но всё-таки чуть проще, чем сейчас). Новичка без опыта никуда не брали, пушку нормальную не выдавали, опыта обращения с нарративным оружием и скиллов выживания у меня не было, да и как справляться с зомби-проблемами, я ещё не знал.
Одно время я стучался в двери 60 фракций-студий подряд, и зачастую мне вообще никто не отвечал. Поначалу работал бесплатно ради портфолио и прокачки навыков на маленьких либо некоммерческих инди-проектах. Запоем изучал все гайды от «Нарраторики» по выживанию и получению базовых скиллов, вникал в киносценаристику и писательство, поглощал всё, что только мог найти в открытом доступе. Сделал свой кастомный сайт и резюме с различными обвесами и модификациями для прицельной стрельбы по вакансиям. Совершал рейды в дальние геймдев-конференции и митапы в поисках более опытных выживших, которые могли бы поделиться со мной знаниями. Пришлось даже сменить локацию и переехать на полтора года в Москву, поскольку в Казани, откуда я родом, нужных мне редких игровых ресурсов в то время вообще не было.
В итоге после кучи усилий и бесплодных поисков удача мне всё-таки улыбнулась. Я попал на свой первый коммерческий проект, да не просто куда-то, а сразу на крупный и известный в то время — мрачную, брутальную средневековую ММО Life is Feudal. Слава об этой фракции уже гремела на Западе, игру вовсю ждали фанаты. Я дико радовался и вкладывал всего себя в работу — ура, геймдев меня принял!
Первые пять лет после попадания в индустрию я был просто исполнителем: писал внутриигровые тексты и диалоги, прорабатывал лор, развивал персонажей и работал над сценариями по чужим идеям. За это время было множество проектов в разных жанрах — от данжен-кроулеров и квестов до VR-хоррор-шутеров.
Затем мне предложили стать лидом в новой, зарождающейся студии. Сначала я не хотел менеджерить, но в итоге пришлось, поскольку у лида и зарплата выше, и влияние на проект значительно больше. С тех пор уже четыре года я руковожу работой по нарративу на разных проектах и в разных студиях. И ничего, постепенно привык, несмотря на кучу новых вопросов, которых нет у простого исполнителя, но есть у лида.
Чем занимается нарративный лид
Если джун/мидл/сеньор думает лишь о том, как бы хорошо и вовремя выполнить свои сценарные задачи, то у лида область ответственности намного шире. Ты думаешь не только о собственных творческих задачах (а они есть, и без них мне было бы неинтересно, всё-таки я пришёл в эту сферу ради любви к искусству), но и о задачах твоих бойцов. Помимо творчества, большую часть времени занимает управление.
Ты превращаешь глобальные планы студии в планы твоего нарративного отдела в виде ежемесячных пайплайнов, следишь за ходом выполняемых задач, даёшь фидбэк на сделанное твоими джунами, помогаешь им с возникшими нарративными вопросами и творческими кризисами, решаешь возникающие вопросы по продакшену между отделами студии, доводишь до своего отдела новшества со стороны программистов, художников и продюсера.
Помимо этого, ты ещё и выполняешь функции «сам-себе-HR»: ищешь и нанимаешь новых выживших себе в команду, договариваешься, кто и когда из твоих бойцов идёт в отпуск или берёт больничный, следишь за их выгоранием, иногда проводишь корпоративы отдела, стараешься поднять дух отряда и наладить общение между выжившими.
У каждого из ребят свой характер, продуктивность, сильные и слабые стороны, творческие предпочтения и личные желания. Всё это ты собираешь в единый организм, работающий с горем пополам, ради общего дела — выживания вашей игры.
Чем занимается отдел нарратива
Сильно зависит от проекта. Многие задачи между проектами совпадают, но бывают и специфические отличия. Например, сейчас я лид в студии, которая пилит визуальные новеллы. Для каждой новеллы, за которой закреплён свой автор, мы:
- набрасываем и выбираем из нескольких вариантов наиболее перспективную концепцию истории;
- продумываем игровой лор;
- разрабатываем общий сюжет и основные сюжетные линии;
- пишем поэпизодный план по сценам (и опираемся на него);
- придумываем персонажей и их отношения между собой;
- готовим техзадания для художников на отрисовку локаций, персонажей, кат-сцен и предметов на основе референсов;
- пишем сцены и диалоги в визуальном редакторе Articy Draft;
- там же определяем и закладываем геймплейно-нарративные переменные, которые в зависимости от выборов игрока будут влиять на ветвистый сюжет;
- заполняем и ведём технические таблицы со списками всех ассетов новеллы;
- подбираем и вставляем в нужных местах в Articy музыку и звуки для создания подходящей атмосферы;
- переводим все тексты новеллы на английский и другие языки;
- участвуем в тестировании билдов.
И всё это, конечно же, правим много-много раз. Без этого никак.
Такие процессы важно эффективно организовать. Сверху на тебя давят продюсер и менеджер проектов — требуют успевать по срокам и объёмам (сроки в геймдеве всегда очень сжатые, а объёмы — огромные).
Лайфхаки по выживанию
Идеально всё это организовать попросту невозможно, но суть в том, что это и не нужно. Здесь главный принцип: лучшее — враг хорошего! Лучше сделать всё вовремя, пусть даже не в крутом качестве, чем не успеть в дедлайн.
Ещё один лайфхак «как всё успеть» — делегировать. Поначалу кажется, что лучше я сам сделаю всё, как надо, чем буду передавать часть работы неопытным джунам. Да, руки постоянно чешутся сделать именно так, но… так ты точно ничего не успеешь и погибнешь, да ещё и подставишь свой отряд выживших, не добравшись до безопасного места. Делегируй или умри.
Обучая своих джунов, ты немного разгружаешь себя, и у тебя появляется шанс успеть сделать те задачи, которые они не могут сделать в силу неопытности. И те задачи, где нужно твоё присутствие в качестве командира. Например, дать фидбэк по сюжету или диалогам. Делегируй!
Другой лайфхак, помогающий выжить, — снабжай своих бойцов задачами заранее, чтобы у них было чем заняться в ожидании орд зомби и чтобы они не сидели без дела. Иначе это будет потеря времени и ресурсов, которые ты мог пустить на укрепление вашего нарративного форпоста. Именно здесь тебе пригодится такое дальнобойное оружие, как пайплайн. Выстраивая пайплайны, ты как лидер показываешь всему отряду, куда вы идёте и какова ваша ближайшая цель (на месяц, на квартал, на год и на промежуточные майлстоуны проекта).
Конечно, нужно помнить, что пайплайны часто летят ко всем чертям и плох тот командир, который неукоснительно следует пайплайну, ведь в ходе разработки игры бывает всякое и нужно уметь адаптироваться под новые условия. Допустим, случилось у вас внезапное нашествие тестирования билда — срочно нужно всё бросить и протестировать готовую главу. Ок, надо, так надо, всем отрядом тестируем. Или же, например, твоего бойца покусали и он превратился в зомби, медленно пишет, плохо работает, выгорел — срочно меняй пайплайн, переключи укушенного на другие задачи, ведь у всех бывают периоды спадов и подъёмов, но они не длятся вечно. Пайплайны — не догма!
Не стоит недооценивать и важность дозорных: поставь на пулемётной вышке одного самого опытного и толкового джуна, проверенного в боях, чтобы он мог вовремя заметить атакующий вал проблем и доложить об этом. Например, этот дозорный может напомнить, что ты забыл вовремя заказать отрисовку ассетов у арт-отдела или же что ты обещал проверить очередную написанную главу, но так и не проверил из-за завала по другим задачам. Более того, ты можешь такого бойца сделать заместителем на время твоего отпуска или же поставить его на самый опасный участок стены вашей базы. Выстраивай структуру внутри отдела!
Есть ещё один лайфхак, который ты должен уметь использовать, как толковый командир: знай сильные и слабые стороны твоих выживших. У каждого своя роль в отряде. Ты можешь перекрывать слабую сторону одного джуна сильной стороной другого, бросая того на амбразуру.
Например, один из них хорошо генерирует названия для внутриигровых нарядов и предметов — почему бы не подключить его к мозговому штурму? Или же другой джун хорошо справляется с технической частью в Articy, быстро и правильно расставляет переменные, безошибочно выстраивает ветвистую структуру сцен и диалогов, аккуратно закидывает диалоги из «Google Документов» в ноды — отлично, можно дать его другому бойцу в помощь в качестве поддержки. А третий довольно тщательно и качественно переводит тексты на английский с помощью ChatGPT — ок, пусть чаще помогает в этом деле. Вы — команда, а хорошая командная игра в нашем деле рулит!
Итог
Наверняка есть ещё всякие полезные лайфхаки по организации нарративной тактики и стратегии против зомби, которые я не упомянул, но… многие из них можно познать только на практике, непосредственно в боевых условиях. А потому, ребята, заряжайте свои дробовики и пулемёты, начищайте катаны, доставайте последние обоймы — и вперёд, пушки к бою!
Покажем этим зомбакам из Диких Джунглей Кранча или Великих Пустошей Выгорания, из чего сделаны настоящие воины нарратива!
Сергей Носков
Автор игр 35MM, The Light, 7th Sector, Hail to the Rainbow
Так уж повелось, в моей геймдев-практике вся работа зачастую строилась хаотично. Первые свои инди-проекты я разрабатывал без чёткого плана и дизайн-документа, а многие идеи выстраивались и реализовывались по ходу работы, оказывались плодом своеобразного творческого беспорядка. Создание локации могло начаться не с общего построения, а с конкретных областей или даже с частных пропсов. Фокус рабочего процесса мог регулярно переключаться с одних задач на другие.
Такой подход, безусловно, нельзя назвать верным, но в нём именно для творческого человека есть много плюсов. Ты как автор в процессе проживаешь всю историю изнутри и никогда не знаешь, что будет дальше, поскольку события выстраиваются постепенно. Также подобный хаос, как мне кажется, позволяет чуть меньше уставать от рутинного однообразия.
Со временем, приобретая опыт и повышая собственные требования к продукту, ты меняешь своё отношение. Начиная работу над своим последним проектом — Hail to the Rainbow, я понял, что в столь крупной и сложной работе требуется более обстоятельный подход с более чётким планированием.
Для этого нужно было вливаться в процесс постепенно, начиная с текстовых описаний, набросков и построения схематичных уровней — блокинга. На первый взгляд казалось, что подобные элементы отнимают много времени и не столь необходимы, но на практике такой подход помогает, наоборот, сэкономить время и избежать ошибок в дальнейшем.
Для Hail to the Rainbow я сделал большое количество предварительных набросков и записей, описаний сюжета и элементов вселенной. Где-то в столе лежит целая стопка исписанной бумаги: я по возможности стараюсь сокращать время за монитором и делаю записи в тетрадях. Безусловно, конечный результат зачастую сильно расходится с первоначальными задумками, что-то приходится выбрасывать или менять, но набросать предварительный план и создать ориентир очень полезно, а иногда — просто необходимо.
Стоит отметить, что по мере разрастания проекта приходится записывать практически все мысли и корректировки. То ли возраст, то ли сама по себе сложность и объём задач создают проблему в вопросе удержания информации в голове, мысли быстро сменяют друг друга и становится трудно сохранять и фиксировать их в памяти.
Непосредственно разработка Hail to the Rainbow началась с построения структуры игры и создания шаблона меню с черновым оформлением. Я решил сразу продумать логику загрузки уровней, сохранения параметров, загрузки префаба персонажа и так далее. После этого в схематичном виде собрал несколько уровней, а также полигон, на котором можно было отрабатывать механики и работу интерактивных элементов, неигровых персонажей, предметов и прочего.
При построении локаций я решил идти от общего к частному. Уровни предварительно собирал из кубов и простых террейнов. По ходу работы вносил множество изменений. Для оценки габаритов используется специальный префаб-шаблон — есть шаблоны для дверных проёмов, автомобилей и других пропсов, чтобы пространство вокруг персонажа всегда имело адекватные масштабы.
Уже после схематичного построения я приступил к созданию ключевого контента. Моделятся основные предметы, здания и элементы, с которыми будет взаимодействие и с которыми непосредственно связан геймплей. Как правило, основной 3D-контент я создаю самостоятельно в 3ds Max и Substance 3D Painter. Менее важные объекты и наполнение порой заказываю на аутсорсе или покупаю в сторах. Второстепенные и чисто декоративные элементы я зачастую откладываю на потом, до финальной полировки. Работа со звуком также планируется на более поздние этапы, и долгое время проект остаётся немым.
Наряду с плановыми работами я регулярно стараюсь проверять уже созданный контент, сцены и функции на предмет производительности. Контролировать нагрузку и плавность работы игры, на мой взгляд, лучше на начальных этапах, чтобы не пришлось разгребать ошибки ближе к финалу.
Также параллельно с выполнением основных заданий я периодически переключаюсь на экспериментальную работу с графикой, шейдерами и постобработкой. Это своего рода медитация, позволяющая перевести дух после рутинных задач. Мне как художнику эксперименты с шейдерами освещения, теней, тумана и прочими визуальными эффектами особенно доставляют.
Вообще, несмотря на то, что в данном проекте я стремлюсь к большей систематизации, некий творческий хаос всё равно сохраняется. Задачи постоянно чередуются, работа с кодом сменяется работой над картинкой или проработкой текстов вдали от монитора. Для соло-разработчика такой хаос и чередование необходимы, чтобы однообразие задач постепенно не свело с ума и не ввело в депрессивные состояния.
Вопрос морального и психологического состояния при длительной работе над проектом — отдельная тема, тут о многом можно рассказать. Hail to the Rainbow разрабатывается уже пятый год, и за это время было пережито множество состояний и эмоций, моральных подъёмов и падений. Бывают периоды мощной негативной экспрессии, когда хочется всё бросить, но ты понимаешь, что труда вложено уже слишком много, чтобы дело останавливать. Бывают и этапы воодушевления, когда видишь приятные глазу результаты работы.
Воодушевление порой имеет и негативный эффект, когда включается повышенный энтузиазм и становится сложно контролировать режим труда и отдыха. Этот момент важнее, чем может показаться на первый взгляд. Поначалу переработки отрицательно никак не сказываются, муза подгоняет и работа спорится. Но со временем усталость накапливается, и рано или поздно можно ощутить выгорание, что может вести за собой крайне неприятные последствия. Поэтому всегда нужно включать в свой график передышки и время на восстановление.
Сергей Морозов
Дизайнер уровней, автор карты Swamp для Counter-Strike: Global Offensive
Я прикоснулся к созданию карт для Counter-Strike ещё в 2005 году. Тогда у меня был диск с журналом про Half-Life, и на этом самом диске лежал SDK для создания уровней на движке GoldSrc. С тех пор Counter-Strike не раз менялась: движок поменяли с GoldSrc на Source, точечно эволюционировал геймплей, и также точечно менялся редактор уровней для игры.
Помню, как после анонса Half-Life: Alyx, я купил игру, зная, что к ней может выйти инструментарий. Я смогу немного пощупать новый Source 2, чтобы подготовиться к потенциальному переходу Counter-Strike на новый движок. На тот момент ещё не знал, когда точно случится переход. Важно было потрогать инструменты и попытаться нащупать процессы для себя. Насколько сильно изменится процесс создания карт, нужно ли будет заново учиться работать в движке.
Поначалу я плевался от инструментов, хотя друзьям говорил, какие они крутые. А плевался я про себя, только потому что нафантазировал себе гибрид Source и Unreal Engine. Начав работу, ты видишь тот же архаичный редактор, что был ранее, но с новыми кнопками и обновлённым интерфейсом, заточенным под работу в 3D-окне.
Для меня это был стресс, потому что я привык «вычерчивать» локации в проекциях, строго по сетке, опираясь на опыт работы с Source. С выходом инструментов для CS2, я переоткрыл для себя Source 2 и искренне полюбил этот редактор. Возможно, потому что выбора особо как бы и нет.
Глобальной разницы в организации процессов я не увидел. Интерфейс достаточно дружелюбный, и даже во время работы на ноутбуке с экраном в 16 дюймов дискомфорта я не заметил. Мне всё показалось вполне удобным. Очень понравилось наблюдать, как другие создатели карт из сообщества меняют интерфейс под себя. Заметил, что у каждого дизайнера своя раскладка окон и инструментов.
Но были и проблемы. На тот момент у меня был достаточно хороший и удобный ноутбук, которого хватало, чтобы работать над картами для CS: GO. По сути, для Source нужен был простой компьютер с хорошим и производительным процессором, поэтому раньше войти в мир создания карт можно было при относительно низких финансовых затратах. С переходом на Source 2 мне пришлось обновить железо. Теперь хорошая видеокарта просто необходима, и желательно, чтобы это был не мобильный вариант с ограниченным TDP.
В общих чертах рабочий пайплайн для меня не изменился. Как и раньше, я анализирую текущие проекты в мастерской, собираю референсы, делаю прототипы, формирую серый блокаут, затем белый, и, как итог, наполняю уровень контентом.
Через несколько дней работы над уровнем для CS2 я не мог работать на старой версии Source. Потому что она уже казалась дико неудобной. Мой десятилетний опыт в «классическом» редакторе стёрся из головы, разум принял новые правила работы.
Попытаюсь сравнить оба движка в деталях и рассказать, чем различается работа в них. На Source вы проектировали игровую локацию, но, чтобы довести её до уровня лучших карт в мастерской, вам неизбежно приходилось работать в сторонних 3D-программах. Вы мирились с ограничениями и условностями игрового движка и находили уникальные, порой крайне креативные решения. Вы тратили сотни часов на компиляцию проекта, чтобы ваша карта была такой, какой вы видели её в голове. При этом всегда был риск, что ты представил что-то невозможное.
На Source 2 же просто работать, к тому же движок наглядно показывает, что пределов для творчества нет. Я пробую создавать сложные штуки на тестовых сценах, и они достаточно просто воплощаются в жизнь. В качестве примера попробую показать разницу в удобстве между движками с точки зрения дизайнера уровней и совсем немного с точки зрения художника по окружению.
Как дизайнеру уровней мне в Source 2 нравится возросшая скорость построения блокаута. Моделирование напоминает работу в 3D-пакетах вроде Blender. К тому же ты можешь создавать более чистую и аккуратную геометрию уровня и более сложные конструкции локации нестандартными углами. Да и создавать дверные и оконные проёмы, арки стало значительно проще.
Раньше на этапе блокаута я просто делал прямоугольный проём, даже если планировал позже добавить туда арку. Чтобы в случае итерирования не жалко было удалять геометрию. Сейчас создать арку — это пара кликов. С более аккуратной работой над геометрией возрастает качество уровня для плейтеста. Значит, у тебя появится больше данных во время и после этого самого плейтеста.
Компиляция карты на раннем этапе такая же быстрая, как и раньше. Однако на продакшен-этапах скорость компиляции напрямую зависит от твоей системы, и лично у меня она оказалась прежней, относительно скорости компиляции в CS: GO. Но теперь не нужно перекомпилировать карту, только чтобы посмотреть, как падают тени и как выглядит локация. Новый редактор научился рендерить свет прямо внутри.
Ну и самая вкусная часть работы над уровнем досталась художникам. Раньше художник брал твою локацию, деконструировал её и определял, какой контент ему необходим. Затем он шёл в 3D-редактор (например, в тот же Blender) и моделировал ассеты. Причём неважно, будет это какая нибудь тавровая балка или диван сложной формы. Для всего было одно конкретное решение — сторонний редактор.
Теперь создавать базовые 3D-ассеты стало значительно проще, благодаря новым инструментам. Нет необходимости пользоваться сторонними программами, всё делается внутри.
Печатая это эссе, я поймал себя на мысли, что снова вернулся в 2006 год. Создавая карты для Counter-Strike: Source, я пытался создавать объёмные окна и решётки из брашей, потому что большинство локаций от Valve в первые годы жизни Source были построены именно так.
Как итог, переход игры на новый движок — это про простоту освоения, свободу творчества и самореализации. И совсем немножко — про привыкание.
Артём Доронин
Программист 3D-графики в студии Elverils, тимлид Gothic 1 Classic
Весьма интересно читать и узнавать о способах организации эффективной работы, да чтобы без выгорания! Но, к сожалению, всё зависит от специфики профессии, сферы компании, заказчика и начальства и других факторов.
Наша компания занимается улучшением и портированием игр на различные платформы. Как и в других индустриях, в геймдеве есть свои специфические проблемы и способы их решения. Сегодня я бы хотел поделиться своим опытом как тимлид в компании Elverils.
Как организовать работу и всё успеть
К основной причине срыва сроков работы стоит отнести плохое планирование.
По своему опыту могу сказать, что крайне много людей пренебрегает планированием либо выделяет на него мало времени и усилий. Не следует бросаться сразу выполнять задачу. Лучше выделить достаточно времени для обдумывания, разбить задачи на подзадачи, расставить приоритеты, предусмотреть и исследовать потенциальные проблемы. И это был бы хороший совет, если бы не несколько «но».
Примеры «но» при планировании:
- Заказчик. Неважно, кто это, начальник или ваш новый клиент. Все стремятся к оптимизации затрат и увеличению получаемой выгоды. В ходе выполнения поставленных задач могут возникнуть дополнительные, БЕЗ пересмотра временных затрат. Важно оставаться бдительным, чтобы вовремя их отметить и адекватно оценить трудозатраты.
- Подводные камни конкретного проекта. Есть очень много задач, в которых почти невозможно разглядеть подводные камни и учесть их в плане.
- Коллеги, сотрудники, звёзды. Люди часто болеют, ленятся, имитируют работу или выгорают. Если работа зависит от других людей, то это тоже вносит свою долю неопределённости в планирование. Также всегда есть случайные факторы, типа дождя или больной кошки.
Что с этим делать?
Все эти «но» являются одними из главных проблем плохого планирования. Оно приводит к плохой организации работы, что, в свою очередь, ведёт к просроченным срокам.
Ниже — варианты решений этих «но».
Заказчик. Именно он — самая большая проблема в вашей работе и расчёте плана. Важно донести до заказчика, что качество его продукта будет выше при разумных сроках. Что дополнительно стоит выделить временную подушку на форс-мажоры и так же разумно будет оценить и сам продукт. Насколько процесс его создания очевиден и так далее.
Нужно смотреть на работу адекватно и не браться за заведомо нереализуемые идеи заказчика. На этом этапе крайне важно планирование и правильная оценка ресурсов.
Лучше быть в хороших отношениях с заказчиком и общаться с ним. Чтобы тот всегда был в курсе происходящего и знал, почему произошли те или иные задержки в проекте. Обратная связь от него тоже крайне важна, она необходима не только для понимания, куда идти дальше, но и для того, чтобы видеть настроение заказчика. Также следует всегда отмечать проблемные части заранее, совместно искать пути решения тех или иных проблем, не стоит тянуть.
Но это работает не со всеми. Некоторые заказчики просто хотят получить результат, без какой-либо мороки. Именно здесь важно иметь задокументированный план работ и красноречивость, чтобы мягко и настойчиво донести: «Мы это не обсуждали, не-хочу-не-буду, точка». Но всё равно будут форс-мажоры, и придётся сделать работу, которую изначально не обсуждали. Именно для таких случаев необходимо закладывать дополнительное время.
Подводные камни конкретного проекта. Однако если есть способы минимизировать проблемы с заказчиком, то с подводными камнями всё более непредсказуемо. Стоит советоваться с более опытными (и не только) коллегами, учитывать кейсы из собственного опыта. На будущее пригодятся чек-листы, по которым можно прогнать проект на предмет уже известных проблем.
Невозможно учесть все проблемы проектов заранее, и это нормально. Но всегда есть смысл заранее учесть и обговорить риски. Также важно обговорить всё это ещё раз заранее с заказчиком или начальником. В разработке есть сложно прогнозируемые продукты, к таким относятся и игры. И тут остаётся только закладывать в дорожную карту проекта дополнительное время и молиться.
Коллеги, сотрудники, звёзды. К сожалению, если предыдущие пункты подходят для большинства сфер и профессий, то этот уже зависит конкретно от вас. Сколько у вас коллег, которые могут вас подстраховать? Успешно ли они смогут вас заменить? Хорошо ли вы делегируете задачи? Как повлияет на результат пропажа нескольких коллег?
Что уж говорить о факторах, которые невозможно предугадать. У каждого человека свои условия и риски. Это всё необходимо учитывать и заранее планировать замену. Затыкание дыр и перегрузка людей чужими делами — плохая практика, которая только увеличивает напряжение, ускоряет усталость и выгорание.
Конечно, вы можете работать сверхурочно и всё-таки успеть выполнить задачи, но с каждой такой переработкой выгорание всё ближе. При планировании стоит учитывать возможные «но» и закладывать дополнительное время, даже если думаете, что оно не потребуется (спойлер: потребуется).
Как происходит портирование в нашей студии?
Заказчик предоставляет нам доступ к коду игры, утилитам и ассетам. Мы исследуем код и данные проекта на предмет существования сложностей, которые повлекут большие временные затраты. На этом этапе мы тщательно определяем цели проекта: на какие платформы портировать и какие сложности с этим будут; какие улучшения в игре хочет видеть заказчик (добавить тени, улучшить освещение и прочее); какие утилиты и ассеты доступны для работы; какие функции можно вырезать из игры. После этого составляется план-документ со сроками и очерёдностью задач.
К сожалению, почти все заказчики могут прийти в середине любого майлстоуна и сказать: «В нашей игре хорошо будет смотреться моушн-контроллеры. Давайте наши разработчики добавят такую функциональность в игру, а вы её прикрутите к вашей платформе». Всего несколько дней работы — и игра стала намного лучше, что может пойти не так? К сожалению, многое.
Интеграция, может, и заняла всего несколько дней, но теперь есть ещё один кусок набора функций, который порождает баги. На них тратится дополнительное время как разработчиков, так и тестировщиков. Мы стараемся обговорить все моменты ещё на этапе планирования проекта, чтобы не добавлялись новые задачи и не увеличивались сроки.
Есть много примеров-проектов в геймдеве, которые вышли в плохом качестве именно из-за постоянных хотелок заказчика.
Как не выгореть
- Грамотно планируйте задачи. Трудоголизм — это зло. Не стоит портить свой график, важно соблюдать хоть какую-то дисциплину, иначе рискуешь быть уставшим и, как следствие, выгоревшим. Нужно уметь отдыхать и отвлекаться.
- Если научитесь разбивать задачи на подзадачи и учитывать их в каком-то наглядном формате, то сможете видеть прогресс выполненной работы и себя хвалить. Главное, не смотреть на объём невыполненных дел.
- Интересные вызовы спасают. Зачастую есть смысл обсудить с руководителем или работодателем свои задачи, попросить «какого-то развития», если чувствуете, что погрязли в однотипной работе.
- Заведите друзей и коллег, которые горят своим делом и поддержат вас. Дружеское общение заряжает и мотивирует.
- У каждого человека свои уникальные потребности, желания, страхи и мотивация. Поэтому нет универсального способа для профилактики выгорания. Каждый интересующийся, как не выгореть, должен задать себе вопросы «Что именно приносит мне удовольствие в работе?», «Для чего я этим занимаюсь?», «Какие у меня цели?» и «Что именно в работе может сделать меня счастливее?». Много людей выгорают просто потому, что занимаются не тем, чем им действительно хочется, но обманывают себя и боятся сменить сферу.
Но что делать, если всё вышеперечисленное испробовано? Здесь хочется вспомнить слова «Бытие определяет сознание». Что делать, если переработки в геймдеве — это норма мировой индустрии? Что делать, если художников заменяет ИИ и теперь намного сложнее найти интересную и перспективную работу? Ты не в силах изменить всю индустрию и сформировавшиеся правила. Возможно, стоит менять бытие?
И да — не забывайте хвалить себя, вы точно этого заслуживаете!
Роман OrelStealth Батищев
Дизайнер уровней, автор карты Rogue для Counter-Strike: Global Offensive
Планирование и тем более соблюдение пайплайнов для меня, человека регулярно прокрастинирующего, что-то из ряда вон. Однако чем дольше я занимаюсь разными вещами, тем больше понимаю, что совершаю ошибку, потому что не составляю хотя бы минимальный план действий.
Когда мне пришла в голову идея сделать rogue-lite-режим в CS: GO, у меня не было никакого адекватного пайплайна. План действий заключался в том, чтобы просто сесть и сделать то, что первым попадётся под руку. В один момент захочется делать модели, позже — резко переключиться на написание кода, и вдруг через пять минут я делаю какую-то уникальную текстуру. В таком режиме без ограничений я создавал первые карты с процедурной генерацией. Возможно, из-за этого и пострадали некоторые уровни, которые так и не вышли.
Когда я начал делать уже полноценный режим рогалика, то предпринял первые шаги на пути к улучшению процесса. Так как я делаю свои проекты чаще всего один, то солянка из разных действий никуда не делась. Я всё также занимаюсь то одним, то другим, меняя направление работы исходя из своих текущих предпочтений. Но что мне помогло держаться хоть немного в ежовых рукавицах, так это отслеживание того, что я делаю.
Полноценный рогалик потребовал писать больше кода по сравнению с предыдущими работами, поэтому я загружал его на GitHub. Это помогло отследить ошибки и спланировать последовательность собственных действий. Когда я открывал приложение, я видел надпись «последнее изменение — один день назад». Что-то внутри говорило, что нужно срочно написать код или внести какие-то изменения в модели, после которых так или иначе придётся менять код. В таком случае «один день» в той надписи не увеличится.
Иногда я, конечно, позволял себе брать перерывы, но когда видишь, что не работал уже 2–3 дня, то что-то начинает ёкать и просыпается желание срочно продуктивно поработать. Почему-то без этого счётчика желания сохранять тонус программирования не было.
Через какое-то время стало известно, что на смену CS: GO придёт CS2. То есть вся работа, скорее всего, пойдёт коту под хвост — в будущем так и случилось. Но мне хотелось выпустить хоть что-то. Уж больно многое было сделано. Тут в дело вступает второй невидимый мотиватор и помощник в борьбе с ленью — дедлайны.
Ещё до официального анонса CS2, я понимал, что он состоится уже скоро, поэтому каждый месяц ставил себе определённые задачи. Сентябрь — подготовить все модели и код для первого акта игры, начать второй акт. Октябрь — сделать рабочий хаб, в котором игрок будет заниматься прокачкой, доделать второй акт и так далее. Каждый месяц я старался выполнять поставленные задачи вплоть до анонса CS2.
После анонса подтвердились все худшие опасения, поэтому я выделил месяц на полировку и связывание того, что уже было готово, чтобы выпустить как есть. Показать хотя бы концепт, как мне казалось, огромных возможностей, которые игроки могут со временем потерять. Это был ещё один большой мотиватор не бросать проект и закончить работу. И хоть в итоге и получилось подобие некой демки, в которой правда можно провести множество часов (чтобы всё открыть), я очень доволен тем, что смог это сделать.
Дедлайны действительно помогают, особенно если они идут не изнутри. Что-то похожее было и со следующим проектом — небольшой соревновательной картой для CS2. Вообще, специально для этой карты, ещё до выхода новых инструментов, я решил заранее изучить движок, который на тот момент был доступен в Half-Life: Alyx. Провёл где-то месяц, разбирая разные мелочи, что очень сильно помогло при переходе из старого редактора Hammer в современный.
Процесс создания новой карты был менее сумбурным, чем процесс создания рогалика. Для соревновательной карты не нужно писать код, зато нужно, как мне кажется, подходить к созданию более последовательно, но не менее творчески.
Сначала я делал наброски на бумаге, чтобы визуализировать план будущей локации: отмечал, какие ориентиры-лендмарки хочу видеть (здания, башни, статуи и другие элементы), планировал проходы и проёмы — искал для них наилучшие углы обзора. По идее, на этом этапе следует параллельно искать референсы, но я решил пока обойтись без них, хотел поэкспериментировать с новым инструментарием, опираясь лишь на свои ощущения. Референсы в итоге нашли меня сами.
Уже на более позднем этапе, когда основа карты была готова, друг показывал фотографии из путешествия по Германии. Он знал, что я делаю проект в сеттинге, который перекликается с некоторыми его фотографиями. В это же время мне написал другой друг, благодаря которому косвенно возник дедлайн.
Оказалось, что в это время одна организация искала карты от сообщества, чтобы продемонстрировать их на крупном турнире во время перерывов. Друг свёл меня с организатором, а тот, в свою очередь, был рад увидеть то, что я делал. Он попросил карту для дальнейшей демонстрации.
Мне сказали, что по времени есть около недели. Я перелопатил карту — причём сделал гораздо больше, чем за месяц до этого. Хоть я и понимал, что маленькие карты спросом не пользуются, и, скорее всего, в том же чате стрима её бы захаяли, у меня всё равно был огромный заряд энергии и желания сделать как можно больше визуального контента, чтобы увеличить количество интересных презентабельных кадров.
После таких презентаций замечаешь какие-то нюансы, то, как на карту смотрят другие, и, опираясь на это, вносишь изменения, о которых раньше и не думал. Вообще, взгляд со стороны полезен почти на всех этапах разработки. Можно сказать, что он вносит коррективы в план действий. Чем дольше работаешь над чем-то, тем больше нюансов можешь упустить или не заметить, особенно когда работаешь один.
Очень многие помогли мне, просто высказывая своё мнение: что им нравится, или, наоборот, вызывает отвращение, что хотелось бы переделать. Все эти мнения помогают и даже дают «бонус к морали». Те, кому карта понравилась, действительно желали ей успеха, зачастую даже больше, чем я сам. Можно сказать, что появляется даже некая ответственность. Это очень заряжает.
Одной из самых сложных задач стала «закончить делать карту». Полировать и вносить разные нововведения можно бесконечно, поэтому очень хотелось завершить работу как можно быстрее, чтобы успеть в срок. Частично так и получилось.
На момент релиза в карте были проблемы. Что-то связано с дизайном, что-то — с производительностью, но общая картина была готова. Через несколько месяцев я к ней вернулся и немного отполировал. Думаю, это было правильным решением — выпустить в, как мне кажется, хорошем состоянии, чтобы потом, через некоторое время, с новыми силами внести финальные штрихи.
Не зря говорят, что ограничения будят творческий процесс. Без них мои проекты, скорее всего, оказались бы в более плачевном состоянии. Или и вовсе могли остаться незаконченными.
Олег Рожнов
Директор по развитию бизнеса Infinite Art Solutions
Первое, что я делаю, когда приступаю к работе, — пишу распорядок дня. Он меня действительно спасает. Рабочий день разбиваю на блоки по два часа. Примерно столько времени я выделяю на каждую задачу. Даже если понимаю, что работа займёт всего полчаса, я всё равно закладываю два, потому что знаю, что меня обязательно отвлекут или придётся делать что-то в процессе. Это умение быть везде и нигде одновременно. Мне приходится быть в расфокусе, чтобы всё успевать.
В первой половине дня провожу совещания с компанией, начиная со своего отдела продаж. Мы обсуждаем проблемы, достижения, успехи каждого из моих коллег. Затем я иду в HR-отдел, выслушиваю, как у них идут процессы, и, если необходимо, предоставляю им информацию о клиентах и будущих проектах, чтобы они могли подготовиться заранее.
Забросив тизер информации в HR, я могу быть уверен, что они уже знают 50% того, что случится в будущем. Так можно избежать недопониманий и задержек в работе. Если тебе приходит задача, например, срочно найти UI-специалиста с десятилетним опытом, ты должен заранее знать, где искать и кого.
Далее иду на совещания по направлениям, выясняя, что у нас происходит и какие проблемы нужно срочно решать. Супервайзеры, менеджеры и арт-директора обсуждают проблемы и ищут решения. К обеду у меня на руках уже есть полная информация о том, что происходит в студии.
Каждый созвон веду как генсек, делая пометки о том, кто что сказал, что мы можем сделать и кому какая нужна информация. Затем распространяю эту информацию в нужных чатах, чтобы обеспечить обмен знаниями и сотрудничество.
Вторую половину дня я стараюсь посвятить крупным задачам, которые требуют больше времени и концентрации. Для меня это самое продуктивное время.
Однако иногда требуется решать аномалии, которые происходят в студии и вокруг неё. Случается, что поступают задачи, которые доходят до меня в виде снежного кома. Они уже были у половины менеджеров компании, но никто не смог с ними справиться в рамках своих компетенций. Моя цель — решить эту задачу и сделать так, чтобы подобные снежные комы больше не образовывались.
Есть такое поверье, что людям нужно в день 60% нейтральной информации, 35% положительной и только 5% отрицательной. Если человек скрывается от вас, не хочет разговаривать или решать задачу, это означает, что он уже нашёл свои 5% негатива в другом месте. Поддержите его добрым словом.
Я всегда вспоминаю, как Вернер фон Браун на одном из стендовых испытаний первой баллистической ракеты, после её взрыва, спросил у своих: «Ну, кто ошибся?» Все естественно молчат, боятся. Но один инженер поднимает дрожащую руку и говорит: «Я». Вернер берёт бутылку шампанского и выпивает с ним, говоря: «Ты молодец, потому что в результате мы узнали, где это случилось. Если бы ты смолчал, испытания провалились бы во второй раз, а потом в третий. Мы искали бы проблему в другом месте и потратили бы кучу времени и сил». Так и в моей работе надо добиться, чтобы люди не боялись рассказывать о своих провалах, зная, что вместе мы превратим это в успехи для компании.
Другим аспектом моей жизни выступают конференции разработчиков. На них у меня цель узнать как можно больше людей и понять, как мы можем быть друг другу полезны. Я стараюсь, чтобы каждые полчаса у меня был новый собеседник. Изначально отсматриваю всех, кто написал, что посетит ивент, и выбираю наиболее интересных людей, потом — тех, кто может быть интересен нам в будущем. Так я стараюсь найти каждого и пообщаться с ним.
Конечно, не всё всегда идёт по плану. С кем-то я могу провести пару часов и встретиться в оба дня. А где-то и 15 минут будет достаточно. Важно, чтобы план был амбициозным и трудновыполнимым. Иначе как расти над собой?
Наша внутренняя кухня на каждом проекте состоит из менеджера, который выступает приёмным окном для клиента, и технического специалиста, который следит за качеством работы. Менеджер не только умеет разговаривать, но и понимает направление, за которое отвечает. Он не суперспециалист, но может объяснить исполнителю, чего хочет клиент и почему в этой задаче нет ничего страшного (даже если есть).
Менеджер также отвечает за ротацию сотрудников по проектам. Его рутинная работа состоит в том, чтобы у любого специалиста была текущая активная задача и запасная, на случай, если с активной задачей что-то не так или она уже принята. Менеджер проектов отслеживает загруженность сотрудников и фиксирует, на каких направлениях ожидаются свободные люди. Задача отдела продаж заключается в создании ажиотажа в этом направлении, плюс отдел должен узнать, чего хочет от нас рынок. Мы проводим сессии планирования раз в неделю, чтобы я мог свежим взглядом невовлечённого человека спросить: «А почему так? Может, было бы лучше сделать по-другому?»
Как директор по развитию бизнеса я стараюсь всегда быть максимально в курсе всей ситуации в студии и найти баланс между рутинной работой и долгосрочными задачами, между управлением и делегированием, между контролем и доверием. Конечно, не всегда и не всё получается с первого раза. Бывают взлёты и падения. Главное — сохранять позитивный настрой и понимать, что ты работаешь в команде, поэтому можешь сделать гораздо больше, чем если бы был один.
Я не считаю, что делаю что-то сверхъестественное или уникальное. Попробуйте продать услуги своей жены своим друзьям — и вы уже побываете в моей шкуре. А потом попробуйте рассказать незнакомым людям, как она замечательно печёт, шьёт или изготавливает мебель. Получилось? Отлично, теперь идите и помогите ей сделать все те заказы, которые вы так успешно для неё набрали. Вот и весь секрет.
Тимур g3ometry Айсин
Дизайнер уровней, автор карты Memento для Counter-Strike 2
Первый шаг при создании карты для Counter-Strike — формулирование уникальной концепции, которая привлечёт игроков. Мне важно, чтобы карта выделялась среди других, поэтому я выделяю время на размышления, обсуждения и составляю списки идей. Стараюсь продумать общую тематику, особенности и основные моменты, которые будут формировать игровой процесс.
На следующем этапе происходит проектирование и планирование карты. Здесь я набрасываю схемы и чертежи, отмечаю расположение основных объектов, зон и структур. Эта фаза позволяет наметить общую структуру и понять, как карта будет играться.
Определив расположение ключевых точек, я начинаю прорабатывать логическую последовательность действий игроков, чтобы карта не только выглядела интересно, но и была сбалансированной в плане игрового процесса.
После проектирования перехожу к созданию блокаута. Здесь я использую простые геометрические формы, чтобы обозначить основные зоны и проверить, насколько эффективно они взаимодействуют между собой. Этот этап важен для быстрого тестирования общей структуры и понимания, насколько удобно перемещаться по карте. Главное — удостовериться, что основные элементы расположены правильно и не мешают друг другу, а также понять, что игрокам будет интересно передвигаться по локации.
Когда блоки сформированы, я перехожу к этапу плейтестов. Здесь происходит тестирование карты на играбельность и баланс. Обычно провожу несколько игровых сессий, чтобы получить обратную связь от участников. Этот процесс помогает выявить слабые места карты, неудобные позиции или чрезмерно сильные укрытия. Обратная связь — бесценный инструмент для дальнейшей корректировки уровня. Уделяю особое внимание комментариям о балансе, так как сбалансированная карта — залог интересной игры.
После того как я внёс изменения на основе обратной связи, начинаю подбирать визуальные элементы. На этом этапе работаю над визуальным стилем, подбираю референсы, чтобы каждый объект на карте соответствовал общей тематике. Теперь время заменить грубые геометрические формы на плейсхолдеры — более точные модели, которые сохраняют общий вид уровня, но без финальных текстур и деталей. Так я создаю более реалистичное окружение, не перегружая карту.
Следующий этап — производство моделей и текстур. Создаю окончательные модели объектов, прорабатываю текстуры и визуальные детали. Я должен быть к ним особенно внимателен, но при этом помнить о производительности. Постоянное тестирование и корректировка помогают избежать проблем с кадровой частотой.
Когда карта приобретает окончательный вид, я снова провожу плейтесты, чтобы убедиться, что всё работает гладко и игроки довольны результатом. Этот этап также включает в себя оптимизацию. Карта должна работать стабильно даже при большом количестве игроков.
Перед релизом провожу окончательное тестирование и стресс-тест. Выявляю любые проблемы или несоответствия, которые могли возникнуть во время разработки. После этого карта отправляется в мастерскую Steam, чтобы стать доступной широкой публике.
Каждый этап создания карты для CS — это шаг к созданию качественного и интересного продукта. От идеи до релиза процесс требует тщательного планирования, проектирования, тестирования и оптимизации. И, конечно же, креативности.