SilverMUD/notes/SilverMUD-Design.org

3.5 KiB

SilverMUD Design Document

What Is The Main Goal Of SilverMUD?

The main goal of SilverMUD is to create a text-based role playing game system that is setting-agnostic, where a game master can create new content through interacting with a Scheme REPL. SilverMUD will tend to favor simple abstractions for game concepts, in order to accomplish being more setting-agnostic and easy to play over the internet.

Concepts:

Worlds

Worlds are a collection of regions and dungeons, tied to a setting.

Regions

Regions are a collection of areas bundled together. This lets them be unloaded and loaded as a group, as well as providing a mechanism for dividing your areas based on locales or otherwise.

Areas

Areas are actual locations a player can be in. They have a description, name, and can hold players and objects.

Exits

Exits are connections to other areas or rooms, which could be in another region or dungeon. They may have a "challenge" to pass, in order to use them, or a requirement to access them in the first place.

Dungeons

Dungeons are similar to a region, but differ in one crucial way; they are instanced, allowing for a single player or party (or potentially multiple) to enter a copy of the dungeon, allowing for setups similar to a MUD or MMO, or easily reusable encounters.

Rooms

Rooms are the dungeon equivalent to areas. They are separated purely to strengthen the distinction between dungeons and regions; this may change to add additional functionality

Exits

Exits are connections to other areas or rooms, which could be in another region or dungeon. They may have a "challenge" to pass, in order to use them, or a requirement to access them in the first place. The exit leading to or from a dungeon may create and destroy the instance of the dungeon.

Objects

Objects are a representation of items that can be in areas, rooms, or player's inventories. They have a name, description, and uses. Looking at an object displays the name, description, and uses.

Uses

Uses are Scheme functions pushed onto the event queue when a player activates them through the use command.

Uses may additionally have a usage requirement, and a visibility requirement.

A usage requirement is a Scheme function that is passed a reference to the player attempting to activate the use. It returns #t or #f, corresponding to the activation being successful or a failure.

A visibility requirement is a Scheme function that is passed a reference to the player viewing the object. It returns #t or #f, corresponding to the use being displayed to the player or hidden.

Properties

Objects may have additional properties that dictate how they can be interacted with. Currently planned properties are:

player-pick-up
Defines whether a object can be moved to a player's inventory from an area or room.
player-put-down
Defines whether a object can be moved from a player's inventory to an area or room.

Events

Players

Abilities

Settings

Settings are a combination of definitions of items, custom rules, and other miscellaneous things like common description strings and enemy types. It's somewhat analogous to a sourcebook or rulebook for a traditional table-top RPG, allowing the game to take on different forms and settings depending on which ones are being used. These are loaded as Scheme files in a world.