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

Text.dll 2025 (мой неоффициальный апдейт на современный лад)


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

2 часа назад, olol сказал:

GFM, text.dll и MCP - это совершенно разные вещи.

Ни я ни Fritz не имеем ни какого отношения к изменениям в text.dll и MCP.

В свою очередь группа Angel и разработчики MCP не причастны к GFM.

Есть text.dll поставляемой с игрой от 1С, которая может быть обновлена отдельно.

Новый text.dll добавлен к GFM за неимением для него отдельного мода.

В GFM 5x и 6x используется один и тот же файл, не знаю какой для 5х на FR

(мне было запрещено выкладывание модов в базу и на FR выложен GFM не мной).

Сами файлы могут отличаться из-за наложенных патчей MCP и 4Gb.

Спасибо за прояснение! Теперь путаницав версиях text.dll окончательно исчезла ! Ваша команда проделала огромную работу! И я постараюсь, чтобы этот text.dll стал достойной базой для будущих творчеств мододелов и плагиностроителей ! :-)

 

Единственная полностью отличная версия - та о которой сказал Siberian Crab, та что весит 23 КБ (интересно что там) :pardon:

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

  • Ответов 74
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

8 часов назад, ksteel сказал:

Ох ты ж, да там и исходники есть! Обязательно ознакомлюсь с его творчеством !

Ток сайт сдох. Исходники вытаскивались раньше через вейбекмашину.

Скачанные мной во вложении.

Сам VICSHANN на гите есть https://github.com/Vicshann, но толки проектов там нет у него, по крайней мере в открытом доступе.

MMPackSrc.7z

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

59 минут назад, Siberian Crab сказал:

Ток сайт сдох. Исходники вытаскивались раньше через вейбекмашину.

Скачанные мной во вложении.

Сам VICSHANN на гите есть https://github.com/Vicshann, но толки проектов там нет у него, по крайней мере в открытом доступе.

MMPackSrc.7z 1.26 \u041c\u0411 · 0 загрузок

Но в любом случае, сначала я доведу версию "моего" text.dll до эталонной 3.01, потом возможно ее чуточку модифицирую (фикс перегрузки для ребят с Тамриэль Ребилда), а потом уж сделаю а-ля шлюз, установлю зависимости доп библиотек, чтобы основной text.dll вливал в память игры помимо себя и соседние файлы (что является идеальным началом для тотального расширения инструментария text.dll)

Как я вижу будущее:

По поводу совместимости с mcp я принял решение оставить его "отдельным", не тащить оттуда все подряд и делать из чистого text.dll непонятную "цифровую химеру". Но добавить возможность авторам MCP добавлять свои модули через text.dll путем того же шлюза.

По поводу lua: предстоит огромное количество работы, технически( пока в большей степени гипотетически) возможно убрать костыль mwse и научить Морровинд напрямую читать Lua файлы.

По поводу кодировки - спорный момент, но я попытаюсь научить Морровинд читать и кодировку UTF-8, оставив при этом в нем знание родной кодировки cp1251.

Идей очень много на самом деле.

а за ссылки огромное спасибо!

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

52 минуты назад, ksteel сказал:

(фикс перегрузки для ребят с Тамриэль Ребилда)

Что бы внести ясность я не из команды Тамриэль Ребилда, даже не переводчик, всего лишь бэта тестер перевода.

42 минуты назад, ksteel сказал:

Но добавить возможность авторам MCP добавлять свои модули через text.dll путем того же шлюза.

так в MCP уже же есть исправления для text.dll, значит способ у них был, в любом случае МСP в первую очередь патчит exe, я так понимаю только русские исправления и заносятся в text.dll. Может быть им кто то предоставил правки и сказал куда вставить, ничего не знаю про то как в MCP появились правки для text.dll. И надо ли им оно сейчас. Общие правки они и так делают в exe. Если вдруг возникнут новые чисто русской локализации то проще вам их самим исправить чем вразумлять авторов MCP что и куда надо добавить.

Ни к чему не призываю и и не убеждаю чисто мое мнение.

53 минуты назад, ksteel сказал:

