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

Modding Patch Notes for 1.2.0.0017

patch-notes

  • Please log in to reply
36 replies to this topic

#1
BMac

BMac

    Programmer

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

This is a list of changes from 1.1.1.0064 to 1.2.0.0017 that specifically affect modding the game. Thanks for your feedback and suggestions - we'll continue to implement more of these in the future. For full patch notes, see the thread Patch Notes for 1.2.0.0017.

 

Modding Patch Notes for 1.2.0.0017

  • Added the Mod Manager UI, which is accessed from the Options window on the Main Menu. This UI allows you to view installed mods, enabled and disable them, and change their load order.
     
  • Game Data Objects from mods can now partially override existing objects. Properties that a mod doesn't need to change can be deleted from the mod object and will be left unmodified.
     
  • Some textures in the game can be added or modified via mods. The textures should appear at the specified path inside the mod's override folder (e.g. "Override/MyMod/GUI/InnIcons/icon.png"). PNG and JPG images are supported. Some textures that can be modded this way include:
    • Large item icons (but not small ones) (ItemGameData.IconTextureLarge)
    • Loading screen images (LoadScreenComponent)
    • Inn room images (InnRoomComponent.DisplayImage)
    • Vendor logo images (VendorComponent.StoreIconPath)
    • Bestiary images (BestiaryEntryComponent.PicturePath)
    • Scripted interaction illustrations (SetInteractionImage script)
    • End-game slide images (SetEndGameSlide script)
    • Ship portrait images (ShipComponent.ShipPortrait)
  • (Breaking) Made it possible to add new classes via mods. Mods that change the following values will need to be updated.
    • Removed CharacterClassComponent.Type
    • CharacterProgressionDataComponent.HybridClassTitles moved to CharacterClassComponent.HybridClassTitles (on a per-class basis)
    • AbilitySettingsComponent.ClassResourceConversionRates moved to CharacterClassComponent.ResourceConversionRate (on a per-class basis)
    • Replaced StatusEffectValueType.Phrases/Wounds/Focus with generic StatusEffectValueType.AccruedResource.
    • Changed AIDecisionTreeDataComponent.CharacterClass from enum to Guid
    • Changed EquippableComponent.RestrictedToClass from enum[] to Guid[]
    • Changed GenericAbilityComponent.AbilityClass from enum to Guid
    • Changed StatusEffectComponent.ClassValue from enum to Guid
    • Changed ClassProgressionTable.CharacterClass from enum to Guid
    • Changed ProgressionPowerLevelRequirement.Class from enum to Guid
    • Changed StatusEffectAttackFilter.ClassType from enum to Guid
    • Changed StatusEffectDynamicValueAdjustment.Class from enum to Guid
  • Exposed BaseMaxFocus, MaxFocusPerLevel, and StartingFocusRatio on FocusTraitComponent
     
  • Fixed some syntax errors in base game gamedatabundles.
     
  • Removed BackgroundComponent.Type
     
  • Removed CharacterSubClassEnum
  • Removed CharacterSubClassComponent.Subclass
     
  • *.conversationbundle and conversation.manifest files can now be loaded from mod directories rather than only the root override directory.

  • ShadySands, Karkarov, TT1 and 12 others like this

#2
peardox

peardox

    (5) Thaumaturgist

  • Members
  • 564 posts
  • Location:Manchester, UK
  • Deadfire Backer

Wow - cool stuff BMac

 

Have we done conversationbundles yet?

 

This is the main target of my article today

 

[Everyone else]

 

I'll be doing a clean on 1.2.0 and publishing it (I'm not convinced yet)

 

I'll leave 1.1.1 alone but next update will rotate

 

I take it some ppl will still like my prettified JSON so regardless of my research I'll do an update for the JSON stuff


Edited by peardox, 03 July 2018 - 10:33 AM.


#3
BMac

BMac

    Programmer

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

Yes, conversationbundles can now use mod override folders - they'll be searched for at the expected path inside each mod folder.  Good catch - I missed that and I've added it to the notes.


  • AndreaColombo, David Benefield and Spherical like this

#4
Xaratas

Xaratas

    (7) Enchanter

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

And reload of gamebundle files ingame? Loading and leaving huge maps still takes some time.



#5
BMac

BMac

    Programmer

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

The only safe way to reload them right now is to quit to the main menu and Refresh in the mod manager.

 

You can force a hot reload by twiddling the state of one of your mods with the SetModLoadIndex or SetModEnabled commands, but this isn't something we officially support for this patch.  It will cause some problems with references to the data in the loaded game, which may be fixed by loading a save, but you still have a scene load to deal with there.


  • AndreaColombo, kilay and Spherical like this

#6
Spherical

Spherical

    (1) Prestidigitator

  • Members
  • 48 posts

This is so awesome that I hardy know where to begin. THANK YOU!!!!



#7
ydaraishy

ydaraishy

    (1) Prestidigitator

  • Members
  • 41 posts
  • Pillars of Eternity Gold Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer

How do we update the compatible Deadfire versions and mod version numbers in the manager Ui?


Edited by ydaraishy, 03 July 2018 - 11:03 AM.


#8
Zap Gun For Hire

Zap Gun For Hire

    (5) Thaumaturgist

  • Members
  • 417 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

Did a test by doing a partial override of the FactionalHostilitySets in shiphostilitymanager entry in factions.gamedatabundle and it seems to be working.  :thumbsup:   The things I wanted to make hostile turned hostile, and everyone else is acting as in the base game.

 

A little leery of clipping too much from that Game Data Object as I don't know what the game needs to know what I'm overridding, but on first blush looks good.


  • BMac likes this

#9
BMac

BMac

    Programmer

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

How do we update the compatible Deadfire versions and mod version numbers in the manager Ui?

We have a tutorial that covers this and some other things coming out soon™.

 

Did a test by doing a partial override of the FactionalHostilitySets in shiphostilitymanager entry in factions.gamedatabundle and it seems to be working.  :thumbsup:   The things I wanted to make hostile turned hostile, and everyone else is acting as in the base game.

 

A little leery of clipping too much from that Game Data Object as I don't know what the game needs to know what I'm overridding, but on first blush looks good.

Unfortunately arrays are treated as a single property, so you won't be able to individually modify array elements or any properties on them.  If you specify any data for the array, what you specify will always completely replace the default.  The behavior the ships default to when they have no data probably just closely resembles what they were set to do.  I know there are a few use cases where modifying arrays would be very useful, so we'll see if we can do something about that in the next patch.


  • ydaraishy, Zap Gun For Hire and kilay like this

#10
Zap Gun For Hire

Zap Gun For Hire

    (5) Thaumaturgist

  • Members
  • 417 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

 

Did a test by doing a partial override of the FactionalHostilitySets in shiphostilitymanager entry in factions.gamedatabundle and it seems to be working.  :thumbsup:   The things I wanted to make hostile turned hostile, and everyone else is acting as in the base game.

 

A little leery of clipping too much from that Game Data Object as I don't know what the game needs to know what I'm overridding, but on first blush looks good.

Unfortunately arrays are treated as a single property, so you won't be able to individually modify array elements or any properties on them.  If you specify any data for the array, what you specify will always completely replace the default.  The behavior the ships default to when they have no data probably just closely resembles what they were set to do.  I know there are a few use cases where modifying arrays would be very useful, so we'll see if we can do something about that in the next patch.

 

 

More of a layman than I'd like to admit when it comes to much of this. :)  What qualifies as an array when it comes to the way the engine reads the gamedatabundle?

 

