BomberTalk is a networked Bomberman clone that runs on Classic Macintosh hardware. Two to four players on a LAN find each other automatically, connect in a peer-to-peer mesh, and play on a shared 15x13 grid. It runs on a Mac SE (68000, 8 MHz) through to a Performa 6400 (PPC 603e, 200 MHz) from a single C89 codebase.

The game sits at the top of a dependency chain built specifically for this:

Retro68 clog PeerTalk BomberTalk

clog handles logging with a network sink for remote monitoring. PeerTalk handles all the networking: UDP discovery, TCP mesh connections, and both reliable and fast message transports. BomberTalk just registers its seven message types and gets on with the game.

Features

  • 2-4 player networked Bomberman over LAN
  • Automatic peer discovery via UDP broadcast
  • Runs on 68k (Mac SE) and PowerPC (6200, 6400) from one codebase
  • Tick-based timing so gameplay speed is consistent across 8 MHz to 200 MHz machines
  • GWorld double-buffering with dirty rectangle optimisation
  • Zero allocation after startup - all memory pre-allocated
  • Monochrome rendering path for the Mac SE (16x16 tiles) alongside colour (32x32 tiles)
  • Deterministic player ID assignment via IP sort - no negotiation needed

Tech Stack

C89 QuickDraw MacTCP Open Transport CMake Retro68

Architecture

BomberTalk uses a screen-based state machine: Loading, Menu, Lobby, Game. The main loop polls Mac OS events, PeerTalk callbacks, and keyboard input every frame. Game state updates are tick-based, not frame-based, so the Mac SE at 8-15 fps plays at the same speed as the 6400 at 24 fps.

Main Loop (every frame) WaitNextEvent() Mac OS events Net_Poll() PeerTalk callbacks Input_Poll() GetKeys() state Screens_Update() Game logic (tick-based) Screens_Draw() Dirty rects only

Network messages split across two transports:

Message Transport Purpose
Player position UDP (fast) 5 bytes, sent every frame
Bomb placed TCP (reliable) Grid coordinates
Bomb explode TCP (reliable) Forces sync on slow machines
Block destroyed TCP (reliable) Tile removed from grid
Player killed TCP (reliable) Death notification
Game start TCP (reliable) Includes protocol version check
Game over TCP (reliable) Winner ID

Hardware

Machine CPU RAM OS Display
Mac SE 68000, 8 MHz 4 MB System 6.0.8 512x342, 1-bit mono
Performa 6200 PPC 603, 75 MHz 40 MB System 7.5.3 640x480, 8-bit colour
Performa 6400 PPC 603e, 200 MHz 48 MB System 7.6.1 640x480, 8-bit colour
Mac SE running BomberTalk lobby
Mac SE - lobby
Performa 6400 running BomberTalk lobby
Performa 6400 - lobby
Performa 6200 running BomberTalk lobby
Performa 6200 - lobby
BomberTalk gameplay on Performa 6400
Gameplay on the 6400
BomberTalk gameplay on Mac SE in monochrome
Monochrome gameplay on the Mac SE
BomberTalk gameplay on Performa 6200
Gameplay on the 6200

Alpha gameplay across all three machines

Status

Alpha. The networking and game logic work. Players are coloured blocks, bombs are smaller blocks, explosions flash the affected tiles. Sprites (PICT resources) are the next step, along with further optimisation for the Mac SE.