Это заготовка статьи. Вы можете помочь проекту, исправив и дополнив её. |
Xash3D — игровой движок, почти полностью совместимый с GoldSrc. Xash3D написан на основе исходных кодов таких движков, как Quake engine, Id Tech 2, Id Tech 3 и DarkPlaces.
Движок позволяет запускать большинство игр и модов на GoldSrc, но, в отличие от последнего, обладает существенными улучшениями.
История разработки[]
Разработка Xash3D началась в конце 2004 года. Поначалу Xash планировался как движок, реализующий потенциал движка Source (Half-Life 2) в Half-Life. Курс на совместимость с GoldSrc движок взял только в мае 2010 года. Разработку сильно затрудняло то, что исходники GoldSrc не находились в свободном доступе.
Изначально совместимость с GoldSource не планировалась совсем. Предполагалось использовать только похожий формат моделей, а всё остальное было бы совершенно несовместимо. При этом движок позиционировался, как очередной Generic Engine многоцелевого назначения. Однако три года разработки в очередной раз показали полную несостоятельность такого подхода, поскольку разработка движка в отрыве от конкретной игры, занятие очень увлекательное, но совершенно бессмысленное. Не имея возможности протестировать движок даже на стабильность 10-минутного геймплея (просто по причине его отсутствия) его код понемногу обрастал багами, выявить которые на паре-тройке тестовых карт не представлялось возможным по определению. В то же время многие пользователи, видя определенное сходство с движком GoldSource (главным образом из-за схожего формата моделей), просили меня переписать исходный код движка таким образом, чтобы движок оказался полностью совместимым с Half-Life и его модами. И вот, в конце апреля — начале мая 2010 года, разработка движка полностью сменила направление и взяла курс на полную совместимость с GoldSource. Положение осложнялось ещё и тем, что исходников GoldSrc не было в свободном доступе. Поэтому воссоздание исходников происходило, опираясь на общеизвестные факты о происхождении GoldSource, построенном на симбиозе Quake, QuakeWorld и Quake II, чьи исходники, как известно, давно открыты и находятся в свободном доступе. Частично пробел помогли восполнить Half-Life SDK с игровой частью кода, частично — Source SDK. Ну и наконец, когда этой информации оказывалось недостаточно, недостающие сведения добывались методом «черного ящика» при помощи оригинального GoldSource. Метод, вкратце, заключается в том, что в движок посылается некий набор данных, после чего возвращается нечто, уже обработанное движком и на анализировании значений входных и выходных данных делаются предположения о логике работы. Подтверждением того, что я двигаюсь в правильном направлении, служили игры, которые выглядели и работали совершенно одинаково, как на GoldSource, так и на Xash3D. — Дядя Миша
|
Своё название движок получил 31 декабря 2004 года:
Когда я выбирал название для будущего движка, хотелось придумать короткое непереводимое слово, по аналогии с SONY. Из нескольких вариантов остановился на Xash. Правда, как потом оказалось, название перекликается с грузинскими блюдами и звёздными войнами, но на тот момент я об этом ничего не подозревал. — Дядя Миша
|
Отличия от GoldSrc[]
Основные отличия[]
- Отсутствие модульной архитектуры.
- Код движка на чистом Си (GoldSrc — на C/C++).
- Поддержка подгрузки ресурсов по необходимости (в GoldSrc — только прекэширование).
- Поддержка BSP-карт как для Half-Life, так и для Quake и Blue Shift.
- Независимость от «родной» директории Half-Life (папка «
valve
») — директория мода может быть указана в лаунчере, при необходимости. Благодаря этому, имеется возможность создавать свою собственную самостоятельную игру. - Независимость от WAD-архивов, не используемых в данный момент на карте.
- Поддержка цветных сообщений в консоли (через тег «^»).
- Поддержка «горячего» изменения текстур скайбокса без рестарта карты.
- Поддержка 3D-скайбоксов.
- Поддержка высококачественных текстур.
- Поддержка зеркал.
- Поддержка параллакс-маппинга, нормаль-маппинга и бамп-маппинга (в GoldSrc-играх не используется).
- Использование улучшенной системы резки пространства на листы (VisLeafs), позволяющей увеличить FPS и уменьшить количество отрисовываемых полигонов.
- Расширенные лимиты на ресурсы, которые можно изменить под нужды модификации через файл
gameinfo.txt
. Уменьшение лимитов может сохранить больше оперативной памяти в тех модификациях, в которых не требуется много эдиктов (серверных энтити). Параметр MAX_EDICTS также передаётся с сервера во время мультиплеерной сессии, что позволяет подгонять клиентов под новые условия автоматически. - Выделенные физический и графический интерфейсы для предоставления большей функциональности.
- Наличие интерфейса для реализации собственного рендера с использованием OpenGL.
Сравнение лимитов[]
Лимит | Xash3D | GoldSource |
---|---|---|
Максимальное количество серверных энтити | 4096 | 900 |
Максимальное количество временных энтити | 2048 | 500 |
Максимальное количество частиц | 8192 | 4096 |
Максимальное количество лучей | 512 | 64 |
Максимальное количество видимых энтити в пакете | 512 | 256 |
Максимальное количество прекэшируемых моделей и спрайтов | 2048 | 512 |
Максимальное количество прекэшируемых звуков | 2048 | 512 |
Максимальное количество записей для чтения предложений, составленных из слов | 2048 | 1534 |
Максимальное количество сообщений пользователя (дополнительные сообщения для протокола внутри игровых dll) | 191 | 128 |
Максимальное количество загруженных текстур | 4096 | 2048 |
Количество сообщений в titles.txt
|
2048 | 1024 |
Максимальный размер индексированных текстур | 4096х4096 | 512х512 |
Максимальный размер полноцветных текстур | 4096x4096 | Не поддерживается |
Максимальное количество моделей на карте | 1024 | 256 |
Максимальное количество VisLeafs | 32767 | 8192 |
Совместимость[]
Совместимость движка с GoldSource составляет приблизительно 90 %. Это значит, что подавляющее большинство модификаций и игр под движок GoldSource должны корректно работать под Xash3D без каких-либо доработок, однако из-за протокольной несовместимости, движок не может подключаться к серверам на GoldSource. Под Xash проверено множество одиночных модификаций для оригинального GoldSource, большая часть которых работает абсолютно правильно и идентично тому, как они делают это в GoldSource. Исключение составляют игры, которые были спроектированы под Steam-версию GoldSource, поскольку используют недокументированные особенности движка, что значительно затрудняет их адаптацию (используют библиотеки VGUI2, библиотеки Steam и прочие модули движка).
Движок поддерживает работу Metamod и AmxModX, с его плагинами. Мультиплеерные модификации движок также поддерживает, однако имеется ряд подсистем, которые требуют дописывания или улучшения.
Производные движка[]
Так как движок распространяется под свободной лицензией GNU GPL v3, сторонними разработчиками были предприняты попытки образования форков. На данный момент известны следующие ответвления:
- Xash3DEx — ответвление от движка с некоторыми исправлениями. Разработка полностью остановлена.
- Xash3D FWGS (ранее Xash3D SDL) — кроссплатформенное ответвление от проекта с использованием Simple DirectMedia Layer, разработанное командой Flying With Gauss. Полностью поддерживаются Windows, Linux и Android, присутствует поддержка FreeBSD, Mac OS X, iOS, Emscripten. Получил широкую огласку после представления портированной игры от Valve (Counter-Strike). Позже Xash3D FWGS лёг в основу проекта Lambda1VR - порта первой части Half-Life, адаптированной для шлемов "Oculus Quest" и "Pico 4".
- vitaXash3D — ответвление, созданное с целью портирования движка на платформу PlayStation Vita. Основано на ответвлении Xash3D FWGS.
- Xash3D Magenta — проект по переносу кодовой базы движка на C++ и модульную архитектуру. В текущее время не поддерживается.
- XashRT — ответвление Xash3D FWGS с добавлением трассировки лучей на основе библиотеки RTGL1. Для работы требуется видеокарта с поддержкой Ray Tracing и Vulkan.
Игры, использующие Xash3D[]
- Area 51
- Diffusion
- Half-Life: Year of the Dragon
- Meanwhile in Russia
- Paranoia 2: Savior
- Quake Remake
- Signal Lost
- METRO 2031: Last Chance
- The Last Bullet: Updated
Галерея[]
Ссылки[]
- Репозиторий Xash3D FWGS (New engine) 0.20.x на GitHub
- Репозиторий Xash3D FWGS (Old engine) 0.19.x на GitHub (НЕ ПОДДЕРЖИВАЕТСЯ)
- FWGS
- Репозиторий XashRT на GitHub
Игровая механика | ||
---|---|---|
Основное | HUD · Здоровье и урон | |
Настройки сложности | Half-Life · Half-Life 2 | |
Игровые движки | GoldSrc (Xash3D) · Source · Source 2 | |
Баги | Бесконечное пополнение здоровья · Ускорение коллизией · Ускоренная распрыжка задом · Распрыжка · Телепортация NPC | |
Разное | Hammer Units · Warpball · Консоль разработчика · Консольные команды |