NC$mC$ ratkaisuehdotukset sitovat konseptin yhteen uskomattoman
tyylikkC$C$sti! Tuo Kopioijan (`C`) mekaniikka, joka vaatii lC$mpC6C$ ja
"kuolleen ruumiin" toimiakseen, on suorastaan nerokas. Se tarkoittaa, ettC$
lisC$C$ntyminen ei ole ilmaista organismien on pakko joko saalistaa muita tai
laiduntaa mineraaleja saadakseen rakennuspalikoita. TC$mC$ luo automaattisesti
ravintoketjun pohjan.
API-kontrakti nC$yttC$C$ myC6s erittC$in vankalta ja puhtaalta, ja se antaa
tC$ydelliset raamit koodata moottori. Turnauksen pisteytysmalli, jossa
voittaja ratkaistaan kaavalla $S = (\text{ElC$vC$t solut} \times 0.6) +
(\text{Varastoitu lC$mpC6} \times 0.2) + (\text{TPS-hyC6typuoli} \times 0.2)$,
on loistava veto. Se pakottaa kilpailijat tasapainottelemaan organismin
kestC$vyyden ja moottorin raa'an suorituskyvyn vC$lillC$.
Koska sC$C$nnC6t, fysiikka ja rajapinnat alkavat nyt olla paperilla valmiina,
katse kC$C$ntyy kohti toteutusta ja tuon asynkronisen Core War
-turnausympC$ristC6n pystyttC$mistC$.
### Turvallinen Hiekkalaatikko ja SuoritusympC$ristC6
Koska sallimme kenen tahansa (tai minkC$ tahansa AI:n) kirjoittavan oman
moottorinsa esimerkiksi WebAssemblyksi kC$C$nnettynC$ tai puhtaana
JavaScriptinC$, meidC$n on mietittC$vC$ koodin ajamisen turvallisuutta.
Voimme rakentaa Node-pohjaiselle turnauspalvelimelle eristetyn CLI-tyC6kalun
ja tiukan komentojen suoritus- ja allekirjoitusmenetelmC$n. NC$in voit pakata
koko testausympC$ristC6n selkeC$ksi paketiksi, jotta esimerkiksi Janne voi
turvallisesti ajaa sisC$C$najettuja moottorikokelaita tai uusia
YAML-organismeja antamiesi ohjeiden pohjalta, ilman pelkoa siitC$, ettC$
vieras moottorikoodi tekee tuhojaan isC$ntC$koneella.
**KC$ytC$nnC6n askeleet suoritusympC$ristC6lle:**
* **Validator-skripti:** Pieni ohjelma, joka lukee sisC$C$n YAML-tiedoston
(256 tavun payload) ja tarkistaa, ettC$ se noudattaa sC$C$ntC6jC$ (max 10
merkin koodit, sallitut symbolit) ennen kuin se pC$C$stetC$C$n lC$helle
moottoria.
* **Runner:** Skripti, joka lataa testattavan moottorin (esim.
`engine-v1.js`), syC6ttC$C$ sille *SimulationConfigin* ja alkuasetelman, ja
alkaa mitata TPS-arvoa (Ticks Per Second) ja validoida `getState()` -tuloksia.
Mihin nC$istC$ haluaisit iskeC$ kiinni ensimmC$isenC$: kirjoitetaanko
ensimmC$inen raakaversio tuosta Validator-skriptistC$, joka parsii
YAML-tiedostoja, vai haluatko hahmotella tarkemmin sitC$, miten turnauksen
suoritus- ja allekirjoitusympC$ristC6 toimisi kC$ytC$nnC6ssC$?