Paper of the Week: Players Who Suit MUDs

The academic paper “Hearts, Clubs, Diamonds, Spades: Players Who Suit MUDs” was written by Richard Bartle. Published in 1996, it is a seminal work in the field of game studies and player psychology. In this paper, Bartle categorizes players of Multi-User Dungeons (MUDs) into four distinct types based on their preferred activities and motivations within the game.

Bartle's Taxonomy of Player Types
Recreation of the classic Bartle’s player types diagram from the original 1996 paper.

The Four Player Types

  1. Achievers: Players who focus on attaining in-game goals, collecting points, levels, equipment, and other measurable achievements. They want to win, or at least demonstrate mastery.
  2. Explorers: Players who enjoy discovering new areas, learning about the game mechanics, and finding out the secrets within the game world. The joy is in the discovery itself, not in what they find.
  3. Socialisers: Players who are primarily interested in interacting with other players, forming relationships, and engaging in conversations. The game is a backdrop for social interaction.
  4. Killers: Players who thrive on competition with other players, seeking to assert their dominance and affect other players’ gameplay. They need other players to exist, but not necessarily to cooperate.

The Player Dynamics

What makes Bartle’s taxonomy genuinely interesting is not just the classification itself, but the dynamics between player types. Bartle observed that increasing certain player types in a MUD directly affects the population of others. For instance, too many Killers will drive away Socialisers, which in turn reduces the supply of victims and eventually drives away the Killers themselves. A healthy MUD needs a balance of all four types.

This insight remains relevant for any online multiplayer game, even those far removed from text-based MUDs. Anyone who has seen a game community collapse under the weight of toxic PvP or watched an MMO server die after the social players left has witnessed Bartle’s dynamics in action.

Why It Matters for MUD Development

At Maldorne, we have been building multiplayer games with the Hexagon mudlib for years. Whether we are designing combat systems, crafting economies, or planning social spaces, Bartle’s framework helps us ask the right questions: which player types does this feature serve? Are we accidentally pushing a type away?

For example, the weather and climate systems in our games affect exploration and survival, giving Explorers and Achievers something to engage with. The towns, guilds, and public spaces are designed with Socialisers in mind. And combat provides the competitive edge that Killers seek.

Understanding these dynamics is also crucial when playtesting — observing which player type your testers gravitate towards tells you a lot about what your game is actually offering versus what you intended.

If you are interested in more MUD-related resources, we maintain a curated list in our awesome-muds repository.

Read the Original

Read it online, it is really worth it. At roughly 20 pages, it is an accessible and well-written read even if you have never played a MUD. The concepts apply to any multiplayer game.

Awesome-Muds

For some time now, we have been maintaining the GitHub repository awesome-muds, which contains a large list of resources, articles, technologies, etc., related to the world of MUDs. It includes some history, links to available clients for different operating systems… a little bit of everything.

Take a look, and if you think there is something that could or should be changed, improved, or added, feel free to open an issue to discuss it.

Link to the repository.

awesome-mud

New packages included with Hexagon

The Hexagon mudlib/framework has been updated with new packages, which include the following:

  • crypt: code and command to encrypt and decrypt files, based on Dave Ljung’s (Jubal) code, ported to be used with DGD and Hexagon.
  • json: code to encode and decode LPC values as json strings. Modified from an LPC snippet created for MudOS, changed to be executed with DGD.
  • uuid: easy way to create uuid strings (RFC4122), also addapted from an LPC snippet.

Take a look inside the /mudlib/packages directory in the repository to see the code, documentation and license for each package.

#

The Hexagon mudlib has reached at last its version 2.0, codenamed Castle Black. It’s a major release that includes a lot of changes and improvements, and it’s the first one that we can say is a beta version, after a lot of years in alpha. It’s a renaming of the v1.24.04 version. The next planned version will be v2.1 Daggerfall.

Release link.

#

For developers: The Docker container images we are using for the MUDs we host are not anymore in Docker Hub, now they are in the Github Container Registry, just in case anybody want to tests things in their own computers.

DGD image, MudOS Images. You can always find them in their respective repositories, in the right column, under the packages section.

Hexagon

Demo game now fully functional

At last, the demo-fantasy game included with the Hexagon mudlib is fully functional. You can start the mudlib, choose a game, create a character, and test it. It has a full map with three towns, each of them with pub and shop, multiple npcs, several items, etc.

                                       An : Naduk      
