„Az összevisszaságban találd meg az egyszerűséget, a hangzavarban a harmóniát...”

CRT szimuláció 1k-ban

Az 1k demót itt találod. (Az 5. helyet csíptem meg vele a 74 nevezésből.)

Visszatérő téma a blogon a CRT megjelenítők emulációja szimulációja. Ennek egyik oka, hogy a régi dolgok visszanézése a mai monitorokon az eredetileg megálmodott képi világhoz képest nagyon különböző eredményt ad. A pixelek közötti tűéles határvonalak, a precíz színvilág, a scan lineok hiánya, a villódzásmentes, teljesen steril kép távol áll az eredeti élménytől. A másik ok Rihardo, akinek szintén szívügye ez a téma, és folyton ilyen témákkal nyaggat, miközben mindúntalan keresi a tökéletes szimulációt nyújtó megoldásokat.

Egy régi játék esetében, amit TV-s megjelenítsre találtak ki, a grafikusok tudatában voltak a képernyő sajátosságaival, és eszerint rajzoltak, vagyis belekalkulálták a CRT által nyújtott "effekteket". Ma már nagyon jó valós emulációk vannak, a legjobb ezek közül talán a micro64 által megvalósított hatás, amiben még az a bizonyos őrületbe kergető magasfrekvenciás hang is jelen van, ami a képernyő világosságával egyenes arányban egyre hangosabban sípol. Ez az a hang, ami alapján az utcáról meg lehet állapítani, hogy a ház előtt ahol épp sétálsz, be van-e kapcsolva a TV odabenn.

Ha nagyon közelről belenézünk egy régi TV képernyőjébe, akkor apró piros, zöld, kék csíkok láthatóak egymás mellett. Egy ilyen hármas alkot egyetlen pixelt. Ezek a csíkok világítanak különböző fényerővel, aszerint, hogy milyen színt kell megjeleníteni. Tehát igazából a képernyőn csak ez a három szín van jelen, megfelelően távolról nézve azonban azt a hatást kelti, mintha bármilyen szín ábrázolható volna.

Én épp ezt a hatást szerettem volna megvalósítani. Az egész mögött a logika annyi, hogy mivel a mai monitorokon úgyis olyan sűrűn vannak a pixelek egymás mellett, egy pixelt csupán egy ilyen szegmensnek szentelek. Tehát az első pixelen az eredeti színnek csak a piros színösszetevőjét ábrázolom, az azt követőn csak a zöldet, majd csak a kéket. Tehát három pixelt használok fel egyetlen pixel kirakásához. Magasságban ugyanígy, három pixel hosszú egy szegmens, hogy ne torzuljanak a kép arányai.

Kíváncsian vártam, hogy mi sül ki belőle. Feltöltöttem az első képet, egy C64-es játék képét, és az eredmény fantasztikus lett. Pontosan azt a hatást kaptam vissza, mint amit elméletben elképzeltem. Távolról nézve a kép látszik, kicsit szemcsésebben, az eredeti színeiben. Közelről viszont látni, hogy a kép csak piros, zöld és kék színből áll, és pusztán ezek közelsége miatt látható távolról úgy, hogy minden szín jelen van. De mivel még így, háromszorosan "lebutítva" is túl finom volt a monitorom felbontása (2560x1440), ezért a duplájára, vagyis hatra emeltem a lépésközt, tehát egy színszegmens 2 pixelcsíkból áll, és 6 pixel magas. Illetve csak öt, ugyanis a scan lineok hatását ezzel az egy feketén maradó alsó pixelsorral oldottam meg.

A régi TV képernyők felülete nem egyenes volt, hanem gömbölyű, középen kidomborodott. A mégjobb hatás érdekében ezt is megvalósítottam. Az elmélet itt is teljesen egyszerű, a képre egy átlátszó radial grádienst raktam, ami a kép sarkai felé érve egyre sötétedik. Már ez önmagában kelt valamennyi görbítéses hatást a sík képen, de a kegyelemdöfést a barrel distortion (hordótorzítás) effekttel együtt nyújtja. 1k-ba sűrítve nem volt egyszerű, de így a kép már valóban térbelinek tűnik, a közepe kidomborodik, a sarkai pedig távolinak tűnnek, aminek a hatását a fekete grádiens csak tovább növeli.

CRT szimulációKattints a képre az eredeti méretben való megjelenítéshez

Az elmélet annyira szépen működik a gyakorlatban, hogy a görbítés és a valós RGB szegmenses ábrázolás miatt még azok a fura körkörös jelenségek is megfigyelhetők a kép oldalain, amik a TV képernyő lefényképezésekor is láthatóak. Az 1k-ba még finom fényerő villogtatás, és egy kis zaj fért bele, hogy mégse teljesen stabil legyen a kép. Akartam még bele 50Hz-es képfrissítést idéző, szemet roncsoló effektust is, illetve a már említett 15625Hz frekvenciájú sípolást is, és bár remekül működtek, és sokat hozzáadtak az élményhez, de végül ember ellenes bűntettnek minősítettem ezeket, így a végső, 999 byteos programba nem kerültek bele.

Ja, és hogy miért 1k? Hát azért, mert idén is megrendezésre került a js1k demóverseny, amin már egyszer indultam, illetve én szeretem a dolgokat összekötni. Önmagában egy CRT szimuláció nem nagy szám. Úgy, ahogyan az 1k-s javaScript demó sem. Viszont ha kombináljuk a kettőt, akkor már érdemes a dolog a megtekintésre.

Az 1k-ba való belezsúfolás ismét jó pár napra elegendő agymunkát adott. Nagyon élveztem az algoritmusok egyszerűsítését, és a minimalizálás folyamatát. Ez az amit a legjobban szeretek csinálni az egész programozásban. Egy a baj vele, hogy nagyon viszi az időt. Észre sem veszi az ember, és máris hajnali kettő van, de kit érdekel ez akkor, amikor délután hat óta már öt byteot sikerült fogni a kódon. Mert egyszerűsíteni a végtelenségig lehet, ehhez kétség sem fér.

A demo adatlapja és részletei: adatlap
És a demo linkje még egyszer: DEMO

Archon

A játékátirat: http://archon.krissz.hu/
Követelmény: Chrome 48+ vagy Firefox 42+, és a <canvas> elem hardveres gyorsítására képes videókártya.

Pár évvel ezelőtt azt mondtam, hogy valós idejű hálózati játékokra egyelőre még alkalmatlanok a böngészők. Nem kellett sokat várni arra, hogy a korlátok lebomoljanak, és habár még mindig nem triviális a dolog, és a támogatottsága sem teljeskörű, de már ki lehet jelenteni, hogy a böngészők alkalmasak a minimális késleltetéses "agyatlan lövöldözés" megvalósítására.

A WebRTC egy olyan projekt, ami a böngészős és egyéb mobil alkalmazások valós idejű kommunikációját hivatott megoldani, köztes szerver nélkül, peer-to-peer módon. Ahogy én tapasztaltam, főleg a képi- és hangüzenetek folyamatos streamelésén lehetett a hangsúly a projekt alapjainak lefektetésekor. Viszont ha kép és hang át tud menni valós időben, élő videochatet képezve, akkor a hálózati játékok jóval csekélyebb adatmennyiségének átvitele is működik, nemde?

Archon táblaA neten példaprogramokat keresve többnyire csak száraz techdemókat találtam, ahol a progi egy textareába kiírja hogy Hello world!, te meg hidd el, hogy ez most egy real-time üzenet volt. Épp ezért ismét úgy döntöttem, hogy az unalmas szakmázás helyett egy élvezetes és szórakoztató útját választom a technológia bemutatásának. És mi lehet élvezetesebb és szórakoztatóbb, mint az Archon-t hálózatban játszani a haverral, webböngészőn keresztül, egy kattintásra? Ráadásul teljesen véletlenül belefutottam egy internetes petícióba is, ami pontosan ezt a kívánságot foglalta magába, és intézte egyenesen hozzám, úgyhogy megduplázott lendülettel vágtam bele.

A feladat megvalósítása három részből állt. Meg kellett írni az offline játékot, azt ki kellett bővíteni az online játékhoz szükséges, felek közötti adatcsere logikájával, illetve meg kellett valósítani a hálózati kapcsolati réteg technikai működését.

Az offline játék megírása jelentette számomra a legnagyobb örömöt. Megfigyelni az eredeti játék minden rezdülését, rájönni annak rejtett összefüggéseire olyan, mint felfedezni egy új kontinenst. Amikor kitisztul egy addig homályos ködbe burkolózó világ. Eredeti forráskódokat, memória dumpokat most sem használtam fel, teljesen a nulláról íródott. A kivagdosott grafikai- és hangelemeket a sok játék, a kiismerés, és a manual segítségével keltettem életre. Úgy érzem, az összes átiratom közül talán ez sikerült a legprecízebbre.

Archon harcIzgalmas volt még a logika online játékra alkalmassá tétele. Mivel sosem csináltam még hálózati játékot, ezért a felek közötti adatcsere lebonyolítására számtalan ötletem támadt, amiket mind meg is valósítottam. A nyerő a kliens-szerver féle kialakítás lett, azaz mivel mindkét oldalon ugyanaz a játék folyik, ezért a játék logikájának elég csak az egyik helyen, a szerver oldalon futnia. A szerver feladata, hogy a klienstől érkező inputokat - vagyis a játék logikájába való beavatkozásokat - fogadja, illetve hogy a kép felépítéséhez szükséges adatokat továbbítsa a kliens felé. Röviden: a kliens a szerver oldalon futó játékot vezérli. Jelen esetben szervernek az a fél számít, aki a menüben rányom az online játék indítására, és elküldi játékostársának a kapott linket. A hivatkozást a böngészőjébe bemásoló partner pedig lesz a kliens, és a kapcsolat létrejöttéhez nem is kell ennél többet tenni.

