Ranvier 2.0
Big Changes (Core)
Complete rewrite of the network layer
The network layer of Ranvier has been scrapped and rebuilt: the Ranvier game engine is no longer specifically a MUD
engine. Out of the box it still defaults to being a Diku-like MUD but the engine can now also be used to make any
kind of multiplayer RPG since the network layer is now controlled by the bundles as well.
Their are two new example bundles provided:
ranvier-telnet
(enabled by default) which will act exactly as Ranvier 1.0 does: a server allowing telnet connections.ranvier-websocket
(off by default) which will enable websocket connections, to be used with the websocket client
also created for Ranvier 2.0: Neuro (details below)
Note it is entirely possible to have both telnet and websocket enabled at the same time; the system was designed with
having multiple transport types enabled at once (See Extending/Server in the docs.) With the network layer rewrite it's
now possible to use Ranvier as a generalized RPG game engine instead of only for a MUD which I find very exciting.
Attributes
Nearly of the opinionated code surrounding attributes in the core was removed. I originally had it there to act as an
example but in reality it seems to have just confused people. Instead the base attributes for players are now defined
in the bundles: in the example case inside of the ranvier-input-events
bundle's finish-player
script.
This gives a lot more flexibility to let you create the game you want without having to modify the core.
Channels
Channels now support having a required role to use the channel. Coinciding with that addition there is a new
ChannelAudience
to use for your channel: RoleAudience
that will restrict the receipients to players with a given
role or above, e.g., admin only channels.
Lockable Doors/Items
Rooms can now have lockable doors and contains can be closed/locked. See the Room documentation on the main website for
more detail.
Documentation
There are now generated jsdoc docs available at: ranviermud.com/jsdoc/. Personally I
find grepping the code easier but to each their own.
Neuro
Neuro is a websocket client meant to act as a base for you to develop a custom web or desktop client for your MUD. As
with Ranvier it comes pre-built with some common examples you might want in a client. It is built with Electron and
Polymer both of which I consider the simplest, fastest way to build out a web or desktop application. Though it is
in electron you can use it as a web client simply by pointing your web server to the repo and render the index.html
.
Here is a look at what Ranvier + Neuro looks like:
https://gfycat.com/SociablePlasticGander
Features out of the box
- Player HUD for health/mana/etc.
- Active effect list
- Quest list
- Persistent options for font size/select last command
- Target health frames with support for multiple targets
- Command history
- System menu bar for hiding/showing quests and effects
- Draggable windows (Just add
Neuro.DraggableBehavior
to any element) - Auto-linking urls
Big Changes (Bundles)
- There is a new scriptable event:
server-events
This is the bundle type thatranvier-telnet
andranvier-websocket
are built on. These events let you hook into the startup and shutdown of the game server executable itself to do
whatever you like: start a network server, start a web server, do data stuffs, whatever you want. - Included Example Bundle Updates
ranvier-combat
got a complete overhaul. It now allows for NPCs to fight without a player being involved.ranvier-npc-behaviors
: This is a new example bundle providing well... example NPC behaviors.ranvier-wander
: Behavior for letting an NPC wander around the game optionally restricting it to certain rooms or
an area.ranvier-aggro
: Make an NPC aggressive to other players or other NPCs. Limit the NPC aggro list to specific NPCs
and you now have NPC faction combat.ranvier-sentient
: conversational AI enabled by API.AI. Want to have an RP-based shopkeeper:
use theranvier-sentient
behavior and your players can speak to the NPC naturally: "What's for sale?"/"What've
you got?"/etc. to see their item list instead of typingshop list
. This was really fun to implement. The bundle
comes with a sample API.AI configuration that you can import into the service.
ranvier-quests
: The formerly opinionated rendering of quest progress in the core has been moved into a bundle so
you can customize how quest progress is displayed to the player without having to modify the core.ranvier-commands
: There are a number of new commands- Rooms and containers can now have lockable doors so
open/close/lock/unlock
were added. - New
bug
command to report issues to admins
- Rooms and containers can now have lockable doors so
There are many other bugfixes not listed here and I want to thank all the contributors who submitted issues or went above
and beyond and event fixed bugs. I am so thankful for the other developers contributing to this project in any way they
can: submitting bugs, suggesting changes, adding features, or just explaining the game they want to make, all of it
is welcome.