{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}

Комикс: Технический долг в разработке игр

Откопала классное видео от образовательного канала Extra Credits, в формате «как объяснить, что такое технический долг даже ребёнку на примере разработки игры». Мне так понравились иллюстрации, что я сделала из этого видео комикс.

Вы запускаете новый проект, всё идет отлично. Вы пишете код, создаете контент и арты. Но прямо перед самым завершением, когда думаете, что почти закончили, начинается ад.

Ошибки, которые вы планировали исправить за пару минут занимают часы. Каждая известная бага превращается в две неизвестных.

Контент не сочетается друг с другом. Вообще все ваши ассеты не сочетаются друг с другом. И самое ужасное, что нет ни времени, ни денег, чтобы что-то изменить.

Что произошло? Наступил срок погашения технического долга.

Технический долг — это то, что происходит, когда проблемы, возникшие на раннем этапе разработки, не решают.

В результате чего их решение становится гооораздно сложнее или дороже.

Потому что технический долг работает почти как финансовый долг.

Если кредит не погашен, проценты будут расти, до тех пор, пока долг не окажется намного выше первоначального займа.

С точки зрения разработки игр, небольшая проблема может расти и расти, и никто этого не заметит, пока не станет слишком поздно или сложно ее исправлять.

Решение устранить проблему сразу или оставить на потом — вопрос, с которым сталкивается каждая команда разработчиков.

Это компромисс. На раннем этапе важно быстро наладить работу нового функционала, так дизайнеры и художники могут начать создавать контент. Однако это может привести к тому, что функции будут спроектированы без учёта потенциальных ошибок.

Это не говоря о том, что технический долг не ограничивается простым написанием кода.

Дизайнеры могут собирать уровень без какой-либо структуры, художники могут отправлять ассеты с чрезмерным количеством полигонов или дефектами текстуры. Когда проект только начинается, на эти ошибки обычно не обращают внимания, т.к. они никому особо не мешают.

Все предполагают, что ошибки обязательно исправят. Потом. Кто-нибудь другой. Этот кто-нибудь обязательно займется проблемами в будущем. Ну, или пока просто никто в команде не знает, как исправить эти ошибки. Команда просто двигается дальше.

Это проблема, т.к. стоимость повторного выполнения некоторых работ на поздних этапах проекта растет экспоненциально.

Многие критически важные системы могут опираться на забагованный код. Исправление, которое раньше заняло бы у разработчика 30 секунд, потенциально может поломать всю игру, а на поиски решения могут уйти недели. Может даже программист, который это написал, уже не в команде.

Или на уровнях перемешаны сотни или тысячи объектов с плохими названиями. Раньше, чтобы найти какой-то объект на уровне у художника или дизайнера уходило несколько секунд, сейчас на это уходят уже минуты. Суммируясь, эти минуты превращаются в часы потраченного впустую производственного времени.

А еще проблема не всегда выглядит как проблема.

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

На организацию всего проекта на позднем этапе могут уйти часы, дни и даже недели.

Другие причины технического долга — планирование.

Когда у разработчика есть жесткий дедлайн для завершения большой фичи, ему придется срезать все углы, чтобы успеть вовремя реализовать функционал. И те решения, которые разработчик в принимает, будет трудно или даже невозможно отменить.

Например, программистам поручают создать вражеский ИИ. Им говорят, что игра только для одного игрока.

Программисты создают систему искусственного интеллекта, полностью ориентированную на реакцию одного игрока-человека.

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

Разработчикам придется переделать всю систему так, чтобы ИИ мог правильно реагировать на нескольких игроков.

Не говоря уже о том, что дизайнеры уровней разместили ИИ на уровнях в соответствии с его изначальным функционалом. Так что теперь им, возможно, придется перепроектировать куски уровней, чтобы компенсировать это.

Как для разработчиков, так и для дизайнеров, теперь все эти спагетти — помеха в работе с другими функциями или контентом. Приходится постоянно сдерживать этот поезд, катящийся в Ад.

Технический долг может стать настолько неуправляемым, что команда отложит релиз игры на неопределенный срок или полностью отменит. Иногда костылей столько, что проще выбросить всё и начать сначала.

Но с другой стороны, бывают случаи, когда есть обоснованные причины не сильно заботиться о техническом долге.

Прототипы игр часто лепят из чего попало, чтобы протестировать ранние концепции и идеи или оценить, стоит ли детально изучать эти идеи.

Нет смысла создавать и идеально подгонять систему для прототипа. Особенно, зная, что её спишут после одного игрового теста.

Некоторые студии даже отказываются от прототипов и начинают всё сначала, когда переходят к реальному производству. Иногда у них даже есть отдельные команды для прототипирования и для продакшена.

Иногда ошибки оставляют осознанно, если считают, что слишком дорого их исправлять или они не сильно влияют на игровой процесс.

