Simul Games is a free online party game server focused on varied, online, realtime, gameplay and ease of use across all devices.
Simul.Games' server is written in Go and using goroutines for a concurrent scalable program. It makes use of WebSockets for reliable, quick, communication between clients. In development is a hybrid Rest API / Websocket approach.
The Web Client is styled with Tailwind CSS and written in TypeScript using the Svelte Framework. Both front and back end can be easily proxied by Caddy or Nginx webservers (when deployed using Sveltekit's static site adapter.)
By default, will open ports 3000 & 8080 on localhost; you can change this in config.yaml. Svelte Webkit, which uses Vite, supports hot-reloading in development, so it will rarely need to be relaunched, but Go will need to be recompiled for changes to be shown.
Requires Go 1.18+ & Node 16.9+
If you are using Windows (this step is not required on Linux or Mac), you will additionally need to instruct npm to use a terminal emulator that can run *NIX shell scripts. For example, with Git Bash,
npm config set script-shell 'C:\Program Files\Git\bin\bash.exe'
Start Webclient
cd webclient && npm run dev
Run Webclient Tests
cd webclient && npm test
Start Server
cd server && go run main.go
Run Server Tests
cd server && go test ./... -coverpkg=./... -timeout 100ms -race
Simul.Games is licensed under the GNU Affero General Public License 3.
- All the software mentioned above
- Gorilla WebSockets for the server's websockets; Websocket-ts for the webclient's websockets
- Viper for application config management
- Testify, & Httpexpect for server testing, and Vitest for testing the webclient.
- Cloudflare Pages, for deploying Simul.Games
- and others, this list is non-exhaustive