💾 Archived View for gemini.thegonz.net › sggs › README.gmi captured on 2022-03-01 at 15:05:14. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2021-11-30)

➡️ Next capture (2024-06-20)

-=-=-=-=-=-=-

Simple Gemini Game Server (sggs)

A system for playing turn-based multiplayer games.

Client requirements

sggs makes use of a couple of features of the gemini protocol which aren't supported by all clients.

If you have problems, try a different client and/or see if you can implement the necessary features in your existing client.

Test streaming in your client: you should see the numbers 1-5 appear one at a time.

How to play

Hopefully everything is self-explanatory. Just follow the links and poke around.

Adding new games

I would be very happy to accept submissions of new games to be played on the system. This is meant to be easy. Games are implemented as commands which accept some arguments, write output to stdout, use appropriate exit codes, and store state in the current directory. There's no library to worry about, so you can easily use your favourite language. See the source code links from the help pages of the existing games for examples.

Detailed instructions on how your game command should behave

Fairly minimal example game

If you've written a game you'd like me to include, please first test it thoroughly (you don't need a running instance of sggs for that, just run it from the command line in a test state directory), then send the source along with any build instructions to <mbays@sdf.org>, licensed under GPLv3. Please make the code as readable as possible -- I will only accept it if I am convinced that it will not open a security hole.

Hosting your own instance

The full source for the server is available below, released under the GPLv3. Getting it working may take some fiddling, but hopefully it's possible. Note that although I decided against using the AGPL to make it a legal requirement, it would still be polite to release the source for any modifications you make for your instance.

source tarball

git bundle (use 'git clone sggs.bundle sggs' to clone from it)