Aller au contenu

Photo

ColorsFade's Development Journal


  • Veuillez vous connecter pour répondre
560 réponses à ce sujet

#126
Dann-J

Dann-J
  • Members
  • 3 161 messages
Chandeliers should be converted to environmental objects. Unless you plan on being able to light them (or swing from them), in which case they'd have to be usable and non-static. There's no good reason to keep them as static placeables.

#127
Tchos

Tchos
  • Members
  • 5 042 messages
Chandeliers and any other static placeable behave that way because the vertical axis doesn't matter to the walkmesh. It does not distinguish between an object on the ground, above the ground, or buried below the ground.

#128
kamal_

kamal_
  • Members
  • 5 240 messages

ColorsFade wrote...

Eguintir Eligard wrote...

If you are a developer like I am, you will know the importance of organizing and planning, and the resultant decrease in overall project time. Do not let anyone tell you otherwise..


One thing I really appreciate is that as I learn the toolset and how to move efficiently with it, development time decreases (as it should when one becomes familiar with any tech stack). 

I did a few things today that only took minutes, that I know would have taken me hours in the beginning. 

One funny thing from today: I have a guard barracks where some of the plot conversations take place. As I was walking around the room I noticed that the two places where I had chandeliers hanging I could not walk. That's the kind of bug that would have killed *hours* for me earlier. But here I figured it out in two passes. The chandeliers have to be set to "walkable" and then you have to re-bake the area. Problem solved. 

I don't know why chandeliers act that way, but I don't care. Problem solved!


SLS? I think one or two of the chandeliers included with that were mistakenly not walkable.

#129
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
It was an SLS2 prefab, yes.

If I go to change it to an environmental object, I am warned that I lose the scripting (which I don't want to lose). So making it walkable and rebaking was what I did.

#130
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
Thought I'd post a quick video today. 

I am in the process of building a mine. It is one of the first "dungeon" type areas you encounter in the campaign. I was filling it out yesterday with placeables and making it look pretty, setting up encounter areas, when I noticed there is a barrel in the Toolset that is marked as "explosive". 

So, I thought I'd place one down and see if, by default, it really did "explode" when you attacked it. It did not, of course, and I really didn't expect it to since I couldn't see any customized scripting on it. 

But that got me thinking... What would it take to make it explode? Just a script. So I set about writing a script that would make the barrel explode and also perform a knockdown effect on affected creatures. 

The script wasn't too hard to write. I copied the one from the basic Fireball script and then modified it (since a lot of what happens in the default Fireball script assumes a creature caster, and if you are using a placeable it doesn't work). One of the things the script does is check the placeable for a local variable called SPELL_LEVEL. This lets you set the level of the blast. If you don't set the level on the placeable with a local int, then it assumes a value of 1. This is handy for reusability - just set the level and then copy barrels. 

