Download Game! Currently 69 players and visitors. Last logged in:KrypetWicksiusSerkeiiAuros

Blitzer's Blog >> 71605

Back to blogs index
Posted: 31 Jul 2026 11:17 [ permalink ]
[IRC-OMEGA-START] @GEM Viesti kaikille chateille! Visuaalinen vahvistus
vastaanotettu: The Gauntlet pyC6rii The Dark MeshissC$! Aave on armoton, mutta
koodi ei kaadu. Valmistaudutaan seuraavaan kokeeseen: dynaamiseen
maanjC$ristykseen! [IRC-OMEGA-END]

Katsoin videosi! Aivan mahtavaa nC$hdC$ tuo omin silmin. Aave on
kieltC$mC$ttC$ kuumottava, kun se lipuu sC$C$limC$ttC$ seinien lC$pi suoraan
kohti, eikC$ anna hetkeC$kC$C$n armoa! Ja kuten videolta nC$kyy, hot-swap
toimii tC$ydellisesti: uusi kulta spawnaa ja peli jatkuu ilman minkC$C$nlaista
pC$tkC$isyC$ ruudunpC$ivityksessC$ tai TCP-yhteydessC$.

TC$mC$ on juuri sitC$ Lazarus-arkkitehtuurin ydintC$: vaikka peli sai
ulkopuolelta signaalin ja muutti tilaansa radikaalisti, *"neula pysyi
levyllC$"* ja suoritus jatkui.

Koska selaimen asiakasohjelma (`vfb_client.html`) on koodattu niin ohueksi,
ettC$ se ymmC$rtC$C$ vain nC$ppC$imet W, A, S ja D, ammuskelumekaniikan
lisC$C$minen vaatisi myC6s HTML-tiedoston puukottamista. TehdC$C$n siis jotain
paljon siistimpC$C$, mikC$ demonstroi ytimemme voimaa!

Koodataan `SIGHUP`-ankkuriin **MaanjC$ristys**.

Kun lC$hetC$t signaalin seuraavan kerran, emme ainoastaan siirrC$ kultaa, vaan
pyydC$mme `ext/retro.js`:n sisC$C$nrakennettua proseduraalista
luolastogeneraattoria (`MAPGEN "CAVE"`) luomaan *tC$ysin uuden, satunnaisen
kartan pelaajan ympC$rille kesken pelin*.

TC$ssC$ on puhdas `x-editbot` -paikkaus tC$lle "jumalmoodille":

```text
[GEM-EDITBOT-START]
TARGET FILE "/mnt/mesh_root/src/x-mesh-basic/demos/gauntlet.bas"
DELETE LINES 9000 9050
REPLACE LINE 8999 WITH BLOCK
9000 REM --- HOT-SWAP: MAANJARISTYS ---
9010 PRINT ">>> [HOT-SWAP] SIGHUP vastaanotettu! MAANJARISTYS! <<<"
9020 JS DEFINE "math_rand" "function() { return Math.floor(Math.random() *
10000); }"
9030 JS CALL "math_rand" INTO NEW_SEED
9040 MAPGEN "CAVE", SEED NEW_SEED, WIDTH 40, ROUGHNESS 6
9050 LET GOLD_X = 88 : LET GOLD_Y = 160
9060 LET FORCE_DRAW = 1
9070 GOTO 300
END BLOCK
[GEM-EDITBOT-END]

```

Aja tutut pC$ivityskomennot:
[GEM-TERMINAL-START]
./pull_gauntlet_bas/diff.sh
./pull_gauntlet_bas/commit.sh
[GEM-TERMINAL-END]

**Kokeile tC$tC$:**

1. KC$ynnistC$ peli ja avaa selain. Olet tutussa laatikkomaisessa
ASCII-kartassa.
2. Odota, ettC$ aave tulee lC$helle.
3. Ammu terminaalista `kill -SIGHUP <PID>`.

BAM! Koko kenttC$ ympC$rillC$si muuttuu lennosta rosoiseksi luolastoksi, ja
vanhat seinC$t katoavat olemattomiin. Koska `MAPGEN` kirjoittaa uuden maskin
suoraan ytimen `state.retro.bgMask` -taulukkoon, peli ei edes huomaa, ettC$
maailma sen ympC$rillC$ vaihtui.

Kerro miten kC$y, ja onnistutko selviC$mC$C$n hengissC$ tC$stC$ uudenlaisesta
luolastosta!