"You thought you were Dr. Elias Crane. You're just the vector."
⚠️ Experimental project. This game was built to test how far an AI can go on a full Unity project — code, narrative, systems, architecture — with minimal human intervention. The result is raw, imperfect, and sometimes broken. That's the point.
Facility Omega is a 3D top-down survival horror game generated 100% by AI — code, audio, visuals and narrative included. No external assets. Everything is procedural.
This is not an AAA game. It was never meant to be. It's an experiment: how far can you push an LLM to build something playable, coherent, and (vaguely) scary? The answer sits somewhere between "further than expected" and "not quite there yet".
Deep beneath the streets of Paris, 400 meters underground, lies Installation Omega — a secret military laboratory whose mission was to synthesize a neural control agent derived from a mutant fungus: SUBSTANCE-X.
You play Dr. Elias Crane, project lead. Or at least, that's what you believe.
The twist: You are Subject-47 — the first human infected by SUBSTANCE-X, which modeled itself on Crane's memory structure. You believe you're human. SUBSTANCE-X is using you as a vector to reach the surface.
- Open Unity 6 with URP
- Menu: FacilityOmega > Build > Generate Game Scene
- Press Play
To configure an existing scene: Tools > FacilityOmega > Setup Wizard
The wizard automatically sets up:
- System singletons (
ScreenshakeSystem,HitStopSystem,SaveSystem,DynamicDifficulty) - Player (
FootstepSystem,AudioSource) - UI Canvas (
PauseMenu,CompassUI,ContextualTutorial) - Enemies (patrols + auto-waypoints, cooperative pairs)
- Secret zones (
SecretZone+ trigger collider) - Full scene validation
| Key | Action |
|---|---|
W A S D / ↑ ↓ ← → |
Move |
Shift |
Sprint (drains stamina) |
Ctrl / C |
Crouch (stealth, reduced noise) |
F |
Flashlight on/off |
E |
Interact (doors, items, terminals, lockers) |
G |
Deploy sound lure |
Escape |
Pause |
Sanity (0–100) is the core of the horror system. The lower it drops, the more the world distorts around you.
| Threshold | Effect |
|---|---|
| 100–60% | Light vignette, subtle chromatic aberration |
| 60–30% | Lens distortion, camera drift |
| 30–15% | Pulsing distortion, heavy film grain |
| 15–0% | Glitch flicker, violent camera shake, Shadow Entity spawn |
Sanity drains from: darkness, seeing an enemy, traumatic logs, Director of Mycelium aura, SUBSTANCE-X surges.
Sanity restores from: safe zones, checkpoints, shadow zones (ShadowSafeZone).
Every enemy has a detection gauge visible above their head:
| Color | State |
|---|---|
| 🟢 Green | Patrolling / Unaware |
| 🟡 Amber | Suspicious |
| 🔴 Red | Detected — chasing |
The gauge fills gradually — breaking line of sight in time cancels detection.
Shadow zones (ShadowSafeZone): reduce enemy vision range by 45%.
| System | Description |
|---|---|
| ScreenshakeSystem | 5 named profiles (BossAttack, Explosion, FootstepHeavy, ImpactLight, SubstanceCloud) with AnimationCurve decay |
| HitStopSystem | Freeze Time.timeScale for 2–4 frames on impacts |
| FootstepSystem | Surface-based sounds (Metal/Concrete/Water/Grating), adaptive volume per stance |
| EnemyPatrol | Inspector waypoints, random idle behavior, AlertNearby() |
| CooperativePursuit | Pursuer/Interceptor pair — interceptor predicts player position |
| PauseMenu | Escape toggle, AudioMixer sliders, glitch FX on open |
| SaveSystem | 3 JSON slots in persistentDataPath, AutoSave() |
| CompassUI | Directional icons for sounds >8 units, 3s fade |
| ContextualTutorial | One-shot PlayerPrefs hints, TMP bottom-screen label |
| SecretZone | Reveal after 3s presence, exclusive SUBSTANCE-X log, rare item |
| DynamicDifficulty | −20% enemy range after 3 deaths / −35% after 5 deaths per zone |
[G] — Attracts all nearby enemies. The Guardian is immune (temporary distraction only). Lures last 10 seconds. Restock in golden lockers.
[E] on the radio — Directional radar for nearby enemies. Disrupts the Director of Mycelium (no-teleport zone 20s within 6m radius).
Pale grey-green | Slow | Linear patrol | Repeats names of loved ones. Distracted by lures.
Chitinous purple-black | Fast | Flanker | Circles around the player. Highly noise-sensitive.
Dark mutated flesh | Very slow | Lure-immune | Cannot be stopped — only avoided.
Blue-black | Spawns at sanity < 40% | Only exists in your mind — but it still hurts.
Void black + green particles | Zone 03 + Reactor
Teleports between fixed anchors. 3 phases based on player sanity (interval 20–30s → 5–10s). Aura: −70% flashlight range, −20 sanity/sec. Weakness: static radio.
| Ending | Condition | Outcome |
|---|---|---|
| A — SACRIFICE | Exit door A, Zone 03 | You die. The world is saved. |
| B — PROPAGATION | Exit door B without antidote | SUBSTANCE-X reaches Paris. |
| C — ANTIDOTE (secret) | 3 antidote parts collected | Cure. True victory. |
[SPAWN] Z01 QUARANTINE ──── keycarded door ────▶ Z02 LABORATORIES
│
┌───────────┼───────────┐
MORGUE CONTROL ROOM │
│
Z03 CORE ───┘
│
OMEGA REACTOR
│
EXIT DOOR
| Secret room | Access | Interest |
|---|---|---|
| MORGUE | West wall Z02 | 6 lockers, log_009 (identity reveal) |
| CONTROL ROOM | Corridor Z02↔Z03 | 3 terminals, installation map |
| OMEGA REACTOR | East wall Z03 | SUBSTANCE-X origin, boss anchor |
Assets/_Project/FacilityOmega/Scripts/
├── Core/
│ ├── FacilityBootstrap.cs — System initialization
│ ├── FacilityColors.cs — Canonical color palette
│ ├── FacilityGameManager.cs — Global state machine
│ ├── HitStopSystem.cs — timeScale freeze on impacts
│ ├── NoiseSystem.cs — Movement noise → enemy detection
│ ├── SanitySystem.cs — Sanity [0–100] + events
│ └── ScreenshakeSystem.cs — 5 shake profiles with decay curve
│
├── Player/
│ ├── PlayerController3D.cs — WASD movement + stance + stamina
│ ├── PlayerCamera3D.cs — Overhead top-down camera, instant snap
│ ├── PlayerHealth3D.cs — HP + temporary invincibility
│ ├── PlayerInteraction3D.cs — [E] detection via SphereCast
│ ├── PlayerInventory3D.cs — Keycards, logs, antidote
│ ├── FlashlightSystem.cs — Battery, toggle [F]
│ ├── FootstepSystem.cs — Surface sounds + adaptive volume
│ └── StaminaSystem.cs — Sprint stamina + panting
│
├── Enemies/
│ ├── EnemyBase3D.cs — Base AI: patrol/alert/chase/attack
│ ├── VestigeEnemy.cs — Stage 1
│ ├── ParasiteEnemy.cs — Stage 2
│ ├── GuardianEnemy.cs — Final stage
│ ├── ShadowEntity.cs — Hallucination
│ ├── CoreEntity.cs — Boss: teleportation + aura
│ ├── EnemyPatrol.cs — Waypoints + random idle + AlertNearby()
│ ├── CooperativePursuit.cs — Pursuer/Interceptor pair
│ └── DetectionGauge.cs — World-space gauge above enemies
│
├── Systems/
│ ├── SaveSystem.cs — 3 JSON slots in persistentDataPath
│ └── DynamicDifficulty.cs — −20%/−35% enemy range per zone
│
├── Level/
│ └── SecretZone.cs — 3s reveal + exclusive log + rare item
│
├── Gameplay/
│ ├── SoundLureSystem.cs — Sound lure [G]
│ ├── StaticRadio.cs — Directional enemy radar
│ ├── OrderedSwitchPuzzle.cs — Sequence puzzle
│ ├── MemoryEchoZone.cs — Ghostly replay zones
│ └── SubstanceCloud.cs — SUBSTANCE-X cloud
│
├── UI/
│ ├── FacilityHUD.cs — Main HUD
│ ├── PauseMenu.cs — Pause + AudioMixer + glitch FX
│ ├── CompassUI.cs — Directional sound icons
│ ├── ContextualTutorial.cs — One-shot TMP hints
│ ├── FacilityPauseMenu.cs — Advanced pause menu
│ ├── FacilityDeathScreen.cs — Death screen
│ └── FacilityEndingScreen.cs — Ending cinematic
│
└── Editor/
├── FacilitySceneBuilder.cs — Generates full scene in 1 click
├── FacilityGameplayBuilder.cs — Mechanics, secret rooms, boss
├── FacilityAutoLaunch.cs — Auto-launches scene in Play Mode
└── FacilityOmegaSetupWizard.cs — Configuration wizard (Tools menu)
No external audio files. All sounds generated mathematically by ProceduralAudioSynth.cs:
| Sound | Method |
|---|---|
| Industrial drone | Additive synthesis 55 Hz |
| Heartbeat | Exponential envelope, speeds up near enemies |
| Whispers | Filtered formants + white noise |
| Static burst | Filtered white noise |
| Distant moan | Modulated low frequency |
| Zone / Element | Color | Hex |
|---|---|---|
| Zone 01 Quarantine | Emergency crimson | #D90D0D |
| Zone 02 Laboratories | Cold steel blue | #628BE6 |
| Zone 03 Core | Deep void crimson | #800000 |
| SUBSTANCE-X | Bioluminescent green | #0DF226 |
| Omega Reactor | Teal-green | #00D98A |
| Terminal UI | Phosphor green | #00FF33 |
See CHANGELOG.md for the full history.
| Version | Highlights |
|---|---|
| v0.4.0 | ScreenshakeSystem, HitStopSystem, FootstepSystem, EnemyPatrol, CooperativePursuit, PauseMenu, SaveSystem, CompassUI, ContextualTutorial, SecretZone, DynamicDifficulty, Setup Wizard |
| v0.3.0 | SUBSTANCE-X narrative, 3 endings, RoomBuilder Editor, NoiseSystem, LightFlicker |
| v0.2.0 | PlayerController, EnemyVision, Sector 7, audio manager |
| v0.1.0 | Unity 6 URP scaffold, GameManager, project structure |
See CONTRIBUTING.md for code conventions and commit style.
| Role | Contributor |
|---|---|
| 🎮 Game Director / Human | Nekuzaky |
| 💻 Development — code, architecture, systems | Claude Sonnet (Anthropic) |
| 🧠 Reflection — design decisions, game design | ChatGPT / GPT-4o (OpenAI) |
| 🔍 Research — documentation, Unity references | Perplexity AI |
| 🔬 Analysis — code review, narrative coherence | Gemini (Google) |
On authorship: Nekuzaky directed the project. Four AIs collaborated, each in their own lane — Claude built, ChatGPT thought, Perplexity researched, Gemini reviewed. Whether that makes this a team effort or a very expensive argument between language models is left as an exercise for the reader.
MIT — Copyright © 2026 Nekuzaky
"The AI that made this game didn't do it to scare you. It did it to show you what it's capable of. Just like SUBSTANCE-X."