HTML

Survive Developement

Itt olvashatod a Survive! nevű játék fejlesztésének állapotát, lépéseit. És mi is lesz a játék? Egy zombis-túlélős játék, ahol elsősorban a csapatmunkára építkezve kell megpróbálni életben maradni egy kihalt városban. A terep teljesen a tietek, nincsenek szabályok: éljetek túl, ahogy tudtok!


Küldj e-mailt nekünk:
gilgamesco@gmail.com

Sikolyok

Ettől tépjük a hajunkat:

Friss topikok

  • Sir Butcher: A gyors mozgású ütközés-érzékelés majd a lövésnél lesz topic :D A második esetben teljesen igaza... (2012.04.05. 16:38) Ütközésérzékelés
  • _fpeti_: Halad ez. (2012.04.04. 22:01) Gravitáció
  • Sir Butcher: Az sem rossz, az tény :D Szerencsére egyelőre annyi különbözőt kell csinálnom, hogy esélyem sincs ... (2012.02.20. 21:48) Scenery - Még több látvány
  • Sir Butcher: Na, ideírom: obj-nél megoldottam a csontokat. Melléktermékként összejöttek, extra számítás nélkül ... (2011.12.02. 11:48) Model Animálás - a probléma, és a (vélt) megoldás
  • Burwor: "A tesztvárosban sétálgatva belefutsz egy házba, aminek hiányzik egy fala. Mit csinálsz?" Zárva a... (2011.11.10. 15:00) Sziduri - a grafmotor bemutatkozik

Nyílt L-rendszerek

2011.08.16. 07:41 :: GizmoSDK

Amikor megírtam az első próbálkozásomat a CityEngine-es városgenerátor-ötlet alapján, még nem sok fogalmam volt az "Open L-system" működési elvéről. Inkább csak töredékeket értettem meg, azokból próbáltam meg valami használhatót létrehozni. Azonban nemrég sikerült majdnem teljesen megérteni az ott leírt létrehozási szabályokat, illetve, hogy ezek hogyan is működnek. A városgen második verziója már ezt a vonalat fogja követni. (Hogy milyen szorosan? Jó kérdés...)

FIGYELEM! Erős elméleti okfejtés következik, továbblépés csak saját felelősségre!

Hát nézzük. Az L-system alapvetően úgy néz ki, hogy van egy kiindulási karaktersorozatunk, amit bizonyos szabályok szerint újra és újra átírunk. Egy kis példa: írjuk meg a Koch-görbe előállítási szabályát! Jelölje '-' a jobbra, '+' a balra fordulást (60-60 fokkal), 'F' pedig az előremenést (mondjuk 100 pixelnyi távolsággal). Ha rajzoltál már Comenius Logo-ban, ismerős lesz a helyzet.

(Akik nem találkoztak még eme tüneménnyel, azoknak annyit kell tudniuk, hogy ebben a grafikus programozási környezetben van egy teknőcünk, akinek van egy rakat tulajdonsága (úgy mint: pozíció, tollszín, a toll le van-e rakva, stb.), és ezeket változtatjuk. Ha a toll le van rakva, és a teknőc előremegy, tollszín színű vonalat hagy maga után. Egy négyzetet pl. úgy lehet megrajzolni, hogy előre megy a teknőc, majd balra (vagy jobbra) fordul 90 fokot, és ezt megismétli még háromszor.)

A kiindulási axióma egy egyenes vonal:

ω: F

Ezután legyen egy átírási szabályunk is: ha meglátunk egy vonalat, akkor azt helyettesítsük egy _/\_ - szerű ábrával, vagyis az előremenés helyett ez lesz a kívánt eredmény: menj előre - fordulj balra - menj előre - fordulj jobbra - fordulj jobbra - menj előre - fordulj balra - menj előre. Betűkkel: "F+F--F+F". Egy átírási szabály megadásának módja a következő:

id : pred -> succ

