Csoport neve: TheBoyz

Feladat sorszáma: H4

Feladat címe: Analízis modell






Analízis modell Dokumentum




Gyakorlatvezető::

Mileff Péter


Csoport tagok:


Longaver Szabolcs

ECY3RI

jobbranyitbaltazar@gmai.com

Zagyva Zsombor Gábor

FXVAUU

zsombor.zagyva@gmail.com

Laczik Péter

VG5EHA

peterlaczik04@gmail.com

Valkó Attila László

U7W4RZ

valkoatti@hotmail.com

Szekeres Bendegúz

Z3VP2R

imp.bende@gmail.com

BEADÁSI DÁTUM


Történet


Dátum

Verzió

Leírás

Szerző

2024-11-03 1.0 Struktúra megalkotása Valkó Attila László
2024-11-09 1.1 Osztályok felsorolása a 2.2 pontban. Valkó Attila László
2024-11-15 1.2 Osztálydiagram, osztályok módosítása, csomagdiagram és társai Zagyva Zsombor Gábor
2024-11-15 1.3 Osztályok módosítása Valkó Attila László
2024-11-17 1.4 Osztálydiagram módosítás, osztályok kiegészítése Zagyva Zsombor Gábor
2024-11-20 1.5 A Core Gameplay subsystem modellje Zagyva Zsombor Gábor
2024-11-20 1.55 Sound és Dialouge subsystem modellje

Szekeres Bendegúz

2024-11-20 1.6 World/Map osztály részletezése Laczik Péter

Tartalomjegyzék

 

1. Bevezetés

2. Kezdeti osztálydiagram

2.1 Osztálydiagram

2.2 Osztályok felsorolása

2.3. Alrendszerek

3. Core Gameplay alrendszer modellje

3.1 Statikus modell

3.1.1 Kapcsolatok pontosítása

3.1.2 Attribútumok azonosítása

3.1.3 Bázisosztályok keresése

3.2. Dinamikus modell

3.3. Funkcionális modell

3.4. Operációk azonosítása

3.5 Az analízis modell osztálydiagramja.

3.6. Az analízis modell osztályainak listája.

4

5

6

7

X. Mellékletek

 

 

1. Bevezetés

A CRPG játék elemzéséhez szükséges modell célja, hogy rendszerezett keretet biztosítson ezen játék strukturált és mélyreható vizsgálatához. A CRPG-k, vagyis a  számítógépes szerepjátékok a játékok egy olyan műfaját képviselik, amelyet összetett karakterfejlesztés, történetalapú játék és gyakran nyílt világ vagy döntésalapú cselekményvezetés jellemez. A modell kidolgozásával a cél az, hogy egy olyan analitikai eszközt nyújtsunk, amely lehetővé teszi a játék részleteinek alapos értékelését, a műfaji sajátosságok azonosítását és a játékélmény egyedi elemeinek feltárását.

 

2. Kezdeti osztálydiagram

2.1 Osztálydiagram

Osztálydiagram 

2.2 Osztályok felsorolása

Minden egyes, a diagramon szereplő osztály egy-két mondatos leírása, amelyből kiderül, hogy mi a szerepe, a felelőssége a rendszerben. Minden egyes osztály neve külön sorban, vastagítva, majd új sorba alá a leírás. Az egyes osztályok között egy üres sor legyen.

-UIManager
A játék összes felhasználói felületének központi vezérlője, amely kezeli az aktív UI-elemeket, azok megjelenítését és frissítését. Felelős a különböző rendszerekkel, például Inventory és GameState, való adatszinkronizációért.

-UIComponent
Absztrakt osztály az összes UI-elem közös tulajdonságaival és metódusaival, például pozíció és láthatóság. Minden UI-eleme ebből származik.

-Inventory UI
Kezeli a játékos tárgyainak és felszereléseinek megjelenítését, lehetővé téve a játékos számára, hogy áttekintse, rendszerezze és használja az összegyűjtött tárgyakat. Ez az osztály biztosítja az interakciót az eszközökkel, fegyverekkel, páncélokkal és egyéb tárgyakkal a játék során.

-LevelUpUI
A szintlépéskor megjelenő UI, amely lehetővé teszi új képességek, varázslatok vagy tulajdonságfejlesztések kiválasztását. Szinkronizál a játékos karakterének szint- és képességrendszerével.

-NotificationUI
Ideiglenes értesítéseket jelenít meg, például küldetésfrissítéseket vagy rendszerüzeneteket. Az üzenetek automatikusan eltűnnek egy adott idő után.

-TooltipUI
Hover-információkat jelenít meg, például tárgyak vagy képességek részleteit. Az interakciók során automatikusan frissül.

-HUD
Valós idejű információkat jelenít meg, például életerőt, akciópontokat és állapotokat.

-MenuUI
A főmenü, szünetmenü és beállítások UI-kezeléséért felelős. Lehetőséget biztosít a mentéshez, betöltéshez vagy a játékból való kilépéshez.

-CharacterMenuUI
A karakter statisztikáit, felszereléseit és tulajdonságait megjelenítő felület. Lehetővé teszi a felszerelés kezelését és a karakter tulajdonságainak megtekintését.

-DialogueUI
A párbeszédeket és válaszlehetőségeket kezelő felület.

-ShopUI
A bolt felületét kezeli, megjelenítve az eladásra kínált tárgyakat és a játékos inventory-ját. Lehetővé teszi tárgyak vásárlását és eladását.

-MapUI
A játék világtérképét jeleníti meg a játékos pozíciójával és jelölőkkel.

-SoundManager
A játék összes hanghatásának, háttérzenéjének és párbeszédhangjának központi vezérlője. Kezeli a hangerőt és a lejátszást különböző hangtípusokhoz.

-AudioTrack
Absztrakt osztály az összes hangformátumhoz, amely tartalmazza az alapvető attribútumokat (pl. fájlelérési útvonal, hossz). Lejátszási és leállítási funkciókat biztosít.

-DialogueAudio
A párbeszédekhez tartozó hangok lejátszását kezeli. Szinkronizálható a feliratokkal a párbeszéd során.

-MusicTrack
Háttérzenék kezelésére szolgáló osztály, amely támogatja a lejátszás zökkenőmentes befejezését (fade out). Prioritásokat is kezelhet a zeneszámok között.

-SoundEffect
Egyszeri hanghatásokhoz, például gombkattintásokhoz vagy fegyverhangokhoz használható. Minden hanghatáshoz egyedi hangerő-módosítót biztosít.

-Dialogue Manager
Irányítja a párbeszédek folyamatát, kezelve a beszélgetések logikáját, válaszlehetőségeket és a történet előrehaladását. Feladata, hogy dinamikusan reagáljon a játékos választásaira és irányítsa a narratív eseményeket.

-Dialogue Node
A  párbeszédek egyes elemeit reprezentálja, például a beszélgetés egy adott pontját, amely tartalmazhat szöveget, válaszlehetőségeket és kapcsolódó eseményeket. Ez az osztály segíti a párbeszédek struktúráját, lehetővé téve a különböző válaszok és következmények láncolatának kezelését.

-Dialogue Choice
A párbeszédek során a játékos által választható lehetőségeket képviseli, amelyek meghatározzák a beszélgetés következő irányát. Minden választás egy új Dialogue Node-hoz vezethet, és hatással lehet a történet vagy a karakterek interakciójára.

-Game
Az alapvető játékmenet logikájáért felel, irányítva a játék állapotát, szabályait és eseményeit. Ez az osztály kezeli a játék indítását, szüneteltetését, mentéseit és betöltéseit, valamint összefogja a többi rendszer működését.

-Game State
A játék különböző állapotainak kezeléséért felel, mint például a játék futása, szüneteltetett, győzelem vagy vereség állapotok. Segít nyomon követni a játék aktuális helyzetét és biztosítja a megfelelő állapotok közötti váltást.

-Combat Manager
Irányítja a harci rendszert, kezelve a harcok logikáját, a karakterek és ellenfelek akcióit, valamint a támadások, védekezések és különleges képességek végrehajtását. Feladata, hogy nyomon kövesse a harc állapotát, és biztosítsa a körökre osztott vagy valós idejű harci mechanikák megfelelő működését.

-Quest Manager
Kezeli a játék küldetéseit, nyomon követve azok állapotát, előrehaladását és a játékos által végrehajtott feladatokat. Feladata, hogy kezelje a küldetések indítását, frissítését és befejezését, valamint a jutalmak kiosztását.

-Quest
Egy konkrét küldetést reprezentál, amely tartalmazza a célokat, feladatokat, kapcsolódó eseményeket és a küldetés teljesítésének feltételeit. Feladata, hogy nyomon kövesse a küldetés előrehaladását és biztosítsa a megfelelő jutalmakat és következményeket  a játékos számára.

-Objective
Egy adott küldetésen belüli specifikus célt vagy feladatot reprezentál, amelyet a játékosnak el kell érnie a küldetés teljesítéséhez. Tartalmazza a cél leírását, állapotát (például "teljesítve" vagy "folyamatban") és a szükséges feltételeket a befejezéséhez.

-Character
A játékos és nem játékos karakterek közös alaposztálya, amely kezeli a szintet, attribútumokat, készségeket, inventory-t és hatásokat. A karakter képes támadni, képességeket használni és interakcióba lépni más objektumokkal. Az NPC-k és a játékos karakterek ebből származnak.

-Player Character
A játékos irányította karaktert reprezentálja, tartalmazza annak statisztikáit, képességeit, felszereléseit és választásait. Feladata, hogy lehetővé tegye a játékos számára a karakter testreszabását, fejlődését és a játék világában való interakciót.

-NPC
Egy olyan karaktert reprezentál, amelyet nem a játékos irányít, hanem a játék világának részeként funkcionál. Feladata, hogy különböző szerepeket töltsön be, mint például segítő, ellenség vagy informátor, és hozzájáruljon a történet előrehaladásához vagy a játékos döntéseihez.

-Class
A karakter kasztját (pl. Fighter, Wizard) és annak képességeit, hit dice-át és proficiencies adatait tartalmazza. Meghatározza, milyen varázslatokat vagy támadásokat használhat a karakter. Fontos szerepet játszik a karakter fejlődésében.

-Feat
Olyan egyedi bónuszokat és képességeket biztosít, amelyeket a karakter szintlépéskor szerez. Javítja a harci, képesség- vagy készségalapú teljesítményt. Kasztokhoz vagy szintspecifikus feltételekhez kötött.

-Spell
A varázslatokat és azok hatásait definiálja, támadásokhoz és speciális képességekhez használható. Tartalmazza a varázslat szintjét, hatótávját és a hozzá kapcsolódó hatást. Csak spell slotokkal rendelkező karakterek használhatják.

-Skill
A készségeket (pl. Stealth, Arcana, History) kezeli, amelyek a karakter attribútumaival és jártassági bónuszával működnek. Használható készségpróbák során, amelyek sikere a dobás és a bónuszok eredményétől függ. Minden készség egy attribútumhoz kapcsolódik.

-Ability
A karakter fő attribútumait (pl. STR, DEX, INT) tartalmazza, amelyeket támadások, próbák és egyéb akciók során használnak. Az értékek módosítói meghatározzák a karakter bónuszait. Alapja a készségek és támadások számításának.

-Background
A karakter történeti háttere, amely a szerepjáték szempontjából releváns bónuszokat és készségeket biztosít. Például Noble vagy Outlander bónuszokat adhat bizonyos interakciókhoz.

-Effect
Hatásokat definiál, amelyek időleges vagy állandó módosítókat biztosítanak a karaktereknek vagy objektumoknak. Lehet pozitív (pl. bónusz sebzés) vagy negatív (pl. gyengítés) hatás. Automatikusan alkalmazható és megszüntethető. Feladata, hogy kezelje az egyes effektek időtartamát, intenzitását és az általuk kiváltott játékmeneti változásokat.

-Race
A karakter faji tulajdonságait tárolja (pl. Elf, Dwarf), amelyek extra bónuszokat vagy képességeket adnak. Befolyásolja a mozgást, attribútumokat és interakciókat. A fajok egyedi bónuszokat és tulajdonságokat biztosítanak.

-Map
A  játék világának térképét reprezentálja, amely tartalmazza a különböző helyszíneket, objektumokat, NPC-ket és interakciós pontokat. Feladata, hogy kezelje a térképen való navigálást, a helyszínek közötti átjárást és a játékos által felfedezett területek állapotát.

-Game Object
Bármely interaktív vagy statikus elemet képvisel a játék világában, mint például tárgyak, NPC-k, akadályok vagy eszközök. Feladata, hogy kezelje az objektum állapotát, interakcióit a játékrendszerrel, és biztosítsa a megfelelő események vagy változások aktiválását.

-Environmental Object
A játék világának statikus elemeit reprezentálja, mint például tereptárgyak, épületek, növényzet vagy egyéb környezeti objektumok, amelyek nem közvetlenül interaktívak, de hatással vannak a játékmenetre. Feladata, hogy kezelje az objektumok vizuális megjelenítését, elhelyezkedését és a környezeti hatások kezelését.

-Transportation
A játékban használt mozgási eszközöket reprezentálja, mint például járművek, hajók, lovak vagy más közlekedési módok, amelyek lehetővé teszik a gyors utazást vagy a térképen való navigálást. Feladata, hogy kezelje a közlekedési eszközök sebességét, irányítását és esetleges speciális tulajdonságait.

-Ship
Egy hajót vagy más vízi közlekedési eszközt reprezentál a játékban, amely lehetővé teszi a vízi területeken való utazást. Feladata, hogy kezelje a hajó mozgását, állapotát, felszerelését és navigációs mechanikáit.

-Camera
A  játék nézetét és látószögét kezeli, lehetővé téve a játékos számára, hogy a világot különböző szögekből és távolságokból lássa. Feladata, hogy irányítsa a kamerát, kezelje a mozgást, zoomot, forgatást és egyéb vizuális beállításokat a játék élményének optimalizálása érdekében.

-Game Time
A  játék belső időmérő rendszerét kezeli, amely nyomon követi a játékon belüli napokat, órákat és eseményeket. Feladata, hogy szinkronizálja az idő múlását a játék világában, befolyásolva a nap-éjszaka ciklust, küldetéseket, eseményeket és a világ dinamikáját.

-SaveLoad Manager
Felelős a játék állásának mentéséért és betöltéséért, biztosítva, hogy a játékos a kívánt ponton folytathassa a játékot. Feladata, hogy kezelje a mentett fájlokat, az állapotok tárolását és a betöltéskor történő adatok visszaállítását a játék folyamatában.

-Inventory
A karakterek vagy ládák tárgyainak tárolására szolgáló osztály. Kezeli a tárgyak hozzáadását, eltávolítását, valamint a tárgylisták kezelését. Az Inventory a tárgyak típusától (pl. fegyver, páncél) függetlenül működik.

-Item
Minden tárgy alaposztálya, amely tartalmazza az alapvető tulajdonságokat, például a nevet, értéket és súlyt. Ebből származik a Weapon és Armor osztály, amelyek további egyedi tulajdonságokat adnak hozzá.

-Weapon
A fegyvereket definiálja, amelyekkel a karakterek támadásokat hajthatnak végre. Tartalmazza az alap sebzést, támadási módosítót és esetleges speciális képességeket (pl. mérgezett pengék). A támadások alapja.

