Fluchtpunkt

An AI-Assisted Speedrun in Game Development

Pseudo-3D graphics like these have vanished from today's computer games. Thirty years ago they were the only way to create the illusion of a racetrack moving in real time on the home computers of the day.

Fluchtpunkt is German for vanishing point: the point on the horizon where the edges of the road meet in a perspective view, and the point every pseudo-3D racing game is built around.

No technology has changed software development so much in so short a time as generative artificial intelligence based on large language models (LLMs). Writing computer programs used to be expensive and time-consuming manual, or rather mental, labour. Generative AI has made software development cheaper. Much cheaper! Projects that were unthinkable for a solo developer only a year ago are now within reach.

After the leaps from machine code to assembler and from assembler to high-level languages, we are now moving to programming in natural language. That was always the original vision for human interaction with computers. Two years ago it was still science fiction. Now it lowers the barrier to entry dramatically. Software development is finally becoming simple again! You can focus on the actual problem without having to fight your way through 500 lines of initialisation code for an unfamiliar graphics subsystem just to draw a single line on the screen.

In my opinion, this quote sums it up best:

"Maybe there is an enormous amount of code-shaped value waiting to exist, and AI happens to make that value cheap enough to create."
— Hank Green, 2026

My code-shaped value is called "Fluchtpunkt". It is a retro racing game with pseudo-3D graphics, and building it as a solo developer had always seemed so unrealistic that three months ago I did not even know I wanted it. This is the story of a speedrun in game development and of my search for an answer to the question: Does an AI-generated computer game inevitably end up as slop?

The Inspiration: Lotus Turbo Challenge II

Early racing games had a problem: the hardware was far too weak to render real 3D graphics. So developers had to get creative. The solution was pseudo-3D. The road was assembled from many horizontal scanlines that were shifted against each other to simulate curves. There were dedicated graphics chips for this. In the Amiga, these were the blitter, which shifted the road segments horizontally, and the copper, which coloured them.

Lotus Turbo Challenge 2, daytime track Lotus Turbo Challenge 2 on the Amiga: daytime track with traffic. © 1991 Magnetic Fields / Gremlin.
Lotus Turbo Challenge 2, snow track Track with snowfall. © 1991 Magnetic Fields / Gremlin.

Lotus Turbo Challenge 2 is a typical example of this class of computer games. It was one of the most popular racing games for the Amiga home computer and appears on practically every list of the best Amiga games. I use it here as a reference and will carry over some of its mechanics, such as tunnels and water jumps, into "Fluchtpunkt". I want to build a modern pseudo-3D racing game that is as good as it can possibly be. To do that, I am investing mostly time, but also a little money, and using every AI tool available to me.

The Development Team

Fluchtpunkt was developed with Claude Code, Anthropic's command-line tool. It is an agent that runs directly in the terminal. It can read and write files, execute commands, run unit tests and work with the Git version control system. The team consisted of several instances of this tool, all running in a single tmux session (or psmux on Windows).

Team structure: human developer, Claude project manager with five agents and Codex for special assignments The team structure: I give assignments to the Claude project manager and to Codex. The project manager coordinates several AI agents with different responsibilities. On the side, Codex generates sprites and game graphics.

The agent team is launched by a script, and the project manager and agents learn their roles from text files. These describe where their working directories are and which rules apply to work in the project (coding style, architecture principles such as SOLID, KISS).

Only the project manager takes assignments from me. It cuts them into work packages and distributes these to up to eight developer instances. The project manager starts them automatically in tmux panes and closes them again once their task is done. Each agent works in its own Git worktree on its own branch. When a package is finished, the project manager reviews the agents' results and merges them into the main branch. In addition, a separate instance of OpenAI Codex ran as a helper for special tasks such as image generation.

Workflow: an assignment reaches the project manager, who splits it into packages and distributes them to five developers An assignment comes in and six agents get to work: the project manager understands the task, cuts up the work and distributes the packages. The developers work on them in parallel.

It is the way a software team works, transferred to agentic, non-human workers. My role was limited to that of the product owner: setting the direction of development, identifying tasks and accepting changes. I describe the next task to the project manager, who prepares it for the team and turns it into a task list. That list is then worked through by the agents around the clock.

Two agents working on the same file at the same time would cause merge conflicts that would be tedious to resolve. To avoid this, the project manager also makes sure that the work packages do not overlap.

The First Version

The first prompt asked for a retro racing game with pseudo-3D graphics in the style of "Lotus Turbo Challenge 2" on a JavaScript-based software stack, since it was originally meant to fit into a single HTML file. After a bit of back and forth, the result was ready about 30 minutes later and was unimpressive both graphically and in terms of gameplay. The sprites were procedurally generated, the sound effects rudimentary and the game physics questionable.

A first playable version.

Now the question was: can it be done well? What would come out if you threw every possible AI helper at the problem? But first another decision about the direction had to be made: I switched the stack to TypeScript, because with my background as a C++ and C# programmer I consider JavaScript, as an untyped programming language, a terrible mistake, and at that point I still assumed I would have to look at the code at some point. The second decision was to go with a canvas-based renderer. I later reversed that decision in favour of WebGL in combination with three.js.

Reverse Engineering the Original

An original track map of Lotus Turbo Challenge II, reconstructed by Claude Code.

I had the AI solve the problem of the poor driving physics by giving it the task of reverse engineering "Lotus Turbo Challenge 2", based on the WHDLoad package of version 1.11 of the original Amiga release. The goal was to find out how the original solved the problem. I wanted to know everything:

  • How are the game assets organised?
  • What do the levels look like and how are they structured?
  • How does the engine and gearbox simulation work?
  • How does the weather system work?

The result was dozens of documents describing the original's functions in detail and completely decoding and breaking down its assets. That was extremely helpful for drawing up the further plan, but in "Fluchtpunkt" I could neither use the original assets nor copy game mechanics directly. My goal was not a copy of the original, but a homage on modern hardware.

What I did not know at the time was that shortly afterwards I would also have the AI port the original game completely to C++ with SDL 2.x. Lotus Turbo Challenge 2 now also runs on Windows and Linux on my machine. For legal reasons, however, I cannot publish this port, because it needs an image of the original Amiga floppy disk to run.

Tools and Services

Games whose developers admit to using AI-generated assets currently have a hard time on Steam. The platform has introduced a "Made with AI" label to mark them. Using this label leads to immediate calls for a boycott. Those calls then hit the developers who were honest about labelling.

The concerns of opponents of AI-generated content are that companies such as OpenAI and Anthropic train their models on data stolen from digital artists without their knowledge, in order to build products that compete with them for commissions. That is not wrong, but it is also inconsistent, because the bone of contention is always just the game assets. In the eyes of the community, generating code with agentic AI does not seem to be an offence worth a boycott.

Since this is a hobby project from which I do not expect any financial gain, I can ignore calls for a boycott. That is why I can write openly here about the tools used and the origin of the assets.

Services Used and Their Costs

Generative AI was used to create the source code, all billboard sprites, background images, and all music tracks and sound effects. In detail, the following services were used:

ServiceUseCost
Claude Code (Max 20×)Programming and agent teamUS$200 / month
OpenAI Codex (Pro 5×)Special tasks, reverse engineering, code analysisUS$100 / month
OpenAI GPT ImageGame assets and visual variantsincluded in the OpenAI subscription
SunoMusic and soundtrackUS$10 / month
ElevenLabsSound effectsUS$22 / month

Graphics and Sound Assets

Vehicle Models

The vehicle models are the only part of the game assets that is not AI-generated. They were bought. I ran tests with generated models and also created some from photos with Meshy.ai. I rejected this approach for the following reasons:

  • The models generated from photos had no rotating or steerable wheels, and their meshes were asymmetric in details that mattered to me.
  • For legal reasons, no recognisable trademarks may appear in the models.
  • The models should also differ from real vehicles, as these could be protected by design or trademark rights (e.g. the Porsche 911).

