"Сегодня у нас беседа с Оливье, одним из ключевых программистов, работавших над оптимизацией движка Paprium, хардкорного бит-эм-апа для Sega Mega Drive, который взорвал хайп-метер в 2020 году.
Как всё начиналось:
---------------------------------
Оливье рассказал, что в 2015 году Гвен (известен как Fonzie; основной разработчик Paprium) связался с ним, чтобы помочь с оптимизацией графики.
«Гвен сказал: "У нас проблема с движком. Нам нужно больше спрайтов, 60 FPS без лагов". Я подумал: "Ну окей, почему бы и нет?" – и в итоге это заняло год вместо предполагаемых трёх недель», – смеётся Оливье.
Fonzie описывают как «человека с амбициями Стива Джобса»:
«Он говорил: “Я хочу спрайты размером с дом, 60 FPS”, а мы думали: “Это невозможно”… но потом находили способ».
Его энтузиазм был заразителен: «Он толкал тебя вперёд, даже когда ты сомневался».
Финансы:
Гвен не разбогател на Paprium. «Он точно не купил Lamborghini», – шутит Оливье.
Paprium фактически был финансовым провалом.
Основные причины:
Огромные затраты на физическое производство картриджей; Минимальный тираж; Высокая себестоимость проекта; Небольшое количество реальных продаж
"Мы вложили больше денег, чем смогли заработать. Гвен был скорее энтузиастом, чем бизнесменом. Все средства шли обратно в разработку."
Он специально подчеркивал, что проект был не коммерческим предприятием, а данью уважения олдскулу.
"Lamborghini? Да он еле окупил затраты на производство картриджей. Речь шла о ностальгии, а не о прибыли."
Звучало это очень эмоционально и с легкой иронией над собственными амбициями того времени.Странные подарки и NDA:
В благодарность за работу Оливье получил эксклюзивную статуэтку и… «некоторые странные вещицы, которые лучше не показывать» (намёк на фирменные стринги Paprium).
До сих пор под NDA:
«Я удалил все исходники. Paprium – ребёнок Гвена, а я лишь помогал».
Конфликты и хейт:
Оливье подтвердил, что Fonzie сталкивался с агрессией: угрозы, попытки докопаться до его адреса, обвинения в «неумении программировать».
«Но его код… Я не всё понял, но он работал. А те, кто критиковал, просто не видели масштаба задач».
Разработка:
---------------------------------
Первые месяцы работы были похожи на настоящее приключение. Оливье признался, что сначала не понимал код и методы оптимизации. Он начал с изучения регистров процессора 68000, времени выполнения инструкций и внутренней кухни компилятора..
Оптимизация велась на ассемблере Motorola 68000. Ключевая задача – выжать максимум производительности из 30-летней железяки.
• Первые 10% оптимизации: легко. Переписал функции, применил хитрые инструкции.
Он использовал инструкцию DBRA (Decrement and Branch), которая особенно эффективна для оптимизации циклов.
Проблема была в том, что компилятор не очень хорошо оптимизировал циклы for, особенно на cross-компиляции для 68000. Оливье обнаружил, что некоторые циклы можно существенно ускорить, применив специфические инструкции процессора.• Следующие 20%: тонкая оптимизация использования регистров.
Смысл был в том, что компилятор использует регистры не максимально эффективно. Оливье говорил, что нашел уже существующую calling convention, где первые два регистра данных (D0, D1) используются для передачи параметров.
"...я думал, что изобретаю что-то новое, но оказалось, что такой метод уже известен. Будь интернет 20 лет назад, мы бы сразу это знали".Он эмпирически нашел более эффективный способ использования регистров, но который уже был известен в среде разработчиков для 68000.
• Последние 5%: настоящий ад с бесконечными тестами.
Оливье запускал игру и проверял стабильность через 20, 30, 35 минут; Создавал виртуальные машины для разных версий; Отслеживал малейшие падения и сбои.
Проблемы: Игра могла внезапно вылетать через час игры; Очень сложно поймать и воспроизвести баг; Каждое исправление требовало полного цикла тестирования.
Процесс становился невероятно утомительным.«Я знал коды операций наизусть. Когда начал видеть их во сне – понял, что пора завязывать», – говорит программист.
Философия и трудности:
Без зарплаты, ради фана.
Он говорил, что для него, молодого программиста начала 90-х, попасть в титры игры для Mega Drive было огромной честью. Денежная компенсация его абсолютно не интересовала.
"Мне было 22-23 года, я только начинал в индустрии. Возможность прикоснуться к разработке для SEGA - это было мечтой. Какие деньги? Мне достаточно было видеть своё имя в титрах!"
Процесс оптимизации был невероятно кропотливым. Бывали моменты, когда игра падала через 30 секунд, а иногда и через 2 минуты. "Это было утомительно", - признается Оливье.
Тестирование – 80% работы. «Разработка игр – это не веселье, а рутина: код → тест → дебаг → повторить.
В итоге ему удалось добиться 30% прироста производительности. Гвен был в восторге! Это позволило добавить больше графики и улучшить звук.
Итог:
"Этот проект научил меня, что геймдев – тяжёлый труд. Если хотите делать игры, будьте готовы к монотонной работе, а не только к творчеству".
"Если бы я знал раньше, насколько это сложно, возможно, не взялся бы", - признается он.
В конце концов, Оливье гордится своим участием в Paprium. Для него это была возможность прикоснуться к легендарной консоли и создать частичку игровой истории." (С)
https://www.youtube.com/watch?v=bkAx72RL3kM