Ошибку, которая полностью ломает игру каждый раз, когда возникает, важнее исправить, чем странный графический сбой, который случается только время от времени.

Игру можно допатчить после выпуска. Вы удивитесь, узнав, как часто игры релизят под девизом: «грузим сейчас, фиксим потом» в связи с праздничными днями или крайними сроками продажи.

Так что не принимайте решения легкомысленно. Все мы знаем, как иногда существующая база игроков может… «реагировать» на эти изменения.

Минимизация технического долга — огромная проблема. Никто не может точно знать, что произойдет в будущем. Лучший способ справиться с тех долгом — просто осознавать, что это скорее всего произойдет. Но есть способы уменьшить потенциальный долг.

Выбирайте хорошие методологии работы в начале проекта. И придерживайтесь их.

Гайды и регулярные код-ревью могут показаться пустой тратой драгоценного времени на раннем этапе. Не говоря уже о том, что программисты будут ворчать по этому поводу. Но несколько минут на порядок или правильную организацию ассетов сэкономят огромное количество часов работы, когда вы будете завершать игру.

Выбирая, как потратить драгоценное время вашей команды разработки, помните: если у вас нет времени сделать это правильно, у вас не будет времени сделать это заново.

0
26 комментариев
Написать комментарий...
sloa

К слову о техническом долге.

Есть видео, где лысый из butterscotch shenanigans объясняет, как практика девопс изменила их разработку.
Может быть интересно.

Они переделали процесс так, чтобы баги не копились, и поэтому перестали накапливать технический долг.

Ответить
Развернуть ветку
Andrey Apanasik

На смежную тему есть ещё хороший доклад от разработчиков Sea of Thieves.

Ответить
Развернуть ветку
sloa

Это ведь Rare. Я находил пост от разработчика из Rare, где он как раз писал что у них начали с определенного момента использовать автотесты, и это совершенно преобразило предрелизный период.

Интересно будет послушать в деталях.

Ответить
Развернуть ветку
Alexander Shimanskiy

Автоматические тесты - это реально круто.

Ответить
Развернуть ветку
Евгений Онянов

Жаль только, что автоматические тесты автоматически не пишутся.

Ответить
Развернуть ветку
Alexander Shimanskiy

Малая цена для уменьшения головной были в будущем.

Ответить
Развернуть ветку
Евгений Онянов

ну как малая - не такая уж и малая, особенно для геймдева.

Ответить
Развернуть ветку
Alexander Shimanskiy

На фоне геморроя, который обязательно будет присутствовать при отсутствии вышеупомянутых тестов - весьма малая :)

Ответить
Развернуть ветку
Анастасия Дюжикова
Автор

И за это спасибо, всё в копилочку, всё в сохранялочки

Ответить
Развернуть ветку
Анастасия Дюжикова
Автор

Класс, спасибо!

Ответить
Развернуть ветку
Креативный Директор

а про какую там игру, наверное она не очень сложная и не онлайновая?

Ответить
Развернуть ветку
sloa

Аналог Mario Maker.

Ответить
Развернуть ветку
Andrey Apanasik

У Extra Credits вообще довольно много хороших видео.

Ответить
Развернуть ветку
Бармен

Но потом что-то пошло не так
https://youtu.be/ymUEPKTEQaQ

Ответить
Развернуть ветку
Бармен
Ответить
Развернуть ветку
Анастасия Дюжикова
Автор

Оу, да, залипла надолго в их канале, когда первый раз нашла :)

Ответить
Развернуть ветку
SALAZAR

- А у вас, есть Технический долг?
-...

Ответить
Развернуть ветку
Анастасия Дюжикова
Автор

Не стреляйте в пианиста)

Ответить
Развернуть ветку
Укроп

Картинки отличные. Так читать и смотреть много интересней. Хороший перевод.

Ответить
Развернуть ветку
Serj Nilov

Главное - успеть выпустить игру до того, как наступит время платить долг

Ответить
Развернуть ветку
Анастасия Дюжикова
Автор

Ну, или понять, что всем, кому должен - прощаю. Выкинуть всё и начать сначала... тут вопрос бюджета, договоренностей, и есть ли у кредиторов твой домашний адрес )

Ответить
Развернуть ветку
SALAZAR
Ответить
Развернуть ветку
Креативный Директор

не выпустить, а закрыть поддержку

Ответить
Развернуть ветку
Limys
Вы удивиться

тут поправить надо не?

Ответить
Развернуть ветку
Иван Соловков
Вы удивиться, узнав, как часто игры релизят под девизом: «грузим сейчас, фиксим потом» в связи с праздничными днями или крайними сроками продажи.

Нет, моя не удивиться.

Ответить
Развернуть ветку
Креативный Директор

профессионал умеет находить компромиссные решения

Ответить
Развернуть ветку
Читать все 26 комментариев
null