![Логотип проекта Plague M.D.](/files/100121/logo.png?d=1600862963)
Мы с друзьями делаем игру. Часть 5: нытье прогера
Полгода назад я застрял в России из-за COVID после сокращения офиса в Австрии. Обучение в Вене было окончено, так что меня ждал огромный мир IT нашей прекрасной страны. Рынок вакансий предлагал карьеру в области веб, 8 часов в день, 5 дней в неделю и все в комфортном офисе, но… Только после окончания пандемии. Именно тогда мои друзья предложили мне сделать… игру. Кто откажется от такого?
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549352.png.796x400r.png?d=1601549585)
Plague M.D. — это моя первая самостоятельная игрушка, хотя лет пять назад я подрабатывал в команде геймдизайнеров, но быть частью процесса и стать единственным программистом — совсем разные вещи.
И вот, что я запомнил за последние пять месяцев своей жизни в следующих 13 пунктах:
- Есть всего один специалист — это я
Движок, который команда выбрала, библиотека, если угодно, — модный-стильный-молодёжный. На западе в Европе некоторые студии постепенно переходят на него, переобучая специалистов. В РФ он пришёл недавно, поэтому основа контингента его сообщества — школьники с богатым внутренним миром и аутичные задры. Толковых профи мало, документация плохо локализована, а ее оригинал грешит анти-очевидностью, как препод по матану, который внезапно пропускает 20 строчек формулы, потому что «… это и так очевидно, че вы»
- Я застрял в рамках инструмента
Разработка начинается с выбора инструмента. Если не зафакапить этот момент, появляется навязчивое желание пихать все его фишки куда попало. Появляются тысячи идей, которые хочется выполнять обязательно параллельно с текущим проектом, сто процентов на этом движке
- Одиночество с кодом
Понимание того, что весь код никто не увидит расслабляет, начинаешь писать грязно, иногда не задумываясь о будущих правках. Из-за чего многие вещи приходилось переделывать по 2-3 раза. Поговаривают, это обычный результат в разработке (к сожалению)
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549372.png.796x400r.png?d=1601549585)
- Большая нагрузка
Очевидно, вытекающая из предыдущего пункта проблема. В какой-то момент работы с Unity начинаешь встречать специалистов, с которыми можно и нужно советоваться. Кроме того, тему менторства никто не отменял — любому IT комьюнити очень нужны новые специалисты. Увы, на Godot обученные работники хотят зарплату более 9000, а прочие ленятся переучиваться из-за боязни оказаться за бортом мейнстримной технологии
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549388.png.796x400r.png?d=1601549585)
- Слишком много багов, слишком много лука
Глаз замыливается постоянно, особенно после долгой долбежки какой-то проблемы типа неработающего диалогового модуля, когда радуешься, что хоть как-то это работает. Отсюда выходят странные ошибки вроде бесконечного числа луковиц, которыми можно завесить все пространство дисплея и… пройти игру. Также стоит отметить те баги, которые сами исправились. Их множество, про некоторые я просто забывал, а потом обнаруживал, что всё уже решилось. Возможно, они всё ещё в игре :)
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549403.png.796x400r.png?d=1601549585)
- Чит-коды
Несмотря на то, что Годот очень удобен для теста игры и её модулей, иногда приходилось залипать в игровой процесс по несколько минут. Ради ускорения этого процесса пришлось идти на разные ухищрения, ведь классические методы тестирования не подходят для такого продукта.
Так для тестировщиков была придумана комбинация кликов на курицах в игровой деревне, которая переключала уровни. Но, как только был прикручен модуль сохранений, она начала выдавать совсем уже необычный результат. Этот чит-код все еще в игре, так что можете попытаться активировать его. Не удивляйтесь, если Жан умрет, все дело в курице
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549418.png.796x400r.png?d=1601549585)
- Я сжимаю как батя. Оптимизация
Из-за того, что львиная доля изображений была нарисована художником и обработана в хайрез, а также из-за безумной любви дизайнера скидывать материал 5:1, постоянно приходится ужиматься, внося правки в размеры файлов, форматы (вместо wav — ogg) и используя лаконичность мысли в коде.
Для сравнения первая версия весила 620 мб, имела 4 главы, жуткую систему инвентаря, и кучу разновидностей крестьян, а также тормозила на слабопроцессорных бутербродах. Текущая, финальная — 350 мб
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549469.png.796x400r.png?d=1601549585)
- Ад архивов и бэкапов
Из-за объема графических материалов, звука и музыки сразу остро встали вопросы сохранения версий и коммуникации с коллегами. Конечно, сразу был использован гит и облака. Но для коллег и внутреннего общения использовались ТОННЫ архивов. Спустя месяц я понял, что запоминать и отсылать к числовым названиям версий тупо — никто не помнит. Отсюда появились безумные имена вроде «Войны бобров» и «Меховые селёдкины шубы»
- Где вообще я работаю?
Из-за ковида полпроекта пришлось проработать удаленно. Были моменты, когда мы собирались в офисе агентства, в котором раньше работали мои друзья.
Само агентство, кстати, занимается историческими фестивалями, повсюду костюмы и доспехи из прошлого, тонна крутейшего реквизита. Вокруг ходят суровые бородатые мужи, решают вопросики и всячески поддерживают.
Главный бородатый мужик помогал нам не умереть с голоду, когда было совсем тяжело, искренне верил в игру, любезно предоставил место в офисе для наших собраний и аккаунты разработчика в Google Play и App Store. Смена обстановки и режима работы помогала решать задачи
- И никому не объяснишь
Сидишь, никого не трогаешь, починяешь абстрактный примус, и тут из-за угла офиса выруливает один из бородатых мужиков и говорит: «хочу играть сейчас на своём айфоне, го показывать». И ты начинаешь объяснять, что у айфонов закрыта файловая система, а у тебя не мак и тут надо настроить, и дело не 5 минут… Проблема, висевшая в нашем общении 2 месяца, пока не был найден макбук. Так мы нашли язык с внешним миром
- Про команду и доверие
У нас малотоксичная команда, все всех слушают и стараются избегать прямых конфликтов. Не думаю, что это только из-за уважения — в быту тусовка токсична. Такой подход экономит время. Сраться долго
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549519.png.796x400r.png?d=1601549585)
- Про дедлайны
Дело даже не в сроках. Если кодишь архитектуру, 100% завалишь, потому что предпочтешь опоздать, чем выдать нерабочий продукт. Эта хрень тупо должна работать. Иначе ты — хреновый работник. Хирург не говорит, что пациент был так себе пациентом, если не справляется
![Мы с друзьями делаем игру. Часть 5: нытье прогера — Plague M.D. — DevTribe: инди-игры, разработка, сообщество (GameDev, indie, mobile, геймдев, игры, Игры)](https://devtribe.ru/files/100121/1001448/image-1601549540.png.796x400r.png?d=1601549585)
В общем и целом, я много опаздывал по чуть-чуть. Но игра все равно вышла
- Если игра выпущена, это не значит, что ты свободен. У Добби будет еще много правок
Россия откроет границы в декабре 2020 года, я уеду в Австрию… или нет.
Смотрите также:
Комментарии
Здесь еще никто не оставил комментарий
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]