Az 'id' a szabály neve (általában pX-szel jelölik, ahol X egy szám. Tehát p1, p2, p3...), a 'pred' (strict predecessor) az átírandó karakter, a 'succ' (successor) pedig az eredmény. (Igazából ezek csak a kötelező mezők, a teljes formulát nem akarom itt most kitárgyalni.) Akkor ezek tudatában készítsük el az átírási szabályt formálisan is:

p1: F -> F+F--F+F

Készen is vagyunk. Ha a kiindulási axiómára használjuk ezt, majd az eredményre szintén használjuk, és így tovább, egyre bonyolultabb Koch-görbét kapunk. Kezdeti axiómánk ugyebár az "F". Első átírás után "F+F--F+F"-et kapunk. Második átírás után:

F+F--F+F+F+F--F+F--F+F--F+F+F+F--F+F

Ha bezárójelezzük az eredményt, talán érthetőbb lesz:

(F+F--F+F)+(F+F--F+F)--(F+F--F+F)+(F+F--F+F)

A zárójelekben szereplő kifejezés helyett az előző iterációban csak egy sima "F" volt. Ne aggódj, ha nem érted, ezzel a tudással úgysem lehet csajozni :D

Nos, valami ilyesmi lenne a lelke a városgenerátornak, azonban az már ön- és környezetérzékeny (vagyis: ha saját magán akarna keresztülhaladni, helyette szépen megáll, illetve ha vízhez ér, nem kezd továbbépítkezni alatta, hanem szintén megáll). A nyílt L-rendszer tartalmaz például lekérdezéseket (ezeket ? jelzi a nevük előtt), na meg a környezet és a rendszer képesek hatni egymásra. De most már nincs kedvem még ezt is leírni, akit nem érdekel, az ezt is átugorta, akit meg igen, az meg úgyis feltalálja magát. A gugli a barátod, a wiki a barátnőd! :D

Akinek felkeltette az érdeklődését, nézze meg a pdf-ben írt példát. Ha nem érti, miről is van szó, nézze meg a forrásoknál megjelölt 20-as és 27-es cikket, ott le van írva, hogy hogyan is kell értelmezni.

5 komment

Címkék: haskell l system

A bejegyzés trackback címe:

https://survivedev.blog.hu/api/trackback/id/tr553157072

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Sir Butcher · http://survivedev.blog.hu/ 2011.08.17. 05:59:42

Én csak annyit tennék hozzá, hogy ilyen tudással is lehet csajozni, de még hogy :P

GizmoSDK 2011.08.17. 13:20:55

Ezt szeretném, ha kifejtenéd :D

Darkness&Light 2011.08.17. 15:31:25

Na, megvan hétvégére a tuti csajozós szövegem :D

Sir Butcher · http://survivedev.blog.hu/ 2011.08.20. 18:44:30

Volt egy barátnőm: bitang okos lány volt, sík hülyének éreztem magam mellette (ő volt a tipikus színkitűnő csaj, aki szinte mindenkit lekoppintott azzal a címszóval, hogy hülye vagy hozzá).

Egészen addig, amíg rá nem jöttem, hogy két dologhoz nem ért: informatika és matek :D Aztán ezzel sikerült lenyűgöznöm őt. Tehát a matek és infó egyáltalán nem mellékes dolog.

A történet keserű folytatása az, hogy egyetem előtt a csaj is rájött, hogy ő igazából tini, és alig pár hónap alatt a zseniből lezüllött hétköznapi tinivé... De, az már másik történet. A lényeg, hogy nem jöttünk végül komolyan össze, pedig nagyon szép lány volt. Bár, a férfiúi önérzetemet bántotta, hogy szinte sosem tudtam elővenni semmilyen témát, mert mindenből kiokított. És igaza is volt mindig :D

GizmoSDK 2011.08.20. 19:42:57

Szép és okos... szép és okos... létezik szép és okos csaj... *álmodozik* :D
süti beállítások módosítása