3D движки работающие с DX12 показались заметно сложнее чем старые 3D движки для DX11, появившиеся
после 2010-х годов. Часто в них больше этапов, которые нужно запрограммировать для идентичного
результата. Первоначальные движки под DX11 были более просты для того, что бы начать на них что-то создавать.
Например, под DX11 создавалось: 1 - 3D сцена; 2 - Нода с камерой, через которую отображается
фрагмент сцены с объектами в ней; 3 - Нода для 3D моделей; 4 - Загрузка 3D модели; 5 - Настройка
материала для модели, будет ли бликовать на свете или нет и подобное; 6 - Загрузка текстур для
модели; 7 - Шейдерные эффекты применяемые к материалу для имитации плазмы, стекла, и т.д. Это то
что было под DX11.
Запрограммировав по очереди эти пункты сцена загружается на видеокарту и появляется картинка 3D сцены на экране. Но DX11 хорошо масштабируется (тут не все так просто) на 4-6 ядер процессора, дальше прирост FPS от задействования еще большего числа падает. Когда он появился в основном были 2-х ядерные процессоры и он считался мощнейшим DX. 4-х ядерные процессоры считались редкими и чаще были в фирмах чем дома, в компьютерах называемых дизайнерскими - у тех кому нужно было 3D моделировать и с графикой работать быстро в высоком разрешении, что бы легко вращать на экране 3D модели с непрерывным рендерингом например дизайн домов в высокой детализации, без каких-либо задержек, особенно если было запущено сразу 2-3 разные программы для обработки графики - пара 3D редакторов и программы для работы с текстурами. Проблема ограниченного масштабирования на ядра была решена в DX12 который может обрабатывать данные с еще большего числа ядер процессора если видео-карта может принять столько данных сразу. Что бы этот процесс был еще более эффективным 3D движки, если они соревнуются за скорость обработки графики на этом DX, вводят более сложные логические цепочки формирования сцены, добавляя например еще +3 уровня которые нужно запрограммировать, прежде чем появится изображение. Что бы можно было оптимизировать память и вычисления больше чем раньше через разные обработчики внутри самих 3D движков что-то вроде того, что чем больше логически оформленных фрагментов кода тем лучше возможна ситуация с потреблением памяти и скоростью работы. Если бы не опыт со старыми движками на DX11 где цепочка действий для получения картинки была более простой, то более современные средства показались бы слишком трудоемкими что бы делать с их помощью какой-либо проект - больше затрат времени на программирование, более отдалено по времени ожидание результата на экране, код при переходе на движки с DX12 выглядит громоздким и немного отпугивает, кажется раньше было заметно просще и понятней.
По замечаниям игроков к суже существующим играм про космос одно из основных, нестыковки в симуляции игрового мира. Когда реально рассчитывается только логика видимой части мира - в лучшем случае ближайшие сектора или AI видимых объектов. А все что не видно вычисляется по упрощенным формулам когда видимое пространство потребляет 90% ресурсов те 50 кораблей которые сражаются а весь остальной игровой мир 10% выделеных на логику событий лишь имитируя некоторые изменения при приближении корабля игрока к этим локациям в результате нестыковок получались разные результаты битв когда при личном участии в ней игрока атаку на транспорты удастся легко отбить, а когда это происходит вне поля зрения камеры то выбывает много кораблей с большими потерями, потому что работает упрощенный, другой AI. Теперь становится все больше понятно что просто настольный/домашний компьютер даже с многими десятками ядер реальную симуляцию галактики не вытянет, может потребоваться создать каскад упрощенных алогоритмов AI которые будут усиливаться включаяя более тяжелые при наличии ресурсов системы, и это проблема т.к. одна из основных идей была убрать процесс работы мира в режиме иллюзии что где-то за пределами камеры что-то происходит.
Создать код на движках под DX12 пока не получается. Они постоянно обновляются, устаревшие версии уже не скачать - их нет, они заменены новыми в интернете, а к новым версиям не обновлена документация, она осталась устаревшей, в результате работая по старой документации с по факту обновленными версиями программ возникает масса нестыковок и ошибок, на поиск как исправить которые уходят недели. И нейросети тут не помогают, в них то же нет новой документации. (Нужно было скачивать исходники тогда когда они только появились в стабильных релизах.)