Skip to content
ontolaPublic

About

An open local multiplayer runtime: one party, many games.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

GameNight

Get to the next game.

Open-source couch multiplayer. Less setup between games.

GameNight lets you play a whole evening of couch games from your controller. Pick a game. Play a round. Try something else.

The next game loads in the background while you play. Back/Select returns to the lobby; press it again to resume. Your controllers stay assigned to the same players across integrated games.

Download for Windows · Download for Mac · Browse games · Developer docs

Play

Install GameNight for Windows or macOS and connect your controllers. Join the lobby, walk to a game and press Y to play. The lobby shows download and loading progress. Downloaded games are cached for later sessions.

Scan the lobby QR code to open the character editor on your phone. Draw a face and change the playlist. Games can use your profile too; the catalog lists which parts of the integration have been checked.

Prefer an app? The GameNight app is a Flutter version of the same phone studio for Android and iOS: join the room, draw your face and manage the playlist.

This is an early preview. Game support varies, and controller, audio and window behaviour still need testing across machines. See the Windows preview guide or Mac distribution notes for installation details.

The catalog's Play button remembers your chosen game for first launch. See catalog onboarding for the browser handoff and its limits.

Your player comes with you

Draw a face on your phone, choose your colours and pick up your player with a controller. Integrated games can reuse your name, skin colour and artwork. Remember a player on a desktop to have them waiting at the door next time.

The face API places a circular head by centre and radius:

local Face = require("shared.face")
Face.drawFace(player, x, y, radius)

Hats keep their space around the head. See player faces for the shared coordinates, mirroring and Rust API. The catalog checks face rendering separately from colours and includes both in its integration score. Unknown or older-build evidence is not treated as verification of the current download.

Open protocol. Open source.

The local runtime works without an account or cloud service. You can run it, change it and add your own games.

GameNight runs each game as a separate process. The host tells it when to prepare, start, pause, resume and release a session. The game owns its rules, score screen and subsequent rounds. Players choose when to switch games.

Use the Rust SDK, Godot SDK, C/C++ SDK, or implement the JSON protocol directly. The JavaScript example is a small reference.

Start with the integration guide. Automated checks cover the game lifecycle; test controller input, sound and window focus on each platform you ship. Profile colours and drawn faces are separate capabilities.

Build from source

Install stable Rust and Python 3. Windows builds need Visual Studio C++ Build Tools. See development setup for Linux dependencies.

python scripts/run-local.py --studio --shelf /path/to/games.json

The shelf lists your games and their launch commands. GameNight adds the lobby. Without a shelf, the script uses a terminal SDK demo for testing the protocol.

Game sources live outside this repository. The GameNight lobbies stay here: the Game Room, which every desktop package ships, and the Godot SDK's sample lobby. The SDKs, catalog and integration checks also belong here.

The shared LÖVE package contains seven games: Neon Trails, Blast Party, Neon Siege, Ricochet Club, Volley Trouble, Stack Together and Bubble Buddies.

SpaceRacer is a standalone Godot 3D hover racer with three procedural worlds, flight, weapons and 1–4 player split-screen. Its source, tests and release workflow live in joepio/spaceracer. The catalog entry pins a Windows ZIP and its SHA-256 checksum from GitHub Releases. The GameNight protocol ID is spaceracer, including for local debug builds.

python scripts/fetch-game-sources.py
python scripts/package-love-party.py --output dist/party

game-sources.json pins the game-source revisions used by CI and release builds. The fetch command creates sibling gamenight-games and gamenight-mineclonia checkouts and refuses to overwrite local changes. For game development, set GAMENIGHT_GAMES_DIR to your working checkout. Commit and push game changes before updating the pin.

The host prepares games in the background. Each game handles its own rounds and score screen. Use Back/Select to return to the lobby when you want to switch. On Windows, the current controller backend supports up to four Xbox/XInput controllers. Other controllers need an XInput-compatible mode or adapter.

For quick changes to the lobby, run python scripts/run-local.py --godot /path/to/godot: it starts the Game Room from source. Set GAMENIGHT_DEV_WEB_DIR to the web directory to serve web files directly while you work.

Contribute

Add a game, improve an integration or report a bug we can reproduce. CONTRIBUTING.md covers setup and checks.

License

GameNight's original code is MIT-licensed. See LICENSE. The lobby and vendored dependencies retain their upstream notices. THIRD_PARTY.md lists source revisions and asset credits.

Preview installers are published automatically after CI and packaging checks pass. See automatic releases for the checks and limitations.

About

An open local multiplayer runtime: one party, many games.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages