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? /2. rész/ 2009.12.16 14:26


2. rész
Hegyi beszéd – A dokumentáció


Bevezetés
Az egyik alapvető hiba a megfelelő dokumentáció hiánya. Kisebb és nagyon projektek (főleg nagyobbaknál) eléggé fontos. A megfelelő leírás és összegzés hiányában a fejlesztés egy idő után káosszá válik.
Tipikus hiba: van egy nagyon jó ötlet, a játékot el is kezdik fejleszteni. Az első pár ezer (^.^) sor után azonban valakinek eszébe jut még valami (vagy rosszabb esetben komoly hibák jelennek meg a játékban). Nem is lenne olyan nagy gond, ha nem kellene újraírni a kód felét (mivel másként nem lehet módosítani). Sok garázsfejlesztő csapat játéka bukik el ezen az apró hibán: Nincs dokumentáció!
Természetesen kisebb projekteket könnyen lehet kivitelezni megfelelő leírás nélkül is. Azonban nagyobbaknál már komoly problémák jönnek elő! Éppen ezért szükséges a megfelelő előkészület a fejlesztésre (nagymértékben gyorsítja a fejlesztést, hiszen nem munka közben kell kitalálni a fél játékot).
A dokumentációt (és annak méretét) meghatározza a projekt mérete (egyszerű vagy összetett játékról van szó), az adott platform, az elérhető funkciók száma és bonyolultsága stb.

Koncepció
Elsőként a játék koncepcióját érdemes leírni. (Ha minden igaz ez már meg van.) Írd le, hogy miről szól majd a játék, esetleg nagyon röviden pár mondatban leírhatod a játék háttér történetét (később jó kiinduló alap lehet a teljes történethez – csak akkor kell, ha olyan típusú a játék pl.: RPG). Fontos, hogy pontosan leírd, hogy mi lesz a játékban a fő cél, milyen platformon akarod fejleszteni, és hogy milyen alapvető funkciók lesznek elérhetőek a játékban (az ötleteket írd ide, amiket a csapattal összegyűjtöttetek).

Részletezés
[Megjegyzés: a Hyneris dokumentációját veszem alapul a bemutatásához.]
A koncepcióban tárgyalt dolgok részletes kifejtése jön ide. Példák a részletezésre:
Fő célok: milyen fő céljai vannak a játéknak, hogyan lehet azokat elérni, mik azok a dolgok, amiket a játékosnak mindenképpen teljesíteni kell a cél eléréséhez stb.
Játék háttér részletezése: milyen fajok, kasztok, oldalak vannak. Ezek egymással való kapcsolatai (pl.: egy-egy faj tagjai milyen kasztokhoz tartozhatnak).
Platform: a platform áttekintése, korlátai, lehetőségei. (Többnyire az határozza meg a platformot, hogy az adott fejlesztő milyen programozási nyelveket ismer magas szinten – remélem az a néhány ember, érti a célzást ^.^!)
Alapvető funkciók: azok a funkciók vagy lehetőségek, amik nélkül a játék nem létezhetne. (Például online játék esetében szükséges a felhasználó kezelés, a karakter kezelés stb.)

