Дядя Миша

Дядя Миша 

Разработка игрового движка XashNT

26subscribers

15posts

goals1
0 of 2 000 paid subscribers
Чем больше подписчиков, тем быстрее будет продвигаться разработка

Небольшой отчёт о проделанной работе

Вероятно у подписчиков уже возникает вопрос насчёт релиза альфа-версии, о котором я уже упоминал и который не произошёл. Поясню что меня задерживает. Как я уже и говорил, весь вопрос заключался в разработке нового формата анимированных моделей. Эта задача была выполнена наполовину, создан формат, написан компилятор. Дальше встало дело за его имплементацией в движке и вот тут начались на первый взгляд неочевидные проблемы.
Дело в том, что движок писался на основе Xash3D, просто для того, чтобы на каждом этапе разработки иметь валидный набор данных для экспериментов. Потихоньку старый код заменялся новым, но на данный момент в движке присутствует зоопарк форматов моделей:
BSP32 - формат на базе BSP30 от Half-Life с увеличенными лимитами
BSP46 - Ванильный формат от Quake3
BSP48 - промежуточный экспериментальный формат, полученный в процессе разработки и более неактуальный
MESH - финальный формат статической геометрии для уровней
STUDIO - формат скелетных моделей из Half-Life
Все эти форматы, будучи загруженными используют общие структуры для хранения данных в памяти, причём очень многое плотно завязано именно на древний BSP32, порядка 70%. Когда я выкину эти, уже ставшие ненужными форматами, движок подвергнется масштабной реорганизации, с целью упрощения, оптимизации хранения данных и уменьшению потребления памяти, так же будут пересмотрены многие интерфейсы. Очевидно надо просто убрать поддержку BSP32. Это дело пяти минут, загрузчики изолированы друг от друга, но. Всё дело в том, что в моём новом формате до сих пор не реализован radiosity в лайтмаппере. А для успешной имплементации неплохо бы иметь референс в виде старого формата где освещение с индиректом, чтобы была возможность сравнивать (в идеале освещение должно полностью совпасть). Так что, пока radiosity не имплементирован, было бы желательно сохранить поддержку старого формата. Внедрять новый формат скелетных моделей на старые структуры, попросту означает проделать двойной объем работы, неизвестно какие еще ошибки при этом вылезут, когда код пишется под одни условия, а потом приходится всё переделывать. Но с непрямым освещением у меня был затык, его не так-то просто рассчитать для больших уровней. Приходящие в голову мысли я заведомо отбрасывал, у меня попросту не было идеи. И вот буквально сегодня утром я понял как это реализовать, сохранив оптимальный баланс по производительности и потреблению памяти. Таким образом список задач на текущий момент следующий:
- внедрение непрямого освещения в лайтмаппер
- финальная ревизия компилятора уровней и лайтмаппера
- перестройка движка с учётом удаления устаревших форматов (это на самом деле довольно быстро 1-2 дня)
- внедрение поддержки нового формата скелетных моделей
- вьювер для форматов, поддерживаемых XashNT (тоже быстро, много общего кода с движком)
- финальная ревизия всего
- выход беты.
Примерно так. Сроки пока называть не буду.
А можешь сделать подсистемы для субтитров и дерева диалогов?
Иван Феоктистов, что-то такое в планах было, да
Go up