Próbálkoztam olyannal is, hogy nem a kép felépítéséhez szükséges adatokat küldöm el, hanem magát a képet. Ez egy roppant egyszerű megoldás, a kliens gyakorlatilag streameli azt a képernyőt, amit a távolból valójában irányít. Remekül működött, és jó volt azt látni, hogy több járható út is van. Csakhogy a minimalista lelkemet bántotta a framenkénti viszonylag nagy adattömeg, úgyhogy maradtam annál a változatnál, ahol csakis a minimálisan szükséges információ kerül átadásra.

Az egymáshoz kapcsolódás megvalósítása több mint bonyolult, és magához a játékhoz sincs köze, így az inkább szenvedés. Ennek oka, hogy a WebRTC-nek nem része a felek közötti signaling, vagyis egymás hálózati adatainak kicserélése, ami a dolognak kb. az oroszlánrésze. Így azt manuálisan kell megírni, ami irtó nagy szívás tud lenni. Ha mutatkozik rá igény, akkor cikké formálom majd saját vesszőfutásomat.

A játék sebességének optimalizálásakor belefutottam egy csomó új böngésző funkcióba. Ezek közül a legkirályabb dolog az ImageBitmapFactories API. A spriteok kirajzolása nálam eddig egy sprite canvasról a képernyő canvasra történt, ám az piszok lassú tudott lenni. Mostantól viszont, a drawImage utasítás forrásként ImageBitmap-et is elfogad, és nagyságrendekkel gyorsabban tud abból dolgozni. Firefox 42-vel jött ki ez a feature, és a Chrome béta verziójában is elérhető már. Amikor ilyen új dolgokba futok bele, mindig kedvem támad a régebbi játékaimat is újraírni. Ha az Archonra pozitív visszajelzéseket kapok, akkor minden bizonnyal el fogom készíteni a Wizard of Worhoz is a hálózati támogatást, mert ott is adja magát a dolog.

A játék hálózati részének tesztelése elég körülményes volt, de ezúttal is kisegített a krissz.hu immár három fősre bővült bétatesztelő csapata. Amikor A-val másfél órán át nyomtuk az utolsó lényig vívott harcokat, a játék közben rendesen izgultam, és teljesen megfeledkeztem arról, hogy a programomat teszteljük. Amikor K-nak a laptopján nem álltak kézre a játék által felkínált billentyűk, tudtam, hogy usability szempontból kizárólag a saját hardver infrastruktúrám világát vettem alapul, és eszerint korrigáltam. Rihardo ócska gépe rákényszerített az optimalizálásra, aminek révén számtalan új ismeretet sajátítottam el a szakmámban, illetve kedvenc elfoglaltságomnak, az algoritmusok egyszerűsítésének és begyorsításának is hódolhattam.

A teljes játékszabályát kevesen ismerik, én sem tudtam a feléről sem, ezért ajánlom a nagy harcok előtt átolvasni a manualt, vagy ezt a leírást. Jó játékot kívánok!

A játék linkje még egyszer: http://archon.krissz.hu/

C64 összekötése modern PC-vel

Régóta szerettem volna már megoldani a C64 és az asztali számítógépem összekötését. Leginkább azért, hogy azokat a játékokat, amiket C64-re fejlesztek, le tudjam tesztelni az eredeti gépen, ne pedig szégyenszemre az emulátorban kelljen bohóckodnom. Másik érv, hogy így kinyílik a világ, megszünik a "Meg van-e az a játék?" kérdés értelme, hisz a világ összes játéka fent van a neten, több tízezer, ha kell valami, akkor leszedem és kiírom. Kutakodtam a neten a megvalósítást illetően, de nem volt túlságosan reménykeltő amit olvastam. Sokaktól hallottam, hogy csak régi gépeken megy a dolog, és akinél megy, ott is csak a ráolvasás segített. Nos, szeretném eloszlatni a félreértéseket, a helyzet ennél sokkal jobb. Az alábbiakban leközlöm az én megoldásomat, bemutatván, hogy modern PC-vel is megoldható a kapcsolat, nem kell ezért a vateráról 386-ost beszerezni.

XM1541 kábelAmire mindenképp szükség lesz, az egy XM1541 kábel, amit a képen láthatsz. Ezt elkészítheted házilag, ha a forrasztó ón szaga nem bántja az orrodat, de választhatod a nyugatias, elkényelmesedett világ megoldását is, miszerint megvásárlod innen. Én is így tettem, a megrendelésre rá 1-2 nappal már a kábellel a kezemben metróztam haza. Ez köti össze fizikailag a floppy meghajtót a számítógéppel, az egyik vége a meghajtó serial portjába, a másik pedig a PC hosszú párhuzamos foglalatába illik.

LPT portos PCI kártya"Párhuzamos port? Dehát olyan nekem nincs is a gépemben!" — hasított belém a felismerés. Anno amikor volt, soha sem használtam. Most, hogy kellene, már nincs. A modern alaplapoknak már nem tartozéka. Ebben az esetben szükség van egy PCI portba helyezhető, 1 párhuzamos portot tartalmazó kártyára. Ez nagyjából 2-3 ezer Ft. Vannak olyanok, amin több port is van, soros és párhuzamos vegyesen, de ezek drágábbak, és nincs is többre szükség. Az USB->LPT átalakító kábeles megoldás nem működik!

Star CommanderHa a kellő hardvereszközöket beszerezted, jöhetnek a szoftverek. A Star Commander (SC) egy Norton Commander felépítésű kétpaneles fájlkezelő. Minden kellő formátumot ismer, a .D64 és .T64 fájlokba bele lehet menni, meg lehet nézni a tartalmukat. A meghajtók közül ki tudjuk választani a csatlakoztatott floppy driveot, mintha csak egy hagyományos meghajtó lenne. Tud lemezt formattálni, D64 lemez képmást kompletten kiírni, vagy egyesével állományokat másolni, szóval mindent, amire szükség lehet. Én valamiért imádom ezt a fajta szöveges üzemmódú felületet nézni. Óriási fless volt, amikor az egeret a jobb felső sarokba vittem, és bejött a képernyőkímélő. :)

HP USB Disk Storage Format ToolSzomorúság, hogy Windows 7 alatt az SC egyáltalán nem megy. Akármilyen kompatibilitási módot választottam, akárhogy hekkeltem a rendszert, sehogy nem indult be. Így hát nincs mese, készíteni kell egy DOS boot pendriveot. Ennek első lépése, hogy letöltöd a HP USB Disk Storage Format Tool programot, amivel rendszerlemezzé lehet formázni a pendriveot. Nem kell rögtön a 32 gigásat legyalulni, egy régi 128 megás pendrive kapacitása is sokszorosa a kellőnek. Szükségeltetnek még a telepítendő rendszer fájljai, ehhez töltsd le, és tömörítsd ki ezt a win98boot.zip fájlt. A programot a képen látható beállításokkal indítsd el, figyelve arra, hogy a megfelelő meghajtót formattáld, és a system files lokációja az előző kitömörítés helye legyen. Start, és megy is a csík!

Ha elkészült, másold át még plusszban a win98boot teljes tartalmát, így meglesz az összes DOS parancs, valamint lesz egér és Dos Navigator a könnyebb boldoguláshoz. Illetve fontos, hogy minden szükséges C64 állomány amit ki akarsz írni rákerüljön a pendrivera, mert elképzelhető, hogy DOS alatt nem lesz más meghajtód. A gép újraindításakor a BIOS-ban válaszd ki, hogy pendriveról bootolsz, és már dolgozik is az autoexec.bat meg a config.sys.

Remek, a SC a hazai környezetében már simán elindul. Viszont akárhogy configoltam a programot, az istennek sem látta a párhuzamos portomat. Persze, hisz nem egy valós LPT portról van szó, hanem egy PCI kártyáról, amit így közvetlenül nem tudunk DOS-ból használni. Ez bizony ördöglakat. A párhuzamos port csak Windows alatt él, de a SC meg csak DOS alatt megy. Olyan tehetetlen érzés lett úrrá rajtam, mint amikor anno a haver ARJ-vel betömörítve küldte el nekem az ARJ tömörítőt...

Végső elkeseredésemben előszedtem a kártyához kapott dokumentációt (egyetlen apró cetli), és kinéztem egy internetes címet róla, ahonnét a drivereket le lehet hozzá tölteni. És csodák csodájára, volt DOS-os is! Szerintem ha akármilyen noname kártyát vásárolsz, meg fog felelni ez a driver. Tehát másold át a pendrivera ezt is, majd bootolás után, az alábbi két utasítás kiadásával add hozzá az LPT portot, és konfiguráld be azt EPP módba:

A:\> GEMDOSIN -add
A:\> GEMDOSIN -c:lpt1=epp

Star Commander Transfer optionsMost már látja a SC a párhuzamos portot! Egyetlen teendő van hátra, a program beállításai. CTRL+F9-re jön elő a menü, amin belül a Transfer optionsra van szükség. A kép alapján beállíthatod, a defaulton három helyen kell változtati:

Transfer mode = Warp
Serial cable = XM1541
Paralell Ports = LPT1

Ha kiválasztottad a megfelelő értékeket, nyomj rá a recalibrate gombra, majd OK. Ezen a ponton túl már mehet a copy ezerrel, egyedül a hibás diszkek fognak problémát okozni. ALT+F1/F2-vel tudsz meghajtót váltani, F5-tel másolni, de nem is mondom tovább, mert gyerekjáték. Minden gond nélkül kiírtam magamnak 3 lemeznyi válogatott játékot, ezzel elmondhatom magamról, hogy több nagyfloppyt írtam ki életemben, mint CD-t. Összefoglalva tehát, ami kell:

  • XM1541 kábel
  • PCI-os LPT kártya, hozzá DOS-os driver
  • DOS boot pendrive
  • Star Commander

