OILOIL
1970s. The Soviet Union pushes deep into the Siberian taiga. A geologist named Fedya is swallowed by a forest that does not want to let him leave.
A forest that loops
back on itself
Cross the edge of the world and you are thrown to the opposite side — the same trees, the same road, the same rusting UAZ "buhanka" waiting in the dark. For a few seconds your compass loses its mind. You are not lost. You are held.
A torch instead of a flashlight. Rain that snuffs it out. A tablet with scattered notes and a needle pointing only north and south. And something patient walking the checkpoints between the houses.
Fedya
A Soviet geologist sent to survey oil-rich Siberia. Ordinary man, extraordinary night.
Kul-Otyr
The king of the dead. His servants — the Kulya, risen corpses — hunt anything that moves.
Collect the offerings.
Reach the shrine. Survive.
- Search the cachesHold E — a radial wheel fills. Eight coloured chests drip one item every few seconds onto the ground. No inventory UI: what falls, falls.
- Find three offeringsGreen, yellow, red — hidden among the junk. Carry them, one at a time, through the trees.
- Feed the shrineStep into the offering zone with an offering and press E. All three colours delivered — the night lets you go.
- Never stand stillIdle too long and the forest sends something to remind you that you are prey.
Deliver every colour to the shrine. Repeated colours are ignored — the taiga keeps count, and it does not forgive shortcuts.
The Kulya
Two behaviours, one corpse. They pathfind around trees and houses on a baked navmesh — they never walk in a straight line at you. They walk the smart line.
The drifting dead
Weighted-random checkpoints. Step near one and its weight triples — the horde slowly drifts toward you without ever teleporting. See you in its vision cone and it gives chase.
Anti-idleness
Do nothing for 30 seconds — no chests, no notes, no offerings — and one spawns off-screen and sprints for you. Act, and it instantly loses the will. Outrun it and it melts back into the dark.
They fear fire
Throw the torch — the ground ignites and they flee. Land a hit and they scatter. But now your hand is empty, and the rain is coming to put your fire out.
Fire
Light it, wave it, throw it. Rain snuffs it. Throw it and the ground burns — but you're left in the dark.
Rain
A 30% roll every minute. While it falls your flame may die at any moment and ground-fire dies fast.
Notes & Compass
Read what you find. A needle for south and north — no coordinates, no map, no mercy.
Teleport Borders
The map wraps. Cross a border and reappear opposite — and for three seconds the compass lies to you.
Small pack. Deep water.
A tight independent team building both a game and the engine it runs on — art, technology and sound, hunting together.
Bulat Saifullin
Sets the vision and the visual language of the studio — the painterly crimson dread that defines OIL and every frame Cyber Sharks ships.
Vladislav Maznikov
Architects the Beaker engine — the runtime, the StormScript language and the AI-friendly project structure the whole game is built on.
Zick Ryder
Gives the taiga its voice — score, sound design, voice acting and every trailer cut. The dread you hear before you see it.
BEAKER ⚗
A compact, purpose-built game engine with its own scripting language, an AI-legible project structure, and one uncompromising rule: the engine compiles once — the game is only scripts and data.
Compile once.
Build the game in data.
Beaker ships as a set of generic capabilities. A game is not C++ — it's StormScript (.c) plus data (.json, .hlsl). If a mechanic ever needs an engine edit, that means a capability is missing — so it's added once as a builtin, and never again.
The engine is compiled a single time. Gameplay iterates with zero rebuilds — scripts hot-compile to native code at runtime.
Zero C++ knowledge required to ship a mechanic. Designers and AI work entirely in scripts and JSON.
Every engine power is a generic, project-neutral builtin block — queries, raycast, spawn, navmesh, audio, UI and more.
StormScript
A C-like gameplay language that compiles to native machine code at runtime — Storm → C → libtcc → native — with no engine rebuild. Component lifecycles (Start, Update, fpsUpdate) run per object. A shared blackboard connects scripts; state saves straight to disk.
Runs from Cyrillic and Japanese install paths. Includes its own libraries. Localises entirely in-script over a generic JSON reader — the engine never hard-codes a language.
// a torch component — pure gameplay, no engine edits export float relight_time = 1.5; void Update(ref self) { if (Input_KeyPressed("Q")) { // throw it — the ground catches fire object fire = Spawn("groundfire", ObjX(), ObjY(), ObjZ()); Sound_PlayAt("sfx/whoosh.wav", ObjX(), ObjY(), ObjZ(), 1.0); State_SetNum("has_torch", 0); } }
A project that
explains itself
Beaker enforces a managed, convention-driven project structure. Each object owns its geometry, its scripts and its shaders in one folder — so both a person and an AI can reason about a feature locally, without spelunking the whole codebase.
The engine ships a machine-readable index of every builtin — signature → return → purpose, in one table. An AI can pull exact names and arguments straight from the declaration and write correct gameplay on the first try.
Batteries included
Real, wired subsystems — not a wish list. Every one is exposed to scripts as generic builtins.
PBR Renderer
DirectX 12 physically-based renderer with animated, additive and billboard materials.
Physics
Jolt-powered rigid bodies, mesh colliders with QEM decimation, impulses & forces.
NavMesh AI
Recast/Detour pathfinding, auto solo/tiled bake — proven on a 298k-tri location.
3D Audio
Positional miniaudio — 2D one-shots, 3D sources, streaming music, master mix.
Skeletal Anim
ozz-animation runtime — sampling, blending and foot-IK on the CPU, renderer-agnostic.
Data-driven UI
HUD and menus as .rml/.rcss data — plus a visual canvas with image widgets.
Scriptable Post-FX
Load your own .hlsl passes at runtime — fog, paint, outline, moonlight, FXAA.
Editor + LiveLink
Collider authoring, mesh decimation, prefabs and TCP editor↔engine sync.