Skip to content

Repository files navigation

BoloKit & Bolo 2026 (Modern Swift Port of XBolo)

A modern Swift port of XBolo, a Cocoa clone of Stuart Cheshire's classic multiplayer tank game Bolo. This project is designed as an engine-forward platform (built as the BoloKit framework package) supporting future expansions, mods, and AI agents, with the playable Mac app target built on top named Bolo 2026.

This repository exists to learn modern Xcode, Swift, on-device AI (FoundationModels), and multiplayer networking, and to end up with a Bolo engine you can play natively on modern macOS (macOS 26+ / Darwin 27+).

Bolo is not otherwise unmaintained — WinBolo 2 shipped in 2026 with native Mac support. This project is a personal learning vehicle, not a competing distribution.

Oracle & Attribution

This is a derivative Swift port of XBolo (MIT-licensed), itself a clone of Stuart Cheshire's original Bolo. Reference/c holds XBolo's C/Objective-C source in-tree as a git submodule — kept there permanently, not as a historical artifact pending removal, because it's a live, executable oracle: every ported module is checked against it with differential tests. See LICENSE for the full attribution chain and license terms.

Status

Current tagged drop: v1.6.9 — a patch fixing two guest-only accounting defects: a guest builder's tree spends being refunded by the host's stale count, and a guest builder's placed mine never costing the host a mine. Release notes: docs/RELEASE_NOTES_v1.6.9.md.

The C-oracle port is done. Open work lives on GitHub, not in wave numbers. Conventions: issue #43. Live board: docs/STATUS.md.

Layer Role
Issue One unit of work (CosmicCEO/BoloKit). Types: Feature, Bug, Task.
Milestone Time box. v1.x.0 = release (tag when every issue closes). v1.x.y = patch between planned sprints. Decide: = ruling, no code.
Sprint Two weeks, Monday start, due Friday of week 2. Skip US federal holidays.
Project Grouping only. 1.* = path to 2.0.0. 2.* = Decide items.

Next release: v1.7.0 gameplay packs, then v1.8.0 LAN/WAN discovery. 2.0.0 is the tag when that path is done.

Engineering rules: docs/CONSTRAINTS.md. Wave history: git tag legacy-agent-process.

Playing

Host or join over LAN from the app's Host/Join screens. Cmd-N opens a second window (macOS tabs it automatically); each window runs its own independent game session, so you can host in one tab and join in another on the same Mac -- a convenient way to drive two tanks solo, no second machine required. See #144 for follow-up on formalizing this into a supported mode.

BoloArena

swift run BoloArena runs a real headless host+guest game behind two independent local HTTP control ports (default 9101/9102) — a soak/anomaly-hunting tool, not shipped game functionality, built so two agents (or a human via curl) can actually play a real match and surface unexpected behavior. Supports the built-in test map or a real .map file via BOLO_ARENA_MAP_PATH. See Sources/BoloArena/main.swift for the command protocol.

Approach

  • Reference/ holds the original xbolo C/Objective-C source as a git submodule. It is kept building throughout the port and used as an executable oracle: every ported module is checked against it with differential tests before its callers switch over.
  • Sources/BoloKit is the target: a pure Swift simulation with no AppKit dependency, shared by both the client and server roles (the original kept two separate copies).
  • Fidelity to the original 1993 Macintosh Bolo (version 0.99.7bv) is tracked in docs/CONSTRAINTS.md, against the C oracle — not from other GPL-licensed Bolo implementations, to keep this project's license clean.
  • All sprite/tile art is generated from Unicode/ASCII glyphs rather than reproduced from the original's copyrighted assets.

Contributors

Human + AI pair-programming. Project instructions for agents are in AGENTS.md.

Licensing

This repository is MIT-licensed — see LICENSE, which retains the original XBolo copyright notice as required by its terms.

XBolo itself bundles a separate dependency, TCMPortMapper, under the GPLv3, used for UPnP/NAT-PMP port mapping. That dependency is not used here. Any NAT-traversal functionality in this port will use a permissively-licensed alternative or manual port forwarding, specifically to avoid GPL-encumbering this codebase.

About

Modern swift port of the 1990s classic tank game Bolo. Leverages gpu on arm chip architecture to create headspace for new features or rendering options.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages