MCP если я ничего не путаю, как раз-таки с Fullrest репака, а нейросети вот инструкция https://docs.google.com/document/d/13JVzJQ54jxppOsg8dlxnoQOhkzPOWb8SfKl3mtlZ34Q/edit?tab=t.0,
а вот гитхаб автора https://github.com/drzdo/immersive_morrowind_llm_ai.
(з.ы. Это не моя страница и лично автора я не знаю, автором мода НЕ являюсь, даже не общался с ним) там есть ссылки и на гитхаб и на ютуб с плейлистом, очень комичные моменты у него присутствуют. Интегрирую — это я конечно громко сказал (автор мода уже их интегрировал) внесу ясность - я занимаюсь рефакторингом этого мода. (кстати именно для него я и перекомпелировал text.dll, чтобы было удобнее общаться с АИ НПС в обычном диалоговом окне с ЛЮБЫМ НПС)
Если он это один сделал, то он очень талантливый человек (по моему мнению), даже слишком талантливый х). Идея класс, но реализация (для меня), спорная.
Там (в оригинале) доступны 3 нейросети на выбор - Gemini flash, Mistral, и ещё что-то. Любая нейронка на Open Ai. Можно даже запустить через LLM Studio локально на пк (но для этого нужен компудахтер мощностью сравнительный с компудахтером NASA для управления всеми спутниками Земли, потому я отказался от локальной реализации этого мода).
Так вот, я добавил ещё deepseek-chat. (В планах вообще ещё добавить yandex gpt и Giga chat. Для пользователей из РФ их проще оплачивать). Там ничего сложного — просто поменять строчки в confyg.yml
Естественно все АИ требуют api ключи от нейросетей (ну Gemini flash можно использовать 15 минут в день и то по ограниченному количеству токенов, или найти какой-либо ещё один "бесплатный ключ" в чём-то ограниченный). В этом плане deep seek (опять по моему скромному мнению) явно выигрывает - дешево (даже очень) и сердито. Умный быстрый, контекст понимает, за ЛОР шарит, хахамбы и кеки не выдает (если самому в промт не вписать.
В будущем (не знаю насколько далёком) хочу перенести этот мод вообще на OpenMW (в данный момент ознакамливаюсь с документацией) Lua скрипты новее, движок открытый, костылей никаких не надо, я надеюсь. (по типу используемой заглушки от автора оригинала мода для UI Extensions (что кстати очень гениально было и тонко на мой взгляд).
Что мною было сделано на данный момент:
проведен тотальный анализ всех файлов — кто за что отвечает, зачем нужен, какие взаимосвязи, тестово убрал их Промтов: "мат и всякую не лорную бредятину — какие-то частушки, матерные частушки, современные слова по типу "прикольно" и т.д.
изменил полностью npc_personality_generator.py, теперь он собирает архетип личности не по типу:
"ты родился в Балморе вчера, ты орк, который ненавидит легкие доспехи и любит вонючих грязекрабов, ты бьешь всех кто с тобой не согласен. И ещё ты называешь главного героя Н'Вахом. И плевать что ты орк.",
а нормально: - Пол/Раса/Знак/Класс/Фракция/Ранг учитываются даже АРХЕТИПЫ личностей (сангвиник, холерик, меланхолик флегматик, их помеси).
Получается при генерации что: - не все данмеры местные (кстати тут включена функция исключения по типу Камонны Тонг, Шестого дома, некоторые ранги в некоторых фракциях и т.д.), не все каджиты наркоманы и любят лунный сахар, не все орки тупые, не все норды грязные варвары любящие рыгать и пердеть, не все босмеры Фаргот и так далее.
занялся сейчас npc_spаwn_list.py - хочу сделать из маленькой ограниченной книги "того что может давать тебе нпс" на целые лорные библиотеки (Construction Set мне в помощь).
ну и другие изменения (их очень много, например чтобы нпс при разговоре не подходили в плотную к тому с кем разговаривают, да это добавляет своего рода иммерсивности......но...вы помните того погонщика Силт Страйдера из Гнисиса, который вечно проваливал под мостик и умирал? Либо Лодочников, которые вечно тонули из-за того что они смещались с места? Вот то-то и оно 😃 . Чтобы НПС не пялились все на тебя, словно ты в западном вестерне весь такой чужак, зашёл в местную таверну с револьвером на перевес (кстати, из-за этой функции на тебя смотрят даже убитые НПС (трупы крутятся 😄).
Работы очень много, особенно очень много захламлённых файлов, которые отнимают 70 (если не 85)% всего времени:
Аналогия: Директор сидит в кабинете.
ПО ИДЕЕ директор должен просто собирать информацию, принимать отчёты от всех менеджеров (которые прибегают к директору в кабинет, кладут отчёт на стол и убегают во свояси, в свою рабочую дочернюю папку обратно). После этого директор ставит резолюцию "ВСЕ ПРОВЕРЕНО, ДОКУМЕНТЫ ГОТОВЫ"и отправляет структурированный понятный отчёт дальше (куда-то там в головной офис допустим).
ЧТО МЫ ИМЕЕМ НА ДАННЫЙ МОМЕНТ
Этот бедолага директор, не то что собирает эти отчёты — ОН САМ ЛИЧНО носится по всему заводу, крутит гайки, меняет колёса у тракторов и ещё и в столовой кушать готовит для работников завода :D. Естественно миллиард функций и блоков кода вписано в бедные раздутые жирные файлы. А ведь можно сделать элегантнее и красивЕе.
И таких вот горе-дерикторов (файлов) целая Python часть мода (Lua часть маленькая, всего 19 файлов):
🌳 Структура мода Morrowind AI:
=========================================
📁 docs/ Так что когда будет форк — не скажу точно. (там уже есть один на бесплатные разщговоры нпс голосом но
📁 immersive_morrowind_db/ по моему мнению, как кто-то выразился на ютубе и, я его мнение целиком поддерживаю, для меня
📁 immersive_morrowind_llm_logs/ Морровинд - это больше буковки в тексте и чтение, чем общение голосом и отеты голосом нпс.
📁 src/
📄 .env (21 B) (з.ы. я сам играл в мод совсем немного - но увлёкся настолько, что аж погрузился в разработку и тестирование, но рассказать
📄 Текстовый документ.txt (498 B) и убедить Селлуса Гравиуса (именно его первого, потому что он главный по званию !!! по биографии!!), по приказу Селлуса
⚙️ config.example.yml (1,40 KB) - Ганциеля Дуара, и ещё пару легионеров о том, что в пещере Аддумасартус контрабандисты рабов держат было весело.
⚙️ config.yml (2,76 KB) Притом что Гравиус остался снаружи, а легионеры со мной внутрь пошли, после чего меня оттуда выгнали (если бы я не
📄 LICENSE (34,32 KB) ушёл они бы выписали мне шрафт) т.к. я ГРАЖДАНСКИЙ и не состою в легионе, был первого уровня в рваном тряпье и т.д.
📖 README.md (30,03 KB А Гравиус категорически не хотел меня пускать внутрь как гражданское лицо, сказал ждать, что легионеры сами справятся 😄
📊 rpgaiserver.log (894 B)
📄 rpgaiserver.log.1 (884 B) А я то блин понимаю, что пока меня там нету - ячейка мертва, там ничего не происходит, это не Тес 5 Скурим.
📄 rpgaiserver.log.2 (883 B) Так и простоял прау минут, после чего зашёл алегионеры что стояли у входа давай меня выгонять из пещеры, мол капитан
📄 rpgaiserver.log.3 (791 B) Гравиус сказал бла бла бла. Весело вобщем, эмоций полный вагон))
📄 Screenshot_1.jpg (989,73 KB)
📄 Screenshot_2.jpg (1,06 MB)
📄 Screenshot_3.jpg (300,41 KB)
📁 mwse_mod/
📁 server/
📁 MWSE/
📁 mods/
📁 UI Expansion/
📁 zdo_immersive_morrowind_ai/
🌙 MenuDialog.lua (184 B)
📁 common/
📁 i18n/
📁 service/
📁 ui/
🌙 config.lua (515 B)
🌙 main.lua (7,78 KB)
🌙 mcm.lua (2,60 KB)
📦 mcm.rar (921 B)
🌙 actor_stats.lua (4,09 KB)
🌙 diagnostic_injector.lua (3,23 KB)
🌙 eventbus.lua (6,95 KB)
🌙 util.lua (5,48 KB)
🌙 eng.lua (237 B)
🌙 rus.lua (290 B)
🌙 actor_say_service.lua (507 B)
🌙 env_service.lua (1,58 KB)
🌙 npc_service.lua (31,87 KB)
🌙 player_service.lua (11,66 KB)
🌙 stt_service.lua (1,86 KB)
🌙 animate_label.lua (2,30 KB)
🌙 dialog.lua (13,03 KB)
🌙 hud.lua (6,16 KB)
📦 hud.rar (1,69 KB)
📁 app/
📁 database/
📁 eventbus/
📁 game/
📁 llm/
📁 stt/
📁 tts/
📁 util/
🐍 main.py (72 B)
📄 requirements.txt (216 B)
🐍 app_config.py (3,99 KB)
🐍 app.py (4,38 KB)
🐍 database.py (2,46 KB)
📁 backend/
📁 data/
📁 event_data/
🐍 bus.py (3,46 KB)
🐍 event_consumer.py (320 B)
🐍 event_producer.py (174 B)
🐍 event.py (591 B)
🐍 rpc.py (4,47 KB)
🐍 abstract.py (387 B)
🐍 mwse_tcp.py (3,11 KB)
🐍 actor_ref.py (342 B)
🐍 actor_stats.py (1,16 KB)
🐍 cell.py (319 B)
🐍 crime.py (334 B)
🐍 dialog_data.py (488 B)
🐍 env_data.py (1,63 KB)
🐍 id_with_name.py (88 B)
🐍 nakedness.py (122 B)
🐍 npc_data.py (2,07 KB)
🐍 npc_response_reaction_data.py (252 B)
🐍 player_data_fast.py (360 B)
🐍 player_data.py (884 B)
🐍 position.py (312 B)
🐍 topic_data.py (105 B)
🐍 event_data_from_game.py (4,94 KB)
🐍 event_data_from_server.py (4,14 KB)
🐍 event_data_rpc.py (3,08 KB)
📁 data/
📁 i18n/
📁 service/
🐍 game_master.py (22,21 KB)
🐍 game_setup.py (5,85 KB)
🐍 npc_behavior.py (180 B)
🐍 npc_personality.py (131 B)
🐍 npc.py (481 B)
🐍 player_ref_looked_at.py (309 B)
🐍 player.py (265 B)
🐍 story_item.py (5,16 KB)
🐍 story.py (337 B)
🐍 time.py (1,98 KB)
🐍 i18n.py (2,56 KB)
📁 event_producers/
📁 npc_services/
📁 player_services/
📁 providers/
📁 scene/
📁 story_item/
📁 util/
🐍 event_producer_from_story.py (11,24 KB)
🐍 npc_behavior_service.py (8,88 KB)
🐍 npc_database.py (3,99 KB)
🐍 npc_intention_analyzer.py (18,99 KB)
🐍 npc_llm_message_history_builder.py (2,43 KB)
🐍 npc_llm_pick_actor_service.py (34,62 KB)
🐍 npc_llm_response_producer.py (5,18 KB)
🐍 npc_llm_system_instructions_builder.py (61,00 KB)
🐍 npc_personal_story_service.py (2,20 KB)
🐍 npc_personality_generator.py (53,75 KB)
🐍 npc_service.py (6,18 KB)
🐍 npc_spawn_list.py (3,34 KB)
🐍 npc_speaker_service.py (14,25 KB)
🐍 local_player_speaking_listener.py (2,24 KB)
🐍 player_database.py (2,20 KB)
🐍 player_intention_analyzer.py (6,20 KB)
🐍 player_personal_story_service.py (3,85 KB)
🐍 player_provider.py (1,35 KB)
🐍 cell_name_provider.py (1,37 KB)
🐍 dialog_provider.py (2,58 KB)
🐍 dropped_items_provider.py (1,48 KB)
🐍 env_provider.py (897 B)
🐍 scene_instructions.py (4,19 KB)
🐍 npc_story_item_helper.py (3,83 KB)
🐍 story_item_to_history.py (10,09 KB)
🐍 format_date.py (878 B)
🐍 map_value_in_range.py (322 B)
🐍 prompt_builder.py (2,25 KB)
🐍 text_sanitizer.py (1,58 KB)
📁 backend/
🐍 llm_logger.py (5,11 KB)
🐍 message.py (162 B)
🐍 session.py (1,89 KB)
🐍 system.py (2,73 KB)
🐍 abstract.py (409 B)
🐍 anthropic.py (2,61 KB)
🐍 dummy.py (285 B)
🐍 google.py (2,04 KB)
🐍 mistral.py (2,64 KB)
🐍 openai.py (2,62 KB)
📁 backend/
🐍 input.py (1,95 KB)
🐍 system.py (5,39 KB)
🐍 abstract.py (351 B)
🐍 dummy.py (185 B)
🐍 msspeech.py (3,00 KB)
🐍 vosk.py (5,29 KB)
🐍 whisper.py (3,93 KB)
📁 backend/
🐍 file_list_rotation.py (764 B)
🐍 request.py (121 B)
🐍 response.py (117 B)
🐍 system.py (4,79 KB)
🐍 voice.py (539 B)
🐍 abstract.py (393 B)
🐍 dummy.py (242 B)
🐍 elevenlabs.py (6,49 KB)
🐍 colored_lines.py (163 B)
🐍 counter.py (216 B)
🐍 diagnostic_injector.py (3,53 KB)
🐍 distance.py (291 B)
🐍 fs.py (345 B)
🐍 gen_id.py (357 B)
🐍 logger.py (3,57 KB)
🐍 now_ms.py (71 B)
А если не читаете "многобуков", то короткая ремарка: человек открыл (по крайне мере для меня) дверь в АИ + Морровинд - создал "базу для этого", а я вошёл в комнату, где начал наводить свой порядок 😃