Going back to shiphostilitymanager (from factions.gamedatabundle) since I already mentioned it (spoilered because it's loooooong):

Spoiler

 

Would everything inside "Components": [lots of stuff] be considered an array, or would it only be things like "FactionHostilitySets": [other stuff]?

 

As I look at most Game Data Objects, it seems most of the things we would care about changing are things that are inside "Components": as subsections, so I would presume that everything inside "Components": doesn't need to be copied over wholesale, just the blocks of code within it  that do.

 

Like, say I modify one entry in "FactionHostilitySets":, then if I understand what you are saying correctly I should keep ALL of the other entires within "FactionHostilitySets": as is so the game knows to execute them, but it is safe for me to chop off the "CaptainOverrides": [yet other stuff], as that won't be overridden?

 

If it's not that way, then I'll just wait for that tutorial to come out and study it until I understand things. :lol:



#11
BMac

BMac

    Programmer

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

Would everything inside "Components": [lots of stuff] be considered an array, or would it only be things like "FactionHostilitySets": [other stuff]?

 

An array is a property that has a list of things in it rather than just one value.  In JSON, you can identify them because the value(s) are inside [square braces].

{
  "Array":[1, 2, 3],
  "NotArray":4
},
{
  "ArrayOfObjects":[{"Name":"A"},{"Name":"B"}],
  "NotArrayObject":{"Name":"C"}
}

Yes, "Components" itself is technically an array, but we handle that one specially so you can override individual components and ignore others entirely.

 

The upcoming tutorial will cover this somewhat.

 

 

Like, say I modify one entry in "FactionHostilitySets":, then if I understand what you are saying correctly I should keep ALL of the other entires within "FactionHostilitySets": as is so the game knows to execute them, but it is safe for me to chop off the "CaptainOverrides": [yet other stuff], as that won't be overridden?

That's right.


  • Zap Gun For Hire likes this

#12
peardox

peardox

    (5) Thaumaturgist

  • Members
  • 564 posts
  • Location:Manchester, UK
  • Deadfire Backer

Still broken - in a moment

 

 

Quick check - they nearly got it right

 

I've got a benign (only checks stuff) script

 

As you may have noticed I number things so this one is exported-1.2.0 (explanation before bug report)

 

exported-1.2.0/design/chatter/chatter.chatterbundle
JSON_ERROR_SYNTAX

 
That's the only one that fails - I can see what is likely wrong
 
Yep - sloppy
 
simon@Ubu:~/git/utils$ tail exported-1.2.0/design/chatter/chatter.chatterbundle
                        "OnExitScripts": [],
                        "OnUpdateScripts": []
                }
        ],
        "ClassExtender": {
                "ExtendedProperties": []
        }
},

]}

As I say - sloppy, the last comma invalids15M of data

 

Good luck in 1.2.1

 

Does anyone want my JSON and fixed versions of 1.2.0? It'll only take me a few minutes?

 

Err dumb question - of course you do

 

I'm only gonna do Zips this time as it takes ages to do the RAR + TGZ versions 


  • kilay likes this

#13
Zap Gun For Hire

Zap Gun For Hire

    (5) Thaumaturgist

  • Members
  • 417 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

 

Would everything inside "Components": [lots of stuff] be considered an array, or would it only be things like "FactionHostilitySets": [other stuff]?

 

An array is a property that has a list of things in it rather than just one value.  In JSON, you can identify them because the value(s) are inside [square braces].

{
  "Array":[1, 2, 3],
  "NotArray":4
},
{
  "ArrayOfObjects":[{"Name":"A"},{"Name":"B"}],
  "NotArrayObject":{"Name":"C"}
}

Yes, "Components" itself is technically an array, but we handle that one specially so you can override individual components and ignore others entirely.

 

The upcoming tutorial will cover this somewhat.

 

 

Like, say I modify one entry in "FactionHostilitySets":, then if I understand what you are saying correctly I should keep ALL of the other entires within "FactionHostilitySets": as is so the game knows to execute them, but it is safe for me to chop off the "CaptainOverrides": [yet other stuff], as that won't be overridden?

That's right.

 

 

That explanation (and the exception about Components) explained everything perfectly.  Thanks as always. :)

 

