{
  "id": 12342927,
  "title": "Two 3D games in two hours, and our boat game on Fire TV: life after Shipaton with Kotlin Multiplatform",
  "url": "https://urgent.news/2026/10/06/two-3d-games-in-two-hours-and-our-boat-game-on-fire-tv-life-after",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-06T09:03:50.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/rehaancubes/two-3d-games-in-two-hours-and-our-boat-game-on-fire-tv-life-after-shipaton-with-kotlin-5811"
  },
  "original_language": "en",
  "account": "After the brief life of Shipaton, the focus shifted to building BoatBrawl, an arcade boat-combat game written in Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) to run on iPhone, Android, Mac, Windows, and the web. During the development process, the hard parts were extracted into an open-source library called Joyframe, which was then documented extensively.\n\nIn the week following the BoatBrawl deadline, Ashwin, who built BoatBrawl with the author, used Joyframe to create two brand-new 3D games: Island Panic and SkyFall. Each game took about an hour to develop using Claude Code, and both were complete games at the end of that time.\n\nBoatBrawl now runs on Amazon Fire TV Stick, and the author shares insights into what it's like to have a game on Joyframe and how to fit a 3D Kotlin game onto a streaming stick.",
  "summary": "RevenueCat's Shipaton is over. We entered BoatBrawl , an arcade boat-combat game written in Kotlin Multiplatform (KMP) and Compose Multiplatform (CMP) that runs on iPhone, Android, Mac, Windows and the web. While we were building it we pulled the hard parts out into an open-source library, Joyframe , and wrote up every fix that went into it . A hackathon deadline is a good time to stop. We kept…",
  "key_points": [
    "Shipaton's life ended, focus shifted to BoatBrawl development",
    "Joyframe extracted, open-sourced for BoatBrawl and 3D games",
    "Island Panic and SkyFall developed in 1 hour each using Claude Code"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}