Jump to content

"Spiritual Successor" - Modding Tool - Released!


Recommended Posts

For some time now, I've been working on a modding tool that reads Deadfire's .gamedatabundle files and allows for their easy editing, and exporting of changes. The editor's initial version is not far from being released, and I expect it will be out shortly (days, weeks) after Deadfire ships.

 

The editor's basic workflow is:

1. Load a gamedatabundle file into the editor. If you don't load one yourself, the contents of the vanilla gamedatabundle file will be used for modding.

2. Select a category which you want to make changes to - for example progression tables. Make your changes to the progression table you chose and hit Save. A copy of the object you changed is recorded.

2.1 From a progression table you have access to a list of abilities for the object you chose to edit. Selecting an ability from the list will load the ability's object for editing, without need for you to switch screens or do anything manually. From the ability you may proceed to edit the attack associated with that ability, and from that, proceed to edit the status effects applied by that attack. All this is happening through the editor's UI.

3. Go to the tab for exporting changed data. It contains a list of objects which have been changed across all gamedatabundle objects. Review the json code and export it for inclusion in your modded .gamedatabundle file.

 

The main advantage of the editor is that it fetches game data objects referenced from different gamedatabundle files. So when you are editing a weapon for example, you don't have to go through 3 files (items > attacks > status effects) in order to change the duration of some effect. This saves you time and effort because you don't have to switch between different files, and search manually with ctrl+f in each one.

 

Secondly, the editor reduces the chance for technical errors and typos, by using input validation on the fields which you are allowed to change. The editor won't allow you to save a field with an invalid value which would break the game, and there is no chance of invalidating the whole gamedatabundle file because you accidentally deleted a comma somewhere.

 

Thirdly, the editor filters out from view any system fields and/or objects, which are not suitable for modding, letting you concentrate on the stuff that's of interest to a modder.

 

Stuff you can potentially mod, and which the editor will gradually begin supporting: rebalance abilities, add and remove abilities, rebalance item stats, damage, armor rating, defense bonuses, health points, injuries, skills, and more.

 

The editor is web based, but there is no server-side logic or functionality which needs a webserver. Everything you do happens on your own machine, in your browser's memory. No data about your mod or usage of the editor is being recorded on the server. In fact once you open the editor, you can safely switch off your internet connection. Changes are being saved in the web browser's memory, which carries the drawback that on refresh of the browser tab, you will lose all changes which you haven't exported. Therefore you should not refresh or close the browser tab until you've exported your changes from the editor.

 

I haven't been in contact with Obsidian about making the editor, and I haven't been given special support or documentation. I never told anyone in part because I wanted to work on this simply as a pet project. Of course, I will welcome any help and support, mainly with documentation, which would allow me to keep improving the editor and enriching its functionality.

 

I hope such a tool will make modding more accessible, will liven up Deadfire's modding community, and will encourage Obsidian to increase moddability for Deadfire and for future games.

Holy cow. Can you modify companion attributes?

 

Pleasesayyespleasesayyespleasesayyes

  • Like 1
Link to comment
Share on other sites

*sigh*

 

This is so beautiful. Reminds me of KotOR modding.

  • Like 2

"Art and song are creations but so are weapons and lies"

"Our worst enemies are inventions of the mind. Pleasure. Fear. When we see them for what they are, we become unstoppable."

Link to comment
Share on other sites

Nice!  Count me in if you're looking for anyone to help play around with it.  I've been digging around the beta and manually editing .gamedatabundle files to see what the game has available.  I have yet to find many text editors that are happy rendering and editing a single line of text 6.5 million characters long :p

Holy cow. Can you modify companion attributes?

Yup.  The base attributes for many (if not all) companions have been hiding in plain sight for a while...   :shifty:

 

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

I certainly can't answer for exact capabilities of OP's tool, but .gamedatabundle files are closer to a "table of contents" for available assets and data, rather than a repository for those assets themselves.  If you're going to modify in-game stuff like textures or sprites, step one still involves some other tool to extract the relevant data before potentially using this or some other method to reinsert changes.

Edited by Ethics Gradient
Link to comment
Share on other sites

Sounds great :)
Does this mean we need to have an internet connection when opening the tool?

Can we copy across the game-files from one machine to another, modify then put back?
(I ask as my gaming machine is offline only)

_________________________________________________________________________________________________________________________

*Casts Nature's Terror* :aiee: , *Casts Firebug* :fdevil: , *Casts Rot-Skulls* :skull: , *Casts Garden of Life* :luck: *Spirit-shifts to cat form* :cat:

Link to comment
Share on other sites

Nice!  Count me in if you're looking for anyone to help play around with it.  I've been digging around the beta and manually editing .gamedatabundle files to see what the game has available.  I have yet to find many text editors that are happy rendering and editing a single line of text 6.5 million characters long :p

Holy cow. Can you modify companion attributes?

Yup.  The base attributes for many (if not all) companions have been hiding in plain sight for a while...   :shifty:

 

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

