>
давняя проблема с отсутствием многопоточности в оригинальном движке x-ray сильно ограничивала модмейкеров в творчестве, вынуждая сокращать уровень детализации своих проектов в угоду приемлемому fps. говоря простыми словами, огромное количество сложных вычислительных задач игры «сливались в бутылочное горлышко», что значительно замедляло их совокупную обработку, и как следствие — заметно снижало fps при в высоко детализованных сценах.
однако в последние несколько лет многие программисты известных проектов вселенной stalker в той или иной степени решили проблему путём глубокой модификации движка, создав возможность распределения задач по нескольким вычислительным потокам
история проблемы
оригинальный движок x-ray не обладал какой-либо значимой многопоточностью. в частности, движок игры располагал всего двумя потоками для подготовки и отрисовки кадра: основной, который выполнял ~95% всех задач, и вспомогательный, выполняющий небольшие периферийные задачи.
оригинальный движок хорошо справлялся с отрисовкой большинства игровых сцен оригинальной трилогии. однако для сложных и высоко детализированных модификаций, не говоря уже о масштабных аддонах, возможностей оригинального x-ray было недостаточно.
разработка системы многопоточности
команда Сталкер: new project разработала собственный планировщик распределения и выполнения многопоточных задач, который способен правильно распределить задачи по имеющимся потокам, учитывая их загруженность и приоритеты задач. так же была проведена очень трудоемкая и сложная работа по адаптации оригинального кода под возможность параллельного выполнения большого количества вычислительных задач.
проделанная работа дала свои плоды и fps значительно вырос. разницу можно увидеть на скриншотах ниже
1) без многопотока [fps: 9] 2) вкл. многопоточность только ориг. движка [fps: 14] 3) вкл. многопоточность для new project [fps: 73]
таким образом благодаря системе многопоточности разработчикам удалось настолько сильно повысить производительность движка игры, что дало возможность реализовать все идеи по level-дизайну и геймплею без ущерба производительности.
источник: Сталкер: new project
оригинальный X-Ray был достаточен для 2000х, понятно что он не тянет современные модификации с улучшенной графикой, ИИ и скриптами,, было бы полезно упомянуть, какие именно подсистемы теперь работают в потоках , например- ИИ, анимации, звуки, физика?
кстати в оригинале версии 1.0-1.6, включая ТЧ, ЧН, ЗП были однопоточными, а модернизированные версии движка OGSR, EFP, Anomaly, OP-2.2 используют многопоточность
Только многопоточность там максимально условная. То, что движки 64-битные, ещё не значит, что потоки нормально будут использоваться
Полноценного распределения нагрузки по ядрам как в движках типо Unreal engine или Decima engine конечно там нет. Несколько знаю в отдельные потоки идут- аудио, физика, логика маркеров передвижения, скрипты несложные могут входить, типо спавна, диалогов начальных, чисто разгрузить основной поток. Практический весь AI и сюжетные геймплейные скрипты по прежнему в главном потоке.
Улучшение есть, но кардинального прироста особо нет, согласен.
однако хотел бы добавить, что в тех же Ogsr, Anomaly, Op 2.2 данная "условная" многопоточность даёт хоть и ограниченный, но реальный прирост произволдительности особенно в ситуациях, где можно частично разгрузить основной поток, по fps это очень заметно видно как в закрепленных скринах, то есть fps поднимается и до 50% что просто замечательно