XashNT
261 subscribers
78 photos
2 videos
28 links
XashNT: Блог Разработчика
Download Telegram
4. Завершение портирования игровой библиотеки на новый язык Shot и общая ревизия кода\ресурсов перед выходом очередной бета-версии. Как вы уже знаете, в XashNT есть собственный язык программирования, который будет использоваться для взаимодействия между разработчиком и движком. По аналогии с Unity, который для этого использует C#. Мне представляется что исходники игровой части на С++ очень сильно повышают порог вхождения, да и по целому ряду причин неудобны. Впрочем я обо всём этом уже упоминал выше. Игровое меню перенесено на новый язык, клиентская часть, отвечающая за рендеринг HUD - тоже. Теперь очередь за игровой частью, а так же за написанием механизмов интеракции с ней, непосредственно в ядре движка. К ним относятся физический симулятор, система сериализации объектов (сохранение и загрузка), а так же передача данных по сети и возможность чтения памяти игровых объектов из системы материалов. Здесь я могу сказать, что вероятнее всего этот пункт к выходу очередной беты не будет реализован полностью, но будет завершён уже непосредственно в процессе бета-тестирования, чтобы нам не пришлось иметь дело сразу с несколькими новыми системами - с одновременным освоением создания уровней под XashNT и сыростью игрового кода после портирования на новый язык (а это неизбежно в таких случаях). К тому же предполагается, что наличие виртуальной машины позволит автоматически создавать и обновлять fgd-файлы для JackHammer - их больше не придётся редактировать вручную. Но всё это появится уже после выхода очередной бета-версии, в процессе её тестирования.
Также хочу сказать спасибо всем моим подписчикам, кто не отписался и терпеливо ждал очередных новостей. Надеюсь сегодня ваше терпение было сполна вознаграждено :)
Для всех, кто терпеливо ожидал новостей, я наконец-то могу сказать, что у меня есть не только о чём написать, но и есть что вам показать. На XashNT был портирован первый Quake (первый эпизод). Это полноценная shareware версия, в которой я попытался показать некоторые возможности XashNT, которые вы не сможете увидеть ни в оригинальном Quake, ни в его многочисленных форках. Игровой код, а так же меню, полностью написаны на новом языке программирования Shot, Движок остаётся абстрактным и не содержит в себе никаких специфичных моментов, которые нужны конкретно для этой игры.
Оценить демку вы можете уже ставшим привычным способом - те, кто купил доступ к бета-версиям могут уже заходить и скачивать, те, кто ещё нет, могут это сделать прямо сейчас, инструкция здесь: https://hlfx.ru/forum/showthread.php?s=&threadid=5696
На данный момент здесь только демка для прохождения. Первые инструменты для работы с движком появятся в начале октября этого года, они будут включать в себя:
1. плагин для JackHammer
2. компиляторы ресурсов в форматы, понятные XashNT
3. компилятор исходных текстов языка Shot
4. подробную документацию
О дальнейших планах будет написано уже после выхода SDK.
Бета-тестирование первого showcase нового движка прошло вполне успешно - практически у всех бета-тестеров демо запустилось, корректно заработало и выдало играбельный фпс. Конечно на некоторых древних Интелах (встроенных) присутствуют некоторые проблемы, в целом не влияющие на работу. Их предстоит ещё устранить.
Следующий этап - первое знакомство с возможностями SDK. Впервые будут даны инструменты для редактирования.
Поскольку разработка собственного редактора была перенесена на следующий (2024-й) год, то на данный момент ограничимся плагином к JackHammer. Конечно из него не будут доступны все возможности, однако работать в таком режиме тоже возможно. К тому же система плагинов в Джеке довольно гибкая и позволяет подключать дополнительные возможности, включая те, на которые редактор изначально не рассчитывался.
Развитие плагина будет идти параллельно с написанием собственного редактора, так что вы всегда сможете выбрать, чем пользоваться.
Ориентировочно SDK будет включать в себя следующий набор:
1. плагин для JackHammer (платной стим-версии, для 32-х и 64х бит). К сожалению нет актуального API для бесплатной версии - оно слишком устарело.
2. компилятор уровней
3. компилятор освещения
4. компилятор языка Shot
5. окружение редактора для QuakeNT
6. SampleSDK с минимальным набором объектов и изолированной от QuakeNT средой, нечто вроде песочницы, для более простого знакомства с новым языком программирования.
7. Актуальная документация по движку и средствам разработки.
8. Мощный конвертор-мигратор ресурсов из старых игр в форматы, понятные XashNT. На данный момент он поддерживает три игры: Quake1, Quake2 (частично), Half-Life(частично).
К сожалению такие вещи как компилятор моделей, компилятор спрайтов-шрифтов пока что остаются "за кадром" - единственный способ получить эти ресурсы в актуальном формате только при помощи конвертора ресурсов. Для отладки мне потребуется так же написать универсальный просмотровщик ресурсов XashNT, который был начат в прошлом году. Когда просмотровщик будет создан, я выложу отлаженные компиляторы для моделей и спрайтов.
Из приятных новостей хочется отметить тот факт, что после выхода SDK вам больше не придётся ждать годами очередных новостей и обновлений - начнётся та самая работа с обратной связью, когда новые возможности будут добавляться, а ошибки исправляться в режиме диалога с актуальными бета-тестерами.
Выход SDK запланирован на конец октября 2023-го года. Оставайтесь на связи!
В рамках подготовки к выходу SDK вышло обновление QuakeNT.

