Jump to content

Welcome to Obsidian Forum Community
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. If you already have an account, login here - otherwise create an account for free today!
Photo

Obsidian - Will you provide xml documentation or other editing tools on release?


  • Please log in to reply
13 replies to this topic

#1
mortimermcmire

mortimermcmire

    (1) Prestidigitator

  • Members
  • 22 posts
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer

Hello,

 

1. Are you going to write up a how-to guide on the exported xml files and how to do things like add dialogue/quests/items/spells? I've done all of those and I wonder if something like that is planned. I know whatever I write can't be nearly as extensive as anything you make, having a lot more experience. 

 

2. Are there any other neat releasable tools to add content to the game with? I'm sure you're well aware how much well-supported modding tools can add to a games community, having worked on many with them. Right now I can't seem to find a way to actually edit enemy spawns efficiently (I can think of one hack-y way to do it), but I know you're using unity which really wasn't meant for that. Another big modding hurdle is dialogue. Can you add lines purely through xml? Yeah if you hate your life. If the fabled obsidian dialogue tool can't be released maybe just some documentation on how things are laid out would be great. 

 

3. Maybe most importantly, are you considering adding an overwrite folder (like Baldurs Gate / Witcher 3)? A folder you can add custom files to (icons textures etc) and have them able to be pulled into the xml. An overwrite folder would also allow you to edit the xml without actually touching your base xml data itself. Imagine if two people want to add weapons, if you both have to edit bb_items it's going to be madness trying to get things to work together.

 

I've probably put more time into messing with the xml files than playing the beta at this point, haha. I've asked these questions in other places but having them here makes the most sense, probably. I am so insanely hyped for poe2.

 

-mort


  • CENIC, gogocactus and esyvjrt like this

#2
Boeroer

Boeroer

    Arch-Mage

  • Members
  • 15266 posts
  • Location:Bucharest, Romania
  • Lords of the Eastern Reach Backer
  • Deadfire Backer
  • Fig Backer
  • Black Isle Bastard!
It's Thanksgiving. You'll have to wait a bit before you can expect any answer from Obsidian. They left for the holidays. :)

#3
Archaven

Archaven

    (10) Necromancer

  • Members
  • 1509 posts
  • Deadfire Backer
  • Fig Backer

I hope so. Really looking forward to the community on various mods. Hopefully they don't lock down and restrict assets and the only available options on modding are just xmls.



#4
mortimermcmire

mortimermcmire

    (1) Prestidigitator

  • Members
  • 22 posts
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer

It's Thanksgiving. You'll have to wait a bit before you can expect any answer from Obsidian. They left for the holidays. :)

Oh yeah! Uhhh, I wanted to give them time to think of a good answer? :)



#5
mortimermcmire

mortimermcmire

    (1) Prestidigitator

  • Members
  • 22 posts
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer

update on my findings aka, I'm dumb!

 

I just assumed you had to overwrite the same json data files but it will load anything you put in there as long as its formatted correctly. I suspected this was the case but I was more interested in finding what was possible.

What I thought was the case:
-You had to edit the bb_items.gamedatabundle directly and add things to it
-This would be a nightmare if the game updated or you wanted to add more than one thing

What is actually the case:
-You can make a file called mort_is_dumb.gamedatabundle and add in anything you can think of, with properly formatted json, even just a single item or ability etc, and it'll load it into the game.
-You could technically have a self-contained single file that adds tons of items, skills, characters, etc.
-Entries are overwritten by the latest loading file. If you make a new file and copy estoc's data, then change the value to 9999 and save it, all estocs will inherit those stats.
-No overwrite folder is necessary, it's built in.

The good news for modders:
-Your life is going to be a lot easier than I thought
-A modding tool is as simple as a fillable json page

The good news for everyone:
-Mods are going to be very easy to install and uninstall.

The bad news:
-I can't seem to add or change custom strings in the same way. All entries in the data don't have their display names or descriptions in the json, they reference a number which pulls from the localized stringtable depending on what language you choose.
-I can add custom strings by editing the original stringtables but that will get sloppy.
-I also cannot edit original strings in the same way that I can edit the gamedatabundle entries by making a new file and overwriting
-I still don't know if custom assets can be loaded or things can be placed in world by modders.

