First-person survival horror · in development

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.

Era · 1970s USSR Setting · Siberian taiga Engine · Beaker Studio · Cyber Sharks
scroll
The Premise

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.

Protagonist

Fedya

A Soviet geologist sent to survey oil-rich Siberia. Ordinary man, extraordinary night.

The Antagonist

Kul-Otyr

The king of the dead. His servants — the Kulya, risen corpses — hunt anything that moves.

Core Loop

Collect the offerings.
Reach the shrine. Survive.

  1. 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.
  2. Find three offeringsGreen, yellow, red — hidden among the junk. Carry them, one at a time, through the trees.
  3. Feed the shrineStep into the offering zone with an offering and press E. All three colours delivered — the night lets you go.
  4. Never stand stillIdle too long and the forest sends something to remind you that you are prey.
The three offerings

Deliver every colour to the shrine. Repeated colours are ignored — the taiga keeps count, and it does not forgive shortcuts.

The Hunt · 15–30 on the map

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.

Type 1 — Patrol

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.

Type 2 — Punishment

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.

Weakness

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.

Signature Mechanics
Torch

Fire

Light it, wave it, throw it. Rain snuffs it. Throw it and the ground burns — but you're left in the dark.

Weather

Rain

A 30% roll every minute. While it falls your flame may die at any moment and ground-fire dies fast.

Tablet

Notes & Compass

Read what you find. A needle for south and north — no coordinates, no map, no mercy.

World Edge

Teleport Borders

The map wraps. Cross a border and reappear opposite — and for three seconds the compass lies to you.

Cyber Sharks
Three predators · one dark ocean
The Crew

Small pack. Deep water.

A tight independent team building both a game and the engine it runs on — art, technology and sound, hunting together.

BS

Bulat Saifullin

Сайфуллин Булат
CEOArt Director

Sets the vision and the visual language of the studio — the painterly crimson dread that defines OIL and every frame Cyber Sharks ships.

VM

Vladislav Maznikov

Мазников Владислав
Co-founderEngine Tech Lead

Architects the Beaker engine — the runtime, the StormScript language and the AI-friendly project structure the whole game is built on.

ZR

Zick Ryder

Composer · Sound · Voice
ComposerVoice ActorSound DesignVideo Editing

Gives the taiga its voice — score, sound design, voice acting and every trailer cut. The dread you hear before you see it.

The engine behind OIL

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.

Design Philosophy

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.

0

Zero C++ knowledge required to ship a mechanic. Designers and AI work entirely in scripts and JSON.

A–K

Every engine power is a generic, project-neutral builtin block — queries, raycast, spawn, navmesh, audio, UI and more.

Own Language

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.

objects/torch/torch.c
// 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);
  }
}
# every entity is self-contained — geometry, scripts # and shaders live together, so an AI can reason locally objects/ torch/ # prefab + scripts + model, one folder torch.json # prefab & tunables torch.c # behaviour (StormScript) fire.hlsl # animated material chest/ offering/ corpse/ systems/ # gameplay, no geometry monster_ai/ rain/ compass/ shaders/ # screen post-FX passes main.json # entry point + scene registry
Built for AI & humans

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.

Under the Hood

Batteries included

Real, wired subsystems — not a wish list. Every one is exposed to scripts as generic builtins.

DX12

PBR Renderer

DirectX 12 physically-based renderer with animated, additive and billboard materials.

JOLT

Physics

Jolt-powered rigid bodies, mesh colliders with QEM decimation, impulses & forces.

RECAST

NavMesh AI

Recast/Detour pathfinding, auto solo/tiled bake — proven on a 298k-tri location.

MINIAUDIO

3D Audio

Positional miniaudio — 2D one-shots, 3D sources, streaming music, master mix.

OZZ

Skeletal Anim

ozz-animation runtime — sampling, blending and foot-IK on the CPU, renderer-agnostic.

RMLUI

Data-driven UI

HUD and menus as .rml/.rcss data — plus a visual canvas with image widgets.

HLSL

Scriptable Post-FX

Load your own .hlsl passes at runtime — fog, paint, outline, moonlight, FXAA.

LIVELINK

Editor + LiveLink

Collider authoring, mesh decimation, prefabs and TCP editor↔engine sync.

0
Script builtins
0
Engine compiles
0
Vendored libs wired
0
Rebuilds to iterate