A következő címkéjű bejegyzések mutatása: játék. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: játék. Összes bejegyzés megjelenítése

kedd, szeptember 02, 2025

a herceg öleléséből csak a hercegné tud szabadulni


Van ez a cikk, az utolsó játékteremről Senjangból, egy 9 milliós kínai városból. Az emberek már nosztalgiából járnak oda főként egy bunyós játékot játszani. Bár nálunk sosem volt nagy játékterem kultúra, az az érzés, hogy a gyerekkorod játékai mindig várják, hogy befejezd őket és te egyre kevésbé tudod megmondani, hogy ez most éppen miért nem egy jó ötlet, számomra is ismerős. Ilyen szempontból, közelebb állok a pár ezer kilométerre élőkhöz mint a pár méterre élőkhöz.

Demó

Zene. Zene. Zene. Zene. Zene. Zene. Zene. Zene. Zene. Zene. Zene.

AI. AI. AI. AI. AI. AI. AI.

Walking Shenyang

hétfő, július 21, 2025

az játék előrehaladottáról

Újabb vidiót készítettem.

Nem, még mindig nem fejeztem be a játékot. De most már tényleg azon dolgoztam, hogy úgy nézzen ki mint egy játék. Legyenek benne menük, meg háttér a menük mögött (most csak egy példa shadert tettem oda, ami nagyon jól néz ki, de ez nem szabad felhasználású, szóval kell majd írnom egy sajátot). Meg persze végre sorra került a mentés és töltés is. Ehhez először lecseréltem az ECS-t flecs-re és a fájlkezelést rábíztam a sqlite-ra. Ezek elég jó technológiák, azt hiszem, hasznos lesz, hogy integráltam őket, elég jól megoldják azt amire kitalálták őket.

A gond inkább az, hogy egy kicsit túl ambiciózusra vettem az elején a dolgokat, most meg kiderült, hogy jól hangzik az, hogy a háttérben számítjuk ki a pályát meg a fényezést, de ha ez párhuzamosan kell menjen a mentés/töltéssel is, akkor jó sok galibát okozhat az, hogy valamelyik számítás nem ér véget amíg az ember menteni vagy tölteni akar egy másik pályát. Jó sok "if" kellett és még mindig nincs elég, valami a fények kiszámításánál elbarmolódik, ha betöltünk egy pályát úgy, hogy már kolbászoltunk előtte egy kicsit. Végül odáig mentem, hogy kellett írjak egy eseményrendszert ami vezérli a játék főbb mozzanatait, hogy tesztelni tudjam, hogy minden helyesen működik együtt. Ez persze később még jól fog jönni, bár nem hinném, hogy nagyon mélyen fogom tesztelni a játékot, azt azért kipróbálom majd, hogy végig lehet-e zongorázni a pályákon egymás után egy kis csalással.

Szóval van még pár bug, de azt gondolom, hogy most már tényleg meg van a 90%-a annak, ami a szokásos töltelék egy játékhoz, nem igazán a játékmenetről szól. Remélem ezt aztán sok módosítás nélkül fel tudom majd használni még pár játéknál, másképp nem nagyon volt kedvem menürendszert írni.

Szóval akkor még van 10% bug és persze a teljes játék hátra, mert a végső pályákból még semmi nincs. Az a baj, hogy megint az volt, hogy akartam kicsit viccesebb pályákat generálni, de egyből beindult az agyam, hogy milyen új rendszert kéne írni hozzá, hogy működjön (most éppen egy újraírási (term rewriting) rendszerként képzelem el, hogy nagyon expresszíven tudnám a kis szabályaimat kifejezni. Komolyan vissza kell fognom magam, már annyi mindent tud a rendszer, azokkal kéne lehessen valami jót kihozni. Persze ideje lenne a pályaszerkesztőbe is betenni a fényeket, mert most sajnos nem tudják és elég nehézkes úgy szerkeszteni a pályát, hogy minden fényezési beállításhoz újra kell indítani a játékot (jó, persze tudom, a hőskorban is így csinálták ezt).

Na jó, nem szaporítom a szót, ma már csak egy ivászat maradt a programban, majd legközelebb többet filózom. Reméljük idén sikerül befejezni mindent... 

vasárnap, május 04, 2025

az játék előrehaladottáról

Ez most rövid lesz. Nem, nem fejeztem be a játékot máig, ahogy szerettem volna, kicsit sok mindent írtam újra. Remélem egy-két hét múlva viszont befejezem ezt a szakaszt, azaz minden rendszer kész lesz, már csak a pályákat kell belevarázsolni, akkor majd lesz vidió, meg filózás is, ha lesz kedvem és energiám. Nem hinném, hogy volt aki lélegzet visszatartva várta a híreket, de hát nem ez lesz a legrövidebb bejegyzés... :)

kedd, március 11, 2025

az játék előrehaladottáról

Megint tettem fel új vidiót.

Végre fut a játék windowson, kicsit többet tartott ez a dolog mint először számítottam rá, de hát ki kellett operálni nem csak a grafikus absztrakciót, de a memória menedzsert meg egy csomó más dolgot is. Azért döntöttem így, mert amit eddig használtam (The Forge), nem volt a legjobb választás. Nem nagyon foglalkoznak azzal, hogy stabil legyen az API (mondjuk nekik, akik ebből élnek, lehet, hogy ez nem is igazán szempont, mert mindig megfizettethetik az átállást az új API-ra), ráadásul a speckó memória menedzser és STL jó ötlet elméletben, de gyakorlatban akkor minden libraryt kell portolni a rendszerre, ami nem túl nagy ötlet. Ráadásul nem hiszem, hogy olyan sok sebességet köszönhettem nekik, szóval mindenből a standardot kértem most és ezzel így is fogok maradni. Szerencsére az SDL fejlesztők nagyon aktívak, ez a GPU absztrakciójuk is elég érthető (a régebbi bonyolultabb volt, lehet, hogy gyorsabb, de csak deszkriptor managementből írtam legalább két verziót amíg rájöttem, hogy kár vele törődni, megy az anélkül is, a sebességhez az okos kézi batching a kulcs. Szóval egy csomó kódot kidobtam, végre standard imgui-t is integráltam, meg lua-t is, ki kell próbálnom, hátha végre azt is tudom debuggolni. Egyébként az új ubuntumon már a shader debug is megy RenderDoc-kal, nagyon jó cucc, kár, hogy nem most kezdem a projektet, most mindent elég jól értek és mennek a toolok is mint a karikacsapás. Igaz, azt hiszem, ma már Rust-ban kezdenék neki Bevy-vel.

Na mindegy, szóval még rengeteg dolgot meg kell csinálni, most az a terv, hogy először kiadható állapotba hozom a játékot, tehát mindent megcsinálok, kivéve a pályák generálását és utána még amennyi idő marad, azt pályagenerálásra szánom. Persze, ha marad idő, meglátjuk. Ez az egész dolog nem volt túl vidám, mert bár nem vagyok az a típus aki szerelmes a kódjába, azért mindig próbáltam minél többet megtartani, néha ez rendesen az utamba állt. Aztán persze végül csak kinyestem mindent. :) Poén, de most megint rájöttem, hogy dolgozhatok ramdisken is, hogy gyors legyen a linkelés, már nagyon régen csináltam ilyent, még amikor a 486-osba végül lett 8 mega ram és 4-et ramdisknek használtam amikor djgpp-vel kezdtem aprítani. Csak most 4 giga ramot használok ramdisknek a 32-ből, így másfél perc alatt a nulláról megvan a fordítás és linkelés, gcc-vel, a clang gyorsabb lenne, de annak nem látja a debugger a változóit a watch-ban, szóval gcc-vel maradok egyelőre, de talán majd a végén clanggal fordítom le, Linuxon persze, Windowson VS 2022 Community Edition-t használok, azt hiszem ez az utolsó.

Ja igen, egyébként az árnyékokat kiszedtem, meg az animációkat is, valószínűleg kimaradnak a játék első verziójából, de azért csinálom így a dolgokat, hogy nyugodtam fejlesztgethessem életem végéig, szóval majd valamikor visszakerülnek. Na most ennyi, nem tervezek minden kis apróságról blogot írni, lehet, hogy a következő bejegyzés már arról lesz, hogy all systems go. Menük, save/load, level progresszió, hangok, ezek amik nagyjából hiányoznak. Lehet, hogy a mentéshez integrálom az sqlite-t. :)

vasárnap, december 22, 2024

az játék előrehaladottáról

Készítettem új vidiót.

Arról van szó, hogy integráltam egy prolog interpretert a játékba. Igazából, ezt már régebben megcsináltam, csak nem volt kedvem vidiót készíteni, gondoltam, hogy készítek valami szép kis épületet vagy labirintust vele és akkor majd beszámolok róla, de aztán nagyon megcsúsztak a dolgok az utóbbi hetekben és gondoltam, hogy jobb lesz megcsinálni a vidiót most, mint hagyni a következő évre csúszni.

Az, hogy miért jó egy prolog interpreter, most nem lesz bővebben kifejtve. A lényeg az, hogy most úgy gondolkodom a pályagenerálásról, mint egy fix rácson mindenféle részletek elhelyezése (persze ettől még a rács szerkezet nem kell könnyen észrevehető legyen, majd mutatok példát). A részletek viszont több információt kell figyelembe vegyenek, mint annyit, hogy éppen ki teszi le őket, mondhatni környezetfüggőek kell legyenek. Szóval akkor miért is nem készítettem környezetfüggő nyelvet a generáláshoz? Hát azt nem is olyan egyszerű kifejezni nem rácsszerkezeten (a wave function collapse is rácsszerkezeten műxik). A lényeg az, hogy prologgal gyorsan lehet kifejezni mindenféle kombinatorikus problémákat és ezzel szépen lokálisan lehet modellezni a kis részletecskéket (úgy kell rá gondolni, hogy van sok szoba és a részletek az ablakok a falakon, amelyeket nem unalmas helyekre kell tenni, ugyanakkor két egymást érintő falra ugyanoda kell tenni az ablakot, másképp nem ablak :)).

Szóval, hogy mutassam, hogy tényleg prolog van, egyrészt ott van a kódja a legújabb teszt rövid vidiónak, másrészt meg a klasszikus gazda, farkas, juh, káposzta feladatot oldottam meg, amelyben a gazda mindent át kell vigyen a folyó másik oldalára úgy, hogy a végén mindent ő ehessen meg, ne az egyéb aktorok egymást (csak a káposzta nem eszik meg semmit). Ezt a vidiót is összecsaptam, de hát nem volt értelme modellezni őket szépen, mert nem lesznek gazdák meg farkasok a játékban, legalábbis nem az elsőben. Hacsak, nem termekkel reprezentálom őket, amelyek egymást bennfoglalják és mozgatják...

Nagyon reméltem még az év elején, hogy idén befejezem a játékot, de sajnos nem jött össze, de jövőre most már tényleg le kell tudni. Utána majd szépen lassan elmagyarázok megint mindent elölről, a megértés úgyis csak a végéről indulhat egy folyamatnak.

Most akkor nekifogok windowsra portolni a játékot, kíváncsi leszek, hány napot fog tartani...

péntek, december 20, 2024

amikor a neuronok cédéfürdőt vesznek a valóság közfürdőjében egy monitor fényénél

 

Ugye mondtam, hogy vettem egy új gépet a szüleimnek. A gépet másnap kihozták, a monitort is, a windowsot egy sticken kb. öt nap után kaptam meg (igaz olcsó volt, kb. 70 lej és egészen legitnek tűnik). Addig lusta voltam letölteni valami windowsot, hogy tegyem újra/regisztráljam a vásárolt kóddal, szóval nem használtam a gépet. Ja, nincs benne wifi csip, az egyetlen hálókábelem ami van, nem ér el az asztaltól a rúterig. Akkor veszünk egy usb-s wifi kütyüt is, az is csak 55 lej. Másnap meg is kapom, bédugom a gépbe, de az istennek sem akar menni. Másnap megpróbálom közelebb vinni a gépet a rúterhez, hátha nem megy el elég messzire. Ott se megy. Hmm, mintha van valami olyasmi, hogy a gép elején/tetején az usb portok nem kapnak annyi áramot mint a hátul levők. Ja, hogy így megy. Fantasztikus. Na akkor próbáljuk ki, hogy van-e ram hiba a gépben, tegyünk fel valami játékokat. Letöltöm akkor az epic játékok installálóját, az csak windows alatt megy, még sosem próbáltam (a steam vígan megy linuxon). Belépek, van 16 oldalnyi játékom, minden oldalon 24 játék (kivéve az utolsót, bár az is szinte tele van), azaz nagyjából 384 játék, amit úgy szedtem össze, hogy minden héten beléptem és bekattintottam 1-2 játékra, hogy igen, nekem ez kell. Karácsony körül minden nap beesik egy új játék, most is éppen. El is ment a kedvem a játékkészítéstől, nehéz lesz versenyezni ennyi ingyenes játékkal, amelyek egy részét több száz fős csapatok készítették éveken keresztül. Igaz, egy sincs olyan, mint amilyent én szeretnék készíteni, legalábbis elsőre. Végül feltettem a Control-t, azt ki is próbáltam, jól megy, szép is, csak képtelen voltam 1 óránál tovább nyomni, nem köt le igazán, mint szinte semmi mostanában, sajnos. Azért remélem befejezem az ünnepek alatt. Meg a Prey-t is, ezt az újabbat. Steamen 805 játékom van, ezek 99%-át humblén vettem nagyjából 10-et 20 dolláros áron, de van köztük pár demó is, amiket aztán elfelejtettem kipróbálni. GOG-on éppen 333 játékom van, ezek darabjáért sem igazán fizettem 2 dollárnál többet. Egy életre van elég játékom, de valahogy nem tudom abbahagyni a gyűjtést. Hiába, akik a 90-es években nőttek fel, értik valószínűleg. Ja, az egyéb játszási módokról ne is beszéljünk. :))) (a ps3-am már egy éve porosodik azt hiszem, akartam Last of Us 1 gondolatokat írni, de szerintem az már elmarad addig amíg újra sorra nem kerül).

És akkor a valahányadik napon a mesterséges intelligenciával támogatott képek generálásának korában rájöttem, hogy valahogy kellene magamat ábrázolnom. Na, ezen elgondolkodtam, hogy akarom-e ezt, vagy nem, most éppen Dagobert bácsisat akartam generálni, de egy kövér fickó ugrik cédék közé, hát nem igazán értette meg, de a kövér fickó és a cédék megvannak, a Dagobert bácsi hatás nincs. Majd még gondolkodom ezen, talán öntudatra ébred a képgeneráló hobbim is egy nap.

Azon is el lehet gondolkodni, hogy hány digitális bittel borzoljuk az analóg neuronjainkat ahhoz, hogy végre meglegyen a kellő mennyiségű jó minőségű firiss információ amit aztán prediktálhatnak. Ehh...

Demó.

Zene. Zene. Zene. Zene. Zene. Zene.

Román animáció.

kedd, október 01, 2024

az játék előrehaladottáról

Elkészült egy újabb vidió.

Jó két éve dolgozom a pályageneráláson. Mielőtt még nekifogtam ezen dolgozni, kellett néhány tesztpálya a többi algoritmus teszteléséhez. Ezeket az elején én építettem fel kézzel C++-ban, mindenféle primitívek egymás mellé rakásából. Ez elég jól működött, aztán amikor eljött a pálya generálás ideje, akkor persze egy jobb rendszert akartam. Igazából mielőtt nekifogtam a projektnek, végig gondoltam, hogy nagyjából mire lesz szükség és akkor úgy gondoltam, hogy ezt valamilyen megszorítás alapú rendszerrel fogom megoldani, nem lesz kedvem meghatározgatni a méreteket magam, hanem csak annyit, hogy mi mivel kapcsolódik és majd a rendszer kisakkozza, hogy akkor mekkora is az akkora. De mire eljutottam ahhoz, hogy dolgozzak is rajta, már nem tartottam ezt olyan fontosnak, elég jól működött az, hogy mégis csak meghatározott méretű és típusú elemeket rakosgatok össze, már csak a szabályokat kellett hatékonyan leírni. Az elején a szabályok json fájlokban voltak tárolva, de nehezen ment az, hogy egymásra hivatkozzanak (azaz, hogy mondjuk az egyik szabályt úgy hívják, hogy kis-ajtó és az kapcsolódjon a nagy-szoba szabályhoz, ugyanis nem tudtam kitalálni egy nomenklatúrát, azaz elnevezési szabályokat, néha a méreteket találtam fontosnak, néha a kapcsolódási pontokat, mondjuk kis-ajtó-előre, stb, mindig kellett keresgélni a json fájlban, több időt vett el a keresés, mint maguknak a szabályoknak a meghatározása). Ezért nekifogtam egy grafikus szerkesztőnek, amiben már könnyű volt a szabályokat kiválogatni, de aztán rájöttem, hogy ezek nem elég általánosak, ezért elkezdtem mindenféle behelyettesítési szabályokat is hozzárakni, aztán egyre többet és többet kísérletezgettem a rendszerrel és egyre több és több elemi primitívre lett szükségem. Szóval bevezettem jó sokat, az eredeti három primitívből (alapvető primitív, (mint mondjuk kocka, lépcső, valamely oldalán nyílt kocka, stb), szabály, ami alapvető primitívek és más szabályok sorozata és változó, amely ezeknek kombinációja és addig próbálkozik amíg egyet alkalmazni nem tud, vagy ha egyik sem megy, akkor hibát jelez) 31 lett (most nem fogom mindet leírni, majd ha véget ér a projekt, talán). Aztán ahogy egyre hosszabbak lettek a szabályok és több lett belőlük, rájöttem, hogy ez a grafikus szerkesztő sem jó, mert nehéz volt egész szabály családokat létrehozni és a válogatásuk is nehézkes volt egy kis listából több száz szabály közül kibökni pont azt ami kell. Meg néha ugye az is van, hogy egy szabálynak vannak különböző verziói, de azok abban is eltérnek, hogy egy hivatkozott szabály megfelelő verzióit használják, ezt a fajta függőséget is lehetetlen volt kifejezni, kézzel csinálni meg munkás volt. De leginkább szerintem az általános copy-paste hiányzott, szóval lemondtam a szerkesztőről, hogy majd lua-ban generálom a szabályokat, ez egy amolyan metaprogramozás. Aztán rájöttem, hogy bizonyos típusú szabályokat még könnyebben is generálhatnék, mondjuk azokat amelyek csak primitívekből állnak egymás után, na erre akkor a lua metaprogramozás metaprogramozásába kezdtem. Aztán kezdtem kapisgálni, hogy jó lenne, ha bizonyos döntéseket bonyolultabb logikával döntenék el, amit nem lehet kifejezni a rendszeremben, vagy nem könnyen. Szóval az előző vidió ugye arról szólt, hogy most már a szabályrendszer kiértékelése, azaz a pálya generálása alatt is meg tudok hívni lua függvényeket, amelyek elérnek valamennyi információt a kiértékelési fából és az alapján bonyolultabb logikát használhatnak, mint annyit, hogy most itt éppen mit próbálunk ki. De mint annyiszor, rá kellett jönnöm, hogy debugger nélkül gyengécske lua programozó vagyok, szóval leges legutoljára rájöttem, hogy jobb lesz, ha C++-ban is írhatok meghívható függvényeket és ha már úgyis itt tartunk, akkor már ne csak egyetlen szabályprimitívet bocsáthasson ki ez a speciális primitív maga helyett, hanem akárhányat. Ez kb. olyan, mint az önmódosító kód volt valamikor, csak nem kell odafigyelni a relokációra. Ezzel ugyanakkor bezárult a kör, visszajutottam oda ahonnan kezdtem, C++-ban tudok mindenféle geometriai primitíveket egymás mellé tenni, ha akarok és ez lesz a pálya. Persze még mindig ott van az az egész kiértékelős infrastruktúra is, amit persze egyre inkább megtanultam használni, de mégis csak értelmezhető valahogy ez az egész, hogy amit két évig csináltam, az haszontalan volt.

Ettől egy hétre eléggé elment a kedvem a melótól.

Talán most kerültem a legközelebb ahhoz, hogy egyszerűen csak feladjam az egészet és visszamenjek munkát keresni. Illett volna előre látnom, hogy olyan típusú döntéseket, mint, "hogy legyen két párhuzamos út, amelyek 5 lépésenként keresztezzék egymást és ha mindig vált a játékos, akkor mindig a másik útra tegyük a jutalmat, de a cél előtt váljanak szét legalább 10 lépésre és már ne legyenek láthatóak", nem fogok tudni kifejezni egy mezei kis környezetfüggetlen grammatikával, amelyben mindig is odafigyeltem, hogy ne lehessen keresni a térbeli pozíció alapján, csak a kiértékelés fát lehessen esetleg bejárni (mert a térbeli keresés lassú 3 dimenzióban). Így aztán a legkisebb kanyar messzire visz a céltól, ha utána sokat megyünk rossz irányba, persze tudok már rátartani a jó irányra más módszerekkel, de akkor már könnyebb lett volna ha egy okos tervet készítek előre és csak azt hajtom végre, nem kell megkeresni a kijáratot, ha úgyis tudod előre...

Na de 5 év után már illene letenni valamit az asztalra, szóval a kognitív disszonancia győzött, újra hegesztem a kis kódokat, már miután befejezem ezt a bejegyzést. A mostani példa meg egy olyan szerkezet, amit nagyon nehéz lett volna a régi módszerrel megcsinálni, a gömb nem összerakható kockákból, mondjuk nem is sikerült valami jól, de aztán kis csápokat rakni belőle a normál vektor irányába, még nehezebb lett volna régebben. Most csak írtam egy kis C++-t és minden megoldódott. Most így utólag nézem, hogy nem annyira diszkó gömb ez, mint korona vírus, de hát ez már csak ilyen.

Persze, most neki lehetne fogni az egész szabály kiértékelési folyamatot láthatóvá tenni a C++ natív függvényeknek, hogy újabb meta szintet vezessek be, de remélem most már tényleg nem kell semmi komoly új dolgot bevezessek és képes leszek megcsinálni a pályákat a rendelkezésre álló primitívekkel. Az a programozó dolga, hogy egyre hatékonyabbá tegye a munkáját, de tényleg el kell jöjjön egyszer az a pillanat, amikor azt mondja, hogy elég volt, így már mindent meg tudok csinálni amit akartam. Remélem nekem eljött ez a pillanat. Már csak ki kell találni a pályák szerkezetét, aztán valami játékmenet szerű sem ártana... Aztán hangok, vindóz, és végső finomítások. Van még meló bőven...

Ez a mém elég jól leírja, hogy mit tanultam az utóbbi 2 évben. :)

szombat, július 20, 2024

az játék előrehaladottáról

Megint tettem kis vidiót, sőt, még egy rövidet is, amit Blenderrel generáltam az éppen generált struktúráról.

Most éppen arról van szó, hogy végre elszántam magam és megcsináltam a két szuperprimitívet a rendszerbe, mégpedig a lua szkripttel definiálható primitívet, meg a sima szabadon repkedő primitívet. Ez utolsó logikus dolog lett volna már akár két éve is, de mivel szabályokat írok, amelyeknek minden primitívje egy-egy voxel primitívet bocsát ki és egymáshoz kötődik, egyszerűen nem volt értelme olyan primitívnek, ami a térben egy fix pontra helyez valamit, ugyanis minden alakzat bárhova rakható. Most viszont van egy új mód ahogy alakzatokat rakosgathatok le, mégpedig lua kóddal kiszámítva, hogy hova is kerülnek és ezért már van értelme fix pozícióra rakosgatni azokat, hiszen az a pozíció nem is annyira fix, kiszámolja valaki, csak nem maga a szabályrendszer. De persze a szabályokat be kell tartani, ha egy szabály hibásnak bizonyul és mindent vissza kell vonni, amit addig csinárt, akkor ezek a fixe helyre került alakzatok is visszavonódnak.

Ezzel most már tényleg úgy érzem, hogy végre minden elérhető amit akarok, ugyanis eddig mindig az volt, hogy meg akarok csinálni egy épületet, vagy labirintust, vagy valami egyebet és persze könnyű lenne lekódolni, de az eddigi szabályrendszerből mindig hiányzott valami. Most pl azon akadtam fenn, hogy azt akartam, hogy különböző magasságból induló lépcsők ugyanazon a magasságon érjenek véget. Ezt sehogy sem lehetett eddig megoldani, de mert bár állíthatok képzeletbeni falat a magasabban kezdődő fal végére, nehéz kiszámítani, hogy az mekkora is legyen, ha mondjuk a két lépcső különböző irányba halad. Amit most csináltam, simán csak össze tudom már hasonlítani a koordinátákat és az alapján írok egy döntést és kész. Ráadásul nem is volt nehéz implementálni, ez a sol3 library eszméletlen jó a Lua-C++ interopban.

Szóval mostmár tényleg csak meg kell tervezni a pályákat, remélem technikai limitációk már nem lesznek, csak az én képzeletem határait kell áttörni, de ahhoz szerencsére van elég referencia a neten, amit használni lehet.

Reméljük legközelebb már bemutatok egy pályát, aminek a struktúrája már nagyjából fix lesz. Kis részletek még valószínűleg sokáig változni fognak, ezért is csináltam mindent procedurálisra, hogy az apró részleteket (ami akár a méret szorzója is lehet) bármikor változtathassak, ahogy alakul ki a vizuális nyelv a fejemben. De a nagyobb struktúráknak már nagyon ideje kezd lenni kikristályosodni.

Ja igen, és végre rájöttem egy dologra, ami végig zavart, de nem tudtam megfogalmazni. A példaként elkészített Menger spongyában az a poén, hogy nem túl nehéz generálni a struktúráját (rekurzív kis kockákok ezek), talán még valahogy a létező szabályrendszerekkel is meg tudtam volna csinálni. Na de az, hogy erre még egy-két-akárhány más szabályt is rátegyek, az elképzelhetetlen lett volna a régi módszerrel, mert én kellett volna kombináljam kézzel a szabályokat. És persze olyanokat, hogy hely függő legyen, nem is igazán tudom hogy csináltam volna, szóval a gömb a kockában és annak egyik fele ilyen, a másik fele meg olyan színű, azt el sem tudtam volna képzelni. Na de lua-ban könnyű lekódolni és bár a vidióban nem az történik, hogy egy külső szabály hívja a lua-t, hanem a lua generál egy fix alakzatot, de ez működik azért már, majd legközelebb jobban bemutatom ezt.

szerda, május 29, 2024

az játék előrehaladottáról

Tettem új vidiót a játékról.

Ez most egy kicsit elméletibb jellegű, de mivel olyan ritkán sikerül készíteni egyet, ezért gondoltam senki nem haragszik meg. :) Itt a blogban egy kicsit többet is fogok filózni, mint amennyi a vidióba került. Egyébként egyetlen próbából felvettem a teljes hangot, olyan is lett, de 10 perc munka még mindig úgy tűnik, hogy elég egy vidió megcsinálásához. Aztán majd ha mesterséges intelligenciával generálhatom a hangot, akkor jobb is lesz, meg értelmesebb is és nem fog napokat tartani amíg kivágosgatom a nyenyegéseket belőle. Na majd ha komolyra fordul a dolog...

Szóval az van, hogy végre eldöntöttem, hogy mégis csak sétálós játékot készítek. Most már nagyon be akarom fejezni a játékot és nincs kedvem a szörnyikékkel is foglalkozni, még ha meg is van már írva a kódjuk nagy része. Inkább maradok a sétálgatásnál és megpróbálok beletenni valamiket amitől érdekes is lesz. Elvégre, a pac-man is sétálgatós játék, csak közben kis golyókat kell felszedegetni és futni kell a szellemek elől. Valamit kell majd nálam is gyűjtögetni és persze kapcsolókat kapcsolni, hogy haladni lehessen. Ilyesmik. Meg amúgy is az az ötlet, hogy megcsinálom a játékot és utána még fogom tovább fejleszteni, azaz updatelem. És ami nem fért bele az elején, az belefér később. De a fejlesztések már kevesebb munkát igényelnek egyenként, akár még amellett is tudom csinálni, hogy visszamegyek dolgozni. Mert hát nem igazán hiszek már abban, hogy ebből meg tudok élni, de talán ha még pár évig bővítgetem a játékot, a végére már kikerekedik belőle valami élvezetes. Szóval a vég csak a kezdet, mint az lenni szokott. De mindenképpen át akarok mihamarabb lépni ebbe az új fázisba.

Szeretném azt gondolni, hogy csak 1-2 hónap választ el, de hát ezt már régebb is gondoltam így és mi lett belőle, lassan 5 éve lesz, hogy nekifogtam a játéknak (bár igazán komolyan csak 2019 őszén kezdtem dolgozni, 2019 nyara még a lazázásról szólt, ami 2020-at tekintve lehet nem is volt olyan rossz ötlet).

A másik dolog meg az, hogy végre eldöntöttem azt is, hogy egyszerűsítem a pályagenerálási problémát. Lassan rá kellett jönnöm, hogy ahogy most csinálom, nem valami jól van. Nem is ez volt az eredeti tervben, én megszorítás megoldó algoritmussal terveztem létrehozni a pályákat, csak amikor a vizibilitást teszteltem, gyorsan írtam ezt a kis szabály alapú rendszert és úgy tűnt, működik jól és akkor már elkezdtem ebbe rakosgatni azokat a dolgokat amelyekről úgy éreztem, hogy hiányoznak. De túl sok gond van az előre meghatározott formákkal, nagyon nem akarnak úgy összepászolni ahogy én akarom, meg amikor keresgetik a megoldást, akkor is végig kell pásztázzák a voxelek terét, nem egy magasabb, térfogat szinten működnek, úgyhogy az a bizonyos megoldás kereső dolog amit beleírtam, eléggé szenved becsületes méretű feladatoknál. Na de már új rendszert nem írok egy ideig, ebből kell kihozni amit ki lehet, ami van. Szerencsére, ha fix méretű építőkockákat használok, akkor könnyebb pászítani az elemeket és könnyebb több előre meghatározott elemet elkészíteni és azok variálgatásával hazudni azt a felhasználónak, hogy itt beza a végtelen lehetőségek tárháza van. És egyébként így könnyebb nekem is elképzelni a dolgokat, amikor szabad volt minden, beza bonyolult algoritmusokat kellett megcsinálni abban a leíró nyelvben amit csináltam, hogy két kocka végre összeérjen jól, itt megy ez magától és szerintem még így is tudok majd érdekes dolgokat generálni. Reméljük nem fog sok hónapot tartani már.

Egyébként most is az van, hogy mindenféle absztrakciókat húzok a kész rendszer fölé, mert programozni könnyebb mint azt mondani, hogy akkor ez most így jól van. Kicsit úgy érzem, hogy nagyon alábecsültem ezt a feladatot. Mostanra már megértettem, hogy kb. az volt a logikám, hogy mivel tudom, hogy kell egymásra rakni a téglákat, ezért meg tudok tervezni egy házat is. Csak azt felejtettem el, hogy igaz, hogy a ház megépítéséhez téglákat kell egymásra tenni, de a terv elkészítéséhez érteni kell azt, hogy mit is jelent a ház. És ez nekem teljességgel hiányzik, szóval hiába generálok valamit, ami 90%-ban úgy néz ki, mint egy ház, nem tudom mi az a 10% ami hiányzik. Persze, csinálhatom azt, hogy megelégszem a 90%-al, de nem tudom, hogy a játékosoknak is elég lesz-e ez. Meglátjuk.

Mindenesetre építgetem az absztrakciókat és amikor már úgy érzem, hogy házak készülnek vele, akkor megállok és akkor már csak tovább kell futtatni az algoritmust és még több házat generál.

Most még a filózásba is belefáradtam, most be is rekesztem ezt a bejegyzést. A lényeg csak annyi, hogy dolgozom én és tuti befejezem a játékot, csak ki kell várni. :)

Ja igen, és a vidióban azt mondtam, hogy bugos a rendszerem, de aztán rájöttem, hogy nem bugos, igenis jól működik, meg is írtam kommentben, hogy azért mutat kevesebbet a pályából, mert csak annyi látszik a kezdőpontból, anélkül, hogy kimennénk a pályát magába foglaló térfogatból. Ha növelem egy kicsit a térfogatot, akkor látszik az egész. Na reméljük nemsokára lesz valami látványosabb pálya is amivel ezt bemutathatom. Addig is, lehet nézni a rövid vidiókat amelyekben tesztelgetem az algoritmusokat. Gyakran ezek sem sikerülnek valami jól, pl. ez utóbbi rendesen kiégett, de mivel kb. 3 órát dolgozik rajta a Blender míg megcsinálja a 4k-s vidiót, ki nem dobjuk, majd legközelebb jobb lesz. :)

csütörtök, május 16, 2024

gameloft kolozsvár 2010-2024

Felröppent a hír, hogy bezár a kolozsvári Gameloft iroda. Bár én már vagy 8 éve (2016 áprilisától) nem dolgoztam ott, azért valamennyire mégis rosszul esik ez a dolog. Pedig akár lehetnék kárörvendő is, meg "ugye megmondtam", de mégsem vagyok boldog. Pedig nem hiszem, hogy valaha is visszamentem volna, még a tudatalattim sem hitte el, hogy egyszer még újra egy jó hellyé válhat a cég ahol érdekes dolgokon lehet dolgozni. Annyi a szerencsém, hogy elkaptam a kolozsvári aranykort és mivel az első cég volt ahol dolgoztam, egy elég atipikus bevezetést kaptam a céges világba, ami talán a hasznomra vált később. Talán nem.

Azt hiszem, az általános következtetésektől el fogok most tekinteni, mert hát inkább olyan dolgokat tanultam, amelyek némileg rombolják azt az idealizált világot amit a cégek próbálnak terjeszteni magukról. Persze, mindenhol szürkébb a valóság mint ami a prospektusban van, néhol persze az van, hogy a prospektus túloz nagyon, nem lehet utolérni, néhol meg a valóság a nagyon fekete, itt azért nagyon sokat jelentett az, hogy az emberek igazán szerették amit csináltak és együtt könnyebb túllépni a szar dolgokon.

Szóval inkább leírom azt, hogy miken dolgoztam.

Én azon kevesek (talán 8 ember) egyike voltam, aki ott volt a stúdió nyitásánál, 2010-ben. Éppen Románia legjobb egyeteméről (most, akkoriban nem voltak ezek a listázások annyira témában, vagy csak én nem tudtam róla) jöttem el, igen szar szájízzel. Ehhez képest játékokon dolgozni és rendesebben megfizetve lenni maga volt a mennyország. Először az volta a dolgom, hogy a NOVA ipades verzióját (ami már nagy felbontású volt) visszaportoljam a iphone-os verzióba, ami szintén nagyon akarta támogatni az éppen megjelenő iphone 4-es nagy felbontását. Hát, eltartott ez egy darabig, de összejött, persze a grafikában volt segítségem. Aztán beraktak a bukaresti fejlesztésű NOVA2-re valami bluetoothos hálózati cuccot írni (ezt teljesen el is felejtettem, míg rá nem jöttem, hogy a mobygameson van érte kreditem), ez egyébként egész jól ment, emlékszem, mindenki mindig szidta a bluetoothot, de akkoriban iphone-on egészen jól ment a dolog. Aztán ha már volt némi tapasztalatom a NOVA2-vel, akkor egy update-t is kellett gyártsak hozzá, amelyben vásárolni lehetett két új multiplayer pályát (amit persze nem én készítettem, hanem a profi modellezőink Kolozsváron) és kijavítottam egy csomó bugot is, amelyek benne maradtak a végső nagy hajrá közben. Emlékszem, vagy 15 buildet kellett leadni amíg meg nem unták, hogy velem fixáltassák meg az összes bugot ami a játékban maradt, már az elsőben megcsináltam mindent ami eredetileg a feladatom lett volna (a két új pálya integrálása, az új menük, fizetés integrálás, ez-az). Jó, néha fixáltam bugot úgy is, hogy befejezhetetlenné vált a játék, de hát nem tehettem róla, egyszer se játszottam végig és hát elég nagy spagetti volt az egész. Azért sokat tanultam belőle persze.

Ez kb. az első 6-8 hónap volt. Aztán volt egy rövid ismerkedés a 3DS devkittel, de utána eldőlt, hogy megkapja a kolozsvári stúdió az Asphalt 6 portolását PS Vita-ra, persze más néven, ja és a VITA megjelenésére el kellett készülni (azaz launch title voltunk). Elég mély víz volt, én csak a közepén kerültem bele a projektbe, csak a maradékot kaptam programozni, szóval jó sok interfészt írtam, meg némi hálózatokat, meg fene tudja még mit. Mondjuk gyakran volt olyan, hogy megindult egy bug, hogy hibás érték jelenik meg, nosza javítsam ki. Persze a hibás eredmény azért íródott ki, mert hibás volt a számítás mögötte, de ha már úgyis én kell kijavítsam a bugot, akkor letisztázhatnám, hogy mit és miért kéne ott kiszámolni. Emlékszem olyan bugok voltak az eredeti kódban, hogy kis szerencsével egy-két kör után ki lehetett maxolni az autódat, annyi pénzt össze lehetett szedni. Hiába, a szorzók nagyon mocsok kis dolgok tudnak lenni. :)

Aztán elkezdtünk egy stratégiai játékon dolgozni, itt mivel már az elejétől ott voltam, megkaptam a mesterséges intelligenciát. Ez jó volt, nagyon poénosak a mesterséges intelligencia bugok, aztán amikor már kezd játékszerűvé lenni a dolog, egészen érdekes is tud lenni. Aztán amikor már jól ment a dolog, puff, átraktak a bukaresti nagy projektre, a The Dark Knight Risesra. Úgy emlékszem, én voltam kb. a 15. programozó és még utánam is jött néhány ember. Én az utolsó 4 hónapban dolgoztam rajta, Bukarestben laktam, néha egy harkovi lakótárssal, aki valami hálózatos projekten dolgozott itt. Na, ez már nagyon söprögető munka volt, minden szart csináltam ami senkinek sem kellett. Viszont itt kezdtem sok hang integrálási feladatot kapni, amire rá kellett jönnöm, hogy nagyon élveztem. A hangok azért szoktak a végén integrálódni egy játékba, mert általában végleges animációkhoz szokás hangot gyártani és az animációk csak a végén válnak véglegessé. Viszont akkor aztán nagyon sok jön. Azért tök jó volt, úgy játszani a játékot, hogy egyetlen effektus hallatszik és azt nézem, hogy jókor szólal-e meg, jól áll-e meg és indul-e újra. Ja, meg interfészt és fizetős dolgokon is dolgoztam, ez már tényleg az én keresztem lett, pedig soha nem kértem. :) Egyébként egész jó kis játék lett ez, talán mobilokban az egyik igazi AAA játék volt abban az időben, azt hiszem, vagy 60-an dolgoztunk rajta. Ráadásul megismerkedtem egy budapesti designer sráccal, aki aztán visszament Budapestre mert ott is nyitott stúdiót a Gameloft, amit már rég be is zárt. Az a 4 hónap kb. arról szólt, hogy vagy dolgoztam, vagy söröztem ezzel a sráccal (néha már az úton megkezdtük, egész be a Győzelem térig, néha busszal bementünk a régi központba és ott egy kis kocsmában, ahol 100 féle sört lehetett inni variálgattuk a búzasöröket az ipákkal és belga gyümölcsös cuccokkal, ekkor már Pesten megkezdődött a kézműves sör forradalom, de nálunk még nem híre-hamva se volt), vagy aludtam. Néha meglátogatott E hétvégenként, akkor nem dolgoztam.

Amikor véget ért a betmen játék, ősszel megnéztük a moziban és láttuk, hogy még arra sem voltak hajlandóak, hogy elmondják nekünk, hogy ki lesz az igazi főellenség (gondolom nem írok le nagy titkot, hogy Selina az, nem Bane, féltek, hogy kiszivárogtatjuk a nagy csavart a végén). Én egyébként semmit sem láttam a film készítőivel történő kommunikációról, csak néha nézegettem, hogy milyen fura pályák jelentek meg, ilyen hülyeséget tuti csak a filmből meríthettek. Szerintem ki is dobták az érdekesebb dolgokat a végső játékból, bár ezt se játszottam végig soha, azért a szerkesztőben végig kellett kolbászolni minden pályát, amikor rakosgattam be a pályaelemek hangjait.

Aztán amikor visszajöttem Kolozsvárra, a stratégiai játék már szinte kész volt, de rájött a vezetőség, hogy Clash of Clans klónt kéne gyártani. Én megint csak sokadik programozó lettem a projekten, de szerencsére aki átvette a mesterséges intelligenciát tőlem, az el is ment nemsokára, szóval miután ő átírta azt amit én csináltam, én harmadjára átírtam azt amit ő csinált. Elég nagy katyvasz lett belőle, ráadásul odatettek, hogy az útkeresést egy harmadik ember írja, aki nagyjából az egyik első programozó volt a projekten és válogathatott abban, hogy mit akar csinálni. Ebből még nagyobb katyvasz lett. De azért talán ez volt a legélvezetesebb projekt amin dolgoztam és itt végre elég sok mesterséges intelligenciát írtam (persze ez csak egy vicces megnevezés arra, hogy az ember külön rendszert ír az ifek menedzsmentjére, amelyek az animációkat pakolgatják egymás után). Meg hangot is integráltam, ez igazán vicces volt ebben az esetben, néha több tucat kis emberke mozog egyszerre, nem teljesen triviális, hogy ne legyen katyvasz belőle. Aztán egy év késéssel megjelent a Total Conquest és bár soha meg sem közelítette a másolt játék sikerét, azért azt hiszem elég sikeresnek számított a mi berkeinken belül is.

Viszont amikor már az updatelési fázisba ért a játék, egy idő után meguntam a szarevést és elhúztam a Garminhoz, ami egy tök jó hely volt, de egyszer még visszacsábítottak a Gamelofthoz azzal, hogy Witcher 3-at készítsünk telefonra. Nagyon pöpec kis játék volt az, amikor én becsatlakoztam, de ekkor is már sokadiknak érkeztem, mesterséges intelligencia már nem jutott, de jutott jó sok hálózatok meg fészbuk integrálás. A hálózatokkal az a baj, hogy a szerverek néha megadják magukat és olyankor persze a programozó rontott el valamit, nem a szervert kell újraindítani. Amikor már sokadszorra baszogattak olyan dolgok miatt, amelyekről nem tehetettem, leléptem megint (és utoljára). Mondjuk az is volt, hogy én annyira mesterséges intelligenciát akartam írni, hogy a hálózati rész is egy teljesen szabadon konfigurálható viselkedés fával implementáltam (amit a játék mesterséges intelligenciájából vettem át), de ez nem nagyon tetszett a bukaresti hálózatos programozóknak és elkezdtek mindenféle okot felhozni, amiért nem lesz ez így jó, amelyekre persze én tudtam volna megoldást találni és amúgy is mindig működtek a dolgok amiket csinálnom kellett, általában nem is szálltam el a megoldással, főként annyira nem amennyire sokan hajlamosak voltak, bár ez a behavior tree alapú hálózatkezelés azért kicsit unortodox volt, azt meg kell hagynom. Ez a játék végül Iron Blade néven jelent meg, de közben elveszítette a lelkét.

Ez után már nem készültek nagy játékok Kolozsváron, csak pár kisebb cucc, meg egyre inkább a többi stúdió munkájába kellett besegíteni, de ez azzal is járt, hogy megszűnt a túlórázás is.

Ezt az egészet így leírva, azt hiszem az egyik legfontosabb tanulság az, hogy akkor érdemes egy projektbe beszállni, amikor indul, utána már csak a szarevő melók jutnak és ezt eléggé alá is tudom írni. Persze igazán nagy cégeknél több projekt indul, könnyebb váltani, ha van hajlandóság rá minden oldalról. Én mindenesetre nagyon szerettem volna grafikát programozni, szerintem értettem is hozzá legalább annyira mint bárki más ott (tekintve a demós hátteremet is), de még csak közelébe sem kerültem (egyszer kaptam egy feladatot, de csak azért, mert aki a grafikát programozta nem tudta megoldani és nagyon nehéz is volt a létező rendszerben, a megoldás az volt, hogy kivettük a gondot okozó dolgot a játékmenetből, úgyis kifelé állt a rúdja). De aztán csináltam egy csomó olyan dolgot is, amiről nem gondoltam, hogy élvezni fogom, pl. a hangok, de igazából az a legvagányabb, amikor az ember látja, hogy az ő munkája is hozzátesz a projekt fejlődéséhez, még ha nem is ő csinál valamit, az egész projektet magáénak érzi. Aztán persze amikor rossz döntések születnek, akkor az ő szívében is forgatják a kést. Én ezt nem fogadtam el igazából, amikor mindig tovább és tovább mentem cégről cégre. De így megismertem egy csomó új embert, dolgoztam sokkal nehezebb feladatokon is, sokkal furább architektúrákon is, rájöttem, hogy nem csak a francia főnökök lehetnek párhuzamosak azzal ami a dolguk lenne, hanem a német meg az amerikaiak is. Állítsuk meg Brüsszelt. Meg Párizst. Meg Kansast. Meg Stuttgartot. Meg Kolozsvárt is. Egy percnyi tiszta kocsmazajt megér azért a Gameloft is.

Annyi még, hogy egy másik cégről sem fogok írni ebben a blogban, a többi hely ahol dolgoztam, sokkal kiegyensúlyozottabb volt, ugyanakkor sokkal unalmasabb is. Persze néha az unalom jó. Néha meg nem. Az biztos, hogy a Gameloftban az emberek voltak a legjobbak, szerencsére még most is jó haver vagyok jó néhányukkal, időnként még találkozunk is sörözni. Remélem ez még sokáig így marad.

Ja igen, és még egy valamit megtanultam. Bármilyen problémát meg tudok oldani, ha eleget dolgozom rajta. Talán ezért mertem belevágni a saját játék fejlesztésébe is, meg talán ezért is tart ilyen sokat. :) Na de egyszer vége lesz és akkor jó lesz. Vagy nem. :)

csütörtök, február 08, 2024

az játék előrehaladottáról

Tettem fel új vidiót a játék készültéről.

Most csak nagyjából egy hónapnyi munka volt az előző vidió óta, de egy elég fontos változás állt be, ezért összedobtam egy próbából a vidiót, most meg írom a blogot hozzá.

Szóval az történt, hogy nekifogtam kis teszteket készíteni bizonyos pálya típusokhoz, egyébként megoldottam egy olyan problémát is, amin szinte azóta gondolkodtam, amióta nekifogtam a pályagenerálásnak. Szóval én ugye szabályokat írogatok és azokat kiértékelem. A kiértékelés mélységi bejárást jelent, mert az ugye természetes, a programok forrás kódja is mélységi bejárásban hajtódik végre, azaz mondjuk "fentről lefelé" és amikor egy szabályt talál, akkor abba "belemegy" és végrehajtja amíg minden utasítást végrehajtott, vagy hibát talál. Ez szép, csak van egy baj vele, hogy ha egy szabály nagyon ágas-bogas geometriát generál, akkor elfoglalja a teret a többi szabály elől, mert mondjuk olyan helyekre is befurakodik ahonnan egy következő szabály kiértékelése is generálhatna valamit. Ezért lehetne mondjuk azt csinálni, hogy párhuzamosan értékelem ki a szabályokat, azaz szélességi bejárást végzek, de ezzel több probléma is van, az egyik az, hogy még mindig egymás útjába állhatnak, meg akkor nem hathatnak egymásra mondjuk úgy, hogy az első beállít valami változót amiről a másodiknak tudnia kéne, ilyenek. Meg persze implementálni is nehezebb. De azért mégis csak jó ötletnek tűnt az, hogy a kiértékelési fát mindenféle random pontokon terjesszem ki. Na és ezt sikerült megoldani végre, ugyanis a szabályok paraméterezésére már régebben megírtam, hogy a kiértékelési fa egy ágát be tudják küldeni egy szabálynak, de most azt is megcsináltam, hogy ne csak az ágát, hanem a gyökerét is, ráadásul van egy olyan lehetőségem is, hogy keresek ezeken az ágakon megjelölt leveleket és mondjuk kiválasztom a legközelebbit vagy a legtávolabbit egy másik levéltől (térben). Na most már nem csak távolság alapján választhatok, hanem random módon is és kiértékelés közben megjelölhetem a leveleket úgy, hogy itt van egy kapcsolódási pont, így gyakorlatilag bárhol kiterjeszthetem a fát. Ez igazi sikerélmény volt, még ha nem is tudtam elmagyarázni könnyen érthetően.

Szóval készítgettem ilyen kis teszteket nagyon egyszerű, egyen méretű elemekből, de nagyon fárasztó volt a szabályokat újra használni, pedig csináltam egyszerű metaprogramozási primitíveket is. Mégis csak forrás kódban gondolkodom én, megszoktam a lehetőségeket amelyeket ad, az általam készített szerkesztő igazából csak egyetlen igazi segítséget nyújtott, mégpedig a szabályokat egy listából lehet kiválasztani, nem kell megjegyezni őket. Sajnos ezek a listák igencsak megnőttek, erre kitaláltam a közösségeket, de még így is túl nehézkes a rendszer, arról ne is beszélve, hogy nincs benne keresés és átírás funkció sem, sem másolás és beillesztés, ami minden szöveg szerkesztő legfontosabb funkciója. Szóval már régóta gondolkodtam arról, hogy mégis csak vissza kéne térni a LUA-hoz, hogy szkripteljem, azaz valamilyen szinten metaprogramozzam ezeket a szabályokat, de mindig arra gondoltam, hogy mennyi energiát is beleöltem a szerkesztőbe és persze már egész gyorsan tettem bele az újabb és újabb primitívek paraméterezését (ami mondjuk egy forráskód alapú rendszerben egyébként is zéró munka lenne). De aztán csak győzött a józan ész és két nap alatt meg is lett a LUA programozás, utána több időbe tellett az, hogy átírjam a teszt eseteket, amivel ellenőrzöm, hogy a rendszer ugyanúgy működik-e mint régen, ha valami komolyabb változtatást eszközölök.

Na de most már kész van minden, gyárthatom a szabályaimat kódból, reméljük végre tényleg jól begyújtom a rakétákat ami a pályák generálását illeti. Persze azért arra is oda kell figyelni, hogy megint ne szálljon el velem a ló, most még könnyebb kiterjeszteni a rendszert, már így is minden bekerült ami eszembe jutott az utóbbi időben, egyes dolgok fölöslegessé is váltak, de nehezebb kivenni őket mint nem használni. :) Viszont kicsit félek, hogy most hogy imperatív módon is generálhatom a szabályokat, kicsit rá fog szállni a rendszerben rejlő deklaratív lehetőségekre.

Na jó, ez most nagyon absztraktra sikerült, szóval az a lényeg, hogy dolgozom még...

Más. Kezdtem készíteni kis rövid jótúb vidiókat is néhány ilyen kísérlettel, egy-egy még kapott is pár megtekintést. Szóval kicsit gyakrabban lesznek ezentúl vidiók arról, hogy éppen mivel szórakozom. Egyébként Blendert használok a rendereléshez, de valami eszméletlenül megbúgatja a szegény gépemet, mondjuk nem is igazán értek hozzá, hogy hogy kell okosan renderelni, 4k-ba nyomom ki a 300 képkockát, minden képkocka 25-30 másodpercet tart, szóval olyan két óra az egész. Kicsit fogom is a fejem, hogy ez talán túlzás, de jó lenne kicsit tanulgatni a Blendert is, később még hasznos lesz, ha mondjuk kicsit bonyolultabb anyagokat akarok a kis kockákra kifeszíteni, meg esetleg 3d filmet akarok készíteni, mindez relatív egyszerű beállítás Blenderben. Egyébként elég vicces, de gyakran hibásan rendereli a kis kockákat, amikhez én írtam kézzel egy kis python szkriptet, mert a szerkesztőben minden jól néz ki, de a renderelőben egy-két kocka lemarad, vagy fekete. Mondjuk már maga az import is nagyon sokat tart, lehet, nem egyenként kéne berakni a cirka 4-5000 kockát, mert mindegyik után újraszámolja a bvh-t, vagy akármit, amit használ a rendereléshez, de az az igazság, hogy élvezem, hogy kicsit hibásak a renderek, mert így legalább őszinte maradok magamhoz, hogy még lenne mit dolgozni az egészen, de most egyelőre ennyi időm és kedvem volt. Meg amit renderelek sem olyan eget verő cucc, szóval ilyen keleti filozófia az egész, hogy a tökéletesség unalmas.

Na jó, mostmár nagyon be kell fejezni ezt a bejegyzést, várnak a kis kockák, legközelebb egyre több és szebb lesz. :)

csütörtök, december 28, 2023

ha nem elég a 8 bitted, toldd megg egy lépéssel

Van itt ez a vidió, egy fickó mesél benne angolul (néha pár román szót betűzve) a jugoszláviai 8 bites játékok korszakáról, azaz nagyjából a 80-as évekről, meg egy kicsit Romániáról is. Kicsit nyers a fickó stílusa, de vicces, hogy valamennyire illik az akkori érzésbe az előadásmódja. Akkor sem értettünk mindent, de kiegészítettük a fantáziánkkal.

Örvendek, hogy volt annyi eszük, hogy fölvegyék az előadást, aki nem teszi ezt meg, az hiába is ad elő, minden nappal feleződik az információ.

Demó.

Zene.

Zene.

Drónos.

Árvizes.

péntek, december 22, 2023

az játék előrehaladásáról

A tegnap új vidiót tettem fel a játék készüléséről.

Idén mindössze két vidiót termeltem, nem valami sok, de dolgozni azért dolgoztam eleget, most egy kicsit hosszabban fogok írni, mert idén már nem fogok többet dolgozni és talán az sem árt, ha egy kicsit jobban kiöntöm a lelkem a témában.

Szóval még mindig a pályageneráláson dolgozom. Amikor a projekt kezdete előtt végig gondoltam a teendőket, úgy gondoltam, hogy nagyjából két hónap alatt befejezem ezt a dolgot. Nos, 2022 július 22-én tettem fel az utolsó vidiót aminek nem volt köze a procedurális generáláshoz, tehát olyan 17 hónapot dolgoztam rajta. Persze, még az sem biztos, hogy befejeztem, de erről később.

Szóval miért is kell nekem procedurális pálya generálás? Bizonyára 17 hónap alatt tervezhettem volna kézzel is 20-30 pályát és akkor már sokkal előbb lennék, talán a játék is be lenne már fejezve. Nos, ez így igaz, de ez a projekt nekem egy kicsit arról is szól, hogy ami nagyon érdekel, arra szánok időt, hogy felfedezzem, vagy megértsem. Márpedig a pálya generálás egy olyan dolog, ami régóta érdekelt, de sosem tudtam beleásni magam. Most szerencsémre lehetőség adódott, hogy addig ássak amíg kedvem tartja és hát jó mélyre sikerült leásnom. Bizonyára ha kézzel terveztem volna meg azokat a pályákat, abból is sokat tanultam volna, de az automatikus generáláson dolgozva is sokat tanultam, ráadásul azért így is szükség lesz arra, hogy sok mindent kézzel csináljak.

Van azért egy másik ok is. Ha írok egy jó pályagenerálót, akkor elvileg végtelen mennyiségű pályát generálhatok, ami jó pályák esetén egy jó dolog. Ha unalmasak lesznek a pályák, akkor fölösleges a végtelen számú, senki sem fog többel játszani mint 2-3. Egyelőre még nem túl jók a pályák, de nem is tettem túl magasra a lécet, ebben az első kísérletben csak egyszerű téglalap alakú szobák összeillesztéséből készült pályákat gyártottam, főként a Wolfenstein 3D-t használva inspirációnak. Igazából még csak nem is érik el azt a szintet a pályáim, mert tényleg csak véletlenszerűen vannak összeillesztve a téglalapok, mert már ezzel is volt elég gondom. Persze, készítettem néhány kisebb tesztet néhány bonyolultabb struktúra (mint mondjuk egy nxn-es cellákból álló fix szobaméretű labirintus, vagy egy 2xn-es szoba elhelyezés középen folyosóval, vagy csillag alakú berendezés) elkészítésével és azok mentek a kis tesztben, de a véletlenszerűen generált illesztések jobban feladták a leckét. Ugyanis már a munka elején kezdtem aggódni, hogy hogyan is fogom megoldani a rövidítések problémáját, ugyanis ahogy én a kifejezéseimet kiértékelem mélységi sorrendben, nem tudnak egymásról az egyes primitívek a különböző kiértékelési ágakon, csak annyit tudnak, hogy elkerüljék egymást. Semmiképpen nem akartam azt, hogy keresgéljek a térben kapcsolódási pontokat, mert az nagyon lassú és egy csomó gonddal is járna. Ezért sokat gondolkodtam ezen a problémán, találtam is rá néhány potenciális megoldást, de egyik sem volt elég jó, a mostani módszer sem olyan nagyon jó, de azt hiszem, megteszi. Azért van szükség a kiértékelési fa ágainak a kommunikációjára, mert ezzel tudom összekötni a szétágazó szobákat és arra meg azért van szükség, hogy rövidítéseket hozzon létre két térben közeli szoba között, azaz ha mondjuk van egy elágazás (azaz egy szobából két ajtó nyílik, (két különböző falon, de akár egy hosszú falon két ajtó is nyílhat, ha van hely)), akkor az egyik ajtót választva és végig küzdve a soron következő szobákat, ne kelljen már visszamenni az elágazásig, mert az unalmas, ugyanis már mind kiöltük ott a szörnyikéket. Inkább lehessen a másik elágazásra átmenni valahol és onnan folytatni a gyilkolászást, persze ha valaki mindent meg akar keresni a pályán, akkor valószínűleg muszáj lesz visszamennie már látogatott részekre, de az már az ő dolga, hogy betanulja, hogy milyen sorrendben érdemes választani az elágazásokban az irányokat, hogy a lehető leggyorsabban bejárhassa a pályát. Szóval úgy érzem, ilyen rövidítések nélkül eléggé nehéz fenntartani az adrenalin szintet, ezért mindenképpen meg kellett oldani. A mostani megoldás egyébként valami olyasmi, hogy a kiértékelés során a már kiértékelt részekre át lehet küldeni egy referenciát a kiértékelés alatti szabályba és az végezhet néhány egyszerű műveletet, pl. kereshet egy bizonyos címkével ellátott primitívek közül a lehető legközelebbit vagy legtávolabbit, meg megpróbálhatja összeadni a térfogataikat (esetleg a falakra elhelyezett markereknek) és megnézni, hogy van-e hely az összeadott térfogatnak is, sőt még kérhet ajtó nyitást is a már létező primitív falára. Lehet, hogy egyszer oda is el fogok jutni, hogy enumerálnom kell a címkézett primitíveket és ezt az enumerációra ki kell terjesztenem a backtrackinget is, ezen is gondolkodom most.

Egyébként nagyon érdekes játék ez, hogy mit tudjon a rendszer, néha úgy érzem, hogy már elég mindent tud, ha van valami problémám, akkor inkább próbáljam megoldani a létező dolgokkal, máskor meg minden ami eszembe jut, bekerül. Az elején, csak három primitívre gondoltam, az alap formák, a szabályok, amelyek mindig formával indulnak (hogy fixáljam azt, hogy a térben hol is fogom kiértékelni, de időközben ezek a formák lehetnek átlátszóak is, szóval ez nem túl erős megkötés) és a változók, amelyek véletlenszerűen felvehetik egy szabály vagy egy forma értékét. Na, most már van vagy 20 ilyen primitív, majd ha véget ér a fejlesztés, mindenképpen fogok készíteni egy vidiót arról, hogy mire is képes a rendszer, mindenesetre mindenféle dolgokra lett szükségem. Időközben rájöttem, hogy én nagyon programozó szemmel nézem még mindig ezeket a feladatokat, szóval még végrehajtási feltételeket is tettem be, olyanokat mint pl ha sikerült egy al-szabályban létrehozni egy primitívet, akkor érjen véget ez a szabály sikerrel (ez egy fajta "if", de van ennél sokkal explicitebb "if" is) vagy a büdzsé ha nem merült ki, akkor érjen véget a szabály sikertelenséggel amikor újra belép a backtracking és megpróbálja kielégíteni a szabályt, meg ilyenek. Azt kell mondjam, hogy igazán élvezem is ennek a szabályrendszernek a pofozgatását, pedig nem egy túl vicces dolog, általában tépem a hajam, hogy miért nem mennek úgy a dolgok ahogy szeretném, aztán mindig találok egy esetet amire nem megy az algoritmusom. Odáig jutottam, hogy kénytelen voltam debuggolási funkciókat beépíteni, egészen pontosan, brékpontot, meg lépésenkénti végrehajtást, hogy lássam pontosan mi történik. Sajnos nem volt valami jó döntés ez a szerkesztő amit írtam, jobb lett volna, ha inkább forráskódszerű valamit írok, még ha nem is imperatív nyelven, hanem deklaratívon, de nagyon hiányzik a teljes forrás átlátása, meg a keresés és kicserélés. Kommenteket kell már fűzzek gyakran a szabályok primitívjeihez, mert erőst felejtek és persze már meta-programozásra is szükség van, ami nagyjából csak annyit csinál, hogy kicserél primitíveket, vagy változókat, vagy szabályokat.

Szóval nem mondanám, hogy jól mennek a dolgok, de azért kitartok már ennél a procedurális generálásnál, mert lehetővé tesz még egy dolgot azon kívül, hogy rengeteg pályát lehet generálni. Mégpedig azt, hogy minőségileg másfajta pályák generálását teszi lehetővé, ugyanis a klasszikus pályaszerkesztésben az ember kénytelen koncentrálni egyetlen helyes bejárási útvonalra, mert olyan munkás a processz. Ha generáljuk a pályákat, akkor elvileg akárhány útvonalat generálhatunk a pályán belül, ami sokkal inkább megfelel a valóságnak, ugyanakkor persze ennek az az ára, hogy az egyes útvonalak nem annyira jól tervezhetőek és nem is annyira szépek és részletesek. De ezzel én már rég kibékültem, a falaknak még mintázata sem lesz, csak egy fix színe (legalábbis amíg meg nem gondolom megint magam), szerintem úgyis a geometria és a világítás adja a pálya érdekességét, nem az, hogy mi van a falon. Persze amíg NaissanceE klónt akartam írni, ez jól adta is magát, ugyanis ott is egyszínűek a falak. De megint megváltoztattam a tervet, mégsem sétáló-szimulátort írok először, mivel oda valami nagyon egyedi pályák dukálnának, inkább megmaradok az fps-ek világában, ahol nem csak a világ számít, hanem a szörnyikék is, akik benépesítik. Persze ezeket vásárolni fogom, az nagyon nem az én asztalom, hogy készítsek is ilyeneket, bár gondolkodtam egy kicsit generált robotokon (petscii robots mintára).

Hmm, én eredetileg arról akartam írni, hogy milyen jó, hogy a saját fejem után mehetek ebben a kérdésben is, de megint elvesztem a technikai részletekben. Fogok még filózni itt eleget, főként ha véget ér a fejlesztés. :)

hétfő, december 11, 2023

doom (1993)

Tegnap volt 30 éve, hogy megjelent a Doom shareware verziója.

Sokan sokat írtak róla azóta és most is (ez egy jó magyar cikk az évfordulóra), még egy kis beszélgetésre is összeült a fődizájner és a főprogramozó, én inkább csak egy-két személyes gondolatot osztok meg róla, amíg el nem enyésznek egy plazmafegyver záporában.

Kevés játék esetében emlékszem arra, hogy mikor láttam meg először, de erre emlékszem, még ha az évre nem is. 94 vagy 95 január-februárja lehetett, volt egy kiállítás az öntöde kantinjában, talán ExCo volt a neve, vagy valami hasonló. Azt hiszem, a Server vagy talán a BB Comp standján volt egy számítógép, azt hiszem egy 486 DX2 és Molnár Laci ült előtte és az volt a dolga, hogy játsszon játékokkal, hogy mutassa milyen vagány dolgokra képes egy számítógép. Ott, az egyik shareware cédéről került elő a Doom és emlékszem, hogy teljesen lenyűgözött a hangulata. A Wolf3d-t ismertem már és egyébként ha jól emlékszem, Laci többet játszott azzal mint a Doommal, mert színesebb volt és nem olyan sötét és véres, de azt azért megértettem én is, hogy a Doom a jobb játék és minőségi ugrás a Wolf3d-hez képest, még ha nem is értettem igazán, hogy mi is a lényegi különbség köztük.

Az biztos, hogy itt még nem volt saját PC kompatibilis számítógépem és amikor lett, az sem vitte valami jól a Doom-ot, meg akkoriban baromi nehéznek és ijesztőnek is találtam, de arra azért emlékszem, hogy az első 386-osomon azért végig vittem könnyű fokozaton és nagyon büszke voltam magamra.

A többi már történelem, máig imádom a Doomot és klónjait, bár azért a Halo átvette a koronát és az új részeket nem is próbáltam, bár a 2016-ost megvettem anno és persze a 90-es években sokat bújtam a játékmagazinokat minden kis infót felszippantva erről a világról. És a Duke sem győzött meg, inkább szeretem a sötét és félelmetes világot mint a rágógumis macsó világot amit ez utóbbi képviselt.

Ja, és anno megvettem a Doom enginejéről írt könyvet és ha jól emlékszem, két nap alatt kiolvastam és levontam a következtetést, hogy ha 93-ban meg lehetett csinálni a Doomot 1 év alatt, akkor 2019 körül nekem is menni fog a saját voxeles játékom 2-3 év alatt és persze 4.5 év után még mindig csak a technológiát hegesztem, de persze ez történik akkor, ha az embert érdekli is az, amit csinál. Meg persze most elolvastam a Romero önéletrajzát is, de kivételesen nem akarok csak egy gondolatömlenyt írni róla, ezért lehet csak azután írok róla, ha még egyszer elolvastam, egyébként elég jó és érdekes is.

Vicces, hogy most éppen reneszánszukat élik a régi vágású fps-ek, az emberek megint kezdik értékelni az egyszerű de tömör akciót és becserélik egy kis lövöldözésre a hosszú átvezető animációkat amelyekben elmondják nekik, hogy milyen nagyszerű katonák is ők és mennyire fontos ügyért harcolnak. Szörnyeket öldökölni még a mélyen vallásos embereknek is szabad.

Hát ennyi most, ha lenne végtelen bakancs listám, tuti rátenném egy Doom engines játék elkészítését is, vagy még inkább egy hasonló reprezentációt használó engine elkészítését. Make room over room great again!

Demó.

Zene.

kedd, december 05, 2023

mindenki leendő kedvenc bűnözői készülnek a reinkarnációra

Végre bejelentették a GTA VI-ot, persze csak 2025-ben jön, ha minden jól megy. Nekem annyira nem tetszik, hogy a jelenben játszódik, jobb lett volna a 80-as évekbe megint visszamenni Vice Citybe, az egy jó kis kor volt, amit még nagyjából értettünk is. A jelenben játszódó dolgokkal az a baj, hogy nem tudjuk még mi a jó és mi a rossz, lehet, hogy rosszul tippeli meg ezt a játék és egy ilyen baki lehúzza majd a süllyesztőbe. Remélem a cociális hálós dolgokat sem tolják nagyon túl, nekem már most elegem van az egészből, ha rendszeresen kell posztolgatni a játékban is, mérges leszek. Ha mondjuk influenszereket kell majd vadászni, az talán javít egy kicsit a dolgon.

Egyébként azt sem igazán tudom, hogy veszek-e végre egy konzolt, ha csak konzolra jön ki, vagy megvárom a pécés verziót. 2025-ben illene már új pécét is venni, lehet egy konzol nem fér bele a büdzsébe. Meglátjuk. Addig talán még lenyomom párszor a hármast meg talán egyszer még a San Andreasra is sor kerül, talán az az egyetlen amit csak egyszer toltam végig, már persze a Stories részeket és az 5-öst leszámítva. :)

Az azért elég durva, hogy 12 évet készül ez a rész, ha mondjuk ezzel a fene jó endzsinnel készítenének egy Scarface játékot is, nem háborognék, megértem, hogy nagyon komplex a rendszer, lehetne a régi jó kis reskinnelő módszereket megint előszedni.

Zene.

Drónos.

szombat, szeptember 23, 2023

a számítógépes játékok elviselhetetlen könnyűsége

Megy most egy ilyen mém a tuitteren, hogy az emberek listázzák a kedvenc 25 játékukat. Persze a 25 kevés, vagy sok, nem lehet 25 dolgot egyformán szeretni. Meg az én esetemben, lassan 30 éve játszom, nagyon másról szól ma egy játék mint egy ős C64-es stuff. Szóval itt a listám. És mivel a blog a platform ahova leírom a gondolataimat is, némi magyarázat is jön.


Persze közben rájöttem, hogy kimaradt pár fontos játék, mint a Half Life 2, meg a Portal, meg persze a Halo az egész sorozatot jelenti (a 6-ost leszámítva mindegyikkel játszottam), ugyanúgy a GTA3 is az összes GTA-t jelenti (a Chinatown Wars-t leszámítva mindegyikkel játszottam). Meg a Tomb Raider is mindhárom új TR-t jelenti. Meg a Quake is lemaradt, mert az nem volt meg anno, csak nem olyan rég vittem végig az első epizódot. Meg persze még nagyon sok játék van, ami anno nagyon bejött, de most már nem jut eszembe.

Van néhány olyan is a listán, ami inkább elvi megfontolásból van rajta. Ugye akartam mindenképpen néhány C64-es játékot, a Flimbo's Quest ugye könnyű választás, az első játék amivel játszottam és örök kedvenc is. De utána gondban lettem, mert sok játékot kipróbáltam, de általában nem jutottam messze velük, elég frusztrálóak tudtak lenni akkor is, meg most is. Persze attól élveztem nagyon a játékot, de azért mégsem mondhatom, hogy befejeztem őket, ezért nincs meg a teljes képem a játékról. Szóval ilyen szórakoztató de nagyon frusztráló játékként került be a Cauldron, vagy ahogy mi ismertük akkor, a Hexenküche. Igazából eredetileg Mission Impossible-t akartam, de annak nem tudom hogy nézett ki a borítója és nem akartam rossz képet választani, nem volt egyértelmű a dolog.

A Prince meg a Golden Axe voltak a bevezető játékok a PC-s korszakomba, meg a North and South is, csak az későn került be és nem lehet beszúrni a listába és lusta voltam rendezgetni. A Prince-t nem is fejeztem be én soha, bár lehet, hogy amikor a könyvet olvastam róla, akkor meg igen, de az is már vagy 15 éve volt. Egyébként a játékok nagy részét a listán befejeztem, az LBA talán amit még nem fejeztem be, de imádtam azt a játékot, még ha nem is jutottam vele nagyon messzire. Egyébként nyekezáltam, hogy az vagy az Alone In The Dark 1 kerüljön be, mert ez utóbbit befejeztem, de csak sokkal a 90-es évek után és akkor is csak leírással.

Ja igen, bár az FF6 a kedvencem, azért az FF7-et és FF9-et is végig toltam, azokat is ide kell számítani. Nyugati rpg-t talán nem is játszottam soha végig, jó lenne pótolni.

Ami még nagyon hiányzik, az a Lucas Arts kalandjátékok, a Monkey Island, a DOTT, a Full Throttle, a The Dig, a Grim Fandango. Ezek is mind ott vannak a bakancs listámon, de sajnos anno kimaradtak, most meg nincs időm rájuk, de remélem egyszer sikerül sort keríteni rájuk. Remélem értékelni tudom majd a humorukat.

ÁÁÁÁ, Lemmingset mindenképpen akartam még, meg ha jól meggondolom a Prehistorik 2-nek is vastagon ott a helye, bár azt sem sikerült befejezni.

A Warcraftok közül is a 2-st sokkal többet játszodtam mint az 1-est, de az 1 volt ami igazán meghozta a kedvem a stílushoz és bár jó volt a Dune2 is, azért nem kedvenc, mert elég lassacskán ment a kezelése.

Nem tudom igazán leírni, hogy mit jelent nekem ez a sok játék, az tuti, hogy fejben valahogy ott maradtam ezeknek a játékoknak a világában. Ha jól meggondolom, egyáltalán nem olyan jó döntés az, hogy most olyan sok időt szánok egy saját játék készítésére, mert sem olyan jó nem lehet soha, amilyent én szeretnék, az sem kérdés, hogy képes vagyok-e technikailag megoldani, mert elég idővel bármilyen feladatot meg tudok oldani amelynek nincsenek elméleti akadályai és ráadásul még csak nem is töltöm a szabad időmet azzal amit a szívem mélyén imádok, a régi játékok nyúzásával. Jobb ha abbahagyom ezt most, mert az írni se fogok soha úgy tudni ahogy szeretnék és hasznosabb dolgoktól veszi el az időt.

Demó.

Zene.

szerda, július 26, 2023

az játék előrehaladottáról

No, megint tettem fel új vidiót. Az előzőt 7 hónappal ezelőtt tettem fel, ez volt a legnagyobb kimaradás két vidió között, legalábbis eddig. Az van, hogy általában akkor teszek fel vidiót, ha valamit befejezek és most a szabályrendszeren és annak a szerkesztőjén dolgoztam és ez egy olyan dolog, amit sose lehet befejezni, mindig lehet valami új dolgot betenni, vagy valamivel könnyíteni a szerkesztő életén. Szóval az utóbbi hét hónap alatt sikerült másfélszer újraírni az egészet és még mindig nagyon elégedetlen vagyok az egésszel.

