Skip to content

Ranvier 2.0

Compare
Choose a tag to compare
@shawncplus shawncplus released this 17 Aug 00:57

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 that ranvier-telnet and ranvier-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 the ranvier-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 typing shop 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

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.