Board games,
carried by radio.

WaveGames is my experiment with turn-based games, phones, and connected radios. Import a game cartridge, connect a radio, and take your next turn.

The phone plays. The radio carries.
Host phone
Bluetooth
Companion radio
LoRa
Companion radio
Bluetooth
Guest phone

MeshCore transport path

How a turn travels

Game rules run on the host phone. Connected radios pass game messages between players.

  1. 01

    Play a turn

    The host phone validates moves, applies game rules, and creates a filtered game view for each player.

  2. 02

    Send over radio

    Connected radios carry game messages between players. They forward messages; they do not run the cartridge code.

  3. 03

    Update each view

    Each phone receives its player view and renders the game. Hidden information stays out of the other players’ views.

A .wavegame cartridge bundles a game’s rules, its manifest, and an HTML/JavaScript interface. Every player installs the same package before joining.

Two radio paths

MeshCore / LoRa

The MeshCore path connects each phone to a stock Companion radio over Bluetooth. LoRa carries game messages between radios. Compatible MeshCore repeaters can forward them when the route and settings allow it.

Companion radios are endpoints. A Companion radio is not itself a general repeater.

WaveGames gateways / ESP-NOW

The original transport uses WaveGames ESP32-S3 gateway firmware. Phones connect over Bluetooth; gateway boards forward game messages over ESP-NOW. Cartridges still run on the phones.

Radio operation remains experimental. Automated checks do not establish range or physical multiplayer acceptance.

Set up, then take a turn.

  1. 01

    Start with the app

    Use a cartridge-capable WaveGames 0.3 build on each phone. This site provides games and examples; it does not currently provide a phone app installer or gateway firmware download.

  2. 02

    Prepare the radio

    For MeshCore, configure stock Companion v1.17.1 radios in the MeshCore app with compatible regional radio settings and the same private WaveGames channel and secret. Disconnect that app before connecting WaveGames.

    Use an appropriate antenna and settings permitted in your region. Connect each phone to its own radio.

  3. 03

    Import the same game

    Download the exact same .wavegame package on every phone. In Library, choose Import cartridge. Some builds label this Game Library / Import game. The radios do not distribute the game files.

  4. 04

    Create or join a lobby

    Return to Game Lobby. The host selects the imported game and approves the players. Join with the same cartridge installed; play starts when the selected seats are confirmed.

    Cartridge matches use a fixed roster. Host loss ends the match; there is no host migration.