Обновление включает в себя в основном графические улучшения: бамп, параллакс, PBR, так же введён экспериментальный режим полностью динамического освещения (правда пока без теней).

Те, кого интерисует именно визуал, могут ознакомиться с новой демкой, следуя инструкции: https://hlfx.ru/forum/showthread.php?s=&threadid=5696 Предыдущая версия так же будет им доступна.

Ну и немного скажу о фронте работ, который предстоит ещё проделать, перед выходом SDK.
1. Написание SampleSDK - это нечто вроде заглушки, который имеет минимальный набор кода, просто для примера. Будет включать в себя самые базовые вещи, типа физики игрока, пример подбираемого предмета, оружия в руках, триггера и двери. А так же простейший пример отрисовки худа и меню. Для тех, кто хочет досконально разобраться как создавать игровой код для XashNT с нуля или просто привык, что его всегда надо писать заново (как например в Unity).
Забегая вперёд хочу отметить, что в дальнейшем появится так же BaseSDK, который будет включать в себя полный набор объектов из XashXT, на случай если вы захотите перейти на новый движок с минимальными усилиями.
2. Тестирование компиляторов уровней на комплексной геометрии. Тут требуется отдельное пояснение. Я отдаю себе отчёт, что многих из вас движок интерисует в первую очередь, чтобы наконец-то уйти от брашевой геометрии и наконец-то делать всё моделями, но при этом сохранив ту простоту работы, которая многих привлекала в старых движках. Это всё возможно, однако в процессе создания демо QuakeNT, компиляторы уровней подверглись разнообразным множественным модификациям, в частности в них были добавлены лайтстили, матрицы видимости освещения, а так же различные режимы разбиения и объединения геометрии. Всё это требует дополнительного тестирования. Но к счастью не займет много времени.
3. Написание недостающей документации и обновление уже существующей. Как вы понимаете, мне предстоит написать хотя бы минимальное руководство по новому языку программирования Shot, а так же обновить уже существующую документацию, поскольку с последнего выхода беты (январь 2022-го года). многие вещи утратили актуальность или были изменены.
4. Предварительное тестирование SDK на особой группе юзеров. Попасть в эту группу нельзя, участники определены заранее. Чтобы как минимум была твёрдая уверенность, что работать с предложенными инструментами уже возможно.
5. Собственно первый релиз SDK для XashNT.
По срокам ориентирусь на конец октября, но сами понимаете - возможны некоторые непредвиденные задержки, как это часто бывает в разработке таких масштабных проектов.
Продолжаю работать над будущей версией первого SDK. Да, я помню, что обещал к концу октября, не всё получается по срокам, к сожалению. Но уже вышел на финишную прямую.

В этот раз вы можете протестировать демо, основанное на коде из будущего SDK. Точнее Sample SDK, который включает в себя минимальный набор кода, чтобы вы могли понять основные принципы работы с пользовательской кодобазой и увидеть наглядные примеры, как создавать те или иные элементы меню, обработчик пользовательских кнопок и контроллер передвижения игрока по уровню. А чтобы это не выглядело скучно, я так же добавил в пример систему смены времени суток и выполнил демку на картах из первой части Сталкер. В принципе этот пример максимально соответствует той погоде, которая была в оригинальной игре по умолчанию.
В прошлых демках уровни из сталкера так же присутствовали, но погода там не менялась, это был просто тест геометрии и освещения. Ну а здесь немного более интерактивно. Впрочем, повторюсь, что в первую очередь это тест кода из SampleSDK.

Ознакомиться с демкой можно по прежней схеме, следуя инструкции: https://hlfx.ru/forum/showthread.php?s=&threadid=5696
Ну а я в свою очередь выхожу на финишную прямую по подготовке релиза первого SDK. Расскажу о проделанной работе, пункты которой были намечены в предидущем посте:
1. SampleSDK создан. Правда пока без подбираемых предметов, но к выходу или после выхода SDK я их туда добавлю, возможно тут лучше ориентироваться на запросы пользователей, после их знакомства с исходниками.
2. Компиляторы успешно протестированы, ошибки исправлены. С момента выхода последней масштабной демо (январь 2022), в компиляторах было произведено два масштабных изменения: полноценная поддержка лайтстилей и новая система генерации патчей для непрямого освещения (старая система потенциально могла давать совершённо черные поверхности в некоторых случаях, а так же генерировала менее равномерную сетку). Соответственно, после внедрения этих изменений мне надо было всё протестировать.
3. Собственно, перехожу к написанию и обновлению документации (а так же внесению некоторых правок в исходный код движка, например удалению устаревшего кода, чтобы в дальнейшем не пришлось ломать совместимость).

