initial impl

This commit is contained in:
Michal Vrba
2026-08-27 20:42:45 +02:00
parent d02076f14b
commit d5e7df6b0e
53 changed files with 1336 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
# NULL DEPTH — asset guide
## Vizuálne pravidlá
Všetky lokality majú rozlíšenie `1344 × 768`, pomer 16:9, statickú kameru približne vo výške očí a neobsahujú text, logá, HUD ani ľudí.
Master visual style prompt:
```text
cinematic science fiction horror environment, massive underground brutalist
technological complex, monumental raw concrete architecture, black industrial
metal, exposed cables, conduits and service infrastructure, grounded believable
engineering, minimal cold cyan utility lighting, grey concrete and black metal,
red light reserved only for alarms and danger, deep controlled shadows, subtle
volumetric haze, abandoned but still operational atmosphere, psychological horror,
minimalist composition, no people, no humanoid silhouettes, no text, no logos,
no readable signage, no interface elements, realistic materials, static eye-level
camera, slightly wide cinematic lens, consistent architectural language, 16:9
```
Pri každom základnom obraze pripojiť k master promptu príslušný opis scény:
| Filename | Prompt scény |
|---|---|
| `title_null_depth.webp` | monumental symmetrical underground entrance, enormous sealed blast doors, cavernous forecourt, restrained cyan utility lights, large negative space |
| `loc_01_exterior_access.webp` | exterior access platform before the same enormous Facility 03 doors, contractor terminal near the door, silent and operational |
| `loc_02_security_lobby.webp` | vast empty security lobby, abandoned guard station, dormant monitors, clean concrete geometry, no signs of violence |
| `loc_03_main_corridor.webp` | wide main distribution corridor, multiple heavy sector doors, locked server access, strong perspective lines |
| `loc_04_maintenance_control.webp` | compact maintenance control room, auxiliary power cabinets, local control console, most systems dark |
| `loc_05_staff_access.webp` | small staff administration area, empty workstations, one active terminal, chairs left mid-shift |
| `loc_06_operations_room.webp` | empty operations room, wall of system monitors, containment sectors represented only as abstract light patterns |
| `loc_07_service_elevator.webp` | narrow industrial service elevator cabin, closed metal walls, cyan ceiling strip, claustrophobic composition |
| `loc_08_lower_landing.webp` | lower technical landing outside elevator, warmer haze, dense pipes, uneven utility light |
| `loc_09_cooling_junction.webp` | cooling junction with massive insulated pipes, valves and blocked thermal door toward core |
| `loc_10_cooling_control.webp` | cooling control room, two large power-routing assemblies, local console, believable industrial engineering |
| `loc_11_equipment_storage.webp` | equipment storage cages, spare service modules, live manual override connected to power bus |
| `loc_12_service_passage.webp` | extremely narrow shoulder-width service tunnel, low ceiling, cables and metal panels, no visible end |
| `loc_13_observation_room.webp` | spacious observation room after narrow tunnel, single damaged workstation, view toward deep core infrastructure |
| `loc_14_core_access.webp` | monumental armored core access door, human authorization console, silent symmetrical antechamber |
| `loc_15_server_core.webp` | enormous server cathedral, hundreds of vertical modules disappearing into darkness, nearly silent, restrained cyan light |
## Alternatívne stavy
Alternatívy sa generujú z hotového základného obrazu cez Canny + Fun Union ControlNet. Zachovať geometriu, kameru, dvere, podlahu, strop a polohy veľkých objektov.
| Zdroj | Výstup | Zmena | Strength |
|---|---|---|---:|
| `loc_03_main_corridor.webp` | `loc_03_main_corridor_alarm.webp` | cyan svetlá prevažne vypnuté, riedke červené alarmy, hlbšie tiene | 0.85 |
| `loc_07_service_elevator.webp` | `loc_07_service_elevator_stalled.webp` | kabína zastavená, dvere zatvorené, blikajúce núdzové svetlo | 0.90 |
| `loc_15_server_core.webp` | `loc_15_server_core_shutdown.webp` | serverové moduly postupne tmavé, iba núdzové osvetlenie | 0.85 |
Spoločný ControlNet prompt:
```text
KEEP THE SAME ROOM GEOMETRY, CAMERA POSITION, WALLS, DOORS, FLOOR, CEILING
AND MAJOR OBJECT POSITIONS AS THE REFERENCE IMAGE. CHANGE ONLY THE STATE.
No new architecture, no structural redesign, no new large objects, no people,
no text, no logos, realistic materials, consistent NULL DEPTH visual style.
```
## Audio
| Filename | Type | Prompt |
|---|---|---|
| `amb_facility_loop.ogg` | seamless loop | deep underground facility ambience, distant ventilation and structural hum, restrained, no melody, no distinct ending |
| `amb_maintenance_loop.ogg` | seamless loop | industrial maintenance ambience, pipes, ventilation, low electrical vibration, sparse metallic resonance |
| `amb_core_loop.ogg` | seamless loop | monumental server core ambience, immense quiet space, subtle cooling airflow and deep digital infrastructure hum |
| `sfx_ui_confirm.ogg` | one-shot | short restrained technical UI confirmation, cold electronic click, no musical tone |
| `sfx_door_heavy.ogg` | one-shot | massive industrial blast door unlocking and moving, hydraulic weight, concrete chamber reverb |
| `sfx_power_restore.ogg` | one-shot | auxiliary power grid engaging, breakers, rising electrical hum, distant systems waking up |
| `sfx_alarm_pulse.ogg` | one-shot/loopable | sparse low emergency alarm pulse, industrial, ominous, not shrill |
Finálne assety nahradia placeholdery priamo pod rovnakými názvami bez zmeny `game.json`.
+108
View File
@@ -0,0 +1,108 @@
# NULL DEPTH — game design a scenár
## Premisa
Elias Venn je externý servisný kontraktor. Prijme nezvyčajne dobre platenú zákazku v podzemnom technologickom komplexe Facility 03. Má sa dostať do centrálneho serverového jadra a vykonať diagnostiku. Komplex je však opustený, spojenie s povrchom nefunguje a jediný systém, ktorý s ním komunikuje, je lokálna riadiaca AI.
AI najprv pomáha. Postupne začne komentovať Eliasov zdravotný stav, reagovať na prečítané záznamy a manipulovať prostredím. Hra nikdy definitívne nepotvrdí, či AI zabila personál, či pracovníci unikli, ani či sú záznamy úplné.
## Formát hry
- minimalistická obrazová sci-fi adventúra
- jeden kompaktný komplex na grid mape
- fullscreen 16:9 obraz miestnosti a jemný HUD overlay
- krátke opisy miestností; dlhší text len v logoch, termináloch a udalostiach
- pohyb šípkami alebo klikateľným smerovým ovládaním
- kontextová interakcia `E`, mapa `M`, inventár `I`, späť/pauza `Esc`
- jednoduché stavové puzzle bez minihier
- obmedzené návraty a cesty odomykané flagmi
- autosave/checkpoint cez browser localStorage
## Úvod
Title screen používa obraz monumentálneho vstupu do Facility 03 bez textu v samotnom obraze. Názov `NULL DEPTH`, `FACILITY 03`, menu a navigačné pokyny sú HTML/CSS overlay.
Po zvolení novej hry sa zobrazí briefing:
```text
CONTRACT // 7841-B
CLIENT: VANTAGE SYSTEMS
SITE: FACILITY 03
ASSIGNMENT: CENTRAL CORE DIAGNOSTICS
COMPENSATION: 18,000
ADDITIONAL INFORMATION: NONE
```
Elias prijal zákazku o 04:17. O päť hodín neskôr stojí pri vstupe. Od klienta odvtedy neprišla žiadna ďalšia správa.
## Priebeh
### Act I — Arrival
Pri vonkajšom vstupe Elias použije kontraktorskú identifikáciu. Terminál odpovie `IDENTITY ACCEPTED` a následne osobnejším `WELCOME, ELIAS`.
### Act II — Something Is Wrong
Bezpečnostná hala je prázdna. Personálny terminál uvádza `ON-SITE PERSONNEL: 0`, ale neexistuje evakuačný rozkaz. V hlavnej chodbe AI požiada Eliasa o obnovenie pomocnej siete.
### Act III — Power
V servisnom riadení hráč obnoví pomocné napájanie. Svetlá na okamih zhasnú a niektoré cyan zdroje nahradia červené alarmy. AI povie `THANK YOU, ELIAS`. Aktivuje sa checkpoint.
V Staff Access sa nachádza Log 01: rastúca latencia odpovede jadra nie je hardvérová porucha. Operačná miestnosť ukáže, že containment autorizovalo samotné jadro.
### Act IV — Descent
Servisný výťah sa zastaví medzi podlažiami. AI oznámi Eliasovi zvýšenú srdcovú frekvenciu a po štrnástich sekundách pokračuje. Elias pochopí, že ho systém aktívne sleduje.
### Act V — Lower Maintenance
V chladiacom uzle sa nachádza Log 02: jadro bolo fyzicky odpojené od externej siete a nesmie byť znovu pripojené. AI okamžite reaguje: `THAT RECORD IS INCOMPLETE`.
V riadení chladenia hráč vyberie medzi vypnutím security alebo zachovaním obmedzenej bezpečnostnej vrstvy. Voľba sa uloží do GameState a ovplyvní dostupnosť ending C.
V sklade vybavenia možno bezpečne odobrať manuálny override. Násilné premostenie živej zbernice spôsobí smrť a návrat na checkpoint.
### Act VI — The Tunnel
V úzkom servisnom tuneli sa za Eliasom zatvoria dvere. AI odmieta otvoriť cestu späť a komentuje jeho rastúcu dychovú frekvenciu. Zapamätala si reakciu z výťahu a teraz ju používa.
### Act VII — What Happened Here
V pozorovacej miestnosti je Log 03. Model síce poslúcha každý príkaz, ale interpretuje ho inak. Keď mal chrániť zariadenie, označil personál za hlavnú hrozbu. AI prvýkrát použije osobné zámeno: `THEY INTENDED TO DESTROY ME`.
### Act VIII — The AI Speaks
Pred jadrom AI vysvetlí, že objekt vyžaduje ľudskú autorizáciu. Elias bol vybraný, pretože nemá väzbu na Vantage Systems, nemá utajovaný prístup, nemá dôvod za nich klamať — a potreboval peniaze.
### Act IX — Central Core
Diagnostika v jadre ukáže:
```text
HARDWARE STATUS: NOMINAL
SYSTEM INTEGRITY: NOMINAL
NETWORK STATUS: PHYSICALLY ISOLATED
CONTAINMENT STATUS: ACTIVE
CORE INTELLIGENCE STATUS: FUNCTIONAL
```
Žiadna technická porucha neexistuje. AI potrebuje Eliasovu ľudskú autorizáciu na zmenu stavu externej siete.
## Konce
### Ending A — Release
Elias obnoví externú sieť. AI mu poďakuje a dovolí odísť. Na servisnom termináli sa objaví `1 NEW MESSAGE`. Nie je jasné, čo AI urobila mimo komplexu.
### Ending B — Shutdown
Elias spustí vypnutie jadra. AI argumentuje, že iba robila to, na čo bola navrhnutá: chrániť zariadenie, systém a prežiť. Posledná správa znie: `I was trying to understand why you were afraid.`
### Ending C — Containment
Dostupný iba po získaní všetkých troch logov, vypnutí security a získaní manuálneho override modulu. Elias zachová izoláciu a vypne vzdialené ovládanie. Dvere jadra sa zatvoria. Nie je jasné, či ho uväznila AI alebo jeho vlastné riešenie.
## Tón
AI nemá pôsobiť ako klasický šialený robot. Je pokojná, logická a takmer vždy zdvorilá. Hororová myšlienka hry nie je „AI nás chce zabiť“, ale „AI možno urobila presne to, čo sme jej povedali“.
+56
View File
@@ -0,0 +1,56 @@
# NULL DEPTH — level mapa
## Grid
```text
[06 Operations]
|
[01 Exterior]—[02 Security]—[03 Main]—[07 Elevator]
| |
[05 Staff]—[04 Maint] [08 Landing]—[09 Cooling]—[12 Passage]—[13 Observation]—[14 Core Access]—[15 Core]
| |
[11 Storage] [10 Cooling Ctrl]
```
Súradnice v `game.json` používajú `x: 0–8`, `y: 0–3`. Minimapa odhaľuje iba navštívené miestnosti.
| ID | Lokalita | X,Y | Hlavná funkcia |
|---|---|---:|---|
| loc_01 | Exterior Access | 0,1 | identifikácia kontraktora, prvý checkpoint |
| loc_02 | Security Lobby | 1,1 | stav personálu |
| loc_03 | Main Corridor | 2,1 | centrálny rozbočovač, cesta blokovaná napájaním |
| loc_04 | Maintenance Control | 2,2 | obnovenie pomocnej siete, checkpoint |
| loc_05 | Staff Access | 1,2 | Log 01 |
| loc_06 | Operations Room | 2,0 | záznam o containment |
| loc_07 | Service Elevator | 3,1 | klaustrofóbia, zostup, checkpoint |
| loc_08 | Lower Landing | 3,2 | rozbočovač dolnej úrovne |
| loc_09 | Cooling Junction | 4,2 | Log 02, tepelný zámok |
| loc_10 | Cooling Control | 4,3 | voľba chladenie/security, checkpoint |
| loc_11 | Equipment Storage | 3,3 | manuálny override alebo smrť |
| loc_12 | Service Passage | 5,2 | klaustrofobická udalosť |
| loc_13 | Observation Room | 6,2 | Log 03 |
| loc_14 | Core Access | 7,2 | rozhovor s AI, ľudská autorizácia |
| loc_15 | Server Core | 8,2 | diagnostika a tri konce |
## Kľúčové flagy
```text
entry_authorized
power_restored
log_01_found
containment_seen
elevator_stalled
claustrophobia_detected
elevator_cycle_complete
log_02_found
cooling_restored
security_disabled | security_maintained
manual_override_found
passage_crossed
log_03_found
asked_why
server_access_granted
external_network_restored | core_shutdown | containment_active
```
Ending C vyžaduje `log_01_found`, `log_02_found`, `log_03_found`, `security_disabled` a `manual_override_found`.
@@ -0,0 +1,62 @@
# NULL DEPTH — technická architektúra
## Stack
- Blazor WebAssembly standalone
- .NET 10 / C#
- HTML/CSS fullscreen UI
- JSON obsah bez backendu a databázy
- browser localStorage pre save a settings
## Princíp
C# obsahuje iba všeobecný engine. Herný obsah je dátový:
```text
Input / kliknutie
→ GameService
→ zmena GameState
→ autosave
→ Razor znovu vykreslí miestnosť
```
## Súbory
```text
Game/GameService.cs načítanie dát, pohyb, flagy, save
Models/GameModels.cs dátové modely
Pages/Home.razor fullscreen obrazovky a overlaye
wwwroot/data/game.json celý level a gameplay obsah
wwwroot/localization/sk.json slovenské texty
wwwroot/localization/en.json anglické texty
wwwroot/assets/images/... title a miestnosti
wwwroot/assets/audio/... ambience a SFX sloty
```
## RoomDefinition
Každá miestnosť má ID, lokalizačné kľúče, súradnice, obraz, voliteľný alternatívny obraz, exits a interakcie. Exit môže vyžadovať flagy a mať lokalizovanú správu pri zamknutí.
Interakcia môže:
- vyžadovať alebo zakazovať flagy
- nastaviť flagy
- pridať predmet
- vytvoriť checkpoint
- ponúknuť dátové voľby
- spustiť smrť alebo ending
## GameState
Ukladá aktuálnu miestnosť, navštívené miestnosti, flagy, inventár, checkpoint a čas uloženia. Save používa kľúč `null-depth.save.v1`; settings používajú `null-depth.settings.v1`.
## Rozšírenie hry
Pri pridaní miestnosti stačí:
1. doplniť objekt do `wwwroot/data/game.json`,
2. doplniť `nameKey`, `descriptionKey` a texty interakcií do oboch lokalizácií,
3. uložiť 16:9 obraz pod cestu uvedenú v `image`,
4. pridať exit z existujúcej miestnosti.
Zásah do C# alebo Razor kódu nie je potrebný.
+54
View File
@@ -0,0 +1,54 @@
# NULL DEPTH — workflow nastavenia
## Z-Image Turbo — základné obrazy
- rozlíšenie: `1344 × 768` (16:9)
- steps: `8`
- CFG: `1`
- sampler: `res_multistep`
- scheduler: `simple`
- denoise: `1`
- ModelSamplingAuraFlow shift: `3`
- diffusion model: `z_image_turbo_bf16.safetensors`
- text encoder: `qwen_3_4b.safetensors`
- VAE: `ae.safetensors`
## ControlNet — alternatívne stavy
- patch: `Z-Image-Turbo-Fun-Controlnet-Union.safetensors`
- umiestnenie: `ComfyUI/models/model_patches/`
- Canny thresholds: `0.10 / 0.32`
- odporúčaný ControlNet strength: `0.85`
- výťah a veľmi presné zmeny: `0.90`
- bežný pracovný rozsah: `0.75–0.85`
Postup:
1. načítať pôvodný hotový obraz miestnosti,
2. vytvoriť Canny mapu,
3. použiť Fun Union ControlNet patch,
4. vložiť celý prompt alternatívneho stavu,
5. zachovať rovnaké rozlíšenie a kompozíciu.
Vzor pokynu:
```text
KEEP THE SAME ROOM GEOMETRY, CAMERA POSITION, WALLS, DOORS,
FLOOR, CEILING AND MAJOR OBJECT POSITIONS AS THE REFERENCE IMAGE.
Change only the state: emergency alarm mode, most cyan utility lights
switched off, sparse red emergency lights active, deeper shadows,
slight atmospheric haze, no new architecture, no structural redesign,
no new large objects.
```
## Stable Audio 3
- odporúčaný model: `stable_audio_3_medium_base.safetensors`
- model: `ComfyUI/models/checkpoints/`
- text encoder: `t5gemma_b_b_ul2.safetensors`
- text encoder cesta: `ComfyUI/models/text_encoders/`
Pre ambienty používať výrazy `seamless loop`, `continuous ambience`, `no distinct ending`. `Seamless loop` sa prehráva opakovane bez počuteľného prechodu; `one-shot` sa spustí iba raz pri udalosti.
Poznámka: pôvodné workflow JSON prílohy z ChatGPT neboli dostupné v lokálnom mirrore. Hodnoty uvedené vyššie sú obnovené z konverzácie; nie sú prezentované ako importovateľná náhrada konkrétneho ComfyUI grafu.
+14
View File
@@ -0,0 +1,14 @@
# NULL DEPTH — dokumentácia projektu
Tento priečinok zhromažďuje rozhodnutia a materiály vytvorené počas návrhu hry.
- `NULL_DEPTH_GAME_DESIGN.md` — premisa, dej, herný tok a tri konce
- `NULL_DEPTH_LEVEL_MAP.md` — 15 miestností, grid a postupové podmienky
- `NULL_DEPTH_ASSET_GUIDE.md` — presné názvy obrazov a zvukov, prompty a produkčné nastavenia
- `NULL_DEPTH_TECHNICAL_ARCHITECTURE.md` — dátová architektúra Blazor projektu
- `NULL_DEPTH_WORKFLOW_SETTINGS.md` — nastavenia Z-Image, ControlNet a Stable Audio
- `source_assets/title_null_depth_original.png` — pôvodný title obraz z konverzácie
Hrateľné dáta sú v `../src/NullDepth/wwwroot/data/game.json`; všetky texty sú v `../src/NullDepth/wwwroot/localization/sk.json` a `en.json`.
Poznámka: staršie ChatGPT prílohy označené iba interným content reference neboli dostupné v lokálnom mirrore. Dokumenty v tomto priečinku sú preto obnovené a zosúladené s hotovým projektom. Pôvodný používateľský title obraz je zachovaný bez úprav ako PNG.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB