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.
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 (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.
git clone https://[serverAddress]/Projects/git/BoardMachine.git
(If the above link is broken contact the developer)
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
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.
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.orgWhen 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:
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
If you happen to value this tool and the work that went into it, please consider donating to help support those who continue to develop it. Thank you.
I personally value decentralised and direct ways of interacting. They allow us to become less dependent on centralised systems that are something of a liability with respect to our security and freedom. In line with this, I offer decentralised options for donations, but if you'd prefer to donate using something not listed drop me an email or PM me in Matrix and I'll see what I can do to help.
Thanks again