Вътре в енджина на Hytale: техническо задълбочаване в изобразяването, физиката и производителността

By HytaleCharts Team Category: technical 9 min read

Техническо изследване на архитектурата на енджина на Hytale, обхващащо техниките за рендиране, физичните системи и оптимизациите, които правят възможни мащабните светове.

Зад всяка велика игра се крие мощен двигател и Hytale не прави изключение. Техническата основа на този амбициозен проект премина през бурно пътуване - от обещаващ Legacy Engine до злополучен пренапис на C++ и обратно. Но какво точно кара двигателя на Hytale да работи? Това задълбочено изследване на конвейера за рендиране, физичните системи и оптимизациите, които захранват света на Orbis. Принципът за изобразяване: Вокселите се срещат с модерната графика Визуалната идентичност на Hytale се определя от нейния уникален художествен стил - геометрия, базирана на воксели, с естетика на ръчно рисуване. Постигането на тази визия при запазване на производителността изисква сложни техники за рендиране. Рендериране, базирано на парчета Подобно на Minecraft, Hytale разделя своя свят на чаркове - отделни части от света, които могат да се зареждат и разтоварват самостоятелно. Реализацията на Hytale обаче включва няколко постижения: Променливи размери на парчетата: За разлика от фиксираните парчета 16x256x16 в Minecraft, Hytale може да оптимизира размерите на парчетата въз основа на плътността на съдържанието. Оптимизиране на мрежата: Скритите лица между съседни блокове се изчистват на ниво мрежа, което драстично намалява броя на полигоните. LOD (ниво на детайлност): Отдалечените блокове се визуализират с опростена геометрия, като се запазва силуетът и същевременно се намалява натоварването на графичния процесор. Система за осветяване Осветлението в Hytale отива далеч отвъд простото разпространение на светлината в Minecraft: ФактураОписаниеВлияние върху производителността Глобално осветяванеНепряко отразена светлина за реалистични интериориСреден Волуметрична мъглаАтмосферни ефекти с божествени лъчиНиско-Средно Динамични сенкиРазхвърляне на сенки в реално време от всички източници на светлинаСредно-високо Ambient OcclusionКонтактни сенки в ъглите и пукнатинитеНиско Архитектура на шейдъра Hytale използва модерен отложен конвейер за рендиране, който разделя обработката на геометрията от изчисленията на осветлението. Това позволява: Стотици динамични светлини без влошаване на производителността Ефекти за последваща обработка (разцвет, цветово градиране, дълбочина на рязкост) Бъдеща разширяемост за поддръжка на трасиране на лъчи Инструментът за физика: отвъд сблъсъка на блокове Въпреки че вокселните игри традиционно се отличават с опростена физика, Hytale въвежда системи, които позволяват сложни взаимодействия. Система от компоненти на същността (ECS) с Flecs Интеграцията на Flecs, високопроизводителна Entity Component System, революционизира начина, по който Hytale обработва игровите обекти: Традиционно ООП: Всяка същност (играч, зомби, стрела) е обект с наследено поведение, което води до пропуски в кеша и лоша паралелизация. Подход на ЕСС: Субектите са просто идентификатори. Компонентите (позиция, скорост, здраве) се съхраняват в съседни масиви от паметта, които се обработват в насипно състояние от системите. Практическите ползи включват: 10x бройки същности: Обработва едновременно хиляди NPC-та, снаряди и частици. Многонишковост: Системите могат да обработват различни типове компоненти паралелно в различните ядра на процесора. Детерминистична симулация: По-лесно реализиране на системи за физика и възпроизвеждане, които се управляват от сървъри. Откриване на сблъсъци Системата за установяване на сблъсъци на Hytale поддържа: Вокселен сблъсък: Стандартен блок-базиран сблъсък за геометрията на света. Mesh Collision: Прецизен сблъсък за потребителски модели и сложни форми. Тригерни обеми: Невидими зони, които откриват присъствието на обекти за скриптиране. Физика на куклата: Динамични анимации на смъртта и взаимодействия с околната среда. Мрежова архитектура: Модел клиент-сървър Hytale е изграден от нулата за мултиплейър, със стабилна архитектура клиент-сървър. Дизайн на принципа на сървъра Сървърът на Java е източникът на истината за цялото състояние на играта: Anti-Cheat: Клиентите не могат да променят директно здравето, позицията или инвентара. Детерминизъм: Всички клиенти виждат едно и също състояние на играта, което предотвратява десинхронизацията. Мащабируемост: Логиката на сървъра може да бъде разпределена между множество процеси. Оптимизиране на мрежата ТехникаЦел Делта компресияИзпраща само променени данни, а не пълно състояние Управление на интереситеСинхронизирайте само същности, свързани с всеки играч Предвиждане на клиентаНезабавен местен отговор със съгласуване със сървъра Пакетиране на пакетиКомбиниране на множество актуализации в единични предавания Управление и оптимизация на паметта Разработката на огромен процедурен свят с хиляди същности изисква внимателно управление на паметта. Поток от елементи Светът на практика е безкраен, но паметта не е. Hytale реализира: Предвидимо зареждане: Първо се зареждат частите в посоката на движение на играча. Разтоварване на заден план: Отдалечените парчета се компресират и се прехвърлят на диска. Пулове с памет: Предварително разпределената памет за общите типове обекти премахва режийните разходи за разпределяне. Поток на активи Текстурите, моделите и звуците се зареждат динамично: Атласи на текстури: Множество текстури, опаковани в единични изображения, намаляват извикванията за рисуване. Мипмап стрийминг: Първоначално зареждайте текстури с ниска разделителна способност, а след това ги прецизирайте при необходимост. Приоритизиране на аудиото: Само най-важните звуци се декодират напълно. Архитектура на моделирането Инструментът е проектиран с разширяемост като основен принцип: Дейности, управлявани от данни: Повечето съдържание на играта е дефинирано в JSON, а не в код. Най-бързо презареждане: Променяйте активите, без да рестартирате играта. Изпълнение в пясъчна кутия: Модовете се изпълняват в изолирани среди за сигурност. Слоеве на API: Чисто разделение между вътрешните елементи на енджина и интерфейсите за модифициране. Цели за производителност Въз основа на комуникациите с разработчиците и наследството на Legacy Engine, очакваните характеристики на производителността: Метрични показателиЦелеви показателиЗабележки Скорост на кадрите60 FPS @ 1080pНа препоръчителен хардуер Разстояние на гледане32 парчетаКонфигурируемо в зависимост от хардуера Брой на елементите1000+ на парчеС оптимизациите на ECS Време за зареждане< 30 секундиИнициално генериране на света Заключение Двигателят на Хайтале е резултат от години на итерации и трудно извоювани уроци. Връщането към наследения енджин не беше стъпка назад - това беше признание, че функционалната, оптимизирана основа струва повече от теоретичните бъдещи възможности. За играчите това означава игра, която работи добре на скромен хардуер, като същевременно осигурява визуална достоверност и сложност на геймплея, които тласкат напред вокселния жанр. За модърите това означава архитектура, проектирана от първия ден, за да бъде разширявана, модифицирана и трансформирана в напълно нови преживявания. Инструментът е готов. Светът на Orbis очаква.