По поводу lua: предстоит огромное количество работы, технически и гипотетически возможно убрать костыль mwse и научить Морровинд напрямую читать Lua файлы.

Ну я бы не сказал что MWSE прям уж костыль. Так то и text.dll можно считать костылем, с помощью которого воткнули поддержку русского языка.
Вот на новом движке OpenMW сделали свою реализацию lua, только путаница вышла из за отсутствия совместимости, извечный выбор какие моды нужнее, тот движок и использовать и т.д. И вечные вопросы в комментах а работает ли мод A на движке Х.
Нужно ли делать еще 3 вариант Lua для Морровинда, пойдет ли это на пользу?
И потом если вы lua через text.dll прикрутите, в английской версии этого файла нет, а в РФ полтора землекопа lua моды делают.
Останется ли совместимость с MWSE не будет ли конфликтов? Все таки подавляющее большинство сделано на английской версии игры, нужно на это ориентироваться.

Тоже чисто мое мнение, может вы какой прорыв совершите, просто лично я не вижу пока необходимости замены MWSE.


PS Да кстати подкину еще одну мыслю.
В оригинальном движке есть проблема, при отдалении от центра мира НПС начинают "дрожать" В Анвиле очень хорошо заметно. 

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

25 минут назад, Pirate443 сказал:

PS Да кстати подкину еще одну мыслю.
В оригинальном движке есть проблема, при отдалении от центра мира НПС начинают "дрожать" В Анвиле очень хорошо заметно. 

Эта проблема аж в Старфилд перекочевала :trololo:
 

2 часа назад, ksteel сказал:

Но в любом случае, сначала я доведу версию "моего" text.dll до эталонной 3.01, потом возможно ее чуточку модифицирую (фикс перегрузки для ребят с Тамриэль Ребилда), а потом уж сделаю а-ля шлюз, установлю зависимости доп библиотек, чтобы основной text.dll вливал в память игры помимо себя и соседние файлы (что является идеальным началом для тотального расширения инструментария text.dll)

Как я вижу будущее:

По поводу совместимости с mcp я принял решение оставить его "отдельным", не тащить оттуда все подряд и делать из чистого text.dll непонятную "цифровую химеру". Но добавить возможность авторам MCP добавлять свои модули через text.dll путем того же шлюза.

По поводу lua: предстоит огромное количество работы, технически( пока в большей степени гипотетически) возможно убрать костыль mwse и научить Морровинд напрямую читать Lua файлы.

По поводу кодировки - спорный момент, но я попытаюсь научить Морровинд читать и кодировку UTF-8, оставив при этом в нем знание родной кодировки cp1251.

Идей очень много на самом деле.

а за ссылки огромное спасибо!

Хорошо быть умным, а не как я с нейросетками :royal:

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

1 час назад, Pirate443 сказал:

Что бы внести ясность я не из команды Тамриэль Ребилда, даже не переводчик, всего лишь бэта тестер перевода.

так в MCP уже же есть исправления для text.dll, значит способ у них был, в любом случае МСP в первую очередь патчит exe, я так понимаю только русские исправления и заносятся в text.dll. Может быть им кто то предоставил правки и сказал куда вставить, ничего не знаю про то как в MCP появились правки для text.dll. И надо ли им оно сейчас. Общие правки они и так делают в exe. Если вдруг возникнут новые чисто русской локализации то проще вам их самим исправить чем вразумлять авторов MCP что и куда надо добавить.

Ни к чему не призываю и и не убеждаю чисто мое мнение.

Ну я бы не сказал что MWSE прям уж костыль. Так то и text.dll можно считать костылем, с помощью которого воткнули поддержку русского языка.
Вот на новом движке OpenMW сделали свою реализацию lua, только путаница вышла из за отсутствия совместимости, извечный выбор какие моды нужнее, тот движок и использовать и т.д. И вечные вопросы в комментах а работает ли мод A на движке Х.
Нужно ли делать еще 3 вариант Lua для Морровинда, пойдет ли это на пользу?
И потом если вы lua через text.dll прикрутите, в английской версии этого файла нет, а в РФ полтора землекопа lua моды делают.
Останется ли совместимость с MWSE не будет ли конфликтов? Все таки подавляющее большинство сделано на английской версии игры, нужно на это ориентироваться.

