Log on:
Powered by Elgg

Raesanos :: Blog :: Archives

April 2008

April 01, 2008

http://www.zalanthas.org/blogs/brideofson/archives/001414.html

Here's a sneak peak at something we're doing for Arm 2:



Currently commands are implemented to perform a specific action or skill in the game. Sometimes other uses or additional complexity that would provide more functionality need to be added to the commands. New commands are created, or command line switches added to access the added complexity. This pollutes the name space with single-use commands, or adds difficult to remember syntax, when the added behavior could be abstracted out to work in multiple other commands using a more natural approach.



Adverbial commands are commands that alter the functionality of existing commands. Most of the existing commands are 'verbs', directing user's characters what to do. Adverbial commands work like adverbial phrases in English, allowing the user to describe how they are doing an action, and providing coded benefits for doing so.


A collection of adverbs would be put together based on multiple criterion: How many commands they make sense with, the amount of complexity reduction they will provide, and the clarity and ease of use they hold for the player base. Each individual command would define what adverbs it supports. Using the adverbs provide coded modifiers or affects to the execution or results of the command for that single execution. Further commands which set the person into a 'mode' of behaving could still be done.



The intention of this is not to remove one-word commands that make sense (such as whisper and sneak), but rather allow a greater flexibility in describing your actions, as well as providing coded benefits to a wider variety of commands without having to come up with a command name that exactly fits the intention of the command.



Example Adverbial Commands



Some examples of adverbial commands and how some commands might respond to them follows.



quietly -- Used in speech related commands, lowering the volume of the speech. Lowering the volume of speech affects how well it could be heard in loud areas, listening skill checks, and if it carries to other rooms. Existing commands such as 'whisper' can be set up as an alias to 'quietly tell'. This could also be used in movement, such as "quietly go east (moving through the shadows)", allowing for a one room sneak. Other possibilities: Opening a door, picking up an item, starting an attack or drawing a weapon.



loudly -- Inverse of quietly, raises the volume of speech related commands. One might need to use this to be heard over others, or in a loud bar. Someone might catch only part of your say, or just an emote that your speaking but it's too loud unless you use this. This could be optionally used as a way to shout rather then the shout command. Other possibilities: Loudly moving to make your presense known, loudly attacking perhaps drawing attention (or other combat effects), or loudly chanting at a critical point in a ritual.



