Рубрика развивается при поддержке
Gamedev
Valentine Shchekin
9182

Жертвы ради Nintendo Switch

Что приходится вырезать ради портативности.

В закладки
Аудио

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

Спустя четыре года работы моя игра Never Again вышла в Steam. Это был май 2019-го, а уже 30 января 2020-го состоится её релиз на Nintendo Switch. Учитывая, что я никогда не планировал релиз на этой консоли, портирование принесло немало трудностей.

​Скриншот из порта игры Never Again для Nintendo Switch

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

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

Целью было добиться на гибриде стабильных 30 FPS. Чтобы оценить, насколько трудной станет эта задача, я запустил Never Again на девките вообще без какого-либо вмешательства в структуру игры. Пусть она поработает, словно бы это ПК.

​Как же это было долго...

Если не брать в расчёт две бесконечности: сборку движка и компиляцию шейдеров под весь проект, запустить игру на консоли удалось с первого раза. Запущенное приложение встретило меня изумительными… 0 FPS. По ощущениям картинка менялась раз в час, а по факту на CPU было 6000 мс. Оптмизация предстала передо мной в виде хитрого ребуса, разгадать который оказалось той ещё задачей. Но по истечению двух недель, которые я занимался портированием 24/7, этот первый этап перестал казаться чем-то сокрушительным и неразрешимым.

Если вы столкнетесь с такой же проблемой, вот первый совет:

Важный совет №1. Полностью отключаем симуляцию физики одежды Apex Cloth.

Чтобы это понять и запрофайлить игру на Switch, пришлось накрутить такие костыли, что об этом мне не позволяет рассказывать NDA. В целом, это наконец заставило меня глубже разобраться с профайлингом в Unreal Engine 4.

​Прощай, красивое платьишко

Ура! Never Again полноценно запускается на Switch, и можно даже пройти игру, но все еще с большим трудом — вилка fps была от 10 до 15. Идей, что с этим делать, у меня было не так уж и много…

Я отключил тяжелые постпроцессы (Depth of field, Motion Blur (не понимаю, кому вообще нравится этот эффект ;)), Ambient Occlusion и так далее. За последний я очень боролся и не хотел выключать, т.к. картинка очень сильно менялась не в лучшую сторону. Но ради оптимизации придется потерпеть.

Затем пришло время сказать «до свидания» и сглаживанию. Отключил. Но его отсутствие я решил немного компенсировать понижением Resolution Scale в ручном режиме до 66.66%, а в консольном — до 80%.

Далее я настраивал разрешение экрана для консольного режима, установив 1920х1080 (меньше — не круто), а для портативного режима ограничился 1280х720. С разрешением у меня возник казус, полностью перевернувший моё представление о портировании. Но об этом — в конце.

Данные настройки помогли поднять fps до вилки от 18 до 24, что, в каком-то смысле, даже приемлемо для прохождения, но всё ещё не круто. Перфекционист внутри меня бил кулаком по столу и требовал стабильности.

Настало время убивать графику

Первое, что пришло в голову — отключить траву. Начальная локация в Never Again — освещенная детская комната, через окно которой видно улицу. А там, в свою очередь, уже куча источников света, порождающих огромное количество теней. Я не мог их запечь в силу обстоятельств, о которых можно написать целую отдельную статью. Освещение должно было оставаться стационарное (полудинамическое). Больше нигде в игре травы нет, так что жалеть её я не стал.

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

На скриншотах можно заметить, что последняя картинка какая-то зернистая. Нет, это не низкое разрешение скриншота, это Dithering (Дитеринг).

Важный совет №2. Забываем о режиме Translucent. Прозрачные материалы делаем с помощью режима Masked + Dither.

Зачем это нужно? Видеокарте очень тяжело рендерить прозрачные материалы — нужно максимально облегчить ей эту задачу. Тут два варианта: либо вообще убрать прозрачность, либо зафейкать её с помощью дитеринга. Результат получается не идеальный, но вполне приемлемый:

​В консольном режиме такое стекло выглядит на удивление хорошо

Это, конечно, сильно разгружает GPU, но сказать, что вызывает бурный скачок FPS — нельзя. Тем не менее это ещё один маленький камешек в фундамент оптимизации.

Далее я начал профайлить GPU и увидел, что львиную долю мс занимает освещение. А если конкретно — тени. Это, конечно, очевидно, а ещё более очевидно, что нужно с этим что-то делать. Я полез смотреть на то, как реализованы тени в других 3D-играх на Switch. Наиболее привлекательной мне тогда казалась графика у Outlast. Интересно, как они справились с тенями?

​Очень качественный порт

Динамические тени оказались очень низкого разрешения. Это наблюдение сняло с меня груз ответственности и позволило сделать так же.

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

Я нигде не настраивал Cull Distance, так как знал, что движок хорошо справляется с этим сам: всё, что находилось вне кадра, не рендерилось. Моя игра коридорна, все действие разворачивается в замкнутых пространствах, и у меня не было никакой необходимости настраивать дальность отрисовки.

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

Первым делом под руку попались физические объекты.

В Never Again много физики, что для Nintendo Switch — не очень хорошая новость, так как любая физика — серьёзная нагрузка на процессор. В целом, физические объекты были достаточно оптимизированы ещё для ПК: когда они валялись без дела, то погружались в сон и тем самым переставали нагружать процессор. К таким объектам можно отнести куски от кукол в пещере, которыми я завалил весь пол. Число таких объектов пришлось сократить, чтобы уменьшить количество их столкновений друг с другом.

​Наверное, я — больной ублюдок, раз решил вообще в эту игру физику вставить...

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

Важный совет №3. Используйте физику в играх разумно, а лучше — вообще от неё откажитесь.

Вот мы и дошли до логики.

Я начинал разрабатывать игру с очень низкими навыками программирования. Я на ходу изучал возможности Blueprints, и это дало о себе знать при портировании.

За четыре года разработки накопилось очень много фундаментальных ошибок, исправление которых, особенно в квестах и кат-сценах, могло сделать игру непроходимой. Пару лет Never Again была в «раннем доступе», и всё это время я упорно возводил шаткую башню из костылей. И если в Steam при обнаружении пользователем бага я мог моментально перезалить билд и всё исправить, то со Switch такое не прокатывает: каждое обновление тщательно проверяется, и это занимает немало времени. Поэтому переписывать код было опасно. Проще отрезать функции, которые не влияют на геймплей.

Первое, на что нужно обратить внимание — как много у вас процессов на EventTick, нет ли нагромождения логики, которая беспрерывно выполняется каждый кадр. В целом, я за этим следил, но все же такое место в игре у меня было…

Каждый кадр срабатывали три LineTrace, которые определяли координату под каждой ногой и туловищем персонажа, чтобы красиво сгибать ноги в зависимости от рельефа поверхности, на которой стоит главная героиня (Inverse Kinematics). В связи с этим, следующий важный совет.

Важный совет №4. Как можно меньше используем LineTrace с большим количеством логики, тикающий каждый кадр.

Стоило мне убрать IK, как сразу высвободилось 7 мс с CPU, и игра стала изредка выдавать желанные 30 FPS.

На этом моменте я застрял, ведь больше откручивать было нечего… Все, что осталось — попробовать включить Forward Shading.

Что это значит? Помните, в начале статьи я говорил, что боролся за близкий моему сердцу постпроцесс Ambient Occlusion? Дело в том, что Forward Rendering был придуман для VR игр. Он отключает некоторые тяжёлые визуальные эффекты и тем самым в разы уменьшает нагрузку как на GPU, так и на CPU. Ambient Occlusion, соответственно, тоже был отключен.

