Комментарии 13
Genshin Impact на Unity сделан? Пойду ребенку расскажу, чтобы дурью не маялся.
Ну нормально, я автору плюс в карму, а мне минус за вопрос...
Вроде как китайцы купили лицензию на сорцы и переделали часть потрохов (динамическая бесшовная загрузка локаций, рендеринг и работа с LOD), чтобы могло работать как надо, так что это не совсем тот самый Unity.
Загрузка локаций там совсем не бешовная - при входе в подземелья и интерьеры возникает лоадер-бар - явно загружается отдельная сцена. Именно по рендерингу не видел ничего такого, что нельзя было бы сделать на Scriptable Pipeline. Но думаю что возможность купить сорцы у китайцев точно есть)), так что могли что-то и переписать
ну инстансы(слово которым пользуются игроки) да, могут быть отдельной сценой, такое же тоже есть, сам мир поидее на этапе загрузки ради нормалей и материала(колизийного) можно смержить вроде, как мне кажется, но поделив его на квадранты ну смотря еще какая практика тесселяция/не теселяция (может я ошибаюсь но пока кажется что лучше всё вживить в 1 кусок материала(террейна) по которому можно ходить, и крыши домов ради статичного вопроса коллизии частиц или хождения, тогда вопрос коллизии упрощается до нужного квадрата и мин/макса(по ближайшей высоте текущей координаты )мне пока так кажется, тоесть некая поверхность в пространстве с выделеными поверхностями где можно ходить соотв там в нужном масштабе(кучность) нормали(для высоты) в нужном положении, поэтому и лоад-бары на инстансах я думаю там идет вот этот момент потомучто если так осуществить на этапе загрузки по факту решается вопрос статичных коллизий )(может тут есть нюансы а они есть, по крайней мере в том исполнении что я видел, но там нагрузка минимальная по сравнению с расчетом (по формуле по террейну)) на С++ грузил проверял кучность проверял определение высоты от кучности вообще не верил своим глазам по сравнению с формулой просто летит
кучность нормалей(на 1 квадратик который состоит из 2 треугольников) ну тоесть не 4 нормали а допусти 20
ошибся не кучность а всё таки 4 нормали

и вот получается по этой высоте ходить дешевле чем по расчету (тут у меня мапа не поделена и всё равно почему то не грузит, и можно ходить - когда я такое увидел просто фантастика, особенно после той формулы на каждый кадр)(для меня это было открытием вообще. честно был шок)
Загрузка локаций там совсем не бешовная
Собственно загрузка происходит в нескольких случаях - загрузка катсцены/скрипта, подгрузка подземелий (коими в том числе являются и некоторые дома, типа чайного домика в Инадзуме), вход другого игрока в мир и быстрое перемещение между локациями. В остальном можно пробежать из одного края карты в другой абсолютно без загрузок. На тот момент не существовало нормальных механизмов, которые позволяли бы проворачивать нормальную бесшовность в Unity. Именно это они и допиливали в том числе, чем вызвали восторг множества других разработчиков.
что нельзя было бы сделать на Scriptable Pipeline
Учитывая сколько лет самой игре многих возможностей и оптимизаций под мобильные устройства могло попросту не существовать. Плюс у них есть порт под Playstation, который вроде как китайцы допиливали совместными усилиями с командой Unity. Тамошний пайплайн отличается от того что используется не десктопе/мобилках.
А чем плох unity? Современный, мощный 3d двигатель) иль вы думали это что-то вроде майнкрафта ахаха
Как так же разбираться в юнити и в целом в программировании? Сколько раз я не пробовал, столько же раз и забрасывал. Сейчас делаю с помощью ИИ, но не оставляет в покое то, что это написал не я и сам бы я этого в жизни не написал
тогда есть общий гайдлайн по основным наводящим пунктам. он еврестически найден - не принимайте за чистую монету но имеет место быть:
матеша - векторы, матрицы, кватернионы
вершины, треугольники, квадраты, линии, точки - в пространстве
две матрицы проекции 2D/3D**
матрица вида
построение буфера желательно соприкоснуться лично с отрисовкой тоесть - это этап про пока математику как вектор матрица и кватернион превращается в 3матрицу*(матрица модели, матрица вида, матрица проекции - какая последовательность)
планомерно понять как найти матрицу нормали от модели, нужно для света
плоские операции двумерности(картинки из 2д в 1 мерную последовательность)
ну на старте вам должно этих чаптеров хватить
соотв вы сразу подтяните базу так как вам преодолеть базову отрисовку и понять основные операции через юниформы воздействуя на вершины и смешивание цветов внутри вершин - тоесть шейдеры, тоесть путь чтоб понять построение 3д не тривиален но там есть уже гайдлайн четкий, тут стоит вопрос на что вы будете обращать внимание и сразу ли переварите всю инфу
*при участии вершин
**1 матрица проекции на модель
соотв API даёт доступ к отрисовке +- путь матеша-3д одинаковый разные только API
Конкретно в этой статье больше не юнити и программирование, сколько знание компьютерной графики, шейдеров и конвейера отрисовки. Обычные программисты на юнити (которые программируют геймплей) даже с большим стажем не суются в эту область без надобности.
Разбор рендеринга в Unity, часть вторая: посмотрим на Genshin Impact