Model generation by AI in Blender worked better. The resulting vehicle did have rotating and steerable wheels, but it also used a great many polygons and had some visual defects:

Sirius, yellow coupé, side view Rotate with mouse or finger, zoom with mouse wheel
Example of a 3D vehicle model generated by AI in Blender.

In the end, buying 3D vehicle models was the best solution. What mattered was that they look good, are inexpensive and carry no recognisable trademarks.

SourceUseCost
mena-assets.comARCADE: Retro Super Cars€96.00
mena-assets.comARCADE: Ultimate Vehicles Pack€22.40
Sketchfab, Fab.comSome 3D vehicle modelsfree models

Vehicle Sprites

The game uses a real 3D model only for the player's car. It is the most important model, and I wanted the freedom to show it from every possible angle. The game makes use of this when the car starts to skid on a patch of ice and spins through 360°.

All other vehicles are pre-rendered sprites of 3D models in various predefined views. The vehicles in them are grey because their colour is assigned only at runtime. The sheets with the various vehicle sprites were created automatically by AI from the purchased 3D models.

The sprite sheets with the pre-rendered vehicle views in a neutral body colour contain views of ±15° horizontally in two sets, each with 0° and 2° vertical angle.

Billboard Sprites

Billboard sprite with a film poster: "Claws 2 – We're gonna need a bigger shark", a cat attacking a shark This AI-generated roadside billboard sprite shows a fictional film poster.

Billboard sprites are two-dimensional graphics used in 3D or pseudo-3D games to depict objects without rendering them as real 3D models. This is faster and needs less memory. However, the result can often look surreal because of missing or incorrect perspective.

"Lotus Turbo Challenge 2" had only a handful of such sprites. The floppy disks used as storage media at the time had a capacity of only 880 KB, and the computer itself, with 512 to 1024 KB of main memory, was very modestly equipped by today's standards.

Such restrictions no longer exist today. That is why more than 750 different billboard sprites were created for Fluchtpunkt, using OpenAI's image generation feature. The number is so high because most of them come in four different versions, one for each season. This also makes it possible to show every scene in different weather conditions.

Winter with light snowfall.
A sunny spring day.
A sunny summer day.
An autumn day with falling leaves.

Such a quantity of image assets is only practical if the variants can be generated automatically. Commissioning a graphic artist for a project of this size would be expensive and would not pay off.

Sound Design

Music and sounds are entirely AI-generated. Each level has its own music track, six in total. They were created with Suno. If you ask it for music in the style of Amiga MOD files, you get pretty good electronic sound. Music on the Amiga had an unmistakable, distinctive sound. It came from the audio part of one of its custom chips (Paula), which could play 8-bit samples on four voices simultaneously at up to 56 kHz. In its day, that was unrivalled.

The sound effects for weather and vehicles, i.e. thunder, rain and tyre screech, were created with ElevenLabs.

Music TracksSound Effects

Some of the in-game sounds, such as the engine, collisions and vehicle noises after jumps, do not come from files but are synthesised in real time with the Web Audio API. Here, too, the reverse engineering provided the basis. The agents analysed the original's sound effects and measured frequencies and envelopes. The engine's fundamental tone sits at 85 Hz and follows the engine speed between 48 and 191 Hz. Gear changes can also be heard as a drop in revs.

Making it Pop

The 1980s and 1990s were the heyday of pseudo-3D racing games. The best versions came in the form of arcade machines. These were powerful coin-operated game cabinets. Their versions ran more smoothly and looked better than the versions for home computers. If you wanted to play, you had to pay. Many of these titles introduced special game mechanics. "Outrun" had road forks, and the player's car flipped over when it hit obstacles. In "Jaguar XJ 220" you could knock over traffic cones and pylons. "Powerdrift" had three-dimensional tracks, and the picture rotated slightly when cornering.

What do you do when game development consists of nothing more than expressing wishes? You copy the most interesting game mechanics and come up with a few new ones. So here is a list of the mechanics inspired by other games and where they come from:

