Monday, October 10, 2011

Time off, and more coding.

So I took some time off from development of Avaloria a month and a half or so ago. Basically I just kind of became overwhelmed at the amount of work just I was going to have to do and needed a breather. This turned out to be a good idea fortunately, now that I am back actively looking at/developing the code, my ideas are more clear and my path is far easier to see.

First thing I wanted to do when I came back was scrap my old combat system (round based, spammy diku style combat where the player doesn't have much of a role other than to pull some levers.). I wanted to create something that *could* be left to spam you into oblivion, or if you decide to play a bit more smart, allow you to customize your battle experience.

I settled on a queue style system that allows you to, for right now, attack and defend. Currently defending negates all damage that would have been done to you. Obviously the new system as you can see is in it's infancy, however with only these two options it is still quite a bit more fun then just reading the streaming text. This also allows for me to possibly in the future allow for combo chains from spells or skills, or both. So while it is quite simple at the moment, the plans for this system extend well beyond merely being able to attack and defend!

Next items up on the block for work: Skills, Spells and all the management that goes along with that.

Enough with the blogging, back to coding!

Monday, July 4, 2011

Everyone loves quests.


You deal 6 damage to Charred Skeleton.
You have defeated your foe! DEBUG: inside combat manager
You have been awarded 18 experience.
You have completed a quest objective!
You have completed the quest: Tutorial Slaughter!
You have gained a level of experience! You are now level 2
You have been awarded 50 gold.


The past week has had me designing the questing system for Avaloria. This has been an interesting problem to solve, the problem being how do I let everything know I am on a quest, and how do I make it care? The easy part, funny enough was designing the manager object and the quest object that the manager manages. Every Character will start out with a non-droppable item in their inventory called the 'Adventurer's Journal'. This in game object represent the backend quest manager. All that is pretty straight forward, just save the quest manager object to the character model and the character has full access to what is there via the @questlog command.

The tricky part is making the in game mobiles/items 'quest-aware', if you will. I am solving this in two ways really. One way is by utilizing evennia's alias system, the other is by setting quest flags on the character model. One approach is for kill, pickup x object etc type of quests, the other (quest flags on the character model) are for more interactive things. Say you have to talk to someone, this is how they would know you are in fact on said quest and needing to complete/advance it. I am hoping this will also allow for more dynamic questing then your typical assortment of quest types. The alias system is going to be utilized for kill quests and item pick up quests. If an item is a quest item it will have an alias for said quest item. The Character model will have its at_object_receive() hook modified to check against the current quests and do appropriate actions. When a mob is killed, logic is triggered to check through mob aliases and quest objectives to figure out if we just killed something that is important to us.

At the moment I am not requiring any sort of physical quest turn in. No running all the way back to the npc who gave the quest to you (unless the lore behind the quest demands it). For simply quests though the rewards will be instant, right after the game figures out you actually completed the quest.

Currently the system is only able to handle kill quests, specifically kill any creature at all quests. However, the system is easily extensible and soon all types of quests will be littering the landscape of Avaloria for all to enjoy.

Friday, June 17, 2011

Another week, more code.

So this past week I have been doing some serious overhauling of the codebase I have been working on for the past two months. There were some things left hanging in the wind so to speak as I rushed through coding the preliminary basics of the in game systems such as combat, structure building and character definement/advancement. My main focus this week was the very rudimentary combat system. Before my additions, combat was just round based white damage fests. Every round initative is rolled, and whoever wins does their damage rolls first. To hit someone your attack roll must be larger or equal to the opponents armor rating.

As you can see it all has a very D&D feel to it at the core.

However, as I added skills I came to a very quick conclusion that being able to spam combat skills as fast as your fingers can type isn't really all that fair, or fun for that matter. Enter the "Combat balance system" as I have been calling it. This system is a way to curb skill spamming without absolutely outright taking the skill away from the player if they use it too often.

In the code every character has an attribute called balance. This is a numeric representation of the characters balance on their two feet and also their stamina for fighting in battle. This value is set to 3 by default for every new character. Every time a combat skill (kick, strike etc) is used, a portion of that balance is removed. Once you are at 1, you take a 10% decrease to combat stats (str, dex, attack rating), at 0 the decrease is 30%, and finally at -1 it is 50%. Once you become 'unbalanced', your balance will be periodically restored, returning your stats to the value they originally were at.

This system has a lot of room for changing the way a character is able to fight. Perhaps there will be a 'rogue' character class, that gets a skill called 'endurance' or something similar that merely gives them one extra point of balance. That's the equivalent to one more full strength attack before you become tired and off balance. Or it could go the other way as well, perhaps there will be spells that make you weak and tired, which will ultimately affect the balance attribute?

This step ahead with the combat engine while seemingly small will have a large impact on how people decide to play their encounters.

Monday, June 13, 2011

In the thick of it.

This is the first ever blog post for the text-based MUD in development currently, named Avaloria. This particular MUD is completely written in python from the ground up, utilizing the evennia server (www.evennia.com). The game itself aims to be a bit different from most of MUD's, in that the core component of the game is building up a base, or lair if you will and then waging combat and other nasty things on the other players on the opposing faction. The base that you build will also directly affect your character in numerous ways. A quick example would be the building of a 'Gold Mine' which allows you to accrue gold every game day in an automated way. Or another would be building a Training Grounds or Arena style building and receiving a bonus to your attack rating or defense rating etc. Or perhaps you find a way to create a device that summons portals to random dungeons created for your level?

All structures in the game will be able to be completely controlled by the player characters. You will be able to level them up by putting money into them, or de-level them by withdrawing money when you are low on cash, or destroy them if you no longer want them. All of these features are currently in the game and working as they should.

Another feature that is not implemented yet, but will be soon is Minons and Henchmen. These things go hand in hand with the structure building. Minions and Henchman will be able to be assigned to a specific structure, which will bring about additional bonuses. Also, there is an idea floating around in my head for a system to allow you to 'queue' up your minions to do certain actions while you are gone, to benefit you. Perhaps you want them to run through dungeons collecting loot, killing monsters etc. This particular feature is very much only in the idea stage.

So there you have it, a quick look at two of the biggest/most different features/ideas for Avaloria.