Just a week after the holidays, well rested, I already made few important changes in Xash3D FWGS.
1. There is no more
This logic led to a confusion, most players don't know about
Now it has been completely reduced to converting only when both
As a bonus,
It's still to possible to generate this file, as it remains the main _native_ game definition format for Xash, with documented console command
As a second bonus, we don't create folders in read-write storage when RoDir is used anymore (RoDir is an engine feature that allows to separate read-only and read-write storage). The game folder structure is now created on demand.
2. While I was testing my patch on Quake game directories, I tried to load Dimension of the Past from Quake's re-release in QuakeWrapper. It works fine, some stuff is broken, but in the same way as in the typical Quake fork.
Loading new episode's levels requires BSP2 support from the engine. Xash3D already supports BSP2, but it is implemented as a compile-time macro. Compiling the engine with this macro defined and without it is a pain in the ass and a waste of time even for programmers. Now imagine users who don't know or don't care how these computers work...
The reason why it is a compile-time macro, is that BSP2 requires some internal structures to be larger. This however has a drawback as it breaks compatibility with a few Half-Life mods that like to poke inside engine's structures.
Now, the engine will expand these internal structures on demand, when user attempts to load BSP2 map. This doesn't fix compatibility issues for these advanced HL mods, but at least allows using BSP2 from the same engine binary without recompiling anything.
1. There is no more
liblist.gam to gameinfo.txt convert mechanism. Almost. Xash3D uses gameinfo.txt to allow extra options for mods, and previously generated this file from GoldSrc's liblist.gam on the fly if the file was too old or didn't exist.This logic led to a confusion, most players don't know about
gameinfo.txt and continue modifying liblist.gam. New game definition file is just a useless clutter in the game directory for them, some mods, even unknowingly, shipped an outdated and broken game definition file.Now it has been completely reduced to converting only when both
gameinfo.txt and liblist.gam exist, but liblist.gam has newer modification time for those who rely on this feature. Though it's now deprecated, and might be dropped in the future.As a bonus,
gameinfo.txt isn't generated anymore for Quake game directories, which should be good for those using QuakeWrapper... I hope that isn't just two people: me and Mike. :)It's still to possible to generate this file, as it remains the main _native_ game definition format for Xash, with documented console command
fs_make_gameinfo.As a second bonus, we don't create folders in read-write storage when RoDir is used anymore (RoDir is an engine feature that allows to separate read-only and read-write storage). The game folder structure is now created on demand.
2. While I was testing my patch on Quake game directories, I tried to load Dimension of the Past from Quake's re-release in QuakeWrapper. It works fine, some stuff is broken, but in the same way as in the typical Quake fork.
Loading new episode's levels requires BSP2 support from the engine. Xash3D already supports BSP2, but it is implemented as a compile-time macro. Compiling the engine with this macro defined and without it is a pain in the ass and a waste of time even for programmers. Now imagine users who don't know or don't care how these computers work...
The reason why it is a compile-time macro, is that BSP2 requires some internal structures to be larger. This however has a drawback as it breaks compatibility with a few Half-Life mods that like to poke inside engine's structures.
Now, the engine will expand these internal structures on demand, when user attempts to load BSP2 map. This doesn't fix compatibility issues for these advanced HL mods, but at least allows using BSP2 from the same engine binary without recompiling anything.
👍1😁1
Спустя неделю после праздников, отдохнувши, я успел сделать пару важных изменений в Xash3D FWGS:
1. Движок больше не конвертирует
Такое поведение часто приводило к путанице, так как большинство игроков не знают про
Теперь этот механизм сокращен до конвертации только если есть оба
Как бонус,
Сгенерировать этот файл все ещё возможно со специальной командой
Второй бонус для тех кто пользуется RoDir (функция движка позволяющая разделить папки только для чтения и папки с возможностью записи): движок больше не создает тучу папок в месте для записи, а только это делает по мере необходимости.
2. Пока я тестировал это изменение на папках от Quake, я захотел попробовать загрузить новый эпизод из последнего ремастера в QuakeWrapper. Он работает нормально, примерно настолько же, насколько работали бы форки кваки времени выхода ремастера.
Карты от нового эпизода скомпилены в BSP2 формат. Xash3D поддерживает BSP2, но чтобы включить его поддержку надо специально пересобрать движок из исходного кода, что может быть пустой тратой времени даже для программиста, не говоря уже об обычных пользователях которые не знают или которым всё равно как работают эти ваши компьютеры.
Причина по которой требуется пересборка — это то, что BSP2 требует расширения некоторых внутренних структур движка. Недостаток в том, что это ломает совместимость с некоторыми хитрыми модами для Half-Life которые взаимодействуют с движковыми структурами.
Теперь движок сам автоматически расширяет эти структуры по необходимости, когда загружается BSP2 карта. Это не дает исправляет проблемы с совместимостью, но хотя бы позволяет пользоваться одной и той же сборкой движка.
1. Движок больше не конвертирует
liblist.gam в gameinfo.txt. Почти. Xash3D все ещё использует gameinfo.txt`для расширенных опций для модификаций. Ранее он генерировал этот файл из `liblist.gam если его либо не существовало, либо он был слишком старым по сравнению с liblist.gam.Такое поведение часто приводило к путанице, так как большинство игроков не знают про
gameinfo.txt и продолжают редактировать liblist.gam. Этот новый файл для них только создает шум в папке игры и некоторые модификации даже выходили в релиз с этим файлом, устаревшим или поломанным. Теперь этот механизм сокращен до конвертации только если есть оба
gameinfo.txt и liblist.gam, и второй имеет модифицирован позже, на случай если кто-то полагается на это поведение. Но в будущем и это поведение может быть окончательно удалено.Как бонус,
gameinfo.txt больше не создается для папок с Quake, что может быть удобно для тех кто использует QuakeWrapper... надеюсь это не только два человека: я и Дядя Миша. :)Сгенерировать этот файл все ещё возможно со специальной командой
fs_make_gameinfo, про которую написано в документации.Второй бонус для тех кто пользуется RoDir (функция движка позволяющая разделить папки только для чтения и папки с возможностью записи): движок больше не создает тучу папок в месте для записи, а только это делает по мере необходимости.
2. Пока я тестировал это изменение на папках от Quake, я захотел попробовать загрузить новый эпизод из последнего ремастера в QuakeWrapper. Он работает нормально, примерно настолько же, насколько работали бы форки кваки времени выхода ремастера.
Карты от нового эпизода скомпилены в BSP2 формат. Xash3D поддерживает BSP2, но чтобы включить его поддержку надо специально пересобрать движок из исходного кода, что может быть пустой тратой времени даже для программиста, не говоря уже об обычных пользователях которые не знают или которым всё равно как работают эти ваши компьютеры.
Причина по которой требуется пересборка — это то, что BSP2 требует расширения некоторых внутренних структур движка. Недостаток в том, что это ломает совместимость с некоторыми хитрыми модами для Half-Life которые взаимодействуют с движковыми структурами.
Теперь движок сам автоматически расширяет эти структуры по необходимости, когда загружается BSP2 карта. Это не дает исправляет проблемы с совместимостью, но хотя бы позволяет пользоваться одной и той же сборкой движка.
Started to write a documentation on GoldSource APIs, mostly figured out by reading Xash3D, Half-Life SDK and a lot of decompiled code.
(I'm not the best technical writer, but you still can support me by donating at https://boosty.to/a1ba)
For now, there isn't much of it, only client.dll exports and initialization process is described, but I plan to make it into a proper book through the course of this year, explaining the engine functions set, the way how prediction and lag compensation works, the SDK additions GoldSrc got, the engine behavior mods rely on, so in theory some advanced Quake fork might be able to implement it without resorting to reading decompiled code.
In the future, I want to be able to use this to drop Xash3D dependency on proprietary Half-Life SDK header files.
It is published at https://github.com/FWGS/xash3d-fwgs/tree/apidocs/Documentation/api
(I'm not the best technical writer, but you still can support me by donating at https://boosty.to/a1ba)
For now, there isn't much of it, only client.dll exports and initialization process is described, but I plan to make it into a proper book through the course of this year, explaining the engine functions set, the way how prediction and lag compensation works, the SDK additions GoldSrc got, the engine behavior mods rely on, so in theory some advanced Quake fork might be able to implement it without resorting to reading decompiled code.
In the future, I want to be able to use this to drop Xash3D dependency on proprietary Half-Life SDK header files.
It is published at https://github.com/FWGS/xash3d-fwgs/tree/apidocs/Documentation/api
👍3
Потихоньку начал писать документацию по API голдсорса, выученного по коду Xash3D, Half-Life SDK и куче декомпила.
(Технический писатель из меня так себе, но вы всё равно можете поддержать меня на Boosty, ссылка в описании группы)
Пока что ничего кроме описания экспортов и порядка инициализации client.dll не описано, но я планирую за этот год превратить это в полноценную книгу, объясняя функции движка, работу предиктинга, прочие обновления SDK, поведение движка на которое полагаются моды, чтобы в теории какой-нибудь продвинутый форк Quake мог сделать свою реализацию без оглядки на сдекомпилированный код.
В будущем, я бы хотел этим воспользоваться чтобы заменить им проприетарные заголовочные файлы, которые сейчас использует Xash3D.
Опубликовано в https://github.com/FWGS/xash3d-fwgs/tree/apidocs/Documentation/api
(Технический писатель из меня так себе, но вы всё равно можете поддержать меня на Boosty, ссылка в описании группы)
Пока что ничего кроме описания экспортов и порядка инициализации client.dll не описано, но я планирую за этот год превратить это в полноценную книгу, объясняя функции движка, работу предиктинга, прочие обновления SDK, поведение движка на которое полагаются моды, чтобы в теории какой-нибудь продвинутый форк Quake мог сделать свою реализацию без оглядки на сдекомпилированный код.
В будущем, я бы хотел этим воспользоваться чтобы заменить им проприетарные заголовочные файлы, которые сейчас использует Xash3D.
Опубликовано в https://github.com/FWGS/xash3d-fwgs/tree/apidocs/Documentation/api
GitHub
xash3d-fwgs/Documentation/api at apidocs · FWGS/xash3d-fwgs
Xash3D FWGS engine. Contribute to FWGS/xash3d-fwgs development by creating an account on GitHub.
👍5❤1
To combat an old Half-Life bug with cut-off dlights on overly scaled textures, I've introduced a radius multiplier for dynamic lights, so we can enable lighting on the neighbor surfaces as well.
This however has a problem by actually lighting up too many surfaces that do not receive any lighting, potentially hurting the performance.
... Until I found a fix for that in JoeQuake, which seems has been taken from FitzQuake, which attributes LadyHavoc, best known for DarkPlaces engine. It exactly checks whether the surfaces receive any lighting or not, which turned out to be perfect for my case here.
Below are comparison screenshots. The surfaces that are marked for lighting by flashlight are highlighted with red color.
This however has a problem by actually lighting up too many surfaces that do not receive any lighting, potentially hurting the performance.
... Until I found a fix for that in JoeQuake, which seems has been taken from FitzQuake, which attributes LadyHavoc, best known for DarkPlaces engine. It exactly checks whether the surfaces receive any lighting or not, which turned out to be perfect for my case here.
Below are comparison screenshots. The surfaces that are marked for lighting by flashlight are highlighted with red color.
Чтобы побороть древний баг Half-Life с обрезанными динамическими источниками света на масштабированных текстурах, я добавил параметр множителя радиуса у этих источников света, чтобы пометить для освещения и соседние поверхности.
Однако, такое простое решение имеет крайне серьёзный недостаток, естественно для освещения помечается слишком много поверхностей, потенциально ухудшая производительность.
И такое исправление я бы не добавлял, если в процессе исследования исходного кода JoeQuake я не нашел исправление этого недостатка, которое видимо перетекло из FitzQuake, который в свою очередь приписывает авторство LadyHavoc, разработчике DarkPlaces. Нехитрой математикой они ещё в функции отмечающей поверхности для освещения проверяют насколько они действительно освещены, что идеально подошло для моего случая.
В посте выше прикреплены скриншоты для сравнения. Поверхности отмеченные для освещения этой функции специально выделены красным.
Однако, такое простое решение имеет крайне серьёзный недостаток, естественно для освещения помечается слишком много поверхностей, потенциально ухудшая производительность.
И такое исправление я бы не добавлял, если в процессе исследования исходного кода JoeQuake я не нашел исправление этого недостатка, которое видимо перетекло из FitzQuake, который в свою очередь приписывает авторство LadyHavoc, разработчике DarkPlaces. Нехитрой математикой они ещё в функции отмечающей поверхности для освещения проверяют насколько они действительно освещены, что идеально подошло для моего случая.
В посте выше прикреплены скриншоты для сравнения. Поверхности отмеченные для освещения этой функции специально выделены красным.
👍3
Starting today, Xash3D FWGS master servers located at ms.mentality.rip:27010, ms2.mentality.rip:27010 and ms3.mentality.rip:27010 do not accept servers from versions older than 0.19.2.
Soon it will be reduced to 0.19.4 (tyabus's old engine fork), and after that, all servers running on 48 protocol won't be allowed anymore.
==============================
Начиная с сегодня, мастер-сервера Xash3D FWGS размещенные по адресам ms.mentality.rip:27010, ms2.mentality.rip:27010 и ms3.mentality.rip:27010 больше не принимают сервера с версией старее 0.19.2.
Вскоре минимальная версия для сервера поднимется до 0.19.4 (форка старого движка от tyabus) и в будущем все сервера на 48-ом протоколе будут запрещены.
Soon it will be reduced to 0.19.4 (tyabus's old engine fork), and after that, all servers running on 48 protocol won't be allowed anymore.
==============================
Начиная с сегодня, мастер-сервера Xash3D FWGS размещенные по адресам ms.mentality.rip:27010, ms2.mentality.rip:27010 и ms3.mentality.rip:27010 больше не принимают сервера с версией старее 0.19.2.
Вскоре минимальная версия для сервера поднимется до 0.19.4 (форка старого движка от tyabus) и в будущем все сервера на 48-ом протоколе будут запрещены.
👍5😢2❤🔥1
As an experiment, minimum client version requirement on our master servers has been increased to 0.19.4 (tyabus's old engine fork).
All users are advised to upgrade to latest engine version available at GitHub: https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous
============================
В качестве эксперимента, требование к минимальной версии клиента было повышено до 0.19.4 (форк старого движка от tyabus).
Всем пользователям рекомендуется обновиться до последней версии движка доступной на GitHub: https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous
All users are advised to upgrade to latest engine version available at GitHub: https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous
============================
В качестве эксперимента, требование к минимальной версии клиента было повышено до 0.19.4 (форк старого движка от tyabus).
Всем пользователям рекомендуется обновиться до последней версии движка доступной на GitHub: https://github.com/FWGS/xash3d-fwgs/releases/tag/continuous
🔥8😢5❤3👏1
Не совсем про разработку, тем более мне пока некогда заниматься чем-то крупным, но всё-таки не могу не поделиться этим проектом.
Ребята сделали порт уже на основе нового движка, и хотя он отстает от апстрима на три года, все равно играется довольно неплохо. К тому же есть даже уникальные фичи, типа асинхронной загрузки ресурсов. Сорцов, в отличии от, тоже не пожалели: https://github.com/okhmanyuk-ev/customized-xash3d
Ребята сделали порт уже на основе нового движка, и хотя он отстает от апстрима на три года, все равно играется довольно неплохо. К тому же есть даже уникальные фичи, типа асинхронной загрузки ресурсов. Сорцов, в отличии от, тоже не пожалели: https://github.com/okhmanyuk-ev/customized-xash3d
GitHub
GitHub - okhmanyuk-ev/customized-xash3d: Xash3D FWGS engine
Xash3D FWGS engine. Contribute to okhmanyuk-ev/customized-xash3d development by creating an account on GitHub.
❤🔥4👀2
Forwarded from Пятьдесят Четвёртый 🎮
HALF-LIFE 🎮 : Deathmatch в браузере
Сегодня мы с командой DosZone Team со всей любовью и радостью представляем долгожданное возвращение доработанной браузерной версии классического динамичного шутера HALF-LIFE: Deathmatch. Мультиплеер без заморочек теперь доступен везде и всем!
ИГРАТЬ В HALF-LIFE: Deathmatch🕹
Заходим по ссылке, пишем никнейм, выбираем сервер и сразу в бой!
Особенности проекта:
- Проект полностью сохранил дух оригинала предлагая фанатам чистый экшен без компромиссов, а уважение к наследию серии чувствуется в каждой детали
- Более 10 серверов с аренами до 32 игроков
- Знаменитые карты, такие как Crossfire, Stalkyard и Bounce
- Система достижений
- Рейтинговая таблица лучших игроков
- Работает в браузерах на Windows, Linux, MacOS, iOS и Android
- Сетевые битвы доступны без регистраций, смс, рекламы и прочей не прикольной фигни
Залетаем с двух ног отстреливать админа 🫡
Сегодня мы с командой DosZone Team со всей любовью и радостью представляем долгожданное возвращение доработанной браузерной версии классического динамичного шутера HALF-LIFE: Deathmatch. Мультиплеер без заморочек теперь доступен везде и всем!
ИГРАТЬ В HALF-LIFE: Deathmatch
Заходим по ссылке, пишем никнейм, выбираем сервер и сразу в бой!
Особенности проекта:
- Проект полностью сохранил дух оригинала предлагая фанатам чистый экшен без компромиссов, а уважение к наследию серии чувствуется в каждой детали
- Более 10 серверов с аренами до 32 игроков
- Знаменитые карты, такие как Crossfire, Stalkyard и Bounce
- Система достижений
- Рейтинговая таблица лучших игроков
- Работает в браузерах на Windows, Linux, MacOS, iOS и Android
- Сетевые битвы доступны без регистраций, смс, рекламы и прочей не прикольной фигни
Залетаем с двух ног отстреливать админа 🫡
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2
Как и планировалось ранее на осень, ограничил на ms.mentality.rip и ms2.mentality.rip все сервера и клиенты ниже версии 0.21.
Удаление поддержки 48-ого протокола запланировано на эту зиму.
Удаление поддержки 48-ого протокола запланировано на эту зиму.
Вообще, давно я тут ничего не писал, да и не сказать что последнее время есть возможность что-то делать по движку, в основном все сделано, протестировано и отлажено нашими как старыми, так и новыми, контрибьютерами:
Из недавнего:
* Задокументировал out-of-band часть протокола: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/protocol/02-connectionless.md
* Движок теперь умеет монтировать _hd, _lv, _addon и папки с локализацией.
* В режиме совместимости с GoldSrc протоколом исправлен dproto, работает голосовой чат и кастомные лого.
* Включена по умолчанию поддержка ffmpeg в Windows и Linux x86 сборках. Поддержка опциональная, движок будет работать и при отсутствии дллок ffmpeg
Из недавнего:
* Задокументировал out-of-band часть протокола: https://github.com/FWGS/xash3d-fwgs/blob/master/Documentation/protocol/02-connectionless.md
* Движок теперь умеет монтировать _hd, _lv, _addon и папки с локализацией.
* В режиме совместимости с GoldSrc протоколом исправлен dproto, работает голосовой чат и кастомные лого.
* Включена по умолчанию поддержка ffmpeg в Windows и Linux x86 сборках. Поддержка опциональная, движок будет работать и при отсутствии дллок ffmpeg
GitHub
xash3d-fwgs/Documentation/protocol/02-connectionless.md at master · FWGS/xash3d-fwgs
Xash3D FWGS engine. Contribute to FWGS/xash3d-fwgs development by creating an account on GitHub.
🔥7❤3
Forwarded from XashNT (Михаил Александрович)
Новый трейлер легендарного долгостроя в жанре post-apocalyptic action от Креозота. Игра разрабатывается на Xash3D FWGS.
https://youtu.be/np1ev4dfJEA
https://youtu.be/np1ev4dfJEA
YouTube
IONIZATION - Announcement Trailer
Stand-alone Half-Life mod - Early Access is available now for free.
moddb.com/games/ionization/downloads/ionization-free-early-access-version-102-engrus
Oktyabrsk, a once-closed town that served as the cradle of scientific and military elites, is now in…
moddb.com/games/ionization/downloads/ionization-free-early-access-version-102-engrus
Oktyabrsk, a once-closed town that served as the cradle of scientific and military elites, is now in…
🔥7👀2❤🔥1
