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
Hogyan fejlesszünk böngésző alapú játékot? /1. rész/ 2009.12.15 13:03


1. rész
Hegyi beszéd – Alapok


Bevezetés
A cím szerintem magáért beszél. Akik nem először olvasnak ehhez hasonló témájú „cikket” azok sejthetik, hogy itt miről fogok (prédikálni) írni. Az első rész elolvasását mindenkinek ajánlom (annak is, aki nem böngésző alapú játékot akar fejleszteni)!
A játékfejlesztés többnyire egy jó ötlettel kezdődik (mint mindig). Ekkor jön valaki azzal, hogy programozzuk le. A munka nagy lelkesedéssel el is kezdődik, azonban hamarosan véget is ér és a játék örökre elveszik a süllyesztőben. Ismerős ugye? (Ha nem akkor Te még nem kezdtél játék fejlesztésébe, vagy nagyon profi vagy ^.^)
Céltalanul, megfelelő koncepció és csapat nélkül kár is neki kezdeni az egésznek! Nem vagyok vérprofi játékfejlesztő éppen ezért futottam bele én is régen ugyan ebbe a hibába! Most sorban bemutatom egy játék elkészítése előtti (illetve utáni) alapvető lépéseket.

Az elképzelés
Az első és legfontosabb egy jó ötlet! (Természetesen nem kötelező de nem árt, ha esetleg valamit kezdeni is akarsz azzal, amibe annyi időt fogsz ölni!) Miért mondom, hogy kell egy jó ötlet? Mert már senkit nem érdekelnek az újabb (és egyre gyengébb minőségű) neveldék, (Természetesen vannak nagyon jók is, de sajnos ma már elég ritka.) a különböző másolt „ötleteken” alapuló játékok, vagy az éppen letöltött scriptek átiratai, amiben egy csepp újítás sincs.
Nem azt mondom, hogy ne neveldét fejlessz, hanem azt, hogy legyen benne legalább valami apró újítás (ne a szokásos sablont hozza a játék)! Ha valami újat és érdekeset tudsz mutatni a leendő játékosoknak, akkor már nyert ügyed van. A legjobb ötletek mindig böngészés közben születnek (természetesen ez nem mindenkire igaz ^.^). Nézz körül a neten képek és történetek után kutakodva! Egy jó sztori (mondjuk egy fantasy regény) nagyon jól be tudja indítani az ember fantáziáját, ami után már gyerekjáték az egész.

Szokásos hiba
Lehetőségeidhez (lehetőségeitekhez) mérten ne egyből egy Crysis szintű játékot próbáljatok meg elkészíteni, mert úgy sem fog összejönni. Kisebb projektekkel ajánlott kezdeni (egy kis mászkálós játék, vagy egy valamivel összetettebb script – pl. egy mini blog rendszer). Az ezekre szánt idő majd a későbbiek során a nagyobb projekteknél fog megtérülni! A csapat összeszokik, megtanul együtt dolgozni és ennek köszönhetően a végeredmény is sokkal jobb lesz (illetve gyorsabban is fog majd haladni a fejlesztés).

Koncepció
Ha megvan az ötlet, jöhet egy rövid koncepció. Fogj egy papírt és egy tollat (vagy ragadj billentyűzetet) és kezdj el jegyzetelni. Miről szól majd a játék, mi lesz benne a fő cél, mit lehet majd benne csinálni, milyen stílusú grafikai elemeket fog tartalmazni stb. Nem kell hosszúnak lennie, hiszen ez még nem a dokumentáció lesz. Csak a legfontosabbakat jegyezd le, ami közvetlen a játék leírásához (körbeírásához) szükséges!
Ha megvagy vele, akkor döntsd el milyen platformon, szeretnéd fejleszteni, illetve gondold végig, hogy mi (vagy ki) kell majd a játék fejlesztéséhez. Például, kellene két programozó, egy grafikus stb.

A csapat
Ha mindezekkel meg vagy, akkor jöhet a csapatépítés. Egy jó csapaton áll vagy bukik a játék sorsa, ezt ne felejtsd el! A csapat létszáma is nagyon fontos, ne legyetek túl sokan, de túl kevesen se! Mérd fel, hogy hány emberre van szükség. Természetesen, ha megfelelő gyakorlattal rendelkezel (vagy rendelkeznek a tagok) és van elég szabad időtök is akkor egy nagyobb projektet akár hárman is, kivitelezhettek!
Akik mindenképpen kellenek egy böngésző alapú játék fejlesztéséhez: egy (vagy kettő) php programozó - a projekt méretétől és a programozók tudásától függően - és egy grafikus. Ez a minimum. Ezek után természetesen még lehet szövegírótok (ha nem tudtok esetleg olyan választékosan fogalmazni), fordítótok, szerverhez értő ember (mert nem árt, ha van), vagy ha más platformra fejlesztetek, akkor 3d modellezők stb.

