Vassal – Online Adaptations of Board Games
vassalengine.org
vassalengine.org
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
How do you find Rust for this code base compared to Go?
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.
I would like to hear the negative side of switching from go to rust.
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.
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!
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...
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
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.
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.
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 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.
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.
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/
(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.)
Play more simultaneous-play games. Captain Sonar, Space Alert, Galaxy Truckers, and Sidereal Confluence are all really good games with basically no downtime.
Down time isn't always bad, especially if you have youtube open while you wait.
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 :)
Doesn't get you the full in-persom experience, but enables more interaction alongside gameplay.
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
For those who are looking into taking up boardgames, I highly recommend Codenames.
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
Also, why is it copyrighted by google?
I'm a Googler, so released it under Google's open source program (it's not an official product, though).
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.)
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 :)
If having something simple in place prompts someone from the AI community to come try something more sophisticated, I'd certainly enjoy the show.
While yours is very react/UI focused, this is still very helpful.
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.
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
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.
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!
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.