Csoport neve: Segmentation_Fault

Feladat sorszáma: 6

Feladat címe: Stratégiai játék






Rendszertervezés




Gyakorlatvezető::

Repási Tibor

Segmentation Fault Logo




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

2.1. A menü
2.2. A főképernyő
2.3. Játékon belüli külön képernyők
2.3.1. Város képernyő
2.3.2. A csata képernyője
2.3.3. A csapatcsere képernyő

3. Adatmodellek

3.1. Adatbázis kezelő kiválasztása
3.2. Térképek

3.2.1. A térképek felépítése
3.2.2. Példa egy térkép file-ra:

3.3. Mentés file-ok

3.3.1. A mentések felépítése

3.4. A betöltés
3.5. Beállítások

3.5.1. A beállítás felépítése
3.5.2. Példa egy beállítás file-ra:

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:
Ezek a lehetőségek:
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:

Menu

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ő:

Game Screen

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ő

Varos- 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ő.


Global_Class_Diagram



Vissza a nyitólapra.