(I'd say "You're the best", but I'd be afraid of being sued for copyright infringement from your fellow Obsidian poster :lol:


Edited by Zap Gun For Hire, 03 July 2018 - 03:20 PM.


#14
peardox

peardox

    (5) Thaumaturgist

  • Members
  • 564 posts
  • Location:Manchester, UK
  • Deadfire Backer

I keep running out of memory processing the JSON files

 

Trying to resolve this issue - gave it 4G

 

Might WAMP it as I've got 16Gb and 8Gb on the MAMP

 

Gimme a bit do  can debug myself



#15
ferzal

ferzal

    (1) Prestidigitator

  • Members
  • 37 posts

Syntax fixes ey... I'll have to check one of the received status types that used to be recieved (English rule is "i before e except after c when the sound is ee" :p) that I was using.  A little heads up on some of those things would be good.  One of the Beckoner entries, for example, was Beckonter or something like that.  It was just a debug name so it shouldn't cause any problems but the statustype will.  I'll check soon.

 

Update: Nope.  Still "recieved" on some.  Saves a little search/replace.

 

Next on the list to look at: progressiontable changes.  New classes... cool.  Any control over multiclassing/subclass mixing options yet?  I'll be looking at that later but if anyone knows now (a dev would be ideal) that would save me time.  Cheers.


Edited by ferzal, 03 July 2018 - 04:52 PM.


#16
Tarlonniel

Tarlonniel

    (5) Thaumaturgist

  • Members
  • 467 posts

Yes, conversationbundles can now use mod override folders - they'll be searched for at the expected path inside each mod folder.

 

Darn it, I still can't get this to work. I put the modified bundle in override/MyMod/design/[required pathway] and the game just ignored it. Stop ignoring me, game. :getlost:

 

Maybe I'm just an idiot. I'll keep poking at it over the holiday tomorrow.



#17
GravitonGamer

GravitonGamer

    (1) Prestidigitator

  • Members
  • 27 posts
  • Steam:jacetheace

Thanks for this. As a modder, this is exactly what I needed to know. Good job with all the changes! Even though I have to fix some of my mods, these changes will make any future modding much faster.

 

I just want to ask though, for the textures, where can we find the recommended image dimensions for each texture type? There aren't any examples in the exported folder last time I checked.



#18
Zap Gun For Hire

Zap Gun For Hire

    (5) Thaumaturgist

  • Members
  • 417 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

 

Yes, conversationbundles can now use mod override folders - they'll be searched for at the expected path inside each mod folder.

 

Darn it, I still can't get this to work. I put the modified bundle in override/MyMod/design/[required pathway] and the game just ignored it. Stop ignoring me, game. :getlost:

 

Maybe I'm just an idiot. I'll keep poking at it over the holiday tomorrow.

 

I got it to work by NOT putting it in a /design folder.

 

Using override/<mymodfolder>/conversations/<targetfolder>

 

Worked like a charm.  :thumbsup:


  • BMac and Tarlonniel like this

#19
Tarlonniel

Tarlonniel

    (5) Thaumaturgist

  • Members
  • 467 posts

Oooh, interesting. I'll give that a try.


  • Zap Gun For Hire likes this

#20
Zap Gun For Hire

Zap Gun For Hire

    (5) Thaumaturgist

  • Members
  • 417 posts
  • Pillars of Eternity Backer
  • Kickstarter Backer
  • Deadfire Silver Backer
  • Fig Backer
  • Black Isle Bastard!

Oooh, interesting. I'll give that a try.

I haven't played with the stringtables required to make a truly new dialogue, but as I understand it stringtables haven't been an issue.

 

What I did was a simple test by having Marihi give me all three possible unique weapons (Blades of the Endless Paths, Whispers of Yenwood, and Whispers of the Endless Paths) instead of just one via a full override (I copied her entire conversation bundle and simply edited Node 23), and got it to work:

 

skG1rHo.png

 

If that works, other more complicated overrides should also work


Edited by Zap Gun For Hire, 03 July 2018 - 08:09 PM.






Also tagged with one or more of these keywords: patch-notes

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users