Inspiration

We are a group of friends who like playing board games together. Because of the Corona virus this is one of the thing which is currently not possible and makes people more isolated. Some simple games may be playable over a video conference and for other games you can even find an online version also we found one commercial program, but of couse you have to pay for it. But for most of them (especially some of our favorite) it gets hard to play them for various reasons, e.g. you have to play them fast or they are not so famous enough that you can find them online. So we thought how we could play these games, which we already own together.

What it does

We have began to write a java application which creates a shared virtual desk on which everyone can do simple manipulations of objects (moving them around, flipping them, ...) which are defined by the game. The game rules itself are not checked by the program. It's like playing on a real desk, if you want to cheat you can, but there is no point in doing this. Custom games are defined in a simple format, could be created without programming skills and are automatically distributed to friends who connect together with you to a game session. You can set up your own server, when you want to and your provider allows you to forward the ports to your computer. If this does sound super difficult for the end-user, it is not ;) There will be a step by step explanation how to handle this program and how to create custom games.

How we built it

We are building it as a java-application. Every client shows the shared game environment. Connections can be done directly between clients or to a server working as a hub which distributes every change to all connected clients. Servers can run many game instances simultaneously, apart from that there is no real difference between a server and a client.

Challenges we ran into

Apart from normal programming issues, it is surprisingly difficult to describe the parts of a game. E.g. we started cards (with two sides) and dices (with 6 sides) and figures (with one side). We thought that makes totally sense in a 2D game. However, one person asked "But what if we have to lay the figure down as you do in many games? Than it should have to sides. Or phases. Or whatever.", "But if it has two sides, it is like a card?", "But it is a figure, not a card!" Long story short: It is quite challenging to think of all the things you can do with different components of the game.

Accomplishments that we are proud of

Starting from nothing with this project with different people we have already the first running prototype. Of course most of the functionality but its really cool to working together on this project is so productive. Besides, as we told friends about this, many were really enthusiastic and some joined in to help. So now we have a cool group pushing this project forward. It seems like people are really missing playing board games.

What we learned

Basically how to work on a software project, where you plan everything as a team. We already worked on projects which we did on our own and some of us also in a team. But we never built that team on our own, so scheduling the work and distributing the tasks is completely new for us.

What's next for Simple Board Game Simulator

Implement all functionallity which are needed. In the moment the program is still a minimal working example, maybe a proof of concept, already allowing you to connect two or more running instances and moving some objects around, but not more. So we have first get from showing that this is basically possible to an implementation which really let you play games. Talking with different people about the project of couse created an endless list of potential features: 3d rendering, an ingame text, voice or even video communication, just to mention a few. But for the first we have to stick to the features which are really needed. If we can make some grandparents play a board game with their grandchildren without putting the grandparents at risk, that would be great.

Built With

Share this project:
×

Updates