-Armor
A páncélzatokat reprezentálja, amelyek védelmi értékeket és egyedi hatásokat biztosítanak. Befolyásolja a karakterek védettségi osztályát (AC), és egyes esetekben további bónuszokat adhat.

2.3. Alrendszerek

package diagram

2.3.1. Presentaion subsystem

A prezentációs alrendszer felelős az összes vizuális elem kezeléséért és megjelenítéséért, beleértve a HUD-ot, az interakciós felületeket, a párbeszédablakokat, és az inventory rendszert.
Ez az alrendszer biztosítja, hogy a játékos érthetően és hatékonyan tudja kezelni a játék állapotát és az elérhető opciókat.
Osztályok:

2.3.2. Dialogue subsystem

A párbeszéd alrendszer kezeli a játékos és NPC-k közötti interakciókat. Párbeszédek során a játékos döntései eseményeket vagy küldetéseket indíthatnak el.
Ez az alrendszer biztosítja, hogy a történet gördülékenyen haladjon előre, dinamikus és kontextusfüggő interakciókkal.
Osztályok:

2.3.3. Core Gameplay subsystem

A fő játékmenet alrendszer tartalmazza a játék magját: a mechanikákat és a játék állapotának kezelését. Ez irányítja a harcot, a küldetéseket, a karakterek tulajdonságait és fejlődését.
Az alrendszer biztosítja a játékmenet zökkenőmentes frissítését és a játék logikájának fenntartását.
Osztályok:

2.3.4. Persistance subsystem

Az adatkezelés alrendszer biztosítja a játék állapotának mentését és visszaállítását. Lehetővé teszi a játékos számára, hogy folytassa a játékot ott, ahol abbahagyta, az inventory és a karakter állapotának megőrzésével.
Ez az alrendszer felelős a perzisztencia kezeléséért és a mentési mechanizmusért.
Osztályok:

2.3.5 World/Map subsystem

Ez az alrendszer nyilvántartja a játék világában található objektumokat, azok helyét és állapotát.
Felelős a térképek kezeléséért, valamint az interakciók lebonyolításáért a világ különböző elemeivel, beleértve a közlekedési lehetőségeket és a környezeti objektumokat.
Osztályok:

2.3.6. Sound subsystem

Háttérzenék lejátszása, váltása rövid effektek lejátszása események során. Hangok betöltése, általános vagy kategória-specifikus hangerő beállítása.
Osztályok:

3. A Core Gameplay alrendszer modellje

3.1 Statikus modell

3.1.1 Kapcsolatok pontosítása

Vizsgáljuk meg a fő kapcsolatokat a Core Gameplay komponensein belül

Game-->GameState
Kapcsolat típusa: Kompozíció
Szerepkör: A Game osztály tartalmzza a játék teljes állapotát reprezentáló GameState objektumot
Számosság: 1:1 Egy Game objektumnak pontosan egy GameState példánya van

Game-->SaveLoadManager
Kapcsolat típusa: Kompozíció
Szerepkör: A mentési és betöltési funkciókat kizárólag a Game osztály kezeli, és annak részeként működik.
Számosság: 1:1 Egy Game objekumnak pontosan egy GameState példánya van

GameState-->CombatManager
Kapcsolat típusa: Aggregáció. A GameState tartalmazza a CombatManager példányát, amely a harci mechanikákat kezeli, de a CombatManager függetlenül is működhetne egy másik GameState-ben.
Szerepkör: GameState biztosítja a CombatManager számára a résztvevő karakterek listáját és a harc környezetét.
Számosság: 1:1 Egy Game objektumnak pontosan egy CombatManager példánya van

GameState -> PlayerCharacter
Kapcsolat típusa: Aggregáció.
Szerepkör: A GameState tartalmazza a játékos karakter adatait, beleértve a pozíciót, képességeket és aktuális állapotot.
Számosság 1:1 Egy GameState-hez egy PlayerCharacter tartozik, kivéve ha coop-ban játszunk akkor 1:N

GameState -> NPC
Kapcsolat típusa: Kompozíció (a GameState kezeli az NPC objektumokat, amelyek az állapot megszűnésével eltűnnek).
Szerepkör: A GameState tárolja az összes aktuálisan aktív NPC-t a játékban.
Számosság: 1:N Egy GameState-hez több NPC is tartozhat, egy NPC csak egy GameState-hez tartozik

CombatManager-->Character
Kapcsolat típusa: Aggregáció. A CombatManager felelős a harcban részt vevő karakterek kezeléséért
Szerepkör: A CombatManager menedzseli a karakterek körsorrendjét és aktuális harci állapotát.
Számosság: 1:N Egy CombatManager példányhoz több Character is tartozhat, de egy Character csak egy ComabatManagerhez

NPC-->Character
Kapcsolat típusa: Öröklés. Az NPC osztály a Character bázisosztályból származik, mivel ugyanazokat a statisztikákat és képességeket használja.
Szerepkör: Az NPC egy adott szerepet (pl. ellenséges, semleges, barátságos) kap a játékban, de alapvetően ugyanazokra az attribútumokra támaszkodik, mint a játékos karakterek.
Számosság:

PlayerCharacter-->Character
Kapcsolat típusa: Örökés, A PlayerCharacter osztály a Character bázisosztályból származik, mivel ugyanazokat a statisztikákat és képességeket használja.
Szerepkör: A PlayerCharacter az irányított karaktert testesíti meg, amelyet a játékos fejleszt.
Számosság:

Character-->Ability
Kapcsolat típusa: Aggregáció. A karakter képességeit (Ability) külön objektumként kezeljük
Szerepkör: Az Ability osztály tartalmazza az egyes képességek pontszámait, módosítóit és típusait.
Számosság: N:M Egy Character-hez Több Ability tartozik, Egy Ability minden karakterhez tartozik

Character-->Race
Kapcsolat típusa: Aggregáció. A karakter faja (Race) meghatározza a sebességét, méretét, fajbónuszait, és egyéb alapvető tulajdonságait.
Szerepkör:  A Race osztály definiálja a faj-specifikus képességeket és bónuszokat.
Számosság: N:1 Minden karakterhez pontosan egy faj tartozik, Egy faj tartozik több karakterhez is

Character-->Class
Kapcsolat típusa: Aggregáció. A karakter osztálya (Class) meghatározza a harci és nem harci képességeit, valamint a szintlépések során nyerhető jellemzőket.
Szerepkör: A Class osztály tartalmazza az osztály-specifikus képességeket, például a varázslatok elérhetőségét vagy a harci stílusokat.
Számosság: N:M Egy karakterhez több Class is tartozhat. Egy Class több karakterhez is tartozik

Character-->Background
Kapcsolat típusa: Aggregáció
Szerepkör: A Background további képzettségeket és narratív elemeket ad a karakterhez.
Számosság: N:1 Egy karakterhez csak egy Backgound tartozik, de egy Background több karakterhez is tartozik

Character-->Feat
Kapcsolat típusa: Aggregáció.
Szerepkör: A Feat különleges képességeket vagy bónuszokat biztosít a karakter számára.
Számosság: N:M Egy karakter több Feat-el is rendelkezik, és egy Feat több Karakterhez is tartozik

Character-->Skill
Kapcsolat típusa: Aggregáció
Szerepkör: A képzettségek bónuszokat adnak különféle dobásokhoz és tevékenységekhez.
Számosság: N:M

Character-->Spell
Kapcsolat típusa: Aggregáció
Szerepkör: A Spell osztály tartalmazza az összes varázslatot amelyet a karakterek használhatnak
Számosság: N:M

Camera-->GameState
Kapcsolat típusa: Aggregáció. A GameState tartalmazza a kamerát, amely meghatározza, hogy mit lát a játékos a játékvilágból.
Szerepkör: A Camera pozíciója és fókusza mindig az aktuális játékállapothoz igazodik.
Számosság: 1:1

Camera-->Map
Kapcsolat típusa: Aggregáció. A kamera a térképen navigál, és meghatározza, mely területeket látja a játékos.
Szerepkör:A kamera fókuszáltan követi a térképen a fontos területeket.
Számosság: 1:1

GameState-->Map
Kapcsolat típusa: Aggregáció. A GameState kezeli az aktuális térképet, ahol a játék eseményei zajlanak.
Szerepkör: A térkép tartalmazza az összes releváns objektumot és területet
Számosság: 1:N Egy GameState-hez több térkép is tartózhat

Quest-->Objective
Kapcsolat típusa: Kompozíció. Egy Quest több Objective-ből (feladatból) áll.
Szerepkör: Az Objective meghatározza a küldetés teljesítéséhez szükséges részfeladatokat.
Számosság: 1:N Egy küldetéshez több Objective-is tartozhat, egy objective csak egy Quest-hez tartozik

QuestManager-->Quest
Kapcsolat típusa: Kompozíció. A QuestManager kezeli az összes aktív, befejezett vagy elérhető küldetést.
Szerepkör: A küldetések státuszának és frissítésének menedzselése a QuestManager feladata.
Számosság: 1:N

3.1.2 Attribútumok azonosítása

Game:
GameState:
CombatManager:
QuestManager:
Quest:
Objective:
Character:
PlayerCharacter:
NPC:
Skill:
Ability:
Spell:
Feat:
Class:
Race:
Background:
Effect:

3.1.3 Bázisosztályok keresése

A Character osztály bázisosztályként viselkedik minden olyan objektum számára, amely rendelkezik statisztikákkal, névvel, harci tevékenységet tud végrehajtani
Ide tartozik:
Közös attribútumok melyekkel az osztályok rendelkeznek:

3.2. Dinamikus modell

Szekvencia Diagram

Használati eset: Harci kör lebonyolítása
Leírás:A harci rendszer részeként a játékos és az NPC-k egymás után hajtanak végre akciókat. A rendszer ellenőrzi a találati esélyeket, sebzést és egyéb effektusokat, majd az aktuális kör lezárultával a következő kör indul.

1. Szereplők:

2. Állapotdiagram: CombatManagerAz alábbi állapotokat és átmeneteket definiáljuk a harci kör lebonyolításához:

  1. Idle: A harci szakasz kezdete előtt.
  2. Determine Turn Order: A sorrend kiszámítása a karakterek kezdeményezési bónuszai alapján.
  3. Character Action: Az aktuális karakter akciójának végrehajtása.
  4. Check Combat End: Ellenőrzi, hogy a harc véget ért-e (pl. minden ellenség meghalt).
  5. EndCombat: A harci kör lezárása, jutalmak kiosztása, effektusok törlése.

Használati eset: Küldetés teljesítése

Leírás:Egy játékos vagy NPC teljesít egy küldetést az adott célok végrehajtásával.

1. Szereplők:

2. Állapotdiagram: Quest Az alábbi állapotokat definiáljuk egy küldetés végrehajtásához:

  1. Not Started: A küldetés még nem aktív.
  2. Active: A küldetés aktív állapotban van, és a játékos dolgozik a célok teljesítésén.
  3. Completed: A küldetés minden célját teljesítették.

3.3. Funkcionális modell

Az alábbiakban részletezem a harci kör feldolgozásának főbb lépéseit:

  1. Harci sorrend meghatározása:

  2. Karakter akció végrehajtása:

  3. Sebzés és effektusok alkalmazása:

  4. Harci kör lezárása:

Funkcionális modell a küldetés feldolgozásához

  1. Küldetés hozzáadása:

  2. Célok követése:

  3. Küldetés befejezése:

3.4. Operációk azonosítása

Game:
GameState:
CombatManager:
QuestManager:
Quest:
Objective:
Character:
PlayerCharacter:
NPC:
Skill:
Ability:
Spell:
Feat:
Class:
Race:
Background:
Effect:

3.5 Az analízis modell osztálydiagramja

3.6. Az analízis modell osztályainak listája

3.6.1 Game

Név

Típus

Leírás

 gameState

GameState

 A játék aktuális állapota.    

 saveLoadManager

 SaveLoadManager

 Felelős a játék mentéséért és betöltéséért.

 uiManager

 UIManager

 Az UI (felhasználói felület) kezeléséért felelős

soundManager SoundManager A játék hanghatásait kezeli.

Név

Argumentumok

Működése, feladata

 StartGame():

 

 Elindítja a játékot.

 Pause():

 

  Szünetelteti a játékot.

 Quit()

 

 Kilép a játékból.

 

3.6.2. GameState

Név

Típus

Leírás

 Id

 Guid

 Az állapot egyedi azonosítója.

 player

 PlayerCharacter

 A játékos karaktere.

 currentMap

 Map

 A jelenlegi térkép.

combatManager CombatManager A harcrendszerért felelős objektum.
currentTransport Transportation Az aktuális közlekedési eszköz.
Position Vector3 A játékos pozíciója a világban.
camera Camera A kamera, amely a játékos mozgását követi.
npcList List<NPC> Az adott térképen található NPC-k listája.

Név

Argumentumok

Működése, feladata

 updateState

 deltaTime

  Frissíti az aktuális játékállapotot az eltelt idő alapján.

 render

 spriteBatch

 Kirajzolja az aktuális állapotot.

 changeMap

 newMap

Betölt egy új térképet.

3.6.3. CombatManager

Név

Típus

Leírás

 participants

List<Character>

 A harcban részt vevő karakterek listája.

 IsTurnBased

 bool

 Meghatározza, hogy körökre osztott-e a harc, vagy csak a környezetet támadjuk real-time

 turnOrder

 Queue<Character>

A karakterek harci sorrendje.
currentTurn Character A jelenleg soron lévő karakter.

Név

Argumentumok

Működése, feladata

 StartCombat

 List<Character> participants

  Elindítja a harcot a résztvevők között.

 DetermineTurnOrder()

 

 Kiszámítja a karakterek sorrendjét.

 Attack

 GameObject,GameObject , Weapon, Spell

 Kezeli a támadást (fegyverrel vagy varázslattal).

CalculateHitRoll GameObject, GameObject, isSpell Eldönti, hogy a támadás talál-e.
CalculateDamage GameObject, weapon, spell Meghatározza a támadás által okozott sebzést.
CalculateSpellSaveDC GameObject Kiszámítja a varázslatok mentődobásának DC-jét.
ApplyEnvironmentalEffect GameObject, effect Alkalmazza a környezeti hatást egy célpontra.
ProcessTurn() Kezeli az aktuális kör eseményeit.
EndCombat() Véget vet a harcnak.

3.6.4. QuestManager

Név

Típus

Leírás

 activeQuests

 List<Quest>

 Az aktív küldetések listája.

 completedQuests

 List<Quest>

 A teljesített küldetések listája.

Név

Argumentumok

Működése, feladata

 GetActiveQuests()

 

 Lekérdezi az összes aktív küldetést.

 AddQuest

 Quest

  Új küldetést ad hozzá.

 CheckQuestCompletion

 questId

 Ellenőrzi egy adott küldetés teljesítését.

CompleteQuest questId Teljesít egy küldetést

3.6.5. Quest

Név

Típus

Leírás

 id

 int

 A küldetés egyedi azonosítója.

 name

 string

 A küldetés neve.

 description

 string

 A küldetés leírása.

objectives List<Objective> A küldetéshez tartozó célok listája.
rewards List<Item> A küldetés jutalmai.
status QuestStatus A küldetés aktuális állapota.

Név

Argumentumok

Működése, feladata

 AddObjective

 objective

 Új célt ad hozzá a küldetéshez.

 CheckCompletion()

 

 Ellenőrzi, hogy a küldetés teljesült-e.

 CompleteObjective

 objectiveId

 Teljesít egy adott célt.

3.6.6. Character

Név

Típus

Leírás

 name

 string

 A karakter neve.

 level

 int

 A karakter szintje.

 ArmorClass

 int

A karakter páncélosztálya (AC).
ProficiencyBonus int A karakter jártassági bónusza.
Proficiencies List<Skill> A karakter által ismert képességek.
abilityScores Dictionary<AbilityType, Ability> A karakter képességpontjai.
skills List<Skill> A karakter képességei
spells List<Spell> A karakter által ismert varázslatok.
feats List<Feat> A karakter készségei.
race Race A karakter faja.
class List<Class> A karakter osztálya.
background Background A karakter háttere.

Név

Argumentumok

Működése, feladata

 HasItem

 item

 Megvizsgálja, hogy a karakter rendelkezik-e egy adott tárggyal.

 IsAlive

 

 Ellenőrzi, hogy a karakter életben van-e

 UseItem

 item

  Használ egy tárgyat

GetAbilityModifier( abilitytype Lekéri egy adott képesség módosítóját.
CalculateSavingThrow abilitytype Kiszámítja a mentődobást.
HasResistance damageType Megvizsgálja, hogy a karakter ellenáll-e egy adott sebzéstípusnak.
IsProficientWith item Ellenőrzi, hogy a karakter jártas-e egy adott tárgy használatában.

3.6.7. PlayerCharacter

Név

Típus

Leírás

 experience

 int

A játékos tapasztalati pontjai.

Név

Argumentumok

Működése, feladata

  LevelUp()

 

  A játékos szintet lép, ha elegendő XP-t gyűjtött

 GainExperience

 int xp

  Növeli a játékos tapasztalati pontjait

3.6.8. NPC

Név

Típus

Leírás

 role

 String

 Az NPC szerepe a történetben.

 isHostile

 bool

Meghatározza, hogy az NPC ellenséges-e.

Név

Argumentumok

Működése, feladata

 SetHostility()

 bool isHostile

 Beállítja, hogy az NPC barátságos vagy ellenséges legyen

 Interact()

 

Elindít egy interakciót a játékossal.

3.6.9. Skill

Név

Típus

Leírás

 name

 String

  A képesség neve (pl. "Stealth").

 description

 String

 A képesség rövid leírása.

 AssociatedAbility

AbilityType

 A képességhez kapcsolódó attribútum

proficiencyBonus int A szakértelem bónusza.

Név

Argumentumok

Működése, feladata

 RollSkillCheck

 

 kocka dobás a képesség ellenőrzéséhez.

 

 

 

 

 

 

3.6.10. Ability

Név

Típus

Leírás

 Type

 AbilityType

Az attribútum típusa (pl. "Strength").
Score

 int

 Az attribútum értéke.

 Modifier

 int

Az attribútum módosítója.

Név

Argumentumok

Működése, feladata

 GetAttribute

 AbilityType

 Lekéri az attribútum értékét.

 SetAttribute()   

AbilityType, int value

 Beállít egy attribútumértéket.

 CalculateModifier()

 AbilityType

 Kiszámítja az attribútum módosítóját.

3.6.11. Spell

Név

Típus

Leírás

 name

 String

 A varázslat neve.

 range

 int

 A varázslat hatótávja.

 level

 int

 A varázslat szintje.

ClassRestrictions List<Class> Azok az osztályok, amelyek megtanulhatják.
Effects List<Effect> A varázslat által kiváltott hatások listája.

Név

Argumentumok

Működése, feladata

 LearnSpell()

 Character

 Egy karakter megtanul egy varázslatot.

3.6.12. Feat

Név

Típus

Leírás

 name

 String

 A feat neve.

 AbilityModifiers

 Dictionary<AbilityType, int>

 Az attribútumokat módosító értékek.

Név

Argumentumok

Működése, feladata

 ApplyFeat()

 character

 Alkalmazza a feat bónuszait a karakterre

3.6.13. Class

Név

Típus

Leírás

 ClassName

 string

 Az osztály neve (pl. "Fighter", "Wizard").

PrimaryAbility

 AbilityType

 Az osztály elsődleges attribútuma.

 hitDie

 int

 Az osztályhoz tartozó életerő dobókocka típusa.

ClassFeatures List<string>    Az osztály által nyújtott különleges képességek.
Spellcasting bool Meghatározza, hogy az osztály képes-e varázslásra.
Proficiencies List<string> Az osztály által biztosított jártaságok.

Név

Argumentumok

Működése, feladata

 ApplyClassFeatures()

 character

 Alkalmazza az osztály-specifikus tulajdonságokat a karakterre.

 AddProficiency()

 string proficiency

 Új jártaságot ad az osztályhoz

 LevelUp()

 int newLevel

 Meghatározza a szintlépéssel járó új képességeket

3.6.14. Race

Név

Típus

Leírás

 size

 string

 A faj mérete (pl. "Medium", "Small").

speed

 int

 A faj által biztosított mozgási sebesség.

 weight

 float

A faj átlagos testsúlya.
AbilityBonuses Dictionary<AbilityType, int> A faj által adott képességpont-bónuszok
traits List<string> A faj által biztosított egyedi tulajdonságok.
Proficiencies List<string>    A faj által biztosított jártaságok.

Név

Argumentumok

Működése, feladata

 ApplyRace

 character

 Alkalmazza a faj tulajdonságait a karakterre.

3.6.15. Background

Név

Típus

Leírás

 Name

 string

 A háttér neve (pl. "Acolyte", "Soldier").

 Description

 string

 A háttér narratív leírása.

 AbilityAdjustments

 Dictionary<AbilityType, int>

  A háttér által biztosított képességpont-bónuszok

SkillProficiencies List<Skill>    A háttér által biztosított képzettségek.

Név

Argumentumok

Működése, feladata

 ApplyBackground

 Character

 Alkalmazza a háttér bónuszait a karakterre.

3.6.16. Effect

Név

Típus

Leírás

 Name

 string

 Az effekt neve.

 Description

 string

 Az effekt leírása.

 Duration

 int

Az effekt időtartama körökben vagy más egységben.
IsBeneficial bool Az effekt pozitív (true) vagy negatív (false).
Modifiers Dictionary<AttributeType, int> A módosított attribútumok.
DamagePerTurn int Az effekt által okozott sebzés körönként.
EffectType EffectType Az effekt típusa (pl. "Poison", "Blessing").

Név

Argumentumok

Működése, feladata

 ApplyEffect()

 GameObject

 Alkalmazza az effektet egy célpontra.

 RemoveEffect

 GameObject

 Eltávolítja az effektet a célpontról.

 IsExpired()    

 

 Ellenőrzi, hogy az effekt lejárt-e.

Tick Körönként tick-el

3.6.17. Objective

Név

Típus

Leírás

 id

 int

 A cél egyedi azonosítója.

 description

 string

 A cél leírása.

 isCompleted

 bool

 Jelzi, hogy a cél teljesült-e.

condition Func<bool> A cél teljesítési feltétele.

Név

Argumentumok

Működése, feladata

 CheckCompletion()

 

 Ellenőrzi, hogy a cél teljesült-e.

 MarkComplete()

 

 Megjelöli a célt teljesítettként.



4. Sound alrendszer modellje.

 4.1 Statikus modell

4.1.1 Kapcsolatok pontosítása

SoundManager → Audio

Kapcsolat: SoundManager → MusicTrack / SoundEffect / DialogueAudio

 4.1.2 Attribútumok azonosítása


SoundManager attribútumai:

Név Típus Leírás
backgroundMusic List<MusicTrack> Háttérzenék listája.
soundEffects List<SoundEffect> Hanghatások listája.
voiceOvers List<DialogueAudio> Párbeszédhangok listája.
masterVolume float A teljes hangerő értéke (0.0 - 1.0 között)
musicVolume float A háttérzenék hangerőértéke.
effectsVolume float A hanghatások hangerőértéke.
dialogueVolume float A párbeszédek hangerőértéke.


Audio (absztrakt osztály) attribútumai:

Név Típus Leírás
isLooping bool Jelzi, hogy a hang ismétlődik-e.
duration float A hang időtartama másodpercben.
filePath String A hangfájl elérési útvonala


Alosztályok attribútumai:

  1. MusicTrack

  2. SoundEffect

  3. DialogueAudio

4.1.3 Bázisosztályok keresése

Az Audio osztály az absztrakt bázisosztály az összes hangtípus számára.

 4.2. Dinamikus modell

A dinamikus modell használati eseteken keresztül mutatja be a hangrendszer működését. Az alábbiakban néhány fontos folyamatot részletezünk.

4.2.1 Háttérzene indítása és vezérlése

Folyamat:

  1. SoundManager betölti a háttérzenék listáját.
  2. A playMusic(MusicTrack track) metódus aktiválja a megadott számot.
  3. A háttérzene az isLooping attribútum alapján ismétlődik vagy véget ér.
  4. A setVolume metódussal módosítható a zene hangerőszintje.
  5. A zene leállítására a stopAll() metódust használják.

Állapotdiagram:

Állapotok:

Átmenetek:

4.2.2 Hanghatás indítása

Folyamat:

  1. Az esemény aktiválja a playEffect(SoundEffect effect) metódust.
  2. Az adott hang a listából betöltésre kerül, és a megfelelő hangerővel indul.
  3. Ha az isLooping attribútum igaz, a hanghatás folyamatosan ismétlődik.

 4.3. Funkcionális modell

4.3 Funkcionális modell

A funkcionális modell a SoundManager működését és az adatok áramlását mutatja be.
Példa folyamat: Hangok betöltése és vezérlése

  1. Indításkor: A SoundManager inicializálja az összes szükséges Audio objektumot a fájlrendszerből.
  2. Hanglejátszás vezérlése:
  3. Folyamatban lévő lejátszás figyelése:

Adatáramlás diagram:


 4.4. Operációk azonosítása

Az osztálydiagram kiegészíthető az alábbi operációkkal:
SoundManager operációi:

Név Argumentumok Feladat
stopAll() - Az összes hang leállítása.
playMusic() MusicTrack track Egy adott háttérzene lejátszása.
playEffect() SoundEffect effect Egy adott hanghatás indítása.
playDialogue() DialogueAudio audio Egy párbeszédhang lejátszása.
setVolume() type, volume: float Egy adott hangtípus hangerőjének beállítása.


4.5 Az analízis modell osztálydiagramja

 4.6. Az analízis modell osztályainak listája

 4.6.1 Első osztály neve

 

Felelőssége, feladata:
A SoundManager osztály felelős a játék hangrendszerének központi kezeléséért. Az osztály biztosítja a különböző hangtípusok (háttérzene, hanghatások, párbeszédhangok) vezérlését. Kezeli a hangerő beállításokat, valamint a lejátszási műveleteket mindhárom hangtípushoz.

Együttműködők:

Attribútumok:

Név Típus Leírás
backgroundMusic List<MusicTrack> A játékban használt háttérzenék listája.
soundEffects List<SoundEffect> A játékban használt hanghatások listája.
voiceOvers List<DialogueAudio> A párbeszédhangok listája.
masterVolume float A teljes hangrendszer hangerőértéke (0.0 - 1.0).
musicVolume float A háttérzene relatív hangerőértéke.
effectsVolume float A hanghatások relatív hangerőértéke.
dialogueVolume float A párbeszédhangok relatív hangerőértéke.


Operációk:

Név Argumentumok Működése, feladata
stopAll() - Az összes hangforrás lejátszását leállítja.
setVolume() type: Audio, volume: float Beállítja egy adott hangtípus hangerőjét.
playMusic() track: MusicTrack Elindítja az adott háttérzene lejátszását.
playEffect() effect: SoundEffect Elindítja az adott hanghatás lejátszását.
playDialogue() dialogue: DialogueAudio Lejátsz egy párbeszédhangot.


 4.6.2. Második osztály neve

Attribútumok:

Név Típus Leírás
isLooping bool Jelzi, hogy az audio objektum ciklikusan ismétlődik-e.
duration float A lejátszás teljes időtartama másodpercben.
filePath String Az audio fájl elérési útvonala.

Operációk:

Név Argumentumok Működése, feladata
play() - Az audio objektum lejátszását indítja.
stop() - Az audio objektum lejátszását állítja le.


 

4.6.3 MusicTrack

Attribútumok:

Név Típus Leírás
priority int A háttérzene lejátszási prioritását adja meg.

Operációk:

Név Argumentumok Működése, feladata
fadeOut() duration: float A zene fokozatos elhalkítása megadott idő alatt.


4.6.4 SoundEffect

Attribútumok:

Név Típus Leírás
volumeModifier float A hanghatás egyedi hangerő-szorzója.

Operációk:

Név Argumentumok Működése, feladata
(Öröklött) play() - A hanghatás lejátszását indítja.


4.6.5 DialogueAudio

Attribútumok:

Név Típus Leírás
characterName String A beszélő karakter neve.

Operációk:

Név Argumentumok Működése, feladata
playWithSubtitle() subtitle: String A párbeszédhang lejátszása felirattal.


4.6.6 Aggregáció a SoundManager és az Audio között

4.7 Példák: Dinamikus modell folytatása

4.7.1 Párbeszédlejátszás folyamata

Használati eset neve: Párbeszédhang lejátszása felirattal

  1. A játék során egy interakció kiváltja a párbeszédlejátszást.
  2. A playDialogue(dialogue: DialogueAudio) metódus hívásra kerül a SoundManager osztályból.
  3. A párbeszédhang a DialogueAudio objektumban tárolt információkat használja (karakter neve, fájl elérési útja).
  4. A playWithSubtitle(subtitle: String) metódus megjeleníti a kapcsolódó feliratot.
  5. A lejátszás után az állapotdiagram szerint a folyamat leáll vagy új párbeszéd indul.

Állapotdiagram:

4.7.2 Hangrendszer állapotának vezérlése

Az állapotdiagramok alkalmazhatóak a teljes SoundManager vezérlésére is.

4.8 Teljes osztálydiagram (Az analízis modell)

Az osztálydiagram tartalmazza:


5. A Dialouge alrendszer modellje

 5.1 Statikus modell

5.1.1 Kapcsolatok pontosítása


  • Kapcsolat: DialogueManager → DialogueNode

  • Kapcsolat: DialogueNode → DialogueChoice

  • Kapcsolat: DialogueChoice → DialogueNode

  •  5.1.2 Attribútumok azonosítása


    DialogueManager attribútumai:

    Név Típus Leírás
    currentNode DialogueNode Az éppen aktív párbeszédcsomópont.
    dialogueTree Dictionary<int, DialogueNode> A párbeszédfát tartalmazó adatszerkezet.

    DialogueNode attribútumai:

    Név Típus Leírás
    id int Azonosító, amely az adott csomópontot jelöli.
    speaker Character A beszélő karakter objektuma.
    text String A párbeszédszöveg.
    choices List<DialogueChoice> A csomóponthoz tartozó választási lehetőségek.


    DialogueChoice attribútumai:

    Név Típus Leírás
    text String A választási lehetőség szövege.
    nextNodeId int Az elérhető következő csomópont azonosítója.
    condition Func<bool> A választás elérhetőségét meghatározó feltétel.

    5.1.3 Bázisosztályok keresése

    UIComponent: A párbeszéd UI elemei örökölhetik az általános megjelenítési funkciókat az absztrakt UIComponent osztályból

     5.2. Dinamikus modell

    5.2.1 Használati eset: Párbeszéd elindítása

    Folyamat:

    1. A játékos egy NPC-vel interakcióba lép.
    2. A DialogueManager meghívja a StartDialogue(rootNodeId) metódust, amely beállítja az aktuális csomópontot.
    3. A jelenlegi csomópont szövegét (text) és a hozzá tartozó választási lehetőségeket (choices) megjeleníti a UI.
    4. A játékos kiválaszt egy lehetőséget, amely aktiválja a SelectChoice(choiceIndex) metódust.

    Állapotdiagram:

    Állapotok:

    Átmenetek:

     5.3. Funkcionális modell

    Adatáramlási lépések:

    1. Input: A játékos interakciója az NPC-vel.
    2. Feldolgozás:
    3. Output: A választás következtében megjelenített új szöveg és opciók.

    Funkcionális lépések ábrázolása:

     5.4. Operációk azonosítása

    DialogueManager operációi:

    Név Argumentumok Működése, feladata
    StartDialogue() rootNodeId: int Párbeszéd indítása a megadott kezdő csomóponttal.
    DisplayCurrentNode() - Az aktuális csomópont szövegének és választásainak megjelenítése.
    SelectChoice() choiceIndex: int A játékos választásának kezelése.
    AdvanceToNextNode() nextNodeId: int A párbeszéd következő csomópontjának beállítása.


    5.5 Az analízis modell osztálydiagramja

    Az osztálydiagram a következő elemeket tartalmazza:

     5.6. Az analízis modell osztályainak listája

    5.6.1 DialogueManager

    Attribútumok:

    Név Típus Leírás
    currentNode DialogueNode Az éppen aktív párbeszédcsomópont.
    dialogueTree Dictionary<int, DialogueNode> A párbeszédfát tartalmazó adatszerkezet.


    Operációk:

    Név Argumentumok Működése, feladata
    StartDialogue() rootNodeId: int Párbeszéd indítása a megadott kezdő csomóponttal.
    DisplayCurrentNode() - Az aktuális csomópont szövegének és választásainak megjelenítése.
    SelectChoice() choiceIndex: int A játékos választásának kezelése.
    AdvanceToNextNode() nextNodeId: int A párbeszéd következő csomópontjának beállítása.


    5.6.2 DialogueNode

    Attribútumok:

    Név Típus Leírás
    id int Azonosító, amely az adott csomópontot jelöli.
    speaker Character A beszélő karakter objektuma.
    text String A párbeszédszöveg.
    choices List<DialogueChoice> A csomóponthoz tartozó választási lehetőségek.

    Operációk:

    Név Argumentumok Működése, feladata
    AddChoice() choice: DialogueChoice Új választási lehetőség hozzáadása a csomóponthoz.
    GetNextNode() choice: DialogueChoice A választás alapján meghatározza a következő csomópontot.


    5.6.3 DialogueChoice

    Attribútumok:

    Név Típus Leírás
    text String A választási lehetőség szövege.
    nextNodeId int Az elérhető következő csomópont azonosítója.
    condition Func<bool> A választás elérhetőségét meghatározó feltétel.

    Operációk:

    Név Argumentumok Működése, feladata
    IsAvailable() - Megállapítja, hogy a választás elérhető-e.
    GetNextNode() - Visszaadja a következő csomópont azonosítóját.


    6. A World/Map alrendszer modellje

     

    6.1 Statikus modell

     

    6.1.1 Kapcsolatok pontosítása

    Vizsgáljuk meg a fő kapcsolatokat a World/Map komponensein belül.

    GameState-->Map
    Kapcsolat típusa: Kompozíció:(GameState tartalmazza Mapot, és Map nem tud létezni GameState nélkül)
    Szerepkör: A Map létezésével alakul ki a világ. Azon van rajta mindeféle objektum, karakter. A GameState határozza meg, hogy melyik Mapnak kell betöltve lennie.
    Számoság: 1:1. Egy GameState objektumnak pontosan egy Map példánya van.

    Map-->GameObject
    Kapcsolat típusa: Kompozíció(Map tartalmazza a GameObject-et, és GameObject nem tud létezni a Map nélkül).
    Szerepkör: A Mapon lévő objektumokért felel, azoknak az objektumnak az összes tulajdonságát tárolja, illetve módosítja állapotát.
    Számosság: 1:N. Egy Map objektumnak több GameObject példánya van.

    EnvironmentObject-->GameObject
    Kapcsolat típusa: Általánosítás(Az EnvironmentObject a GameObject leszármazottja)
    Szerepkör: A környezeti objektumok közé tartoznak mindazok, amelyek önmagukba semmiféle mozgást nem képesek tenni, illetve interakciót, és csak más objektum hatására képes helyzetén, állapotán változtatni. Itt tárolja a típust, méretét, illetve, hogy akadály-e
    Számosság: 1:N. Egy GameObjectnek több EnvironmentObject példánya van.

    Transportation-->GameObject
    Kapcsolat típusa: Általánosítás(A Transportation a GameObject leszármazottja)
    Szerepkör: Azon objektumokat tartalmazza, amikkel lehetséges a világban utazni a játékosnak. Ilyenek az állatok és járművek.

    Ship-->Transportation
    Kapcsolat típusa: Általánosítás(A Ship a Transportation leszármazottja)
    Szerepkör: Ez az osztály tartalmazza a bejárható utakat és kikötés lehetőséget a hajó objektumoknak.

    Camera-->Map
    Kapcsolat típusa: Függőség(Camera a Map osztályt használja paraméterként)
    Szerepkör: A szöget és távot lehet állítani, ami a Mapot egy másik nézetbe képes hozni. A központja mindig a játékos.

    Map-->GameTime
    Kapcsolat: Függőség(Map a GameTime osztályt használja paraméterként)
    Szerepkör: A GameTime változtatja meg, hogy a Mapon éjszaka/nappal van-e.

    Camera-->GameObject
    Kapcsolat típusa: Függőség(Camera a GameObject osztályt használja paraméterként)
    Szerepkör: A Camera képes egy GameObject példányt követni.

    Valamennyi eddig felfedezett kapcsolatot megvizsgálunk, nevesítjük, megállapítjuk a szerepköröket és számosságokat. Ne feledjük, hogy a kapcsolatok pontosítása új osztályok definiálásához is vezethet. (Lásd például az OMT esettanulmány című segédletben a tornász és a szer kapcsolata.)

    Vázoljuk azokat a meggondolásokat, amelyek az osztálydiagram pontosításához vezetnek, és leírjuk, hogy mit változtat az eddigi információkon.

     

     6.1.2 Attribútumok azonosítása

    Map:
    GameObject:
    EnvironmentObject:
    Transportation:
    Ship:
    Camera:
    GameTime:

    Minden osztályhoz (vagy kapcsolathoz, ha ahhoz tartozik) hozzárendeljük a legfontosabb attribútumait. Ez az elemzés is vezethet új osztályok felfedezéséhez.  (Például az OMT esettanulmány című segédletben a tornász és az egyesület kapcsolatának elemzése.)

    Vázoljuk azokat a meggondolásokat, amelyek az osztálydiagram pontosításához vezetnek, és leírjuk, hogy mit változtat az eddigi információkon.

     

    6.1.3 Bázisosztályok keresése

    A GameObject osztály bázisosztályként viselkedik minden olyan objektum számára, amely rendelkezik névvel, életerővel, pozícióval, illetve mozgatható, lehet vele interaktálni, továbbá elpusztítható.
    Ide tartozik:
    Közös attribútumok, melyekkel az osztályok rendelkeznek:
    Közös operációk:

    Továbbá a Transportation osztály is bázisosztályként viselkedik egy másik, Ship nevű osztálynak, amely objektumai rendelkeznek a GameObject minden attribítum és operációjával, illetve a Transportation osztályból is az attribútumokkal és operációkkal.

    Attribútumok:
    Operációk:

    Megvizsgálandó, hogy vannak-e olyan esetek, ahol az egyes osztályokban ismétlődő argumentumok egy közös bázisosztályba emelhetők ki. Ha találunk ilyeneket, az általánosítás kapcsolatokkal kiegészítjük az osztálydiagramot.

    Vázoljuk azokat a meggondolásokat, amelyek az osztálydiagram pontosításához vezetnek, és leírjuk, hogy mit változtat az eddigi információkon.

     

    Az így pontosított osztálydiagram egy átmeneti munkaanyag, amely a dokumentum mellékletébe kerülhet (hivatkozással!), de nem kötelező része a dokumentumnak.

     

     6.2. Dinamikus modell

     

    Egy-egy alpontban az SRS-ből átvett használati esetek szokásos működési eseteire elkészítjük a szükséges diagrammokat. A használati esetre a nevével hivatkozunk.

    Ebben az alpontokban dokumentáljuk a szükséges állapotdiagramokat is. Az állapotdiagramok ábra aláírásában szerepeljen a vonatkozó osztály neve.

    Ha az áttekinthetőséget javítja, az alpont további alpontokra tagolható.

     6.3. Funkcionális modell

    Egy – egy alpontban dokumentáljuk leírással vagy a szükséges diagrammokkal a rendszerben zajló legfontosabb feldolgozási lépéseket, az egyes tevékenységek között szükséges adat áramlásokat.

    Ha az áttekinthetőséget javítja, az alpont további alpontokra tagolható.

     6.4. Operációk azonosítása

    Map:



    GameObject:


    EnvironmentObject:


    Transportation:


    Ship:


    Camera:


    GameTime:



    A dinamikus és funkcionális modell felhasználásával az osztálydiagramot kiegészítjük az egyes osztályokhoz tartozó operációkkal. Eközben újabb osztályok, kapcsolatok és attribútumok szükségességére is fény derülhet.

    Ha szükséges, dokumentáljuk azokat a meggondolásokat és döntéseket, amelyek az osztálydiagram kialakításához vezettek.

    Ha az áttekinthetőséget javítja, az alpont további alpontokra tagolható.


    6.5 Az analízis modell osztálydiagramja

    A dinamikus és funkcionális modell felhasználásával az osztálydiagramot kiegészítjük az egyes osztályokhoz tartozó operációkkal. Eközben újabb osztályok, kapcsolatok és attribútumok szükségességére is fény derülhet.

    Az így kiegészített osztálydiagramot szúrjuk ide be. Ha olyan méretű, hogy kb. fél oldalasra méretezve nem olvasható, teljes oldalra kell méretezni és mellékletbe tenni. Itt akkor csak egy hivatkozás áll.

    A diagram természetesen tartalmaz olyan kapcsolatokat is, amely egy másik alrendszer osztályához mutat. Ilyenkor a külső osztálynak is kell szerepelnie az ábrán, de a leírása nem itt, hanem az adott alrendszernél szerepel.

    Egy példa az alrendszer osztálydiagramjának formájára:



    1. ábra 1

     

     6.6. Az analízis modell osztályainak listája

    A előző pontban szereplő osztálydiagram osztályainak leírása. Minden osztály leírását kiegészítjük az attribútumokkal és az operációkkal. Így egy alpont az alábbi formájú lesz:

     

     6.6.1 Map

     

    Név

    Típus

    Leírás

     terrainData

    Terrain 

     A terep adata.

     objects

    List<GameObjects> 

     A létező objektumok listája.

     enemySpawns

    List<NPC>     

     A létező NPC-k listája.

    Kitöltési útmutató (tehát nem a formátum része): A típus még hiányozhat, vagy lehet általános (pl. szöveg).

    Név

    Argumentumok

    Működése, feladata

     LoadMap

    string 

     Betölti a pályát.

     GetObjectAt

    Vector3 

     Az adott objektumot a megadott pozícióra rakja be.

    Kitöltési útmutató (tehát nem a formátum része): Az argumentum lista még hiányozhat, vagy lehet, hogy nem teljes

     

     6.6.2. GameObject

     

    Név
    Típus
    Leírás
    Name
    string
    Az objektum neve.
    inventory
    Inventory
    Az objektum tárhelye.
    activeEffect
    List<Effect>
    Az objektumra ható effektek.
    Position
    Vector3
    Az objektum helye.
    isMovable
    bool
    Az objektum mozdítható-e.
    IsInteractable
    bool
    Az objektummal lehet-e interakcióba lépni.
    IsDestructible
    bool
    Az objektum elpusztítható-e.
    Interactions
    List<Effect>
    Interakcó lehetőségek.
    HP
    int
    Az objektum jelenlegi életereje.
    MaxHP
    int
    Az objektum max életereje.

    Név
    Argumentumok
    Működése, feladata
    TakeDamage
    amount: int
    Sebzéskor a megfelelő életerő mennyiséget levegye a HP-ból.
    IsDestroyed
    nincs
    Bool, megnézi, hogy az obj elpusztul-e.
    Addeffect
    effect: Effect
    Az objektumra effektet ad.
    RemoveEffect
    effect: Effect
    Az objektumról effektet vesz el.
    Move
    position: Vector3
    Az objektum mozgatása.
    UpdateEffects
    nincs
    Az objektumra ható jelenlegi effekteket mutatja.

    6.6.3. EnvironmentObject


    Név
    Típus
    Leírás
    size
    Vector2
    Az objektum méretét tárolja.
    type
    EnvironmentType
    Az objektum típusát tárolja.
    isObstacle
    bool
    Tárolja, hogy az objektum akadály-e.

    Név
    Argumentumok
    Működése, feladata
    getType
    nincs
    Az objektum típusát kéri vissza.
    checkCollision
    characterPosition: Vector2
    Megnézi, hogy történt-e az objektummal ütközés valamimás objektum által.
    render
    spriteBatch: Spritebatch

     

     

    6.6.4. Transportation



    Név
    Típus
    Leírás
    name
    string
    Az objektum neve.
    speed
    int
    Az objektum sebessége, egy körben megtehető útja.
    capacity
    int
    az objektum mennyi tárgyat képes magával vinni


    Név
    Argumentumok
    Működése, feladata
    moveTo
    Vector3
    Az objektum mozgatása a megadott helyre.
    getTravelTime
    float
    Visszakapjuk az utazás idejét.


    6.6.5. Ship



    Név
    Típus
    Leírás
    waterRoutes
    List<Route>
    Az objektum útvonalai.


    Név
    Argumentumok
    Működése, feladata
    dock
    nincs
    A hajót kiköti a kikötőnél.


    6.6.6. Camera



    Név
    Típus
    Leírás
    position
    Vector3
    A kamera pozíciója.
    zoom
    float
    A kamera közelsége a játéktérhez.
    FollowTarget
    GameObject
    Az objektum pozíciója.


    Név
    Argumentumok
    Működése, feladata
    moveTo
    Vector3
    A kamera egy adott helyre mozgatása.
    zoomIn
    nincs
    A kamera közelítése a játéktérhez.
    zoomOut
    nincs
    A kamera távolabbra helyezése a játéktértől.


    6.6.7. GameTime



    Név
    Típus
    Leírás
    elapsedTime
    float
    Az eltelt időt tárolja.
    day
    int
    A napot tárolja.
    hour
    int
    Az órát tárolja.


    Név
    Argumentumok
    Működése, feladata
    advanceTime
    hours
    Az idő előre léptetése órában.
    getCurrentTime
    nincs
    A jelenlegi idő lekérése.

     

     

    X. Mellékletek