Теперь о прогрессе постараюсь писать чаще.
Media is too big
VIEW IN TELEGRAM
Для тех, кто по каким-то причинам не может присоединиться к бета-тестированию, но хочет посмотреть, как выглядит смена времени суток, записали видео.
В принципе это практически тоже самое, что вы могли видеть и в самом сталкере на статичном рендерере. Вот только там, начиная с какого-то билда вырезали настройку, отвечающую за ускорение игрового времени, ну а тут она понятно есть, и видео демонстрирует как раз ускоренное течение времени.
SDK собран и отправился на нулевой уровень приватного тестирования. Подробности будут позже.
Ну а пока SDK находится на приватном тестировании, желающие могут посмотреть обновлённое демо карт Сталкера, со включённым бампом и спекуляром и на статичном освещении, чего вы никогда не могли увидеть в оригинальной игре.
SDK находится на первом уровне приватного тестирования. Скоро будет большое объявление.
Набор в бета-тестеры завершён, спасибо всем присоединившимся.
Огромная просьба всем действующим бета-тестерам зайти в раздел Бета тестирование XashNT для миграции на новый ресурс. Это касается всех, кто не успел этого сделать до 10 декабря 2023-го года.
Ровно 19 лет назад 13-го декабря 2004-го года на форуме half-life.ru появилась тема "Новый проект" с подзаголовком "пока без названия". И именно из этой темы в дальнейшем родилось всё то, что я подробно описал в соответствующей теме: https://hlfx.ru/forum/showthread.php?s=&threadid=5272]. Сперва это был мод к Халфе, по типу спирита. Потом несовместимый с халфой движок, который канул в лету, постепенно превратившись в совместимый с халфой движок и вот наконец отделившись в свою полноценную экосистему, сохранив лишь некоторые привычные черты, на ваших глазах наконец-то рождается то, что было задумано ещё в 2007-м, но в силу грандиозности и масштабности осуществляется только сейчас. Не обещаю что к круглой дате появится полностью стабильная версия. Но все недостающие на сегодняшний момент элементы среды, такие как редактор, просмотровщик и некоторые компиляторы уже должны быть созданы.
Ну чтож, за прошедший год был преодолён важный рубеж - от абстрактной демонстрации статичной геометрии, к возможности создания полноценной игры, пусть даже по современным меркам и самой простой в этом плане. Но тем не менее обладающей всем набором элементов геймплея. А так же - выход первой версии SDK, пусть и со сторонним редактором.
В следующем году наконец-то планируется выход собственного редактора уровней, написание недостающих частей экосистемы - таких как просмотровщика, редактора ресурсов, мини-редактора исходного кода на HeadShot. После чего платформа XashNT (именно платформа а не движок) перейдет в качественно иное состояние и в дальнейшем будет прирастать важными и нужными мелочами, имея в основе стабильную базу, которая будет принята за точку отсчёта сохранения совместимости. На данный момент совместимость всё же приходится немного ломать, например буквально за неделю до НГ, была внедрена новая система детализации объектов с высокой нагрузочной способностью.
Спасибо что остаётесь на связи, всех с наступающим Новым Годом!
Я уже упоминал про новую систему детализации, но на тот момент она находилась в процессе доводки, поэтому скриншотов я не показал. Теперь же могу это сделать. Суть в следующем - существуют встроенные в видеодрайвер механизмы для отрисовки одинаковых объектов, т.н. instancing. Это удобно для объектов, которые отличаются лишь углом поворота, позицией и масштабом. Ну и в случае статичного освещения - смещением в странице лайтмапы. Однако нарисовать эти объекты половина дела. Их надо грамотно сгруппировать и отсортировать - по пространственному объему, по материалу, по странице лайтмапы наконец. В противном случае выигрыш от инстансинга будет отсутствовать. Собственно старый формат уровней инстансинг толком не поддерживал, там была неоптимальная группировка мешей. Поэтому пришлось его фундаментально переработать с нарушением совместимости, но по крайней мере это пока еще ничего не затрагивает.
Скриншоты со сталкеровской карты testers_mp_rostok. Здесь 714 тысяч кустов и прочих детайлов.
Скришот показа лайтмапы приведён специально, чтобы показать что на траву ложится тень и что деревья (которые тоже инстанс-объекты) могут иметь персональную лайтмапу. В X-Ray это было недоступно.
На нижних скринах фпс выше, т.к. уменьшена дальность прорисовки травы. Это регулируется под железо пользователя. Но плотность менять нельзя.