Csoport
neve: Segmentation_Fault
Feladat
sorszáma: 6
Feladat
címe: Stratégiai játék
Rendszertervezés
Gyakorlatvezető::
Repási
Tibor

Csoport
tagok:
|
Turai Attila
|
j74x9i
|
turai1@iit.uni-miskolc.hu
|
|
Hadházi Csaba
|
uvbydq
|
hadhazi1@iit.uni-miskolc.hu
|
|
Keserű János
|
iu84y5
|
keseru@iit.uni-miskolc.hu
|
|
Petrik András
|
f3zyt9
|
petrik3@iit.uni-miskolc.hu
|
|
Sebe György
|
ozj1fr
|
sebe2@iit.uni-miskolc.hu
|
2006.04.21
Történet
|
Dátum
|
Verzió
|
Leírás
|
Szerző
|
|
2006.04.08
|
0.1
|
Kezdeti verzió
|
Segmentation_Fault
|
|
2006.04.21
|
0.2
|
2. Felhasználói felület
|
Petrik András
|
|
2006.04.21
|
0.3
|
1. Bevezetés
|
Turai Attila
|
| 2006.04.21 |
0.4
|
3.
Adatmodellek |
Hadházi Csaba
|
| 2006.04.21 |
1.0
|
A dokumentum véglegesítése.
|
Hadházi Csaba |
Tartalomjegyzék
1.
Bevezetés
2.
Felhasználói felület
3.
Adatmodellek
3.1. Adatbázis kezelő kiválasztása
3.2. Térképek
3.3. Mentés file-ok
3.4. A betöltés
3.5. Beállítások
3.6. Speciális karakterek
3.7. Adatkezelés
3.8. Az file-kezelővel kapcsolatot tartó osztályok
1. Bevezetés
Ez a dokumentum a fejlesztés
rendszertervezés fázisát valósítja meg. Itt kerül kifejtésre a
felhasználói felület terve, és a szoftverünk által megvalósított
adatkezelési jellemzők.
2. Felhasználói
felület
Ebben a speciális esetben a
felhasználói felület helyes működése, és barátságos, egyszerű
kezelőfelület létfontosságú. A programban a felhasználóval kommunikáló
összes osztály a Graphics alrendszerben helyezkedik el. A játékban
minden kontaktus a felhasználó és a játék között az egér használatával
történik.Egyszeres bal egérgomb kattintásra generálódnak az események.
A felhasználó az alábbi esetekben kerül interaktív kontaktusba a program felhasználói felületével:
- Használja a menüt
- Küldetést old meg, azaz játszik a játék lényegi részével (Főképernyő)
- A játék közben olyan tevékenységet folytat, melyhez külön képernyőt (ablakot) kell biztosítani.
Ezek a lehetőségek:
- Városokhoz tartozó
tevékenységek
- A csapatok közti
egységmozgatás megoldása
A következőkben ezeket a lehetőségeket fogjuk
részletesen tárgyalni.
2.1. A menü
A menü funkcióinak szolgáltatását, és a menü kirajzolását a Graphics alrandszerben elhelyezkedő MainMenu osztály szolgáltatja.
A menü képernyője:
A menüpontok részletezése a
felhasználói kézikönyvben történt
meg.
A menüt szolgáltató MainMenu osztály
részletezése pedig az Analízis modell dokumentum
feladata.
2.2. A főképernyő
A főképernyő a játék lényegi részének lebonyolításának feladatát hívatott ellátni. Igen fontos része a programnak.
Működésének lebonyolításáért a Graphics osztály felel.
A főképernyő:

Víz:
ez mutatja a rendelkezésünkre álló nyersanyag
mennyiségét.
Gyorsmentés:
itt menthetjük a játékot mindenféle
menü, és egyébb nyűg nélkül.
Főmenü:
ez a menüpont a főmenüt jeleníti meg.
Térkép:
itt látható a játéktér
kicsinyített mása.
Város:
egy vízbányára telepített várost
reprezentál.
Féreg:
ez egy féreg.
Csapat:
egyik csapatunkat reprezentálja
Játéktér: ezen mozoghatunk, itt
történnek a játék főbb eseményei.
2.3. Játékon belüli külön képernyők
A játék közben akad 3 eset, amikor
külön ablakot kell nyitni, mert a főképernyő nem megfelő ezen feladatok
ellátására. Az alábbiakban ezeket az eseteket részletezem.
2.3.1. Város képernyő