tl;dr modding is good, I assumed the worst but we're in good shape folks, its very similar to BG modding


  • CENIC, Zap Gun For Hire, draego and 1 other like this

#6
draego

draego

    (7) Enchanter

  • Members
  • 909 posts
  • Lords of the Eastern Reach Backer
  • Deadfire Backer
  • Fig Backer
update on my findings aka, I'm dumb!
 
I just assumed you had to overwrite the same json data files but it will load anything you put in there as long as its formatted correctly. I suspected this was the case but I was more interested in finding what was possible.
 
What I thought was the case:
-You had to edit the bb_items.gamedatabundle directly and add things to it
-This would be a nightmare if the game updated or you wanted to add more than one thing
 
What is actually the case:
-You can make a file called mort_is_dumb.gamedatabundle and add in anything you can think of, with properly formatted json, even just a single item or ability etc, and it'll load it into the game.
-You could technically have a self-contained single file that adds tons of items, skills, characters, etc.
-Entries are overwritten by the latest loading file. If you make a new file and copy estoc's data, then change the value to 9999 and save it, all estocs will inherit those stats.
-No overwrite folder is necessary, it's built in.
 
The good news for modders:
-Your life is going to be a lot easier than I thought
-A modding tool is as simple as a fillable json page
 
The good news for everyone:
-Mods are going to be very easy to install and uninstall.
 
The bad news:
-I can't seem to add or change custom strings in the same way. All entries in the data don't have their display names or descriptions in the json, they reference a number which pulls from the localized stringtable depending on what language you choose.
-I can add custom strings by editing the original stringtables but that will get sloppy.
-I also cannot edit original strings in the same way that I can edit the gamedatabundle entries by making a new file and overwriting
-I still don't know if custom assets can be loaded or things can be placed in world by modders.
 
tl;dr modding is good, I assumed the worst but we're in good shape folks, its very similar to BG modding

 

I was just messing with those files. I was worried also that you would have to reedit those file everytime an update came out but nice to know you can create your own mod file.


Edited by draego, 28 November 2017 - 07:42 PM.


#7
BMac

BMac

    Programmer

  • Developers
  • 410 posts
  • Lords of the Eastern Reach Backer

-You can make a file called mort_is_dumb.gamedatabundle and add in anything you can think of, with properly formatted json, even just a single item or ability etc, and it'll load it into the game.
-You could technically have a self-contained single file that adds tons of items, skills, characters, etc.
-Entries are overwritten by the latest loading file. If you make a new file and copy estoc's data, then change the value to 9999 and save it, all estocs will inherit those stats.
-No overwrite folder is necessary, it's built in.

If you don't want to rely on the order of the files for overriding, there is an override folder you can use.  This is probably a slightly better way to do mods.
 