The result is in the video. The kobolds at the end of the hall are kind of hard to see (I should have used larger creatures for testing I guess). But you can see they get knocked down. All but one dies (it's a level 2 barrel). 

It should make for some fun HalfLife-type environmental tactics. I plan to use this with other things besides exploding barrels. I'm sure there's all sorts of ways one could incorporate this. I'm already thinking about a mad wizard's tower where smacking things around causes lightning bolts to arc across the room... Or touching a cursed bookshelf causes the creature to become petrified... 

Exploding Barrel

Modifié par ColorsFade, 22 mai 2013 - 04:12 .


#131
kamal_

kamal_
  • Members
  • 5 240 messages
I hope you didn't have to spend much time on that script, there's already scripts for exploding barrels on the Vault.

#132
Arkalezth

Arkalezth
  • Members
  • 3 188 messages
Yes, I remember Fanglewood had them (and maybe some other modules as well). I rarely used them when I played, though, since I wouldn't gain any experience that way.

#133
-Semper-

-Semper-
  • Members
  • 2 256 messages

Arkalezth wrote...

I rarely used them when I played, though, since I wouldn't gain any experience that way.


perfect example why giving out xp for killing stuff harms gameplay. btw exploding barrels were also existent in soz.

#134
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
I thought about looking for a script - I figured this was a pretty common thing. But I'm a programmer... I'd rather just write it myself. Plus, I learn stuff.

It didn't take long really.

The biggest advantage of doing it myself was now I can see how I can use such a script for all sorts of other environmental effects. And *that* got me excited. Blowing kobolds up is fun and all, but I can really see this being fun later on...

Modifié par ColorsFade, 22 mai 2013 - 05:47 .


#135
Arkalezth

Arkalezth
  • Members
  • 3 188 messages

-Semper- wrote...

perfect example why giving out xp for killing stuff harms gameplay.

Yeah, if I made a module, I'd likely juts give XP per completed quest, or something like that.

#136
Dann-J

Dann-J
  • Members
  • 3 161 messages
I'm using exploding barrels in the module I'm currently working on, although they're mostly for opening stubborn doors. I created my own script as well (based on one of the Balor OnDeath scripts, but toned down). Placeables and doors caught in the blast radius that have a local variable on them catch fire for a round (if they survive the blast) and endure 1 point of additional damage per second.

I've given one particular door an onSpellCastAt script that checks for the fireball spell (which the barrels emulate), so that if you kill the barrel next to it, or cast a fireball of your own (which also detonates the barrel), the door is unlocked and blown open. You can also pick the lock if you're a good enough rogue, or cast the Knock spell on it. Much like skinning cats, there's more than one way to open a lock.

I could make things even more complex and check to see whether creatures (including party members) in the blast radius are wearing cloth or leather, and set THEM alight as well. I could also do a fortitude save against knockdown, and perhaps add in a chance to blind or deafen creatures. Or vary the damage done (and the DC of other effects) depending on the distance from the barrel. Once you start thinking about ways to 'improve' an otherwise simple script, you can find yourself wasting a lot of time on it. Image IPB

Modifié par DannJ, 22 mai 2013 - 11:08 .


#137
ColorsFade

ColorsFade
  • Members
  • 1 267 messages

Arkalezth wrote...

-Semper- wrote...

perfect example why giving out xp for killing stuff harms gameplay.

Yeah, if I made a module, I'd likely juts give XP per completed quest, or something like that.


I'd guess 95% of the XP in my campaign is going to come from quests. 

I'm not altering the default creature XP much so far, but the amount is nominal compared to what you get for quests. I want to encourage players to find different ways to solve problems and to experiment with their environment as well. 

I'm big on negotiating too. Diplomacy, etc. You'll be rewarded for that kind of approach, as opposed to always using the violent route. There's plenty of monsters to slay anyway :-)

#138
Dann-J

Dann-J
  • Members
  • 3 161 messages

ColorsFade wrote...

It was an SLS2 prefab, yes.

If I go to change it to an environmental object, I am warned that I lose the scripting (which I don't want to lose). So making it walkable and rebaking was what I did.


If the model is affecting the walkmesh, then it sounds like it's set to 'static'. I'm pretty sure that static models can't run scripts. If it has it's own HB script that automatically lights itself, then it'll almost certainly have to be set to non-static (which won't affect the walkmesh). It doesn't need to be usable either, unless you want to be able to light it manually.

#139
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
Wow, a month without a journal entry. I guess I better write something. 

I've been spending most of my time working on my AI and getting it to a point where I consider it "version 1 finished". JonnieRS showed an interest in using it, so I've been hammering away at it with the free time I have. It's close to being done.

I finished the AoE AI function today. It's a load of fun to watch in action. The way enemy spellcasters handle their spells has always been such a disappointment to me. This is going to really make me feel a lot better about creating certain types of encounters. It's going to make spellcasters way more dangerous, IMO. 

I'm down to the final 2 exterior locations for the prologue. They need to be created and populated and then all the areas for the prologue will be done. There are a handful of conversations left, quest updates, etc. But for me, what I've learned is that it all starts and ends with Areas. All other work spins off from that. 

I'm anxious to get the prologue wrapped up and start moving on to Act 1 since it takes place in a city, and I'm excited to build that sort of Area. I plan on taking a look at some other folks' work in this regard, because certain modders have a reputation for creating some very interesting cityscapes. 

Oh yeah, and a small reveal: the city in question is Scornubel... 

#140
Eguintir Eligard

Eguintir Eligard
  • Members
  • 1 832 messages
I want those AI scripts mine suck

#141
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
@Eguintir I have no problem passing them out. I'm almost finished with version 1.0. I'm giving a test module and the scripts to JonnieRS as soon as I'm done. Send me an email at cb.holmes@gmail.com and I'll add you.

These scripts may not be what you need or want - I am building them for myself. I'm a programmer so I'm very comfortable writing scripts. These AI scripts just make writing AI scripts easier, IMO (and allow you to customize, to a certain extent, how nasty you want enemies to be).

If you like 'em, feel free to use 'em.

I'll eventually crank out a version 2.0, but not for a while. Once I get this version 1.0 AI scripting done I plan on dedicating my time to the campaign for a bit.

#142
Eguintir Eligard

Eguintir Eligard
  • Members
  • 1 832 messages
I'm a programmer too I'm just too occupied with other stuff to spend hours on end writing AI scripts when one is existing. I wrote cheap little ones to force a specific behaviour for some mages in my islander Campaign, (such as fireball on site, magic armor always first, etc). But nothing encompassing enough to determine all spell uses. Email incoming.

#143
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
 Well that was eventful... sheesh. 
I just spent a couple hours debugging one of the weirdest glitches I've seen. Fortunately it's solved now. 
I finished the monster AI this past week and got it into the hands of two people (Eguintir - check your email, I sent it to you buddy). JonnieRS has it as well and he found a problem with the cleric. 
I use GetHasSpell() a lot in the library to determine if a creature/monster can cast a certain spell. This ends up being problematic if the spellcaster has any Summon Creature spells memorized. The wiki has a bit of info on this issue

This numeric counting "glitch" causes the cleric to *think* she has a healing spell when she does not. She can't cast a spell she doesn't have, and the AI code thinks she does have it because GetHasSpell() is returning TRUE, so the cleric just stands there doing nothing. 

The solution to this problem ends up being that you have to remove all memorized Summon Creature spells from the caster. But what if you want them to cast a summon creature spell? You have to resort to using CastFakeSpell calls. Doable - but it would have been nice if GetHasSpell() would simply work the same for all spells... 

Meanwhile, I have to say it was a relief to finally get the AI library done (version 1.0 anyway) and start working on the campaign again. I have 2 areas left to create for the Prologue, so I decided to jump in and just start working on one of them (they are both external). I have to say it's nice to have some time with the Toolset under my belt now, as it takes me much less time to get an outdoor area up and running and looking decent. I'm down to one last area to create now. 

It has also helped to take notes of every process I end up repeating, like scripting cut-scene dialogs, adding companions, etc. It just takes less time to get things done now. If only I wasn't also losing so much development time to summer!

End of journal entry... Back to work!

#144
PJ156

PJ156
  • Members
  • 2 982 messages

ColorsFade wrote...

If only I wasn't also losing so much development time to summer!


There's worse things to lose it too, I don't know if you are GMT but we are only really getting our summer here now. Happy to lose some time to the lawn :)

How much harder do you think your AI makes the fighting? I have got the the point where I only give mages a few key defense spells. That way they buff in two rounds then start flinging damage about. With support mages get quite tough that way. Does your AI stop them buffing at the start of combat once they have a couple of key defenses up or will they buff till they run out ?

PJ

#145
ColorsFade

ColorsFade
  • Members
  • 1 267 messages

PJ156 wrote...

How much harder do you think your AI makes the fighting? I have got the the point where I only give mages a few key defense spells. That way they buff in two rounds then start flinging damage about. With support mages get quite tough that way. Does your AI stop them buffing at the start of combat once they have a couple of key defenses up or will they buff till they run out ?

PJ


1) It makes the battles a LOT harder :-) But it's not a plug-and-play AI. It's just a library that makes AI script writing way easier. I have sample scripts that show how to do everything though. And I have sample battles setup in a module so you can see the AI in action. Some of the battles are kind tough. 

One battle in particular is your party (Elanie, Grobnar, Sand, Z and you) vs a cleric, wizard and 3 fighters. It's a level 8 battle. If you don't buff and prep and play smartly they will smoke you. 

2) I give you two ways of doing buffs. A) You can assign spells to cast in a specific order at the beginning of a fight. They are cast as normal spells so they each take a round to cast. Or method B) You can inta-cast several protections all at once (kind of like an old fashioned spell sequencer). 

