Atalaia

Pre-alpha · phase 2 software done, phase 3 started · not field-ready yet

The open force-on-force platform

Atalaia is an open platform for the electronic props of airsoft, paintball and milsim: the boxes teams capture, the bombs they arm and defuse. Build a domination box from a €20 microcontroller (a tiny, cheap computer board), turn an old Android phone into a hacking terminal, run a 20-box weekend milsim on a LoRa mesh (long-range, low-power radio that the boxes relay to one another across the field), and write your own game modes as small scripts. Every game runs on the field itself: no cloud or internet needed, and no manufacturer can lock you in.

Atalaia (ah-tah-LYE-ah) is Portuguese for watchtower: a lookout on a hill that watched for trouble and passed the warning along. Why that name?

Illustration: at dusk, a stone watchtower on a hilltop carries a radio box whose signals reach glowing orange GAME PROP boxes spread across a forested valley, while a group of players walks past them. Painted text reads "Open-source project ATALAIA".

How a game works

Playing needs no technical knowledge. This is how a game will run once the boxes are built (phases 1 and 2); the simulator already plays the same modes on a computer today.

  1. Set up

    The organisers place the boxes around the field and pick a game mode, such as Domination, on a box's keypad or from a phone, in under a minute.

  2. Capture

    To take a box, a team holds its colour's button for a few seconds. The box lights up in that colour and scores for the team until the other side takes it back.

  3. Relay

    Each box reports by radio to the field controller, a small computer at the base; boxes far away are relayed by the ones in between. A box that loses contact keeps playing and catches up later.

  4. Score

    The controller adds it all up. The organisers follow the game live on their phones, and the field can show the score on a big screen or on a stream.

Why Atalaia

Electronic props add a lot to a game, but commercial systems keep the rules locked inside closed firmware. New modes wait on the vendor, there is no public API, and you cannot add your own hardware. Atalaia does it differently.

  • Local-first

    Every game runs on the field itself, fully offline, from a single house to a multi-kilometre forest. The internet is optional.

  • Any hardware

    Cheap ESP32 boards, credit-card-sized Raspberry Pi computers, simple Arduino-class boards and new or repurposed Android phones all play in the same game.

  • Modes are scripts

    Game modes are short Lua scripts, small text files of rules, with a settings file. Change or share one without reflashing (reinstalling) the boxes' built-in software.

  • Open protocol and API

    Props talk over Skirmesh-RF, a documented radio protocol, so anyone can build a device that joins in. The field controller offers MQTT, REST and WebSocket APIs for scoreboards, stream overlays and other tools.

  • Built for fields

    Player roles, squads, custom scenarios, and a chrono registry that keeps each replica's readings for spot checks are part of the design.

  • Copyleft

    Fields that charge entry and makers who sell boxes are welcome. Anyone who ships or hosts a changed version shares the changes back.

How it fits together

In plain words: the props on the field talk by radio to the field controller, a small computer at the base that runs the game and keeps the score. Phones connect to it over Wi-Fi, and scoreboards, stream overlays and map apps such as ATAK through its API. An optional site server on the internet keeps accounts and history. The controller, its API and the organisers' console are built and tested on a computer, not yet on the field; the site server comes in a later phase.

An optional site server connects over the internet to the field controller. GM and player apps reach the controller over Wi-Fi, scoreboards and other tools over MQTT and REST, and props over the Skirmesh-RF LoRa mesh. Site server (optional)accounts · history · player app internet GM and player appsWi-Fi Field controllerRaspberry Pi or Android Scoreboards, ATAKMQTT, REST, webhooks Skirmesh-RF · LoRa mesh Field BoxESP32 SatelliteESP32 Android propwith an ESP32 pod Thin nodeArduino-class
  1. Site server (optional): accounts, history and the player app, over the internet.
  2. Field controller on a Raspberry Pi or Android: GM and player apps join over Wi-Fi; scoreboards and ATAK use MQTT, REST and webhooks.
  3. Props on the Skirmesh-RF LoRa mesh: ESP32 Field Boxes and satellites, Android props with an ESP32 pod, and Arduino-class thin nodes.

Under the hood, every device that runs game modes uses the same shared core, written in C11, and the same Lua modes; only a thin layer for each kind of hardware differs. A mode written once plays the same on a box, a phone or a Raspberry Pi.

Isometric illustration: a small stone tower with a radio box on top stands in the middle of a square base, ringed by eight orange and yellow GAME PROP cases with antennas, all linked by a glowing circle.
The field controller is the watchtower: from the middle of the field it keeps every prop in sight.

How the radio works

The props talk over LoRa, a long-range, low-power radio, in Atalaia's own protocol, Skirmesh-RF. Two diagrams show what LoRa can and cannot do on a field, and how one protocol runs on very different devices. None of it has been on a real field yet.

How the radio works, in two diagrams →

Game modes

Modes react to intent ("a team is claiming this prop"), not to hardware, so the same script runs on a Field Box, a keypad box or an Android phone. Seven modes, one modifier and the Medic Kit are written and tested in software today; none has run on a real field yet.

Domination

A team holds the prop's input for a few seconds to claim it, and scores every tick while it keeps it. The other team can take it over at any time.

Team buttons · one box or many

Bomb / Rush

Attackers arm the bomb, then defend it; defenders must defuse it before the fuse runs out. Arm and defuse by holding a button, or give each team its own keypad code.

Team buttons or keypad · fuse and hold times are settings

Kill Confirmed

Players carry signed NFC tags. A team scans the tags it collected at a station: an enemy's tag confirms the kill, a teammate's denies it. Forged tags are refused.

NFC reader · player tags

See all 7 modes →

What it looks like

Eight captures from the real Field Box firmware (ESP32, LVGL 9.2, 320 × 240 TFT) running in the Wokwi emulator. The box UI is in English. Not yet tested on physical hardware.

Field Box screen: "GAME MASTER" header, "Enter the admin PIN" prompt, four empty circles for digits, "# enter * delete" hint.
GM enters the admin PIN to unlock setup.
Field Box screen: "CHOOSE A GAME" header listing 1 "Bomb" (highlighted in yellow), 2 "Domination", 3 "Hold-All Domination", 4 "Last Stand" and 5 "Codes", with the hint "1-9 choose # next * back".
Pick a game mode from the on-box menu.
Field Box screen: "START THE GAME?" header on an orange bar, "Bomb" mode name, "Timer: 10 min", "# start * back" hint.
Confirm the mode and timer before starting.
Field Box screen: "STANDBY" header, "Hold the button to arm", "RED" in red, "The bomb is not armed" at the bottom.
Waiting for the red team to hold the arming button.
Field Box screen: "ARMED" header on a red bar, large "5:00" countdown, "until detonation" label.
Bomb armed; the blue team has 5 minutes to defuse it.
Field Box screen: blue background, white check mark, "DEFUSED" in large text, "BLUE team wins" below.
Blue team defused the bomb in time.
Field Box screen: "JOINED GAME 4242" header, "Game" label on the left, "zone, node 7" on the right.
Box joined the field game via NFC card or serial console.
Field Box screen: "CODE" header, two of four circles filled in yellow, "# enter * delete" hint.
Typing a code for the Codes modifier (points, hints or unlocks).

The build manual has the full wiring diagram and first-flash guide for the Heltec WiFi LoRa 32 V4.

The Android app

The app draws the same mode screens from the same YAML files. These are the app's test images, not photos of a phone: nothing has run on a real phone yet.

An Android phone as the bomb: the mode's countdown screen ("ARMED", "4:47", "until detonation") above two big buttons, red and blue, to hold.
A phone as the bomb, with the teams' buttons.
The player's view: the game's name, 20:00 to go, the blue team's 20 points above the red team's 12, who holds each objective, and what happened.
Players follow the game on their phones.
The marshal's chronograph: the velocity keypad, the BB weight and a green "PASS", with the highest energy and the limit.
Chrono check-in, the reading signed by the marshal.

Try it today

There is nothing to flash yet, but the shared core runs on a computer. The simulator plays a mode in your browser: hold team buttons, watch each prop's screen and follow the event log. The commands below are typed in a terminal.

With a C compiler

cmake -S core -B build -DATALAIA_SHARED=ON
cmake --build build
cd simulator
python -m atalaia_sim serve ../modes/bomb

With Docker only

cd simulator
python ../tools/docker_sim.py serve ../modes/bomb

Then open http://localhost:8000. You need Python 3.10+ with PyYAML. The simulator guide has every option.

Roadmap

Six phases. Each one ends with a real field test before the next begins.

  1. Done

    0 · Foundations

    Shared core, Lua sandbox, Skirmesh-RF codec and browser simulator. Gate met.

  2. Software done

    1 · Single box

    Field Box firmware running in an emulator and a build manual; waiting for the first boxes.

  3. In progress

    2 · Field network

    Skirmesh-RF over LoRa, field controller, API, GM console and a mode pack, tested in software; waiting for the radio boards.

  4. 3 · Android and players

    Android props, the I/O pod, the player app and the modes that need phones; much of it done in software.

  5. 4 · Site server and advanced play

    Site server, custom scenarios, advanced modes, ATAK.

  6. 5 · Community

    Visual mode editor, mode registry, carrier PCB, translations, build guides.

The full roadmap, with what each phase holds and its gate →

Community hub

Fields, teams and builders will meet here. Everything is opt-in: the hub holds only what people choose to publish, and game data stays on each field's own servers.

  • Open

    Discussion

    Questions, ideas, reviews of the design and event reports. Go to Discussions

  • Planned

    Build gallery

    Photos, bills of materials, enclosure files and wiring notes for each build, starting with the first Field Box prototypes.

  • Planned

    Field and team directory

    An opt-in list of fields and teams that use Atalaia, with region, site type and a contact link.

  • Planned

    Mode and scenario browser

    The mode registry, with descriptions, downloads and community ratings.

  • Later

    Usage statistics

    Opt-in, anonymous totals of versions, platforms and modes played. Off by default.

  • Later

    Hosted site servers

    For clubs without IT support, at cost, with every club's data separate and exportable.

Get involved

Atalaia is built by players, field owners and makers. You can help today by:

Every commit carries a Signed-off-by line, and the project is strictly clean-room, written from scratch: no code, firmware, manuals, sounds or images from any commercial product.

The Atalaia badge: three watchtowers on sand dunes, with signal fires on their tops joined by an arc, above the word ATALAIA.

The name

An atalaia is a watchtower: a lookout post on a hill or a stretch of coast. The word came into Portuguese from the Arabic aṭ-ṭalāʾiʿ, "the scouts", and estar de atalaia still means "to be on the lookout".

A field controller sees every prop on the field and tells the GM the moment something changes. Watchtowers were local-first too, and ran the original low-bandwidth mesh: smoke by day, fire by night, relayed from tower to tower. Skirmesh-RF follows the same rules with LoRa.

Field safety

Atalaia props are game equipment. Make them look like game props: bright colours, clear "GAME PROP" labels, and nothing resembling a real explosive device. Transport them in labelled cases, never leave them unattended outside the field, and treat lithium batteries with care.