2022-12-21 20:31:32 +00:00
|
|
|
#+LATEX_HEADER: \RequirePackage[left=0.3in,top=0.3in,right=0.3in,bottom=0.3in, a4paper]{geometry}
|
2022-04-07 00:38:36 +00:00
|
|
|
* SilverMUD: The Hackable Terminal-Top Roleplaying Game.
|
2021-12-05 23:33:53 +00:00
|
|
|
SilverMUD is a tool for creating engaging and communal stories, all over the
|
2022-04-07 00:38:36 +00:00
|
|
|
world through the internet. It's designed to give a gamemaster the same power
|
2021-12-05 23:33:53 +00:00
|
|
|
to improvise that they have at the table, through simple programming and
|
|
|
|
easy-to-understand structures.
|
2022-12-21 20:31:32 +00:00
|
|
|
|
|
|
|
* Player's Guide
|
2023-02-09 21:53:23 +00:00
|
|
|
** Running The Client
|
|
|
|
*** How To Connect To A Server:
|
|
|
|
To connect to a server, use the command-line option =-i=, and the IP address of
|
|
|
|
the server. If the server admin is hosting the server on a port other than the
|
|
|
|
default port of 5000, you can use the =-p= option with the number of the port. If
|
|
|
|
the connection is successful, you will be placed in the server's login
|
|
|
|
area. Type =/join <player name>=, where player name is a name of your choosing,
|
|
|
|
and you will be placed in the spawn area, ready to play.
|
|
|
|
|
|
|
|
*** Other Launch Options:
|
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
** The Basic Commands
|
2022-10-16 15:13:33 +00:00
|
|
|
SilverMUD is played through a set of very simple commands. To use a command,
|
|
|
|
type a forward-slash (/) followed immediately by the command name. The command
|
|
|
|
can be upper or lower-case.
|
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
| Command | Arguments | Effect |
|
|
|
|
|---------+------------------------------------------+---------------------------------------------------------|
|
|
|
|
| JOIN | Character Name | Logs you into the server with the given character name. |
|
|
|
|
| MOVE | Path Name/Path Number | Moves you down the given path. |
|
|
|
|
| LOOK | None | Describes the current area. |
|
|
|
|
| STAT | None | Displays your current status and character sheet. |
|
|
|
|
| SPEC | Core Stat Name | Allows you to apply spec points to a given stat. |
|
|
|
|
| TRY | Core Stat Name/Skill Name, Object Number | Attempt to use the given stat or skill on the object. |
|
2023-04-08 22:23:24 +00:00
|
|
|
| TALK | Character Name | Begins a conversation with another player. |
|
2023-04-14 20:34:27 +00:00
|
|
|
| SHOUT | None | Messages the current area, ignoring any conversations. |
|
2022-10-16 15:13:33 +00:00
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
* Gamemaster's Guide
|
|
|
|
** Running the Server:
|
2022-10-16 15:13:33 +00:00
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
* Developer's Guide
|
|
|
|
** Build Prerequisites:
|
2022-10-16 15:13:33 +00:00
|
|
|
SilverMUD has the following dependencies:
|
|
|
|
- GnuTLS
|
|
|
|
- ncurses
|
2022-12-21 20:31:32 +00:00
|
|
|
|
|
|
|
** C Style Guide:
|
|
|
|
These rules attempt to make the program as visually clear as possible, while
|
|
|
|
some rules may be made based on my own personal tastes.
|
|
|
|
|
|
|
|
- () :: These are parentheses.
|
|
|
|
- [] :: These are brackets.
|
|
|
|
- {} :: These are braces.
|
|
|
|
*** Formatting:
|
2023-04-08 22:23:24 +00:00
|
|
|
**** Casing:
|
|
|
|
- Variables :: Variables should be in camelCase, with the exception being
|
|
|
|
variables used to store SCM values, in which case, they should in be
|
|
|
|
snake_case.
|
|
|
|
|
|
|
|
- Types :: User defined types should be in PascalCase.
|
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
**** Control Statements:
|
|
|
|
- A space should be between the keyword and the condition. This is to make
|
|
|
|
control statements visually distinct from function calls.
|
|
|
|
|
|
|
|
- Opening braces should be on the line after the control statement, and closing
|
|
|
|
braces on the line after the last statement, on it's own. This is to make the
|
|
|
|
scope of the control statement easily identifiable.
|
|
|
|
|
|
|
|
- else and else if should always be on a new line, not the same line as an if
|
|
|
|
statement's closing brace. This is to more easily distinguish the seperate
|
|
|
|
blocks.
|
|
|
|
|
|
|
|
- Control statements should never omit braces and do single statements. This is
|
|
|
|
mostly personal preference, but I do think it makes things more clear.
|
|
|
|
|
|
|
|
*** Naming:
|
|
|
|
**** Rule 0: NEVER USE i AND j!
|
|
|
|
Never use the variable names i and j. These are easy to confuse, and often make
|
|
|
|
nested loops awful to read. Name these more descriptively.
|
|
|
|
For example:
|
|
|
|
- If you are using a variable to index an array, name the variable index.
|
|
|
|
- If you are indexing multiple arrays, name it "array name + Index".
|
|
|
|
- If you are using it to count something, call it count, or "name of the
|
|
|
|
thing you are counting + count".
|
2023-02-09 21:53:23 +00:00
|
|
|
|
|
|
|
**** Rule 1: No one letter variable names, unless in a mathematical function.
|
|
|
|
You should never use one letter variable names. They're needlessly obtuse and
|
|
|
|
you will not remember their meaning upon re-reading of the source code. The
|
|
|
|
exception to this is when you are writing a function which replicates a
|
|
|
|
mathematical formula or function with commonly accepted notation. However, you
|
|
|
|
should consider if it would be better to break mathematical convention for
|
|
|
|
clarity inside the program, such as when the variable names are the first letter
|
|
|
|
of a word or the mathematical notation uses many similar looking variables.
|
|
|
|
|
2023-02-10 23:33:36 +00:00
|
|
|
**** Rule 2: Prefer to use full words in variable and function names:
|
|
|
|
You should always prefer to use full words in variable and function names. It
|
|
|
|
makes the source code much easier to read, like a sentence. Ideally, if you want
|
|
|
|
to shorten the name, use synonyms or rephrasing before you resort to removing
|
|
|
|
letters.
|
|
|
|
|
2022-12-21 20:31:32 +00:00
|
|
|
*** Comments:
|