Thursday, April 5, 2012

Henchmen Part Deux

As I am fast closing in on the time that I would like to start an alpha testing period, I have been trying to put the finishing basic touches on the different game systems on the backend. I just recently finished the grouping system and polished up the in game friends list, so now I set my sights back on the Lair and Henchmen setup. I very briefly set up the scaffolding for this behind the scenes about a month ago, but it was most certainly not in a useable state. While lair's supported Henchmen, there was no way for the game to interact with them. So, I set out to fix that.

First thing I needed to decide was how a lair would attract followers. What would it be based on? I decided to base it around what structures a player has built in their lair, along with a percentage attribute on the lair. The more you build up the lair, the more the chance to attract followers will be. So, basically while you may have the proper structure built, it does not mean that anyone will come. That is based on the percentage chance inherent to each lair.

Each particular type of structure will have a type of henchman that it attracts. For example, if you build a Gold Mine in your lair, you will attract imps. Training Grounds attract goblins, etc. The higher the level of their particular structure, the higher chance there is to attract them. The structure level also controls how many particular henchmen will be attracted at one time. These creatures are weak willed and easily controlled by anyone of measurable power, hence why they come to you. This works within the lore of Avaloria nicely, since the player is technically a demi-god. The idea will be to amass quite large armies of minions and then set them out to attack your opponents. The first portion is there now, being the generation and attraction of henchmen to the particular lairs.

The next portion to code in, and the most fun I imagine will be the lair combat code, which will be all the logic to control henchmen battles with other Lair's. This certainly will not be quick and easy, but it is the last "large" portion of code I have to work on before I am ready to open the gates to a testing group. While an Alpha test is by far no where near the end of the road, it is the start of a new chapter for Avaloria. It has grown from a small hobby code-base into a fairly feature rich mud code base. Since I have never done any thing at this scale, I can't help but be incredibly proud of my creation. Seeing it all work as it should while play testing makes for a very happy creator/developer!

Tuesday, April 3, 2012

The more the merrier!

grep would like you adventure with you. Will you join them? [Y]/N:
Adventuring Party formed! Leader: grep Members: [grep, josiah]
Name Level
grep 1
josiah 1

This past week I have had myself neck deep in Character Grouping code to allow for folks to invite/join an adventurer party complete with its own chat channel and of course; bonuses. Thankfully evennia makes this fairly complex problem easy to solve. Comm channels are already there and easy to add/delete. So in the end, my coding wasn't necessarily all the difficult but just time consuming to test and debug.

As it stands now, I have an object class that represents a Character Group. This objects has all the functions needed to interact with the group (invite, disband, kick, promote) and is also what stores the Communications channel created for the the members to be able to talk in their own private communication channel that no one else is privy to. As I said, this part is fairly trivial when using Evennia since all of that 'icky' code has already been done for me. I then store this 'group object' on each character model who is a member, and also set a boolean flag showing their sentinel script that they are in fact grouped. This is used to remove the party chat command when the character is not actively grouped.

Now that I have completely functioning grouping, the only thing left to do is: loot arbitration, corpse tagging and making a decision on what types of bonuses grouping gives players. Should it be a flat exp percentage bonus? Should you find more/rarer loot since technically you have more people looking and inspecting their surroundings? Also I have to decide what I am going to do about combat. At the current implementation, combat is and can only be between two people. Grouping is not taken into account, though the attributes for combat ai exist, the logic is not there to support it. So I still have quite a bit of work cut out for me with this specific piece of the game, but it's a very important aspect that needs to be done fairly and correctly.

The next portion that some what goes hand in hand with this is the player friendlist, which exists at the moment but is very, very primitive. I coded it quickly in about an hour or two and got the basic functionality then left it for more important tasks at the time. Seems a good time to circle back around and finish it up and put some polish on it. All in all, I am still aiming for an open alpha testing period at the end of april/very beginning of May!