What it is

A football game that plays like the ones I grew up with — you steer one man, the ball is loose, and a mis-hit shot is your fault — but in a real 3D world with a camera you can put anywhere.

The whole match is a fixed 60 Hz simulation that never touches the renderer. It produces a snapshot of the world and a queue of sounds; something else turns that into pixels. That one rule is why the game can replay any moment through the same code that draws it live, run a whole season headless with no window at all, and be drawn by three completely different renderers.

Everything a football match does is in there: throw-ins, corners, offside, advantage, the wall, penalties, the back-pass rule, deflections, bookings, injuries, substitutions, added time. Twenty-six attributes per player decide how each one of them behaves.

Wind, rain and woodwork

Football is played outdoors, and the weather is not decoration. The wind acts on the difference between it and the ball, which is why a clearance hit into a gale dies and one hit with it runs forty yards. It gusts, so a high ball is never quite where you thought it would be.

A wet pitch is a quick pitch: the ball skids off the surface instead of sitting up, and studs let go when a man turns at pace. Snow is the opposite — a bog that kills a pass stone dead. Clear, overcast, rain, storm or snow: pick one in the options, or let the day bring what it brings.

The goal frame is now four real cylinders — two posts, the bar, and the junction where they meet. Each rebounds properly, spin drags the ball off the post the way it should, and a shot that clips the top corner can go anywhere. And bend is a skill worth having: below forty-five on the curve attribute a player hits it straight, above it the ball starts to move, and a specialist really does whip one round a wall.

Rain coming in sideways during a storm
A storm — the rain leans with the wind, and so does the ball
Snow falling during a match
Snow — slow going, and the ball stops dead
The goal net hanging and moving in the rain
The net hangs — springs pull towards a sagging rest shape, not a flat sheet, and every node has its own ripple so it is never quite still

The touchline

In a manager career you do not steer anybody. You drag a box round your own players with the mouse and shout at them — push up, sit back, close him down, calm down, well done — and then they decide.

A professional in good heart takes it on. One who is knackered and has been bawled at twice already shrugs. A hothead argues with the bench, and a quiet one lets his head drop and plays inside himself for the next twenty seconds. Morale moves on its own too: scoring lifts a side, conceding flattens it, a booking knocks the man who got it.

And you cannot stop a football match. You can ask the referee for a break, and get it at the next throw-in, free kick or goal kick — then make your changes.

Three players picked out with the lasso and the order menu open
Pick them out and tell them — each ring shows the man's morale
The team talk: the eleven, the bench, the shape and the mentality
The break — ratings, legs, substitutions, shape

Features

The whole match

Offside, advantage, the wall, penalties, the back pass, cards, injuries, subs and stoppage time — refereed by a man who runs the diagonal with two assistants flagging.

Crossing from anywhere

A cross is solved backwards from the target: pick the man, decide the hang time, then work out the ball. Play one from forty metres and it still arrives at his head.

Weather that plays

Wind that gusts and moves the ball in flight, a wet pitch that skids and a snow-covered one that deadens, and men who lose their footing when they turn.

Five cameras

Overhead, television gantry, a broadcast director that cuts between shots, over the shoulder of your man, and the view from the dugout at pitch level.

Eight leagues

England, Spain, Italy, Germany, France, Poland, the Netherlands and Portugal — 150 clubs, squads named for their country, fixture lists of the right length.

Everything is a text file

Clubs, squads, leagues, tactics, settings and the credits are plain text you can edit. There is an in-game editor for the ones you would rather not type.

Nothing imported

No meshes, no textures, no audio files. The players are jointed figures, the kits are painted at start-up, the crowd and the whistle are synthesised.

Screenshots

A player close up: painted kit with his name and number, sleeves, socks, boots
Close up — the name and number are painted into the kit texture, not floating behind it
The main menu on the arena backdrop with club badges
The menu — badges drawn from each club's name and colours
The main menu on the technological backdrop
A different backdrop every time — four drawn ones, or your own photographs
The opening: a match clock winding to ninety minutes over a floodlit pitch
The opening — the clock winds to 90:00, then the whistle
The title card
The title
Choosing which country to manage in
Pick a country, then a club, then live in the table
The career hub: league table with form, last week's results, next match
The season — table, form guide, results, your record
The team sheet before kick off
Before kick off — positions, form, both elevens
Full time statistics and the man of the match
Full time — the numbers, and who won it
A player's card under the mouse pointer
Hover anybody — his match, his attributes, his legs and his head
The escape menu during a match
Ask the referee — the break comes at the next stoppage
The tactics board: drag the formation about
The board — drag a man anywhere, keys or mouse
The squad editor
The editor — make your own clubs and players
Players lit by the shader renderer
Lighting — key, fill, a sky and ground bounce, and a wrap term so nothing goes flat black
The broadcast camera
The director — cuts between a wide shot, behind the goal and a low follow
The view from the dugout at pitch level
From the bench — a poor view of the far side, which is the point
The options screen
Options — shadows, crowd, half length, referee strictness, renderer

Three renderers, one game

Because the simulation cannot see the renderer, the game can have several. It has three, and F4 cycles them in the middle of a match without missing a step.

The shader renderer
OpenGL 2.0 · ES 2.0

Shaders and buffers

Vertex buffers, GLSL, matrices worked out on the CPU. Written against the subset that WebGL can use, so the browser build is a port and not a rewrite.

The fixed function renderer
OpenGL 1.4 · TinyGL

Fixed function

Immediate mode, the old matrix stack, GLU quadrics. The one that must never break: it runs on anything with a driver, down to a software TinyGL.

The classic 2D renderer
2D primitives only

The classic view

Straight down on the pitch, players as discs with their numbers on. Costs almost nothing to draw, and it is how the game this one is modelled on actually looked.

Under the bonnet

  • C++ on GLUI, SDL2, CMake, no engine and no third party middleware.
  • The one rule: the simulation never touches the renderer, the audio or the window. It emits a world snapshot and a queue of sounds.
  • Fixed 60 Hz simulation on an accumulator, decoupled from the frame rate.
  • Procedural everything: jointed figures with hand-written animation clips, kits painted into textures at start-up, a spring-simulated goal net, a crowd built into one vertex buffer, audio synthesised into PCM at boot.
  • Headless mode: --sim plays a whole match with no window and prints what happened; --season runs a full league. That is how the gameplay is tuned — by measuring, not by watching.
  • Data driven: clubs, squads, leagues, tactics, settings and credits are hand-editable text.

Where it stands

Still being built, in the open. The match, the career, the front end and the three renderers all work today, in any weather. Next: a cup competition, transfers between seasons, and a two-phone penalty shootout where the handset is the controller.

Every club, player and badge in it is invented — the game generates them. Real squads can be brought in from a file you own, but nothing here is scraped from anybody's database.