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
Dave Astle: Játékfejlesztési kalauz kezdõknek 2005.04.26 07:26



Dave Astle: Játékfejlesztési kalauz kezdõknek


Gyakran kérdeznek arról kevés, vagy akár semmilyen programozási tapasztalattal nem bíró lelkes amatõrök, hogy hogyan is kell „elkezdeni a játékfejlesztést”. Eddig mindenkinek megpróbáltam egyéni alapon segíteni. De mivel a kérdések száma lassanként elérte a kezelhetetlen szintet, úgy döntöttem, itt az ideje, hogy tanácsaimat egy cikkbe sûrítsem.
Ez a cikk azoknak szól, akik szeretnék megírni a saját játékukat, de eddig csak alapszinten, vagy akár sehogy se programoztak. Ezért a továbbiakban az olvasót úgy tekintem, hogy egyáltalán semmi tapasztalata nincs. Fõleg a játékfejlesztés elméleti és programozási oldalára fogunk figyelmet fordítani és elhanyagoljuk a mûvészit. Nem foglalkozunk a játékipar kérdéseivel sem, de eljutunk addig a pontig, ahonnan az olvasó már saját maga is készíthet játékokat. Végül, az itt leírt módszer nem az egyetlen és tökéletes üdvözítõ út, de számomra és másoknak is jól bevált.

A nyelv kiválasztása
Az elsõ teendõd, hogy válassz egy programozási nyelvet. Rengeteg lehetõséged van, mint például a Basic, Pascal, C, C++, Java stb., és mindig vita tárgya volt és lesz hogy melyik a legideálisabb kezdõk számára. John Hattan cikke, a „Melyiket válasszam?” több népszerû nyelv elemzését tartalmazza.
Én a magam részérõl azt ajánlom, hogy kezdd a C-vel és a C++-szal. Biztosan lesznek néhányan, akik azt fogják mondani, hogy ezek a programozási nyelvek túl bonyolultak kezdõknek, de mivel én is C++-ban kezdtem programozni, velük nem értek egyet. A C és a C++ manapság a legszélesebb körben használt nyelvek, ezért rengeteg cikket, tutorialt találhatunk hozzá. Nem igazán számít hogy elõbb a C-t vagy a C++-t tanulod meg, mert ha az egyikkel már elboldogultál, a másik már triviális lesz. Ha a C++-t választod, akkor jól kell értened a procedurális programozást még mielõtt az objektum-orientált programozással kezdenél foglalkozni (a legjobb talán az, ha az osztályokkal nem foglalkozol, amíg nem boldogulsz el jól nélkülük is).
Ha C/C++-szal kezdesz, és túl bonyolultnak találod, nincs semmi baj, lépj vissza és foglalkozz egy egyszerûbb nyelvvel (pl. Basic, Pascal). De azt hiszem, ha a megfelelõ forrásokból és odafigyeléssel tanulsz, nem okoz majd problémát a C/C++.
A következõ kérdésed valószínûleg ez lesz: „Hogyan tanuljam meg a C++-t?” Jó, hogy megkérdezted! A legjobb módszer, ha elvégzel egy tanfolyamot. Ha van egy tanárod, aki segít, és akitõl kérdezhetsz, hatalmas különbséget jelent ahhoz képest mintha egyedül kellene boldogulnod. Az elvégzendõ feladatok pedig biztosítják, hogy alkalmazni is tudd amit megtanultál.
Ha a tanfolyam nem jöhet szóba, szerezz be néhány jó könyvet. Ne próbáld megtalálni a tökéleteset, a késõbbiekben úgyis fogsz még néhányat vásárolni. Az én javaslatom az, hogy menj el a legközelebbi könyvesboltba, és tölts el egy kis idõt azzal, hogy végigböngészed a kínálatot, amíg nem találsz egy olyat, amit értesz, és amibõl tanulhatsz. Idõvel majd haladóknak szóló könyveket fogsz vásárolni és valószínûleg egy referenciakönyvet is, de ha egyszer már van némi ismereted az adott nyelvrõl, már jobban fogod tudni, hogy mire is van szükséged. (Nézd meg a könyveinket több információért!)
Ha nincs pénzed arra, hogy könyveket vásárolj (ez fõleg a fiatalabbak problémája), hadd emlékeztesselek arra, hogy rengeteg ingyenes forrásból is lehet tanulni, pl. a helyi könyvtár, vagy a Macmillian Computer Publishing, ahol több ingyenes könyv is letölthetõ a http://www.mcp.com/personal címrõl. De hogyha tényleg jó programozóvá szeretnél válni, valamennyit bele kell fektetned. Ha bármilyen (legális) dolgot szeretnél használni, szükséged lesz némi pénzre.
Az Interneten sok ingyenes tutorial is elérhetõ, de az én tapasztalatom az, hogy ezek fõleg azoknak valók, akiknek már van némi programozási tapasztalata.

A megfelelõ fordító
A megírt programot (forráskódot) egy egyszerû szöveges állományként tároljuk, amit akár még a jegyzettömbbel is szerkeszthetsz. De így szükség van valamire, ami a forrást átkonvertálja egy futtatható programmá. A C/C++ esetén ezt a valamit úgy hívják, hogy fordító (compiler).
Nagyon sok fordító létezik, köztük több ingyenes is. Fontos, hogy olyan fordítót válassz, amit kényelmesen tudsz használni, az ingyeneseknek pedig megvan az az elõnyük, hogy mindet kipróbálhatod és eldöntheted hogy melyiket szeretnéd használni. Sajnos az ingyenes fordítók gyakran kevesebb lehetõséggel bírnak és kevésbé támogatottak, mint a fizetõsek. Szerencsére a legtöbb nem ingyenes fordítónak van bevezetõ- vagy próbaverziója, amik sokkal olcsóbbak, és mindent tudnak, amit drágább társaik, csak éppen az azokkal fordított programokat nem terjesztheted (ennek az elsõ idõkben még nincs jelentõsége).
Az, hogy végül melyik fordítót használod, azon múlik, hogy mennyi pénzt szánsz rá, milyen operációs rendszerre és platformra fejlesztesz. Ha Windowsra, akkor a Microsoft Visual C++-t javaslom. Az IDE-je (Integrated Develompent Environment, integrált fejlesztõi környezet) sok mindent leegyszerûsít, nem is kérdéses hogy semmilyen más fordító nincs olyan „nevelve” mint a Microsoft fordítója a Windows fejlesztésre. Ha tanuló vagy, akkor jelentõsen csökkentett áron juthatsz hozzá. [Magyarországon a felsõoktatásban tanulók a Campus program keretében ingyenesen juthatnak hozzá teljes verziójú Microsoft szoftverekhez. – a ford.] Ha DOS alá fejlesztesz, a legjobb választás az ingyenes DJGPP.
Célplatformra tarts!
Bár valószínûleg a késõbbiekben több platformra is fogsz fejleszteni, célszerû kiválasztani egyet, amin tanulni fogsz. Amíg a nyelvet tanulod, és nem foglalkozol grafikával, célszerû egy szöveges környezetet választani, mint pl. DOS vagy UNIX. Így nem kell a Windows-programozás trükkjeivel foglalkozni, hanem magára a nyelvre koncentrálhatsz.
De ha már készen állsz arra, hogy játékokat fejlessz, célszerû elgondolkodni azon, hogy más rendszerre térj át. Lássuk a lehetõségeket:
• Windows: Ha hivatásos játékfejlesztõként a játékiparban szeretnél dolgozni, vagy csak egyszerûen azt szeretnéd, hogy sokan játszhassanak a programoddal, valószínûleg ezt fogod választani. A célközönség nagy része Windows-t használ, és nem valószínû, hogy ez hamarosan megváltozik. A legtöbb játékot manapság Windowsra írják, a DirectX nevû könyvtár felhasználásával, ami lehetõvé teszi a hardver közvetlen elérését, és így látványosabb hatásokat lehet elérni.
• DOS: Régebben a játékok döntõ része DOS alá készült, de azok az idõk már elmúltak. Bár hobbiból még néhányan írnak DOS-os játékokat, kereskedelmi játékok már nem készülnek erre a platformra, és ez már nem fog megváltozni, mert a Microsoft hamarosan beszünteti a DOS támogatását. [A cikk megjelenése óta már be is szüntette. Sõt, mivel egyre inkább az NT-széria (NT, XP, 2000) veszi át a piacot, és ezekre csak körülményesen (emulátor) és megszorításokkal lehet programozni, megállapíthatjuk, hogy a DOS a kihalás szélére került. – a ford.] Ha csak most kezdesz el játékokat fejleszteni, ne válaszd a DOS-t, vagy ha mégis, ne tarts ki mellette sokáig. Egyetlen érv szól a DOS mellett: nagyon sok jó játékfejlesztésrõl szóló könyv foglalkozik kizárólag a DOS-os programozással, de ahogy a Windowsra írt könyvek száma nõ, ez az érv is veszít erejébõl.
• Linux: A Linux egy UNIX variáns, ami gyorsan népszerûvé vált számos okból kifolyólag, pl. stabilitás, ár és Microsoft-ellenes érzelmek. Bár a Linux felhasználók száma relatíve kicsi, az azt körülvevõ lelkesedés és a piac növekedése miatt ez is egy életképes lehetõség.
• Machintos: a Mac-nek nem elhanyagolható számú, hûséges tábora van, és majdnem minden Mac felhasználó, akivel beszéltem hiányolja a jobb játékokat. Mac-re nem láttam még referenciakönyvet vagy tutorialt, de bizos vagyok benne, hogy léteznek, ezért ez is egy jó választás lehet.
• Konzolok: a konzolok (pl. Playstation, N64, Dreamcast stb.) piaca elég nagy, és a konzolokra való fejlesztésnek mindenképpen van jövõje, de sajnos ez nem üzleti úton szinte megoldhatatlan. Ha konzolra szeretnél fejleszteni, ezt leginkább egy játékfejlesztõ stúdió alkalmazottjaként teheted meg.