Játékbeli funkciók
Ez az egyik nagyon fontos része a teljes dokumentációnak. Tulajdon képpen ez a lelke az egésznek. A leírások elkészítése során még könnyen lehet kivenni és beilleszteni funkciókat, lehetőségeket, mint a már kész programban. Lényegében itt kell leírnod a csapat által összegyűjtött összes ötletet, illetve itt kell majd kidolgoznod. (Megjegyzés: érdemes minden ötletet leírni!)
Az ötleteket csoportosítsd a következők szerint: megvalósítható, nem megvalósítható és kérdéses csoportokba. (Ezek alapján később könnyebben lehet összeválogatni az alap lehetőségeket a játékhoz.)
Nagyon fontos, hogy ne az összes ötletet akarjátok egyszerre megvalósítani! Ez több okból sem kifizetődő. Első dolog, ami ellene szól az a határidő. Ha minden ötletet meg akarnátok valósítani (természetesen, ha nincs olyan sok akkor nem számít) akkor lényegében jó pár hónappal kitolnátok a fejlesztés határidejét, ami nem minden esetben jó (lásd az első részt). Második dolog, ami ellene szól az a későbbi ötlethiány (főleg olyan játékoknál fordulhat ez elő ahol igény van a folyamatos frissítésre, bővítésre pl.: online játékok esetében).
Nem fog összedőlni a világ, ha egy-két ötlet megvalósítását későbbre halasztjátok! [Erre csak saját példát tudok hozni. A Hyneris első kiadásában sok (már most kidolgozott) funkció és lehetőség nem lesz elérhető! Miért? Egyrészt mert a játék ezek nélkül is teljes mértékben használható és élvezhető, másrészt egy pár hónappal a játék indítása után elérhetővé téve ezeket a lehetőségeket, a játék folyamatosan „életben” tartható!]
Ajánlott kijelölni az alapfunkciókat, ami nélkül a játék nem indulhat el! Ha ezek, megvannak már lehet építkezni rá az ötletekből. Például egy online böngésző alapú játékhoz elengedhetetlen a felhasználó kezelés (regisztráció, bejelentkezés, kijelentkezés), karakter kezelés (létrehozás, szerkesztés, karakter felszerelése), küldetés rendszer (alap küldetések) és még sorolhatnám. Ha ezek megvannak, akkor el lehet kezdeni az „építkezést”.

Menürendszer
Miért olyan fontos a menürendszer megtervezése? Egy jól megtervezett menürendszer nem ijeszti el a játékost és segíti a későbbi fejlesztéseket (ez online játékokra fokozottan érvényes). Képzeld el azt a helyzetet, hogy leülsz játszani és mondjuk egy adott tárgyat, akarsz használni ami a karaktered „táskájában” van. De a fejlesztők, nem tervezték meg körültekintően a menürendszert és neked hat menün, kell átverekedned magad ahhoz, hogy megtaláld a karaktered felszerelését. Elmenne a kedved tőle, nem igaz? Ne felejtsd el, hogy nem magadnak, hanem a leendő játékosoknak fejlesztesz! Amit te átlátsz nem biztos, hogy egy másik ember is ugyan úgy átlátja!
A fejlesztést is nagyban segíti, ha nem kell mindig átrendezni az egész menürendszert, ha valami új lehetőséget illesztesz be a játékba. A menürendszernél a legjobb megoldás az egyszerűségre való törekvés. (Ne bonyolítsd túl, de ne is legyen minden lehetőség külön menüpontban. A lehetőségeket csoportosítva könnyen elejét veheted ezeknek, a problémáknak.)

A játék bőre
Elég nyers megfogalmazása ez a grafikus felületnek (vagy másként front-end -nek). A front-end alatt értem a beviteli mezőket és magát a webdesign-t. A weboldal külsejének megtervezése ne öt perces fércmunka legyen! A leendő játékosok reményeink szerint hosszú időt töltenek majd a játékkal. (Egy példa: lehet bármilyen jó egy játék senki sem fog vele játszani, ha pusztán csak egy fekete háttérből, fehér szövegből és egy pár kék linkből áll!)
A weboldal külsejének megtervezésére éppen ezért sok időt kell szánni. Kellemes és egyben meggyőző benyomást kell keltenie a leendő játékosban. (Mikor meglátja a játék grafikáját, egyből azt gondolja, hogy én márpedig ezzel játszani akarok ^.^! Remélem, nem kell tovább magyaráznom.)
Megjegyzés: ezt a részt nem kell elkapkodni! A játék fejlesztése alatt végig van időtök elkészíteni a tökéletes grafikát. Később, ha mindent jól csináltatok gyerekjáték lesz beilleszteni a kész design-t a kódba!