Szempontok
A következő szempontokat figyelembe véve érdemes összegyűjteni a csapat tagjait: tudás, távolság, szabadidő, folyamatos kapcsolat, megbízhatóság, önállóság. (Mellesleg megjegyezném, hogy az nem szempont, hogy haver vagy barát az illető!)
Tudás: programozzon már egy ideje az adott nyelven (vagy magas szinten tudja használni az adott programot). Teljesen kezdő programozókkal (vagy grafikusokkal) sok gondod lehet! (Lehet, hogy sok mindent még nem tud, nem érti meg a dokumentációt, nem veszi komolyan esetleg a feladatot, be kell tanítani – jelenleg mi is ezzel küzdünk ^.^ - stb.) Nem az a fontos, hogy az adott nyelvet kívül belül ismerje (vagy az adott programot) hanem az, hogy kreatív legyen, a feladatokat és az esetlegesen felmerülő problémákat egyedül is meg tudja oldani.
Távolság: fontos (legalábbis ajánlott), hogy ne egy kontinensnyire lakjon tőled. Az a lényeg, hogy ha úgy adódik elérhető távolságon belül, legyen! (Például ajánlott a havi egy megbeszélés, amikor mindannyian összeültök és átbeszéltek mindent! Egy ilyen összejövetel remek alkalom lehet a csapat összekovácsolására.)
Szabadidő: nem utolsó szempont, ha az adott „alany” nem csak szökőévente egyszer ér rá mondjuk programozni. (Azt hiszem, ezt nem kell magyaráznom!)
Folyamatos kapcsolat: fontos, hogy a csapat tagjai folyamatosan kommunikáljanak egymással. Például: ki hogyan áll az adott feladattal, mi van esetleg mi nincs kész.
Megbízhatóság: nem túl kellemes, ha a fejlesztés közepén hagyják ott a csapatot a legfontosabb tagok. Éppen ezért lehetőleg olyan tagok kerüljenek be a csapatba, akik tényleg megbízhatóak (főleg ha egy komolyabb projekten dolgoztok).
Önállóság: szerintem, nem kell részleteznem.
Természetesen ezen kívül még feladatokra lebontva is lehetne részletezni, hogy mi lenne az ideális (például a grafikus, tudja használni a photoshopot, a programozó használható és átlátható kódot írjon).

Csapatvezető
Fontos, hogy már a projekt elején tisztázva legyen, hogy ki a csapat vezetője! Maximum egy ember irányíthatja a csapatot (ne legyen öt vezető, mert káosz lesz)! A vezető feladatai, közé tartozik a csapat egyben tartása, a feladatok elvégzésének ellenőrzése, a megbeszélések összeegyeztetése (mindenkinek jó legyen az adott időpont), a feladatok kiosztása stb.
A csapat vezetőjeként nem engedhetsz meg mindig mindent (például a feladatokat valamelyik tag rendszeresen késve fejezi be, hibás a leadott anyag stb.). Ha mindenki kénye kedve szerint dönti el, hogy mikor adja le az adott feladatot akkor az eredmény ismételten káosz lesz!
Természetesen ez nem azt jelenti, hogy a csapat vezetőjének nem kell dolgoznia a projekten! Egy garázsfejlesztésnél mindenkire szükség van így a vezetőre is (és nem mellesleg elég rossz példa egy lusta csapatvezető, aki nem csinál semmit csak a feladatokat, osztja ki). Az egyensúly megtartására mindig törekedned kell (a feladat mérete arányos legyen a rászánt idővel – ne másnapra kelljen megírnia tízezer sort a programozónak). Továbbá fontos, hogy jóban legyél a csapattagokkal (attól, hogy te vagy a vezető még nem vagy jobb a többieknél, ezt ne felejtsd el)!

Dokumentáció
Ha megvan a csapat, jöhet a dokumentáció (a következő rész csak erről fog szólni)! Üljetek össze és beszéljétek át a játék alapötletét. Ki mit szól hozzá, tetszik-e neki az alapötlet, mit változtatna rajta, milyen pluszt tudna hozzá tenni az eddigiekhez, és még sorolhatnám. Egy jó dokumentációval nem következhet be az a hiba, hogy havonta kell újraírni a teljes kódot, mert valamit változtattatok a játékon (sajnos nem egy fejlesztés vérzik el ez miatt).

Határidők, mérföldkövek
Sokan (köztük én is) követik el azt a hibát, hogy random mondanak egy dátumot, amikor úgy gondolják, hogy kiadják a játékot. Azonban ez több okból sem működhet. Egyrészt a túlságosan távoli dátum (vagy éppen túlságosan közeli) a fejlesztők hozzáállását és kitartását nagyban befolyásolja. Úgy gondolják, hogy ráérnek, nem kell kapkodni vagy éppen ellenkezőleg és feladják, mivel úgy gondolják, hogy úgy sem lesz kész időre a játék. Dátumot csak nagy vonalakban érdemes meghatározni (például következő év vége).
Fontosak a mérföldkövek (mérföldkő: apró célok a fejlesztés során)! Egy mérföldkő lehet például az, hogy elhatározod (vagy határozzátok) hogy a játék egy részét (például a küldetés rendszer kidolgozása) a következő két hétben befejezed (befejezitek). Ez lehet nagyobb vagy kisebb rész, lényegtelen. Vagy lehet nagyobb mérföldkő is például az első játszható verzió kiadása. Ha messze is vagytok még a végétől, legalább kaptok visszajelzéseket a leendő játékosoktól (ami további erőt adhat a fejlesztéshez – valljuk be egy-két pozitív hozzászólás, nagyon sokat tud segíteni ^.^).

Tesztelés
A játék tesztelése nagyon fontos feladat (főleg egy online játék esetében – részletesen a következő részekben). Érdemes tartani egy (vagy inkább több) zárt alfa tesztet. Ezeket, a teszteket nektek kell elvégezni (esetleg egy-két külsős bevonásával). Itt derülnek majd ki az első hibák, amiket nem vettetek észre.
Ha már pár teszten túl vagytok és a játék fejlesztésének a vége már közel van, (értsd: a kód már nem változik nagy mértékben) akkor jöhet a nyílt béta teszt. (Érdemes a béta tesztet beharangozni, hogy minél többen tudjanak róla és minél többen részt, vegyenek benne. Természetesen ezek a tesztek is lehetnek mérföldkövek.) Majd ha mindezekkel megvagytok, jöhet a játék indítása!

Visszajelzések
Fontos, hogy a visszajelzésekre reagálj (reagáljatok). (A kritika mértékétől függetlenül normális hangnemben – remélem, nem kell ecsetelnem miért!) Azokból fog kialakulni a későbbi játékos tábor, akik nektek írnak (nem mellesleg a felhasználók gyorsabban terjesztik egymás között a híreket az új fejlesztésekről így a ti játékotokról is).

Értékelés: 10.00

Új hozzászólás
svn          2009.12.17 07:15
Ashkandinak szolt a kijelentes

A cikk meg alapos es reszletes, gratulalok hozza.
CyberAngel          2009.12.17 06:58
Erre csak annyit tudok mondani, hogy sokan!
De a gond az az, hogy ez nem tutorial lesz! Lényegében ezek tanácsok, tippek összegyűjtve, egybegyúrva egy cikk formájában tálalva! Sok olyan rész lesz ami szájbarágósan tárgyal egy két témát (mint például az alapok, vagy a biztonság kérdése).
Sokan el sem tudnak kezdeni fejleszteni egy böngésző alapú játékot, mert már az elején elakadnak, mert nem tudják, hogy merre meddig.
Éppen ezen a helyzeten akarok változtatni azzal, hogy összegyűjtöm azokat a dolgokat amik segíthetik az indulást (vagy már a fejlesztést).

Üdvözlettel: Gabriel
svn          2009.12.17 06:24
No de ki akar tutorial alapjan jatekot csinalni?
Ashkandi          2009.12.17 05:20
Ez szerintem nagyon jó téma, tényleg nagyon jó játékokat lehet csinálni és nincs semmi magyar tutorial hozzá.
CyberAngel          2009.12.17 05:17
Mint azt a cím is mutatja Hegyi beszéd... Az alapvető hibákat is leírtam (ami ugyan elcsépeltnek tűnhet, de sokan még így sem vesznek ezekről tudomást).
Tudom, hogy nem csak php-val lehet készíteni hanem mással is. Tulajdonképpen a cikksorozatban php-val ismerkedhetnek meg majd részletesebben és éppen ezért írtam.

Azért nem egyből bele a közepébe... elvileg hamarosan kikerül a dokumentáció készítésről is egy hosszabb írás (ami úgyszintén unalmas). A harmadik - negyedik cikk környékén az alapok bemutatása történik (html és php). Majd utána jönnek a komolyabb cikkek például adatbázis tervezés és optimalizálás, biztonság kérdése (beviteli mezők szűrése, oldalak közötti kommunikáció stb).

Köszönöm a pozitív megjegyzéseket!

Üdvözlettel: Gabriel
Szidi_Rezegh          2009.12.17 01:31
A böngészős játékok egyre nagyobb teret hódítanak, ezért jónak találom, hogy készül egy ilyen témájú cikksorozat.

Megjegyzem itt-ott kicsit elcsépelt dolgokat olvashatunk (pl.: a csapatban ne legyünk se túl sokan, se túl kevesen) Persze az ilyen dolgokat nem lehet elégszer elmondani.
Egy kiegíszítés: azt írtad kell 1-2 php programozó. Böngésző alapú játékot nemcsak php technológia segítségével lehet készíteni (hanem pl.: flash, java, asp.net, ... http://en.wikipedia.org/wiki/Browser_game)

Várom a folytatását!
Ashkandi          2009.12.16 17:08
Azt hittem egyből belevetjük magunkat a dolgok közepébe.