Larian Banner: Baldur's Gate Patch 9
Previous Thread
Next Thread
Print Thread
#627639 07/10/17 08:20 AM
Joined: Jun 2013
addict
OP Offline
addict
Joined: Jun 2013
I spent almost 2 weeks now on my mod.
Just today, for 3 hours, I try to understand why that fucking GEN_TransfertNPCPayment won't work in my new mod, while I had it working in a previous one? Fuck this DB system, fuck this osiris shit, that make implementing a basic stuff a 10 steps riddle. Fuck everything. Fuck that fucking char that won't fucking teleport to another fucking area in the fucking level, while my dummy can.
Fuck.


Un chemin de 1000 lieues commence par un premier pas.

Project:
Steam workshop Frontiere
Joined: Jan 2010
Location: USA
F
enthusiast
Offline
enthusiast
F
Joined: Jan 2010
Location: USA
I'm with you. I gave up on scripting in the absence of a run-time scripting log. It's nearly impossible to figure out why things aren't working with zero feedback from the game. Failing silently is really just not what scripts should do.

Joined: Jun 2013
addict
OP Offline
addict
Joined: Jun 2013
Thanks. And I mean, geeeeeesh, come on, just making a quest appear in the journal at the end of a convo:
1/ in the journal, create the quest categorie
2/ in the journal, create the quest
3/ in the journal, create the quest state
4/in osiris, create a DB_QuestDef_State
5/in the convo, edit the flag to set
6/in the flag to set, choose the flag categorie
7/in the proper flag categorie, add a custom flag:
QuestUpdate_quest_questState.
Beware, because if you make a typo mistake here, nothing will fire, but that flag will stay in the list, with no way to remove it....
And without Windemere's tut, there is no way I could have figured that out, without sinking some more hours reverse learning the Native convos, which I did for that GEN_Transfert stuff.

I am really utterly frustrated. I can feel the potential of it all, I had some successes in osiris and scripting (because yeah, you have to learn osiris AND scripting), but some inconsistencies make a very basic stuff an incredible hurdle run, where you don't know where the hurdles will appear, and you run blindfolded...

I know the Larian team is doing its best, I really appreciate this, I know the Engine and community is in its infancy, but right now, I can't keep going. I will be back after some time, possibly, and start afresh, after 146 hours spent on the toolset, that are hopefully not totally wasted, because I had some good grip on some stuff.

Last edited by Cromcrom; 07/10/17 12:45 PM.

Un chemin de 1000 lieues commence par un premier pas.

Project:
Steam workshop Frontiere
Joined: Jun 2013
addict
OP Offline
addict
Joined: Jun 2013
And then when you think, "hell yeah, I had this osiris/scripti system working, I learnt something, I progressed, I won't have to learn it again", and because "some stuff", the whole thing crumbles apart, I fucking feel like Sisyphe.

I will wait a bit, come back to it, give it another heavy try, and if nothing gets better, take the proper conclusions:
I am not smart enough for this engine and/or this engine is not tailored for what I want to achieve.

But god, having such a hard time adding a condition to a convo, like having the node appear only if the player have 50 gold in its inventory. I mean fuck, the aurora toolset, that is 15 years old now, made it a breeze. Even the DOS1 engine made it easier.

Last edited by Cromcrom; 07/10/17 09:34 AM.

Un chemin de 1000 lieues commence par un premier pas.

Project:
Steam workshop Frontiere
Joined: Jan 2015
member
Offline
member
Joined: Jan 2015
Well, I'm no professional programmer, but I modded quite a bit of NWN, most TES games, and Dungeon Siege.
And tbh, none of these created this heavy "needlessly complicated" feel. The dungeon Siege effect script language was a bit abstruse too but even there the complexity scaled linearly with the outcome.

Again I don't want to judge (for I wrote "feel"), but I absolutely love to hear from one or more of the coding guys why exactly they did it that way.

Last edited by Seelenernter; 07/10/17 12:10 PM.

Think for yourself! Or others will do it...
Joined: Jun 2017
journeyman
Offline
journeyman
Joined: Jun 2017
We created a thread of Toolkit limitations, and Kevin seemed to payed attention to us, I advise you to post the problem/limitation there, so we can gather them all in 1 place so they can read them all together instead of browsing the forums.
http://larian.com/forums/ubbthreads.php?ubb=showflat&Number=625758#Post625758