Képletek, szabályrendszer
Elengedhetetlen kelléke egy jó szerepjátéknak a szabályrendszer és a megfelelő képletek. (Ha pontosabban akarok fogalmazni, akkor ezek nélkül nem is igazán lenne mivel játszani!) A képletek és a szabályok teremtenek egyensúlyt a játékban.
Nagyon fontos, hogy a játék tervezése során végig fenntartsd az egyensúlyt! Nem lehet olyan, hogy az egyik faj erősebb, vagy éppen jobb fegyvereket tud magának vásárolni. Az ilyen hibák a játék élvezhetőségét nagymértékben rombolják. Tehát nagyon oda kell figyelni ennek a résznek a tervezésénél.
Ilyen képlet például a szint lépéshez szükséges adatok kiszámolása (például mennyi tapasztalati pont kell a szintlépéshez), illetve a szint lépés utáni életerő meghatározása.
(Később, ha valakit érdekel részletesebben is kifejthetem.)

Háttértörténet
Bizonyos játék típusoknál (például szerepjátékoknál ^.^) elengedhetetlen a részletes háttértörténet. Maga a játék stílusa követeli meg a kidolgozottságot. Ha jó alap története van a játékodnak akkor nem lesz gond a háttér kialakításával. (Ha nem erősséged az írás akkor keress egy szövegírót erre a feladatra!)
Természetesen játék típusától függően kell a háttér kialakítását elvégezni. Most egy szerepjáték háttértörténetének fő részeit vázolom (a teljesség mellőzésével): tartalmazza a világ kialakulását (ha új világot teremtesz), a fajok és kasztok kialakulását, a jelenlegi helyzethez való eljutást és magát a jelenlegi helyzetet (vagyis azt a pontot, amikor a játékos belép a játékba).

Adatbázis megtervezése
A cikk vége felé elérkeztünk az egyik legfontosabb lépéshez, az adatbázis megtervezéséhez. Bármilyen hihetetlen talán ez az egyik legfontosabb (a biztonság kérdése azért talán fontosabb) része az egésznek. Kisebb játékoknál nem okoz nagy problémát, ha a fejlesztők nem gondolnak az optimalizálásra. Azonban egy nagyobb projektnél súlyos problémák lehetnek belőle (állandó túlterheltség, hatalmas adatbázis méret, adatvesztés, lehal az adatbázis szerver, és még sorolhatnám).
Ezek megelőzése érdekében fontos, hogy az adatbázist a lehető legoptimálisabb módon alakítsd ki (részletesen majd egy későbbi cikk során írok az optimalizálásról).
Tervezésnél írd le, hogy mi lesz a tábla neve, milyen mezők kerülnek bele, a mezőknek mi lesz a neve, mit fogsz benne tárolni és maximum milyen hosszúságú és típusú adatokat tartalmazhat.

Biztonság
Online játékok esetében a biztonságra nagy hangsúlyt kell fektetni már a fejlesztés korai szakaszától kezdve! Sokan csak legyintenek az egészre, azonban ez nagyon rossz hozzáállás! A játék élményt nagymértékben rombolják a csalók (például hibákat kihasználva előnyhöz, juttatják magukat).
Azonban a nagyobbik gond az adatlopás lehetősége (jelszavak, e-mail címek, vagy akár a játék forrása – valljuk be nem túl kellemes, viszont látni a játékunk forráskódját egy warez oldalon úgy, hogy akár több havi munkánk van benne).
Érdemes összegyűjteni azokat a pontokat ahol támadás érheti a játékot. Online játékok esetében ez többnyire minden olyan hely ahol a felhasználók adatokat adhatnak meg, illetve ahol az oldalak között kommunikáció folyik. (Későbbi cikkben részletezem a biztonság növelésére használható megoldásokat!)

Értékelés: 10.00

