Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Bringing back the glory days of tabletop gaming

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 app
Octocat-spinner-32 bugs
Octocat-spinner-32 config
Octocat-spinner-32 lib
Octocat-spinner-32 log
Octocat-spinner-32 meta
Octocat-spinner-32 public
Octocat-spinner-32 spec
Octocat-spinner-32 systems
Octocat-spinner-32 .gitignore
Octocat-spinner-32 README.mkdn
Octocat-spinner-32 Rakefile.rb
README.mkdn

rdie

rdie is self-hosted gaming webware. You install and configure it - and then you play games. rdie can be used for nearly any 'PnP' or table-top role-playing game, such as Dungeons & Dragons and other D20 games, or RIFTS.

Philosophy & goals

rdie is intended to be a way to bring such old favorites from gaming history into the modern age. Games like Dungeons & Dragons were much more fun than the currently popular, and more modern, computer and console games. However, such games simply could not survive the modern world - who has the time any more to drive to somebody's house, and spend a saturday locked in a basement to get their fix of fun? No, we all prefer to take thirty minutes or an hour out of a boring work day, or after said day, and plunge into the world of a computer or console game. Even though such games are extremely limited in flexibility (after all, unlike in 'real' games, you cannot do anything in computer games that wasn't previously considered and written in by the game programmers - what game have you seen where you can decide to eat a troll-leg sandwich to celebrate your victory?), they satisfy our need for quick, easily-accessible fun. Also, the multiplayer aspects of these games don't require you to find local people with which to play; although this is possible with so-called 'LAN parties', you can simply search the database of currently online people for one with whom to play. It connects people across continents, which one could not in the past do.

With rdie, we hope to solve this. You can install rdie on a server you own, on your web-accessible home computer, or on a shared hosting environment - and then you can invite people you meet online to join a game. Once installed, you will need to configure rdie for a game; there exist packages for such popular games as Dungeons & Dragons and RIFTS... but you can write your own gaming system, or extend an existing one with your own scripts. Once your system is configured, you can invite your friends to 'campaigns' on your rdie install. One person, the Game Master (or 'GM') will control the game, and the players will play through 'scripts' that utilize and embody game rules. For instance, there might be an Attack script that would do whatever calculations and die roles are necessary in your gaming system, and request the changes in health and whatnot from the GM. Or perhaps a Pick Lock script to do the same for a lock picking skill or ability in your game. Unlike traditional computer games, you can do anything you feel like doing in these games, just as was possible back in the days of D&D and the like.

To achieve this programmatically, everything will be a script. rdie, and it's scripts, will be written in the popular Ruby programming language. Both concepts within the gaming system, and items/monsters/places/people/spells within the setting will be scripts. One might write a script for a house rule weapon as simply as this:

class Lightsaber < DnD::Weapon
  DAMAGE = [1, :d6]

  def damage
    Rdie::roll DAMAGE
  end
end

Then the system's 'Attack' script might check which weapon a character has equipped, and then call that weapon's 'Damage' method. This is not a true example you could implement now, it would likely be quite a bit more complicated - but the basic concept remains the same.

To summarize:

  • anyone can install and run an rdie system
  • anyone can run as many games (and as many campaigns in the games, and as many characters in the campaigns, and so on) as they please
  • a player can do anything they can dream up, unlike in modern electronic games
  • players can connect with others from around the world to play the games
  • players can play whenever they and the other players want to
  • players and DMs can control the entire gaming system through scripts, absolutely nothing is hardcoded into rdie

We hope rdie will be the best thing to happen in gaming since Gary Gygax (rest in peace, friend), to whom it is dedicated.

Getting

The authoritative source for this project is available at http://github.com/elliottcable/rdie. You can clone your own copy with the following command:

git clone git://github.com/elliottcable/rdie.git

If you want to make changes to the codebase, you need to fork your own github repository for said changes. Send a pullrequest to elliottcable when you've got something ready for the master that you think should be integrated into the root source.

Bugs or feature requests can be submitted by forking a repository as previously described, and then using ditz to add an issue.

Requirements

To run fora, you need the following gems:

  • merb-core
  • datamapper (and associated do_postgres, do_mysql, etc)
  • merb_datamapper (from merb-plugins)
  • haml
  • merb-haml (from merb-plugins)

To develop and contribute to fora, you also need:

  • merb_rspec (from merb-plugins)
  • rspec
  • rake
  • rcov
  • ditz

merb edge

As it currently stands, we are running on edge merb. When merb 1.0 is released, we will solidify rdie source on top of that version, and stick to major versions. This should happen before rdie is ready for true public consumption anyway.

To easily install the current edge merbs, first install the merb-dev rakefile with sake as follows:

sudo gem install sake
mkdir -p ~/.ruby; cd ~/.ruby
sake -i http://github.com/ivey/merb-dev/tree/master/merb-dev.rake?raw=true
sake merb:clone
cd ~/.ruby/merb
sudo sake merb:gems:wipe
sudo sake merb:install merb:install:plugins
Something went wrong with that request. Please try again.