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 |
3. Core Gameplay alrendszer modellje
3.1.2 Attribútumok azonosítása
3.5 Az analízis modell osztálydiagramja.
3.6. Az analízis modell osztályainak listája.
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.
-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.
-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.
-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.
1. Szereplők:
2. Állapotdiagram: CombatManagerAz alábbi állapotokat és átmeneteket definiáljuk a harci kör lebonyolításához:
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:
Az alábbiakban részletezem a harci kör feldolgozásának főbb lépéseit:
Harci sorrend meghatározása:
Karakter akció végrehajtása:
Sebzés és effektusok alkalmazása:
Harci kör lezárása:
Küldetés hozzáadása:
Célok követése:
Küldetés befejezése:
felelőssége, feladata: A játék fő vezérlőosztálya, amely koordinálja az összes alrendszert és a játékállapotokat. Feladata az indítás, megállítás, irányítás.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: A játék aktuális állapotát reprezentáló osztály.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: A harcrendszer logikájának kezelése
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: A küldetések kezelése, beleértve azok nyomon követését és a célok teljesítésének ellenőrzését.
együttműködők:
attribútumok
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. |
operációk
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 |
felelőssége, feladata: Egy játékbeli küldetést reprezentáló osztály.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata:Az összes karakter (játékos és NPC) alapját képező osztály.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: A játékos által irányított karakter reprezentációja. Ez az osztály kezeli a játékos szintlépését, tapasztalati pontjait, valamint az egyéb játékos-specifikus tulajdonságokat.
együttműködők:
attribútumok
Név |
Típus |
Leírás |
|
experience |
int |
A játékos tapasztalati pontjai. |
operációk
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 |
felelőssége, feladata: A nem játékos karaktereket (Non-Player Characters) reprezentáló osztály, amely lehet barátságos vagy ellenséges. Interakciókra, harcra, és történetmesélésre szolgál.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: Egy képességet vagy készséget reprezentál, amelyet a karakter használhat különféle tevékenységekhez és próbákhoz.
együttműködők:
attribútumok
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. |
operációk
Név |
Argumentumok |
Működése, feladata |
|
RollSkillCheck |
|
kocka dobás a képesség ellenőrzéséhez. |
|
|
|
|
|
|
|
|
felelőssége, feladata: A karakter alapvető attribútumait (pl. Erő, Ügyesség) reprezentálja, amelyek módosítják a képességeket és próbákat.
együttműködők:
attribútumok
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. |
operációk
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. |
felelőssége, feladata: Varázslatokat reprezentál, amelyek mágikus hatásokat idézhetnek elő a játékban.
együttműködők:
attribútumok
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. |
operációk
Név |
Argumentumok |
Működése, feladata |
|
LearnSpell() |
Character |
Egy karakter megtanul egy varázslatot. |
felelőssége, feladata: Olyan különleges képességeket képvisel, amelyek extra bónuszokat vagy képességeket adnak a karakternek.
együttműködők
attribútumok
Név |
Típus |
Leírás |
|
name |
String |
A feat neve. |
|
AbilityModifiers |
Dictionary<AbilityType, int> |
Az attribútumokat módosító értékek. |
operációk
Név |
Argumentumok |
Működése, feladata |
|
ApplyFeat() |
character |
Alkalmazza a feat bónuszait a karakterre |
felelőssége, feladata: leírjuk egy-két mondatban az osztály definícióját, milyen felelősséget rendelhetünk hozzá az alkalmazáson belül.
együttműködők:
attribútumok
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. |
operációk
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 |
felelőssége, feladata: A karakter faját reprezentálja, például ember, törpe vagy elf. Meghatározza a faj-specifikus tulajdonságokat, mint a sebesség, bónuszok, és képességek.
együttműködők
attribútumok
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. |
operációk
Név |
Argumentumok |
Működése, feladata |
|
ApplyRace |
character |
Alkalmazza a faj tulajdonságait a karakterre. |
felelőssége, feladata:A karakter előéletét és hátterét reprezentálja, amely meghatározza a kezdeti képességeit és képzettségeit.
együttműködők:
attribútumok
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. |
operációk
Név |
Argumentumok |
Működése, feladata |
|
ApplyBackground |
Character |
Alkalmazza a háttér bónuszait a karakterre. |
felelőssége, feladata: A játék során ható bónuszokat vagy hátrányokat reprezentálja, amelyek ideiglenesen vagy állandóan befolyásolják a karaktereket és tárgyakat.
együttműködők:
attribútumok
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"). |
operációk
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 |
felelőssége, feladata: A küldetések egyes céljait kezelő osztály..
együttműködők:
attribútumok
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. |
operációk
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. |
Kapcsolat: SoundManager → MusicTrack / SoundEffect / DialogueAudio
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:
MusicTrack
SoundEffect
DialogueAudio
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.
Folyamat:
Állapotdiagram:
Állapotok:
Átmenetek:
Folyamat:
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
Adatáramlás diagram:
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. |
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. |
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. |
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. |
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. |
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. |
Használati eset neve: Párbeszédhang lejátszása felirattal
Állapotdiagram:
Az állapotdiagramok alkalmazhatóak a teljes SoundManager vezérlésére is.
Állapotok:
Átmenetek:
Az osztálydiagram tartalmazza:
Kapcsolat: DialogueManager → DialogueNode
Kapcsolat: DialogueNode → DialogueChoice
Kapcsolat: DialogueChoice → DialogueNode
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. |
Folyamat:
StartDialogue(rootNodeId) metódust, amely beállítja az aktuális csomópontot.text) és a hozzá tartozó választási lehetőségeket (choices) megjeleníti a UI.SelectChoice(choiceIndex) metódust.Állapotdiagram:
Állapotok:
Átmenetek:
StartDialogue() hívás.SelectChoice() hívás.Adatáramlási lépések:
Funkcionális lépések ábrázolá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. |
Az osztálydiagram a következő elemeket tartalmazza:
Felelőssége, feladata:
A párbeszéd teljes életciklusát kezeli,
beleértve az indítást, előrehaladást
és befejezést.
Együttműködők:
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. |
Felelőssége, feladata:
A párbeszéd egyetlen csomópontjának
tárolása, beleértve a szöveget és a
válaszlehetőségeket.
Együttműködők:
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. |
Felelőssége, feladata:
Egy párbeszédcsomópont választási
lehetőségeinek tárolása és a hozzá
kapcsolódó logika végrehajtása.
Együttműködők:
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. |
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.
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.
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.
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ó.
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ó.
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ó.
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
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:
felelőssége,
feladata:
A Map az egész játékterület. Itt vannak a
különféle objektumok, a karakterek itt tudnak
interaktálni ezekkel.
együttműködők:Camera, GameTime, GameObject
attribútumok
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).
operációk
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
felelőssége,
feladata: A játék összes objektumát leírja, adatait tárolja.
együttműködők:Map
attribútumok
| 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. |
felelőssége,
feladata:
A játék környezeti objektumait részletezi
tovább a GameObjectben megtalálható
attribútumok és operációk mellett.
együttműködők:GameObject
attribútumok
| 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 |
felelőssége,
feladata:
Azokat az objektumnak a képességét bővíti
ki, amely utazás segítségére,
gyorsítására szánt
együttműködők:GameObject
attribútumok
| 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. |
felelőssége,
feladata: A hajó objektumoknak a képességét bővíti ki.
együttműködők:Transportation
attribútumok
| 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. |
felelőssége,
feladata: A játékosnak különböző nézetlehetőségeket nyújt.
együttműködők: Map, GameObject
attribútumok
| 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. |
felelőssége,
feladata: A játékban az idő múlásának követése.
együttműködők: GameState
attribútumok
| 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. |