Sunday, October 14, 2012

Tutorials and other Amenities

So, I have finally managed to get other projects done or taken care to the point that I can really get back into the grind of coding up Avaloria.  Sadly taking long breaks like these really hinder the creative flow as I have to re-acquaint myself with the codebase all over again.  One of the first things I did after coming back to this was rig up a config system specific to avaloria.  Evennia has its own, but I just wanted a simple dictionary to store float values/booleans used throughout the codebase for lots of different things like: mob's physical loot spawn rate, dungeon room treasure chest spawn rate, boss mob rare drop rate etc etc.  So now in the modules that need it I have the AVCONFIG global that lets me tap into those values as needed, and since they are all stored in once place, that makes for easy maintenance for me.  Eventually I will add more things like random range values for say the number of mobs generated for a particular zone room, and really whatever else I can come up with.  I'd like to end up with very little hard coded numbers in the end.

Implementing the config was actually a lot easier than I thought it would be, so I decided to work on something else I feel i needed, a proper tutorial for players to traverse through (optional of course) to learn the game, quest, get some early good exp etc.  Eventually once the questing manager can truely handle gear rewards, this would also be a good place to stock the new character with decent low level gear.  An example of some of the quests: Use the public chat channel to communicate with the world, train a new skill, learn a spell etc.  Basically anything that can be questified and teach the commands and ways of the game are being created and added to the various npcs of the tutorial area.  Avaloria is quite the magical place, and you as a character are no normal mortal so traveling there is instant, however eventually to progress through the various rooms, you will need to complete the necessary quests.

While writing these quests, I ended up having to modify the quest objective parser quite a bit to allow for the operations I wanted to work properly.  How do you know and check for someone using a chat channel?  How do you know that have trained a new skill.  For me I went the easy route and basically added a new quest type of 'use_<insert whatever it is you want the person to use>' and also simultaneous properly setting last_cmd on the Characters whenever they ran a command.  Once I did those two things, I just had to write some quick parsing to sanity check the command used and the command looked for and it was off to the races.  So far I have only written two of the handful of quests that will be included in the tutorial, as they did turn out to be a bit more work than I previously thought they would be.

I think this will (hopefully) allow for folks to learn the game while at the same time get rewards (skills, spells, exp, gold, and all that jazz).  Not too long now until I am ready to have some folks play on it.  Quite exciting indeed.