/ranviermud

A node.js based MUD game engine

Primary LanguageJavaScriptMIT LicenseMIT

ranvier

Node.js-based MUD engine

Ranvier is a MUD game engine whose goal is to be a simple but powerful way to build whatever MUD you want with special care given to extensibility. The core code strives to be completely unopinionated toward any specific style of game while using the bundle system to build the game you want without having to dig through the engine's code.

NOTE: Use the staging branch for new projects. Pull requests/issues must be submitted against staging as well.

Special Features

  • Robust bundle system: Nearly every aspect of the game can be modified without changing the core and allows for easy packaging and sharing of commands/areas/items/npcs/channels/behaviors
  • Unopinionated network layer: easily swap out telnet for any network layer you like. No need to gut the whole codebase just to support a different transport type, just drop in a file.
  • Optional coordinate based room system allowing for the flexibilty of a standard MUD world with the easy mappability of a strict 3D world.
  • Scripting for all entities in the game for any event along with behaviors to create shared, composable scripts
  • Pfile saving in JSON, easy to parse for external usage
  • Rooms, items, and NPCs are easily described in YAML. No weird ~ delimited formats or byte-specific parsing that requires a GUI editor to build (though we do have a GUI editor in the works!)
  • Skill system with passive/active skills
  • Effects e.g., buffs/debuffs
  • Quest system allowing for starting/progress/completion from any event in the game
  • Communication channels with custom audiences
  • Player accounts

Documentation

Ranvier prides itself on having thorough documentation which is available on our website: ranviermud.com (You can also view them locally; see the Documentation section of our Contributing guide.)

Slack

We have a Slack channel you can use to ask questions, suggest features, or just keep up to date with the project: https://ranviermud.slack.com

Get an invite

Example Bundles

Ranvier comes with a number of example bundles which combine to make a basic Diku-style MUD with the following features:

  • Telnet and websocket connections
  • Classes
  • Leveling
  • Simple Diku-style combat system
  • Grouping/following
  • Rooms with closeable/lockable doors, and items that can be closed/locked
  • Loot tables allowing for meta pools for things like world or area drops in addition to NPC specific loot
  • Currency system allowing NPCs to be configured to drop different amounts of multiple currencies instead of just gold
  • A fast travel wayshrine system
  • Vendors with the ability to list items of multiple currencies
  • Crafting/resource gathering
  • Player minimap option
  • Emotes
  • Example NPC behaviors
    • Create NPCs aggressive to players or other NPCs (in general or specific NPC types)
    • Wandering NPCs (optionally restricted to certain paths or areas)
    • Conversational NPCs controlled via an integration with Dialogflow

You can build your game using these bundles or disable them and build yours completely fresh while still taking advantage of all of the core code.

Requirements

Quick Start

git clone git://github.com/shawncplus/ranviermud
cd ranviermud
npm install
npm run bundle-install
./ranvier
telnet localhost 4000

The default admin user/pass is admin/ranviermud

Demo

Point your favorite client or telnet to mud.ranviermud.com port 4000. This demo server is wiped and updated from the staging branch every hour.

Related Projects

Neuro

github.com/shawncplus/neuro

Neuro is a starter kit to build a custom client for Ranvier when using the websockets bundle.

Ranvier with websockets and the Neuro client

Soma

github.com/shawncplus/soma

Soma is an experimental GUI builder for Ranvier.

Editing an area with Soma