Skip to content

Generalized implementation of IdleRPG, a game which rewards participants for remaining idle.

License

Notifications You must be signed in to change notification settings

FabricLabs/idlerpg

Repository files navigation

IdleRPG

Build Status Coverage Status Total Contributors

Simple, self-playing game intended for chat servers.

Getting Started

It is recommended to use idlerpg-bot to run IdleRPG as a useful service, which can be accomplished as follows:

  1. Fork idlerpg-bot »
  2. git clone git@github.com:YOUR_USERNAME/idlerpg-bot.git
  3. cd idlerpg-bot
  4. npm install
  5. cp config.json.sample config.json then open in editor and configure
  6. npm start

Running IdleRPG on its own:

  1. Fork idlerpg »
  2. git clone git@github.com:YOUR_USERNAME/idlerpg.git
  3. cd idlerpg
  4. npm install
  5. npm start

Examples

The simplest way to see IdleRPG in action is to join #idlerpg:roleplaygateway.com, which will automatically join you into the official public game session. This channel is powered by idlerpg-bot, a pre-configured bot for Discord, Matrix, and Slack.

Simple Example

In the examples directory, you can find the following sample program:

'use strict';

const IdleRPG = require('idlerpg');
const game = new IdleRPG({ interval: 1000 });
const name = 'Yorick';
const friend = 'Friend';

async function main () {
  game.on('patches', function (patches) {
    game.fabric.applyPatches(patches);
  });

  game.on('message', function (msg) {
    console.log('[MESSAGE]', msg);
  });

  game.on('ready', function () {
    game.fabric.trust(game);
    game.fabric.replay('log.json');
  });

  return game.start();
}

module.exports = main();

This minimal program demonstrates the full IdleRPG loop using a "local" service, including composing a local copy of the in-game state (stored in game.fabric).

idlerpg-bot

idlerpg-bot is a [doorman]- powered chatbot with good examples of how the underlying messaging layer operates, as well as how to integrate IdleRPG into your own applications.

API

IdleRPG uses an event-driven API to send messages between entities tracked by the game state.

For example, registrations use the join event:

game.fabric.emit('join', {
  user: name,
  channel: 'idlerpg'
});

For detailed documentation, see the docs folder. Happy hacking!

Next Steps

IdleRPG is an experiment in swarm computing, as part of an effort by the Verse team to create a serverless web. Game engines are complex programs, but we're starting with our own ("verse") as a demonstration of how a distributed computer & accompanying operating system might replace the need for servers altogether.

If this is an idea you're interested in, come join the Fabric community!