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...

Nincsenek megjegyzések: