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
3D játékok - kérdések és válaszok 2004.06.17 10:14


K: Mi a különbség a 3D motorok, 3D nyelvek és a kiadói rendszerek között?

V:A 3D motor egy könyvtár, ami 3D grafikus funkciókat tartalmaz. Sok 3D-s motor megtalálható az interneten. Vannak köztük elég jók is, amik ráadásul ingyen vannak. De vannak 100 dollár és 300.000 dollár között is amelyek kereskedelmi használatra alkalmasak. Tehát ezekkel, ha játékot készítesz, azt kiadhatod. Ezek a motorok olyan fejlesztõi környezetet kívánnak meg maguknak, mint a Microsoft Visual C++.
Egy játék programozása 3D motor köré annyi elõnnyel jár, hogy maximális flexabilitást nyersz a játékod felett. Vagyis ezzel azt akarom mondani, hogy szinte bármilyen funkciót belecsempészhetsz a játékodba, sõt a játék típusát is te határozhatod meg. De ez óriási programozási gyakorlatot igényel és több évi tapasztalatot. Nagyon sok munkát kell belefektetned a játékodba, hogy valami mûködõképes legyen benne.

Egy könnyebb megközelítés 3D nyelvet használni. A játékot egy scriptelõ nyelvvel (általános esetben Basic) kell programoznod, amely egyszerû 3D játékokra van tervezve. Néhány ilyen nyelv nem enged olyan funkciókat, mint a frame rate beállítása, és maximális funkcionalitást, amelyet már egy valódi 3D motor támogat.
Viszont vannak benne elõre beállított funkciók, amellyel nem kell foglalkoznunk, így jelentõs idõt nyerhetünk. Azon kívül, hogy nem is szükséges hozzá professzionális programozási gyakorlat.
A basic valójában egy nagyon könnyen tanulható programozási nyelv és kivételesen nagyon könnyen használható kisebb játékok és alkalmazások megírására, de nincs eléggé felkészítve nagyobb, vagy összetettebb játékok megírására. Hála a nyelvi struktúrájának.

Ennél is könnyebb dolgozni egy kiadói rendszerrel, amely tartalmaz vizuális interfészt. Pár gombnyomás után már létrehozhatunk egy játékot. Persze így csak nagyon egyszerû játékokat tudunk fejleszteni.
Ezért néhány ilyen rendszer tartalmaz egy script nyelvet, vagy egy teljes programozási nyelvet, hogy kedvünkre változtassuk meg azt, amit szeretnénk játékunkban.
a script nyelv általában C++ vagy Basic szokott lenni. De ezek eléggé le vannak egyszerûsítve, hogy minél könnyebb legyen használni ezeket a nyelveket. Egy kiadói rendszerrel már egész komoly projekt megvalósítható. Persze némi programozással és némi idõvel. Sok fontosabb játékkészítõ elkezdett hasonló rendszereket használni.
Több kiadói rendszer az FPS mûfajra vagy a TPS mûfajra specializálódott. Így kevés scriptelés is elég egy komolyabb FPS játék elkészítéséhez. Elõfordulnak olyanok is amelyekhez abszolút nem kell scriptelnünk, hogy
egy egész jó FPS játékkal lepjük meg magunkat.

K: Mi a Renderer és mi a T&L?

V: a renderer a belsõmagja a 3D motoroknak, amely lehetõvé teszi, hogy a 3D modelleket kirajzoljuk a képernyõre. Ez attól is függ, milyen módon lépünk be a 3D hardware-be. Létezik DirecX és OpenGL renderer.
Az OpenGL renderer3D hardware-t használ az OpenGL könyvtáron keresztül, amely elérhetõ szinte minden 3D kártyán. A DirectX rendszer a Microsoft DirectX könyvtárát használja, amely bele van építve a Windowsba.
Régi 3D kártyákon az OpenGL egy parányit gyorsabban fut. Még egy újabb 3D kártyán a DirectX egy lépéssel elõrébb van. Az OpenGL-nek csak egy verziója van. A DirectX-nek viszont különbözõ verziója látott már nap világot.


DirectX 6 ----------- Alap 3D támogatás, pár effekt, nincs T&L támogatás, Windows 95 -be van integrálva (beépítve).
DirectX 7 ----------- Hasonlít a DirectX 6-ra, de ez már támogatja a T&L -t, a Windows 98-ba van integrálva.
DirectX 8 ----------- Fontosabb változtatások, árnyékoló támogatás, Windows 2000,Me,XP -be van integrálva.
DirectX 9 ----------- Hasonló a DirectX 8-hoz, van benne C -re hasonlító árnyékoló nyelv (HLSL - High-Level-Shader-Language vagyis magas szintû árnyékoló nyelv -- ami elég szerencsétlenúl hangzik), a Windows Update–ben érhetõ el.

