Hacker News new | past | comments | ask | show | jobs | submit login
Vassal – Online Adaptations of Board Games (vassalengine.org)
274 points by evo_9 on Nov 29, 2017 | hide | past | favorite | 73 comments

On the topic of online board games, I've been really interested in the idea of a pure play-by-email (PBE) system where there isn't a frontend or web interface at all. By that, I mean that a full game rendering is emailed to each player, and they take their turns by replying to the email with the commands they wish to execute.

I started one in Go a number of years ago[1] and I feel I managed to prove to myself that a pure email interface is possible and actually really convenient in some cases. I even managed to implement over 20 games[2]. It was only ever used in my closed circle of friends, but we played thousands of games and many found it simple to participate in slow periods at work or school.

If anything, my biggest takeaway was that if you want to really reach a level of expertise in a new technology, you need to find a project that you can pour your heart into. I've probably breached 100k LOC for the project and I've been working on it for over half a decade. I'm currently redoing the project in Rust as an attempt to become highly skilled in that[3].

[1] https://github.com/Miniand/brdg.me

[2] https://github.com/Miniand/brdg.me/tree/master/game

[3] https://github.com/brdgme

The board game Diplomacy had a really thriving play by post community, which morphed into play by email. I'm actually not sure if there is a platform that actually supports play-by-email anymore (the ones I used to use seem defunct).

But there's this (claims to support play by email but I couldn't find actual directions in 2 minutes of reading around): http://www.diplomaticcorp.com/

When I played this ~10 years ago the main interface was just plain email. You'd send and email with the body containing commands like so:

signon gamename password A PAR-BUR A MAR-SPA F BRE-MAO signoff

Then there was a website that subscribed to your game as a observer and would render views of the map

Dunno about other games, but Lichess[0] has a correspondence gameplay mechanism[1]

[0] https://lichess.org/

[1] https://i.imgur.com/nYgMjuB.png

A lot of 18XX games seem to have strong play-by-post communities too, which are interesting from a pure play-by-email perspective because they have already encoded a command vocabulary which could be implemented instead of needing to design from scratch.

This is tangential to the play-by-email thread of discussion, but I want to share that I've had a positive experience at http://playdiplomacy.com

We have an ongoing series of games at work hosted by the wonderfully named service 'backstabbr.com'.

This is not the same thing, but you might be interested in taking a look at the excellent online Terra Mystica implementation (https://terra.snellman.net/) if you haven't seen it already.

It's a web interface, but the underlying representation is text-based, and you can type in the commands directly if you want. This leads to some nice features--for example, you can plan your moves several steps ahead of time, and you get a game log for free.

There creator wrote a blog post about that particular design decision: https://www.snellman.net/blog/archive/2014-12-08-command-lan...

Yeah, in my experience having a pure text interface proves to be a very complex design challenge but it enables so much cool stuff. One interesting side effect is that it makes writing bots quite simple.

You might be interested in http://gamesbyemail.com/

I've played a lot of Mergers on there, and that's actually what inspired me to make my own. It's not pure PBE as it just uses emails for notifications and you make your plays in the web interface.

From days of old, I used to play on gamerz.net - http://www.gamerz.net/pbmserv/ While some of them have graphical views now, in days of old it was all monospace ascii in an email message. The game there that I especially enjoyed was Firetop Mountain - http://www.gamerz.net/fm/Main/

This is really cool, thanks for sharing.

How do you find Rust for this code base compared to Go?

The main reason why I wanted to switch from Go to Rust was I was finding the type system a bit too weak for game implementations. There were even some games I was having trouble implementing at all without resorting to `interface{}` throughout the data structures.

Rust has been a challenge but now that I'm fairly proficient it's very well suited to implementing the game data structures. Parsers are much more pleasant to implement in Rust too; I've written a custom parser combinator for game input and it's much easier to handle input in Rust than it is in Go.

Would you care to write an "Experience Report" for benefit of the Go community and development future?

Pretty, pretty please!

The rationale and idea is described on https://blog.golang.org/toward-go2#TOC_5.3. and https://blog.golang.org/toward-go2#TOC_8. , with an important note to later "publish it" (i.e. just link) on https://golang.org/wiki/ExperienceReports.

Yours seems to be an awesomely perfect case — a real-world situation, with additional case study of how a new language helps you solve the pain points!

I, as well, don't love go and I prefer rust especially for the type system.

I would like to hear the negative side of switching from go to rust.

It's not that I don't like Go, it definitely has its place, but for this particular use case I found it a little painful.

Personally, the things I really missed after moving to Rust are quick compile times and very high quality editor plugins. These are areas which the Rust community are putting a lot of effort into at the moment though so I'm hopeful they'll continue to improve.

The problem with VASSAL and Tabletop Simulator and Tabletopia is that... it's awkward to play a real time board game online.

There's a lot of down time while everyone else takes their turn. You have to set aside one to three hours to play uninterrupted. In real life, you have the benefit of hanging out with these people as you play.

However, I've become a huge fan of http://www.yucata.de/ and http://boardgamearena.com recently and not playing games in real time. Making one or two turns a day means there's no down time, and I can be much more flexible making my move(s) fit into my schedule.

The main thing I've found about playing games not in real time is you are always able to min-max every move. Since I don't necessarily play every game to win (I try to win, but if I don't it's not a big deal) I enjoy the arbitrary time constraint of playing in real time. Makes things move along and gives games more of a lighthearted feel.

Also it's only three games, but I play Food Chain Magnate a lot and you can only play it online here: http://play.boardgamecore.net/

You may try to min max everything, but you might not actually min max it. Not everyone is willing to build a model of the game with all its probabilities, and calculate the optimal solution. Many will just play their gut feeling for the probabilities. Others will build naive models. Others will just guess at a general strategy.

Right, it remains as much a social problem as a technical problem. If you worry your friends (or worse, you) might be prone to min/max more in asynchronous/delayed multiplayer situations, find social ways to encourage avoiding it.

(That's very much something that will be unique to your group dynamics, but little things like asking people to time how much they actively work on turn, or encouraging them to only do their turns during lunch breaks and from their mobile phone, can work for different sorts of people.)

FCM is one game that I prefer to play online. The physical version is a pain to play.

Hooray for FCM :)

What is awkward with things like table top simulator is when they don't have a rules engine, so you don't get the benefit of learning edge cases through the game engine and don't get the bookeeping sped up, so you still have to watch everyone else take their turn to make sure they're not accidentally sneaking resources.

boardgamearena has the advantage of actually having rules engines so you can also relax more while playing knowing the engine is taking care of the rules freeing you up to making tactical mistakes instead of rule mistakes.

Tabletop Simulator has an exposed Lua interpreter that any mod can take advantage of. The games can come with rules or not.

I much prefer the ruleless approach of TTS to be honest. It gives you that tactile sense of actually moving pieces around the board and interpreting the rules yourself that makes a board game feel like a board game. But with undo and instant setup and without the requirement that everyone be in the same place.

Not that it's a great tabletop game, but have you ever played a PC version of Monopoly? It's the most boring way to play an already incredibly boring game.

My only issue with Tabletop is that all the games I want to play with friends (and that at least one of us owns physically) keep getting DMCAed. That's fine in and of itself, but if a company is going to stop people who own their game from "pirating" it, it'd be nice if they'd make it available legitimately as DLC.

My friend used to play games on Tabletop Simulator. It's a good way to play with friends who don't live near you, but beyond that it's definitely a worse experience than playing board games in person. I don't have any experience playing with people that aren't friends, so I can't speak to the cheating aspect of it.

I too play with friends but it's not outright cheating that's an issue, it's usually more innocent than that, just edge cases or forgetting about less common rules, especially in more complex games like Eclipse or through the ages. It's easy to forget a rule that only applies in selective situations but which can have far reaching consequences.

It's nice to relax and have the engine take care of it, and by pushing things you can actually learn odd interactions you wouldn't have discovered through reading the rule-book.

I totally understand where you're coming from. I don't think I've played any games where it's made a large enough difference (in person or online).

I also love the idea that it will resolve things correctly right away instead of having to look at the rulebook every time you run into some crazy edge case or wording confusion.

Games on TTS can absolutely come with the rules built in via the exposed Lua interpreter. Mods can automate as much as they'd like.

I totally agree. Brettspielwelt and Yucata also automate and ensure the gameplay according to the rules.

Use skype/facetime/hangouts to make it more fun. Then you can talk live kind of like in person

Seems like the awkwardness could be mitigated by using teleconferencing software of choice (audio or a/v)—even just a boring old phone teleconference—alongside the virtual tabletop software.

Doesn't get you the full in-persom experience, but enables more interaction alongside gameplay.

> There's a lot of down time while everyone else takes their turn.

Play more simultaneous-play games. Captain Sonar, Space Alert, Galaxy Truckers, and Sidereal Confluence are all really good games with basically no downtime.

Other games that use simultaneous action: 7 Wonders and one of my top 5 games, Race for the Galaxy.

Yes! Both of those are excellent.

Tell that to 4X Multiplayer Games or even Advance Squad Leader (ASL can take an hour a turn in real life)

Down time isn't always bad, especially if you have youtube open while you wait.

After playing a decent chunk of the original Squad Leader, ASL always seemed like "WW2 action for Star Fleet Battles fans".

Define every edge case and interaction and any amount of in-game time can stretch to fill all available real time... (See GDW's Fire in the East :)

I'm playing Tabletop Simulator in VR, it's pretty close to the real life board game experience... and you can resize yourself so you can walk around the pieces on the board

Speaking of online adaptations of board games.. My Massively Multiplayer Adaptation of Codenames was just approved for public consumption by its illustrious creator, Vlaada Chvátil today!

Sign up and help me test out Django Channels in production!

TL;DR: An MMOBG based on Codenames! - Sign up form: http://codewords.io/ - FAQ: http://codewords.io/faq/

I needed to learn a few new technologies (TypeScript, Angular 4, Bootstrap 4, Django Channels.) Building the same chat room app that everyone builds as their first demo using these technologies sounded tedious. I decided to build a Massively Multiplayer Online Board Game instead.

If you'd like to help with a stress test or participate in a game, there's a sign up form up here: http://codewords.io/

I'm going to try to get Vlaada to host a game with me, but, he's a busy guy. If he's unavailable I'll find someone almost as interesting to play with us.

If you'd like to know more, I put up an FAQ over there: http://codewords.io/faq/ (you can skip to the gameplay FAQ by tugging on this: http://codewords.io/faq/#how-work)

Screenshots and a gameplay overview can be found somewhere under here: https://imgur.com/a/3xtZC

Thanks for doing this.

For those who are looking into taking up boardgames, I highly recommend Codenames.

Thank Vlaada and CGE! I can't believe that they gave me permission to play with their toys. This is what it looks like when a company/creator responds with great kindness when confronted with a fan project!

Very cool - a little surprised if it was endorsed that you didn't get the art. I specifically picked my board game project because it was creative commons (plug: https://secrethitler.io).

Vassal has two main limitations: - It requires a download (not web-based). - Most games still require you to manage the board state yourself.

Like someone else pointed out, boardgamearea.com, yucata.de and (my favorite) http://play.boardgamecore.net/ also manage the game state for you.

I've been working on a (very early stages still) rules engine that will hopefully make it easier for more websites like the above to pop up in the future: https://github.com/google/boardgame.io

This is pretty nifty!

Do you have any desire to add AI? I could almost write a generic AI for your current version; the two things that are missing are a way to enumerate the possible moves (the ability to pass extra arguments to a move causes issues there), and a way for the game to know when a turn is supposed to end.

(I'm also at Google; drop the j from my name to get my ldap.)

AI sounds great!

One of the selling points of a project like this would be access to machine readable game logs that people could use to train bots offline.

Having something generic that could play reasonable moves by exploring a possible list of moves (and their outcomes a few levels deep) sounds pretty exciting too. Let's talk :)

Ruleset agnostic boardgame AI is a somewhat active area of research. The term to search for is "General Game Playing".

I was thinking of just doing a generic tree search + optional heuristic thing to start. As a game developer, my experience has been that even really stupid AIs help a lot to understand what my game plays like.

If having something simple in place prompts someone from the AI community to come try something more sophisticated, I'd certainly enjoy the show.

I won’t say I’m from the AI community, but I’ve been wanting to take a stab at the basics and I have a science background. If you’re interested I’d be happy to chat and see if I could contribute.

Feel free to get in on the conversation at https://github.com/google/boardgame.io/issues/7 :)

I've been working my way up to a similar idea - modelling card games better: https://github.com/captn3m0/ideas/blob/master/card-game-mode....

While yours is very react/UI focused, this is still very helpful.

At the heart of it, it is still very much a rules engine, but also comes with the bells and whistles to create a full blown web-based implementation easily.

I love this idea. A quick tutorial on how to use this would make it much more approachable to developers wanting to use it without reading every line of code.

Also, why is it copyrighted by google?

You can find a tutorial here: https://google.github.io/boardgame.io/

I'm a Googler, so released it under Google's open source program (it's not an official product, though).

I'm currently finishing up a MVP for an entirely in-browser turn-based gaming platform.

It has a custom game editor/IDE with Google Blockly [1] inspired visual programming tools for implementing the game logic and the game UI. My design goals with the editor are to enable as many non-programmers as possible to make games (there's a lot that can be done here).

Games that are developed & published on the platform can be played online just like any other browser-based multiplayer game. Rules are entirely enforced by the backend game engine, so games can be played competitively.

The format for valid games is fairly open-ended. It should support games like Settlers of Catan, Risk, poker, Pokemon-style card games, go, chess, etc. To be clear, it isn't a 3d table-top simulation, by any means -- just HTML and CSS for now.

There will be forking and modding of games (sort of like github). I have several ideas for how this could work without diminishing the original game designer's efforts [2]. I also want to foster the formation of communities around individual games and any mods that are made.

I've been working on the platform for over a year now, and it's finally close to being ready, at least as an MVP. I'm hoping one more month...

Anyone interested in being a beta tester once the MVP is looking decent?

[1] https://developers.google.com/blockly/

[2] Currently, I'm thinking that a "fork" will only copy over the code & ruleset for the game, and not any graphical assets. It will exist on the same level as the original game, underneath the authorship of the forker. A "mod" can make use of graphical assets, but will live underneath the umbrella/community of the original game. Definitely open to suggestions on this.

Worth mentioning here for any interested parties is OCTGN [1], or "Online Card and Tabletop Gaming Network".

Interesting history - it started out from a VB6 application (specifically for playing Magic the Gathering) maintained by a single guy, he then handed dev off and the entire application was rewritten as a C# WPF application and was in hot competition with Magic Workstation directly for some time [2], which ultimately IMO made it a much better product. I believe I actually still have the original VB6 source on an old HDD somewhere... If I find it, wondering how to best archive it, or would anyone even care?

Anyway, OCTGN is currently a generic "tabletop game" program that allows for new games to be defined via the documented game format [3] and even supports python scripting.

[1]: https://github.com/octgn/OCTGN [2]: http://www.mtgsalvation.com/forums/magic-fundamentals/other-... [3]: https://github.com/octgn/OCTGN/wiki#create-games-on-octgn

This seems to have a strong "Card Game" bias, with a slightly less strong "LCG/CCG" bias. Are there any game models for it for games that aren't primarily card based?

There appear to be some but you are correct that it has a strong "card game" bias as it was originally meant to play Magic. I'm not aware of any, no.

Anyone aware of one of these board games sites that makes it a priority to be accessible? I'm visually impaired, so would benefit from anything visual also having a text/audio component. Also a lot of these are drag-and-drop, so having an alternative way to move things around would be helpful. Obviously some games wouldn't translate well to a non-visual medium, so that's why I ask.

I'd be pretty keen on this too, my girlfriend lives far away and is completely blind- it'd be really nice to be able to play board games with her online.

I don't know if it has become better in the meantime, I tried it some years ago and found that it's a nice idea but in practice most modules (i.e. games) are rather primitive implementations.

What I'd love is a FOSS alternative to Roll20, which is namely for tabletop RPGs.

Have you tried MapTool? It's not an online service but a client/server Java tool, but if you're not e.g. looking for a new group it's good enough for scripting rules and displaying maps.

I haven't used Roll20 in some time, but you might be interested in MapTool (http://www.rptools.net/toolbox/maptool/). It's FOSS and I've used to for various pen and paper RPGs before. Granted, it's not a web app, but it has a lot to like.

I'm a developer of an online board game implementation. Before starting out, I consulted any library, platform and framework available to minimize implementation effort.

Vassal was also on the list to checkout. Various items made it clear Vassal was no fit (for me at least): 1) No web interface available 2) Lead developer who seemed to worry about inexplicable technical issues 3) non-existing usability 4) board game logic must be shoehorned into a generic framework, where I want to expose a boardgame specific API.

I ultimately decided to write it from scratch.

Given the name I was expecting this to be affiliated with Tom Vasel (founder of The Dice Tower and notable game reviewer) in some way, but it seems to be completely unrelated.

And all around good guy. Have you met him in person? He's shockingly tall. Taller than you would think possible from his videos. I saw him again at PAX Unplugged last week... I'm always surprised by just how impossibly tall he is.

I met him at Gencon this year, but I didn't realize who he was at the time. I only listen to the podcast, so I didn't recognize him. He was sitting on a Rathskellers gaming table and I started asking him about the table. It was only when some people asked for a photo that I realized who he was.

I would assume the name is just a reference to Tom.

Wonderful! When I was a kid before the microcomputer age I was a fan of exotic games like Turkish and Japanese chess. I had to make pieces using bread dough clay. Not fun.

What's the copyright situation with the modules? The screenshots I've browsed seem to have images of the actual board and card art.

The most played game in Vassal right now is the very popular Xwing miniature combat (http://xwvassal.info/).

Sadly the Vassal devs seem to have lost the flame for the project. A big client side rewrite to get off of Java was planned for many years but never executed.

Great software even in its current state though!

Slightly off topic but it's always interesting to run into open source projects that continue to be hosted on Sourceforge

Inertia ? Vassal has always been on Sourceforge.

I don't see much benefit in using Java for board games, especially in a client-side app where server resources are not an issue. Vast majority of board games are turn-based with alternating turns. The bottleneck is player input. A more expressive language like Python would work better in my opinion. Inertia, I guess. Java was all the rage back then.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact