runewalsh писал(а):Хотя так никто и не делает, лол. DLL всё же слишком низкий уровень.
id-tech (ака Quake движки)? хотя там по-моему, история обратная. Движок в dll-ке, а игра в .ехе.
Модератор: Модераторы
runewalsh писал(а):Хотя так никто и не делает, лол. DLL всё же слишком низкий уровень.
Мой движок построен вокруг уникальной архитектуры (было бы великой глупостью клепать просто ещё один клон огра, нэ?).
Фишка: исполняемый код можно менять на лету, не теряя данных.
Технически это организовано как вынесение практически всего кода движка в DLL, которая сохраняет состояние в файл, выгружается, другая загружается, восстанавливает состояние из файла. В чём же уникальность, спросите? Часть данных - а именно, текстуры, прочие объекты OpenGL и даже открытые файлы - сохраняются не в файле, а в памяти EXE-матки. Потом DLL берёт их обратно. Имеем: передёрнули исполняемый код, а все текстуры сохранились.
Конечно, это только на словах просто, а на деле там дофига и больше кода для сериализации, обеспечения совместимости вперёд/назад (состав полей класса после перекомпиляции может быть уже другим, нэ?) и прояая, и прочая.
Но итог таков: полная перезагрузка DLL занимает не дольше пары сотен милисекунд. Это часто даже на глаз незаметно. В итоговой игре данных будет поболе, но и тогда - не дольше 0.3..0.5 секунды.
им может быть в том числе какая-то механика, специфичная для небольшой игровой локации,
runewalsh писал(а):Cheb
>За счёт специальных NOP-заглушек в каждой ф-ии API, которые лёкким движением руки превращаются в JMP.
Пруфы? Не очень-то верится, проще остановить вообще всех, кто использует DLL, и передёрнуть без заморочек, или вовсе для не озаботившихся ресетом и/или не желающих вылезать из кода DLL оставить на время работы старую версию.
скалогрыз писал(а):Например вот так можно перехватить WinAPI функции для одного конкретного процесса.
Как ты вообще представляешь другой код, который использует ресурсы выгруженного? Что, если какие-то из них больше не нужны?
использовать всякие ассемблеры в игровых движках,
Пруфы? Не очень-то верится, проще остановить вообще всех, кто использует DLL,
x86_64 (в случае спец загрузки)
hinst писал(а):я так и не понял, нафига было в динамическую библиотеку что либо вообще выносить?
runewalsh писал(а):Cheb
>За счёт специальных NOP-заглушек в каждой ф-ии API, которые лёкким движением руки превращаются в JMP.
Пруфы? Не очень-то верится, проще остановить вообще всех, кто использует DLL, и передёрнуть без заморочек, или вовсе для не озаботившихся ресетом и/или не желающих вылезать из кода DLL оставить на время работы старую версию.
скалогрыз писал(а):почему
>However, it can also reduce overall system performance, because the thread scheduler switches tasks more often.
Cheb писал(а):1. Игра - это по определению всересурсызажирающее приложение. Не нужно делиться.
Cheb писал(а):Синхронизация потоков действительно требует 1мс точности.
Cheb писал(а):А также чтобы ограничить нагрузку в моменты простоя и не допустить самовозгорания видеокарты. А то некоторые игры на экранах загрузки или менюшках за 500 FPS зашкаливает. У меня же жёсткий потолок в 30 (60 когда пользователь шевелит мышью резвее 5 пикселов за кадр).
Вернуться в Разработки на нашем сайте
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3