Перейти к содержанию

Снятие лимита памяти в редакторе карты


Antonshka

Рекомендуемые сообщения

Привет,

В игре Дирт 5 появился редактор карты, теперь можно самому выбирать и расставлять объекты, но разработчики установили ограничение на 2500 объектов максимум.

Как можно обойти это ограничение?

 

Отталкиваясь от экранного значения заполненности памяти в процентах я вышел на функцию которая циклически проверяет количество созданных объектов. Именно флаг 0-1 в блоке памяти каждого объекта.

Как я понял, в игре нет простого значения максимального числа объектов, а есть просто выделенная память, поделенная на блоки для каждого объекта. Функция цикл проверяя количество задействованных блоков решает заканчивать создание объектов или нет.

Вот.

Ссылка на комментарий
Поделиться на другие сайты

Очень туманно ты всё объяснил, конечно. Листинг из дизассемблера и/или псевдокод немного помогли бы понять суть проблемы. Из того, что ты описал, имеется возможность занопить операторы сравнения или операторы присваивания при прохождении проверки. Или нет? 

Ссылка на комментарий
Поделиться на другие сайты

Я даже не знаю какую часть кода выкладывать. Там тьма всего.

 

Второй день занимаюсь этим делом, не получается. Сложилось твердая уверенность что это не в моих силах. Оставлю эту затею в общем.

Жаль конечно, такое можно было бы настроить.

 

А еще такой вопрос, - кто-нибудь пробовал в играх сдвигать объекты?

У меня получается без проблем переместить текстуру, но вот сам объект (в который упираешься), не получается. Либо получается, но тогда на новом месте он становится проходимым (и на стандартном тоже).

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Antonshka сказал:

А еще такой вопрос, - кто-нибудь пробовал в играх сдвигать объекты?

У меня получается без проблем переместить текстуру, но вот сам объект (в который упираешься), не получается. Либо получается, но тогда на новом месте он становится проходимым (и на стандартном тоже).

Пробовала ев разных играх обычно  идет смещение статических мешей по осям x y z с заданными координатами  ( float ) 

и эм термина текстура как такового не существует )

ты смещаешь тока статик на который уже закреплена текстура вот так будет писать правильнее на мой взгляд 

в некоторых  онлайн играх где идет проверка на что то ну пример в той же aion или lineage2 это гео дата нужно понимать как устроены гео данные и по высотам пример можно делать обходы

обычно статический меш ( в нашем случае лесенка )  даже дает возможность куда то залазить или передвигаться по нему если он правильно был смещен )

 

Ссылка на комментарий
Поделиться на другие сайты

12 часов назад, Antonshka сказал:

а есть просто выделенная память, поделенная на блоки для каждого объекта

Восстанови структуру блока (если есть), а после выдели памяти больше, после чего сделай подмену указателей на массив объектов. В теории это должно работать, ведь какая разница игре из какого и в какой массивы добавлять объекты, но могут быть проверки, работающие с оригинальным указателем на массив, которые будут разбросаны по разным методам. Что-то похожее я делал для Left 4 Dead 2.

Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, AlisaCodeDragon сказал:

Пробовала ев разных играх обычно  идет смещение статических мешей по осям x y z с заданными координатами  ( float ) 

и эм термина текстура как такового не существует )

ты смещаешь тока статик на который уже закреплена текстура вот так будет писать правильнее на мой взгляд 

в некоторых  онлайн играх где идет проверка на что то ну пример в той же aion или lineage2 это гео дата нужно понимать как устроены гео данные и по высотам пример можно делать обходы

обычно статический меш ( в нашем случае лесенка )  даже дает возможность куда то залазить или передвигаться по нему если он правильно был смещен )

 

Игра поддерживает онлайн, но я пытаюсь сдвинуть объект в сингле.

Что значит "если он правильно был смещен"?

 

Я перемещал объект изменяя его XYZ координаты. Сделал скан памяти на например значение координаты X, затем во всех найденных адресах поменял значение. Текстура (видимая часть объекта) смещалась, но невидимая нет.

 

 

9 часов назад, ChestGlaring сказал:

Восстанови структуру блока (если есть), а после выдели памяти больше, после чего сделай подмену указателей на массив объектов. В теории это должно работать, ведь какая разница игре из какого и в какой массивы добавлять объекты, но могут быть проверки, работающие с оригинальным указателем на массив, которые будут разбросаны по разным методам. Что-то похожее я делал для Left 4 Dead 2.

Спасибо за идею. Что-то такое я попробовал сделать, с выделением памяти, но мне не хватило усердия. Также не мой уровень знаний.

Изменено пользователем Antonshka
Ссылка на комментарий
Поделиться на другие сайты

Игра сохраняет расположение и количество объектов в файле XXX.play в папке стим. Если открыть этот файл в редакторе Neo Hex Editor и поменять всего лишь одну цифру (например координату Y какого-нибудь объекта с 2.35 на 7.35), то после этого игра уже не принимает этот файл. Количество байт в файле не изменилось, изменился лишь один байт, и то, текстового значения.

Неужто игра хранит где-либо продублированный файл и при запуске проверяет его схожесть с этим. Или Hex Editor затрагивает какую-нибудь другую информацию, которая не видна в самом Hex Editor, например время создания файла или еще чего.

Ссылка на комментарий
Поделиться на другие сайты

34 минуты назад, Antonshka сказал:

Неужто игра хранит где-либо продублированный файл и при запуске проверяет его схожесть с этим

Долго проверять целый файл, скорее просто в заголовке файла XXX.play указана контрольная сумма в каком-нибудь CRC-32, одна записывается в память при открытии редактора карты, другая хранится в файле, при попытке считывания или записи в файл, сначала проверяется контрольная сумма, если они не сходятся - файл поврежден.

Изменено пользователем ChestGlaring
Ссылка на комментарий
Поделиться на другие сайты

33 минуты назад, Antonshka сказал:

Неужто игра хранит где-либо продублированный файл и при запуске проверяет его схожесть с этим. Или Hex Editor затрагивает какую-нибудь другую информацию, которая не видна в самом Hex Editor, например время создания файла или еще чего.

Хеш-сумму файлов сохранения может где-то хранить. Поэтому лучше все манипуляции производить в оперативной памяти

Изменено пользователем KRYPTOPUNK
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.