játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5448
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2520

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2188
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
syam:    1491
(DB) Dark Physics I. Alapok 2006.08.28 14:10


Pár szót a PhysX-ről


Kb. egy éve jelentette be az AGEIA, hogy új fizikai számításokat végző motoron dolgozik. A céget öt fiatal alkotja, akik úgy gondolták, hogy vicces lenne, ha a származásuk kezdőbetűit összeillesztve, megalkotják a cégük nevét. Így született meg az AGEIA (America, Germany, Egyiptom, India, America), aki egy forradalmi ötlettel ált elő: mivel a CPU és GPU mind a játékok megjelenésével van elfoglalva, nem képesek nagyobb mértékű fizikai számításokat elvégezni. Ennek következtében az AGEIA megalkotta a PPU (Physics Processing Unit), amely csak és kizárólagosan a fizikára van kiélezve.



Miután a motor elkészült, megjelentek az első PhysX kártyák is. Bár a motor működik a kártya nélkül is, néhány effekt működtetéséhez szükség van rá: fluidok szimulálásához elengedhetetlen eszköz a PhysX kártya. Azonban mivel a kártya fejlődése még gyerekcipőben jár, és megalapozatlanul drága, nem ajánlom annak megvételét, hiszen a Dark Physics gyönyörűen elindul nélküle is.



Vágjunk bele!

Elég volt a köretből, itt az ideje, hogy belevágjunk a Dark Physics-be! :) Első lépésként mindenkinek ajánlom, hogy töltse a program 15 napos verzióját innen: http://darkphysics.thegamecreators.com/downloads.php . A program használata igen egyszerű. Ha még emlékeztek a régi FPS-es cikkemre, ahol leírtam a Newton fizikai motor használatának alapvető tudnivalóit, most egy kicsit könnyebben fogtok a dolgokhoz állni, mint azok akik nem olvasták :P. A Newtonban volt egy bizonyos vizuális tér, ahol a konkrét Dark Basic objektumaink voltak, és volt egy fizikai tér, ahol RIGID testek (hálók) vették körül az objektumainkat. A Dark Physics is RIGID testeket használ az objektumok megjelenítéséhez a fizikai térben. A különbség az, hogy míg a Newton-nál egy RIGID hozzárendelése egy adott objektumhoz kb. 8 sor, itt a művelet csupán egyetlen parancsba kerül.

Íme az első példaprogramunk, amely egy leeső kockát szimulál:

Kód:
Rem Elindítjuk a PhysX-t
Phy start

Rem Optimalizáljuk a képernyőt
Sync on : sync rate 60
Autocam off

Rem Elkészítünk egy téglalapot és egy kockát
Make object box 1,100,10,100 : position object 1, camera position x(), camera position y()-20,camera position z()+200
Make object cube 2,10 : position object 2,camera position x(), camera position y()+50,camera position z()+100

Rem Statikus és dinamikus RIGID testeket rendelünk az objektumokhoz
Phy make rigid body static box 1
Phy make rigid body dynamic box 2

Rem Main Loop
Do

Rem A RIGID-ek helyzetének megfelelően, frissítjük a vizuális objektumokat is
Phy Update

Sync
Loop


Most vegyük át, mit is csináltunk a fenti programban! Először is a PHY START paranccsal jeleztük a programnak, hogy vegye kezelés alá az PhysX engine-t. A képernyő optimalizálása után szimplán elkészítünk két objektumot. Az első egy box, ami majd a talajt fogja képviselni, a második pedig egy kocka, ami majd a talajra zuhanó dobozt reprezentálja. Miután kész vannak az objektumok, az elsőhöz egy statikus (tehát mozdulatlan), a másodikhoz egy dinamikus (mozdítható) RIGID testet rendelünk hozzá. A RIGID készítő utasítások használata a következő:

PHY MAKE RIGID BODY STATIC BOX [objektum szám]

A parancs egy statikus téglalap formájú RIGID hálót rendel ahhoz az objektumhoz, amelynek számát a parancs után megadjuk.


PHY MAKE RIGID BODY DYNAMIC BOX [objektum szám]

A parancs egy dinamikus téglalap formájú RIGID hálót rendel ahhoz az objektumhoz, amelynek számát a parancs után megadjuk.


