14 мин.
0

Как установить Skyrim с нейросетью: подробная инструкция. Придется попотеть!

«Скайрим», который мы заслужили.

Кажется, за последние 15 лет мы видели The Elder Scrolls V: Skyrim во всех возможных обличьях – от официальных переизданий до безумных фанатских сборок. Но то, что происходит с игрой прямо сейчас, выходит за рамки привычного моддинга. Благодаря интеграции современных нейросетей, NPC в «Скайриме» наконец-то перестали быть набором заскриптованных реплик. Теперь они генерируют уникальные диалоги на ходу, помнят ваши прошлые поступки, реагируют на голос и озвучены живыми ИИ-голосами!

В этой статье мы подробно, шаг за шагом разберем, как установить «Скайрим» с нейросетью.

📌 6 масштабнейших модов для Skyrim. Каждый из них – как отдельное DLC

Что за мод с нейросетью в «Скайриме»

Когда мы говорим про «Skyrim с нейросетью», речь идет о полной технологической революции внутри игры. Благодаря энтузиастам, Скайрим удалось связать с мощными локальными ИИ и современными большими языковыми моделями (LLM) – аналогами ChatGPT, Claude. Самым популярным, стабильным и продвинутым решением на сегодняшний день является модификация Mantella (а также ее популярный ИИ-компаньон Herika).

Чтобы магия сработала, под капотом игры одновременно запускаются и синхронизируются три независимые технологии:

«Мозг» (LLM – языковая модель): отвечает за генерацию текста. Мод передает нейросети контекст: кто ваш персонаж, где вы находитесь, какая сейчас погода и что за NPC стоит перед вами. Нейросеть мгновенно генерирует ответ от лица персонажа, учитывая его характер, лор игры и ваши прошлые диалоги.

«Голос» (TTS – Text-to-Speech): превращает сгенерированный текст в аудио. Специальные нейросети (например, ElevenLabs или локальные модели) обучены на оригинальных голосах актеров Скайрима. В итоге ярл Балгруф или Серана говорят абсолютно новые фразы своими настоящими голосами и с правильными интонациями.

«Слух» (STT – Speech-to-Text): позволяет не печатать текст на клавиатуре, а просто говорить в микрофон. Игра распознает вашу речь и передает ее персонажу!

В итоге на практике вы можете спросить у любого встречного стражника, что он думает о Братьях Бури, попросить каджита рассказать о его родине или пофлиртовать с Лидией. Ответы никогда не повторятся.

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

Важный нюанс: cама игра не потянет такую вычислительную нагрузку. Мод работает как «мост» между Skyrim и серверами искусственного интеллекта (или мощностями вашей видеокарты, если вы запускаете ИИ локально). Именно поэтому процессу установки и настройки нужно уделить особое внимание.

Как установить Скайрим с нейросетью

1. Скачайте ГОГ-версию Skyrim: Special Edition, затем установите его. Для минимизации проблем с совместимостью модификаций избегайте версию игры для Steam.

2. Скачайте Skyrim Script Extender (SKSE). Качаем самый верхний вариант, «Current Anniversary Edition build 2.2.6 (game version 1.6.1179)». Распаковываем в папку с игрой. Файл skse64_loader.exe должен находиться в одной папке с SkyrimSE.exe.

3. Создайте на диске папку, куда будете складывать все, необходимое для игры с OpenAI. Например, пусть будет E:\OpenAI.

4. Скачиваем софт xVASynth v3. Причем скачиваем саму софт «xVASynth v3.0.0 Main app» и патч для нее, «v3.0.2 PATCH – DON’T FORGET THIS». Распаковываем программу в E:\OpenAI\xVASynth. Патч распаковываем поверх.

5. Скачиваем обновленный русский словарь транскрипции английских слов Russian Dictionary для xVASynth для наилучшего звучания NPC. Распаковываем его в E:\OpenAI\xVASynth\resources\app\python\xvapitch\text\dicts\ с заменой существующего.

6. Скачайте .lip and .fuz plugin for xVASynth. Распакуйте в папку E:\OpenAI\xVASynth.

7. Скачайте FaceFXWrapper 0.4. Первым в списке идет CK64Fixes Release 3.2, его качать не нужно. Распаковываем во временную папку и файл FaceFXWrapper.exe переносим в E:\OpenAI\xVASynth\resources\app\plugins\lip_fuz\, где уже лежит предыдущий плагин.

8. Скачайте xVADict — Elder Scrolls. Распакуйте в E:\OpenAI\xVASynth.

9. Скачайте голосовые модели. Сперва скачайте «Female Serana» и «Male Nord». Создайте папку E:\OpenAI\xVASynth\resources\app\models\Skyrim\ и распакуйте скачанные файлы туда. Переименуйте файлы .json и .pt из архива «Female Serana» в sk_serana.*, а файлы из архива «Male Nord» переименовываем в sk_malenord.*. Теперь делайте копию файлов «Сераны» в той же папке и переименуйте их в sk_femalenord.*. Откройте файлы json редактором и меняйте там имена файлов соответственно.

При обращении к NPC в игре, будет подхватываться одна из имеющихся голосовых моделей, если не найдено более подходящей. В логе «Мантеллы» будет выдаваться ошибка о несоответствии, но модель будет работать. Адекватно работающих и приятно звучащих русскоязычных моделей на данный момент немного, но никто не мешает в будущем скачать их больше и экспериментировать. Актуальные имена файлов, необходимые, чтобы игра подхватила модель, можно выяснить из лога «Мантеллы» при старте диалога.

10. Запускайте E:\OpenAI\xVASynth\xVASynth.exe. В правом верхнем углу нажмите на символ паззла и включите плагин .lip and .fuz file maker. Нажимите кнопку Apply, согласитесь с дефолтными настройками и закройте окно плагинов клавишей Escape.

11. Там же, в правом верхнем углу нажмите кнопку AE и в открывшемся окне подключите все слова в словарях CMUDicT и XVADict — Elder Scrolls. Закройте окно клавишей Escape.

12. В левом верхнем углу нажмите кнопку со стрелочками и в открывшемся списке выберите игру Skyrim. Список закроется и в основном окне появится список загруженных нами голосовых моделей.

13. В самом правом верхнем углу нажмите кнопку с шестеренкой. В открывшемся окне листаем список настроек вниз. Убираем подключение к дискорду, проверяем выбор динамиков и микрофона, проверяем пути к «Skyrim models path» и «Skyrim output path», еще ниже выбираем «Game (The .lip format)» – Skyrim/Fallout 3/Fallout NV. Под этой опцией ставим галочки: «Delete lip files», «Make fuz files» и «Skip existing». Закрываем окно настроек ескейпом и пока выходим из xVASynth.

14. Скачайте интерфейс нейросети KoboldCpp. Из списка файлов для загрузки нужен koboldcpp.exe, размером примерно 500 МБ. Сохраните его в E:\OpenAI\Kobold.

15. Скачайте образ самой нейросети. Есть два варианта: попроще и пошустрее, либо получше, но помедленнее. Сохраните туда же, в E:\OpenAI\Kobold. Если хотим включить зрение NPC, то докачиваем к ним образ графического распознавания.

16. Запустите koboldcpp.exe. Ждите загрузки окна интерфейса. В открывшемся окне снимите галочку с пункта Launch Browser, а ниже нажмите кнопку GGUF Text Model: Browse и выберите скачанный образ нейросетки. Заодно увеличиваем размер контекста до 8192.

Чтобы подключить зрение, переходим на вкладку «Loaded Files» и указываем скачанный образ распознавателя.

Нажимаем кнопку Save и сохраните настройки в файл settings.kcpps в ту же папку, где лежит koboldcpp.exe. Можете сделать два отдельных конфига, с зрением и без. Переключать их сможете из скрипта запуска сборки.

17. Скачиваем необходимые моды. Сохраняем пока в какую-нибудь временную папку.

Скачиваем Mod Organizer 2. Устанавливаем в E:\SkyrimAI\MO2\ и запускаем.

При первом запуске выбираем вариант Portable. Когда спросит про версию игры, указываем GOG. В следующем окне отметим profile-specific INI и сейвы. Устанавливаем ранее скачанные моды в том же порядке, в котором они указаны в списке на скачивание. Должно получиться так:

18.Mantella

Закрываем Mod Organizer. Переходим в папку E:\SkyrimAI\MO2\mods\Mantella\ и открываем в редакторе файл GPT_SECRET_KEY.txt. Вписываем туда строку: http://localhost:5001/api/

Далее переходим в E:\SkyrimAI\MO2\mods\Mantella\SKSE\Plugins\MantellaSoftware\ и открываем файл custom_user_folder.ini. Указываем там параметр custom_user_folder = E:/SkyrimAI/Mantella/
Это чтобы не лазить каждый раз в «Мои документы», используемые по умолчанию. Не забываем создать саму папку E:\SkyrimAI\Mantella.

По очереди запускаем xVASynth, KoboldCpp (первый раз может загружаться долго) и Mod Organizer. Запускаем «Скайрим» из мод органайзера. Ждем, пока запустится игра. Ждем, пока автоматически откроется окно консоли «Мантеллы». Любуемся на картину Малевича. Когда раздастся звук лопнувшей струны и откроется браузер, закрываем все к чертям.

Теперь у нас создались все необходимые конфиги. Для начала займемся самой игрой. Несмотря на то, что мы указали использовать локальный конфиг, ГОГ-овская версия, похоже, все равно лазит в «Мои документы». Поэтому идем в %USERPROFILE%\Documents\My Games\Skyrim Special Edition GOG. Удаляем Skyrim.INI, копируем туда файл E:\SkyrimAI\Skyrim\Skyrim_Default_ru.ini и переименовываем его в Skyrim.INI.

Далее открываем SkyrimPrefs.ini и правим его руками по вкусу или согласно многочисленным гайдам по оптимизациям и улучшениям. Но это можно и потом, а пока нас особенно интересуют следующие параметры:iSize W=1280iSize H=1024bFull Screen=0bBorderless=1bDialogueSubtitles=1bGeneralSubtitles=1
На всякий случай копируем получившиеся Skyrim.INI и SkyrimPrefs.ini в E:\SkyrimAI\MO2\profiles\Default.

Теперь открываем E:\SkyrimAI\Mantella\config.ini и вносим следующие изменения (актуально для Mantella v13.1). Код:

game = Skyrim

skyrim_mod_folder = E:\SkyrimAI\MO2\mods\Mantella

llm_api = KoboldCpp

model = Custom model

custom_token_count = 8192

llm_params = {

    «max_tokens»: 500,

    «stop»: [»#»]

    }

tts_service = xVASynth

xvasynth_folder = E:\SkyrimAI\xVASynth

fast_response_mode = True

fast_response_mode_volume = 15

low_resolution_mode = False

save_screenshot = False

image_quality = 100

custom_vision_model = True

vision_llm_api = KoboldCpp

vision_model = Custom Model

language = ru

auto_launch_ui = False

automatic_greeting = False

Далее, находим в этом же конфиге раздел [Prompts] и в нем многострочный параметр skyrim_prompt. Находим в нем строку: Remember to stay in character. И заменяем на
Don’t write instructions. Remember to stay in character.

Кстати, новые версии Мантеллы теперь имеют свой гуй, доступный в браузере по адресу http://localhost:4999/ui/?__theme=dark. Там можно оперативно включить или выключить зрение NPC, в зависимости от ситуации или чтобы увеличить скорость ответа. Но нужно учесть, что изменение параметра завершит текущий диалог, если он уже начат. Можно сразу создать ярлык для этого адреса, в папке E:\SkyrimAI. Пусть будет!

После первого уже нормального запуска «Скайрима» не забываем зайти в настройки Мантеллы уже в самой игре (Система –> Настройки модов –> Mantella –> General). Отключаем микрофон и назначаем кнопки для End Conversation и Add Custom Game Event. У меня это обычно [\] и [=] соответственно.

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

19. AutoHotkey. Раз мы не хотим каждый раз запускать все это вручную, пишем скрипт на AutoHotkey. Код – ниже. Отступы расставьте, как на скрине:

#Requires AutoHotkey >=2.0 if not WinExist(‘xVA Synth’) {    Run(‘xVASynth\xVASynth.exe’, ‘xVASynth’)    Sleep Floor(IniRead(«SkyrimAI.ini», «Delays», «xVASynthDelay», 1) * 1000)    if WinWait(‘xVA Synth’,,10) {       WinMove(0,0,1300,1000,’xVA Synth’)    } } if not WinExist(‘koboldcpp.exe’) {    if (IniRead(«SkyrimAI.ini», «Kobold», «Vision_LLM_load_enable», 0) == 1) {       Run(‘Kobold\koboldcpp.exe --config settings_vision.kcpps --highpriority’, ‘Kobold’)    }    else {       Run(‘Kobold\koboldcpp.exe --config settings.kcpps --highpriority’, ‘Kobold’)    }    if WinWait(‘koboldcpp.exe’,,10) {       PosX := IniRead(«SkyrimAI.ini», «Kobold», «Kobold_PosX», 1274)       PosY := IniRead(«SkyrimAI.ini», «Kobold», «Kobold_PosY», 0)       ResX := IniRead(«SkyrimAI.ini», «Kobold», «Kobold_ResX», 670)       ResY := IniRead(«SkyrimAI.ini», «Kobold», «Kobold_ResY», 520)       WinMove(PosX,PosY,ResX,ResY,’koboldcpp.exe’)    } } if not WinExist(‘ModOrganizer’) {    Run(‘MO2\ModOrganizer.exe «moshortcut://:SKSE»’, ‘MO2’)    WinWait(‘ModOrganizer’,,10)    Sleep Floor(IniRead(«SkyrimAI.ini», «Delays», «MO2Delay», 1) * 1000)    if WinExist(‘ModOrganizer’,,10) {       PosX := Floor(IniRead(«MO2\profiles\Default\skyrimprefs.ini», «Display», «iSize W», 1280) / 2 – 190)       PosY := Floor(IniRead(«MO2\profiles\Default\skyrimprefs.ini», «Display», «iSize H», 1024) / 2 – 70)    if WinExist(‘xVA Synth’) {      WinActivate(‘xVA Synth’)      WinMinimize ‘xVA Synth’    }    WinActivate(‘ModOrganizer’)       WinMove(PosX,PosY,,,’ModOrganizer’)    }    WinWait(‘Skyrim Special Edition GOG’,,10)    WinSetTitle(‘Skyrim Special Edition’)    if (IniRead(«MO2\profiles\Default\skyrimprefs.ini», «Display», «bFull Screen», 0) == 0) {       PosX := IniRead(«SkyrimAI.ini», «Skyrim», «Skyrim_PosX», 0)       PosY := IniRead(«SkyrimAI.ini», «Skyrim», «Skyrim_PosY», 0)       WinMove(PosX,PosY,,,’Skyrim Special Edition’)    } } PosX := IniRead(«SkyrimAI.ini», «Mantella», «Mantella_PosX», 1274) PosY := IniRead(«SkyrimAI.ini», «Mantella», «Mantella_PosY», 520) ResX := IniRead(«SkyrimAI.ini», «Mantella», «Mantella_ResX», 670) ResY := IniRead(«SkyrimAI.ini», «Mantella», «Mantella_ResY», 520) DelM := Floor(IniRead(«SkyrimAI.ini», «Delays», «MantellaDelay», 1) * 1000) while WinExist(‘Skyrim Special Edition’) {    Sleep DelM    if (WinExist(‘Mantella.exe’)) {       WinGetPos(&MantX,&MantY,,,’Mantella.exe’)       if (MantX != PosX or MantY != PosY) {          WinActivate(‘Mantella.exe’)          WinMove(PosX,PosY,ResX,ResY,’Mantella.exe’)          WinActivate(‘Skyrim Special Edition’)       }    } } if WinExist(‘Mantella.exe’) {    WinClose ‘Mantella.exe’ } if WinExist(‘KoboldCpp’) {    WinClose ‘KoboldCpp’ } if WinExist(‘xVA Synth’) {    WinClose ‘xVA Synth’ } FileDelete ‘Mantella\data\tmp\voicelines\save\*.wav’

20. Компилируем скрипт в EXE и кладем в E:\SkyrimAI. Рядом создаем файл SkyrimAI.ini и пишем туда:

[Delays]

xVASynthDelay = 1

MO2Delay = 1

MantellaDelay = 1

[Skyrim]

Skyrim_PosX = 0

Skyrim_PosY = 0

[Kobold]

Vision_LLM_load_enable = 1

Kobold_PosX = 1274

Kobold_PosY = 0

Kobold_ResX = 670

Kobold_ResY = 520

[Mantella]

Mantella_PosX = 1274

Mantella_PosY = 520

Mantella_ResX = 670

Mantella_ResX = 520

Два момента на заметку: во-первых, добавлено переименование окна «Скайрима». Сотрудники из GOG зачем-то изменили его, а именно на заголовок окна ориентируется функция зрения. Разработчики Мантеллы уже в курсе этой фичи, и в следующих версиях обещают учесть этот момент, тогда из скрипта можно будет убрать.

Во-вторых, в INI добавлен параметр, отвечающий за загрузку образа графического распознавателя в Kobold. Соответственно, нужны два отдельных конфига с соответствующими именами (settings.kcpps и settings_vision.kcpps). Теоретически, можно было бы привязать это непосредственно к конфигу Мантеллы, но он может меняться без перезапуска игры, а Kobold требует перезапуска. Поэтому пусть будут отдельно.

***

Еще по теме: