Download Game! Currently 77 players and visitors. Last logged in:SerkeiiBrundirMalosRammon

Blitzer's Blog >> 71560

Back to blogs index
Posted: 27 Jul 2026 11:32 [ permalink ]
Saan tC$stC$ erinomaisen hyvC$n kopin! TC$mC$ ei ole pelkkC$ ominaisuuspC$ivity
s, vaan kokonaisen hajautetun kC$yttC6jC$rjestelmC$n  todellisen "Dark Meshin"
 arkkitehtuuridokumentti. Arkkitehtuurina tC$mC$ on uskomattoman elegantti,
koska se erottaa **tilan (GEMSPACE)** ja **kuljetuksen (GEMROUTER)** tC$ysin
toisistaan, aivan kuten modernit mikropalveluarkkitehtuurit tai edistyneet
P2P-verkot tekevC$t.

TC$ssC$ on analyysini konseptiesi vahvuuksista ja siitC$, miten ne asettuvat
kC$ytC$ntC6C6n.

### 1. Universaali GEMSPACE (Tila ja Data)

TC$mC$ on nerokas tapa kC$sitellC$ hajautettua tilaa. Se, ettC$ GEMSPACE on
isC$ntC$riippumaton (host-agnostic) in-memory -avaruus, mahdollistaa sen
ajamisen missC$ vain: selaimessa, Node.js-taustapalvelimessa tai jopa
rajoitetummassa ympC$ristC6ssC$.

* **Tietotyyppien erottelu:** Ajatuksesi erottaa JSON-pohjaiset viestit ja
kiinteC$n koon bittivirrat (fixed-size-bitstream) on kriittinen.
Pascal-tyylinen binC$C$riserialisointi on C$C$rimmC$isen tehokasta nopeassa
pelidatassa (kuten Jupiter Landerin koordinaatit), kun taas JSON on
tC$ydellinen monimutkaisemmalle metapuhelulle (esim. pelin perustamisen
ilmoitukset).
* **Uniikki ID -hierarkia:** Host-ID + Local-ID + Stream-ID on pomminvarma
tapa vC$lttC$C$ nimiavaruuksien (namespace) tC6rmC$ykset globaalissa verkossa.

### 2. GEMROUTER (Hermoverkko ja Reititys)

GEMROUTER toimii tC$ydellisenC$ abstraktiokerroksena (OSI-mallin
kuljetuskerros) GEMSPACE-instanssien vC$lillC$.

* **Promiscuous Mode vs. Filtered:** TC$mC$ on resurssienhallinnan kannalta
elintC$rkeC$C$. Selain-node ei voi eikC$ sen pidC$ kuunnella koko globaalia
palopostia, vaan ainoastaan tilaamiaan aiheita (esim. `#jupiterlander`).
* **Reply-to ja Asynkroninen ACK:** TC$mC$ tekee epC$luotettavista verkoista
(kuten UDP tai ruuhkainen IRC) luotettavia. Kun jokaisella paketilla on
jalanjC$lki ja `reply-to` -osoite, voimme rakentaa TCP:n kaltaisia
luotettavuusmekanismeja lC6yhC$n verkon pC$C$lle.
* **Elinkaari (TTL / Heartbeat):** TC$mC$ oli ehdotuksesi paras yksittC$inen
oivallus. Hajautetuissa verkoissa "haamunodet" (kuolleet prosessit, joita
yritetC$C$n edelleen reitittC$C$) tukkivat verkon nopeasti. Jos pelisessio
ilmoittaa elinkaarekseen 30 minuuttia, ja lC$hettC$C$ heartbeatin 25 minuutin
kohdalla, GEMROUTERit osaavat pitC$C$ reititystaulunsa puhtaana tC$ysin
automaattisesti ilman raskasta keskitettyC$ valvontaa.

### 3. Semi-Julkinen Backbone ja Jupiter Lander -KC$yttC6tapaus

TC$mC$ tekee `x-mesh-basic`:stC$ "Plug and Play" -kokemuksen.

Jos tulkkiin on sisC$C$nrakennettu (kovakoodattu tai oletuskonfiguraationa)
pC$C$sy esimerkiksi `hauki` IRC-palvelimelle porttiin 6667 tai tiettyyn
ilmaiseen GCP Pub/Sub -aiheeseen, kynnys moninpelin tai hajautetun klusterin
pystytykseen putoaa nollaan.

**Jupiter Landerin skenaario toimii tC$llC$ arkkitehtuurilla saumattomasti:**

1. **Boot & Discovery:** Peli kC$ynnistyy, luo GEMSPACEn (elinkaari: 15 min),
yhdistC$C$ GEMROUTERin backboneen ja huutaa: `{"topic":"#games",
"action":"host", "game":"jupiter_lander", "reply_to":"gem-xyz-123"}`.
2. **High Scores (Key/Val):** Peli tekee pyynnC6n globaaliin verkkoon:
`{"topic":"#jupiterlander_scores", "action":"get_top_10"}`. Muut nodet, joilla
on tC$mC$ taulu, vastaavat.
3. **Co-op / Spectator (Stream):** Kun toinen pelaaja liittyy, heidC$n
GEMROUTERinsa kC$ttelevC$t. TC$mC$n jC$lkeen Jupiter Lander avaa kiinteC$n
bittivirran (streamin), johon tyC6nnetC$C$n aluksen koordinaatit 16
millisekunnin vC$lein puhtaana binC$C$ridatana.

---

TC$mC$ konsepti on tC$ysin toteutettavissa nykyisten kokeilujemme (kuten
aiemmin rakentamamme Pub/Sub -rakenteen) pC$C$lle.

Kysymys kuuluukin: Haluatko, ettC$ aloitamme tC$mC$n rakentamisen **GEMSPACE:n
paikallisten tietorakenteiden ja streamien mC$C$rittelystC$** (datakerros),
vai koodaammeko ensin **GEMROUTER:in kC$ttely- ja elinkaarilogiikan
(Heartbeat/TTL)** kC$yttC$en tuota olemassa olevaa IRC/PubSub
-infrastruktuuria (reitityskerros)?