Энциклопедия Half-Life
Advertisement
Энциклопедия Half-Life
Clipboard sheet2 Это заготовка статьи. Вы можете помочь проекту, исправив и дополнив её.


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 не находились в свободном доступе.

Aquote1 Изначально совместимость с GoldSource не планировалась совсем. Предполагалось использовать только похожий формат моделей, а всё остальное было бы совершенно несовместимо. При этом движок позиционировался, как очередной Generic Engine многоцелевого назначения. Однако три года разработки в очередной раз показали полную несостоятельность такого подхода, поскольку разработка движка в отрыве от конкретной игры, занятие очень увлекательное, но совершенно бессмысленное. Не имея возможности протестировать движок даже на стабильность 10-минутного геймплея (просто по причине его отсутствия) его код понемногу обрастал багами, выявить которые на паре-тройке тестовых карт не представлялось возможным по определению. В то же время многие пользователи, видя определенное сходство с движком GoldSource (главным образом из-за схожего формата моделей), просили меня переписать исходный код движка таким образом, чтобы движок оказался полностью совместимым с Half-Life и его модами. И вот, в конце апреля — начале мая 2010 года, разработка движка полностью сменила направление и взяла курс на полную совместимость с GoldSource. Положение осложнялось ещё и тем, что исходников GoldSrc не было в свободном доступе. Поэтому воссоздание исходников происходило, опираясь на общеизвестные факты о происхождении GoldSource, построенном на симбиозе Quake, QuakeWorld и Quake II, чьи исходники, как известно, давно открыты и находятся в свободном доступе. Частично пробел помогли восполнить Half-Life SDK с игровой частью кода, частично — Source SDK. Ну и наконец, когда этой информации оказывалось недостаточно, недостающие сведения добывались методом «черного ящика» при помощи оригинального GoldSource. Метод, вкратце, заключается в том, что в движок посылается некий набор данных, после чего возвращается нечто, уже обработанное движком и на анализировании значений входных и выходных данных делаются предположения о логике работы. Подтверждением того, что я двигаюсь в правильном направлении, служили игры, которые выглядели и работали совершенно одинаково, как на GoldSource, так и на Xash3D.
— Дядя Миша
Aquote2

Своё название движок получил 31 декабря 2004 года:

Aquote1 Когда я выбирал название для будущего движка, хотелось придумать короткое непереводимое слово, по аналогии с SONY. Из нескольких вариантов остановился на Xash. Правда, как потом оказалось, название перекликается с грузинскими блюдами и звёздными войнами, но на тот момент я об этом ничего не подозревал.
— Дядя Миша
Aquote2

Отличия от 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[]

Галерея[]

Ссылки[]

Игровая механика
Основное HUD · Здоровье и урон
Настройки сложности Half-Life · Half-Life 2
Игровые движки GoldSrc (Xash3D) · Source · Source 2
Баги Бесконечное пополнение здоровья · Ускорение коллизией · Ускоренная распрыжка задом · Распрыжка · Телепортация NPC
Разное Hammer Units · Warpball · Консоль разработчика · Консольные команды
Advertisement