- water: ez jelzi a rendelkezésünkre állóvizet.
- maturity: a város fejlettségét jelzi.
- create menüpontok: itt gyárthatunk egységeket. a fejlettség növekedésével új menüpontok válnak elérhetővé.
- develop the city: A várost lehet fejleszteni 10%-os léptékben 100 víz egységért.
2.3.2. A csata képernyője
Ha két egység csatázik, ez a képernyő jelenik meg. A képernyő felépítése igen egyszerű.
Két sorban ( egymás alatt ) látható a két ellenfél csapata.
A támadás gombra kattintva játszódik le a csata egy köre.
2.3.3. A csapatcsere képernyő
Ha két saját csapat találkozik, egységeiket
kicserálhetik. Erre való ez a képernyő.
Ez a képernyő is igen egyszerű felépítésű.
Két sorban ( egymás alatt ) látható a
két csapatunk.
A csapatra kattintva a fel le nyilakkal helyezhetjük át
őket.
3. Adatmodellek
3.1. Adatbázis kezelő kiválasztása
Az Eden Returns esetében jól elkülöníthetőek az adattípusok,valamint
azok kapcsolatai.Ez egyrészt az egyszerű és jól átgondolt
osztályhierarchiának köszönhető,másrészt annak hogy a körökre osztott
srtatégia miatt nem realtime adatkezelésről hanem a körök végén
bekövetkező eseményvezérelt adatrögzítésről van szó.Ezen perzisztencia
miatt is került szóba a fejlesztés elején egy adatbázis kezelő
használata.Ezt az elképzelést azonban elvetettük,mivel a kezelt
adatmennyiség ezt nem követeli meg.Ennek ellenére tesztelés és
átláthatóság céljából jónak láttuk egy működő prototípus elkészítését
FoxPro DBMS segítségével.Mivel az adatmódosítások a legtöbbször
vezérlőmenük gombjaira való klikkeléssel történik,ezért csupán a
játéktér és annak textúrázása,egérmutató eseményvezérelt váltogatása
jelenthetett volna kihívást.A gyártás,a csata,a csapat információ
valamint az összes többi menü megjelenítése viszont rendkívül könnyen
elvégezhető FoxPro használatával.Ráadásul az összes gomb,háttérkép és
ablakszín pillanatok alatt,vesződség nélkül alakíthtó a játék
designjának megfelelően.
Mivel jobbnak láttuk adatbázis kezelő használata helyett inkább a
szöveges fileban való mentést használni,ezért nem készíettük el az
adatbázis modelleket.
Ezen modellek helyett az adatrögzítés menetének dokumentációja
következik.
Három adatszerkezet definiált:
1. Térkép kiiterjesztés: *.map
2. Menés kiiterjesztés: *.sav
3. Beállítás kiiterjesztés: *.set
3.2 Térképek
A térképek tartalmazzák a játék menetéthez szükséges alapértékeket
dimenziókat,és a grafikai megjelenítéshez valamint textúrázáshoz
szükséges pájainformációkat.
Ezek egyszerű txt fájlok melyek saját szabvány szerint szerkesztettek
és egy saját algoritmus dolgozza fel őket főleg karakter
pozíció és speciális jelőlőkarakterek alapján.A három alap
adatszerkezet egyike.
3.2.1. A térképek felépítése
A térkép szöveges fájlok három fő részre tagolódnak :
1. A terep adatai
2. A játékosok adatai
3. térkép leírás
3.2.2. Példa egy térkép file-ra:
Elso_terkep.map -ot ha megnyitjuk egy text editorral az alábbiakat
látjuk:
N Elso_terkep;
D 60x80;
R y01 3,35;
R y15 8,56,80;
R y59 25,78;
W y05 9;
W y36 65;
Q y65 40;
G y04 6,15;
H y50 8,26,3;
// Az első térkép a hadjáratban.Fejlesszen bázist és foglaljon el egy
forrást!//
!
Magyarázata :
____________________________________________________________________________________________________________________________
N Elso_terkep;
<-- terkép neve
D 60x80;
<-- a térkép mérete
R y01 3,35;
<-- Szikla pozíció.'y01' jelöli a sort(y koord.)
,az utánna a vesszővel elválasztott számok az oszlopot(x koord.) az
adott sorban.
R y15 8,56,80;
R y59 25,78;
W y05 9;
<--Forrás pozíció.'y05' jelöli a
sort(y koord.) ,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
W y36 65;
Q y65 40;
<--Királynő féreg pozíció.'y65'
jelöli a sort(y koord.) ,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
G y04 6,15;
<--Őr féreg pozíció.'y04'
jelöli a sort(y koord.) ,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
H y50 8,26,3;
<--Vadász féreg pozíció.'y50' jelöli a sort(y koord.)
,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
// Az első térkép a hadjáratban.Fejlesszen bázist és foglaljon el egy
forrást!// <--A
pája rövid leírása,tartalmazza a térkép tulajdonságait,tippeket a
játékosnak.
!
<-- a file végét jelző karakter
____________________________________________________________________________________________________________________________
3.3. Mentés file-ok
A játékállás mentésével a játékos bármikor félbeszakíthatja a a termék
használatát anélkül hogy ezzel adatait,addig kivívott helyzetét
elveszítené.
3.3.1. A mentések felépítése
A mentés szöveges fájlok három fő részre tagolódnak :
1. A térkép adatai
2. A játékosok adatai
3. Soron következő játékos neve
3.3.2. Példa egy mentés file-ra:
Elso_mentes.sav -ot ha megnyitjuk egy text editorral az alábbiakat
látjuk:
K mennem kellett aludni;
T 2006.04.20.23:11;
N Elso_terkep;
1 N Atreides;
1 F B;
1 R 22;
1 W 85321;
1C y05 9 [Fovaros] (S80,T20,E5);
1P :y15 10 [Honvedek] (S90,T70,E0);
2 N Ordos;
2 F G;
2 R 21;
2 W 75631;
2 C y36 65 [Bazis] (S60,T40,E10);
2 P y14 12 [Ostrom] (S90,T90,E0);
Q y65 40;
G y04 6,15;
H y50 8,26,3;
S y43 40;
# 2;
!
Magyarázata:
____________________________________________________________________________________________________________________________
K mennem kellett aludni;
<-- a mentés azonosító neve.default : save1,save2...
T 2006.04.20.23:11;
<-- a mentés pillanatában a rendszeridő
N Elso_terkep;
<-- terkép neve
1 N Atreides;
<--első
játékos neve
1 F
B;
<--első játékos színe,ami itt kék
1 R 22;
<-- első
játékos lezárt köreinek száma,ami itt 22
1 W 85321;
<--első játékos vizének mennyisége,ami itt
85321
1 C y05 9 [Fovaros] (S80,T20,E5);
<--első játékos városának pozíciója,[neve]
(egységei)S:katonák száma T:tankok száma
E:mérnökök száma
1 P :y15 10 [Honvedek] (S90,T70,E0); <--első
játékos harcegységének pozíciója[neve] (egységei)S:katonák száma
T:tankok száma
E:mérnökök száma.
2 N Ordos;
<--második játékos neve
2 F
G;
<--második játékos színe,ami itt zöld
2 R 22;
<-- második
játékos lezárt köreinek száma,ami itt 21
2 W 75631;
<--második játékos vizének mennyisége,ami
itt 75631
2 C y36 65 [Bazis] (S60,T40,E10);
<--második játékos városának pozíciója,[neve]
(egységei)S:katonák száma T:tankok száma
E:mérnökök száma
2 P y14 12 [Ostrom] (S90,T90,E0); <--második
játékos
harcegységének pozíciója[neve] (egységei)S:katonák száma T:tankok száma
E:mérnökök száma.
Q y65 40;
<--Királynő féreg pozíció.'y65'
jelöli a sort(y koord.) ,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
G y04 6,15;
<--Őr féreg pozíció.'y04'
jelöli a sort(y koord.) ,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
H y50 8,26,3;
<--Vadász féreg pozíció.'y50' jelöli a sort(y koord.)
,az utánna a
vesszővel elválasztott számok az oszlopot(x koord.) az adott sorban.
S y43 40;
<--Homokvihar pozíció.'y43'
jelöli a sort(y koord.) ,az utánna következő szám(40) az oszlopot(x
koord.) az adott sorban.
# 2;
<--a soron következő játékos száma,amely itt a 2.játékos
!
<-- a file végét jelző karakte
_________________________________________________________________________________________________________________________
3.4. A betöltés
A betöltés garantálja a játékosnak hogy ugyanonnan folytathassa
kalandját,ahol korábban mentés után abbahagyta.Ezen két funkció
segítségével biztosítható a
felhasználó teljes szabadsága a termék használatára vonatkozóan.Továbbá
hibás döntéseinek megfontolása után visszatérhet egy korábbi állapothoz
és más stratégiával sikert arathat,anélkül hogy az egész
páját az
elejétől újra kellene kezdenie.
A térkép kirajzolása
A mentés file .sav kiterjesztésü, a file-kezelő ellenőrzések végzése
után elkezdi beolvasni tartalmát.
A térkép layeres technikát alkalmazva épül fel.Tehát a megjelenítés
szintekre osztott,egy magasabb szinten lévő elem 'kitakarja' az
alacsonyabb szinteken vele azonos pozíción levő elemeket.Ennek
megfelelően a térkép adatai különböző layerekbe kerülnek.
A kirajzolás első lépésében a pája összes mezője a homok textúrát
kapja.Ez az első layer.Mivel ez minden pájánál azonos és automatikusan
végbe megy ,a térkép file-ban ezt a texturát nem kell
jelölni,ezzel rengeteg hely és idő takarítható meg.
A második fázisban a következő layer szinten a sziklák és a források
kirajzolása következik.Mivel ezek az elemek statikusak,de pájánként más
a helyzetük ezért a map file-ból töltődik koordinátájuk.A kirajzolásnál
egyszerre mindig egy sor megfelelő oszlopaira illesztjük a megfelelő
textúrát.aztán jön a következő sor ahol van ilyen objektum,stb.
A harmadik fázisban a nem statikus elemek következnek.Ezek a páján
található 3 különböző féregtípus egyedei.A kirajzolás menete a második
fázissal azonos,kivéve hogy itt már egyel magasabb layer szinten és más
textúrákat alkalmazunk.
Új játék esetén a gép véletlenszerüen kiválaszt a játékosnak egy
(multiplayer esetén minden egyes játékosnak egyet egyet)forrást és egy
fölötte lévő layerre(a negyedikre) kirajzolja a játékos színének
megfelelő város textúráját,ezzel eltakarva a forrás textúráját.
Mentett pozíció betöltésének esetén további szintek is vannak:
Betöltésnél a mentés file-ból kiolvasott térképnév alapján a térkép
kirajzolás első három fázis végbemegy.Ilyenkor nincs véletlenszerű
város lerakás,hiszen ez a mentés file-ból töltődnek be a
város,harcegység,féreg,vihar objktumok pozíciói és adatai.
A negyedik layer tehát a városok,férgek és harcegységek textúráit
rajzolja ki.
A következő layer a homokvihar kirajzolásáért felel.
3.5. Beállítások
A játékos itt végezhet a játékmenettel ,grafikával,hangokkal,zenével,és
irányítással kapcsolatos beállításokat.Ezen adatszerkezet teszi
lehetővé ezen beállítások megörzését a következő módosításig.
3.5.1. A beállítás felépítése
A beállítás szöveges fájlok négy fő részre tagolódnak :
1. Audio beállítások
2. Video beállítások
3. Játék beállítások
4. Játékos beállítások
5. Irányítás beállítások
3.5.2. Példa egy beállítás file-ra:
Elso_beallitas.set -et ha megnyitjuk egy text editorral az alábbiakat
látjuk:
A 10 10;
V 4 2;
U Ordos G Hostname;
M 10;
!
Magyarázat:
____________________________________________________________________________________________________________________________
A 10,10;
<--1-10 Zene
hangerő,1-10 effekt hangerő
V
4 2;
<--1-4
felbontás(480x320,2=640x480,3=800x600,4=1024x760) 1-2
textúra
színmélység(1=24,2=32)
U Ordos G Hostname;
<-- Játékos neve színe Hostjának neve
M 10;
<-- 0-9 az
egér sebessége
!
<--file vég
_________________________________________________________________________________________
3.6. Speciális karakterek
Ezek alapján ismeri fel a file-kezelő hogy milyen típusú objektumra
vonatkozik a következő adat.
';' : sorvége karakter
'!' : file vége karakter
N : Mapname
a térkép neve
max 8 Char
D : Mapdimension a térkép
dimenziója,mérete 0-99 x 0-99
K : Save Key a
mentés azonosító neve. default: save1,save2... max 20Char
T : Time
a mentés pillanatában a
rendszeridő
R : Rock position szikla pozíció
y0-99 0-99
W : Well position forrás pozíció
y0-99 0-99
Q : Queen position Királynő féreg pozíció
y0-99 0-99
G : Guard position Őr férag
pozíció
y0-99 0-99
H : Hunter position Vadász férag pozíció
y0-99 0-99
S : Sand storm
Homokvihar pozíció
y0-99 0-99
//: Térkép leírás jelölése
1 :
2 :
3 :
4 : Player number prefix
Játékos azonosítószám előtag
5 :
6 :
7 :
8 :
Játékos azonosító előtag után használatos specíális karakterek és
dimenziójuk :
N :Player Name
Játékos neve
max 8 Char
F :Flag
Játékos
színe
R,G,B,C,Y,W,B,O (red,green,blue,cyan,yellow,white,black,orange)
R :Round Number A lezárt körök száma
0-999
W :Water counter Játékos vizének
mennyisége 0-99999
C :City pos+data Város
pozíciója+adatai y0-99
0-99
[Varos_nev] max 8 Char (S00,T00,E00)S:katonák száma T:tankok száma
E:mérnökök száma
P :Platoon pos+data Harcegység
pozíciója+adatai y0-99 0-99
[Harcegyseg_nev] max 8 Char (S00,T00,E00)S:katonák száma T:tankok száma
E:mérnökök száma.
A :Audio settings 1-10 Zene
hangerő,1-10 effekt hangerő
V :Video settings 1-4
felbontás(480x320,2=640x480,3=800x600,4=1024x760) 1-2
textúra
színmélység(1=24,2=32)
U :User settings
Játékos neve színe Hostjának neve
M :Mouse scrollspeed az egér sebessége
0-9
# A soron következő játékos azonosító száma
3.7. Adatkezelés
Az adatkezelést a Game Core alrendszer végzi a file-handler osztály
segítségével.Felhasználja a háromféle adatszerkezetet és mindig a
megfelelő adatokat kezeli a memóriában.A három alap adatszerkezet
adattípusai változókként funkcionálnak.Ezen változók
frissítése,módosítása eseményvezérelt.Egyik ilyen esemény ha a
felhasználó befejezte lépseit és a 'kör vége' gombra kattint.Másik
ilyen esemény ,ha multiplayer játszma esetén friss lépésadat érkezik a
hálózaton keresztül valamelyik játékostársról.
Frissítési esemény nél a megfeleló memóriaváltozók értéke
megváltozik.
Mentés esetén ezek a megfelelő változók tárolódnak el egy textfile-ban.
A beállítások a menüből való kilépéskor azonnal file-ba
mentődnek,aktivizálódnak.
3.8. Az file-kezelővel kapcsolatot tartó osztályok
A címben említett osztályok terve. Ha szükséges, osztálydiagram is
készíthető.
