A mai nagy felismerés.
Nem is tudom mikor kezdtem azon aggódni, hogy hogyan passzintom össze a szabályokat. Akkor már biztosan megvolt, amikor rájöttem, hogy mi is a valódi szerepe a titkos járatoknak a Doomban (legalábbis azt hiszem, de egyébként minden játékban: lerövidíti a vissza sétát, azaz ha egyszer kettéválik az út és mi egyik irányba megyünk és mindenkit legyilkolászunk, akkor ha vissza kell menni a válaszúthoz, akkor az unalmas, mert már mindenkit kinyírtunk itt, ezért megadják egy titkos járattal a lehetőséget, hogy átkerüljünk a másik ágba ahol tovább mehetünk a cél felé és megint van elég lőni való szörny).
Az én szabályrendszeremben ha egyszer egyik ágban vagyok, akkor nem tudok semmit a másik ágról, ennek az elméleti neve az, hogy környezetfüggetlen a grammatikám. Ez azért jó, mert így könnyebb a szabályokat írni, elég nehéz is lenne minden lehetőségre a másik ágon megmondani, hogy mi történik ezen az ágon (bár még nem is igazán tiszta számomra, hogy a kis tégláim összerakásánál hogyan nézne ki egy környezetfüggő grammatika, csak formális nyelvekből van meg a fogalom az agyamban).
Most viszont próbáltam egy olyan labirintust generálni, amelyben lépcsők kötik össze a platformokat, ez a kép ismerős lehet azoknak akik sok ilyen beton alakzatot szoktak bámulni:
Remélem a szerző nem haragszik meg, hogy betettem a képét illusztrációként.
Szóval azt hiszem, ezt a fajta labirintust nem lehet környezetfüggetlen grammatikával generálni, mert nem tudhatom, hogy mi kerül a lépcső mellé és lehet, hogy egy olyan lépcső kerül, ami más irányba mutat és az nonszensz. És nem tudok előre nézni, hogy nicsak mi van itt (illetve tudnék, de az lassú lenne, mert keresni kéne a már lerakott lépcsőkben térben és azt nem akarom, mert akkor n^2-es lesz az algoritmus és akkor nem skáláz jól, ráadásul nagyon csúnya is, hogy minden irányba körbenézzek a mostani rendszerrel).
De ma rájöttem a megoldásra. Egyszerűen olyan építőkockákat fogok definiálni, amelyekben soha nem kerül a szélre lépcső. TADAAAA.
Arról ne is beszéljünk, hogy a szabályok szélességi kifejtését végül úgy oldottam meg, hogy mivel már tudok lua kódot is hívni a szabályokban, egyszerűen csak beteszem egy verembe a nemterminálisokat és onnan veszem ki amikor applikálni kell.
Komoly, hogy ilyen egyszerű dolgok ennyit kellett érjenek a fejemben. Na de most már azt hiszem fel vagyok vértezve minden tudással ami ahhoz kell, hogy megcsináljam azt amit akarok (szerencsére már azt is tudom, nagyjából, persze közben még jött pár ötlet, de azoknak valószínűleg várniuk kell majd az updatek-re).
Vidió az nincs, mert lusta vagyok, ha holnap összejön úgy ez a labirintus, ahogy szeretném, akkor valószínűleg lesz kis rövid, amit ide belinkelek. Inkább ezeket a bejegyzéseket a megvilágosodás útján kellett volna gyakrabban produkálni, még ha nehezen is érthetőek valószínűleg. Majd egyszer lesz szép összefoglaló mindennel is, de nem tudom mikor lesz rá időm.
Na, még egy valami. Kíváncsiságból megkértem a gondolkodó dzseminájt, hogy készítsen egy variációt erre a képre, és egész ügyi lett amit csinált:

Nincsenek megjegyzések:
Megjegyzés küldése