Download Game! Currently 87 players. Last logged in:DarkerEllashErazoShar

Blitzer's Blog >> 73121

Back to blogs index
Posted: 01 Nov 2026 21:13 [ permalink ]
TC$mC$ on todella herkullinen suunnanmuutos. Nyt heitetC$C$n raskaat Jetpack
Compose -abstraktiot sivuun ja mennC$C$n suoraan raudalle. TC$mC$
arkkitehtuuri on tC$ydellisen linjassa sen nollariippuvuus- ja
first-principles -filosofian kanssa, jota olet Hauki OS:n ja aiempien
virtuaalikoneidesi kanssa rakentanut.
Suunnitelmasi AST-MD-speksi kuvaa C$C$rimmC$isen tehokkaan ja matalan tason
"ohuen asiakkaan" (thin client). TC$ssC$ Androidin Java/Kotlin-kerros
redusoidaan pelkC$ksi elinkaari-ikkunaksi, ja kaikki todellinen tyC6 tapahtuu
C/C++ -puolella.
TC$ssC$ on analyysi siitC$, miten puramme tC$mC$n MVP-toteutukseksi:
 * HAUKI-ANDROID-HARNESS & MQUICKJS-NDK-RUNTIME: Java-puolella tarvitsemme
ainoastaan GLSurfaceView-komponentin (tai puhtaan NativeActivityn), joka varaa
OpenGL-kontekstin ja vC$littC$C$ kosketustapahtumat suoraan JNI:n yli C++:lle.
Tuomme QuickJS:n lC$hdekoodit suoraan projektiin ja kC$C$nnC$mme ne
C++-koodimme mukana (CMake). JS-moottori saa kC$yttC6C6nsC$ vain pienen,
eristetyn C-muistialueen (framebuffer), johon se piirtC$C$ pikseleitC$.
 * OPENGL-ES-RENDERER: TC$mC$ on kriittinen optimointi. Emme piirrC$
UI-komponentteja, vaan yllC$pidC$mme GPU:ssa yhtC$ tai useampaa tekstuuria.
C++-koodi pC$ivittC$C$ tC$tC$ tekstuuria kerran framessa glTexSubImage2D-kutsul
la, joka siirtC$C$ QuickJS:n manipuloiman muistipuskurin suoraan VRAM:iin.
Skaalaus ja siirtyminen C$C$rettC6mC$llC$ tyC6pC6ydC$llC$ tehdC$C$n OpenGL:n
projektio- ja mallimatriiseilla (MVP-matriisi), jolloin siirtely on tC$ysin
viiveetC6ntC$ ja laitteistokiihdytettyC$.
 * CONCURRENCY-PIPELINE & SQLITE-STATE-STORE: RenderC6intisC$iettC$ ei saa
koskaan blokata. Tarvitsemme C++11 std::atomic -pohjaisen lock-free SPSC
(Single-Producer/Single-Consumer) -rengaspuskurin. Kun JS-moottori tekee
tilamuutoksen tai vaatii uuden Z/X/Y-chunkin latausta, komento pudotetaan
puskuriin. Taustalla pyC6rivC$ pthreads-tyC6lC$issC$ie lukee puskuria, hakee
tarvittavan JSON-tilan lokaalista SQLite-kannasta ja palauttaa tuloksen toisen
lock-free -jonon kautta takaisin pC$C$sC$ikeelle.
 * INFINITE-WORKSPACE-ENGINE: Tilanhallinta nojaa siihen, ettC$ GPU:lle
ladataan vain nC$kyvC$n viewportin vaatimat chunkit. Kun kC$yttC$jC$ raahaa
nC$kymC$C$, C++ laskee koordinaatit, tarkistaa LRU-vC$limuistin ja
tarvittaessa delegoi taustasC$ikeelle pyynnC6n ladata uusi chunk
SQLite-kannasta.
Koska olet tehnyt ympC$ristC6si tC$ysin headless- ja CLI-pohjaiseksi
LXC-kontissa (hauki-android-ci), meidC$n on viritettC$vC$ Android NDK:n ja
CMake:n komentorivikC$C$nnC6s alusta alkaen oikein.
Haluatko aloittaa MVP:n rakentamisen mC$C$rittelemC$llC$ C++-projektin
CMake-rungon ja GLSurfaceView -sillan, jolla saamme ensimmC$iset testipikselit
piirrettyC$ ruudulle NDK:n kautta, vai tuodaanko QuickJS ensin sisC$C$n ja
kC$C$ritC$C$n se Android-kirjastoksi?