Új hozzászólás
paragliding          2010.03.06 12:29
Én spec. erre nem sok esélyt látok. Egy böngészőben játszható játékhoz saját és egyedi specifikus programkódokat kell írni, erre nem alkalmas egy sablonkód. A tömegkódok biztonságáról (vagyis annak réseiről) nem is beszélve.
Germo          2010.03.03 20:02
Örülök, hogy végre a böngészőben játszható játék fejlesztésről is szó esik.
Mit gondolsz mennyire van annak realitása, hogy egy böngészős játékot eleve a weben fejlesszen a csapat.
Egy Drupal alapú fejlesztő oldalon gondolkodom, ami tartalmazná a kalandok, küldetések és a világ kialakításához szükséges formokat online.
CyberAngel          2009.12.19 08:06
Az is jön nem kell aggódni!
paragliding          2009.12.19 02:50
Ez szerintem jó ötlet, mert aki nem ismeri a html vagy a php nyelveket, az nem innen és most fogja megtanulni olyan szinten, hogy játokot fejlesszen velük. Szerintem is kár az idődet vesztegetni egy-egy ilyen cikk megírására. Lépjünk és lássuk a "fontos" részeket!

Idézet
Akkor a következő cikk sem fog kikerülni, mivel az meg a php alapokról fog szólni
kicsy          2009.12.18 06:22
@CyberAngel: beküldheted, megnézem, kikerülhet. Nem a témával van a baj elsősorban, hanem a minőséggel.
svn          2009.12.18 06:13
kicsy : Ok, de ez anelkul nem derult ki, hogy ellatogattam volna az oldalara. Nem volt egyertelmu amit mondtal. (de igy megnezve mar realis)
CyberAngel          2009.12.18 05:56
Akkor a következő cikk sem fog kikerülni, mivel az meg a php alapokról fog szólni - nem szeretem az in medias res kezdést - (igaz bővítéssel, és remélem olyan is lesz benne ami már "érdekesebb" pl.: .htaccess).
Az egész egy cikksorozatnak indult ami annyit tesz, hogy az alapoktól kezdve mutatom be az egészet. Így került bele a html is! Mellesleg meg az amit leírtam az tökéletesen elég a kezdéshez! A lényege az, hogy össze tudjon rakni egy alap html-t egy űrlappal (amit majd használni kell). Arra pedig bőven elég!
Az 5-ik részben kezdem el boncolgatni a biztonság kérdését (ez a rész két részes lesz).

Üdvözlettel: Gabriel
kicsy          2009.12.18 05:48
@svn:
Tessék, itt elolvashatod:
http://www.hyneris.hu/hogyan-fejlesszunk-3resz/
Objektíven döntöttem, nem azért rossz, mert nekem ennél jobban megy.

@CyberAngel:
Ahogy a css-ről nem akarsz egy külön cikket írni, úgy a html, php alapokról se tedd. Ennyit kértem, kérek. Aki akar, úgyis utánanéz, ebben segíthetsz neki a megfelelő erőforrások összegyűjtésével. Nyugodtan ess neki a komolyabb témáknak.
CyberAngel          2009.12.18 05:15
Kapitany-nak még üzenném, hogy az akkor sem tudás az ha valaki programmal össze tud rakni egy alap html oldalt! ...
CyberAngel          2009.12.18 05:13
Egyrészt ne akadj már fennt azon, hogy hogyan raktam be a <> jelet. Másrészt, a html amit írtam az alapokat tárgyalja... ALAPOK! .. Oké ne akarjon font tag-et használni! Használjon css-t! Én is azt teszem! De nem fogok egy külön cikket írni a css-ről mert teljesen felesleges! Akit érdekel az nézze meg... ez nem olyanoknak készült aki kívül belül ismeri a html-t, php-t és a css-et....

Üdvözlettel Gabriel
Kapitany          2009.12.18 04:49
Én megnéztem a HTML-ről szóló cikket a csapat oldalán, de abból inkább ne akarj tanulni. 2009-ben ne használjunk már font tageket meg hasonló elavult dolgokat! Arról nem is beszélve, hogy illene tudni a cikk írójának, hogy hogyan lehet HTML szövegbe <> jeleket beilleszteni.
svn          2009.12.18 02:32
kicsy : nem gondolod, hogy az olvasokat is meg kene kerdezni, mi a hasznos es mi nem?

