Slowdive's Little Daily Blog

Discuss anything in general about the IceBlink Engine + Toolset project (or anything else) here.
User avatar
Dorateen
Posts: 192
Joined: Thu Jan 16, 2020 3:03 pm

Re: Slowdive's Little Daily Blog

Post by Dorateen »

-check before casting spell that the effect is not already on the target and is not stackable (don't bless twice or put to sleep if already asleep).
-if a PC is immune to a spell such as sleep, let the caster try once, but allow them to learn that the PC is immune and then don't try again.
-decide if best to start with buff/debuff spells in the first round or two and then move to damage and heal spells.
-if the PCs are close together, use AoE spells. If they are spaced out, focus on higher damage single target spells.

What else? Thoughts?
What about if casters are out of range for their offensive spells, they will move into range and then cast. Good call about not casting duplicate buff spells repeatedly.
Pongo
Posts: 113
Joined: Fri Jan 22, 2021 8:39 am

Re: Slowdive's Little Daily Blog

Post by Pongo »

That all sounds great!

Some ideas below - these are random musings from someone who doesn't have a clue about programming or how difficult / achievable they might be in practice, so appreciate they might not be realistic.

- Perhaps the caster could be aware if it's primary defence spell has run out / been dispelled, and then prioritise recasting? Eg mage casts stoneskin, casts offensive spells, stoneskin runs out (or is dispelled), so then the caster prioritises recasting stoneskin in its next turn.

- I appreciate this might be too complex, but it would be amazing if an enemy caster could "react" to player spells. Eg, if the player casts a silence type spell, the enemy mage might cast vocalise; if the player casts slow, the enemy mage might cast haste. I guess you wouldn't want this to be 100% the case, because otherwise you could outwit an enemy cleric by repeatedly casting bless and having him cast bane in response instead of a better, higher level spell. Perhaps there could be a % chance - eg if the enemy caster has the correct "counterspell", there's a (30%?) chance they use it.

- As another idea, perhaps there could be different "aggressive caster" and "defensive caster" ai builds? Eg

Aggressive caster
- starts with a personal defence spell (stoneskin, mirror image etc).
- Moves straight into damage spells. Will cast AoE spells if player character numbers equal or greater than ally numbers in the area of effect (ie if the caster can drop a fireball on three pcs and three allies they'll do it; if they would hit three pcs and four allies they won't.) In around where an AoE attack isn't an option, they focus on single target damage spells instead.
- Will recast the initial defence spell if it is dispelled or runs out.

Defensive Caster
- starts with a personal defence spell
- if the caster can cast an AoE at the party at any time in the combat and hit only pcs, then will do so, but it will not cast an AoE if it will hit any allies.
- otherwise moves into buffing allies (haste etc).
- once a couple of buffs have been used, starts debuffing the pc.
- recasts personal defence spell if dispelled or runs out.

And then a "general caster" ai, which follows a more of the pattern you set out above.

Anyway, just some ideas!
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

Good idea Dorateen on checking to see if moving first would increase the effectiveness or availability of a spell.

Pongo, all of the ideas you suggested should be doable. For me, programming AI (I'm no expert and there is probably a better way) is just like a flowchart with decision points and some of those decisions can be based on percentages and rolls. Decisions are also based on looking at various options and applying a weighting system to the possible choices. So it is just checks (like looking to see if PCs have a certain effect on them like sleep, bless, haste, etc) with some if-then statements that use random rolls and a weighted decision tree.

I think in the end, I will have a bunch of caster AI types to choose from like Pongo suggested. I'll need to be sure and describe what each caster AI is doing so the builder knows exactly what the AI does. so I think we have a Aggressive and Defensive caster description started. Let's build from there.

I'll start a Creature AI thread and we can update that.
viewtopic.php?f=1&t=56&p=902#p902
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

Making some progress on the improved caster AI. I am currently working through the General Caster AI and upgrading it based on the notes from the Caster AI thread. Nothing really to show just yet, but I think I have a framework of code that should work. I'm sure the other AIs will be easier once a code framework has been figured out once.
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

So today I did some play testing of The Raventhal and The Birthday to make sure they still work well with all the new additions to the IBbasic engine. There were a couple of minor bugs that I was able to fix easily enough. There is an issue with the pathfinding that I still need to figure out. I plan on testing Blackwinter, Lanterna, and The Elderin Stone as well to make sure they are ready to go for the v1.0.9 release. I'll probably release v1.0.9 for PC this weekend and maybe Android, if I can get all the code moved over and tested for the Android/iOS version. I'll save the iOS release for v1.1.0 after v1.0.9 has been out and tested for a little awhile. I'll be doing a let's play of The Elderin Stone with all the new features :D
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

If anyone wants to help test the current IBbasic build see below link:

https://drive.google.com/file/d/1liAXWw ... sp=sharing
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

I posted the latest version of IBbasic (1.0.09f) to the NW Vault:

https://neverwintervault.org/project/ic ... inetoolset

Please play test if you have any spare time. Of course, we are all busy, so no expectations or pressure from me :lol:

The next release will be the official release of IBbasic, v1.1.10 YEAH!! :P :D

I'll move my main focus to IB after that.
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

Made a few bug fixes while testing The Elderin Stone. The link below for IBbasic v1.0.10 includes updated modules included so a bit larger download:

https://drive.google.com/file/d/1NZ7r8p ... sp=sharing

I'm still searching for bugs and play testing. I may do a few streams of my play tests, we'll see.
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

A lot of play testing today in IBbasic and I found lots and lots of bugs :lol: My wife and kiddos helped with the bug hunt as well. Tomorrow, I'll have some bug fixing to do and another version to release for beta testing, v1.0.11. I have The Elderin Stone posted as well for testing as I made a play through and fixed most of the bugs I found. I still need to work on the Hearkenwold conversion, but that will be a large undertaking and I need to work on a better import from IB tool first. I also would like to import Red Carnival and finish my Lanterna 2 and H&C conversion from NWN2. And of course fix all the IB bugs and additional features, so many tasks :D
User avatar
slowdive
Site Admin
Posts: 394
Joined: Wed Jan 15, 2020 4:37 am

Re: Slowdive's Little Daily Blog

Post by slowdive »

Made a boatload of bug fixes and engine improvements in IBbasic over the past two days with the help of my family beta testers :lol:

I updated the IBbasic feature/bug board to show all the bugs fixed and the remaining ones to fix.
viewtopic.php?f=10&p=965#p965

It is starting to look and feel very polished, stable, and more intuitive.
Post Reply