repeatedly -- Keep trying to do something until you succeed (or you determine it's impossible for your skill). It increases the delay proportionately and gives you a highest possible random result on your skill check. This wouldn't be used on skills where failure can result in a bad outcome. Possible uses include: Picking a lock, and searching a room.



in <language> -- Shortcut to allow you to change your language for one speech command. Example: in pig-latin say hello. This might be used in casting, or other communications such as psionics, or writing.



quickly -- Decreases the delay for the skill, but reduces your chance of success. Normally a master in a skill can ignore menial tasks involving the skill. If time is of the essence, they can try and do it quickly, and it increases the difficulty of the task. Possibilities include: drawing a weapon, attacking, shooting, kicking, disarming, getting an object, stealing, casting a spell, climbing, moving instead of run, mounting, or foraging.



slowly -- Increases the delay for the skill, but increases your chance of success. This should only be possible in a non-stressful situation, but the idea is you take your time doing it to reduce the difficulty of the task. Pretty much the inverse of quickly, this can be applied to many of the same commands. Possibilites include: moving, poisoning, casting a spell, stealing, climbing, crafting, picking a lock, stealing an item, foraging or shooting.



ineptly, poorly, adeptly, expertly -- Purposefully degrade your ability in a skill for one performance of it. Removes any chance of skill gain from failure, but can be used as a role play tool. Depending on your actual ability in the skill, you may not be able to use higher levels. You can't use this to increase your skill beyond your current ability. Other possibilities include: Taking a payoff to ineptly guard your boss one time, to downplay one's combat skills, or basically charade. Should give viewers an opposed check to see if they notice the deception.



exclusively -- Specify that you are looking for a specific result, like with forage. Example: exclusively forage for a golden skull.



Syntax



The general syntax for adverbial commands is:



Syntax: <adverb> <command> (pre-how emote) [post-how emote] <body>



Some Adverbial Commands might take arguments themselves (for instance 'in' takes the language to speak in), and would require slightly altered syntaxes.



Output



Each command will decide if it makes sense to show the adverbs used in the output for the command. For instance, 'quietly say' might echo 'You quietly say...' Alternatively, some might not be shown unless some condition is met, such as noticing someone trying to fake poor skill. Others may never show in the output for the command.



Implementation



An 'AdverbialCommand' will be created which will take the name of the adverb to set on the command. Commands that want to intercept an adverb will add a public boolean instance property (getter/setter) for it. When an AdveribialCommand is told to run, it will re-interpret the remaining arguments as a new command. Assuming it gets a new command back, it will use introspection to set the adverb as being used. It will then schedule the new command to run and exit. The new command will have to decide what the result is of the adverb on the command.



If the command does not have a public property for the adverb, the default behavior will be to give an error message 'You may not , try using command-emotes (see help command emotes)'.



So, if a Command wants to handle the 'slowly' adverb, it will add a 'private boolean slowly;' and an appropriate getter and setter for it. The slowly adverbial command will check to see if the command has a boolean setter for the 'slowly' property, and set it to true. When the command is run, it will determine what 'slowly' means for it.



Strict/Permissive Error Handling



There should be a user setting which allows the user to not get told if the command doesn't support a specific adverb, give a warning, but go ahead and do the command anyways.



Multiple Adverbial Commands



Multiple adverbial commands could be combined (for instance, 'in pig-latin quietly say hello'), depending on how this is implemented. If so the system would need to watch for opposing adverbs (quietly vs. loudly, quickly vs. slowly). One solution to this is to have each adverb maintain a list of 'unacceptable' other adverbs that it'll turn off if found.

Posted by Raesanos | 2 comment(s)

April 03, 2008

http://feeds.feedburner.com/~r/mudreading/~3/263582409/easy-supply-

A realistic economy is a goal of many MUDs. Many of the benefits of a realistic economy can be created with very little work.



Here is a simple supply and demand system. Every time a player buys an item, increase its cost. Every time a player sells an item, decrease its cost.



Voila. Supply and demand. The system works well to make high-demand items expensive and extremely common items cheap. There are just a few tweaks that would keep things working.



Tweak the settings for how much the cost is effected by each purchase or sale. You can’t assign the “right” values deterministically. It depends on your playerbase’s size and behavior, and will change over time.



Consider having the prices normalize gradually over time. That way a surge of unusual activity will be offset sooner, and items that are bought but not sold (such as consumables) will not simply increase in price forever.



Consider a minimum and maximum price. EG, do not allow an item’s cost to change to 50% less or more than its original cost. This is a good approximation of other factors not considered in the system and helps catch flukes before they cause a problem.



To expand on the system a little, keep a multiplier for object types and materials, if you have them. Start at 1. Each time a player buys or sells an item, increase or decrease the multiplier (by a small fraction). Have the multiplier effect all objects of that type or material. Now, if silver longswords are in demand, the price of silver broadswords will increase as well.



To expand on the system even more, keep these set of values separate for each city, region, or whatever granularity is appropriate for your game. Then travelling to a region where an item is more rare will yield a better payoff.

Posted by Raesanos | 1 comment(s)

April 25, 2008

http://feeds.feedburner.com/~r/mudreading/~3/277420692/rae-on-armag

I recorded a videocast where I talk about ArmageddonMUD. Sanvean of Armageddon has been doing these for awhile and I decided to give it a shot. In this episode (assuming I’m going to do more) I talk about setting up new staff members for the game and an interesting character I played years ago.



Is there anyone else in the MUD community doing these? I’d love to see videos like this about other games!



It is split up into 3 YouTube videos and is about 22 minutes long:



Part 1/3

Part 2/3

Part 3/3



And there is a discussion of the videocast going on here:



Armageddon community discussion on the videocast

Posted by Raesanos | 3 comment(s)