-
Posts
564 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Blogs
Everything posted by peardox
-
Convo Modding (part 2)
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
No chance I get this one done tonight The 90% rule rears it's head This SHOULD take about an hour - already done it but stupidly deleted the source I expect t release the final tomoz evening I'm doing an undocumented Mod here guys - of course I'll muck it up - more likely multiple times Back in the AM (my god - it's 10 PM - the wife is gonna roast my nuts - not in a good way) -
To date I've made https://peo2.slack.com invite only I intend to invite the world to our little party Fri/Sat The reason for opening the site is so we can get Mod reqs from the general public I'm rather amazed you aint asked for an invite @ZapGunForHire - it's right up your street @FXLUK same comment Certain people I've had PMs from should absolutely be in our little group I'm not going to shame these guys into action (well - I will in a round-about way) Our Modding comminuty revolved around our five core members - do it, become a core member - you'll be glad you did - simply PM me with yer email (slack's dumb rules, not mine) Our little group are pushing the boundaries Hell, when I started the group I thought - OK - not a bad idea. For days it was... Now we've got active membership who are discussing things I'd never even considered Our most active forum members (where you Zap?) are all members (@Zap - where you... Maths - fun)
-
Convo Modding (part 2)
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Not even a like yet? Bugger this as an idea - let's hit the cash Unless Obsidian wanna pay - my 108 hour week should be worth something to you -
[Mod Idea] New Animancer Class
peardox replied to TT1's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
If you read @BMac's 1.2.0 release notes you'll see we've got far more flexibility in SubClasses now I admit I've not been through the class system yet but I see the possibilities So, yep, it appears perfectly feasible to create an Animancer Do me a "Marvin the Paranoid Android" robot Actually - I may do that one as a pet as I'm almost fully up to speed on items... -
Go pick some useless NPC - I'm going for Waenglith as she's fairly useless and exists to endgame (unless I kill her) so let's go find her converstations which turn out to be at 09_cv_dawnstars_priestess.stringtable in each localised text/conversations directory - let's go copy her Waenglith is the naggy woman where you pick Xoti up - when you enter the area you're actually triggering a different convobundle to add Xoti to your party. Once you've got Xoti we switch to her personal convo mode. This ain't the best choice I could have made but she's early + late game interactible. Her conversationbundle is big and confusing as well which don't help but if I design around a complex NPC you should find others far easier to Mod. I intend to Mod another NPC to do something useful - a non-vendor who does little other than talk bull**** to fill a forum Req for the "Chest Of Consumables" Again I've automated this for you so grab Waenglith.unix / windows and paste that lot into your command prompt making sure you're still in localised Congrats - you've now got something we can play with - data Pointless? Not in the slightest - we now get to play. As I mentioned earlier Waenglith is boring - does very little so let's give her a Shop and gift you Dead Parrots (hence TT1's Mod being required to follow this) You can do this without the Dead Parrot but then you'll have to substitute DP's UUID for some stock item. Additionally I want to take you thru two versions of translation. Translation #1 is from the fish seller on Port Maje Harbour shes in exported/localised/[lang]/text/conversations/09_bs_fishmonger.stringtable You'll see that this is the en text <Entry> <ID>6</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> We're going to do all the translations (this is optional but personally I'm going to do it) Open your conversation stringtable I'm English so I'll start here + localised + en + text + conversations + 09_cv_dawnstars_priestess.stringtable At the top you'll see <EntryCount>71</EntryCount> - increase it by one to be safe (we're not sure if it's important but better safe than broken Mod) Now, go to the bottom of the file and copy the pinched phrase above just before </Entries> </StringTableFile> We need to increase the ID of our 'borrowed' string - in this case we'll simply add 100 to it so after the edit it looks like this --- Existing --- <Entry> <ID>72</ID> <DefaultText>"I haven't seen Waenglith so riled in a long time. I like you more and more already."</DefaultText> <FemaleText /> </Entry> --- Existing --- --- Added --- <Entry> <ID>106</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> --- Added --- --- Existing --- </Entries> </StringTableFile> For easy reference this is "Let me see what you have." in nine (9) langauages - the first line of each entry is merely a pointer for myself so I know what goes where de/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Zeig mir, was du anzubieten hast."</DefaultText> <FemaleText /> </Entry> en/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Let me see what you have."</DefaultText> <FemaleText /> </Entry> es/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Déjame ver qué es lo que tienes".</DefaultText> <FemaleText /> </Entry> fr/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Montrez-moi ce que vous avez."</DefaultText> <FemaleText /> </Entry> it/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Fammi vedere cos'hai."</DefaultText> <FemaleText /> </Entry> pl/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>„Pokaż, co masz na sprzedaż”.</DefaultText> <FemaleText /> </Entry> pt/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Vamos ver o que você tem aí."</DefaultText> <FemaleText /> </Entry> ru/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>"Покажи, что у тебя есть".</DefaultText> <FemaleText /> </Entry> zh/text/conversations/09_port_maje <Entry> <ID>6</ID> <DefaultText>“让我看看你都有什么好东西吧。”</DefaultText> <FemaleText /> </Entry> Obviously without my existing / added markers and not dupicating #72 If we repeat this process for all languages using their own versions of exported/localised/[lang]/text/conversations/09_bs_fishmonger.stringtable we have a fully translated string in #pos 106 Now let's create some original text which is a good reason for me to watch Python's Parrot sketch I've settled on "Have you got a Norwegian Blue?" - this only makes sense if you understand the joke and will result in the gifting of TT1's Dead Parrot (as presented you can spam DP - there are ways around this I'll explain if anyone wants but as this is a complex subject involving Globals I'm skipping that for this one) So - lets start off patching that into our stringtable at #107 Similarly to above we want a new entry with a new ID <Entry> <ID>107</ID> <DefaultText>"Have you got a Norwegian Blue?"</DefaultText> <FemaleText /> </Entry> This needs to keep our stringtable valid so again needs to go before the </Entries> and we need to update <EntryCount>71</EntryCount> to 73 and save the file. We now repeat this process on all other translations I'll use Google Translate to so them - it's not going to be perfect but until we get some translators available at least we have SOMETHING - it's better than making someone read a language they don't understand. I get - any translation errors, blame Google de - Hast du ein Norwegisches Blau? es - ¿Tienes un azul noruego? en - <We're translating from this one> fr - Avez-vous un bleu norvégien? it - Hai un blu norvegese? pl - Czy masz norweskiego niebieskiego? pt - Você tem um azul norueguês? ru - У вас есть норвежский синий? zh - 你有挪威蓝吗? Note that my zh is assuming its Simple Chinese Apologies to my friends who's native language isn't English, I'm fully aware that the translation may be garbage but the point of this is not for release as a MOD so I'm not that concerned if the translations are bad. The purpose of this is to educate, not teach language skills. Right - armed with our translations we can now Mod all the StringTables We've finally got to a stage of nothing happening but where we can make the changes we want Yeah - we're still at a point of no results for all this work - nobody ever said Modding was easy The next section makes stuff happen - that's the payoff we're all after It's also the most likely place to completely screw everything up If you've followed everything accurately it's time for the deep, dark development hell of putting some new content in place. You'll find by experience 90% of any dev is doing the mundane stuff we've discussed so far - it takes about 10% of the time (a famous 'law') - the next bit takes 90% of the time but results in 10% of the goal. I've been programming for > 35 years so I'm used to it... The grin you get when you get payback makes it all worthwhile. When I finally see Waenglith asking me if I wanna buy something or if I want a Norwegian Blue... I can't express the satisfaction you feel adequately - it's way out there, a Eureka moment (experienced Devs will get what I mean - TT1 - how cool did it feel getting the burn on DP? I know it thrilled me when I made that breakthrough - I'd spent 1/2 a day getting nowhere then I did traps <G>) So cool... The next stage puts me firmly into the 10% for 90% part - I'll do my utmost to get this out today but the 90% wall is about to hit. Hopefully this won't be a nightmare as I've modded her before so know what to look for [@peardox takes an hour or two off to do this and chat to the family] [@peardox takes an hour off off to do this and chat to the family] Waenglith.zip
-
OK - the patch notes imply I can do a convo mod without breaking the world if you've got 1.2.0 I'll be working on this today Killing Darmo was a happy coincidence if that hadn't happened the tutorial would be out of date at the point of publication I've got the rest of my original text that only needs minor tweaking before I hit the hard stuff in part three (3) Expect part two (2) in not-too-long
-
It was only a quick test I did on Sunday If you do your Modder's slack (poe2.slack.com - invite only ATM - PM me your email for an invite) I've added a few comments to enthuse Hampster (@tonpix on slack) As of this moment we can only do something like I show above (Large texture) but I've PM's @BMac reqing Small as well - you'll notice on that image the icon in the vendor's list is still the old one. Don't bother trying - I already did - Small results in a missing icon (Big RED X) As convos are now moddable I'm gonna finish off my morning with the usual readthru of important stuff then get back to doing that It's fortunate that I had problems yesterday as today's will be worth actually doing stuff with (I was prepping people yesterday, today it's a reality)
-
Mod Dev only Slack channel
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Update time again With the release of 1.2.0 things are looking REALLY interesting We've got a small but active gathering of minds and skills on our Slack channel We've got three techie guys who can't draw (don't think you mentioned art @ Xaratas) and one artist at present Join our small but vibrant group by sending me a PM with your email and I'll add you to the group -
Mega way cool TT1 - check this out This is a one line patch to the infamous Parrot In your mod Directory create a piccy @ gui/icons/items/misc/dead_parrot.png Now, simply change... "IconTextureLarge": "gui/icons/items/misc/pet_white_bird_l.png", To... "IconTextureLarge": "gui/icons/items/misc/dead_parrot.png", And we get this @BMac - can we have IconTextureSmall as well please as this is a really great feature I usually do 256x256 art or powers of 2 - 512, 1024, 2048 etc for a large - can we have a recommended size for art That particular image is simply a test so can't let you have it - it's some guy's Parrot T-Shirt design and hence is © <someone> I've got two artists who want to start adding modding contrubutions I'll go contact them now
-
Hey @Zapgun
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
You kiddo I always thought it was the Monty Hall - yes guys Zaps your Dad and I'm even older (55) My track record is superb - ever play Unreal? Tomb Raider? I did it about a year before you saw it. I remember the day destinctally when Mark Rein (someone you'll never heard of - he's VP of Epic) came to my desk desiring to show off Unreal v 0 off He offered to swap me a beta for another beta I had on my desk - shoulda taken that deal When you see all these Unreal calls - I was there at the start As I've been in the biz forever I've got other funny stories Am I old enough now -
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
-
Hey @Zapgun
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
We could do with a mathematician We can prob come up with some cool number theory for you to solve. I'm doing a making suppositions going on what I know about you I put you as a 20-ish maths fan - did I win? Take three boxes - pick one, I'll open one to show it's worthless One of the remaining has a brand new car in it - do you switch boxes? I love that Q cos it's so counter-intuative (there;s some US gameshow based on this topic, I believe -
Never read the tin.. 1.2.0 looks good so far but I'm exceptionally single minded so had a few hours kip and now I'm back on the case. I will especially to looking into the convo mods of this as I want to give you good advice I've automated cleaning up exported - anyone wanna bet me I can find something still wrong? No takers? Cool, this is almost certain to occur. Right - off bug hunting
-
Can't find you anywhere Just worried about you my freind
-
I'm going to do my usual of checking everything - we're well aware of the issues I'm gonna be very accurate this time eg. in progression we have " something " which is junk JSON My dream is running my scripts and zero errors Honestly, I find the chances low if I add a key check Obsisian have done a lot - Can't manage too much turn-around so quickly so they are defo reading what we write 1.2,0 should be here now
-
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
-
Don't worry Part 2 is on the way See the Killed Darmo thread I have to alter some instructions for part 2 Once again this will do nothing useful (part 3 does that) Part of learning is doing absolutely nothing useful paid off with a big "Wow" - Cool! at the end Part 3 has the "Wow" - Cool factor Let me fix that one now It's likely I'll end up finishing this tomorrow as part 3 is a real bitch
-
Economy
peardox replied to fxluk's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
@fxluk Downloaded your MOD but there's one small issue You credit myself while I credit @ZapGunForHire It's Zap's that allowed me to write it so quickly so his / her research allowed me a very fast turn around I would prefer it is you credited Zap rather than myself on this one I'd already asked if he / she was going to do a mod on it but was given carte-blanche to to whatever I saw fit I hope you understand, @ZapGunForHire found the keys while I (@Peardox) simply used that info to do Fair Trade You should join out Slack group (see the Slack messages) -
Mod Dev only Slack channel
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
We're many mods now so TT1 and Xaratas - you can now muck about with poe2.slack.com I've created some private and public channels. You can only see the channels we let you see. There is solid reasoning behind this - basically we don't want out Devs, Translators Artists etc delugued with reqs At the end of the week I'll open this to public consumption This seems a fair way to do this so we can get as many talented people into the mix to start with I intend to make a general announce on Saturday, 7/7/18 Hey - hamster we can guide you thru your first release as well so you start to get that much required experience. You've got some of the best Mod Devs at your beck + call, I know that if you PM / Slack me some art you'll be famous in minutes. All we ask is whoever does the job gets a credit - e.g. I credited @ZapGunForHire then @FLXUK credited myself - actually, I'd better point out the missing credit (gonna do that right now) -
This is a long and complex subject so I'm doing a Part (1, 2, 3) As this is aimed at both newbies and the experienced I've over-detailed the first part (sorry my friends - the more people who know how to this meand more fun Mods) The conversationbundle MOD is NOT recommended until Obsidian fix conversationbundle overrides. Personally I won't release a MOD using this information, I urge fellow Modders to apply the same restriction. I've got some old REQs that would be easy to do this way. The following will re-write some things at a base level - it's not too bad, only some useless NPC For the sake of showing as much useful information I'm going to take a non vendor and turn them into a vendor This process is currently tied to a real vendor to open their shop, there is no current way to create a new shop but this process is a useful to be aware of if/when Obsidian add ModShops So, let's get started... There are many ways to create a Mod, the simplest only have a single file - <something>.gamedatabundle To make things clear to your fellow Modders it is advisable that you use the same layout as found in exported as while the <something>.gamedatabundle can exist anywhere some files, notably stringtables ATM, MUST exist in a specific place in your Mod. As you've, presumably, played the game and quite likely in a language other than English it's notable that there are a LOT of stock phrases you can easily 'borrow'. All you need is the stringtable ID for that phrase to get nine (9) translations of those. For new phrases you can simply use Google Translate to get some text that (hopefully) is close to what you want to say. For the purposes of this tutorial I'm going to use TT1's Dead Parrot, it's my go-to for explaining things so go grab it from https://www.nexusmods.com/pillarsofeternity2/mods/111 as this is a Mod item. Install TT1's Uniques (which includes the infamous Parrot) or the rest of this won't work. While this is possible without a Dead Parrot it's far more informative with one as you'll most likely be Modding that includes some of your own special items. So - let's get started... Create a directory in override - I'll call mine convo, name yours whatever you like but make it unique. As this is a Tutorial I'm not concerned about what I call my personal mod as I'm not releasing it. If/when you do a release it is important that you use a unique directory name, personally I call mine pdx-<mod-name> but the choice is yours. In convo (or whatever you call it) we need to create two directories - design and localised We've now got ... convo + design + localised In design we now need to create a gamedata directory and in localised we need a deep structure (lemme just go get one I prepared earlier) convo + design + gamedata + localised + de + text + conversations + game + en + text + conversations + game + es + text + conversations + game + fr + text + conversations + game + it + text + conversations + game + pl + text + conversations + game + pt + text + conversations + game + ru + text + conversations + game + zh + text + conversations + game The text/game directories are there simply for convenience, we're not going to use them but they're handy to have as it is presumed you're going to want your new items translations so thought it advisable to make this as simple as possible OK - that's a lot of typing - let's pick on some naff NPC and automate as much of this as possible First off I should point out that I generally use a Linux Shell as I have Windows, Mac and Linux boxes - you can install a Windows-friendly Ubuntu to make everything work everywhere - see https://docs.microsoft.com/en-us/windows/wsl/install-win10 if you want that option. As some people will be put off by this I've created versions of both files to automate stuff for you - take your pick of dirstruct.unix or dirstruct.windows Right - you've created your localised directory... cd localised Take your preferred dirstruct version copy it then paste it into a command prompt making sure you're in localised If everything went OK you've now got a load of directories with nothing in them This is the start of a convo Mod - A lot of nothing. Now we want to add something to our nothing... dirstruct.zip
-
Killed off Darmo
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Fortunately I was thorough in my docs so switching to Waenglith is simple I specifically need a no vendor for this tutorial I HOPE to have this out this evening (UK time) -
Killed off Darmo
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Still borked him I KNOW exactly how to do this It is possible I ran him out before I hit 20 (he's currently a blue zombie - i.e. not talkable to) I KNOW I can Mod Waenglith - done her before for a Dead Parrot test Problem with her is she's got a complex conversation tree (72 nodes) If the reset don't work I'll switch to her This will make it more complex but 100% sure of working More info when I have some to share The Tutorial is extremely long, I'm well over 200 lines already detailing the basics -
Killed off Darmo
peardox replied to peardox's topic in Pillars of Eternity II: Deadfire: Modding (Spoiler Warning!)
Worked it out Should work now The Tutorial I've promised is (hopefully) going like this evening I work on my JSON files as they're Fairly newb mistake - need to work on the originals Using Dead Parrot in it (your 15 mins of fame...) The last time I did this one it took me days to work out