Milyen programok kellenek egy számítógépes játék elkészítéséhez?
Naponta teszi fel szinte ezt a kérdést.
Először is nem árt megtanulni programozni.
Aztán nem árt egy programozási nyelv alapos ismerete (általában C++ jellemző).
Aztán kell baromi sok matematikai ismeret. (Vektorok, mátrixok.)
Ha ez megvan, akkor el lehet kezdeni egy jó játékot összerakni.
Tehát érdemes lenne alaposan tanulni a c++ programozást?
És a játékok grafikus részét milyen programmal alkotják meg?
Egy számítógépes játék elkészítéséhez alapvetően szükség van egy:
-grafikus motorra
-játék motorra
-fizikai motorra
Ezeket a nagyobb játékfejlesztő cégek maguk programozzák a 0-ról és ez lényegében a játékfejlesztés legmagasabb szintje,szóval egyenlőre nem ajánlom hogy ezzel kezdj foglalkozni.Ilyen motorokat lényegében bármilyen programozási nyelven lehet írni,a legelterjedtebb a C++ de használnak akár Basic-et vagy C#-ot is például.Ez a programozó döntése.Magát a programozást,minden nyelv esetében úgy nevezett fordítókban "compilerekben" végzik.Ezek lényegében olyan programok mint egy szöveg szerkesztő (ezzel gondolom csak találkoztál),csak ezek a fordítók úgymond "értik" a programozási nyelvet és képesek lefordítani a számítógép számára ami által a számítógép képes végrehajtani az utasításokat.Ezért hívják fordítónak őket,mert lefordítják a programozási nyelvet gépi kódra.
Hogy részletekben hogyan csinálják ezeket a motorokat,azokkal vastag könyvek foglalkoznak nem beszélve a mögöttük álló komoly matematikáról,főleg a fizikai motor esetében.Szóval ha érdekel,kezdj el tanulni de ne várd hogy bárki itt ezt lefogja írni neked komolyan.
Ha az érdekel hogyan tudnál játékot csinálni,kezdetben használhatsz úgy nevezett "makereket" játék fejlesztő programokat amikben programozás nélkül összelehet állítani egy játékot.Például:
FPS Creator
The 3D Gamemaker
X-Quad Editor
Game Maker
Game Editor
Maker3D
RPG Maker
3DRad
és még sorolhatnám.Persze az ilyen programokból sokat nem fogsz tanulni.Ha célszerűbb megoldást szeretnél,akkor használhatsz például játék fejlesztésre kialakított nyelveket mint a DarkBasic,BlitzBasic,PlayBasic.Ezek olyan nyelvek amik sok olyan utasítást,parancsot (funkciót) tartalmaznak amik a játék fejlesztést hivatottak le egyszerüsíteni.De a legcélszerűbb ha elsajátítasz pár egyszerűbb általános nyelvet mint a Pascal,Basic,Lua,C#..stb Akár többet is.És használhatsz kész motorokat mint a:
Unity
Shiva3D
UDK
Leadwerks
3D Game Studio (A Engine)
XNA Game Studio
Rengeteg ilyen kész motort lehet találni,amire valamilyen általános nyelven lehet kódolni.De ez még csak a szellemi része a dolognak amit végülis így magában "nem látsz".Ezen kívül a játék fejlesztéshez szükség van modellekre,hangokra,textúrákra,animációkra..stb..stb amik megtöltik a játékot vizuális tartalommal és amikre hatással van végülis a grafikus motor,fizikai motor és játék motor.
Szóval a motorokon,fordítókon túl szükség van még
-modellező programra
-kép szerkesztőre
-hang szerkesztőre
is például.
Ha valaki egyedül fog neki egy komolyabb motort fejleszteni, az 10 évig is kódolhat akár, addig pedig rengeteget változik a hardver.
Az álmot, hogy játékfejlesztőként dolgozz, elfelejtheted. A Crytek Budapesti divízióját 80 főről 30-ra csökkentették. Magyarul kirúgtak 50 embert, mert sajt. És hogy még megalázóbb legyen, tablet PC-játékok készítésével bízták meg őket. Arról nem is beszélve, hogy hallottam olyan játékprogramozóról Mo-n, aki 8 hónapig nem kapta meg a fizetését.
Hobbiból viszont lehet csinálni, gyakorlásnak nem rossz, ha más cégnél szoftverfejlesztőként szeretnél elhelyezkedni (referenciának viszont ne ezeket mondd). Javítsatok ki, ha tévedek. Talán indie-fejlesztőként is lehet csinálni valamit.
Különböző módok vannak játékkészítésre :
a) Game Maker, FPS Creator, RPG Maker, egyéb játékkészítő programok használata
Az egyetemi nyíltnapon diákként bemutatót tartottam standomnál végzős középsulisokak. Saját programozott játékomat ismertettem, mutattam a forráskódot és módosításokat végeztem. Akik szakközepesek voltak, azokkal programozásról is el tudtam beszélgetni. Valaki megkérdezte tőlem : "Ismered az RPG Makert? Szerintem nagyon jó cucc!"
Valamelyik nyáron használtam, ám most, mint programozó azt mondanám, hogy nagyon amatőr dolog ilyen játékokat csinálni (hát még piacra dobni). Már nem használok, már csak azért sem, mert nem vagyok jó dizájnernek. Csináltam egy szobát és kész. Én inkább programozni szeretek, felépíteni a vázat, az "igazi világot", amiben az emberek játszanak. Kétségtelen viszont, hogy a level-dizájneri, játékdizájneri hajlamokat remekül ki lehet élni bennük.
b) Meglévő játékok MODolása
Unreal Tournament-ben Star Wars-témájú total conversion-t csinálni, GTA-ban Superman-ként repkedni, Source Engine-ben küldetések készítése, The Witcher pályaszerkesztőjének használata... Minden lehetséges, ha a Mod haználójának megvan a játék. Ritka az eset, hogy a piacon is lehetne érvényesülni (példa a Counter-Strike és Team Fortress Classic, melyek a Half-life modjaiként indultak) és itt is a dizájneri hajlamokat lehet kiélni. Kis szkriptelés van (például Lua), ügyesebbek pedig jobban belenyúlhatnak a játékba, ami ugye nem a sajátjuk.
c) Flash-játékkészítés
Eddig ez a legjobb választás kezdőknek. Lehet kezdeni Adobe Flash CS5-el és ActionScript 2.0-val. A CS5 előnye, hogy helyben rajzolhatod meg karaktereidet illetve a menüt. Alaposabb használat után rájön az ember, hogy a CS5 DÖGLASSÚ még a leggyorsabb gépeken is. A progit eredetileg flash-animációk tervezésére készítették, a timeline-rendszer sokakat az őrületbe kergethet, mivel össze-vissza lesznek a kódok. Így hát váltottam a Flex SDK-ra, melyet gyors FlashDevelop-programmal használok. Az igazi (flash)programozó választása! Fűszerezzük meg az objektum-orientált ActionScript 3.0-al, ami miatt sok 2.0-ás meg fog engem kövezni, hogy miért egy iszonyúan túlbonyolított AS-el szenvedek, de én jobban szeretem az objektum-orientált megközelítést, ezután az AS 2.0 amatőrnek tűnik nekem.
Előny :
gyors játékkészítés, remek eszköz "prototyping"-ra, azaz játékötletek tesztelésére. Ügyes programozók a működő flashjátékot átírhatják kedvenc nyelvükre és compile-olhatják ("exe-síthetik"). A flashjátékokat bárki játszhatja, akinek van böngészője Adobe Flash Player-el.
Hátrány :
A játék nem fut olyan gyorsan, mint egy igazi program.
c) Python-nyelv, pyGame-könyvtárral
A Python egy könnyű szkriptnyelv, ami lerövidíti a programozási időt azzal, hogy egyszerűbb szintaktikája van az egyesek szerint rémálomszerű C++-nál (Miért? Annyira nem is rossz. Ti még nem láttatok assembly-t vagy Lisp-et) és nem kell kapcsos zárójelekkel, ponosvesszőkkel majomkodni. Helyettük KÖTELEZŐ tanulátor-használat van, ami szép olvashatóvá teszi a kódot.:) Viszont rengeteget szentségelek, amikor egy tabulátor rossz helyen van, vagy azt hiszi az IDE, hogy valahol szóközt felejtettem bent.
Futtatáshoz python-környezet kell, ha le akarod fordítani ("exe-sítééés"), akkor nem külön program, hanem egy másik python-szkript kell, amit a Windows parancssorával kell futtatni.
A pygame tökéletes arra, hogy a 2D-s játékok architektúrájának egy alapvető részére tanítson meg : blittelés és sprite-ok használata. Ügyes pythonisták ezt is használhatják "prototyping"-ra (nem összekeverendő a C++ prototype-jaival, amik azt jelentik, hogy a Main után deklarálnuk eljárásokat), valamint Blenderrel használva 3D-s játékokat is lehet csinálni. Profik pyOpengl-el is machinálhatnak. Egyes nagyobb játékoknál (például Battlefield) a játék motorját C++-ben írják meg, logikai részét pedig pythonnal.
Hátrány : nem olyan gyors, mint egy C++-ben megírt program.
Reggel még folytatom d) e) és f)-ponttal. Nem hiszem el, hogy képes vagyok ennyit írni, azt még kevésbé, hogy ezt valaki el is olvassa.
d)C++ használata SDL/SFML/Allegro-könyvtárakkal
Hasonlóan lehet ezekkel 2D-s játékokat készíteni, mint a pyGame-el, sőt, a pyGame nem más, mint az SDL Python-os utódja. OpenGL/DirectX programozási ismerettel 3D-ben is lehet alkotni.
SDL : Simple Directmedia Layer. Az alap ipari szabvány játékkészítésnél. Ha egy projekthez ember keresnek, akkor megkérdezik, hogy "Na és van SDL-ismereted". A Neverwinter Nights-nál használták.
SFML : Simple and Fast Multimedia Library. Olyan, mint az SDL, csak több feature-el. Jelenleg ezt is használom, bár megvan az SDL is. Hátrány, hogy a tutorial-ok néha átláthatatlanok tudnak lenni.
Allegro : Hallottam olyanokat, hogy a DOS-os időkben még jó volt, manapság viszont vannak jobbak nála.
e)Meglévő engine használata C++-vel
Az id nyílttá tette az id Tech 4 engine (Doom 3, Quake 4) forráskódját, ám ahhoz, hogy ne csak FPS-et lehessen csinálni, ahhoz mélyen bele kell nyúlni a motorba. A két leghíresebb nyílt forráskódú grafikus motor : Ogre3D és Irrlicht.
Az Ogrét nagyobb játékoknál is használták, grafikailag többet lehet kihozni az Irrlichtnél, ám ára is van : régebbi gépeken lassabban fut, valamint bonyolult használni.
Kezdetnek az Irrlichtet tudom ajánlani, ami ha grafikailag nincs toppon, de könnyű beletanulni. Nem csak C++-vel lehet használni, hanem .NET-el is.
Ezek viszont még csak grafikai motorok. Ezen kívül szükséged lesz hálózati API-ra, fizikai motorra (Newton például) és még egyéb dolgokra.
Ha 2D-s játékot akarsz készíteni, akkor pazarlás motorokat használni.
f) Teljesen nulláról kezdés, C++, OpenGL/DirectX-ismerettel, egy kis assembly
Hajrá. Vannak bizonyos emberek, akik szórakozásból csak a grafikát csinálják meg. Jó OpenGL/DirectX-ismerettel remek effektusokat, pixel shadereket lehet írni. Az assembly pedig nem más, mint a számítógép gépi kódjaival megfelelő szimbolikus utasítások. Ritkán használják, leginkább akkor, ha egy C-ben megírt program lassabb részeit akarják optimalizálni (finomhangolás). Remélem nem kell használnod, bár hallottam olyan emberről, aki csak az assembly-t ismerte.
Ennyi lenne. Ha lenne kérdése bárkinek, küldhet privátot. Ez az oldal kitűnő kiindulási pontnak : [link]
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!