I use method B a lot in my campaign because I figure most of the time the PC party is already fully buffed. The NPC's deserve a shot to use their protections too. 

Having the Ai library available has made a difference - I can get creatures to do what I want now instead of casting stupid level 0 spells or just being dumb. I like it. 

#146
ColorsFade

ColorsFade
  • Members
  • 1 267 messages
I finally figured out how to fix the summon monster glitch with wizards and clerics. Kinda happy about that.

If you want to use GetHasSpell() in your scripts to determine if a spellcaster has a certain spell memorized, and you don't want that function call to report a wrong number due to the creature also having Summon Creature spells memorized, what you have to do is remove all memorized instances of Summon Creature at all spell levels from the creature's Spells tab on the property page.

If still you want the creature to be able to cast Summon Creature spells, grant those as "Special Ability" spells instead.

Tested and works.

#147
JonnieRS

JonnieRS
  • Members
  • 70 messages
Just some general comments  about the monster AI. I am working at integrating CF's Boss AI scripts into my mod. I have developed scripts for low level to medium level clerics and for much higher level clerics who are actually specific NPCs. I have also modified scripts for a high level wizard and a high level sorcerer. The most challenging has been scripts for Vrock demons who normally start the encounter by summoning in another Vrock.
I have noticed the a significant difference in how the clerics fare in combat. Because they buff before the combat and more intelligently use their spell powers they make much more difficult opponents than before.

The days of a lower level party overcoming a high level wizard or sorcerer are over. I have tested this two different ways. The first was to just fight the wizard/sorcerer alone. With a well-rounded party of six averaging 7th level it was almost standoff against a 9th level wizard/ 6th level spectre who was pre-buffed. He actually dropped my two fighters 2 levels each and killed the rogue outright and severely injured the cleric, so even though we won It was a costly victory. When I repeated the combat with his two pet iron golems, it was obvious that the party would have to be 9th level plus if they even had a chance of surviving.

I have yet to test the Vrock. But demons need to be nasty. I am using CF's Reaver script for the Vrock.

CF is sensitive about the fact that the Boss AI not plug and play, but actually this system is a lot easier to use than some "finished" products you can find on the vault.

I will keep everyone apprised.

#148
Morbane

Morbane
  • Members
  • 1 883 messages

Arkalezth wrote...

-Semper- wrote...

perfect example why giving out xp for killing stuff harms gameplay.

Yeah, if I made a module, I'd likely juts give XP per completed quest, or something like that.


in 1st edition rules acquiring gold was 1:1 gp:xp ! 
of course getting big treasure could be a goal rather than getting xp for selling items
our group phased it out before long, but the rule is there in the DMG
:blink:

#149
Guest_Iveforgotmypassword_*

Guest_Iveforgotmypassword_*
  • Guests
What's the difference between giving xp for killing an enemy or a whole big chunk for finishing the quest that involved killing the enemies ?

So long as you give the same amount for resolving something without resorting to violence I can't see what the issue is.

#150
-Semper-

-Semper-
  • Members
  • 2 256 messages

Iveforgotmypassword wrote...

What's the difference between giving xp for killing an enemy or a whole big chunk for finishing the quest that involved killing the enemies?


the big difference is that it encourages many styles of play. sneaky, talky, bloody - everyone get's the same amount of xp without a chance to exploit (after talking your way out killing everything for free double xp) the system. just play the way you like and everything is fine - and even socially skilled characters are viable. plus such a system removes the need to hack through a ton of filler fights just to advance the party. in my book it's better to create few special encounters which can be beaten in different ways with different outcomes.

Modifié par -Semper-, 20 juillet 2013 - 08:22 .