Mielõtt az objektum kirajzolódik a képre elõször közömbösíteni kell, majd át kell alakítani a 3D világból 2D koordinátákra a képernyõn. A renderer elérheti ezt saját algoritmusokkal (Software T&L), vagy használhatja a 3D hardware –t erre a célra (Hardware T&L ezt OpenGL és DirectX 7-essel vagy magasabb verziószámmal érhetjük el). Régebbi rendszereken a hardware T&L-t emulálni kellett és ez elég lassú volt. Most az új generációs 3D kártyákon (GeForce és Radeon) sokkalta gyorsabb és szebb effekteket jelenít meg mint egy Software T&L -en. Néhány renderer mindkét metódust használja, hogy a maximális teljesítményt hozza ki a hardware-bõl.

K: Mi a Culling (kiválasztó) rendszer és mi a LOD renszer?

V: A kiválasztó rendszer csak egy részét rendeli a játék szintjébõl, amelyek nincsenek átkonvertálva fallá vagy más objektummá. A kiválasztó rendszerek lehetnek BSP Tree(fák), Portál -ok vagy Octree alapúak. A BSP fa rendszer sokkalta hatásosabb, mint egy Octree vagy egy Portál rendszer, de a szerkesztõnek így több idõbe telik a pályát kiszámítania. Több kereskedelemben lévõ 3D motor használ kiválasztó rendszert. Egy kiválasztó rendszer nélkül
minden objektum kirajzolódik a képernyõre ezzel lassítva a rendelési idõt. Ez persze függ attól is, hogy látható vagy láthatatlan az objektum. Minél nagyobb a pálya annál több az objektum és persze minél több az objektum annál lassabban fut az alkalmazás. Egy kiválasztó rendszerrel renderelhetünk, így sebességet, de ez attól is függ milyen a szint. Kinti vagy ajtón belüli szint. BSP fákkal kiépített kiválasztó rendszer nagyon jó sebességet adhat a játéknak még egy öregebb számítógépen is. A LOD rendszer ehhez a sebességhez még hozzáadhat, fõleg ajtón kívüli szinteknél alkalmazhatók. Ez csökkenti a poligonok számát, amelyek framenként rajzolódnak ki. Ha egy tárgy a kamerán kívülre kerül, felvesz egy "egyszerûbb" formát.

K: Mi az a Shadow Mapping (árnyék térképezés)?

V: Ezt úgy is hívják, hogy Light Mapping (fény térképezés) - egy rendszer melyet az objektumnak valós árnyékot vethetnek és valós fény effekteket produkálnak anélkül, hogy csökkenne a játék sebessége. Az árnyék feltérképezõ rendszer fordítója megengedi, hogy számtalan reális fényeffektet helyezzünk el egy szinten, és utána elõre kiszámolhatjuk a gyengébb és a statikus (állandó) árnyékok minden felszínét. Napjaink kereskedelemben megjelenõ játékok árnyék térképezést használnak.

K: Mi az a Particle System (Részecske rendszer)?

V: A Részecske rendszer részecskéket állít elõ nagyszámú kisebb részecskékbõl, melyekbõl speciális effektek lesznek, ilyen a füst ,a tûz, vagy a robbanás.
Jól megalkotott részecske effektek sokkal szebbek, mint az elõre animált effektek. Ezek a részecske generátorok már szinte minden modern játékban szerepelnek, sõt még a konzol játékokban is.
Ahhoz, hogy reális részecske generátort hozzunk létre nem szabad a játéknak belassulnia. Egyszerû generátorok csak gravitációt, szint, meg hasonló egyszerû dolgokat jelenítenek meg. Még egy bonyolultabb már képes programozható részecskéket létrehozni, melyek mozgásra is képesek.

K: Mi az Fizikai motor?

V: A Fizikus motor dolga a mozgás, forgás, gyorsulás és ütközés számolása. Nem szükséges fizikai motort szerkeszteni egy egyszerû Newtoni fizikához. Ez alatt gyorsulást és lassulást értek. Ehhez elég csak egy scriptet írni, vagy egy rövid programot.
Viszont a programozási lehetõségek véget érnek miután már ütközésre is szükség van. Ekkor ugyanis más beállításra is szüksége van egy objektumnak. A Fizikai motorokat leginkább bowling és verseny játékoknál alkalmazzák.
A fizikai motor az objektumokat úgy használja, mint nehezékeket. Minden testrésznek megvan a saját súlya (pl. a felkar könnyebb, mint a fej). Így rongybaba effektust hozhatunk létre. Ez nem csak több realisztikusságot ad, de így sokkalta könnyebb az objektumokat irányítani mintha csak egy scriptet kéne írni. Jobb fizikai motorok képesek vezérelni kerekeket, cilindereket, stb.
Fizikai motorokat több elõállítótól is tudunk vásárolni. Sõt (!), néhány kiadói rendszer is tartalmaz fizikai motort.
Nagyon elõvigyázatosnak kell lenünk fizikai motor vásárlásánál: néhány rendszer tartalmaz "Fizikai motort", de csak egy tartalmas listán a valóságban, pedig csak egyszerû gyorsulást vagy ütközést produkáló motor.

