Zomis / Games

Many kinds of games, playable in both multiplayer or local play. Replays, spectator mode, and AIs.
https://games.zomis.net
MIT License
17 stars 5 forks source link

Zomis' Games

Join us on Discord!

One of the goals with this project is to easily create implementations of several turn-based multiplayer games, both logic and GUI.

This project is a flexible server meant for games. The main idea is to re-use a lot of things between games, so that you don't have to implement these things for every game:

To accomplish this, I realized that a game consists of three different parts:

These three things: Model, Actions, View, are specified in a DSL (Domain Specific Language). The DSL only works as a wrapper around your game implementation, so no matter how complex or simple your game is, it's possible to build it in this DSL.

For this project I decided to use Kotlin in order to be able to re-use code between the server and the client.

If you just want to play...

Play Zomis' Games

Miss a game?

Existing features include:

Building and running locally

Running the server locally

To run the server:

./gradlew :games-server:run

OR

./gradlew :games-server:assemble
java -jar games-server/build/libs/games-server-1.0-SNAPSHOT-all.jar

Running the client locally:

cd games-vue-client
npm install && npm run serve

Adding a new game

One of the main goals of this project is that it should be easy to implement a new game in it.

To implement a new game you'll need to add:

Lessons learned from previous projects

See Lessons learned documentation

Some decisions made

See Decisions made documentation

Documentation and test-cases at the same time

I wrote my own tool to generate documentation for how the client and server communicates. As I am sometimes not motivated to write test-cases and even less motivated to write documentation, I figured that I might as well generate the documentation from the test-cases. I have integrated a check in my build pipeline to make sure that the documentation is not outdated.

Project goals, and differences from other projects

Project Goals

Differences from Tabletop Simulator, Board Game Arena and other projects

TODO-list / Roadmap / Future features