У Starfield в коде нашли серьёзные ошибки. Разработчик объяснил, почему оптимизация настолько плохая
Starfield не отличается хорошим техническим качеством. Кто-то списал всё на типичную Bethesda, а некоторые решили раскопать код
Энтузиасты продолжают исследовать Starfield. Разработчик изучил код новинки и пришёл к неутешительным выводам.
Разработчик Vkd3d объяснил:
- Starfield неправильно распределяет память, не согласуя её с размером (памяти) страницы процессора. Если драйверы видеокарты не защищены от этого, то игра будет аварийно завершаться в случайные моменты времени.
- Starfield злоупотребляет функцией dx12 ExecuteIndirect. Среди прочего она требует «подсказки» от игры, чтобы графический драйвер знал, чего ожидать. Поскольку Starfield посылает фальшивые «подсказки», графические драйверы, пытаясь обработать данные, оказываются застигнутыми врасплох, что приводит к образованию «пузырей» в очереди команд. Эти «пузыри» означают, что графический процессор должен остановить свою работу, перепроверить предположения, сделанные им относительно косвенного выполнения, и начать всё сначала.
- Starfield создаёт несколько вызовов `ExecuteIndirect` один за другим, вместо пакетной обработки, что приводит к многократному усугублению вышеупомянутой проблемы.
Отмечается, что энтузиасты уже опубликовали некие предложения по улучшению работы игры в открытом доступе. Однако есть сомнения, что Bethesda будет разбираться со своим «сломанным движком» (ведь даже звучат заявления, что игра оптимизирована).