The game's data is in Pillars of Eternity II\PillarsOfEternity2_Data\exported\design\gamedata, which is what you're using.  The override folder is Pillars of Eternity II\PillarsOfEternity2_Data\override\gamedata (you'll have to create it).  Files in the override folder will always take priority over ones in the exported folder.
 
Note that the override folder is broken in the current release, but it will work in the next.
 

-I can't seem to add or change custom strings in the same way. All entries in the data don't have their display names or descriptions in the json, they reference a number which pulls from the localized stringtable depending on what language you choose.
-I can add custom strings by editing the original stringtables but that will get sloppy.
-I also cannot edit original strings in the same way that I can edit the gamedatabundle entries by making a new file and overwriting

This is a good point.  I will make a note that we should take a look at this.
 

-I still don't know if custom assets can be loaded or things can be placed in world by modders.

Unfortunately, it's unlikely that scene modding will be any different than Pillars 1.


  • ShadySands, AndreaColombo, Naesaki and 7 others like this

#8
mortimermcmire

mortimermcmire

    (1) Prestidigitator

  • Members
  • 22 posts
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer

Amazing, thank you!

 

I should also note that nexusmods finally added their POE2 page which is great news!

 

https://old.nexusmod...rnity2/mods/1/?



#9
BMac

BMac

    Programmer

  • Developers
  • 410 posts
  • Lords of the Eastern Reach Backer

The newest backer beta has added support for overriding string table entries. You can both override existing strings and add entirely new strings.

 

To do this, you create a .stringtable file in the override directory where the path matches that of the table you want to override. For example, if you want to override the English for \Pillars of Eternity II\PillarsOfEternity2_Data\exported\localized\en\text\game\abilities.stringtable, you need to create the file \Pillars of Eternity II\PillarsOfEternity2_Data\override\[YOUR MOD]\localized\en\text\game\abilities.stringtable.  The file should look the same, except that you only need to include <Entry> blocks for the entries you want to change or add.

 

Example abilities.stringtable overriding the Holy Radiance ability name and adding a new ability name:

<?xml version="1.0" encoding="utf-8"?>
<StringTableFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>game\abilities</Name>
  <Entries>
    <Entry>
      <ID>2</ID>
      <DefaultText>Unholy Space Jam</DefaultText>
      <FemaleText />
    </Entry>
    <Entry>
      <ID>10000</ID>
      <DefaultText>Reap the Rappers</DefaultText>
      <FemaleText />
    </Entry>
  </Entries>
</StringTableFile>

You don't have to put override gamedatabundles in a [YOUR MOD] folder like this, but I'd recommend that to keep your mods organized.


  • ShadySands, Starwars, Olauron Mor-Galad and 7 others like this

#10
MaxQuest

MaxQuest

    Arch-Mage

  • Members
  • 2444 posts
  • Deadfire Backer
  • Fig Backer

BMac, can we also have some possibility to set the load order of our mods?

For example, I have:
\Pillars of Eternity II\PillarsOfEternity2_Data\override\[MOD_A]
\Pillars of Eternity II\PillarsOfEternity2_Data\override\[MOD_B]
\Pillars of Eternity II\PillarsOfEternity2_Data\override\[MOD_C]


and would like to add an (optional) file:
\Pillars of Eternity II\PillarsOfEternity2_Data\override\mod.order.json

{
  "mods":[
    {"name":"MOD_C", "enabled": 1, "params": {}},
    {"name":"MOD_A", "enabled": 1, "params": {}},
    {"name":"MOD_B", "enabled": 0, "params": {}}
  ]
}

This will really help in future, if there will be some partially conflicting mods.

 

 
Also, can you give at least some general, vague pointers on how to create a custom, sidekick-like hireling, and attach custom barks and on-event banter? :)


  • AndreaColombo and kilay like this

#11
BMac

BMac

    Programmer

  • Developers
  • 410 posts
  • Lords of the Eastern Reach Backer

That's a good idea and it's on my list, though we'll be pretty busy with the game until release, so it may not come until after that.

 

 

 

I think in order to create your own sidekick, these are the major steps you'd have to do:

 

Make CharacterStatsGameData and SpeakerGameData objects for your character in an override gamedatabundle.  Make a name string for the character in an override stringtable.  Hook up the name and Speaker to the CharacterStats.

 

Make a chatter file for the character, which defines which lines they'll say, and when. The different chatter setups for each character go in chatterbundles, which can be overridden exactly like gamedatabundles. The actual game files, for reference, are in PillarsOfEternity2_Data\exported\design\chatter.  Hook up the chatter file to the Speaker you made.

 

Make the audio files that are referenced by the chatter file. They are packed in a Wwise format and they're at PillarsOfEternity2_Data\StreamingAssets\Audio\GeneratedSoundBanks\Windows\Voices.  You can probably get the free version of Wwise to produce these. We don't support an override folder for them, though.

 

Actually creating a character prefab is probably the hardest.  This will be the actual object in the game, where you'd attach the CharacterStatsGameData you created and set up the character's appearance. They live in the characters assetbundle (PillarsOfEternity2_Data\assetbundles). I think there are ways to unpack and repack these but I haven't messed with them myself.

 

You could then use console commands to instantiate the character and add it to your party.


  • AndreaColombo, Xaratas, gogocactus and 1 other like this

#12
MaxQuest

MaxQuest

    Arch-Mage

  • Members
  • 2444 posts
  • Deadfire Backer
  • Fig Backer