Сразу бросилось в глаза, что вместе с Ambient Occlusion перестали отображаться декали. Я заменил декали на плейны с текстурой, и это было нетрудно. По Ambient Occlusion я горевал до тех пор, пока первый раз не зашоукейсил игру на Nintendo Switch. Игроки ничего странного в визуале не увидели и в целом охарактеризовали порт как «красивый».

Помните, я упомянул про казус с разрешением экрана? Я долго не мог понять, почему в проекте после перехода на Forward Rendering FPS поднялся до небес, а в консоли все также оставалось от 25 до 30 FPS. Проблема оказалась в Device Profiles: я неправильно указал смену разрешений для ручного режима и консольного. После исправления я почувствовал великое облегчение, статистика показала эпичные 55 FPS в меню, вместо стабильных 30, за которые я боролся две недели.

Да, записал гифку с видоса записанного на телефон, что такого?

Тут можно было бы и закончить, но есть ещё пара моментов, на которые нужно обратить внимание.

Важный совет №5. Уменьшаем размер текстур.

Крупные текстуры — распространённая ошибка, которой мне удалось избежать по причине особенности стиля игры и слабого компьютера. Но, тем не менее, многих эта ошибка может коснуться. Я поставил себе ограничение, что размер текстур не должен превышать 1024х1024, а чаще всего использовал вообще 512х512. Помните: размер памяти у Nintendo Switch — не безграничный.

Важный совет №6. Пользуйтесь Blueprint Interfaces.

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

В целом, это всё. Можно было бы ещё рассказать про прохождение всех проверок билда компанией Nintendo, но это совсем другая история, и прячется она под NDA. Все обладатели Switch смогут увидеть плод моей боли, пота и слез в Nintendo eShop уже 30 января 2020 года.

Never Again - Nintendo Switch Trailer
{ "author_name": "Valentine Shchekin", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442","nintendoswitch"], "comments": 123, "likes": 184, "favorites": 161, "is_advertisement": false, "subsite_label": "gamedev", "id": 87169, "is_wide": true, "is_ugc": true, "date": "Fri, 13 Dec 2019 18:29:41 +0300", "is_special": false }
Проект в сеттинге киберпанка
Вакансия Game Designer
я с вами!
0
123 комментария
Популярные
По порядку
Написать комментарий...
–3

Идеальный баланс

Ответить

Первоначальный бокал

56

Очень круто. Спасибо за статью.
 Все обладатели Switch смогут увидеть плод моей боли

Первый раз прочитал как "плод моей ебли". Судя по посту это недалеко от правды хD

Ответить
31

Не могу не вставить свои 5 копеек
Небольшая памятка для правильной оптимизации без урезаний в UE4:
1)По освещению - старайтесь не пересекать множество лайтов друг с другом; избегайте по возможности поинт лайтов (вместо них споты); избегайте волюметрик опций (это дорогая вещь);
2) Используете запеченный свет - для каждого меша делайте свое разрешение лайтмапы, саму лайтмапу делайте руками; лайтмапа разрешением до 254 как максимум
3)Используете динамическое освещение - подходите к каскадным теням с умом - максимальное качество включайте только перед игроком, выключайте полностью тени на удалении (используйте вместо них Mesh Distance Field - увеличите память, но не потеряете в качестве)
4)Для мобильных платформ максимум треугольников в сцене 300к
5)Если используете много растительности и маскированных материалов - включайте Early Z-Pass
6)Не используйте сложную коллизию
7)Ограничивайтесь в количестве материалов на один меш - каждый наложенный материал это доп. drawcall
8)Используйте HLOD - займет больше памяти но снизит нагрузку
9)Текстуры в редком случае делают 4К разрешения (даже в AAA проектах), 2К вполне хватает;
метод компрессии ETC (не учитывает альфа канал), либо ATC;
текстуры собирайте в атлассы с использованием RGB каналов (порой в одну атлас-текстуру 2К можно всунуть 12 текстур 1К)
10)Ambient Occlusion работает через пост процесс (как и TAA и FXAA), поэтому его можно оптимизировать настройками оттуда.
TAA дорогая вещь и с ним есть много проблем, но по соотношению качество/скорость он лучше чем MSAA, который нормально себя показывает только в 8кратном режиме
Для мобилок лучше использовать FXAA либо MSAA 2x
11)Используйте динамическое разрешение (последние версии движка это поддерживают)
12)Не делайте много блюпринтов на сцене в игре. Все блюпринты обсчитываются каждый фрейм вне зависимости используете вы Event Tick или нет (Event Tick только еще больше нагружает систему)
13)Forward Rendering будет лучшим решением только если у вас в сцене мало источников света, иначе сделаете только хуже

Ответить
1

В закладки. Что на счет multi res shading? На бумаге и в одной игре - очень годная штука

Ответить
0

Можно про пункт 12 поподробнее. Первый раз от таком слышу.

Ответить
21

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

Ответить
3

Я уже вижу как чувак не шарящий в код совсем и собиравший игру в blueprints, которые кода вообще не требуют лезет в низкоуровневый код C++ и гибнет в пожаре спровоцированном собственным горящим пердаком. В статье много ценного для начинающих ниндзь и за такое стоит сказать "спасибо".

Ответить

Основной лолипоп

20

Что приходится вырезать ради портативности.

На самом деле не так много если занимается хорошая команда
Порт Alien Isolation это отлично показывает ибо местами игра выглядит даже лучше чем на фатке XONE/PS4

Ответить

Основной лолипоп

Основной
8
Ответить
11

Кажется эта команда просто халтурила на Ps4, а не старалась на Switch.

Ответить

Основной лолипоп

Slava
6

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

Ответить
3

на PS4 халтурила другая команда, а не та, что делала порт

Ответить
10

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

Ответить
18

Необходимость приложить усилия.

Ответить
2

Разработчик 

Ответить
–43

Не "хоррора", а УЖАСТИКА.
Берегите НАШ язык и культуру.
Своя уникальная культура - это конкурентное преимущество на мировой медийной арене.
(примеры - Курвак, аниме)

Ответить
15

А слово "Ужастик" точно к нашей культуре относится? Само слово "ужас" точно не заимствованное?

Ответить
–4

Да. Слово славянское.

Ответить

Короткий холод

Meis
14

Культура, уникальный, конкурент, медийный, арена.  Вот эти слова тоже замените.

Ответить
–12

Проблема не в заимствованиях как таковых, проблема в тех заимствованиях, что ВЫТЕСНЯЮТ НАШИ РОДНЫЕ СЛОВА.

Ответить
5

Наверное, еще и именам греческим надо сказать нет. А то загадили русскую землю!!

Ответить
–6

Не передёргивайте.
Пока что речь идёт о заимствованиях 20-го - 21-го века, которые вытесняют наши родные слова! С этим можно и нужно бороться, в том числе на государственном уровне, как делают в Европе, в частности в Прибалтике.
Со старыми заимствованиями вероятно уже бесполезно бороться. Но это не значит, что надо терять свой язык и культуру ещё больше!

Ответить
5

Нет, идите вы в /dev/ass с такими двойными стандартами. Весь русский язык XX-XXI века возможен только потому, что такие как ты сидели на сеновале максимум, а не бугуртили, что нахрен польские, немецкие и прочие заимстования. Русский язык без "мусора" - это убогий язык, который просто ни на что не способен. Потому не надо разделять на "когда можно было засрать язык" и "когда нельзя". Хочешь русский язые почти как до XX века - ну так езжай в деревню глухую, желательно к сектантам типа староверов. Вот они-то точно дрочат хер-знает на что (на век эдак XVII-XVIII, тебе как раз). И да, наше наследие в мире - балалайка, водка, балет, ушанка. Было бы что оберегать от тлетворности внешнего мира...

P.S. Как же рвало бы пукан у тебя, если бы в твое время ять выпиливали и прочий мусор... Правда тогда высказаться было сложновато... Плак-плак...

Ответить
–7

Так и просрём нашу культуру.
Воинствующая безграмотность, что тут сказать.

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

Ещё раз объясняю - заимствования сами по себе не плохи, плохо вытеснение и отмирание СВОИХ УНИКАЛЬНЫХ слов.

Ответить
7

А чем ценна наша культура? ПОТОМУ ЧТО НАША, КУДАХ? Посмотри как жили славяне до того, как произошел фап на европу и до азиатского виляния. НАША культура - это влияние европы и азии уникальное, но ничего прикольного в ней нет. Пока каждый народ дрочит на какую-то уникальность - всегда будет анус, потому что разделяй и властвуй.

плохо вытеснение и отмирание СВОИХ УНИКАЛЬНЫХ слов

Если они отмирают - туда им и дорога, как и отмиранию языков, которые никому нахуй не упали. Язык - это явление живое, а не вот то говно, на которое дрочат аутисты как ты. Да и ты нихрена не поймешь РУССКИЙ язык лет 300+ назад. Знаешь почему? ПОТОМУ ЧТО, О УЖАС, ОТМИРАЛИ СЛОВА ИСКОННО РУССКИЕ. Челом о земь уебись, сектант сраный. Каждый говорит как хочет, благо таких большинство. Подохнут совки-нормотворцы - придут именно они писать нормы языка. Так что лучше сразу убейся о стену)

Ответить

Короткий холод

Алексан…
3

Совершенно верно. Могу немного добавить:

Все мировые культуры, разве что кроме изолированных голожопых в лесах амазонки, активно заимствовали другие культуры и внедряли в свою. Японцы очень много взяли из Китая, но все ими восхищаются, Китай - плавильный котёл из десятков и сотен народов и их культур, вся Европа растащила на куски древний Рим, который спёр культуру у греков, которые вдохновлялись ещё более древними культурами покорённых народов.

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

Ответить
–1

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

Ответить
6

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

Ответить
5

Жаль тебя не было 100-200-300-и т.д. лет назад и язык уже не уберегли.

Ответить
–5

То, что язык уже полон заимствований, не значит, что надо делать ЕЩЁ хуже.
Аналогия с панельными домами, которые уничтожили часть исторической застройки. Что, теперь надо оставшиеся деревянные дома снести, потому что несовременно??
А может лучше сохранить и преумножить то, что осталось?

Ответить
8

Язык не может стать лучше или хуже.

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

Ответить
1

Это не всегда возможно, но стоит хотя бы пытаться.

Ответить

Странный щит

5

Спасибо за статью. Было интересно почитать о вашей оптимизации. Жалко что ценообразование для российских пользователей не завозят даже местные разработчики) Боитесь что зарубежные пользователи(которые составляют основной костяк рынка Нинки) скупят ее используя VPN или русские аккаунты?

Ответить
4

вообще, хотелось бы от автора прочитать ещё отдельную статью именно про ценообразование

Ответить
–6

Мы посмотрели на другие игры и решили попробовать не делать региональные цены, все просто. А итоговая цена в долларах не изменилась, в стим игра стоит так же $14

Ответить

Возрастной утюг

Valentine
18

В целом, конечно, правильно, на порт было потрачено много сил, которые стоило бы оплатить, но 900 рублей за игру ниже среднего c геймплеем на 2 часа выглядит абсурдно, как ни посмотри.

Ответить

Странный щит

Valentine
2

Ситуация измениться? Хотелось бы заценить оптимизацию, но как то не хочется в такую цену. 

Ответить
–1

Посмотрим как пойдет, точнее сказать не могу. Будут же еще скидки и тд и тп

Ответить
–6

Т.е вы сделали кусок говна, о чем тут написали 3 простыни, а потом типа ну вон там на западе же просят кучу лавэ, а чем мы хуже?!

Ответить

Первоначальный бокал

Странный
0

Ценообразованием же занимается издатель?

Ответить

Странный щит

