Great instructions! To give a bit of context, I actually left out ElevenLabs intentionally, since it's a bit expensive for regular gameplay. And there are also some ethical concerns of using voice of actors from game files. Although I disagree to this being ethically problematic, I still don't want to bother with this unnecessary discussions about that.
About Inworld, if you use following link, (which Inworld team generated for me with referral, and no I don't earn anything it's just for tracking for them to measure impact) you should get 200 minutes one-time bonus + 60 minutes of interaction time every day. This means you don't have to pay anything if you are under 60 minutes of interaction time.
About the rest of the stuff being annoyingly hard to install, I'm aware of that. But, I'm planning to make a playable version soon, so bear with me! :)
Thank you for your efforts, I am currently trying to install everything following your and Villaim's instructions as I am using MO2. Thank you Villaim.
After two days doing just that, I was able to finally install things and see the character responses in the Inworld workspace, but they don't appear in the game. Meaning, I talk to characters in game, but get no response in game. I think it's because I first was trying to do things only following your GitHub instructions, and then I found Villaim, and then I subbed to your Patreon. I must confirm that the whole installation process is truly annoying and as I'm just a web developer and not a modder, I didn't do all things smoothly, and I'm not even sure what's the issue at this point. I wasn't able to do absolutely anything with Creation Kit because it kept on freezing, leaving me with the only option of using the files you provided. I know, I know. You're working on a mod now, and probably in a few days or weeks my current worries will be worth nothing, but I am still curious on how to fix my problems and make it work, as I've already spent a lot of time trying to do it, as I am very passionate about playing a game so immersive, my favourite game.
i have an error at step creation kit add scripts "inworldConversation" ,it says: script "inworldConversation" had errors while loading, it will not be added to the object
and warings log: Cannot open store for class "SKI_WidgetBase", missing file?
When following the guide with the Node section, I get this error: Command I type: ts-node SkyrimClient.ts Error I get: TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for C:\Games\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\SkyrimClient.ts at new NodeError (node:internal/errors:405:5) at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:79:11) at defaultGetFormat (node:internal/modules/esm/get_format:124:36) at defaultLoad (node:internal/modules/esm/load:89:20) at nextLoad (node:internal/modules/esm/loader:163:28) at ESMLoader.load (node:internal/modules/esm/loader:603:26) at ESMLoader.moduleProvider (node:internal/modules/esm/loader:457:22) at new ModuleJob (node:internal/modules/esm/module_job:64:26) at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:480:17) at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34) { code: 'ERR_UNKNOWN_FILE_EXTENSION'
I typed this command for Node.js as there is a V20 Node JS issue:
node --loader ts-node/esm SkyrimClient.ts
But I am getting below error:
(node:25540) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time (Use `node --trace-warnings ...` to show where the warning was created) ReferenceError: exports is not defined in ES module scope at file:///C:/Games/Inworld-Skyrim-Mod-main/Inworld-Skyrim-Mod-main/Client/SkyrimClient.ts:28:23 at ModuleJob.run (node:internal/modules/esm/module_job:194:25)
Oof, I guess it's too complex for me, CMake is returning an error when trying to configure, first it was saying I didnt have 3.21 version (installed from VSC extensions directly) so I manually got 3.21, then it returns me this error : CMake Error at C:/Program Files/CMake/share/cmake-3.27/Modules/CMakeDetermineSystem.cmake:154 (message):Could not find toolchain file: /scripts/buildsystems/vcpkg.cmake I guess I'm doing it wrong but not gonna lie it's a bit tough for a newbie xD, hope someone can help me out, i"d love to try it
Creation kit is throwing me an error about not being able to create a store and after i hit yes to all and try attaching inworld, it said the script loads with errors and wouldn't be attached. I cant get any further :/ any ideas?
Here's a checklist: Are you running Creation Kit through ModOrganizer? Is iWantWidgets enabled? Are the PSC files of SkyrimSE/Data, SKSE, iWantWidgets and InWorldAI located in exactly the same folder structure? Does this folder structure match the path specified by the Creation Kit INI file?
yes yes i believe so i pasted the file path to the sources folder into it, even tried putting the contents of inworld scripts temp into skse's scripts folder to no avail. still getting the aforementioned error and i forgot to mention before, it gives me an error about loading more than 1master file and says load aborted. it then says "cannot open store for class "SKI_WidgetBase" , missing file?" even though widgets is enabled and loaded b4 and after creation kit is opened.
It's worth double-checking. By default it seems SKSE uses the structure Data\Scripts\Source while iWantWidgets uses Data\Source\Scripts. You could, as a test, copy and paste the iWantWidgets scripts into the SKSE folder. Though it's a good idea to keep them separated once it's sorted, from a mod management POV.
Multiple masters is turned off by default. Add these two lines below [General]in CreationKit.ini: bAllowMultipleMasterLoads=1 bAllowMultipleMasterFiles=1 and see how it goes.
yes, both follow their formats, copying widgets scripts to skse didn't fix the issue. although googling the error says it's an issue with skyui's .bsa file. so i tried using skyui 5.1 as well with no success. this last attempt i'm going to just delete the entire folder and redownload skyrim se.
edit: i finally got past the error regarding scripts by adding the SkyUI_SE.bsa file directly to skyrim's data folder and adding it to the creation kit's "SResourceArchiveList2" at the end.
thanks for helping me fix this. i finally got to the end and loaded the game, but pressing Y doesnt do anything XD I kept the cmd open from the node request to the inworld site. I needed to mute steam webhelper for constantly playing the title theme, hopefully the voices dont come from it.
Steamhelper shouldn't be related to the sound of this mod - this mod creates a once-off new hidden process to play each line.
It could be that the scripts has somehow not attached properly, or the quest is not being started. You can enable the Debug.Notification("Inworld Mod Started")line in the Event OnInit() function of the InworldConversation script to see if you get a notification with that text. Enable it by removing the ";" at the start of the line. Make sure you compile it in the CreationKit Papyrus editor after saving changes. You should also always load a save in-game that does not already have this mod enabled, to have a clean start (if you make any changes).
Okay, I figured it out so far. Had to unpack the BSA files and put them into my scripts folder. Probably pretty novice level stuff that I completely overlooked. Everything is running fine so far for the most part (crash wise) so the game is stable. Unfortunately it seems as if nothing is happening when I press Y (Used the Jarl for the test). I'll be working on it until it's functioning, so if I manage to solve the problem I'll update.
I followed the whole installation process and all seems fine, only i get an internal error from the running npm process if i talk to an supported npc. Did i mess something up?
here is the error log form npm
Connection is empty. Creating a new connection Requesting connecting to carlotta_valentia Error: 13 INTERNAL: Internal error. Please try again later at callErrorFromStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\call.ts:81:17) at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client.ts:356:55) at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client-interceptors.ts:454:34) at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client-interceptors.ts:416:48) at D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\resolving-call.ts:111:24 at processTicksAndRejections (node:internal/process/task_queues:77:11) for call at at ServiceClientImpl.makeUnaryRequest (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client.ts:326:42) at ServiceClientImpl.generateToken (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\make-client.ts:189:15) at node:internal/util:375:7 at new Promise (<anonymous>) at bound (node:internal/util:361:12) at WorldEngineClientGrpcService.<anonymous> (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:42:86) at Generator.next (<anonymous>) at D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:8:71 at new Promise (<anonymous>) at __awaiter (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:4:12) { code: 13, details: 'Internal error. Please try again later', metadata: Metadata { internalRepr: Map(5) { 'content-type' => [Array], 'content-length' => [Array], 'date' => [Array], 'via' => [Array], 'alt-svc' => [Array] }, options: {} } }
What would I have to do to add another npc. I assume i'd have to create the specific character in inworld, is there anything extra I would need to do to integrate them into my game?
Yeah in Inworld, and in ElevenLabs if you go the voice route.
For Inworld, you only need to modify the JSON files in Client\Templates\WorldBuilding of Bloc's mod. Your character should have an entry in SkyrimCharacters.json similar to the "balgruuf_the_greater" entry. Bloc goes over the details for speeding this up in his instructions.
For ElevenLabs it's a bit more involved, since Python is only a makeshift solution. Debugging and testing will have to happen on your end, but one relatively quick way would be to add a "NPC_BASE_ID" program argument to the Python script. The C++ code will then need to determine which NPC you are looking at and send this as the "NPC_BASE_ID" argument when starting the Python script. The Python script will then need to look up the NPC ID (you need to save a mapping there) and select the corresponding character to send in the ElevenLabs API call.
22 comments
To give a bit of context, I actually left out ElevenLabs intentionally, since it's a bit expensive for regular gameplay. And there are also some ethical concerns of using voice of actors from game files. Although I disagree to this being ethically problematic, I still don't want to bother with this unnecessary discussions about that.
About Inworld, if you use following link, (which Inworld team generated for me with referral, and no I don't earn anything it's just for tracking for them to measure impact) you should get 200 minutes one-time bonus + 60 minutes of interaction time every day. This means you don't have to pay anything if you are under 60 minutes of interaction time.
About the rest of the stuff being annoyingly hard to install, I'm aware of that. But, I'm planning to make a playable version soon, so bear with me! :)
Thank you for your efforts, I am currently trying to install everything following your and Villaim's instructions as I am using MO2. Thank you Villaim.
After two days doing just that, I was able to finally install things and see the character responses in the Inworld workspace, but they don't appear in the game. Meaning, I talk to characters in game, but get no response in game. I think it's because I first was trying to do things only following your GitHub instructions, and then I found Villaim, and then I subbed to your Patreon. I must confirm that the whole installation process is truly annoying and as I'm just a web developer and not a modder, I didn't do all things smoothly, and I'm not even sure what's the issue at this point. I wasn't able to do absolutely anything with Creation Kit because it kept on freezing, leaving me with the only option of using the files you provided. I know, I know. You're working on a mod now, and probably in a few days or weeks my current worries will be worth nothing, but I am still curious on how to fix my problems and make it work, as I've already spent a lot of time trying to do it, as I am very passionate about playing a game so immersive, my favourite game.
Thank you
I do hope to see your reply
script "inworldConversation" had errors while loading, it will not be added to the object
and warings log:
Cannot open store for class "SKI_WidgetBase", missing file?
Command I type:
ts-node SkyrimClient.ts
Error I get:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for C:\Games\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\SkyrimClient.ts
at new NodeError (node:internal/errors:405:5)
at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:79:11)
at defaultGetFormat (node:internal/modules/esm/get_format:124:36)
at defaultLoad (node:internal/modules/esm/load:89:20)
at nextLoad (node:internal/modules/esm/loader:163:28)
at ESMLoader.load (node:internal/modules/esm/loader:603:26)
at ESMLoader.moduleProvider (node:internal/modules/esm/loader:457:22)
at new ModuleJob (node:internal/modules/esm/module_job:64:26)
at ESMLoader.#createModuleJob (node:internal/modules/esm/loader:480:17)
at ESMLoader.getModuleJob (node:internal/modules/esm/loader:434:34) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
node --loader ts-node/esm SkyrimClient.ts
But I am getting below error:
(node:25540) ExperimentalWarning: Custom ESM Loaders is an experimental feature and might change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
ReferenceError: exports is not defined in ES module scope
at file:///C:/Games/Inworld-Skyrim-Mod-main/Inworld-Skyrim-Mod-main/Client/SkyrimClient.ts:28:23
at ModuleJob.run (node:internal/modules/esm/module_job:194:25)
Can someone please assist?
CMake Error at C:/Program Files/CMake/share/cmake-3.27/Modules/CMakeDetermineSystem.cmake:154 (message):Could not find toolchain file: /scripts/buildsystems/vcpkg.cmake
I guess I'm doing it wrong but not gonna lie it's a bit tough for a newbie xD, hope someone can help me out, i"d love to try it
Are you running Creation Kit through ModOrganizer?
Is iWantWidgets enabled?
Are the PSC files of SkyrimSE/Data, SKSE, iWantWidgets and InWorldAI located in exactly the same folder structure?
Does this folder structure match the path specified by the Creation Kit INI file?
yes
i believe so
i pasted the file path to the sources folder into it, even tried putting the contents of inworld scripts temp into skse's scripts folder to no avail.
still getting the aforementioned error and i forgot to mention before, it gives me an error about loading more than 1master file and says load aborted. it then says "cannot open store for class "SKI_WidgetBase" , missing file?" even though widgets is enabled and loaded b4 and after creation kit is opened.
Data\Scripts\Source
while iWantWidgets usesData\Source\Scripts
. You could, as a test, copy and paste the iWantWidgets scripts into the SKSE folder. Though it's a good idea to keep them separated once it's sorted, from a mod management POV.Multiple masters is turned off by default. Add these two lines below
[General]
in CreationKit.ini:bAllowMultipleMasterLoads=1
bAllowMultipleMasterFiles=1
and see how it goes.
this last attempt i'm going to just delete the entire folder and redownload skyrim se.
edit: i finally got past the error regarding scripts by adding the SkyUI_SE.bsa file directly to skyrim's data folder and adding it to the creation kit's "SResourceArchiveList2" at the end.
thanks for helping me fix this. i finally got to the end and loaded the game, but pressing Y doesnt do anything XD I kept the cmd open from the node request to the inworld site. I needed to mute steam webhelper for constantly playing the title theme, hopefully the voices dont come from it.
It could be that the scripts has somehow not attached properly, or the quest is not being started.
You can enable the
Debug.Notification("Inworld Mod Started")
line in theEvent OnInit()
function of the InworldConversation script to see if you get a notification with that text. Enable it by removing the ";" at the start of the line. Make sure you compile it in the CreationKit Papyrus editor after saving changes.You should also always load a save in-game that does not already have this mod enabled, to have a clean start (if you make any changes).
here is the error log form npm
Connection is empty. Creating a new connection
Requesting connecting to carlotta_valentia
Error: 13 INTERNAL: Internal error. Please try again later
at callErrorFromStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\call.ts:81:17)
at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client.ts:356:55)
at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client-interceptors.ts:454:34)
at Object.onReceiveStatus (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client-interceptors.ts:416:48)
at D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\resolving-call.ts:111:24
at processTicksAndRejections (node:internal/process/task_queues:77:11)
for call at
at ServiceClientImpl.makeUnaryRequest (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\client.ts:326:42)
at ServiceClientImpl.generateToken (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@grpc\grpc-js\src\make-client.ts:189:15)
at node:internal/util:375:7
at new Promise (<anonymous>)
at bound (node:internal/util:361:12)
at WorldEngineClientGrpcService.<anonymous> (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:42:86)
at Generator.next (<anonymous>)
at D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:8:71
at new Promise (<anonymous>)
at __awaiter (D:\ai mod\Inworld-Skyrim-Mod-main\Inworld-Skyrim-Mod-main\Client\node_modules\@inworld\nodejs-sdk\build\src\services\gprc\world_engine_client_grpc.service.js:4:12) {
code: 13,
details: 'Internal error. Please try again later',
metadata: Metadata {
internalRepr: Map(5) {
'content-type' => [Array],
'content-length' => [Array],
'date' => [Array],
'via' => [Array],
'alt-svc' => [Array]
},
options: {}
}
}
For Inworld, you only need to modify the JSON files in Client\Templates\WorldBuilding of Bloc's mod. Your character should have an entry in SkyrimCharacters.json similar to the "balgruuf_the_greater" entry. Bloc goes over the details for speeding this up in his instructions.
For ElevenLabs it's a bit more involved, since Python is only a makeshift solution. Debugging and testing will have to happen on your end, but one relatively quick way would be to add a "NPC_BASE_ID" program argument to the Python script. The C++ code will then need to determine which NPC you are looking at and send this as the "NPC_BASE_ID" argument when starting the Python script. The Python script will then need to look up the NPC ID (you need to save a mapping there) and select the corresponding character to send in the ElevenLabs API call.