[Burichan] [Futaba] [Photon]  -  [WT]  [Home] [Manage]

[Return] [Entire Thread] [Последние 50 постов] [Первые 100 постов]
Posting mode: Reply
Адрес
Captcha image
Тема   (reply to 120668)
Текст
Файл
Embed   Help
Пaроль  (для удаления постов и файлов)
  • Supported file types are: 7Z, GIF, JPG, MP3, PNG, RAR, ZIP
  • Maximum file size allowed is 4000 KB.
  • Images greater than 200x200 pixels will be thumbnailed.
  • Currently 13846 unique user posts. View catalog

Файл 13840076817.png - (4.17KB , 1135x35 , 1.png ) Thumbnail displayed, click image for full size.
120668 No. 120668
Если вы когда-нибудь хотели огромные карты без лимита населения и возрастом за 200 лет, то, вероятно, под конец долгой и мучительной генерации или даже перед самым сохранением DF вылетал с ошибкой, принося многие радости и добрые слова.
А дело в том, что DF - 32-битное приложение, следовательно, максимальный объём, который это приложение может запросить, ограничено 2GB. Но есть один способ заставить его немного обойти это ограничение (работает только на Windows x64). Заранее предупреждаю, что после генерации мира и в начале сохранения DF запросит ещё больше памяти, поэтому если ещё в процессе он съел больше 2.5GB, можете убивать процесс.

Итак. Для начала, нам потребуется любой двоичный редактор, гугл в помощь. Создаём копию "Dwarf Fortress.exe", на всякий случай, и открываем приложение в редакторе, находим адрес 0х0138, там должны быть следующие 8 байт:
00 00 00 00 E0 00 02 01
Заменяем предпоследний байт на 22, чтобы получилось:
00 00 00 00 E0 00 22 01
Сохраняем, запускаем, радуемся.

Амбула: изменение устанавливает флаг LARGE_ADDRESS_AWARE в заголовке IMAGE_FILE_HEADER. Этот флаг говорит системе о том, что приложение в курсе, что 32-битные указатели на самом деле беззнаковые (не будем сейчас о том, что нужно было сделать с тем, кто решил, что указатели по-умолчанию должны быть знаковыми) и что это приложение может правильно работать с памятью выше 2GB. Как показала практика - Dwarf Fortress может.
Expand all images
>> No. 120669
Если всё так просто, то почему Жабейший уже не сделал это?
>> No. 120671
Неужели не очевидно? Потому что он ненавидит людей. Он для этого сделал охуенную игру с невыносимо неудобным интерфейсом, чтобы все страдали.
А если серьёзно, то, вероятно, он просто не задумывался над этим, либо опасался возможных багов с преобразованиями указателей. Как бы то ни было, но после генерации, DF уже не запросит больше 2GB, так что можно даже заменить изменённую версию на исходную, а сам процесс генерации, по крайней мере на моей системе, прошёл без багов.
>> No. 120672
>>120669
Поправка - прошёл без багов как минимум три раза. Несколько раз, при перенаселении (40 цивилизаций без лимита), валился где-то после 220 года, ещё несколько раз - при сохранении, когда он запрашивает ещё примерно 40% памяти от того, что потребовалось при генерации.
>> No. 120674
>>120668
Схоронил
Если это не развод - саншайна этой бороде! Править руками лоадер - на моей памяти это было только на кассетах к Спектруму!

Оп, будь няшей, запили патчер сюда и на Бухту.
Подпишись только (и фейкомыльце до пейпала же)!
И, в идеале, для тупых:
- Скачай у Койотсофта утилку (free screen to video) для съмки видео.
- Сними краш DF при крупном эмбарке/ворлдгене.
- Сними процедуру патча "вручную" и утилиткой, покажи, что файлы идентичны.
- Покажи отсутствие краша при ворлдгене/эмбраке.
- Выложи на Бухту, втентакль и сюда.

Два "но":
1. Проверь, чтобы запись с экрана пошла. Прога капризная, зато сразу пережимает в avi.
2. Выложи "как есть" без музык и прочего - ютюба, скотина, ругается.
>> No. 120675
У меня в папке DF лежит файл Large Address Aware.exe - не для того же ли самого он нужен? Сборочка от Вована Lazy Newb Pack
>> No. 120676
>>120674
Твоими словами да на хлеб намазывать. Но у меня йоба не проплачена, скорость как у диалапа и надёжность как у него же с параллельной линией, по которой кто-то говорит, так что видео я если и запишу, то только для себя.
Плюс, коммент выше кагбэ намекает, что, возможно, я не первый это сделал.
>> No. 120682
Интересно, как это колдунство поведет себя не при генерации мира, а при игре в среднестатистической крепости на ~200 бород.
inb4 - Проверяй сам! - Недавно отыграл длительную крепость, от ДФ я сейчас nauseous
>> No. 120683
>>120682
Я уже говорил - сомнительно, чтобы после генерации DF захотел бы памяти больше 2GB. При желании, конечно, можно поставить лимит населения в 1000 голов и высадится на карте 16х16 тайлов. Но нахуя?
Ликбез:
Такая правка может вызвать проблему, в сущности, только одного рода - преобразование указателей на адрес дальше 2GB в long и порождённые от него типы данных, т.к. при этом указатели большие 0x8xxxxxxx принимают вид не 0x000000008xxxxxxx, а 0xffffffff8xxxxxxx, т.е. выполняется знаковое расширение значения.
Если такая проблема существует в DF, то она должна была проявится в процессе генерации, в противном случае, даже если бы предполагать, что в процессе непосредственно игры DF запросил бы больше 2GB, вероятность ошибки резко снижается: инструментарий (базовые операции), которым создаются карты и которым они играются, наверняка один и тот же (говорю как программист), поэтому если под большой нагрузкой он хорошо отработал, то с чего бы ему валиться в игре. Но ещё раз говорю - это изменение не затрагивает игровой процесс, поскольку во время игры указателей больших 0x80000000 нет, потребности игры существенно меньше. Более того, изменение не затрагивает никакой код, единственное, что меняется - это поведение аллокатора памяти (а DF использует стандартные компоненты для работы с памятью), а именно - даёт ему разрешение на получение страниц в верхнем адресном пространстве.
Одно замечание - всё же, возможны (хоть и очень маловероятны) ещё скрытые ошибки в самой сгенерированной карте, вроде внезапных пустот до самого дна, или наоборот скалы от пола до космоса, или каких-нибудь бронзовых эльфов - чем чёрт не шутит. Но, ещё раз, мне такое поведение представляется исключительно маловероятным.

Резюмируя:
Всё будет норм, поскольку во время игрового процесса больше 2GB памяти не требуется.
>> No. 120698
>>120683
>При желании, конечно, можно поставить лимит населения в 1000 голов и высадится на карте 16х16 тайлов. Но нахуя?
Как это нахуя? Во-первых, ‼SCIENCE‼, а во-вторых это же мегаполис.
Хотя инструментарий DF слишком микроменеджерский для такого.
>> No. 120710
>>120698
Удвою, моя мечта-отстроить крепость в 10к бород, с огромными цехами, у океана, с пастбищами, замком, сетью для вагонеток, ГЭС и прочими радостями жизни. И колизеем.
>> No. 120715
>>120668
глупость. дф не в память упирается, а в пасфайндинг, ведь тоади не способен ни в параллелизацию, ни в оптимизированные алгоритмы.
>> No. 120716
А вы не забыли ничего? Например, то, что количество FPS в обратной экспоненциальной зависимости от суммарной длины бород.
Короче, попробуйте, скажете нам лет через n'цать, когда первый кадр при десяти килодворфах отрисуется.
>> No. 120761
А вот LegendViewer, хотя и кушает экспортированные эпичные карты и тоже выбирается далеко за пределы 2GB, но всё же валится на каждом шагу с эксепшнами (благо, валится не на совсем и может продолжать работать). Ну или он в принципе забагован, не знаю, не проверял его на стандартных картах.
>> No. 120762
>>120716
До тех пор, пока быстрее реалтайма (1 день в 5 минут) - терпимо.
Основная масса времени теряется на рутинной работе: разметке, норах и т.д. Так что развитая крепость вполне может быть достаточно автоматизирована, особенно с дфхаком.
>> No. 120763
>>120762
Пробуй, чего. Заодно узнаем, что произойдёт раньше - падение фпс до нестерпимого уровня или выход за пределы 2GB.
>> No. 120764
Я не совсем понимаю зачем вы нагородили этот огород и изобретаете свой велосипед???? В LazyNoobPack в комплекте уже давно идет патчер который снимает ограничение в 2Gb для DF
>> No. 120766
>>120764
Затем, что я не был в курсе такого патчера. А огород уж сам собой как-то вырос.
ОП.
>> No. 120776
>>120766
Поздравляю от всей души с революционным изобретением - да это же.... барабанная дробь велосипед!!!!!
>> No. 120783
>>120776
на самом деле это просто повторное изобретение. ВНЕЗАПНО это происходило, происходит и будет происходить всегда, причем достаточно часто.
>> No. 120785
>>120776
И, кстати, термин "велосипед" здесь не применим, поскольку "велосипед" - это написание с нуля некоторого алгоритма, который уже был написан на всех языках, в разных вариациях, под все нужды, и автор об этом догадывается, но хочет своё, с рандомом и тестировщицами.
>> No. 120790
Кажись, всё-таки сбоит. Давеча DF свалился с сообщением о том, что не смог найти какую-то тварь.
Печаль, тоска, огорчение.
>> No. 120920
В Мастерворке тоже есть такая фича. Large Address Aware Patcher называется.
>> No. 120941
Файл 138466480881.jpg - (18.08KB , 400x299 , slowpoke.jpg ) Thumbnail displayed, click image for full size.
120941
>>120920
ловите слоупока!
[Return] [Entire Thread] [Последние 50 постов] [Первые 100 постов]

Delete post []
Пaроль