Az a baj, hogy az épületek morfogenézise egy elég nehéz probléma amit én rendesen alulbecsültem és még csak nincs is egy jó absztrakció kialakulva róla a fejemben. Úgyhogy a szabályrendszer elemei eléggé szétszórtak. Az elején azt hittem, hogy három alapelem lesz, szabály, voxelekből álló primitív és változó, amivel majd a véletlenszerűséget viszem be. Sajnos ezek nem nagyon bizonyultak elégnek és elkezdtem hozzáadni dolgokat amikre szükségem volt, pl. megszorítás, hogy hányszor lehet egy szabályt használni, vagy mondjuk virtuális térfogatelem, amely összeadja más primitívek térfogatait, meg egy csomó csere lehetőség, amivel egy szabályban valamilyen elemet ki tudok cserélni, mondjuk egy primitívet, vagy egy másik szabályt. Ja és persze a szabályok sikerrel alkalmazhatóak, vagy sikertelenek lehetnek, de egyes pontokon a sikertelenség csak annyit jelent, hogy véget ér a szabály végrehajtása azon a ponton, más helyen meg ha sikertelenek vagyunk, akkor az egész szabály sikertelenné válik. Ez azért kell, hogy ne építsünk lépcsőt a semmibe, szóval ha a lépcsőnek van is hely, de a szobának ahova vezet nincs, akkor az egészet visszavonjuk. Aztán kb. egy hónapja arra gondoltam, hogy elvileg meg kéne tudjam oldani a 8 királynő problémáját, mert abban is a királynők 8 különböző pozícióban lehetnek, tehát 8 lehetőség közül választunk és az, hogy ne üssék egymást csak annyit jelent, hogy mindenki azokra a kockákra amiket ütne, kitesz egy-egy kis foglaló kockát, amit majd később leszedünk, hogy ne látsszanak. Ez mind szép is volt, de sajnos 5 királynő után megállt a rendszer és rájöttem, hogy ugye az a baj, hogy bár talál az 5. királynőnek jó helyet kipróbálva a 8 lehetőséget, a következőnek már nem és vissza kéne menni az előző királynőkhöz és más lehetőséget próbálni, nem csak az első megfelelőt. Ezt hívják magyarul backtrackingnek, érdekes módon középsuliban a francnak sem tudtam felfogni, pedig mondjuk assemblyben azért elég jól elboldogultam, de ilyen bonyolult algoritmus azért nem fért a fejembe. Persze utólag megértettem, meg most már elvileg írtam egy egészen absztrakt verziót is, de amíg sikerült belekalapálni a szabályrendszerbe, az szinte egy hónapot tartott. Kezdve mondjuk azzal, hogy azelőtt a szabályok állapota egy verem volt, sosem tértem vissza egy előző szabályhoz ami nem volt alattam a veremben, de így fát kellett csinálni belőle, de csak az egymás utáni lépéseknél, a szabály kompozíció maradhatott a régi. Na mindegy, szóval sokat szívtam ezzel, de végre megy, legalábbis a 8 királynőt megoldja. Meg gondolom a labirintusban is megtalálja majd a megoldást, ha mondjuk utólag ki akarom díszíteni a jó utat.

Na jó, szóval elég sokat dolgoztam az utóbbi időben, csak nem sok látszata van, de remélhetőleg sokat javul a produktivitásom az elkövetkezőkben amikor a pályákat kezdem tervezni. Javítottam pl azon is, hogy nem kell fejben kitaláljam azt, hogy fogom összekötni a kis téglatesteket, ha hibás az összekötés, akkor villogva megmutatja, hogy melyikkel van gond (mondjuk csak 1 téglatestre megy, egy egész szabályra már nem, lusta voltam megírni általánosabban és úgyis minden szabály téglatesttel kezdődik (hogy a pozíciója fixálódjon)).

Egyébként nagyon érdekes párhuzamokat lehet találni mindenféle programozási nyelvi fogalom és az én szabályrendszerem között, pl. ez, hogy minden szabály fix valamivel kell kezdődjön ez arra hasonlít mint ami az eager meg a lazy evaluation, vagyis előre kell tudjam, hogy hova applikálom a szabályt, nem lehet csak úgy a levegőbe és utólag próbálom beilleszteni, mert lehet sehogy sem fér be. Persze hamar rájöttem, hogy kellenek üres kockák is, amik senkinek sem ártanak, de legalább egy pozíciót lestoppolnak.

Most megint az van, hogy neki kell fognom pályát tervezni, amihez egyébként nem igazán értek, főként nem profi szinten, de kénytelen vagyok én megcsinálni, mert ha én nem, akkor ki? Remélem azért belejövök hamar, mert már így is nagyon megcsúszott ez a projekt és már 80%-ban kognitív disszonancia hajtja, ami ki tudja meddig tart ki...

szerda, május 17, 2023

a gliccs meg a bug búgatja a processzort

Szóval nemrég felfedeztem, hogy a filmtett még mindig nyomja és kezdtem olvasgatni egy kicsit. Aztán azt is felfedeztem, hogy mostanában már játékokról is írnak kritikákat, ami talán az első, utolsó és egyetlen erdélyi magyar próbálkozás a játékok kritikájára. Jó, hogy itt ez az iparág, ami pár évtized alatt lenyomta a filmeket, a zenét, a divatot és valószínűleg egyebeket is éves bevételben, de mintha nem is létezne az erdélyi kulturális életben. Na mindegy.

És akkor találtam egy cikket, a glitch esztétikájáról a játékokban. És nagyon összezavarodtam, mert a glitchet is értem (bár nem ezt tekintem a számítógépes művészet tetőfokának, habár a retro demoscene gyakorlatilag arra épül, hogy a csipekből olyan dolgokat hozzanak ki, amelyekre azok nem voltak tudatosan tervezve és szerintem ez óriási technikai bravúr) és a játékokhoz is értek, de ebből a cikkből egy vak hangot nem értettem. Persze, ez nem azt jelenti, hogy rossz a cikk, valószínűleg nem is én vagyok a célközönség, hanem a film szakos hallgatók akik éjjel-nappal a poiesisüket diegéziselik. Komolyan mondom, most olvasom Hruscsov beszédét egy bizonyos ember személyi kultuszáról és többet értek belőle.

Az persze nem segít, hogy a szerző összetéveszt bizonyos dolgokat, amelyek talán látványban hasonlóak, de okokban teljesen eltérnek, de ehhez kell tudni programozni és kell érteni a programok használatának (interfészének, hogy idegen, de pontosabb szóval éljünk) problematikáját. A bugok és a glitchek teljesen más természetű dolgok, még ha néha ugyanúgy is néznek ki. Eltérő ugyebár, a szándék. Persze, ez a zavar érthető, hiszen sokan mondják azt, hogy kitörlik a programot, amikor bezárják az ablakot (de attól még szeretjük őket :))).

Függöny.

Demó.

Zene.

PS. Én igazából nem kritizálni akartam, hanem reklámozni. Sokkal jobb dolog az, hogy ezekkel a dolgokkal foglalkoznak kis hazánkban is, mint hogy ne foglalkozzanak. Egyébként én meg vagyok szokva azzal, hogy nem értem azt amit olvasok, vagy egyre gyakrabban nem értem, hogy miért is írnak ilyen szemen szedett hazugságokat amelyeket egy gúgel keresés megcáfol. Csak ez a téma tényleg nagyon kedves nekem és ehhez képest tényleg semmit nem értettem a cikkből, de hátha mások értenek majd belőle valamit. Gondoltam arra, hogy újra kéne olvasni és ott ahol értem a gondolati hibát, megmagyarázni, de hosszú idő lenne az a bejegyzés és annyi időm sajnos nincs. De szeretném, ha az lenne a következtetés a végén, hogy örvendek, hogy olvashatok játékokról erdélyi szerzőktől is, csak hát ha már adódott egy kis elvi konfliktus, akkor ezzel emelni lehet a tétet. :) Lehet egyszer megjön a kedvem írni arról a sok ezer bugról amit kijavítottam a játékokban amiken dolgoztam, voltak egész viccesek is, amelyekre még mindig emlékszem. :)

kedd, április 18, 2023

Dungeons & Dragons: Honor Among Thieves

Most néztem meg, elég vicces volt, jól szórakoztam. Szerencsére nem veszi magát egy kicsit sem komolyan ez a film és nekem így működött. Persze nagyon fan service, bár én egyébként inkább a japán rpg-ket nyomtam anno (de a nyugati kalandjátékokat, lehetne akár fordítva is ugye, mindkét zsáner nagyon eltér a két stílusban), szóval semmi nagy fless nem volt ami a történetet illeti, volt viszont rengeteg számítógépes rpg poén (a legjobban talán a skinning bug jött be) és persze néhány poénkodás az irodalom nagyjaival is (a sárkány is óriási poén volt).

Szóval nincs mit mondjak, én élveztem, bizonyára van akinek ez nem mond semmit, mint ahogy nekem sem mondanak a képregényfilmek semmit. Még pár folytatást meg tudnék nézni, ha legalább ezt a szintet hozzák, amúgy is azt jósoltam, hogy ez az évtized a játékok által inspirált filmek reneszánsza lehet, ha jól csinálják. Persze remélem, más játékokból is lesznek majd filmek, én szívesen néznék Katamari Damacy-t is, ha megcsinálják. Mariot azt nem, nem vagyok akkora Mario fan.

Demó.

Zene.

szerda, február 22, 2023

Psychonauts 2 making of

A Psychonauts 2-höz is készült dokfilm, de nem a készítés alatt tették fel a jótúbra, akkor talán és is követtem volna, mint a Broken Age esetén, hanem pár napja. Nem néztem meg semmit belőle még, de ajánlom, mert akit érdekelnek a játékok, az biztos talál benne valami érdekeset és szép lassan talán én is lenyomom. Szóval itt a liiiiiiiink.

Kár, hogy csak nagyon kevés játéknak van ilyen részletesen meg a készülésének a dokumentációja, mondjuk értem miért van így, igazából elég suxx a játék készítés, meg persze mindenki fél attól, hogy ellopják az ötleteiket. Talán majd egyszer sok ilyen videót fognak ráömleszteni a jótúbra.

Nehéz mondatokat írni most. Abba is hagyom.

Ja igen, a játékot is jó lenne játszani, de most nagyon nincs időm rá, pedig tuti tele van tuti jó ötletekkel amiket én is lenyúlhatnék...

Demó.

Zene.