Miert elavult es miert rossz? Attol, hogy te a kisujjadbol vagod az egesz php, jatekfejlesztes es csapatszervezes temat, biztosan akad itt a portalon olyan ember akinek hasznos lehet az ilyen cikk...
Kapitany          2009.12.17 22:04
Az is elég furcsa, ha valaki úgy gondolja, hogy a "drag&drop nem tudás". 20 éve a Basic + assembly kombó volt a menő, 15 éve meg azzal szórakoztunk, hogy Turbo Pascalban grafikus felhasználói felületet írtunk. Ma már kinek hiányzik ez? Miért dolgozzunk feleslegesen, ha van egy olyan rendszer, ami készen ad egy csomó dolgot? Így sokkal jobban lehet a feladatra koncentrálni.

Ajánlom egyébként figyelmetekbe az alábbi nagyszerű írást:

Az igazi programozó

Egyik kedvenc idézetem:

"Milyen eszközöket használ az igazi programozó? Elméletileg az igazi programozó a mérnöki pultról is bebillentyűzheti a programjait. Hajdanában, mikor a számítógépeknek még voltak mérnöki pultjaik, és ez némelykor így is történt. A tipikus igazi programozó az egész betöltőt fejből tudja hexában, és kijavítja, ha a programja felülírja azt. (Annak idején a memória még memória volt, és nem felejtett el mindent, mikor az áramot kikapcsolták. Manapság vagy elfelejti a dolgokat amikor nem kéne, vagy olyasmire is emlékszik, amit jobb lett volna elfelejteni.) A legenda szerin Seymour CRAY, a CRAY I és II szuperszámítógépek tervezője (meg a legtöbb CDC gépé) a CDC 7600 első operációs rendszerét a mérnöki pultról pötyögte be, amikor a gépet először bekapcsolták. Fölösleges mondanunk, hogy Seymour Cray természetesen igazi programozó."
kicsy          2009.12.17 16:58
Látod, pont olyan cikknek nem kéne születnie amit beküldtél. Bocs, de azt nem fogom kiengedni, mert komolyan többet árt mint használ. Ahogy írtad, hogy a drag&drop nem tudás, úgy az se, amit leírtál. Felületes, elavult, rossz. Gondolom sokkal mélyebben nem akarsz belefolyni viszont - nem is kell - így inkább arra kérlek, hogy az alapozás helyett linkelj jó minőségű anyagokat, ahonnan alaposan, helyesen meg tudja tanulni az, akit érdekel. Persze mutasd be ezeket a technológiákat, csak ne akard fél oldalban megtanítani őket.
CyberAngel          2009.12.17 12:35
Igazából nem mindenki ismeri!
Jó tudom, hogy egyesek szerint (mint például szerinted is) felesleges. Azonban ez egy cikksorozatnak készült és ehhez tartom magam (nem szeretem az in medias res kezdést).
A html gyorstalpaló valóban unalmas lehet mindenkinek aki kicsit is foglalkozott már vele. Azonban a php gyorstalpalóban több olyan dolgot is mutatok amit már nem mindenki ismer (vagy éppen nem használ), illetve bemutatom még a kód optimalizálás alapjait is!
Aki meg kívül-belül ismeri mindkét nyelvet az úgy sem fogja elolvasni!
Mellesleg nem kell aggódni legkésőbb jövő hét elején felkerülnek az első "komolyabb" írások, ami már nem kezdőknek készül!
kicsy          2009.12.17 11:27
Könyörgöm, a html és php gyorstalpalót ne. Hagyd ki, nem kell. Tele van vele a net, de amúgy is mindenki ismeri, teljesen felesleges. Szerintem inkább a játékfejlesztés-specifikus részekre koncentrálj.
CyberAngel          2009.12.17 09:13
Lesz az is, csak még várni kell! Még hátra van pár cikk ami az alapokat tárgyalja (például html és php gyorstalpaló). Utána már jönnek a komolyabb cikkek: adatbázis optimalizálás, biztonság kérdése stb...

Üdv Gabriel
Ashkandi          2009.12.17 08:53
Elég a rizsából, lássuk a hardcore részét a dolognak!
svn          2009.12.17 07:26
Nah igen, az ilyen hegyi beszedeket kellene betartania a garazs fejlesztok 95%-nak es akkor talan tobb befejezett jatek lenne (itt a portalon is) .