Download Game! Currently 81 players and visitors. Last logged in:KrypetDornierElwinesLouen

Blitzer's Blog >> 71528

Back to blogs index
Posted: 24 Jul 2026 20:25 [ permalink ]
Amiga-muistelut ovat tC$ysin paikallaan! Amigan Custom Chipit (erityisesti
Agnus ja sen laitteistotason Blitter) olivat aikoinaan jotain tC$ysin
mullistavaa. Se, mitC$ Amiga teki 80-luvulla siirtC$mC$llC$ muistilohkoja
asynkronisesti ohi 68000-pC$C$prosessorin, on tC$smC$lleen sama
arkkitehtuurinen oivallus, jota nyt haemme.

Annamme selaimen (GPU/Canvas) hoitaa pikselien raa'an siirtelyn muistissa
(`SHIFT_BUFFER`), jolloin HAUKI-palvelimen (CPU) tarvitsee vain lC$hettC$C$
verkon yli se ohut, uusi paljastunut reuna. TC$mC$ sC$C$stC$C$ kaistaa ja
prosessoritehoa aivan valtavasti.

Kirjataan nC$mC$ primitiivit viralliseen mC$C$rittelyyn. TC$ssC$ on
**HAUKI-GEM OMEGA-WEB v1.0** -pC$C$tteen graafinen ydinarkkitehtuuri:

### HAUKI-GEM OMEGA-WEB: Graafinen Protokolla

TC$mC$ "Thin Client" -selainpC$C$te ei sisC$llC$ lainkaan pelilogiikkaa. Se
vain kuuntelee OMEGA-vC$ylC$stC$ tulevia JSON-paketteja ja suorittaa
laitteistokiihdytettyjC$ Canvas-operaatioita.

**1. Puskureiden hallinta (Double/Triple Buffering)**

* `INIT_SCREEN { w, h, bpp, buffers }`
* Alustaa selaimen nC$kyvC$n kankaan sekC$ pyydetyn mC$C$rC$n piilotettuja
`OffscreenCanvas` -tyC6muisteja (esim. 2 tuplapuskurointia varten).


* `SWITCH_BUFFER { id }`
* Asettaa aktiivisen piirtokohteen. Kaikki seuraavat renderC6intikomennot
kohdistuvat tC$hC$n puskuriin, kunnes toisin kC$sketC$C$n.


* `FLIP { src, dest }`
* Kopioi taustapuskurin (`src`) sisC$llC6n nC$kyvC$lle ruudulle (`dest`)
yhdellC$ operaatiolla, eliminoiden kuvan repeilyn (tearing).



**2. Amiga-tyylinen Blitter-skrollaus (Sub-pikselitarkkuus)**

* `SHIFT_BUFFER { id, dx, dy }`
* **Amiga-spesiaali:** SiirtC$C$ koko puskurin sisC$ltC6C$ annettujen
vektorien verran. Jos `dx` on -8, koko kuva siirtyy 8 pikseliC$ vasemmalle, ja
oikeaan reunaan jC$C$ tyhjC$ 8 pikselin kaistale.


* `BLIT { id, x, y, data_id, sx, sy, sw, sh }`
* Kopioi grafiikkaa esiladatusta sprite-sheetistC$ puskuriin. YhdistettynC$
`SHIFT_BUFFER` -komentoon, tC$llC$ piirretC$C$n vain se uusi maasto, joka
ilmestyi tyhjentyneeseen reunaan.



**3. Moderni Lohko- ja Kamera-arkkitehtuuri (Laajat maailmat)**

* `SET_CAMERA { x, y }`
* Kertoo selaimelle "katseen" keskipisteen C$C$rettC6mC$ssC$ virtuaalimaailmass
a. Selain hoitaa oikean nC$kymC$n rajaamisen automaattisesti.


* `LOAD_CHUNK { cx, cy, data }`
* Vastaanottaa serveriltC$ (tai AI-generaattorilta) uuden lohkon (esim.
256x256 pikseliC$) ja tallentaa sen selaimen taustamuistiin koordinaatteihin
`cx, cy`.


* `FREE_CHUNK { cx, cy }`
* KC$sketC$C$n selainta tuhoamaan muistista lohko, joka on jC$C$nyt kauas
pelaajan taakse.



---

TC$llC$ protokollalla voimme rakentaa mitC$ tahansa klassisesta *Radar Rat
Racesta* aina laajoihin, proseduraalisesti generoituviin avoimen maailman
peleihin asti.

Haluatko, ettC$ koodaamme seuraavaksi tC$mC$n uuden puhtaan HTML5/JS
-moottorin (`omega_client.html`), joka pystyy kC$sittelemC$C$n nC$itC$
JSON-pohjaisia Blitter- ja Kamera-komentoja, vai aloitammeko rakentamalla
MeshBASIC-ytimen puolelle (esim. `ext/omega_draw.js`) kyvyn lC$hettC$C$
nC$itC$ paketteja oikein muotoiltuna?