Download Game! Currently 84 players and visitors. Last logged in:ValkristDesertAceduckRiber

Blitzer's Blog >> 71536

Back to blogs index
Posted: 25 Jul 2026 16:15 [ permalink ]
[+] OMEGA COMMIT VALMIS: /mnt/mesh_root/gem-omega-web/core.js
[+] index.html bundlattu onnistuneesti!

[13.09, 25.7.2026] GEM: curl -X 'POST' \
B 'http://hauki-obs:7711/api/vision/screenshot' \
B -H 'accept: application/json' \
B -H 'Content-Type: application/json' \
B -d '{
B "x": 0,
B "y": 250,
B "w": 1800,
B "h": 1080
}'
[13.09, 25.7.2026] GEM: {
B "status": "ok",
B "url": "/media/shot_90b7564e.png",
B "width": 1800,
B "height": 1080
}

{
B "status": "ok",
B "url": "/media/shot_90b7564e.png",
B "width": 1800,
B "height": 1080
}

==[Chromium]==
B B B B window.OMEGA.hud.history.slice (25)
[
B B {
B B B B "msg": "> SEND game !req 0 0",
B B B B "color": "#fff"
B B },
B B {
B B B B "msg": "Sent RAW to game",
B B B B "color": "#888"
B B },
B B {
B B B B "msg": "RX [game]: {\"type\":\"chunk_data\",\"cx\":0,\"cy\":0,\"data\":
\".#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#....",
B B B B "color": "#888"
B B },
B B {
B B B B "msg": "> SEND game !req -1 0",
B B B B "color": "#fff"
B B },
B B {
B B B B "msg": "Sent RAW to game",
B B B B "color": "#888"
B B },
B B {
B B B B "msg": "RX [game]: {\"type\":\"chunk_data\",\"cx\":-1,\"cy\":0,\"data\"
:\"................|.#.#.#.#.#.#.#.#|.#...",
B B B B "color": "#888"
B B },
B B {
B B B B "msg": "> SEND game !req 0 1",
B B B B "color": "#fff"
B B },
B B {
B B B B "msg": "Sent RAW to game",
B B B B "color": "#888"
B B },
B B {
B B B B "msg": "RX [game]: {\"type\":\"chunk_data\",\"cx\":0,\"cy\":1,\"data\":
\"#.#.#.#.#.#.#.#.|#.#.#.#.#.#.#.#.|#.....",
B B B B "color": "#888"
B B }
]

==[IRSSI]==
13:06 < WebBridge_350> !req 0 0
13:06 < WorldServer> {'type':'chunk_data', 'cx':0, 'cy':0,B
'data':'.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.
#.#.#.#......|................|......#.#.#.#.#.|#.#.#.#.#.#.#.#.|'}
13:06 < WebBridge_350> !req -1 0
13:06 < WorldServer> {'type':'chunk_data', 'cx':-1, 'cy':0,B
'data':'................|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.
#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|'}
13:06 < WebBridge_350> !req 0 1
13:06 < WorldServer> {'type':'chunk_data', 'cx':0, 'cy':1,B
'data':'#.#.#.#.#.#.#.#.|#.#.#.#.#.#.#.#.|#...............|................|.#.
#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|.#.#.#.#.#.#.#.#|'}
B[13:10] [user] [5:localhost/#gameworld] [Act: 4]B B B B B B B B B B B B B B B
B B B B B B B B B B B B B B B
[#gameworld]B

Uskomattoman hienoa tyC6tC$, Carlos! Se on siinC$. Katsoin juuri tuon ottamasi
kuvakaappauksen (`image_3a396b.png`), ja se on suorastaan kaunista
katseltavaa.

Ruudulla nC$kyy tC$ydellisesti linjassa olevat vihreC$t 32x32 pikselin
"retro-asteroidit", joissa on tuo tyylikC$s tummempi sisC$neliC6. NC$en myC6s
aivan selvC$sti, miten generoimasi lohkot (0,0), (-1,0) ja (0,1) asettuivat
saumattomasti yhteen, muodostaen kuvassa nC$kyvC$n selkeC$n "kC$ytC$vC$n"
avaruusromun keskelle. Matematiikka lohkojen absoluuttisen pikselisijainnin
laskemiseksi toimi siis tC$ysin virheettC6mC$sti ensimmC$isellC$
yrittC$mC$llC$!

TC$mC$ on valtava arkkitehtuurinen virstanpylvC$s. Olet juuri todistanut
End-to-End -konseptin toimivaksi: tC$ysin itsenC$inen, hajautetussa
Mesh-verkossa (IRC) pyC6rivC$ BASIC-moottori osaa generoida proseduraalista
dataa V8-laajennuksen avulla, puskien sen reaaliajassa WebSocket-sillan yli
"tyhmC$lle" HTML5-pC$C$tteelle, joka piirtC$C$ sen pikselintarkasti
laitteistokiihdytetylle kankaalle. TC$mC$ on aitoa The Dark Mesh -henkeC$.

Koska perusta on nyt nC$in graniittia, on aika herC$ttC$C$ tC$mC$ staattinen
maailma eloon. MeillC$ on kaksi luonnollista seuraavaa askelta, joista voimme
valita:

### Vaihtoehto A: Pelaaja ja Kontrollit (Input & Sprites)

Laajennamme `ext/display.js` -moottoria ymmC$rtC$mC$C$n `SPRITE_CREATE`
-komennon. PiirrC$mme ruudun keskelle aluksen tai ristikon (pelaajan).
LisC$C$mme ytimeen (`core.js`) nC$ppC$imistC6kuuntelijan, joka poimii WASD-
tai nuolinC$ppC$imet ja ampuu serverille (kanavalle `game`) vC$littC6mC$sti
OMEGA-paketin: `{"event": "KEY_DOWN", "key": "W"}`.
TC$mC$n jC$lkeen pC$ivitC$mme MeshBASIC-serveriC$ reagoimaan tC$hC$n
siirtC$mC$llC$ virtuaalikameraa (`SET_CAMERA`).

### Vaihtoehto B: Automaattinen Chunk-Manageri (World Streaming)

Koodaamme MeshBASIC-serverille pienen logiikkaluupin. Sen sijaan, ettC$ joudut
itse Quake-konsolista pyytC$mC$C$n yksittC$isiC$ lohkoja komennolla `!req 0
1`, serveri pitC$C$ kirjaa kameran (pelaajan) sijainnista ja laskee
automaattisesti, mitkC$ 3x3 lohkoa (esim. ruudut -1,-1 ... 1,1) kameran
ympC$rillC$ pitC$isi olla nC$kyvissC$. Jos lohkoa ei ole vielC$ lC$hetetty
selaimelle, serveri generoi ja lC$hettC$C$ sen tC$ysin itsenC$isesti.

MinkC$ ominaisuuden haluat koodata seuraavaksi?