Play

or host a server for multiplayer

Info

What can this do?

This is a project that facilitates all kinds of tabletop, wall, or board based activities. If it's easier, think of it as an open source, self hostable version of the likes of Roll20 or a 2D tabletop simulator that works in a browser.
It includes support for:

Notes and text

Images and tokens

Cards

Dice

Bags

Checkboxes and bars

Video and Audio

Iframes

Hidden zones

All can be created, coloured (where appropriate), arbitrarily dragged around, sized, rotated, nested, flipped (in the case of cards and tokens), placed in containers/bags, and deleted; all on a realtime shared workspace.

Offline/Online?

This can be used both offline by a single user and online in a realtime multi user session making it perfect for playing board games digitally, doing collaborative mind mapping, or running Table top RPGs with digital maps and minis.

The server is designed to be as stateless as possible. It only handles room seperation, negotiates usernames, and acts as a relay for messages between clients. This means that any saves you make of a session can be loaded up on a totally different server or offline and still work as expected, as long any assets are still accessable to your computer.

Assets

Assets (beyond the basics provided) can come from any url on the internet and certain classes of object (cards and tokens) support in-line processing of those assets enabling the easy use of things like formatted card sheets to make a deck of cards, token boards for a bag of tokens, or dice skins.

Board Machine does not provide art assets for copyrighted board games. It only provides the tools to make use of any art you have available to you.

Board Machine is compatable, for the most part, with art assets used in mods for other digital board game programs like Vassal or TableTop Simulator, the exceptions being some dice skins and any 3d models, of course. If you are looking to build digital board games for you and your friends to enjoy and don't feel like scanning in all your game components, it's a good place to start.

Media

[No feature videos yet]

Source

git clone https://[serverAddress]/Projects/git/BoardMachine.git
(If the above link is broken contact the developer)

Host a server

The readme in the source code details how to host the nodeJS server for multiuser sessions. In short, the process is:

download source (e.g. git clone sourceURL)
install node (npm most likely)
node BoardMachine/server/server.js

Code base

Being web based, this project is written in JS and nodeJS. There is no JQuery (because JQuery is slow and unnecessary).

You will find much of the code base has different levels of comprehensive comments. This reflects the degree to which I have become a more compitent programmer over the project development time. You will likewise find the use of different work flows for approaching similar looking tasks, indicative of my delve into new ways of working from time to time, e.g using classes vs objects or full if statements vs inline if statements.

These will likely be rectified as I go back and read over the code prompting that "who the hell wrote this!?" moment. It's all learning though so I can live with a little inconsistency. I hope you can too.

Development

You can contribute to Board Machine in a few ways:

For most of these of these, the communication is done on the Board Machine Matrix channel so feel free to join to chat about development.

Channel name: #BoardMachineDev:matrix.org

FAQ

What are the goals for the project?

When I started this project a couple of years ago, the initial goals were for it to be a self hostable, online or offline, digital cork board for story boarding or arranging information for mind mapping and planning. It's served that purpose well and as the features have continued to flow and change so too have the goals.

My newest goals are to:

  • complete the groups system to support claiming and hiding or obfuscating elements between groups. (hidden areas)
  • fully impliment touch support.
  • improve tools for permission control of the use of certain elements e.g. claimed objects only movable by the claimants, etc.
  • Add a content browser to more easily allow access to local or server based assets, as permitted by the server host.

Security?

Since the beginning of the project there has always been a focus on making sure any features added don't negatively affect browser security, partly to facilitate learning on my part, and partly as good practice. I do not claim it to be perfect in this regard however so, as will all software, do your due diligence to make sure you understand the software you are running.

The main things that have come up involve when html must be used directly (i.e. element.innerHTML = "potentially bad html") it is made sure that any html being sent across the network is first sanitised (inline scripts are removed) before being used. All representations of the table or it's elements sent over the network are packaged then parsed to strip them of any information not pertaining to the session running correctly.

That being said, all the coding precautions in the world can't protect you from someone sufficiently determined to cheat at any games you might play i.e. looking at information they are not meant to have using the developer tools. This project currently assumes that it's users are cooperative in their use of Board Machine to facilitate having fun or being productive, even if a game is competative. Don't be a dick is a good rule of thumb and if you find yourself beset by people who just can't help themselves but make you miserable by cheating, respectfully, find new people to work/play with. There are plenty out there :D

Contact

Feel free to join the Board Machine Matrix channel to chat about development or for help using Board Machine.
Channel name: #BoardMachineDev:matrix.org