All Projects â†’ sjbrown â†’ togetherness

sjbrown / togetherness

Licence: AGPL-3.0 license
A virtual and 🕊liberated🕊 tabletop. Make, play, and share your tabletop games with dice, cards, tokens, and more.

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to togetherness

Dungeoneer
A game master helper tool, includes a virtual tabletop, initiative tracker, combat tracker and homebrew management for Dungeons and Dragons 5e.
Stars: ✭ 106 (+231.25%)
Mutual labels:  vtt, virtual-tabletop
forbidden-lands-foundry-vtt
This is a Forbidden Lands game System for the Foundry Virtual Table Top. Made by @Perfectro, @patrys and @aMediocreDad. Maintained by @aMediocreDad, @narukaioh
Stars: ✭ 28 (-12.5%)
Mutual labels:  vtt, virtual-tabletop
Drawphone
Draw what you see, and guess what your friends drew
Stars: ✭ 171 (+434.38%)
Mutual labels:  multiplayer
Nakama Godot
Godot client for Nakama server written in GDScript.
Stars: ✭ 240 (+650%)
Mutual labels:  multiplayer
Pydark
PyDark is a 2D and Online Multiplayer video game framework written on-top of Python and PyGame.
Stars: ✭ 201 (+528.13%)
Mutual labels:  multiplayer
Piano Rs
A multiplayer piano using UDP sockets that can be played using computer keyboard, in the terminal
Stars: ✭ 180 (+462.5%)
Mutual labels:  multiplayer
Bzflag
3D multi-player tank battle game
Stars: ✭ 207 (+546.88%)
Mutual labels:  multiplayer
Unity Fastpacedmultiplayer
Features a Networking Framework to be used on top of Unity Networking, in order to implement an Authoritative Server with Lag Compensation, Client-Side Prediction/Server Reconciliation and Entity Interpolation
Stars: ✭ 162 (+406.25%)
Mutual labels:  multiplayer
Colyseus Unity3d
âš” Colyseus Multiplayer SDK for Unity
Stars: ✭ 251 (+684.38%)
Mutual labels:  multiplayer
Supermariowar
A fan-made multiplayer Super Mario Bros. style deathmatch game
Stars: ✭ 200 (+525%)
Mutual labels:  multiplayer
Nakama Unity
Unity client for Nakama server.
Stars: ✭ 222 (+593.75%)
Mutual labels:  multiplayer
Segs
💪 SEGS - Super Entity Game Server
Stars: ✭ 190 (+493.75%)
Mutual labels:  multiplayer
Scribble.rs
A skribbl.io alternative - Play at https://scribblers-official.herokuapp.com/
Stars: ✭ 188 (+487.5%)
Mutual labels:  multiplayer
Logisticspipes
The RS485 take on LogisticsPipes -- ESTḌ 2012
Stars: ✭ 215 (+571.88%)
Mutual labels:  multiplayer
Epicsurvivalgameseries
Third-person Survival Game for Unreal Engine 4 (Sample Project)
Stars: ✭ 2,389 (+7365.63%)
Mutual labels:  multiplayer
Colyseus.js
âš” Colyseus Multiplayer SDK for JavaScript/TypeScript
Stars: ✭ 245 (+665.63%)
Mutual labels:  multiplayer
Rhubarb
A WebSocket library optimized for multiplayer JS games, works on WebWorkers with binary data.
Stars: ✭ 167 (+421.88%)
Mutual labels:  multiplayer
Arenagame
A Unity First Person Shooter game made with Forge networking as an example project.
Stars: ✭ 190 (+493.75%)
Mutual labels:  multiplayer
Warcraft Arena Unity
World of Warcraft client-server combat system implementation in Unity with Photon Bolt.
Stars: ✭ 206 (+543.75%)
Mutual labels:  multiplayer
Tom and Jerry
A multiuser AR game based on ARKit 2 and MultipeerConnectivity
Stars: ✭ 24 (-25%)
Mutual labels:  multiplayer

logo

sjbrown

Togetherness Table

| Live Demo | Quick Start | Goals |

Tabletop RPGs are no longer just played in physical spaces. More and more, this kind of game is being played online, and players are discovering online dice rollers, communal game maps, virtual tabletops, and digital character keepers. But too often these tools are walled gardens whose owners see players as products, not human beings.

screenshot

Togetherness Table is a web-based virtual tabletop whose chief aim is the empowerment of players as free human beings participating voluntarily in a community. There are no "owners", just equal participants enjoying a gamut of activities including "creation", "play" and "hosting".

Goals

Togetherness Table aims to be Local-First Software

  • No spinners: your work at your fingertips
  • Your work is not trapped on one device
  • The network is optional
  • Seamless collaboration with your colleagues
  • Survival post-demise
  • Security and privacy by default
  • You retain ultimate ownership and control

Furthermore, Togetherness Table should:

  • Be document-centric. The state should all live in the document. Let creators treat their game state like documents they can save to disk, edit in Inkscape, and use their own SVG-editing workflows in the way they feel most comfortable and productive.
  • Use HTML5. Use SVG.
    • Don't reinvent wheels that already exist
    • Use the opportunity to deeply learn the standards
    • Leverage other contributors' knowledge of the standards
  • Not require special server-side software
    • No software to install, no security concerns, no dependency hell. A contributor should have to do nothing more than run a single command then open up their web browser.
    • Easy to fork. If someone wants to add Togetherness Table as a widget on a website they host, that should be possible.

Live Demo

I'm going to try to keep a demo up and running at https://www.1kfa.com/table

Quick Start

git clone <this repo>
cd togetherness/src
python3 -m http.server

# Or,if you prefer,
# python2 -m SimpleHTTPServer 8000
# Or if you prefer Node.js to Python:
# npm install npx -g; npx http-server -a localhost -p 8000

Then open your browser to localhost:8000

That's it!

Making your own "objects" for the table

Any interactive objects (dice, decks of cards, etc) are simply SVG files.

Click on + Other and then + SVG File and you can paste in an SVG file. Ensure the "Allow JavaScript" option is selected.

Interactivity Interface

To make your object interactive, you need to include some JavaScript.

Your <script> element needs to have an attribute data-namespace with a name that's unique to your object.

Inside the script, there must be one JavaScript object whose name matches that data-namespace value. This object uses a specially-named key, "menu", to integrate with the main web UI:

<svg x="0" y="0" width="100" height="100">
  <!-- This is a red rectangle.
       It has a context menu.
       A context menu option will allow the user to change it to green.
  -->
  <rect x="25" y="25" width="50" height="50" style="fill:#ff0000" />
  <script
    type="text/javascript"
    data-namespace="myThing"
  ><![CDATA[

myThing = {

  menu: {
    'Change Color': {
      eventName: 'changeMyColor',
      applicable: (elem) => { return true },
      uiLabel: (elem) => { return 'Change Color To Green' },
      handler: function(evt) {
        // Note - "handler" must be written as a traditional function,
        // not an arrow-function, so that "this" is bound correctly
        console.log('Changing color!')
        this.querySelector('rect').style['fill'] = '#00ff00'
      },
    },
  },

}

]]></script>
</svg>

That's it!

Developers: Permanently adding objects

If you've forked this repo and want to make your interactive objects permanent, you can do the following:

First, add a + My Thing button to the index.html file.

<button class="btn" onclick="add_object('svg/v1/my_thing.svg')">
 + My Thing
</button>

Then just add the file svg/v1/my_thing.svg.

History

After joining The Gauntlet and playing around with the awesome roller, I got the itch to create my own "dice-rolling" application.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].