Classic speed. Absurd enemies. Modern light.
Chicken Doom is a fast, old-school first-person shooter in the spirit of the nineties: keys and locked doors, secrets behind paintings, double jumps across lava, and rooms that fill up with things that want you dead. Those things just happen to be chickens, ducks and geese - troopers, bombers, mechs, demons and gods.
Underneath the pixel-art sprites is a renderer that would rather be honest than flat: walls and floors are real displaced geometry, the level's lamps are baked into a light volume with shadows and bounce light, and storms roll in, soak the ground and put out the fires.
Everything - levels, enemies, weapons, styles - is plain data files, so a whole new boss is a block of text rather than a rebuild.
Seven chapters, one very long shift.
The campaign starts at closing time in the restaurant and ends at the last course. In between, every chapter has its own look, its own hazards and its own boss.
The Restaurant
Closing time, the drive-thru, the killing floor and the car park - all the way up to The Colonel's table.
The Jungle
Overgrown temples, a canopy of glass and the Gale Matron, whose fan throws tornadoes.
The Deep Fryer
Molten pillars, a choir that boils and the Super Kokodemon in the open air.
Pale
Touchdown on a station in deep space: relay arrays, airlocks, cold corridors and a black hole overhead.
Ember
A temple route down into the lava, under a volcano that never stops smoking.
The Bog
Rain, thunder and fog. Slippery wet ground, a maze lit only by fireflies, and The Bloat.
Every chapter ends with something big.
Bosses are built from attack patterns, not hit-point sponges: telegraphed beams you can hide from, tornadoes you can outrun, sieges, slams and summons.
The Colonel
The first one. He has been waiting at his table all night.
Super Kokodemon
Floats over its arena, marks your spot and burns it a second later. Then the eyes open.
The Whole Bird
The last course. Bring everything you have left.
Eleven ways to say no to poultry.
Every weapon is defined in data and feels different in the hand - including a fan that throws tornadoes and a grenade that sings.
Straight out of the engine.
In-game screenshots, no paint-overs. Click any of them to see it larger.
Retro on the surface, modern underneath.
A custom engine in the V language on raylib 5.5: no third-party engine, no middleware.
Real relief
Near walls, floors and ceilings are tessellated and displaced on the GPU - bricks, planks, roots and deck plates stand out of the surface instead of being painted on.
Baked light, shadows and bounce
Every lamp is baked into a 3D light volume with shadows from walls, pillars and crates, plus bounced light, sky occlusion and contact shading. Only moving lights are worked out per frame.
Weather that matters
Rain and thunderstorms with real lightning strikes. Rain puts out fires, leaves rings on the water and makes the ground wet, shiny and slippery.
Bloom, shafts and reflections
Bloom, lens flares from sky bodies, screen-space god rays, water with waves and reflections, fog that eats sprites properly.
Deathmatch at 60 Hz
A dedicated server running 60 ticks a second, client-side movement validated by the server, and fifteen arenas across every biome.
Everything is a text file
Maps, enemies, weapons, styles and animations live in plain .cdf and .cmap files, with an in-game editor and over a hundred automated tests.