A Main Loop-ba a Sync parancs elé illessük be a szimulálás során történő változásokat érvényesítő PHY UPDATE utasítást, és már kész is a program! Futtassuk le, és figyeljük meg, ahogy a kocka leesik a talajra! Az egészben az a csodás, hogy még gravitációt sem kellett beállítanunk, mint ahogy annak idején azt a Newtonnal megszenvedtük (persze van lehetőség a gravitáció megváltoztatására, de erről talán majd egy másik cikkben).

RIGID testek mozgatása

Most írjunk meg egy olyan programot, melyben több kockát hozunk létre, melyek leesnek. Azon kívül, legyen egy olyan kocka, melynek irányítását mi szabályozzuk:

Kód:
Rem Beállítások
Phy start
Sync on : sync rate 0
Autocam off

Rem Talaj
Make object box 1,200,10,200
position object 1, camera position x(), camera position y()-50,camera position z()+200
Phy make rigid body static box 1
Color object 1,RGB(150,10,10)

Rem Kockák
For i=10 to 20
Make object cube i,10 : position object i,camera position x()-150+11*i, camera position y()+50+10*i,camera position z()+150
Phy make rigid body dynamic box i
Next i

Rem Player kocka
Make object cube 100,10
Color object 100, RGB(10,200,10)
Position object 100,camera position x()-50, camera position y()+20,camera position z()+150
Phy make rigid body dynamic box 100

Rem Kamera helyreállítása
Position camera 0,50,0
xRotate camera 20


Do

Rem Mozgatási változók

Rem Előre-Hátra
If Upkey()
Elore=2
Else

If Downkey()
  Elore=-2
Else
  Elore=0
Endif

Endif

Rem Jobbra-Balra
If Rightkey()
Jobbra=2

Else

If Leftkey()
  Jobbra=-2
Else
  Jobbra=0
Endif

Endif

Rem Mozgatás a változók értékével
Phy Set Rigid Body Linear Velocity 100,Jobbra,-1,Elore

Rem Változtatások érvényesítése
Phy Update

Rem Képernyőfrissítés
Sync

Rem Main Loop vége
Loop



A fenti példaprogramban tulajdonképpen az egyetlen újdonság a SET RIGID BODY LINEAR VELOCITY utasítás. A parancs a paraméterekben megadott X, Y és Z értékekkel mozgatja el az objektumot. Figyelem: csak olyan objektumot adhatunk meg a parancsnak, amelyhez már van RIGID test rendelve. Syntax:

SET RIGID BODY LINEAR VELOCITY [objektum szám],[X mozdulás erőssége], [Y mozdulás erőssége], [Z mozdulás erőssége]

A mozgatási változók értékeit az iránygombok lenyomásával változtatjuk. Futassuk le a programot, és a kapott zöld kockánkkal lökdössük a mélybe a többit! :)

Végszó

Még nem döntöttem el teljesen, de valószínű, hogy ez a cikk csak egy része a készülendő Dark Physics cikksorozatnak. Az elkövetkezendő részekben egyre komolyabb példaprogramok fognak feltűnni a téren. Szeretném megismertetni, és megszerettetni veletek a Dark Physics-t, és remélem ezzel a cikkemmel is tettem rátok némi behatást! :)



UI: A teljes features listát itt találjátok: http://darkphysics.thegamecreators.com/features.php .

Sikeres fejlesztést kíván:

Seeting
Technical Diretor of Syntax Entertainment

Értékelés: 9.20

Új hozzászólás
bloodknife          2006.09.24 02:39
"Hát az AI lekódolása még reális, de sztem a fizika nem menne sok mindenkinek..."

Ezt azért nem mondanám hogy az AI lekódolása reális...!
~Cre@tine~>          2006.09.23 17:19
"Meg ugye el kellene dönteni, hogy a játékok mi felé fognak húzni."

Lehet, hogy az MS felé?

"[2006. június 21. @ 07:12 - ZeroCool]
Bár hivatalos bejelentés még nem történt, a Microsoft olyan szoftverfejlesztőket keres, akik a Direct Physics nevezetű csapat tagjai lennének. Feladatuk a Direct3D csapattal szorosan összedolgozva az lesz, hogy kitalálják és lefejlesszenek fizikai szimulációkat és ütközési algoritmusokat, melyeket a GPU, vagyis a grafikuskártyánk processzora tud majd hasznosítani.