Тоже чисто мое мнение, может вы какой прорыв совершите, просто лично я не вижу пока необходимости замены MWSE.


PS Да кстати подкину еще одну мыслю.
В оригинальном движке есть проблема, при отдалении от центра мира НПС начинают "дрожать" В Анвиле очень хорошо заметно. 

1. Ну тем не менее, даже тестер важен для любого проекта =)

2. После внесения исправления по "сообщениям при поднятии уровня" и "переполнения буфера", я как раз таки и возьмусь за то, что буду смотреть КАК именно MCP взаимодействует с text.dll, меняет ли он в нем что-то вообще (просто вносить правки в уже скомпилированный dll файл - занятие такое, неизвестно к чему может привести. А шлюз я хочу добавить как раз для того, чтобы отладка и разработка шла легче. Чтобы каждый раз не вписывать "экспериментальный код в здоровое тело text.DLL". Добавил модуль, ввел логирование - смотришь что получается. Медленно но верно.)

3. Вы меня не поняли. Разница между mwse и text.dll большая. Попробуйте написать мод.lua, который будет переключать русскую раскладку в игре =), я вам больше скажу, он даже будет вам выдавать сообщения и писать, что он работает, он меняет раскладку, но по факту раскладка меняться не будет. Приоритет доступа text.dll к памяти игры можно разобрать в сравнении, что у игры 2 сердца. Одно morrowind.exe, а второе text.dll. одно слушает другое. В этом и прелесть русской локализации. А вот mwse это грубо говоря "Lua- construction-set, который загружается уже после того, как загрузились morrowind.exe и text.DLL, подгружая свои плагины-модули =).) Также я тоже внесу ясность:  мой text.dll будет не "врагом", но "исследователем", он не будет диктовать другим разработчикам по каким правилам жить и творить. Представьте что у вас есть папка, допустим от morrowind\text._DLL\lua\. В которую вы закинули свой lua мод по "смене раскладки" и он заработал так, как вы задумали =), не зависимо от версии mwse, потому что text_DLL обучен последней версии Lua, он знает как старые команды, так и новые." И, как вы уже сказали - text.dll в английской версии нет, потому я хочу внести полную совместимость с mwse как прямую, так и обратную..... А потом Morrowind.exe через text.dll спросит Вас в недалеком будущем "хм, господин пират, а не хотите ли вы скинуть мне какой-нибудь игровой скрипт по поведению НПС в формате . json? Я и их научился читать! А вам не надоело постоянно переключать кодировку с UTF-8 на cp1251? Пишите мне скрипты сразу в UTF-8, я и её читать научился! И так далее."

Про "дрожание" нпс еще совсем рано рассуждать, для начала надо сделать ядро text.dll.

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

13 минут назад, Siberian Crab сказал:

Эта проблема аж в Старфилд перекочевала :trololo:
 

Хорошо быть умным, а не как я с нейросетками :royal:

На мой скромный взгляд -  открытие нейросетей спокойно можно приравнивать к открытию телефона/пк/интернета.

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

1 час назад, Siberian Crab сказал:

Эта проблема аж в Старфилд перекочевала :trololo:

так Бевезде оно видимо не мешает, это игроки собаки такие пилют тут всякие материки на 20 летнюю игру и жалуются :)))

1 час назад, Siberian Crab сказал:

Хорошо быть умным, а не как я с нейросетками :royal:

ну лично я тоже нейросетями пользуюсь, очень помогает.

1 час назад, ksteel сказал:

Попробуйте написать мод.lua, который будет переключать русскую раскладку в игре =), я вам больше скажу, он даже будет вам выдавать сообщения и писать, что он работает, он меняет раскладку, но по факту раскладка меняться не будет.