I certainly can't answer for exact capabilities of OP's tool, but .gamedatabundle files are closer to a "table of contents" for available assets and data, rather than a repository for those assets themselves.  If you're going to modify in-game stuff like textures or sprites, step one still involves some other tool to extract the relevant data before potentially using this or some other method to reinsert changes.

 

> The base attributes for many (if not all) companions have been hiding in plain sight for a while...

 

Yeah I know there is a method of altering the game files to change companion attributes*.  I was just wondering if this tool did it too.  I'm lazy, anything that simplifies the process is great.

 

* damned if I can find it now, though.  I thought I had bookmarked it, but apparently not.  It's lost in the annals of history.

Edited by Yosharian
Link to comment
Share on other sites

> The base attributes for many (if not all) companions have been hiding in plain sight for a while...

 

Yeah I know there is a method of altering the game files to change companion attributes*.  I was just wondering if this tool did it too.  I'm lazy, anything that simplifies the process is great.

Editing starting attributes is fairly trivial.  From the Deadfire install dir, open the following file in your most capable text editor:

/exported/design/gamedata/bb_characters.gamedatabundle

and search for "Companion_". After they're in the party, well, that's a different story...

 

Anyway, yeah.  It would be tremendously cool to have something streamline editing and tie together the interrelated .gamedatabundle files.  Even if you aren't using it to mod, having a tool to browse all the available game objects and GUIDs would be helpful when you're playing around with the in-game console and want to juice your party with a healthy dose of Vitamin Cheat.    ;)

  • Like 1
Link to comment
Share on other sites

 

> The base attributes for many (if not all) companions have been hiding in plain sight for a while...

 

Yeah I know there is a method of altering the game files to change companion attributes*.  I was just wondering if this tool did it too.  I'm lazy, anything that simplifies the process is great.

Editing starting attributes is fairly trivial.  From the Deadfire install dir, open the following file in your most capable text editor:

/exported/design/gamedata/bb_characters.gamedatabundle

and search for "Companion_". After they're in the party, well, that's a different story...

 

Anyway, yeah.  It would be tremendously cool to have something streamline editing and tie together the interrelated .gamedatabundle files.  Even if you aren't using it to mod, having a tool to browse all the available game objects and GUIDs would be helpful when you're playing around with the in-game console and want to juice your party with a healthy dose of Vitamin Cheat.    ;)

 

 

ok this time i am bookmarking it haha

Link to comment
Share on other sites

Does this mean we can get Saerileth in Deadfire? twitch_emoticon___kappa_by_centaurman_pl

I have it on good authority that Xoti is actually Saerileth.

"Akiva Goldsman and Alex Kurtzman run the 21st century version of MK ULTRA." - majestic

"I'm gonna hunt you down so that I can slap you square in the mouth." - Bartimaeus

"Without individual thinking you can't notice the plot holes." - InsaneCommander

"Just feed off the suffering of gamers." - Malcador

"You are calling my taste crap." -Hurlshort

"thankfully it seems like the creators like Hungary less this time around." - Sarex

"Don't forget the wakame, dumbass" -Keyrock

"Are you trolling or just being inadvertently nonsensical?' -Pidesco

"we have already been forced to admit you are at least human" - uuuhhii

"I refuse to buy from non-woke businesses" - HoonDing

"feral camels are now considered a pest" - Gorth

"Melkathi is known to be an overly critical grumpy person" - Melkathi

"Oddly enough Sanderson was a lot more direct despite being a Mormon" - Zoraptor

"I found it greatly disturbing to scroll through my cartoon's halfing selection of genitalias." - Wormerine

"Am I phrasing in the most negative light for them? Yes, but it's not untrue." - ShadySands

Link to comment
Share on other sites

Holy cow. Can you modify companion attributes?

 

Pleasesayyespleasesayyespleasesayyes

I'm pretty sure that yes, though I haven't added a specific UI "Screen" in the editor that loads these values. It is something on the feature list though.

 

Nice!  Count me in if you're looking for anyone to help play around with it.  I've been digging around the beta and manually editing .gamedatabundle files to see what the game has available.  I have yet to find many text editors that are happy rendering and editing a single line of text 6.5 million characters long :p

I have posted a rough release date on the site, though it's in Eora's calendar, and the countdown is in Eoran days ;) For easy conversion, consider Jan 1 2018 00:00:00 to be the first day of the Eoran year 00:00:00 and one earth hour to be equal to one Eoran hour. ;)

 

I have the basic workflow working - import a file, make changes, save them, export your modified object. What remains is UI and styling - I wouldn't want people to hate the app because it's UI is crude - and providing UI (forms) for editing more objects. For now, I only have UIs for editing Characters and Progressiontables gamedatabundle files.

 

Once I consider the quality and functionality to be good enough for end-users (modders), I'll make a first release. I want to keep development confined to just myself though. Once it matures enough, I'll consider releasing the source code and/or supporting other people who want to fork and develop something else based on it.

 

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

Ethics Gradient is correct. The actual game assets are packed in unity format, and I suppose encrypted, so that they can only be unpacked with the Unity toolset. As far as my understanding goes, Obsidian have done the best they could, exposing the string and numerical data which the game uses. The gamedatabundle files describe the structure of objects which the game reads when it's started. The format is json, which is really what makes building an editor comparatively easy.

 