Joined: Oct 2017
Location: United Kingdom
journeyman
Offline
journeyman
Joined: Oct 2017
Location: United Kingdom
I made a script yesterday for what sounds similar to what you're trying to do, maybe you can use this as a base. When talking to an NPC, it checks if you have at least 100 gold and if so it sets a hasMoney flag on the player and gives the NPC 100 of your gold.

Code
IF 
(whatever condition)
AND
CharacterGetGold(_Player,_Gold)
AND
_Gold > 99
THEN
ObjectSetFlag(_Player, "hasMoney");
Proc_GiveNPCGold(_Player,CHARACTERGUID_npcVendor_f8a54b4d-d096-4f42-a3a7-2a23d851ae26,100);


Then tell the dialog node to check for hasMoney flag.

A big tip that helped me a lot - if you struggle with getting a script to work, open up the Origins story and look at Larian's scripts. Go to the script editor and ctrl+shift+f and search for the command you want to use, say CharacterGetGold. Then you get examples of how Larian did it, you can see the context and then adapt it into your own script.

And yes the editor is real pain (esp the scripting) and not very user friendly.

Joined: Jun 2013
addict
OP Offline
addict
Joined: Jun 2013
Thanks a lot Branvex, for your help. My issue so far is not really this. My issue is that, reverse engineering that GEN_Transfert code (it took me a long time to get it, because it is used both as a check and set flag, and you have to create a specific DB to have it working), by studying Larians, as you said, I finally had it to work, with origins as a parent. Then, withous origin as a parent, with every thing the same (same DB, same set up, same everything), this wouldn't work anymore. So I spent some time trying to understand, but that Osiris stuff is so fucked up, I couldn't. So the rage.

Thanks anyways.


Un chemin de 1000 lieues commence par un premier pas.

Project:
Steam workshop Frontiere
Joined: Apr 2016
Location: Los Angeles, CA
E
journeyman
Offline
journeyman
E
Joined: Apr 2016
Location: Los Angeles, CA
Why they chose to create a Prolog like "language" is completely baffling. Was there a contest to pick the most obtuse, unfriendly language used by the fewest programmers ever?

Last edited by Eldarth; 08/10/17 07:44 AM.
Joined: Jan 2010
Location: USA
F
enthusiast
Offline
enthusiast
F
Joined: Jan 2010
Location: USA
Originally Posted by Eldarth
Why they chose to create a Prolog like "language" is completely baffling. Was there a contest to pick the most obtuse, unfriendly language used by the fewest programmers ever?

They also didn't need to write their own language. Lua is a thing that exists, although I'd have preferred Python.

Not sure why they didn't choose the path of least resistance.

Joined: Sep 2017
Location: Finland
journeyman
Offline
journeyman
Joined: Sep 2017
Location: Finland
I found Osiris very easy to pick up.

But then there's those story only functions that would have been useful in char scripting. smirk

I think they didn't go with one of the "popular" programming languages, is because modding also attracts players who aren't savvy in programming languages. Thinking all you need to know is how to IF, ELSEIF, ELSE, ENDIF, and you're set, is unrealistic. It takes some of those languages up to a year or more to pick up, and paying for classes is not always on the table for folks. I learned JS entirely from the MDN and still learning it. If Osiris was anything like say, C++, I doubt there would be much scripted mods out there. It is to give a fair chance for everyone who wants to mod. That's what I think.

Last edited by Rasikko; 08/10/17 08:37 AM.
Joined: Mar 2016
Location: Belgium
T
addict
Offline
addict
T
Joined: Mar 2016
Location: Belgium
Osiris has existed since the original Divine Divinity game from 2002 (and was obviously developed even before that). It has been used in every single Larian game since. I wasn't around back then, but I assume it was used/designed because rule-based logic is a natural fit for event-based programming.

I also found Osiris as a language fairly easy to pick up when I applied for a job at Larian (using the videos created for DOS1). However, it is definitely true that especially in the beginning, it is very hard to figure out what goes wrong when it does, and why.

I have written most of the Osiris documentation from DOS2 based on what I remember was hard to figure out (like how to structure goals to ensure things get initialised/executed in the right order, and how rules get evaluated exactly), but some tutorials from the ground up like there were for DOS1 are definitely also still needed. Fortunately, the base language has remained pretty much the same and those previous videos are still 99% relevant.


Moderated by  Larian_KVN 

Link Copied to Clipboard
Powered by UBB.threads™ PHP Forum Software 7.7.5