ну раскладку ваш text.dll будет переключать, а вот меню настройки клавиши, которое спросит у игрока нажмите желаемую клавишу, а потом запишет ее сканкод в angel.ini вполне можно сделать, собственно у меня уже есть рабочий вариант.
Конечно новое значенеи только после перезапуска заработает.
Я изначально хотел сделать проверку и переключение top\cel\rmk для плагинов, а то до сих пор попадаются игроки у которых оно в 0 стоит и они спрашивают почему локации в моде не переведены и топики не работают. А тут как раз вы загрузили свою версию, ну я и выбор клавиши прикрутил.
Хотя конечно если вы это потом напрямую сделаете, то да mwse будет костылем

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

11 минут назад, Pirate443 сказал:

так Бевезде оно видимо не мешает, это игроки собаки такие пилют тут всякие материки на 20 летнюю игру и жалуются :)))

ну лично я тоже нейросетями пользуюсь, очень помогает.

ну раскладку ваш text.dll будет переключать, а вот меню настройки клавиши, которое спросит у игрока нажмите желаемую клавишу, а потом запишет ее сканкод в angel.ini вполне можно сделать, собственно у меня уже есть рабочий вариант.
Конечно новое значенеи только после перезапуска заработает.
Я изначально хотел сделать проверку и переключение top\cel\rmk для плагинов, а то до сих пор попадаются игроки у которых оно в 0 стоит и они спрашивают почему локации в моде не переведены и топики не работают. А тут как раз вы загрузили свою версию, ну я и выбор клавиши прикрутил.
Хотя конечно если вы это потом напрямую сделаете, то да mwse будет костылем

Да, проблема в том, что НА ДАННЫЙ момент angel ини читается игрой только 1 раз - при запуске. Чем может обернуться постоянное обращение morrowind.exe к angel.ini - я не знаю, но гипотетически даже можно сделать полноценное меню и встроить его в меню игры, как это сделано в реализации mcm меню mwse. Отдельное меню Angel, в котором будет не только "горячая клавиша смены языка" но и другие параметры(с описанием), которые можно менять. Эти параметры сможет менять любой пользователь, даже не сведущий во всем этом "моддинге и патчинге"

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

3 часа назад, Siberian Crab сказал:

Эта проблема аж в Старфилд перекочевала :trololo:
 

Хорошо быть умным, а не как я с нейросетками :royal:

Я сейчас посмотрел оригинальный text.dll от 1с весит 48 КБ.
image.png.7995757df3481d83a9d5fd4f0d0060db.png
Ну так вот, про сам ваш dll весом 23 КБ (о котором вы писали). Он либо ещё более ранней версии, чем 3.0.0, которая в исходниках Ангела на ГитХабе, либо я не знаю что это....

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

По поводу дрожания...

Координаты объектов в экстерьере задаются глобальными.

При прорисовке, за счет округления больших чисел происходит скачкообразное изменение

(за счет ограничения количества действующих знаков), а следовательно и дрожь предметов.

 

Я пробовал перенести свой остров далеко за карту. У меня там предметы на столе тряслись как в лихорадке при ходьбе.

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

3 часа назад, ksteel сказал:

Да, проблема в том, что НА ДАННЫЙ момент angel ини читается игрой только 1 раз - при запуске.

Ну это не настолько большая проблема, и сейчас в MWSE модах встречаются функции при настройке которых требуется перезапустить игру.
Что бы изменить настройки вручную редактированием angel.ini, в любом случае придется игру закрыть и редактировать файл, а тут просто потыкал в меню и перезапустил. Даже в таком виде большинству будет удобнее чем ковырять какие то файлы.
Если сможете сделать нативную поддержку lua то круто, если нет то костыль mwse вполне не плох.

4 часа назад, ksteel сказал:

но гипотетически даже можно сделать полноценное меню и встроить его в меню игры

Ну вот у меня на MWSУ вот так получилось. При изменении параметров записывает новые значения в angel.ini и требует перезапуск.
При открытии считывает существующие параметры, и если у пользователя стоит text.dll более младшей версии то отсутствующие настройки просто не показываются.
 

Morrowind 2025-10-07 19.14.35.712.jpg

Morrowind 2025-10-07 19.14.41.512.jpg

Morrowind 2025-10-07 19.14.47.961.jpg

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

1 час назад, Pirate443 сказал:

Ну это не настолько большая проблема, и сейчас в MWSE модах встречаются функции при настройке которых требуется перезапустить игру.
Что бы изменить настройки вручную редактированием angel.ini, в любом случае придется игру закрыть и редактировать файл, а тут просто потыкал в меню и перезапустил. Даже в таком виде большинству будет удобнее чем ковырять какие то файлы.
Если сможете сделать нативную поддержку lua то круто, если нет то костыль mwse вполне не плох.

Ну вот у меня на MWSУ вот так получилось. При изменении параметров записывает новые значения в angel.ini и требует перезапуск.
При открытии считывает существующие параметры, и если у пользователя стоит text.dll более младшей версии то отсутствующие настройки просто не показываются.
 

Morrowind 2025-10-07 19.14.35.712.jpg

Morrowind 2025-10-07 19.14.41.512.jpg

Morrowind 2025-10-07 19.14.47.961.jpg

Это отличная модификация! Его (меню) имел ввиду в виде отдельного меню как настройки, загрузить игру... Но ваш вариант по просту исключает скачки игрока по разным меню, что может доставлять неудобство! Ваш вариант лучше!

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

1 час назад, olol сказал:

По поводу дрожания...

Координаты объектов в экстерьере задаются глобальными.

При прорисовке, за счет округления больших чисел происходит скачкообразное изменение

(за счет ограничения количества действующих знаков), а следовательно и дрожь предметов.

 

Я пробовал перенести свой остров далеко за карту. У меня там предметы на столе тряслись как в лихорадке при ходьбе.

Ох сколько новых(для меня)-старых багов придётся исправлять =)

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

Небольшие подвижки для апгрейда моей версии 3.00 до эталонной 3.01:

1. Провел небольшой анализ и дизассемблинг, я нашёл функцию FixLevelUpMessages из версии text.dll GFM 5.7

image.png.c856cc436986ae418e1b17321ae024fe.png

if (DAT_1002a074 == 3) скорее всего проверяет версию исполняемого файла

Патчит память по адресам 0x5d9281 - 0x5d92a6 с помощью FUN_10008460

Использует функцию FUN_10008460 для записи байтов в память

Адреса 0x5d9281-0x5d928a: записывает байты [0xb8, 0x38, 0x0e, 0x7a, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90]
Адреса 0x5d929d-0x5d92a6: записывает байты [0xb8, 0x7c, 0x35, 0x79, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90]

Далее следует Функция, которая делает патчинг памяти (вообще простой wrapper):

image.png.4f9de0d1031a7ba7a5224f4f9e7c3c15.png

VirtualProtect(param_1,param_3,0x40,&local_4); - снимает защиту памяти (уже есть в text.dll 3.00)

_memset(param_1,(uint)param_2,param_3); - записывает байты в память (уже есть в text.dll 3.00)

VirtualProtect(param_1,param_3,local_4,&local_4); - восстанавливает защиту (уже есть в text.dll 3.00)

Исходя из анализа я сделал вывод, что  — эта функция не что иное, как  функция FillBytes, из файла HelperFunctions.cpp

2. Приступил к реализации:
- создал в папке "\morr_text_dll-master\src" новенький файл levelup_fix.cpp следующего содержания (отдал дань уважения Angel Death):

image.thumb.png.dfc40cd6e66a613d6808b6a04d3ba31a.png

3. В файле morr_text_dll.cpp в функции Initialize, добавил после других Init...() функций:

image.png.4150f1faa24adfed60364e660ba92876.png

4. В файле stafx.h объявил о функции:
image.png.bdea85f5078f445e3d5c84c600ca0b0e.png

4. В CmakeLists.txt добавил наш новенький патч табличек:
image.png.04fedce97c97bc96a17aa03c8432b511.png

5. Компиляция прошла без ошибок!!!
image.png.d9880c3a2bd3531a2a2b8a303810cac6.png

Файл "потолстел" на 1кб:image.png.205a84a1780b170cdfe64d1aa738a661.png