Первоначальный
4

Писал тут разрабам из европки, они снизили цену в РУ регионе.

Ответить
0

А издатели типа как-то отдельно от разрабочиков существуют?

Ответить
–5

Вам за такую халтуру деньги просить не стыдно на свитч?

Важный совет №3. Используйте физику в играх разумно, а лучше — вообще от нее откажитесь.

То-то в Зельде и в Луиджи отказались от всякой физики, я смотрю.

Ответить

Колоссальный череп

Станислав
7

Таки да. Теперь я понимаю, как появляются порты уровня Arc, Mutant Year Zero, A Hat in Time. Всё обрезать, заставить хоть как-то работать обрезок и сразу в продажу. 
С одной стороны хорошо, что Нинтендо дала дорогу инди-разработчикам. С другой стороны половину из них стоит выставить из Ешопа вон.

Ответить
6

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

Ответить
3

Ради справедливости обращу ваше внимание на то, что я тоже от физики не отказался)

Ответить
1

Ты сравниваешь большую игровую студию с многолетним опытом с инди-разработчиком. Кто из них сможет лучше в разработку игр?

Ответить
1

Кто из них сможет лучше в разработку игр?

Иногда проскальзывают сомнения...

Ответить
4

Даже страшно представить, что делали сэйбер портируя ведьмака

Ответить
2

А ты не видел это мыльцо?) хотя лучше бы и не видеть (фанаты Ведьмака и свитча не обижайтесь, но это так) 

Ответить
4

Мыльняк 3: Дикий FPS

Ответить
1

😂😂Точняк

Ответить
0

В портативе более чем нормально выглчдит, да в свиче железо как у пс3. В доке на телеке там приличное мыло, но в портативе очень даже достойно

Ответить
0

В портативе. Я про портатив ничего не сказал, я в принципе сказал что он мыльный

Ответить
0

Так очень многие берут порты мультиплатформы(часто не самой свежей) на свич ради портативного режима.

Ответить
0

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

Ответить
0

Свич старший сделан для гибрида, а не для телека=)

Ответить
3

Спасибо за статью, очень интересно.
Буду благодарен, если ответите на мои вопросы:
1. Работали ли вы с оптимизацией количества Draw Calls и оптимизацией шейдеров/материалов/моделей?
2. Предоставляет ли Nintendo какие-либо гайды по портированию ПК-игр на Switch в плане оптимизации?
3. Уменьшение размеров текстур до 512х512 - сильный ли прирост даёт этот шаг? Не пользовались ли вы пакованием текстур в канвасы?
4. Не возникло ли проблем при портировании управления с ПК на Switch?
5. "Фундаментальные ошибки" и "башни из костылей", выросшие за 4 года - много ли вы потеряли на них в плане оптимизации?
6. Как происходит выпуск патчей на Switch? Теперь вам нужно исправлять и дорабатывать Switch-версию параллельно с ПК?

Ответить
5

1. Да, я использовал инстансы и для статичных мешей, например пещера у меня сделана целиком из одного камня. И  в материалах старался делать как можно меньше инструкций. В целом за 4 года для ПК версии я сделал много в плане оптимизации изучая приемы, которые используют разработчики мобильных игр.
2. Не буду рисковать, пусть это будет под NDA. Скажу только, что вас не бросят на произвол, но и ощущение, что я единственный кто делает порт на свитч, а вокруг никто ничего не знает, у меня было.
3. Сильный, чем меньше текстура, тем лучше, но лучше делать 2к, а в движке их можно ужать до 512, и если понадобится вернуть все обратно. За счет мелких текстур у меня размер билда в стим 1Гб, а в свич 700мб. Атласы не делал, а вот в каналы карты паковал.
4. С управлением проблем не было, т.к. я изначально для ПК сделал полную поддержку контроллера. Играть немного не удобно, но это из-а особенностей джойконов.
5. Ну например у меня в логике катсцен и квестов много используется GetAllActorsOfClass, другой вопрос что вызывается это не постоянно, но иногда при срабатывании фпс просидал. О коде лучше думать заранее.
6. Ну если какая-то серьезная ошибка, то в стим я ее исправлю быстро, а вот с нинкой все сложно, поэтому параллельно точно не получится.

Ответить
2

Спасибо за ответы!

Ответить
0

4. С управлением проблем не было, т.к. я изначально для ПК сделал полную поддержку контроллера. Играть немного не удобно, но это из-а особенностей джойконов.

Что насчет уникальных фич контроллера? Гироскопы, HD-вибрация, IR-камера.

Ответить
4

Автор молодец что прошел такой путь, успешных продаж тебе)
Но то что описано по факту хорошо использовать и учитывать на всех платформах)

Ответить
2

Спасибо!)

Ответить
1

Охуеть, за ЭТО просить 900 рублей. Даже 300 рублей, как в случае со стим версией - много. А 900 - это вообще край наглости

Ответить
1

специалист по ценобразованию?

Ответить
3

Ты в игру-то играл, друг ироничный? Я вот играл, и из-за багулины даже до конца пройти не смог, а желание перепроходить с нуля игра совсем не вызывает, хоть и длится от силы 2 часа

Ответить
1

Вы бы купили эту игру за 900 рублей?

Ответить
0

На нинтендо и не за такие деньги покупают даже игры гораздо проще.

Ответить
4

Эм нет не правда. На Нинтендо за 900р можно купить отличную игру.
а это не надо даже в Стиме за 300

Ответить
0

Это все же не ответ на вопрос. Я прекрасно знаю что там и за какие цены продается. Говна везде хватает, но и отличных игр за эту сумму (плюс/минус пару сотен) достаточно. И если большинство игр от зарубежных авторов - там ещё можно списать на то что им нет дела до региональных цен. То тут авторы явно знают про материальный достаток среднего геймера. Мне потому и интересно, купил бы лично комментатор ваше эту игру за эту сумму. Судя по всему он считает региональную цену справедливой.

Ответить
5

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

Ответить
4

Чет вы пытаетесь сострить, но свои же слова не обдумываете. Вы говорите, что выставляя региональные цены в Стиме разработчики пытаются обобрать нас до последнего. Но вы же сами выставили в Стиме региональную цену, разве не так?

Ответить
0

Вы все правильно поняли)

Ответить
6

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

Я могу предположить, чтобы вы так байтитесь на тему цены, потому что вам очень нравится игра и вы хотите ее купить, но не хватает денег (Sarcasm). В целом я не верю что вы так переживаете за благосостояние российских игроков, будто моя игра это то, без чего русские жить не могут, как импортное лекарство в аптеке. Моя игра - это просто контент для развлечения и все, если вам не нравится или вам кажется слишком дорого, хорошо, не покупайте, я же вас не заставляю. Я лишь сделал игру и придумал к ней цену, а дальше уже рынок покажет справедливо это или нет. 

Больше эту тему не вижу смысла обсуждать.

Ответить
4

В портативе на маленьком экране все равно не заметно (c)

В самолете должно быть отлично (c)

Цитаты великих людей

Ответить
3

Такие статьи прям глоток свежего воздуха  среди слухов, желтухи и рекламы на дтф. Спасибо за материал !

Ответить
0

как вообще получить заветный девкит?

Ответить
1

Надо зарегаться на сайте Нинтендо как разраб, сходу тебе дадут только девкит для консолей <= 3ds. Питчишь им игру, демки, дизайн доки, релизнутые на других платформах версии. Если тебя аппрувят - дают доступ к девкиту на свитч

Ответить
0

а как тогда эксклюзивы инди делают, такие как Touryst, чисто питчингом?

Ответить
0

у Тебя должен был быть какой то опты.
показываешь доки Нинтендо. Они разрешают делать что то на их консоль.

если ты хороший разраб и не делаешь говно то даже помогут 

Ответить
0

