Initial release of Pinwheel

After about six months of work, my Pinwheel MUD engine (a variant of Ranvier) is finally in a usable, distributable state with the groundwork needed to add any variety of features. Up until now, I was rewriting all of the source files and making changes to the entities to support full persistence and a web server. I’ve also made numerous changes to the underlying architecture of the engine and reduced the discrepancies between player and non-player characters. As of now, it’s possible for someone to clone the repository, npm install, and with a single command launch a conjoined MUD-web server that’s ready for content and gameplay.

I’ve been writing about designing MUDs and our niche community since the beginning of the project, and my fellow MUD Coders Guildmates have been amazing to chat with and bounce around ideas. Come say hi on Slack!

If you’re unfamiliar, Pinwheel is a new MUD engine built entirely in ES6 (JavaScript). It doesn’t require a database and can be online for players within moments of downloading. The engine makes decisions about world persistence and core features so you can focus on building your world and community.

Features

The version 0.5.0 release of Pinwheel has:

  • Full game state persistence across sessions (areas, NPCs, players, and items)
  • Diku-esque commands
  • Customization of players and NPCs with species, archetypes, and traits
  • Usage of human-readable YAML for game data in bundles
  • Entity-based scripting with few differences between NPCs and players
  • Turn-based combat with abilities, spells, and disciplines
  • Usage-based improvement of skills with branching skill trees
  • Communication channels and player parties
  • Compatibility with the Grapevine MUD Chat Network
  • Player accounts
  • Telnet and WebSocket support
  • Data storage in JSON files, no database required
  • Web server bound to state (for a website and/or API)
Example Game (Snakelines)

A dedicated development server for Pinwheel can be found at https://mud.andrewzigler.com, called Snakelines. This game is the most up-to-date version of Pinwheel that’s available and has many experimental features not yet commited to the repository. For now, the best way to access it is by connecting your favorite telnet client to mud.andrewzigler.com, port 4000.

This server is an easy way to try out the engine without downloading it, and the environment is intended as a sandbox. During the development of Pinwheel, Snakelines will serve as a catalyst for engine’s opinions. Even though it’s being used to showcase the features of the engine, Snakelines is also a game being developed in earnest. The development of Snakelines is in its infancy and drives many of the decisions behind this project. Snakelines is based on worldbuilding materials that have been crafted for nearly a decade and applied in various mediums.

Roadmap

Pinwheel still has many features to be added in the future. Some of the upcoming tasks include:

  • Refactor Ranvier into Pinwheel
  • Reduce the differences between player characters and NPCs
  • Convert class system into aspects, allowing fine-tuned customization of players and NPCs alike with stackable components (e.g., species, archetypes, and traits)
  • Rewrite foundation for new combat system
  • Add configurable time, seasons, and weather
  • Implement hot reloading of bundles and core
  • Enable online creation (OLC) of bundle content
  • Create customizable player organizations
  • Redesign quests into dynamic events
  • Add crafting, resources, and a basic economy
  • Expand emoting complexity with syntax for referencing the world
  • Build an API with Express for the engine and game state, allowing extensibility beyond the original platform (e.g., apps, widgets, and third-party clients)
  • Expand the web server to allow for gameplay, building, and administration in the browser
  • Convert to NPM package
Want to get involved?

I’d love to have more contributors for the project, and there are many ways to get involved regardless of your JavaScript proficiency. Please use the Bug Report or Feature Request issue templates on GitHub to discuss any bugs or potential contributions to Pinwheel. Feedback and discussions are encouraged!

Additionally, I’ll be creating tutorials and resources on this blog in the near future to help new users learn how to use Pinwheel, so stay tuned!