Predogled: while True: learn()

Že ko sem prvič videl napovednik za to igro, me je zelo pritegnila. Po pravici povedano, pritegnil me je že sam naslov, ki jo zelo dobro povzame: while True: learn(). While True: v večini programskih jezikov pove, da naj se tisto, kar sledi, izvaja v neskončni zanki, learn() pa je klic funkcije učenja. Torej se bomo skozi celotno igro učili.


Razvojna ekipa: Luden.io
Založnik: Nival
Steam: http://store.steampowered.com/app/252490/
Napovednik: https://www.youtube.com/watch?v=P8lY9uiM-xo
Platforme: PC, Mac, Linux/SteamOS
Operacijski sistemi: Windows Vista +
Datum izida: 28. marec 2018
Cena: 6.99 €
Žanr: Simulacija

Testna različica: 0.1.20


Sama igra je sestavljena iz dveh načinov: kampanje (opravil) in izzivov (startups). Cilj igre je sortiranje vhodnih delčkov različnih oblik in barv, ki pridejo pomešani na vhodni del, s pomočjo različnih logičnih enot, ki so nam na razpolago. Najbolj osnovna enota je ločevalec, ki vrne eno barvo, ki jo določimo vnaprej, na prvi izhod, ostale pa na drugega. Pri vsakem izmed “ciljev” imamo napisanih nekaj stvari, na katere moramo paziti. Najpomembnejše je seveda to, kakšne delčke sploh smemo poslati tja. Poleg tega pa imamo še podatke o tem, kolikšen delež delčkov mora ustrezati tem pogojem ter najmanj koliko pravilnih moramo tja poslati pred iztekom časa.

Primer enostavne naloge

Da pa vse le ne bi bilo prelahko, ima vsaka logična enota tudi svoje omejitve: za obdelavo enega delčka potrebuje neko količino časa, ima omejeno količino prostih mest za čakajoče delčke, pa tudi vse enote nimajo 100 % natančnosti. Za določen nivo imamo na voljo le omejeno količino časa, ko pa ga opravimo, dobimo plačilo. Le-to pa ni konstantno, ampak je odvisno od tega, kako učinkovito rešitev smo našli. Vsaka sekunda obdelave podatkov ima namreč svojo ceno. Seveda, tudi če porabimo ves čas, ki smo ga imeli na voljo, še vedno dobimo kar lep kupček denarja, ki pa bi lahko bil še zajetnejši, če bi le našli boljšo rešitev danega problema.

Kaj kmalu ugotovimo, da s pomočjo podanih enot sploh ne moremo rešiti neke zagonetke zadosti hitro, zato nam igra ponudi novo enoto, to je paralelizator. S pomočjo te enote razdelimo vhodne podatke na dva dela, ki ju potem lahko vzporedno obdelamo (seveda lahko te podatke delimo še naprej, če tako želimo). Ta enota v primerjavi z drugimi dela zelo hitro, ampak ima eno še kar veliko slabost, saj nam vsaka kopija poveča skupno ceno izvajanja programa.

Pri dejanskem programiranju je eden izmed pomembnejših konceptov t. i. DRY oz. “Don’t Repeat Yourself” (Ne ponavljaj se.) Tudi tukaj to pride v poštev, saj lahko pri neki nalogi uporabimo rešitve prejšnjih nalog kot eno samo enoto. Pomembno je, da se – četudi lahko trenutno nalogo rešimo na enostaven, a neučinkovit način – malo bolj potrudimo in poiščemo učinkovitejši izhod, saj “lena” solucija čez čas morda ne bo več zadostovala. Kasneje gremo lahko tudi nazaj ter izboljšamo svoje rešitve, če se nam zdi, da smo našli boljšo.

Primer kompleksnejše naloge. Tukaj so uporabljeni tako paralelizatorji kot rešitve prejšnjih nalog.

Drugi način so tako imenovani izzivi. Tudi pri teh moramo rešiti nalogo enakega tipa kot pri kampanjskem načinu, s to spremembo, da se tukaj rešitev izvaja neprestano, zato moramo biti posebej pozorni na njeno dolgoročno učinkovitost. Ker se zahtevnost vhoda s časom naključno spreminja, se lahko zgodi, da nam solucija, ki je še nedavno tega delovala odlično, ne prinaša več dobička. Še huje, lahko imamo celo izgubo! Sedaj imamo dve možnosti: ali izboljšamo naš odgovor problema ali pa zapustimo izziv. V slednjem primeru ne bomo imeli niti dobička niti izgube, zato lahko to storimo kadarkoli, brez negativnih posledic.

Tukaj vidimo povzetek stanja enega izmed izzivov po približno enem tednu.

Z denarjem, ki si ga prislužimo, lahko v trgovini, poimenovani C-Bay (ime je parodija na popularno internetno trgovino eBay), nakupimo nove, posebne, logične enote, ki nam olajšajo določene naloge, ali pa boljšo strojno opremo, kar nam zniža stroške ter poveča hitrost delovanja enot. Pri delu pa nas z vrha monitorja opazuje tudi naš maček, ki mu lahko nakupimo nove podobe oz. obleke, a so slednje brez dejanske funkcionalnosti.


Zaključek

while True: learn() mi je zelo všeč ter je izpolnil vsa moja pričakovanja. Stopnje so čedalje težje, a je to stopnjevanje dovolj počasno, da se mu sledi brez večjih problemov. Ker je igra zaenkrat še v beta fazi, ima nekaj težav, ki pa bodo najverjetneje odpravljene še pred uradnim izidom igre. Dejstvo, da imam sam nekaj predznanja iz programiranja, mi je verjetno kar precej olajšalo samo igranje, a si mislim, da je tudi brez tega prav tako zabavna, če ne še bolj. Ker so nekateri nivoji mišljeni, da niso opravljeni s 100 % natančnostjo (in se jih tako tudi ne da opraviti), sem imel z njimi kot perfekcionist nekaj težav, a se je vse prej ali slej rešilo. Špil bi priporočal vsakemu, ki ga veseli logično razmišljanje ter reševanje miselnih problemov.

Vaša reakcija na članek?

🔥Popularno

🛎️ Sveže objave

PUSTI ODGOVOR

Prosimo, vnesite vaš komentar!
Prosimo, vnesite vaše ime