Купи в магазине

Ответить
2

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

Ответить
0

И прям бесплатно? Можно на девките играть в другие игры?

Ответить
1

Крч, я сам не понял как это работает, вот ссылка https://dtf.ru/gamedev/83782-kak-vypustit-svoyu-igru-na-nintendo-switch

Ответить
0

Что было в предыдущих двух комментариях?

Ответить
0

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

Ответить
1
Ответить
0

(удалено) 

Ответить
0

(удалено) 

Ответить
0

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

Ответить
0

В статье нет ничего о том КАК получить девкит свича )

Ответить
0

0я ответил на вопрос человека, статья тут не причем

Ответить
0

Potato Switch Mode

Ответить
1

Да ну не правда)))

Ответить
0

А как вы сделали динамические отражения, если не секрет? Это же ад как дорого. 

Ответить
1

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

Ответить
0

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

Ответить
0

Потому что надо побыстрее выкатить порт на Свитч - они же там все говноеды, любое инди готовы скушать, плевать на качество, лишь бы в портативе. Очевидно же.

Ответить
1

Жалко что в реальности там огромная конкуренция игр и такое говно проходит мимо

Ответить
0

У него карта слабая, поэтому он и не запёк, я в своих моделях тоже не запекаю именно из-за того что надо долго ждать (GT 630)

Ответить
0

Я думал анрил на ЦП печет? Ну и если обычные лайтмапы запечь удалось, то и АО в них добавить не проблема) Я уж молчу о том, что автор уже 2 года продает игру в стиме и на новый комп, полагаю, заработал :)

Ответить
0

Наврядли, сужу по Блендеру и Максу, у nvidia cuda ядра очень многие компании поддерживают, быстрее намного запекают чем процессор. Хотя опять же, могу ошибаться.

Ответить
0

Ну вот Swarm вроде бы на ЦП печет... А я на Unity в последнее время использую Bakery, на GPU скорость конечно феноменальная.

Ответить
0

Может добавление запечённых текстур как-то может повлиять на код игрушки, от этого и не добавил теперь.

Ответить
0

Это как?)

Ответить
0

Я в программирование очень слаб, так что высказываю лишь предположение))

Ответить
1

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

Ответить
0

Тогда может сам создатель напишет про причины)

Ответить
0

Swarm Agent is a CPU intensive process that requires a lot of calculations. If you’re only using your local machine, a good CPU and lots of RAM can improve build process time. - из документации. Ага, ЦП и оперативу ему надо. Но он тоже шустрый.

Ответить
0

Я так понял в статье имелся ввиду АО на постпроцессах

Ответить
0

Привет Валь, а ты не пробовал батчить геометрию вручную + HLODS + Импостеры? Это бы оч сильно облегчило CPU (ценой памяти, но порой цена не так высока как выйгрышь в MS CPU)

И таки почему не смог запечь статику по свету?)

Ответить
0

Я когда-то видел биошок на 5 или 6 айфоне и он выглядел не сильно хуже

Ответить
0

Автор, спасибо за статью, желаю удачи с продажами) 
Статью можно использовать как гайд по оптимизации под свитч)  

Ответить
0

То, ради чего я читаю этот раздел. Боль и её преодоление!

Ответить
0

А как вы сделали динамические отражения, если не секрет? Это же ад как дорого. 

Ответить
0

Обязательно куплю твою игру

Ответить
0

Спасибо, очень познавательно! Я в принципе был уверен все это время, что с Blueprints дальше хиленького прототипа не уехать и потому даже не смотрел пока в строну UE т.к. шарю средне только C#. Вдохновляющая история, очень круто :)

Ответить
0

Хотелось бы почитать про процесс презентации продукта Nintendo Europe и следующее получение консоли, слышал, что в СНГ они не отправляют Devkit'ы. И может быть еще про некоторые трудности и особенности, например получение возрастных рейтингов для разных регионов.

Ответить

Прямой эфир

{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }