Sunday, August 25, 2013

Development Update: Suggested Names

I've taken a short detour to implement a feature long in mind: character name suggestions during the character creation process.

Names are suggested based on the combination of race and gender, and are randomly selected from a list configured in the editor. The 'random' generation on the screen will also pick a random name now.
I've been thinking that the character creation wizard needs some changes, it's a bit scattered and crowded right now. I'd also like to eliminate the modifier editing in favour of preset modifiers on starting kit...

Monday, August 12, 2013

Development update

Foe inventories are now populated on spawning from their loot tables, and prior to combat each foe has a chance to fill any open slots with appropriate equipment that it may be carrying.

This has an some indirect impacts on loot drops. First, each foe now generates loot prior to combat rather than all loot drops being generated at the end. This open up some interesting options for theft/breakage/other impacts in foe items that I had planned many years ago but never come close to implementing. Second, foes that rely on equipment (hirebrands, leonal knights, etc) will now drop stacks of loot. I may need to work in some kind of destruction of items before dropping them, and will probably need to implement the long-dreamed of party-inventory.

Opening one door always reveals more doors to explore beyond, but these ones are for further in the future.

Hooking up actual foe behaviour to equipment and the GOAP AI will be a lot of work still, so I may have a go at cleaning up the open bugs and cut a release before tackling it. We'll see.

Monday, July 22, 2013

Development update

Foe attacks have been refactored into natural weapons (melee and ranged), spell-like abilities and plain old spell books. UnifiedActor now has access to all three.

Character races can now be assigned natural weapons, but the player can't yet make use of them. In time, in time. Races and character classes will also receive multiple spell-like abilities, rather than the current single special ability. Those two changes will need a UI update...

On the other end of the change, I've written a simple Goal-Oriented Action Planner in a reasonably general-purpose way. World state is stored in a set of booleans. Given the starting and desired world states and a set of actions that each have a cost and change the world state, the AI can plot (via an A* graph search) the least-cost path to the desired world state. Credit goes to the GPGOAP project for showing me how easy such a thing could be to implement.

So the end game in sight is that every UnifiedActor can express a list of possible combat actions every round. Players select them via the UI. Foes will run their list of actions through the GOAP AI and use what pops out. We're still some way off from that, and the magic will be in expressing cost and world state changes of every single foe combat option. Garbage in will mean garbage out, as always.

Friday, July 5, 2013

Refactoring Continues

The foe data model has been refactored out to be based entirely on UnifiedActor. The upshot is that Foes now have access to a number of things that only PlayerCharacters had before (e.g. inventory, equipable slots, wielding combos, race, class (and multi-classing), gender, spellbooks), while PCs in turn have access to a few things that were once Foe-only (e.g. arbitrary body parts).

What remains of the refactoring is to generalise a number of features of Foes that get in the way of letting them just use items - notably the FoeAttacks. These will get refactored out into Natural Weapons associated with body parts, special abilities, and the existing spellbooks. A nice side effect of this is that PlayerCharacters will have access to natural weapons and multiple special abilities with a little more work. Yetis, I think, will get claw attacks.

After that it's on to writing some AI for foes to actually equip and use the items where possible. Each foe will get it's items from the configured loot table, and before combat get a chance to load out whatever slots it has available to best effect.

The indefatigable Rob A has done some invaluable testing and has filed a bunch of issues over in the tracked at SourceForge, which I will get onto after that.

Wednesday, June 26, 2013

Where we are

...is deep inside refactoring the foe data model. This began with moving desired PlayerCharacter functionality into a base class (lamely called UnifiedActor, but we can get back to that). Common data includes race, class, gender, name, level, body parts, equippable slots (generated from body parts), stats (which includes modifiers and resources) and spellbooks. This involved some refactoring of the data model - races need to specify body parts, body parts need to specify how they generate equippable slots. Those data model updates are where I'm at now. The PlayerCharacter interface remains intact and backwards compatible, and inherits from UnifiedActor. After that I'll start on integrating it into the Foe data model. I think I can do this without touching any of the data in the foe database... at least initially.

Monday, June 3, 2013

v0.911 released

I've rolled up the last six months of incremental changes and uploaded it to SourceForge

---------------------------------------
v0.911 (4 June 2013)
---------------------------------------
Features
 - Added 'forget' spell result that removes auto mapped area
 - Character speech in NPC conversation now appears in speech bubbles
 - Conversation dialogue for Ideaus and Stenelaus
 - Added NPC: Pandarus the tobacconist in Aenen
 - General Options event that presents a dialog of options to the player
 - Numerous small content additions in various zones
 - Renamed Merfolk race to Triton
 - Added Amphibious property, assigned to Tritons
 - Attribute modifiers are no longer editable on level up
 - Increased race and class impact on attribute modifiers
 - Introduced a level up bonus option to increase a base modifier by one
 - Removed ATTACK RATE modifier, attacks and strikes are now explicit
 - Removed Spell shortcuts, replaced by Display Name
 - Source distro can now compile and package from scratch

Wednesday, May 29, 2013

A pact with the powers of darkness

Hogan licked his lips nervously and cast a glance around the glade. His companions had busied themselves with preparations to strike camp and were paying the Acolyte scant attention. The time was now. Hogan slipped between the trees and moved some distance away from the others, heart beating fast. Compose yourself, he thought, this is not the first time. Nor is it the last. Finding a secluded spot he seated himself, and forced his lips to frame the first of the three prayers required by his dark masters.

Hogan, as always, his stomach churned as the powers of darkness responded to his call. Hogan. Our loyal servant calls once again upon us. What do you require, Hogan?

Power, master, Hogan replied, power that I am owed by our pact. Honour our pact and grant me now this power.

Power we will grant you, Hogan. As always, there is a price. How might our loyal servant pay us that grant him power?

I may pay with all that is mine to give, master. Say but the word. Hogan knew the words by rote.

Indeed you shall. We have need Hogan. Need of your BLOOD, need of your STRENGTH, need of your SOUL. How shall you pay for the power that is to be yours?

Hogan's mouth was dry. He knew he could not consider the question too long. I will pay with my blood master. Honour our pact and grant me the power!

~~~~~~~~

A shuddering cry disturbed the glade. The party leaped to defensive postures. There was a moment of silence, then Hogan staggered into view and stood pallid and trembling, leaning heavily on a tree near the edge of the glade.

"Hogan!", exclaimed the Knight, "Are you alright?"

The Acolyte raised his head. His features were haggard and pale and pinched with pain, but his eyes burned brightly from beneath his dark brows as he regarded the others.

"Yes. Yes I am. Let's go"

Monday, May 13, 2013

Where We Are

It's been a quiet three months.

Not for me; Connor is three months old now.

No, it's been quiet for development Escape From The Maze. Very quiet.

I have done a few things: replaced Attack Rate a better implementation, removed base stat boosting at level up (it becomes a bonus option rather than something you can spend a modifier point on), added some minor content, and tweaked a few things.

There was a complaint on the project page that the source distro wouldn't compile. This is valid, because it's just a roll up of the source code. He raises a good point though, and I'll aim to have a working source distro up before I upload the next release. That'll come when I have some free time...

I have been playing some Frayed Knights, it puts the little boy to sleep. I recommend it, although it's a very different flavour of Wizardry clone to what I'm aiming for.

Thursday, February 21, 2013

Thinking Of System Changes

Having tinkered long with the balance and played through a bit (not nearly enough), the feeling has grown on me that some basic game system changes are needed. Here's a brain dump of my thoughts.

No More Attack Rate Modifier
A generic "Attack Rate" modifier that is translated into a number of attacks/strikes sounded like a good idea, but wasn't. Instead I'm going to try this: A base single attack with a single strike that is increased by (a) level and focus, (b) attack modifiers and (c) misc other stuff like items. Attack modifiers will modify the number of strikes per attack (e.g. Swing +5 grants an extra strike on each Swing attack). Level and class focus will modify the number of attacks (e.g. 2 attacks at level 5 for combat character classes). Other things will modify these numbers directly (e.g. weapons that grant extra attacks or extra strikes per attack).

Modifier Effects (What Might Be Called Skill Trees In Another Game)
In general, every skill modifier and base modifier should grant different effects as they are increased, probably at thresholds like +5, +10.

No Boosting Base Stats At Level Up
The base stats Brawn, Skill, Thieving, Sneaking, Brains, Power will no longer assignable at level up. This will take re-balancing of the class and race starting stats and the level up assignable modifiers, but it should (a) make the class/race choice at character creation much more significant, (b) avoid just spamming these base stats instead of the skill modifiers and (c) allow me to differentiate races and classes more by bumping the starting values to more significant values. I may add a level-up bonus option for bumping these base stats instead.

Fix Foe Data Model
The custom Foe data model needs to be changed to correspond more closely to the Player Character model. As close is possible. This means foes with inventories, using weapons and items that they have available, etc.

No More Stealth Points (Perhaps)
The Stealth points really haven't done the trick, it may be time to do away with them.

A Better Magic System
I want to have differentiate the schools of magic more. For starters: resource management. Instead of every school using a bland pool of Magic points I will introduce a different spell casting mechanism for each. For example:

  • Sorcery (maybe) operates on a D&D-like spell book with reserved spell level slots. Sorcerers may have a starting item (spell book) tied to their casting, and usable as a way of replenishing their spell slots.
  • Elemental magic comes from within: users spend stamina points to cast spells. Users channeling elemental energies through themselves must be careful to avoid letting it get out of control.
  • Black magic users trade portions of their soul for spell casting, perhaps a very large but very slowly (or non) regenerating pool of points to spend coupled with consequences as the total drops towards zero. Consequences culminating in death or possession or something.
  • Need more thought on White Magic (soul again perhaps, but in reverse), Druidism, Enchantment (something to do with the fey) and Witchcraft. 
  • Differences may include how spells become available (all, some, spell picks, etc), whether they can be cast at different casting levels or not.
Secondly, the spell lists need some rework. I want:
  • All unique spells in each school, no more spells shared between schools. For spells that offer important game-system effects (e.g. Identify, Knock-Knock, Heal), alternatives will need to be invented.
  • Better names for each spell. Think MtG rather than D&D.
  • No more spell shortcuts, it was cute but it's over now. The spell dialog search can work on plain old spell name.
  • More spell effects that "break" the system. Inspired by Rampant Coyote's recent blog post I want to have a bash at incorporating some of the "system breaking" D&D spells into Maze. Things like Charming, Divination spells, Teleportation, Flight/Levitation, Shatter, Polymoprh, , Wishes, Time Stop, Disintegration. Those are just the obvious ones, never mind Protection From XYZ, Speak With Plants/Animals/Dead/etc, Animate Objects, Enchant Weapons, Tree/Sanctuary/Statue, etc. Yeah I paged through my first edition D&D Player's Handbook for that :) Some will take a lot of effort, but it's worth a crack.
  • More condition effects. Crazy stuff like infection with a fungus, haunted by a spirit, accompanied by a genie, and so on.
That's about all I can think of for now. This post is probably for my own memory as much as for anyone else :)

I gotta go, it's bath time.

Saturday, February 16, 2013

Connor Brett McLachlan

Our first son was born at 12:10 on 8 February; a healthy 4280g bundle of trouble.

Life is a little distracted from the hobby project, but hopefully only temporarily so.