Years ago, I was an active member of the MUSH/MUX community. To put it simply, I was part of several online text-based games that put more of a focus on the roleplay aspect than the hitting things aspect.
However, talk came back around to the hitting things aspect from time to time. Specifically, a set of mechanics built into a game that allowed two players to enter combat with each other with some impartial referee deciding on the outcome, rather than the players having to discuss how events were to turn out.
To do this, you needed a combat system.
Combat systems are fairly complicated things compared to most systems built into a MU*: barring well-known bulletin board and weather systems, which most people just download and use rather than coding themselves. Most people don’t even bother releasing their code if they made one.
I recently gave this some thought (i.e., inspiration struck in the shower), and I’ve come up with a list of requirements that you should consider if you want to develop a combat system for one of these games. Some of these requirements would not be simple to implement, but that is the nature of the beast. Also note that this is nowhere near a complete list.
The requirements are as follows:
- Players shall not be forced into combat.
- Players shall be presented with combat requests.
- Players shall accept, deny, or ignore the request.
- Players shall accept or deny requests with user commands.
- Players shall ignore requests by waiting for a timeout period or leaving the room where the request is issued.
- Combat requests shall only be made amongst players in the same room.
- Players shall flag themselves as being amenable to combat; e.g., with an attribute such as COMBAT_OK.
- This flag shall be set using user commands, not directly by the player.
- This flag shall be restricted from direct modification by the player.
- Players shall be defeated in combat by varied methods. For example, a player can have their health, stamina, and magic damaged. Each value (or a combination of several conditions), when depleted, leads to a different type of defeat.
- Players shall have the ability to inflict status ailments.
- Players shall have the ability to choose a character class.
- Players shall have traits and abilities appropriate to their character class.
- Players shall have the ability to equip arms appropriate to their chosen class. (“Arms,” in this case, includes such things as magic and weaponry, if appropriate to the theme of the game.)
- Players shall have the ability to grow in level over time.
This list of requirements raises a few questions. One of the primary questions is “What does it mean to grow in level?” Mostly, since in these types of games, you are likely not going to have wandering monsters that you can take out for phat expees and lootzzzz, as they say. One way of implementing such a requirement is to allow level to be based on logins and character age. For example, each login earns a static amount of experience based on the number of logins and the number of months (years, etc.) the character has existed.
Additionally, what does it mean to choose a class? What are the associated abilities? Do they have cooldown timers? Do you want your characters to have statistics such as strength, wisdom, and charisma, and do you want those statistics to figure into damage? What does it mean to damage something?
…As you can see, it becomes a rat’s nest very quickly. But, a small list of requirements to help you get started better than flailing around wondering what you should do at all.