Nyilván létezik más megoldás is, meg lehet közelíteni a problémát ezerféleképpen. Én ezt találtam a legegyszerűbbnek, és a leggyorsabban kivitelezhetőnek. XP vagy régebbi Windows esetén az egész DOS telepítés és bootolás rész kihagyható, mert az alatt fut a SC, drivernek meg letölthető az OpenCBM driver. Ha bármi kérdésed van, írd meg, ha tudok, válaszolok. Illetve várom a tippeket, hogy hogyan lehetne tovább egyszerűsíteni a dolgot.

Jó másolgatást kívánok!

Need For Speed 4: High Stakes

A játékok egyedfejlődésénél sok esetben látható, hogy az újdonság erejével ható első rész sikerei után a készítők ugyanazt az ötletet kicsit tovább csiszolva, de az eredeti koncepciót megtartva, mégjobbat alkotnak. Szerencsés forgatókönyv esetén pár verzió megjelenése után a játék eléri a tökéletest. Példa ilyen módon létrejött tökéletes játékra a Settlers 2, a Heroes of Might and Magic 3, a Need For Speed esetében pedig a High Stakes fedőnéven futó negyedik rész.

Ezen pont elérésekor kellene tudni azt mondani, hogy a sorozat kész. A gyémánt tökéletesre csiszolódott. De sajnos nem ez a helyzet. Mivel a léc már olyan magasan van, hogy nem lehet űberelni, ezért a követő verziókban megpróbálnak koncepcionális újításokat bevezeni. Amitől persze már nem az lesz a játék, ami, holott ugyanazon a néven fut. Így a szép hírnév csorbul. Lásd a fent említett játékok következő részeit.

Nem tudom nem megemlíteni azt a számomra rohadtul ellenszenves trendet, ami az NFS pusztulását is részben okozta: felerősödött a ma oly divatos legyünk rosszfiúk vonal. Igen, tudom, hogy már a harmadik részben is voltak rendőrautók és üldözések, de nem arra ment ki a dolog. A jelenség csúcspontjakét a - szintén remek kezdetekkel nyitó - GTA sorozat ötödik részét tudom említeni. Értetlenül állok a jelenség előtt, hogy manapság divat a rajkodás. De nem csak emiatt lett rosszabb az NFS, hanem az irányítás, a pályák, minden visszaesett innentől kezdve. Óriási csalódás volt számomra. Na de a siránkozás helyett örüljünk annak, hogy van egy tökéletes epizódja a sorozatnak, töltsük be azt!

Need For Speed 4: High Stakes intróMinden játékban átnyomkodom a videókat, mert nem érdekel a sztori, csak a játék. Ennek ellenére az NFS4 intróját sokszor megnéztem. A játék mindent tartalmaz amit a harmadik rész, csak minden szebb, jobb, több. Több autó, több pálya. De a rész legnagyobb újításai a karrier mód és az autók törése. A zseniális húzás pedig e kettő egybekombinálása.

Adott egy kezdetben szűkös költségvetés, amiből csak B kategóriás autót tudunk vásárolni. A felkínált versenyekre lehet benevezni, ahol a teljesítésünktől függően juthatunk némi aprópénzhez. Ebből fejleszthetjük az autót, kijavíthatjuk a rajta keletkezett károkat, benevezhetünk nagyobb versenyekre, vagy ha összegyűlt elég, megvehetjük az eggyel jobb kategóriás gépet. Mivel az autón keletkezett károk nem csak az esztétika, hanem a funkcionalitás terén is megmutatkoznak, a javítás pedig nem olcsó, a játék rákényszerít arra, hogy ne a szalagkorlátokon mandínerből pattogva közlekedjünk, hanem precízen vezessünk. Én billentyűzeten játszok, és az irányítást a rengeteg gombnyomás, a sok apró korrigálás jellemzi. Meg kell találni azt a egyensúlyt, hogy óvatosan vezess, kíméld az autót, de azért nyerd is meg a futamokat.

Need For Speed 4: High Stakes Celtic RuinsA játék folyamatosan tálal elénk új contentet. Új autókat kapunk, új pályák nyílnak meg, sőt, egy szint felett a harmadik rész pályáit is tudjuk unlockolni, ugyanis azok mindegyiket is tartalmazza! Nagyon ötletesnek találom a pályák fordított irányú bejárását és/vagy a kanyarok invertálását. Így az eleve sok pálya még további három változatban elérhető. Ez igencsak megkavarja a kanyarokat izommemóriába beépítő versenyzőket. (Az inverz kanyarokkal az elején kicsit ellenérzésem volt, mert ugyebár hülyeség. Az, hogy fordítva, tehát a finistől a startig be lehet járni ugyanazt az útvonalat, az oké. De az invertált kanyarok valahogy a valóságtól eléggé elrugaszkodott dolog.) Sőt, ez a négy változat kombinálható még csapadékkal és/vagy éjszakai móddal. Így érték el a készítők, hogy 1 pályából 16 legyen.

Need For Speed 4: High Stakes tömegA játék lényegi része minden módban ugyanaz, az adott pályán az ellenfelek előtt kell célba érni. Probléma addig van, amíg egy bolyban haladsz a többiekkel. Megy a lökdösődés, nagyon kell vigyázni, hogy a több ezer dollárért frissen kikalapált autót ne vágják tönkre már az első métereken. Ha el tudsz szakadni a mezőnytől, és a saját tempódban tudsz haladni, akkor már csak a hibátlan vezetésre kell koncentrálnod, és biztos a siker. Mindegyik pályán van pár kulcspont, onnan lehet felismerni, hogy feléjük közeledve elkezdesz imádkozni, hogy csak oda ne akadj be. A játék előrehaladtával viszont muszáj kockáztatni, és az íveket levágva egyenesen haladni sziklák és fák között.

Need For Speed 4: High Stakes pályaszakasz levágásaNagyon kevés az a játék amit kimaxolok, de ezt sikerült. A karrier mód minden tourjának mindegyik versenykiírását aranyéremre nyertem. Azok futamain is 95%-ban első helyen zártam, kivétel ezalól a játék legvége, ami már borzasztóan nehéz. A nagy kihívást az okozza, hogy ekkor már a leggyorsabb AAA kategóriás sportautó van alattunk - ami villámgyors ugyan, viszont cserébe kezelhetetlen - és a legtechnikásabb pályákon kell vele menni, ráadásul hóesésben és/vagy éjszaka. A játék annyira keveri a kártyákat, hogy van egy pálya, ahol ha pixelre pontosan tökéletesen vezetsz, akkor sem tudod megnyerni, csak ha levágsz egy kanyart. Kíváncsi vagyok rá, hogy az olvasók közül megvan-e ez valakinek. Amikor a Country Woods pályán kell úgy előnyhöz jutni, hogy van egy kis kerítéses szűk havas-fás rész, ahol egy nagyívű kanyart lehet levágni, lásd a képet. Mivel ezen pályák menetideje elég hosszú, és nagyon kell koncentrálni, pár futam után agyilag teljesen lefáradsz tőle. De ez ne szegje kedvét senkinek, ez csak a karrier mód legvége.

Need For Speed 4: High Stakes Route AdonfAjánlom, hogy kapcsold ki teljesen a HUD-ot, ne legyen semmi zavaró a képen. Csak eltereli a figyelmedet a vezetésről ha folyton azt nézed, hogy hány másodpercre van mögötted Gotcha, vagy ha a kárjelző egyre növekedő adatain stresszelsz. Meg a grafika is szép, és így méginkább tudsz gyönyörködni benne. Na jó, a fenyőfa az két téglalap egymásra keresztbe rakva, és van ahol a textúra fejjel lefelé van betéve, de na. :) Nincsenek túlhúzva az effektek, ott és annyi van, amennyi kell. A fények mai szemmel is nagyon jók, esőben a képernyő összefröcskölődik, vagy belyukasztja egy felverődő kavics, és az autók még az ötödik bukfenc után is szépen csillognak.

A zenék is passzolnak a játékhoz, belelovalja az embert a nagyobb tempóba. Viszont a hosszú etapok alatt az ismétlődés unalmas lehet, de ekkor csak F8, és probléma megoldva. A hangok terén egyedül az ellenfelek motorzúgást találom jóval hangosabbnak a kelleténél, és hiába állítom külön az engine volumet alacsonyra, az csak a saját autóra vonatkozik, az övék az effectsbe tartozik, ami viszont kell. Valamiért kísértést érzek rá, hogy ha visszhangzó helyen járok, akkor megnyomjam a dudát, vagy bekapcsoljam a szirénát.

Need For Speed 4: High Stakes Chevrolet CorvetteEmlékszem, óriási partikat nyomtunk osztott képernyőn, bár ekkor már eléggé szaggatott a game. Ismét bebizonyosodott, hogy hús-vér ember ellen teljesen más az élmény, mint az AI-t kiismerve, ahhoz adaptálódva róni a köröket. Van annak valami varázsa, hogy fizikailag egymás mellett ülve, mindkettőtök úgy tesz, mintha csak játék lenne, de valójában minden futam presztízskérdés. Mert ha a haver győz, akkor bejön az a rejtett "rohadjonmeg" érzés. :)

A játékban ezeken kívül még rengeteg tartalom van amit nem említettem. Kieséses mód, rendőrös üldözések, civil forgalom... Én olyan vagyok, hogy ha valami beválik, akkor maradok annál. Vagyis Chevrolet Corvette, és Porsche 911. Ez a két autó létezik számomra a játékban. Az NFS sorozatot tekintve pedig csak a High Stakes!

A használható felület

Bármilyen új eszköz, operációs rendszer, vagy alkalmazás kézbevételekor az első dolgom az, hogy teljesen átszabom a felhasználói felület alapértelmezett beállításait. Amit a készítők megálmodtak az átlag felhasználó számára, az az én világomban a lehető legtávolabb esik a jótól. Lássuk, hogyan kell beállítani egy rendszert ahhoz, hogy Krissz kompatibilis legyen.

Beryl - a használhatatlan felületAz egész dolog lényege a hatékonyság. A teljesen felesleges animációk, a funkció nélküli, zavaró elemek mind lassítják a használatot. Mikre gondolok? Mondjuk ha egy ablak fadelve nyílik meg, záródik be, annak van egy ideje. Rosszabb esetben becsúszik valahonnan, ami mégtöbb időt visz el. Lehet hogy egyszer jó megnézni ezeket az animációkat, de ha egész nap, minden egyes váltáskor végig kellene néznem, falnak mennék. Nekem az kell, hogy ha átváltok, akkor azonnal kapjam az eredményt. Minden trükk és parasztvakítás nélkül. Ugyanígy a menüknél. Ha folyva nyílk lefelé, vagy az almenü lassan úszik ki a szülőjéből, azt szintén olyan időveszteségként érzékelem, mint amikor középiskolás koromban minden nap másfél órát kellett buszoznom.

Az átlátszóság szintén értelmezhetetlen számomra: van két egymáson lévő felület, és igazából az egyikből sem látunk semmit. Finom görgetés? Hagyjál már... Ezeket első körben kapcsolom ki, feltéve ha a rendszer ad rá lehetőséget. Nálam az asztal háttere egyszínű. A tájképes, kutyás-macskás megoldásokat meghagyom azoknak, akik még legalább 200 ikont is rátesznek erre a képre. Az ablak és egérkurzor alatti árnyékok felesleges luxus, úgyhogy ezen fícsör checkboxsza is üresen tátong. A betűtípusok élsimításától is idegenkedem, bár az egyedi fontok weben való megjelenése óta hajlandó vagyok elfogadni.

Symplify.Az én optimális felületemen nincsenek görbék, csak egyenes vonalak, négyzetek. Nincs true color, csak pár szín, így nincsenek színátmenetek sem. A legkomolyabb vizuális effekt az egér nyomvonalának követése funkció. A képernyőn rend uralkodik, és minden funkciót egyszerűen el lehet érni. Ha elképzelted a fejedben az eddig felvázoltakat, akkor nagyjából egy Windows 3.1-hez hasonló képnek kell megjelennie. Ezeket nem azért mondom, mert bennem pixelszív dobog, hanem tényleg ilyennek gondolom az optimális munkafelületet.

Ha a vizuális beállításokkal végeztem, akkor már sokkal jobb a helyzet, de még mindig érzem, hogy valami fáj. Igen, a hangok. Amit meghagyok belőlük, azok pusztán a funkcióval bíró visszajelzések. Semmiképp sem hosszabb dallamok, hanem rövid csipogások. Minden alkalmazást teljes képernyőben nézek. Kerülöm a multitaskingot, kevés program fut egyszerre, és azokon belül is kevés tab van megnyitva. Azon a ponton, amikor egy böngészőablakban a tabok már kezdenek kisebbre méreteződni a sokaságuk miatt, átlépem a frusztrációs küszöbömet.

Az olyan programokat preferálom, amik megengedik, hogy ízekre szedje a használója. Rosszul tolerálom, amikor a szoftver okosnak gondolja magát, és mindenáron segíteni akar. A gondolatolvasás még nem működik, így felettébb bosszantó, amikor próbálja előre kiegészíteni az általam írt szöveget, függvénynevet, stb. Ezen opciók mellől is repül a pipa. Azt szeretem, ha a program azt, és csak azt teszi amit én akarok. Értékelem továbbá, ha odafigyelnek a billentyűkkel való kezelésre is. Hiszem azt, hogy egy új shortcut készségszintű elsajátítása minőségi javulást hoz az ember életébe.

Úgy látom, hogy manapság ismét az egyszerűsítés a divat. Viszont azt is látom, hogy ennek ellenére mindenki csak görcsöl, és kényszeresen akarja kitalálni és ráerőltetni a népre a saját világmegváltó elképzelését. Addig is, amíg a nagyokosok feltalálják a spanyol viaszt, ha hatékonyan szeretnéd használni a gépedet, és nem ódzkodsz attól, hogy képernyőkímélőnek a blank screen mellett az univerzum az egyetlen alternatíva, akkor próbáld ki a fenti tanácsaimat. Bármilyen rendszert is használsz, foszd meg azt minden extrától. Csupaszítsd le, amennyire csak lehet. Akkor fogod igazán értékelni a módszer előnyeit, amikor visszaáll alapbeállításokra egy program, vagy idegen gépet használsz, és megszűnik ez a minimalista, mostazonnal érzés, ami egy munkavégzésre kihegyezett környezetben elengedhetetlen.

Crazy Dog Racing

Nemrég beszámoltam róla, hogy Rihárdóval közösen készítünk egy játékot Commodore64-re. Nos, az ötlet első felvetése után nem kellett két egész hónapp ahhoz, hogy kész művet tudjunk prezentálni. A játék, ahogyan a címe is mutatja, nem feltétlenül valós körülmények közötti, kétszemélyes, felülnézetes, autóversenyzős mókát ígér. A főszereplők kutyák, a helyszínek a sivatagtól a jeges sarkvidékig igen széles skálát ölelnek át. Nem kevesebb, mint 12 pálya szorong a C64 memóriájának szűkös keretei között.

Crazy Dog Racing menüA menüben, klasszikus 8bit hangzású muzsika hallgatása közben állíthatjuk be a verseny jellemzőit. Kétjátékos módban egymás ellen, egyjátékosban pedig a stopperórával kell megküzdeni. Változtatható az autók színe, a főszereplők kinézete, a pálya és a körszám. Nagyon vagány napszemüvegben csapatni neki a havas pályákon.

Az irányítás az ilyen játékokban megszokott, vagyis a joystick felfelé mozdításával lehet gázt adni, a jobbra-balra irányokkal fordulni, a le irány pedig a fék. A tűzgomb a turbó beizzítására való, ami csak maximális sebesség esetén használható, ha rá akarunk tenni még egy lapáttal. Ám óvatosan kell használni, mert egy ütközéssel értékes idő veszik el. A játék az ütközésmentes, precíz vezetést jutalmazza.

Crazy Dog Racing erdei pályaA csalást pedig határozottan bünteti. A pálya levágása, vagy a kanyarok túlságosan szűk bevtele esetén a játékos nem kapja meg a kört. Bár ezzel amúgy sem érdemes próbálkozni, mert a pálya vonaláról letérve, a fűben, gazban haladva sokat lassul a jármű. Pályánként némileg eltérő a vezetési élmény. Hóban, vagy sárban jobban elmászik az autó, kicsit nehézkesebb irányítani, mint a direkt versenyre tervezett aszfaltos gokartpályán. Sok helyen a tereptárgyak, akadályok kerülgetése is nehezít a körülményeken. A 12 pálya között így mindenki megtalálhatja a számára megfelelő nehézséget, a könnyűtől az extrém nehézig.

Crazy Dog Racing sivatagos pályaHasznos billentyű az F7, amivel bármikor újraindítható az adott verseny. Ez főleg a kedvenc játékmódomban, a köridő rekordok megdöntésénél jön jól. Az egykörösre állított versenyt így rögtön az első hibázásnál újra lehet indítani. F1-gyel pedig a menübe lehet kiugrani bármikor. Minél többet mész vele, úgy ívódik beléd egyre jobban a precíz irányítás. Akkor a legélvezetesebb a játék, ha már a rövid egyenesekben is tudod olyan finaoman adagolni a turbót, hogy nem ütközöl.

Egy hobbiprojekthez képest, a fejlesztés remek tempóban haladt. A motiváció és lelkesedés mindvégig kitartott. Ha Rihárdó egyéb kötelezettségei miatt nem volt gépközelben, akkor kockás füzetbe tervezte a pályákat. Jóval több tervet készítettünk, mint 12, de úgy voltunk vele, hogy inkább legyen több, és majd csak a legjobbakat válogatjuk be. A kimaradtakat pedig meghagyjuk egy második részbe, vagy pályacsomagba. Hamisítatlan C64-es feeling közvetítésére törekedtünk, amit a hóbortos képi világgal, a primitív hangokkal, a játékmenet egyszerűségével és a jó játszhatósággal szerintem sikerült elérni.

Crazy Dog Racing jeges pályaAz én esetemben a fő kérdés az volt, hogy minden előzetes tudás nélkül, meg tudom-e valósítani 100% assemblyben a készülő programot. A leghatékonyabb tanulási módszert választottam, vagyis ugrás a mélyvízbe. Egy játékprogram elkészítése a programozási technikák jókora részét lefedi. Egyedi karakterkészlet használata, spriteok kezelése, zene és hangeffektek lejátszása, joystickkal való irányítás, időzítések. Fejtörőnek meg ott volt a játék logikája, vagyis a gyorsulás, kifarolás, motorfék, és az ütközések lekezelése. A logika mindössze 4,5k-t foglal, így a többi hely megmaradt pályaadatnak. A remek tárkihasználás ellenére nincsenek kétségeim afelől, hogy egy cracker egy egész estés intrót még bele tudna csempészni. :) Úgy érzem, sikerült egy teljesen új programozási szemléletet elsajátítanom, illetve megkedvelnem. Tetszik ez az egész gépközeli hozzáállás. Végig éreztem, hogy olyan eszközt tartok a kezemben, amivel a mai szemmel nézve nem túl acélos MOS 6502 processzor nem egész 1MHz-es teljesítményének határai is korlátlannak tűntek.

Crazy Dog Racing aszfaltos pályaIsmételten buzdítanék mindenkit, hogy készítsetek C64 játékot! Aki hozzám hasonlóan kihagyta anno az assemblyt, de még él benne a láng, az kezdje el, hamar bele fog jönni! Ezek a hobbiprojektek színt visznek a napokba, sokat tanul belőle az ember, és a végén még egy értelmes produktum is születik. Naná, hogy megéri!
A játékot itt tudod letölteni: CDRACING.d64

<< régebbi postok