Home

Awesome

<p align="center"> <h1>🍋Sour</h1> </p> <p align="center"> <a href="https://sourga.me" target="_blank"> <img src="gh-assets/header.png" alt="Sour Cover Image"> </a> </p> <p align="center"> <!-- Gitpod --> <a target="_blank" href="https://gitpod.io/#https://github.com/cfoust/sour"> <img src="https://img.shields.io/badge/gitpod-devenv-orange" alt="Sour Gitpod Development Environment" /> </a> <img src="https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white" alt="TypeScript Language" /> <img src="https://img.shields.io/badge/Go-00ADD8?logo=go&logoColor=white" alt="Go Language" /> <img src="https://img.shields.io/badge/Google_Chrome-4285F4?logo=Google-chrome&logoColor=white" alt="Google Chrome" /> <img src="https://img.shields.io/badge/iOS-000000?logo=ios&logoColor=white" alt="iOS" /> <!-- LICENSE --> <a target="_blank" href="https://github.com/cfoust/sour/blob/main/LICENSE"> <img src="https://img.shields.io/github/license/cfoust/sour" alt="Sour License Badge MIT" /> </a> <!-- Discord --> <a target="_blank" href="https://discord.gg/WP3EbYym4M"> <img src="https://img.shields.io/discord/1071091858576523274?label=discord&logo=discord&style=social" /> </a> <!-- Github Action Build--> <a target="_blank" href="https://github.com/cfoust/sour/actions/workflows/ci.yml"> <img src="https://github.com/cfoust/sour/actions/workflows/ci.yml/badge.svg" /> </a> </p> <p align="center"> Sour is a multiplatform modernization of <a target="_blank" href="http://sauerbraten.org/">Cube 2: Sauerbraten</a> delivered as a single Docker image. <a target="_blank" href="https://sourga.me/">Give it a try.</a> </p>

Features

Goals

Running

docker run --rm -it -p 1234:1234 -p 28785:28785/udp ghcr.io/cfoust/sour

You can then access Sour at http://localhost:1234/ or by connecting in the desktop client with /connect localhost.

Deploying

If you wish to deploy Sour more seriously, I provide an example configuration for docker-compose here using letsencrypt-nginx-sidecar.

Architecture

Here is a high level description of the repository's contents:

Contributing

Join us on Discord to chat with us and see how you can help out! Check out the issues tab to get an idea of what needs doing.

The easiest way to hack on Sour is in Gitpod using the button below. Gitpod is a web-based VSCode environment that runs everything necessary for development in a cloud-based container, meaning that everything is set up and working for you right away. You do not even have to use VSCode; Gitpod supports custom dotfiles which allows me to use my full vim-based setup from a browser tab.

Open in Gitpod

If you want to run things locally all you need is Docker, Earthly, and docker-compose. After that, just run ./serve. Then navigate to http://localhost:1234. All of the game's services will recompile and restart when you make changes.

Inspiration

Some years ago I came across BananaBread, which was a basic tech demo that used Emscripten to compile Sauerbraten for the web. The project was limited in scope and done at a time when bandwidth was a lot more precious.

License

Each project that was forked into this repository has its own original license intact, though the glue code and subsequent modifications I have made are licensed according to the MIT license specified in LICENSE.