3-4-R Bn : Erken
| TD : Tower
2 G : Guild
| R : Raiseroom
TD-1-G 41 : Labyrinth
| *S : Shop
5 38 *P : Pub
/ | / 1 : Start
7-6 35-36-37 A6 AS
\ |/ |\ /|\ |
8-9-10-11-12-13-A1-A2-A3-A4-A7
/ \ |/ | \|/ |
21 39 40-27-41 A5 AP
/ / | | |
22 14-15 16-26-41
| / | / |
24 17 18 28-41
| | / /
23 19-20-30-29
| | |
25 31-32 34
| \ |
B1 33
|\
B2 B3
/| \|
B6-B4-B5
| | |
BS B7 BP
|
B10-B8-B9

It is based in a very old newbie area made for the Reinos de Leyenda mud, circa maybe 1997. The code is new (as we use a different driver, from MudOS to DGD, and a new mudlib, from frmudlib to hexagon, and now it’s multilanguage, both in english and spanish), but the map and the names have been kept, as an homage.

You can take a look to the game, it is included with the mudlib as an example of how to create your own game. Take a look at it in /mudlib/games/demo-fantasy in the Hexagon repository.

Hexagon

Issue Tracker

Using the new packages functionality, I’ve added a new package to the Hexagon mudlib: the issue tracker.

issue-tracker

The package adds its own command issues, where you can list, close, remove or open issues.

We can create new issues automatically, i.e. when a shop cannot load an item:

// create new issue, same message as npcs equipment
if (package("issues"))
package("issues")->add_issue("Cannot clone " + file, this_object());
Hexagon

Spring/summer 2023 updates

Changes and updates to the mudlib in its v1.21.09 Beregost version. This post will be updated during the spring and summer:

Player updates

  • Weapons reviewed, and lots of weapons added to the Fantasy Demo game.
  • hold/unhold working with weapons.
  • Armours reviewed, and lots of armours added to the Fantasy Demo game.
  • wear/unwear working with clothes and armours.
  • Shields reviewed, and shields added to the Fantasy Demo game.
  • Weapon combat fully functional.
  • Basic materials for items (weapons, clothes, armours, etc).
  • Passed out when equipping reviewed (doesn’t happen recently logged in). equip reviewed.
  • Multiple commands reviewed:
    • user/games
    • user/characters
    • player/help
    • player/look
    • player/prompt
    • player/commands
    • player/glance
    • player/kill
    • player/prompt
    • player/retire
    • player/configuration
    • player/score
    • player/sheet
    • player/verbose
    • player/inform
    • player/bury
    • player/cost
    • player/stop (for both stop fights and stop following)
    • player/encumbrance
    • player/bravery
    • player/condition
    • player/money
    • player/combats
    • player/past
    • player/inventory
    • player/whomai
    • player/away
    • player/consider
    • player/travel
    • player/equipment
    • player/pov
    • player/time
    • player/grope
    • player/map
  • Health messages (health points, death, etc) fully translated.
  • Handle actions (take, drop, give) reviewed and fully translated en/es.
  • Hearthstone item reviewed.

Developer updates

  • Multiple commands reviewed (see issue #15)
    • coder/goto
    • coder/stats
    • coder/cat
    • coder/clone
    • coder/exits
    • coder/exec
    • coder/grep
    • coder/head
    • coder/more
    • coder/restore
    • coder/rm
    • coder/sar
    • coder/tail
    • coder/uptime
    • coder/armours
    • coder/discard
    • coder/actions
    • coder/backup
    • coder/cp
    • coder/cplines
    • coder/du
    • coder/ioulist
    • coder/load
    • coder/malloc
    • coder/mkdir
    • coder/mv
    • coder/rmdir
    • coder/ls
    • coder/nls
    • coder/visible
    • coder/invisible
    • coder/multi
    • coder/resistances
  • Command handler translation and meta commands (use command rehash to reload all of them).
  • Multilanguage commands: now commands are not executed depending on their file names, but a list of alias specified in code.
  • Some tests done with binary connections.
  • Start working with packages: pieces of code included in the /packages directory, each of them with its own code, license, authors, etc.
    • Each package can add their own commands automatically.
  • Issue tracker working (new package).
  • Start working with a test suite (new package).