Олег Чумаков: Сейчас программисты часто пишут model view controller. Такие каркасы все себе писали, потому что индустрия, по крайней мере в России, последние годы работала на Unity. А в Unreal тебе сразу дают player, pawn controller, и нужно всё это самому разбивать между ними. В разработках компании это как-то разбивается ещё на подсистемы, или вы придерживаетесь только базового каркаса?
Ник Атамас: В компании разработки начинаются с того, как сделать игру интересной, чтобы человек хотел играть и не останавливаться. Этим обычно занимаются геймдизайнеры или художники, но не программисты. Мы бываем нужны, чтобы добавлять абсолютно новые системы, например, чтобы анимация взаимодействовала с физикой. Тогда — да, программист будет помогать.
Дизайнерам неинтересны MVC, MVVM. Если голова взрывается, когда в неё стреляешь — хорошо, отлично, а это пишется без архитектуры совсем. Потом, когда всё уже работает — мы говорим: «Окей, игра есть, давайте теперь сделаем так, чтобы она работала быстро на всех платформах». Когда первичен дизайн — MVC, MVVM — второстепенны, в отличие от программирования редактора, где всё более структурированно.
Создание UI идёт более структурированно, потому что есть модель: кнопки, слайдеры, меню, то есть очевидный дизайн-словарь, с ним можно использовать MVC, MVVM. А когда делаешь игру — откуда ты знаешь, что понадобится, а что нет.
Олег Чумаков: В концепции, где дизайнеры начинают делать игру, а мы её дописываем, всё хорошо. Но допустим, что нам принесли проект, очень весёлый. Теперь нужно сделать его дружелюбным к пользователю, заставить быстро работать с сервером, и чтобы новую фичу не надо было добавлять неделю.
Как вы обычно делаете — остаётесь в рамках фреймворка, который предоставляет UE, или нет?
Ник Атамас: Инженеры, конечно, хотят сделать всё структурированно. Но обычно есть расписание, в котором указано, что всё должно было быть закончено месяц тому назад, и пора начинать «кранч». Нет времени переписывать — просто сделай так, чтобы оно работало.
В этот момент нужны талант и опыт, чтобы решить — переписывать всё, или оставить и исправить отдельные ошибки.
Если MVC, MVVM подходят — их используют. Думаю, главное в них не гениальный дизайн (который не всегда подходит), а в контексте. Ты получаешь «словарь», который сразу можешь использовать, чтобы дойти до того, как что-то реализовать.
Все понимают, что делать отдельные «M», «V» и «С» — не всегда умно, обычно делят так: «M» и «VC». Используется даже набор понятий, вышедший из Next и Apple.
А MVVM — вообще новая вещь, которая не всегда подходит. Зачем делать три класса, когда очень часто можно сделать один, быстро написать, и всё заработает?
Отличное интервью, спасибо, и из него полностью очевидно почему инди и маленькие разработчики преподчитают юнити )
Комментарий недоступен
Комментарий недоступен
Не думаю, что это серьезно. У них на доске в трелло такой задачи нет, потому что и смысла в ней особо не видно. А перевод блюпринтов в C++ в прошлом году был реализован.
Насчет того, что UE1(2) был непонятен я в корне несогласен. Тогда популярным движком для разработки был Квейк, а это Radiant или QuArK (Quake Army Knife) - кто в них работал, тот знает, какой это адский геморрой. UE по скорости работы покрыл их как бык овцу, но платой за это был перелом в методологии построения уровня - вместо добавления мешей "твердой" геометрии в "пустоту", надо было работать булевыми операциями на "твердым" изначально пространством. Но компилирование уровня (bsp + лайтмапы) занимал в десятки раз меньше времени, чем в Кваке. И про С тогда особо не думали - на скриптах и триггерах можно было собрать черта лысого.