Sounds great :)

Does this mean we need to have an internet connection when opening the tool?

Can we copy across the game-files from one machine to another, modify then put back?

(I ask as my gaming machine is offline only)

You only need an internet connection in order to open http://spiritualsuccessor.net/ That's all you should need an internet connection for though. Then you can load a modded or vanilla .gamedatabundle file which you've brought from elsewhere, or if you want to start off from vanilla values, you can skip loading a .gamedatabundle file and the editor will load vanilla .gamedatabundle data, which I have put there as a fallback. When you export modded objects into your mod's .gamedatabundle files, you have to put the modded files in an "override" subdirectory of Deadfire's directory, as far as I know. Exporting doesn't require internet either.

 

 

@Gairnulf: what did you use?

 

ECMA-/Javascript I presume, but did you use some framework or special bibs or so?

Although I've been schooled in history and linguistics at university, my main employment for years, since I was a student, has been as a web developer... 

jJ8YEHz.gif

 

Since it's a personal project, I had maximum freedom of choosing technology, so I went for the most cutting edge stuff, every time when I had to make a choice  :grin: The editor is written in Typescript, using some of the latest ES6 features, HTML5 FileReader API, which is still in working draft status, the latest Angular 5 framework, uses Angular's new "Reactive forms", and catches "beforeunload" events (i.e. warns you if you try to refresh your browser tab). The styles are written with the sass preprocessor using scss syntax. I haven't used libraries external to angular, except for rxjs for Observable support. The library is needed, because as far as I know, Observables won't have native Javascript support until ES7.

 

Using Angular is what allowed me to write the core functionality fairly easy, and relieved me of the need to have any backend whatsoever. Hence nothing is executed on the server. The editor functions as a completely front-end app.

 

 

any plans for opensourcing?

I am not decided on this yet. On one hand I want to have exemplary code quality and a good amount of features working before I release the source. This is something achievable. On the other I wish to keep the project as my own and use it as portfolio and a showcase of skills.

 

 

It still needs a cool name. Might I suggest... GaiDU

I started it mainly because I wanted to mod the game, so I've named it after my mod's planned name - "Spiritual Successor" :grin:

Edited by Gairnulf
  • Like 2

A Custom Editor for Deadfire's Data:
eFoHp9V.png

Link to comment
Share on other sites

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

OP spends countless hours developing a mod for the benefit of others and very put post after this guy announces :

 

" I dont care"

 

Great too see that we have cultured and socially adept members on this forum

Edited by master guardian
  • Like 2
Link to comment
Share on other sites

 

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

OP spends countless hours developing a mod for the benefit of others and very put post after this guy announces :

 

" I dont care"

 

Great too see that we have cultured and socially adept members on this forum

 

I've already made inquiries with Obsidian on assets being moddable, asked Josh and Brandon (Adler) if either

1. Game assets (2d art and icons are what mostly interests me) can be exposed for editing, same as gamedatabundle files are, or

2. The game can be programmed to accept assets from an "override/<etc...>/myicon.png" kind of structure.

 

I haven't gotten an answer yet, but if you are interested, no one is stopping you from asking and pushing for this functionality to be made available.

 

There may be legal and technical (performance) reasons for the assets not being directly available, but if I can put my image in the right override subdir and have the game load it in place of the vanilla image, that would be just as good.

Edited by Gairnulf

A Custom Editor for Deadfire's Data:
eFoHp9V.png

Link to comment
Share on other sites

 

@Gairnulf: what did you use?

 

ECMA-/Javascript I presume, but did you use some framework or special bibs or so?

Although I've been schooled in history and linguistics at university, my main employment for years, since I was a student, has been as a web developer... 

[pic] 

Since it's a personal project, I had maximum freedom of choosing technology, so I went for the most cutting edge stuff, every time when I had to make a choice  :grin: The editor is written in Typescript, using some of the latest ES6 features, the latest Angular 5 framework, uses Angular's new "Reactive forms", and catches "beforeunload" events (i.e. warns you if you try to refresh your browser tab). The styles are written with the sass preprocessor using scss syntax. I haven't used libraries external to angular, except for rxjs for Observable support. The library is needed, because as far as I know, Observables won't have native Javascript support until ES7.

 

Using Angular is what allowed me to write the core functionality fairly easy, and relieved me of the need to have any backend whatsoever. Hence nothing is executed on the server. The editor functions as a completely front-end app.

 

Neat - thanks for the info. It's always nice if you can try out new things and also have a project that does motivate you to keep on trying and not stopping at the first obstacle. :thumbsup:

  • Like 1

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

 

Can it pull out the graphics files used for the UI then repackage them into the game allowing for UI modding?  If not, don't care.  It will be a cool tool for others though.

OP spends countless hours developing a mod for the benefit of others and very put post after this guy announces :

 

" I dont care"

 

Great too see that we have cultured and socially adept members on this forum

 

:blink:  If you mean Karkarov's post then please read again and maybe feel a bit embarrassed afterwards. ;)

  • Like 2

Deadfire Community Patch: Nexus Mods

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...