Gol Kralı — Offline Football Game
Gol Kralı is an offline football game for Windows and macOS, with a Turkish-only interface and the real 2025–26 Süper Lig clubs on the team sheet, plus a set of European and national sides.
Role
I directed this project rather than coding it. I set the requirements, chief among them that it had to feel like football to a kid holding a controller, chose the visual direction, and played every build by hand. AI coding agents, Claude and Codex, wrote the code across several iterations; I sent back the ones that didn't feel right and decided what shipped.
Stack

Windows portable .exe and zip, and a macOS (Apple Silicon) zip. The builds aren't code-signed, so Windows may show a SmartScreen prompt and macOS may need a right-click → Open the first time.
Overview
Gol Kralı is an offline football game for Windows and macOS, with a Turkish-only interface and the real 2025–26 Süper Lig clubs on the team sheet, plus a set of European and national sides. You pick a team, then play a quick match, a penalty shootout, or a three-round cup, with a gamepad or a keyboard alone; a mouse works in the menus. It runs entirely on the local machine: no account, no internet connection, no telemetry. I built it as a gift for a child in Türkiye, so every decision came back to one question: does it feel like football to a kid holding a controller?
What it does
- IThree modes: quick match, penalty shootout, and a three-round cup with a bracket
- II18 Süper Lig rosters checked player by player against official TFF registration records
- IIIKeyboard-alone and gamepad-alone control in every mode, with remappable bindings that persist
- IVZero network code, and the app blocks every outside request itself
- VAn instant replay after every goal, letterboxed like a broadcast
Screens











Technical notes
- IThe whole match runs as one ordered, fixed-step commit per tick, with every random outcome coming from a single seeded generator, so identical inputs replay byte for byte. That determinism is what makes a 38-entry counterexample corpus possible: 24 of those are proven to fail on the commit before their fix, not just tests that were written and always passed.
- IIA separate tool deliberately reintroduces a known defect into a detached copy of the code and requires the matching check to go red: right now it produces 253 violations on the mutated tree and 0 on the honest one. A check that has never been seen catching the bug it was built for isn't proof of anything.
- IIIPresentation is never allowed to author an outcome. The penalty shootout draws the keeper and the ball from the stepped physical attempt rather than a preselected animation, and a keeper's glove volume appears on screen only because the simulation's own save state says a save is live.
What I learned
Three earlier iterations came back with every automated check green and a game that still didn't play like football; one of them had the ball passing straight through players, and that bug survived 174 passing tests. So the checks themselves became the work: instruments built to be able to fail, and a rule that no report may claim more than its evidence shows.