K: Mi az a Csont animáció (Bone Animation)?

V: Két metódus létezik az animációk megjelenítésre: Vertex és "Csont" animáció. A Vertex animáció kivágott képekbõl áll, melyeket egy pózoló modellbõl vesznek le.
A motor létrehoz egy óvatos animációt melyben a framek közé beszúrja az animációt. A csont animációban, a modell egy "csontváz" melyeket "csontok" alkotnak.
Az animáció ügy jön létre, hogy ezek a csontok megváltoztatják a helyüket mozgás során. A csont sokkalta
Könnyebb és sokkalta gyorsabb megvalósítani, mint egy Vertex animációt. Néhány csont animációt tárggyá kombinálhatunk. Egy modell megfordíthatja a fejét, lõhet és gyalogolhat is egy idõben, addig a motor automatikusan összekombinálja a 3 animációt.
Több motor támogat Vertex animációt, de nem minden motor támogatja a csont animációt.

K: Mi az a Client/Server(kliens szerver)Network system?

V: Két alapfokú csatlakozás rendszer van egy többjátékos játékban: Peer-To-Peer (egyenrangú) és kliens szerver. Egy egyenrangú rendszerben minden PC futassa a saját játékát, és felcserélve frissítik az üzeneteket a többi számítógéppel. Egy kliens szerverben
egy PC a szerver, amelyre a többi PC csatlakozik. Vagyis ez a szerver a PC nyújtsa a játékot és a szervert is, így ez van a legjobban leterhelve. A többi számítógépnek csak az a dolga, hogy frissítse az üzeneteket a szerverrõl. Ahhoz, hogy kivédjük egy extra számítógép hozzájárulását egy egyszerû szerverhez, a szervert nyújtó számítógép is csatlakozhat a játékhoz. Így a szervert nyújtó számítógép játékos is egyszerre. Az egyenrangú rendszereket az elsõ Multyplayer játékoknál alkalmazták, de ma már csak kivételes esetekben fordul elõ, hála a sok hibájának. A hibák alatt azt értem ,hogy kilõsz egy golyót és a te számítógépeden a töltény talál, de a másik számítógépen nem. Ezen kívül egy ilyen szerveren 5-nél több játékos nem lehet. Az online játékok melyek több mint 4 játékost igényelnek azok egyszerû kliens szervert alkalmaznak. Viszont, létezik egy zónás rendszer (zone system) amely már egy továbbfejlesztett változata a kliens szerver rendszernek. A játék világ több zónákra van felosztva, amelyeket megadott számítógépek vezérelnek. A zóna rendszert az MMORPG (Massive Multyplayer Online Rpg) alkalmazzák általában, de elõfordul akció játék, sõt stratégia játék is MMO formában. Ezekre a szerverekre számtalan játékos csatlakozhat.
A kliens szervereknek nagyon egyszerû a logikájuk. Egy Szimulátor játék melyben egy szimulációt valósághûen kell visszaadni. Azokra csak 25 játékos juthat számítógépenként. Vagyis 25 kliens jut egy szerverre számítógépenként. Egy egyszerû mászkálós játékban, melyben, csak mászkálni lehet meg chatelni azoknak körülbelül így néz ki a szervere:
1000 játékos per számítógép (szerver).

PEER-TO-PEER ... MAX: 4-5 játékos
Client/Server... MAX: 25-50 játékos
ZONE ... számtalan játékos ,a szerverek számától függ.

K: Mi az a Script Compiler(Script Forditó)?

V:A Script fordító a nyelvet nem bájtra hanem egyenest gépkóddá alakítja - a processzor anyanyelvére. Ezért egy script 10x olyan gyorsan fordul le mint egy egész program. Egy játékban elég sok script fordul le és ezek, mint úgy fordulnak le, hogy egy aprányit
sem lassul a játék. Viszont résen kell lennünk, amikor egy funkció listán script Compiler nevet látunk! Elõfordulnak olyan script compilerek is, amelyek bájtba fordítanak, és csak abból fordulnak vissza gépnyelvre.
Ilyenkor jelentõs lassulás kerül a játékba. Tehát mielõtt megvennénk a fejlesztõ eszközt kérdjünk utána, hogy a script compiler gépkóddá -e fordítsa le a scripteket.

Készítette: Éliás Tibor (Disane)
Dátum: 2004.2.3 16:28

Értékelés: 8.39

Új hozzászólás
tacam-r2          2006.10.20 14:12
".......Még egy újabb 3D kártyán a DirectX egy lépéssel elõrébb van. Az OpenGL-nek csak egy verziója van. A DirectX-nek viszont különbözõ verziója látott már nap világot......"
-Az OGLt rendszeresen frissitik (verzioszam teren is), mig a DXet ritkan...
doggministah          2006.07.27 03:41
Nagyon jó ez a cikk. Köszi, sok mindent meg lehet tudni belőle...még legyen ilyesmiből sok ezen az oldalon...