Ez igazából nem meglepő lépés, sőt, talán ez tűnik a legjobbnak is. Az AGEIA PhysX kártya ugyabár plusz pénz. Az ATI megoldása szintén elég elérhetetlen, lévén az ő fizikai számításukhoz három kártyát kell a gépbe pakolni. A Microsoft lépése nagyon jó, hiszen így a Physics segédlet nemcsak, hogy ingyenes lenne, de még grafikuskártya márka és platform független is - nyilván azért az egykori VGA-nak ismernie kell minimum a DirectX 9-et, de nem lepődnék meg, ha a DX10-et, vagy esetleg a DX11-et is!"

Így kiüthetik az Ageia-át, főleg ha ingyenes lesz a DX es physics, mert benne lesz a directX SDK-ban...
Esetleg összefoghatnak az Nvidiával valami chip-et fejleszteni a DX10 fizikához ami benne lenne a VGA-ban mondjuk, vagy valami ilyesmi.
~Cre@tine~>          2006.09.23 03:00
És mégis az NXOgre is 50k USD sajnos.
~Cre@tine~>          2006.09.23 02:58
Kicsy ott van mondjuk az Ogre tök ingyen van és tud annyit mint a DB, sebességben meg lazán veri.
~Cre@tine~>          2006.09.23 02:56
Jó végül is kipróbáltam Irrlicht alatt a physx-et és tényleg gyorsabb, mint a Newton (pedig nincs kártyám se hozzá). Kidobáltam vele vagy 200 kockát és nem nagyon lassult le szinte semennyit se. Az a pár FPS gondolom a megjelenítés miatt ment le. Csak sajnos ezek a licensz dolgok nem olcsók... Ingyenes projecthez fölösleges profi engine-t használni, ha meg pénzes lenne az egész project nem ér annyit, mint csak a physx engine. Átállok DarkBasic-re.
Seeting          2006.09.23 00:43
"20-30 FPS"

Ez attól függ mit szimulálsz.... 30 FPS ha olyan dolgot csinálsz amit a Newton eleve nem is tudna....
kicsy          2006.09.19 01:59
Ekkora árbeli különbséget felfedezhetsz a DB és egy profi grafikus motor+hozzávalók között is
~Cre@tine~>          2006.09.18 13:40
Jah és a PhisX kártya nélkül gyönyörűen elindul dologra azért még azt oda lehetne írni zárójelben, hogy 20-30 FPS-nél többet senki ne várjon.
~Cre@tine~>          2006.09.18 13:37
Annyira még nem vagyok a témában de azt látom, hogy 60 USD < 50000 USD. Ugyanaz nem lehet! (Vagy az Ageia fejlesztők ennyire hülyék lennének?) Nah mindegy ez még úgyis a jövő kérdése mi lesz ezekkel a fizikai chipekkel meg Hawok meg ilyenek. Egyenlőre nálam a Newton a nyerő... Addig is jó kódólást a PhysX-el DarkBasic-ben nektek!
Seeting          2006.09.18 03:26
Ugyanaz!!!
~Cre@tine~>          2006.09.18 00:00
Aha. Akkor ebből már nem lesz UT 2007.
kicsy          2006.09.17 07:11
A cikk a Dark Physics nevű DB kiegészítről szól, ami hatvan dollár
~Cre@tine~>          2006.09.17 06:37
Ez mind nagyon szép, de kétlem, hogy egy garázs projecten dolgozó csapatnak lenne pénze licenszelni ezt az engine-t egy kommersz játékhoz. Vagy a dark basic-ben ez is benne lenne?
"The AGEIA PhysX SDK is free for non-commercial use. Standard pricing for commercial use is $50,000/title/platform. Licensed developers who implement PhysX accelerator support in their PC title are not required to pay this fee."
Seeting          2006.09.12 08:58
Hát az AI lekódolása még reális, de sztem a fizika nem menne sok mindenkinek...
VT          2006.09.12 00:20
" Főleg a sok szuper kieggel (Dark Physics, Dark AI) párosítva..."

Szépen ráállt a TGC a kiegészítőkre, nagyon jó üzlet nekik, többet kaszálnak, mint ha mindent beleraknának a DBPro-ba. Mondjuk jogos hozzáállás, akinek nem teszik, kódolja le maga.
VT          2006.09.12 00:18
"pár éve ezelőtt még a kutya sem gondolta volna hogy ilyen dögös cucc lesz a DBP"

Amikor 2002-ben kidobták, mindenki csak nézett, hogy mi ez a bughalmaz, meg ezt most komolyan gondolják-e. Nekem se tetszett akkor. Most már egész elfogadható szinten áll (hibák még mindig vannak), de lenne ötletem mit kéne rajta fejleszteni, egy rakás dolgot le lehetne nyúlni a VB-ből.
bloodknife          2006.09.10 09:11
Ezt a témát hagyjuk...
Seeting          2006.09.10 08:30
Ja, sok ember bele sem gondol, hogy mikre képes a DBPro... Főleg a sok szuper kieggel (Dark Physics, Dark AI) párosítva...
Dookle          2006.09.10 08:20
Le a kalappal a C++ előtt ! Az biztos hogy a a DBP nem veszi vele fel a versenyt,de én nem azt mondtam hogy "MINDENKI AKI C++-AL FOGLALKOZIK AZONNAL TÉRJEN ÁT DBP-RE !"
csak simán megkértem azokat akik állandóan fikázzák a DBP-t hogy próbálják ki.Ennyi.
(ez persze csak azoknak szól akik állandóan fikázzák,de még soha az életben sem próbálták ki)
beast          2006.09.09 23:15
Azért a cikktől még nem fogját eszetlenül a kukába dobni a C++ + OpenGL-t, vagy DirectX-et, hogy DBP-ben kódoljonak....
Dookle          2006.09.09 10:08
szerintem ez nagyon profi cikk !

Most ahogy így végigolvastam,belegondoltam hogy pár éve ezelőtt még a kutya sem gondolta volna hogy ilyen dögös cucc lesz a DBP.Szerintem akik eddig köpködtek rá ajánlom nekik hogy próbálják ki !
TPG          2006.08.31 15:00
Asylum: NovodeX = PhysX
Asylum          2006.08.31 14:17
Jó cikk grat!

Amugy az Unreal engine nem a NovodeX et használja?
r-marci          2006.08.29 15:24
Remek dolog, hogy Dark Basicre átfordították a PhysX-et. Valaki nem tud róla, hogy Delphire is megcsinálták volna?
Seeting          2006.08.29 09:47
Írtam Noob FPS cikket... 2 db-ot is
szeki          2006.08.29 09:11
"a saját Dark Basic Pro garázsprojekted is ugyanazt a fizikai motort használhatja, mint az UT2007"
Ez mondjuk megdöbbentő, de talán jó így hogy egységesíteni szeretnék a Fizikai motorokat (mert lássul be valamilyen szionten ez a céljuk) mert így nem születnének olyan bődületesen szar fizikák, mint a Path of Neo-ban amikor a homlokomra eszkábált fejpánt felfelé libegett
Egy a nagy bökkenő az AGEIA hardver mocskos pénzigénye. De arra számítok, szerintem joggal, hogy 1 - másfél éven belül lehullik az ára. Már csak azért is mert már alapkövetelmény lesz ez is a GPU mellett. (vagy majd kijönnek az új csipszetes kártyák, amik hardveresen tolják majd a fizikát) Én egy olyan kártyára beneveznék ami a Reaktor Fizikát támogatja. Meg ugye el kellene dönteni, hogy a játékok mi felé fognak húzni.
Egyébként érdekes cikk, írhatnál kezdőknek is valami Noob FPS, TPS, RPG, kamera, stb cuccot, mert már énis kóstolgatom a DB-t. Bár mondjuk ki mindig bennem van a lelkiismeretfuralás, hogy a basic csak egy kontárnyelv a C++-hoz képest (ne kapjon be ezért senki)
Grat a cikkhez.
Seeting          2006.08.29 08:54
Köszi, reményeim szerint lesz még több is...
Csaba42          2006.08.29 07:55
Ugyan nem használok DB-t, de tetszett a cikk.