Irány: a fejlesztés
Itt az ideje, hogy a tulajdonképpeni játékfejlesztésrõl beszéljünk. Az egyszerûség kedvéért feltételezem hogy a C/C++-t választottad Windows alá, ennek ellenére az itt leírtak többsége más nyelvekre és platformokra is érvényes.
Mielõtt játékot kezdenél fejleszteni, jól kell tudnod használni a C/C++-t. Értened kell a pointerek, tömbök, struktúrák, függvények és osztályok mibenlétét és profin kell tudnod alkalmazni õket. Ha ez már megvan, készen állsz.
Ennek a cikknek nem célja, hogy mindent megtanítson ami csak a játékfejlesztéshez kell. Sok könyv van a témában és tutorialok százai a weben. Amit én javaslok:
• Szerezz be pár könyvet. Kezdõknek a Windows programozásról a „Windowsos játékfejlesztõ guruk tippjei” egy jó kiindulópont. Elõször olvasd át a könyveket, próbáld ki a példákat, és ha valamit nem értesz, olvasd el újra az adott részt.
• Egészítsd ki az olvasottakat online tutorialokkal. Amellett hogy tisztábban látod az eddigieket, a tutorialok olyan témákkal is foglalkoznak, amikkel a könyvek nem.
• Kérdezz! Ha a kérdésedre nem találsz választ a könyvekben és a tutorialokban, kérdezd meg azokat, akik tudják a választ. A fórumokon sokan szívesen segítenek. [De mielõtt kérdezel, nézz utána a keresõkkel is a témának. Szinte biztos, hogy mér elõkerült és az esetek nagy részében kis idõráfordítással a választ is meg lehet találni. – a ford.]
A fent leírtakat nem egy folyamatnak kell tekinteni, hanem párhuzamos tevékenységek halmazának.
Nem csak tanulni kell, hanem alkalmazni is a tanultakat. Kezdd egyszerûbb játékokkal, és fokozatosan haladj a bonyolultabbak felé. (Lásd Geoff Howland cikkét ugyanitt)
Kezdetben dolgozz egyedül. Ne rohanj, hogy csatlakozz egy csapathoz, ez egyelõre csak lelassítja a tanulás folyamatát. Miután már több játékot magad mögött tudhatsz, eredményesebb lesz a csapatmunka is.
Még egy dolog, amit a könyvekkel kapcsolatban szeretnék megjegyezni: Ne csak játékprogramozási könyveket olvass! Ahhoz, hogy olyan játékokat írhass, mint amilyeneket a boltokban látsz, olyan témákkal kell mélyebben foglalkoznod, amit az általános témájú könyvek éppen csak érintenek. Ezek közül néhányról megint csak olvashatsz a tutorialokban, de ezeken felül szükséged lesz néhány könyvre a grafika, mesterséges intelligencia, hálózatkezelés, fizika stb. témájában is.

Még néhány tipp
• Ne csak gyûjtsd a tudást, alkalmazd! Semmit nem értesz meg igazán, amíg nem próbáltad ki. Készíts kisebb demokat, amik a tanultakat fölvonultatják. Írd meg a könyvekben a leckék végén lévõ feladatokat.
• Játssz! Mármint a számítógépes játékokkal. Így ötleteket és tapasztalatot is szerezhetsz, ráadásul kellemes kikapcsolódás.
• Segíts másoknak. Egyszer el fogsz jutni arra a pontra, ahol már megoszthatod másokkal a tudásodat. Ne hagyd ki ezt a lehetõséget, hogy régebbi ismereteidet felfrissítsd.
• Fejezd be, amit elkezdtél. Ne ess abba a hibába, hogy azt gondolod „Tudom, hogy be tudnám fejezni, de van egy jobb ötletem, inkább azt csinálom”. Sokkal többet ér, ha befejezed az elkezdett játékokat, és így lesz is valami, amit referenciaként felmutathatsz, nem az üres levegõbe beszélsz. Hogy ez könnyebb legyen, ne próbálj meg nagy vagy túl összetett játékokat írni, amíg nem vagy tapasztaltabb.
Hát ennyi. Most már megírhatod a Quake 4-et. Na jó, nem egészen, de most már elindulhatsz, tudod, hogy hol kell információt keresni és találni, így aztán hosszú évek kemény munkájával még ez is megtörténhet…
A szerzõ: Dave Astle 1984 óta ír számítógépes játékokat. A ROI Systems Inc. szoftvertervezõje, egyúttal Myophic Rhino Team vezetõ fejlesztõje. Valahogy még arra is tud idõt szakítani, hogy cikkeket írjon. Alkalomadtán alszik.


Játékfejlesztési kalauz kedõknek
Szerzõ:
Dave Astle
Eredeti cím: Game Programming Beginners Guide
Eredeti cikk: http://www.gamedev.net/reference/programming/features/davegpg/
Forrás: http://www.gamedev.net/

Értékelés: 8.38

Új hozzászólás
Joker          2012.04.08 19:18
Nagyon köszönöm, sokat segített az elindulásban!:kir�ly