That's a good idea and it's on my list, though we'll be pretty busy with the game until release, so it may not come until after that.

That's great! :)
And it's not like there will be many pre-release mods anyway.
 

I think in order to create your own sidekick, these are the major steps you'd have to do: [..list..]

Thank you a lot for the pointers!
Will definitely attempt to make a sidekick at some point.
 

Actually creating a character prefab is probably the hardest.  This will be the actual object in the game, where you'd attach the CharacterStatsGameData you created and set up the character's appearance. They live in the characters assetbundle (PillarsOfEternity2_Data\assetbundles). I think there are ways to unpack and repack these but I haven't messed with them myself.

*scratching head* while looking at the characters.unity3d filesize of 0.98GB... is there a specific reason, why you guys decided to bundle into such big packs, instead of lets say:
/assetbundles/characters/character_a.unity3d
/assetbundles/characters/character_b.unity3d
/assetbundles/characters/character_c.unity3d
...
because atm in order to add/edit at least one character prefab, modder would have to unpack/do_stuff/repack the whole characters.unity3d and if he's successful to somehow also redistribute it.
Am not even sure if nexus even permits such big sizes; plus repeating all this on each update :shiver:
Also, with smaller .unity3d files modder can tinker with the help of AssetsBundleExtractor. While if the file is big, you are literally getting lost there ^^ (having to literally check all monobehaviours when you want to find a specific one). Sure there is also DevXUnity-Unpacker Studio (which looks more user-friendly, and supports repacking), but it is far from free.

Was the copying speed somehow of a problem due to the big amount of files?

#13
Osvir

Osvir

    Arch-Mage

  • Members
  • 3799 posts
  • Location:Stockholm, SE
  • Pillars of Eternity Silver Backer
  • Kickstarter Backer
  • Lords of the Eastern Reach Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

Is there any way to get character position in-game? (Stand next to Vektor, open console, type in some code, get "X" and "Y" position/location of one selected character or center between selected characters, and use that information to summon custom sidekick/NPC/quest giver with mods).

Furthermore, does AI NPC's have "Patrolling"-, "Facing direction"-, "Tasks"-scripts that you can call for and is that scripts you can use in making a custom NPC appear in the world? Would it then also be possible to add "overhead text" that you can see on NPC's. I.E. "Psst! Over here!" or something.

"Approach/MoveTowards Watcher/Player/Selected/%NAME%" script into "Start Dialogue" script?


Edited by Osvir, 18 February 2018 - 03:26 AM.

  • MaxQuest likes this

#14
BMac

BMac

    Programmer

  • Developers
  • 410 posts
  • Lords of the Eastern Reach Backer

because atm in order to add/edit at least one character prefab, modder would have to unpack/do_stuff/repack the whole characters.unity3d and if he's successful to somehow also redistribute it.
Am not even sure if nexus even permits such big sizes; plus repeating all this on each update :shiver:

Yeah, this is definitely not an ideal setup for modding. Hopefully we'll be able to look at override support for assetbundles.

 

Is there any way to get character position in-game? (Stand next to Vektor, open console, type in some code, get "X" and "Y" position/location of one selected character or center between selected characters, and use that information to summon custom sidekick/NPC/quest giver with mods).

Try "GetTransform <object name>". It doesn't have tab-completion, though, so you'll have to have the full object name from FindObject.

 

Furthermore, does AI NPC's have "Patrolling"-, "Facing direction"-, "Tasks"-scripts that you can call for and is that scripts you can use in making a custom NPC appear in the world? Would it then also be possible to add "overhead text" that you can see on NPC's. I.E. "Psst! Over here!" or something.

"Approach/MoveTowards Watcher/Player/Selected/%NAME%" script into "Start Dialogue" script?

The NPC AI system might be a bit opaque and I don't know too much about it myself - but for anyone who wants to dig into it, you want to check out ScheduleGameData in the AI gamedatabundle and the AIController component on the character prefabs (assetbundle).  There are also some scripts you can use for one-off stuff ('find ai').

 

The overhead text is referred to as "barks" or "bark strings".  They're set up as Conversations and played with the startconversation script.


  • AndreaColombo, MaxQuest and kilay like this




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users