Game MechanicSeen inExampleIn Fluchtpunkt
Ice and oil patches on the road"Lotus Turbo Challenge 2" (1991)Lotus Turbo Challenge 2: ice patches on a snowy trackFluchtpunkt: ice patch on the road in the Alpine Circuit
Cross traffic over the road"Lotus Turbo Challenge 2" (1991)Lotus Turbo Challenge 2: an articulated lorry crossing the roadFluchtpunkt: a train crossing the road at a level crossing
Tunnels"Lotus Turbo Challenge 2" (1991)Lotus Turbo Challenge 2: entering a tunnelFluchtpunkt: entering a tunnel in the Elbe Sandstone Mountains
Water ditches you can jump over"Lotus Turbo Challenge 2" (1991)Lotus Turbo Challenge 2: jumping over a water ditchFluchtpunkt: the road crosses a water ditch in the Elbe Sandstone Mountains
Different weather moods"Lotus Turbo Challenge 2" (1991)
Car spins through 360°"Outrun" (Amiga, 1988)Outrun on the Amiga: the car turns sideways across the roadFluchtpunkt: the car spinning on a snowy road
Road forks"Outrun" (Amiga, 1988)Outrun: the road forks in two directionsFluchtpunkt: the road splits into two carriageways
Bridges"OutRunners" (1993)OutRunners: driving across the Golden Gate BridgeFluchtpunkt: driving across a suspension bridge in the Marshland
Objects you can knock over"Jaguar XJ 220" (1992)Jaguar XJ 220: pylons at the roadside that can be knocked overFluchtpunkt: a knocked-over snowman flying through the air
Screen tilts in curves"Powerdrift" (1988)Powerdrift: the picture tilts sideways in a curveFluchtpunkt: the camera tilts in a curve in the Elbe Sandstone Mountains

When agentic AI reduces software development to expressing wishes, things like shader programming, dynamic lighting on billboard sprites and banked curves become possible too.

Fluchtpunkt: trees bending in a snowstorm Animated sprites
Fluchtpunkt: motion blur at the edges of the screen in the Elbe Sandstone Mountains Speed-dependent motion blur
Fluchtpunkt: banked curve in the Roller Coaster level Banked curves
Fluchtpunkt: night drive in the rain in the Marshland with spray, headlights and a wet road Vehicle spray, headlight beams and wet roads
Fluchtpunkt: semi-transparent ghost car of the personal best next to the player's car Racing against your own best time as a ghost car
Fluchtpunkt: roadside trees casting shadows on the road Light and shadow from billboard sprites

Where you would once have tinkered with implementing the animation, you can now finally think about DIN-compliant signage for level crossings in an arcade racing game.

A level crossing with barriers and signals in the middle of a race.

Conclusion

Without agentic AI, this game would not exist. If you wanted to program it by hand, two programmers would probably be busy for a year. The cost of the programming work and the asset creation would be enormous. But it does exist, and it is better than anything I could have created the traditional way.

That said, I have not learned anything new about programming: not how to write WebGL shaders, not how exactly the transformations of the game world in pseudo-3D work, not how the database that stores the game runs is structured. Along the way, I also ported the original Lotus Turbo Challenge 2 completely to Linux. I still know nothing about MC68000 assembler, except that this is how people used to program, and I wonder whether the next generation of software developers will generally look at source code the same way: "That's something people used to do back then."

Is it even my game? Is it Claude's? I don't know. I know that it is fun and that developing it was interesting. The only thing I have learned is how to develop software with a team of AI agents.

Cost Breakdown

Programming began on 8 August 2026 with the first commit in the repository. Up to today, that amounts to two full months of Claude subscription. Music and sound effects were each created within a single month of subscription.

ItemScopeCost
Claude Code (Max 20×)2 months at €214€428.00
OpenAI Codex (Pro)1 month€100.00
Suno1 month (US$10)approx. €9.00
ElevenLabs1 month (US$22)approx. €19.00
ARCADE: Retro Super Cars3D vehicle models€96.00
ARCADE: Ultimate Vehicles Pack3D vehicle models€22.40
Totalapprox. €674.40