6. Запуск показал, что текст при повышении уровня в наличии. УРА!
image.png.4b8d2efe3bf2d5053b5b16280de6f06a.png
п.с. прикладываю "шакального качества" ролик для ирллайф подтверждения.

ФАЙЛЫ В ШАПКЕ ТЕМЫ И НА СТРАНИЦЕ ЗАГРУЗКИ TEXT.DLL ПОКА НЕ МЕНЯЛ — НУЖНЫ ТЕСТЫ! (я записывал данный ролик на оригинальной игре МТВ БЕЗ МСР И МГЕ)

angel.ini text.dll

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

Итак, быстренько перед работой проанализировав Console.cpp (заметка: надо бы вообще полную ревизию .cpp файлов всего text.dll сделать на предмет уязвимостей и сделать их "современными"), я выявил несколько потенциальных проблем:

  1.  Проблемное место №1: sprintf без ограничения.
    КОМБО
     sprintf(buf, "%s", raw)+char buf[1024]; 
    вот как раз таки если raw будет длиннее 1024 символов — будет переполнение буфера!!! (как вариант заменить на char buf[1024] strncpy(buf, raw, sizeof(buf) - 1) buf[sizeof(buf) - 1] = '\0' (гарантирует нуль-терминацию, но надо смотреть).
  2. Потенциальная проблема №2: _vsnprintf с магическим числом. (в этом случае немного ЛУЧШЕ, но не идеально, надо думать).
    _vsnprintf(tmp, 1024, format, argptr)+char tmp[1024] 
    _vsnprintf 
    ограничивает вывод, но если строка слишком длинная, она может быть обрезана. (
    как вариант заменить char tmp[1024]; _vsnprintf(tmp, sizeof(tmp), format, argptr) tmp[sizeof(tmp) - 1] = '\0' (гарантирует нуль-терминацию, но надо смотреть)
  3. Потенциальная проблема №3: Работа с указателями:
    В функции GameCommandLineDump  идёт опасное приведение типа:
    Сon_Printf( "%8.8X: %s", adress, ( char * ) adress ). Что это значит? Берется произвольный адрес памяти и трактуется как строка и если в этом участке памяти нет нуль-терминатора, то всё пиши прощай, привет "segfault". 
    Вобщем тоже надо думать.
  4. Возможно что-то ещё.

Выводы из быстрого анализа: 

  • buf имеет размер 1024 байта
  • sprintf копирует ВСЮ строку raw в buf без проверки длины
  • Если raw длиннее 1023 символов + нуль-терминатор - BUFFER OVERRUN!

Почему это вызывает проблему с Tamriel Rebuilt, либо сложными скриптами, они:

  • Переполняют buf[1024] в GameCommandLine
  • Вызывают buffer overrun
  • Ломают стек вызовов 
  • Приводят к Runtime Error

Что я буду делать? Как уже описал выше - (сначала поищу есть ли лучшие решения) потом исправлю эти строки, А ТАК ЖЕ, подумаю на сколько можно увеличить буфер....если взять примеры скриптов Пирата (if-if-if-if-if....и так далее if через каждую строчку x15), то в тестовом режиме можно увеличить буфер до 2-4кб вместо 1 КБ который установил давным давно Angel Death. Я всё ещё нге знаю память игры и эксперименты с этим могут повлечь самые разные последствия. Если всё будет гладко, то ещё увеличу буфер до 8КБ (чтобы на века).

Вот такой анализ, и чем я буду заниматься дальше, но это уже будет после того как вернусь с работы, всем хорошего дня! 😃 

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

18 часов назад, olol сказал:

По поводу дрожания...

Координаты объектов в экстерьере задаются глобальными.

При прорисовке, за счет округления больших чисел происходит скачкообразное изменение

(за счет ограничения количества действующих знаков), а следовательно и дрожь предметов.

 

Я пробовал перенести свой остров далеко за карту. У меня там предметы на столе тряслись как в лихорадке при ходьбе.

Не для текущего конечно состояния DLL (он еще сырой), но для задела на будущее. Эта проблема наблюдалась и в английской версии? Или это "особенность" русской локализации?

upd

Вообще, после изучения console.cpp могу предположить вот что:

Где-то в оригинальном движке есть что-то типа:

struct Object {

    float x, y, z;  (32-битные float)

};

Что это значит? (все еще гипотеза):

1. Float (32-bit) имеет ограниченную точность ~6-7 знаков

2. При больших координатах (в тысячах единиц) младшие биты по просту теряются

3. Округление происходит "скачками" → объекты "дрожат"

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

А причем тут русская локализация?

Координаты задаются в числах, а не в текстовом виде.

В textdll этого не должно быть.

А замена флоат на доубле это самая очевидное решение.

А если там уже доубле, то проблема...

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

1 час назад, olol сказал:

А причем тут русская локализация?

Координаты задаются в числах, а не в текстовом виде.

В textdll этого не должно быть.

А замена флоат на доубле это самая очевидное решение.

А если там уже доубле, то проблема...

Я наверное неправильно выразился и вы не так поняли.

А. Если этот синдром наблюдается только в русской версии от 1с, то решение сейчас лежит у меня в файлах в пк. 

Б. Если это проблема обеих версий, то решение лежит в morrowind.exe, который надо дизассемблить и искать байты памяти в которых задаются координаты, что явно дольше будет. 

В text.dll и фикса бездоспешного боя не должно было быть и других фиксов, потому что это TEXT dll изначально был (насколько я понимаю) для простого перевода x)

Решение № 1: Double - самое сложное техническое решение, вы предлагаете вручную в 32 битный оригинальный движок внести 64 бита, что требует глубокой переработки.

Решение № 2: Смещение координатной системы: вместо 0.0 использовать локальные координаты относительно региона, которые будут идти к какому то одному "центральному региону"

Решение №3: самое глупое привязать центр мира к игроку. И получится как в том кошмаре, когда вы бежите и не занимаетесь с места одновременно, потому что здания как-то-привязаны к координатам (хотя почему тогда они не трясутся, а только НПС и тарелки/ложки)

Я не модостроитель, я не знаю как влияют координаты на моддинг и как Tes construction set с ними воздействует. На данный момент я могу просто строить гипотизы, пока четко не увижу код-цифры

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

Цитата

Решение №3: самое глупое привязать центр мира к игроку

Так небо же к игроку привязано. И весь рендеринг от его координат же.
2х ячейки во все стороны.
Все что дальше 4х - не существует, в смысле не загружается.

 

Цитата

В text.dll и фикса бездоспешного боя

Печально. Все время "казалось", что это заслуга именно, что МСП, а не отдельное направление патчинга.
Было интересно исправить сие упущение!

Благодарствую за интересный исторический экскурс, теперь будет чем пополнить Заметки!
По Ангел.Ини не так чтоб много инфы (было) а тут прям, Праздник!

 

Цитата

проанализировав Console.cpp


Ака консоль.
Там в движке есть такой параметр:
ConsoleBuffer=ЪЪЪ
https://morrowind-nifs.github.io/NotesForModmakers-ver.3.3/mw_ini_new_things.htm

Он как-то связан с этим буфером?
Т.е. не так чтобы, но обращу внимание на этот параметр, на всякий случай.

 

Цитата

Если сможете сделать нативную поддержку lua то круто, если нет то костыль mwse вполне не плох.

Такое уже Достойно в Легенды Складывать (будет).
Мечты всех древних и грядущих Нереваров в одном флаконе, смешаны, но не взболтаны.
А на правах "нашего ответа Лорду Чамберлену" то вовсе Классикой можно сразу Считать (будет).

 

Цитата

Отдельное меню Angel, в котором будет не только "горячая клавиша смены языка" но и другие параметры(с описанием), которые можно менять.

Мвсе тихо Радуется видя Достойного (Наследника)(или кого Иного).
Давать пользователю удобные возможности подстроить важные параметры под себя, это Хороший Тон и Уважение к Пользователю в 2х размере!
 

Цитата

Эта проблема аж в Старфилд перекочевала

Беседка как она есть.
Насиловать движок 25летней давности, это такой же Шедевр, как и та Игра, которая насилует беседку уже 20лет.

Не давая ей кануть в лету, хотя она и старается изо всех сил. Пожелаем же ей дальнейших Успехов!
 

Цитата

Ну я бы не сказал что MWSE прям уж костыль. Так то и text.dll можно считать костылем, с помощью которого воткнули поддержку русского языка.

Если правильно понимаю, то МВСЕ работает монитором процесса.
В то время, как техт.длл сидит в потоке движка игры, создавая меньшую нагрузку на систему в целом. ?
Что до "поддержки языка", есть мнение, что ру-версия МВ.ехе, содержит какие-то (толи) хвосты, толи еще что, чего нет в аглицкой.
(опция QuickStart= например)
Но если все дело (ру Мв.ехе) только в поддержке кирилицы, тогда (появляется) вариант внедрения техт.длл в аглицкую версию, который способен решить проблему двух зайцев сразу. Впрочем, это уже будет совсем иная история.

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

Смена float на double, как и привязка координат, потребует перелопачивание движка.

Я сомневаюсь, что в textDLL необходимо пихать исправления багов движка.

Новый движок уже есть OpenMW и не нужно изобретать велосипед.

А тот же бездоспешный бой правится в мсп.

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

18 минут назад, olol сказал:

Новый движок уже есть OpenMW и не нужно изобретать велосипед.

OpenMW и есть тот самый велосипед, который не нужно было изобретать.
 

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

В 2008ом году впечатления были иные, но с каждым годом они все больше приобретали статус лесипеда, что удручает, хотя мы (не унываем). Однако, на фоне назревающей фрагментации версий (МП) начинают набегать дополнительные сложности в его эксплуатации (но мы не унываем далее).
 

Цитата

Я сомневаюсь, что в textDLL необходимо пихать исправления багов движка

Есть мнение, что у этого есть своя область для применения.
Так как, МСП уже некоторое время не вносит новых правок, полностью перенеся это на могучие плечи МВСЕ.
Которое, однако, работает далеко не на всех ОС, а дальше, все может стать еще хуже.
Интеграция же, патчей движка в егоже детальку, избавляет от необходимости лишних резидентов, предоставляя весь список исправлений в дефолтной комплектации.
 

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

1 час назад, olol сказал:

Я сомневаюсь, что в textDLL необходимо пихать исправления багов движка.

А куда еще пихать исправления багов движка, как не в DLL, к которому привязан оригинальный Морровинд? После того , как версия 3.01 подтвердится я займусь модульностю этого длл , что DLL будет подгружать за собой еще более мелкие правки:

Бесит следование нпс, которые постоянно глючат, теряют вас если вы прыгнули, или НЕ ДАЙ БОГ встали на камешек, который на 1 см выше, чем тот уровень, где они стоят - следуйте в (гипотетическую пока) папку textDLL\npclogic\следованиеиnpc.DLL (с исходниками).

Постоянно проваливаетесь под пол Вивека , при акробатике 100 и из-за подгрузки ячеек? Проследуйте в папку textDLL\playerlogic\playermovement.dll(с исходниками)

Надоел мусор в сохранениях, который постоянно надо чистить через (xEdit.... вроде так называется программа? не помню точное название), порадуйтесь мусора в сохранениях больше не будет, потому что это будет в ядре textDLL\core

А вылеты при смене ячеек? Или появление мусора от быстрой телепортации/силтстрайдера? Очень много чего можно будет избежать, убрав это накорню 😁

И вся прелесть в том, что это все работает из коробки, в момент запуска игры, а не после ее загрузки. Все это будет максимально гибким и редактируемым.

upd. Вы абсолютно правы в той части, что МСР/mwse делают уже что-то, что делает text.dll (или может делать), но в случае с text.dll вы просто оденете ошейник на Morrowind.exe и будете командовать ему что делать. Сами. В то время как mwse/MCP чужеродные пришитые органы для morrowind.exe, то text.dll для него икона и второе сердце.

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   1 пользователь онлайн

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