Мы с друзьями делаем игру. Часть 5: Я остался в России и меня поглотила Чума
Статья от нашего прогера.
Первая, вторая, третья и четвертая части.
Plague M.D. — игра, которую сделал я и мои друзья. Сейчас она доступна в app store, google play, а 14 октября выйдет в steam. Как это произошло, я сам не понял.
Полгода назад я застрял в России из-за COVID после сокращения офиса в Австрии. Обучение в Вене было окончено, так что меня ждал огромный мир IT нашей прекрасной страны. Рынок вакансий предлагал карьеру в области веб, 8 часов в день, 5 дней в неделю и все в комфортном офисе, но… Только после окончания пандемии. Именно тогда мои друзья предложили мне сделать… игру. Кто откажется от такого?
Plague M.D. — это моя первая самостоятельная игрушка, хотя лет пять назад я подрабатывал в команде геймдизайнеров, но быть частью процесса и стать единственным программистом — совсем разные вещи.
И вот, что я запомнил за последние пять месяцев своей жизни в следующих 13 пунктах:
- Есть всего один специалист — это я
Движок, который команда выбрала, библиотека, если угодно, — модный-стильный-молодёжный. На западе в Европе некоторые студии постепенно переходят на него, переобучая специалистов. В РФ он пришёл недавно, поэтому основа контингента его сообщества — школьники с богатым внутренним миром и аутичные задры. Толковых профи мало, документация плохо локализована, а ее оригинал грешит анти-очевидностью, как препод по матану, который внезапно пропускает 20 строчек формулы, потому что «…это и так очевидно, че вы»
- Я застрял в рамках инструмента
Разработка начинается с выбора инструмента. Если не зафакапить этот момент, появляется навязчивое желание пихать все его фишки куда попало. Появляются тысячи идей, которые хочется выполнять обязательно параллельно с текущим проектом, сто процентов на этом движке
- Одиночество с кодом
Понимание того, что весь код никто не увидит расслабляет, начинаешь писать грязно, иногда не задумываясь о будущих правках. Из-за чего многие вещи приходилось переделывать по 2−3 раза. Поговаривают, это обычный результат в разработке (к сожалению)
- Большая нагрузка
Очевидно, вытекающая из предыдущего пункта проблема. В какой-то момент работы с Unity начинаешь встречать специалистов, с которыми можно и нужно советоваться. Кроме того, тему менторства никто не отменял — любому IT комьюнити очень нужны новые специалисты. Увы, на Godot обученные работники хотят зарплату более 9000, а прочие ленятся переучиваться из-за боязни оказаться за бортом мейнстримной технологии
- Слишком много багов, слишком много лука
Глаз замыливается постоянно, особенно после долгой долбежки какой-то проблемы типа неработающего диалогового модуля, когда радуешься, что хоть как-то это работает. Отсюда выходят странные ошибки вроде бесконечного числа луковиц, которыми можно завесить все пространство дисплея и… пройти игру. Также стоит отметить те баги, которые сами исправились. Их множество, про некоторые я просто забывал, а потом обнаруживал, что всё уже решилось. Возможно, они всё ещё в игре :)
- Чит-коды
Несмотря на то, что Годот очень удобен для теста игры и её модулей, иногда приходилось залипать в игровой процесс по несколько минут. Ради ускорения этого процесса пришлось идти на разные ухищрения, ведь классические методы тестирования не подходят для такого продукта.
Так для тестировщиков была придумана комбинация кликов на курицах в игровой деревне, которая переключала уровни. Но, как только был прикручен модуль сохранений, она начала выдавать совсем уже необычный результат. Этот чит-код все еще в игре, так что можете попытаться активировать его. Не удивляйтесь, если Жан умрет, все дело в курице
- Я сжимаю как батя. Оптимизация
Из-за того, что львиная доля изображений была нарисована художником и обработана в хайрез, а также из-за безумной любви дизайнера скидывать материал 5:1, постоянно приходится ужиматься, внося правки в размеры файлов, форматы (вместо wav — ogg) и используя лаконичность мысли в коде.
Для сравнения первая версия весила 620 мб, имела 4 главы, жуткую систему инвентаря, и кучу разновидностей крестьян, а также тормозила на слабопроцессорных бутербродах. Текущая, финальная — 350 мб
- Ад архивов и бэкапов
Из-за объема графических материалов, звука и музыки сразу остро встали вопросы сохранения версий и коммуникации с коллегами. Конечно, сразу был использован гит и облака. Но для коллег и внутреннего общения использовались ТОННЫ архивов. Спустя месяц я понял, что запоминать и отсылать к числовым названиям версий тупо — никто не помнит. Отсюда появились безумные имена вроде «Войны бобров» и «Меховые селёдкины шубы»
- Где вообще я работаю?
Из-за ковида полпроекта пришлось проработать удаленно. Были моменты, когда мы собирались в офисе агентства, в котором раньше работали мои друзья.
Само агентство, кстати, занимается историческими фестивалями, повсюду костюмы и доспехи из прошлого, тонна крутейшего реквизита. Вокруг ходят суровые бородатые мужи, решают вопросики и всячески поддерживают.
Главный бородатый мужик помогал нам не умереть с голоду, когда было совсем тяжело, искренне верил в игру, любезно предоставил место в офисе для наших собраний и аккаунты разработчика в Google Play и App Store. Смена обстановки и режима работы помогала решать задачи
- И никому не объяснишь
Сидишь, никого не трогаешь, починяешь абстрактный примус, и тут из-за угла офиса выруливает один из бородатых мужиков и говорит: «хочу играть сейчас на своём айфоне, го показывать». И ты начинаешь объяснять, что у айфонов закрыта файловая система, а у тебя не мак и тут надо настроить, и дело не 5 минут… Проблема, висевшая в нашем общении 2 месяца, пока не был найден макбук. Так мы нашли язык с внешним миром
- Про команду и доверие
У нас малотоксичная команда, все всех слушают и стараются избегать прямых конфликтов. Не думаю, что это только из-за уважения — в быту тусовка токсична. Такой подход экономит время. Сраться долго
- Про дедлайны
Дело даже не в сроках. Если кодишь архитектуру, 100% завалишь, потому что предпочтешь опоздать, чем выдать нерабочий продукт. Эта хрень тупо должна работать. Иначе ты — хреновый работник. Хирург не говорит, что пациент был так себе пациентом, если не справляется
В общем и целом, я много опаздывал по чуть-чуть. Но игра все равно вышла
- Если игра выпущена, это не значит, что ты свободен. У Добби будет еще много правок
Россия откроет границы в декабре 2020 года, я уеду в Австрию… или нет.
- 01 октября 2020, 13:58
Если много итераций в геймдизайне (ради поиска фанового варианта), то можно и больше раз переписать код. Да, такая особенность программирования геймплея (и UI). Поэтому грязный код рулит на первых билдах (всё равно удалять).
В дискорде Годота много подсказчиков. И в реддите. И с гамака, и с юнити, и с самописных движков пересаживаются опытные ребята, интересное комьюнити.
А почему именно в офис по месту жительства? Если можешь делать игру тут, то можешь, сидя тут, и работать на другую контору в Европе, в которой сейчас расширение, а не сокращение. Не то чтобы в Австрии плохо, мне там понравилось мимоходом, но зачем ждать у моря погоды?
Плюсую про Godot-Discord, людный, живой и отзывчивый.
Сначала подумал, что автор стесняется произносить слово Godot. Жду материал, с примерами кода, подходах оптимизации и вообще более подробной информации о разработке игры при помощи Godot. C# или GDScript? Использовался кастомный движок (да это движок, а не библиотека) или своя сборка?
Я понимаю, что пиар дело такое... деликатно-навязчивое, вроде как надо прорекламить игру, да и разбавить чем-то, но все таки раз выбран такой тернистый путь, можно было с техничнской стороны блестнуть чем-то...