feat(screen): add module

This commit is contained in:
Kristofers Solo 2024-12-29 17:16:30 +02:00
parent 645a14aee5
commit eb71f9261b
2 changed files with 141 additions and 25 deletions

View File

@ -46,6 +46,7 @@ papilspējas.
numbering: none, numbering: none,
"Abstract", "Abstract",
) )
#todo("add english title")
The qualification work includes the game "Maze Ascension", which offers The qualification work includes the game "Maze Ascension", which offers
players the challenge to pass through procedurally generated hexagons players the challenge to pass through procedurally generated hexagons
mazes. The game is built using the Rust programming language and Bevy mazes. The game is built using the Rust programming language and Bevy

165
main.typ
View File

@ -35,12 +35,12 @@
/ Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai. / Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai.
/* Pēdējos gados spēļu izstrādes joma ir piedzīvojusi strauju popularitātes /* Pēdējos gados spēļu izstrādes joma ir piedzīvojusi strauju popularitātes
* pieaugumu, ko veicināja neatkarīgo spēļu skaita pieaugums un jaudīgu spēļu * pieaugumu, ko veicināja neatkarīgo spēļu skaita pieaugums un jaudīgu spēļu
* dzinēju pieejamība. Starp šiem dzinējiem Bevy izceļas kā mūsdienīgs atvērtā * dzinēju pieejamība. Starp šiem dzinējiem Bevy izceļas kā mūsdienīgs atvērtā
* koda risinājums, kas izmanto Rust programmēšanas valodu, lai nodrošinātu * koda risinājums, kas izmanto Rust programmēšanas valodu, lai nodrošinātu
* drošību un veiktspēju. Šajā diplomdarbā tiek pētīts Bevy spēļu dzinēja * drošību un veiktspēju. Šajā diplomdarbā tiek pētīts Bevy spēļu dzinēja
* potenciāls, izstrādājot minimālistisku labirinta izpētes spēli "Maze * potenciāls, izstrādājot minimālistisku labirinta izpētes spēli "Maze
* Ascension". */ * Ascension". */
= Ievads = Ievads
== Nolūks == Nolūks
@ -224,6 +224,7 @@ spēles līmeņu pārvaldības modulis,
atveidošanas jeb renderēšanas un skaņas jeb audio moduļi. atveidošanas jeb renderēšanas un skaņas jeb audio moduļi.
Šie procesi mijiedarbojas ar vienu datu krātuvi -- operatīvo atmiņu (RAM) -- un vienu Šie procesi mijiedarbojas ar vienu datu krātuvi -- operatīvo atmiņu (RAM) -- un vienu
ārējo lietotāju -- spēlētājs. ārējo lietotāju -- spēlētājs.
#todo("update module list")
Ievades apstrādes modulis uztver un apstrādā spēlētāja ievades datus. Ievades apstrādes modulis uztver un apstrādā spēlētāja ievades datus.
Spēles stāvokļa modulis pārrauga vispārējo spēles stāvokli. Spēles stāvokļa modulis pārrauga vispārējo spēles stāvokli.
@ -258,9 +259,9 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
[*Funkcija*], [*Funkcija*],
[*Identifikators*], [*Identifikators*],
/* -------------- */ /* -------------- */
rowspanx(1)[Audio modulis], // audio // rowspanx(1)[Audio modulis], // audio
[Skaņas efektu atskaņošana], // [Skaņas efektu atskaņošana],
[], // [],
rowspanx(1)[Izstrādes rīku modulis], // dev_tools rowspanx(1)[Izstrādes rīku modulis], // dev_tools
[Labirinta pārvaldības saskarne], [Labirinta pārvaldības saskarne],
@ -280,7 +281,7 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
rowspanx(3)[Labirinta pārvaldības modulis], // maze rowspanx(3)[Labirinta pārvaldības modulis], // maze
[Labirinta ielāde], [Labirinta ielāde],
[], [#link(<maze-F01>)[LPMF01]],
[Labirinta #red("pārlāde")], [Labirinta #red("pārlāde")],
[], [],
[Labirinta #red("izlāde")], [Labirinta #red("izlāde")],
@ -299,19 +300,19 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
[], [],
rowspanx(4)[Spēles stāvokļa pārvaldības modulis], // screens rowspanx(4)[Spēles stāvokļa pārvaldības modulis], // screens
[Spēļu stāvokļa pārvaldība], [Spēles sākšana],
[#link(<screen-F01>)[SSPMF01]],
[Atgriešanās uz sākumekrānu],
[#link(<screen-F02>)[SSPMF02]],
[], [],
[Spēles cilpas pārvaldība],
[], [],
[Stāvokļu pāreju apstrāde],
[], [],
[Spēles notikumu apstrāde],
[], [],
), ),
) <function-modules> ) <function-modules>
=== Audio modulis // === Audio modulis
#todo("uzrakstīt audio moduli") // #todo("uzrakstīt audio moduli")
=== Izstrādes rīku modulis === Izstrādes rīku modulis
@ -328,7 +329,7 @@ Modulis pārbauda, vai konfigurācijā nav notikušas izmaiņas, un izraisa atti
notikumus, lai atjauninātu labirintu un spēlētāja pozīciju, kad notiek izmaiņas. notikumus, lai atjauninātu labirintu un spēlētāja pozīciju, kad notiek izmaiņas.
Svarīgi atzīmēt, ka šis modulis ir paredzēts lietošanai spēles izstrādes procesā. Svarīgi atzīmēt, ka šis modulis ir paredzēts lietošanai spēles izstrādes procesā.
Laidiena #todo("double-check 'laidiens'") versijās šī lietotāja saskarne nebūs pieejama, nodrošinot, ka Laidiena versijās šī lietotāja saskarne nebūs pieejama, nodrošinot, ka
gala lietotāji nevar piekļūt šīm uzlabotajām konfigurācijas opcijām. gala lietotāji nevar piekļūt šīm uzlabotajām konfigurācijas opcijām.
// Moduļa funkcionalitāti var vizualizēt, izmantojot datu plūsmas diagrammu (DFD), // Moduļa funkcionalitāti var vizualizēt, izmantojot datu plūsmas diagrammu (DFD),
@ -337,7 +338,6 @@ gala lietotāji nevar piekļūt šīm uzlabotajām konfigurācijas opcijām.
// atjauninātas labirinta konfigurācijas un respawn notikumi. // atjauninātas labirinta konfigurācijas un respawn notikumi.
#function-table( #function-table(
"Labirinta pārvadības saskarne", "Labirinta pārvadības saskarne",
"IRMF01", "IRMF01",
@ -403,7 +403,7 @@ programmu.
) <dpd-2-maze-gen> ) <dpd-2-maze-gen>
#function-table( #function-table(
"Labirinta būzētājs", "Labirinta būvētājs",
"LGMF01", "LGMF01",
[Izveido sešstūrainu labirintu ar norādītajiem parametriem.], [Izveido sešstūrainu labirintu ar norādītajiem parametriem.],
[ [
@ -446,20 +446,135 @@ programmu.
=== Labirinta pārvaldības modulis === Labirinta pārvaldības modulis
#todo("uzrakstīt labirinta pārvaldības moduli") #todo("uzrakstīt labirinta pārvaldības moduli")
#function-table(
"Labirinta ielāde",
"LPMF01",
[ Izveidot jaunu labirinta stāvu spēles pasaulē. ],
[
Ievades dati tiek saņemti no:
+ SpawnMaze notikuma (saturoša stāva numuru un konfigurāciju)
+ Bevy ECS komponentiem un resursiem
],
[
+ Pārbauda, vai labirints šim stāvam jau eksistē.
+ Ja eksistē, parāda 1. paziņojumu un iziet no sistēmas.
+ Ģenerē jaunu labirintu balstoties uz nodoto konfigurāciju.
+ Aprēķina vertikālo nobīdi jaunajam stāvam.
+ Izveido jaunu entitāti, kas pārstāv labirinta stāvu, pievienojot tam
atbilstošās komponente.
+ Atkarībā no tā, vai tas ir pašreizējais vai nākamais stāvs, pievieno
attiecīgo komponenti.
+ Izsauc atsevišķu funkciju labirinta flīžu izveidei.
],
[
Izvades datu sistēmai nav.
],
[
+ "Stāvs x jau eksistē."
+ "Neizdevās ģenerēt labirintu stāvam x."
],
) <maze-F01>
=== Spēlētāja modulis === Spēlētāja modulis
#todo("uzrakstīt spēlētāja moduli") #todo("uzrakstīt spēlētāja moduli")
=== Spēles stāvokļa pārvaldības modulis === Spēles stāvokļa pārvaldības modulis
#todo("uzrakstīt spēles stāvokļa pārvaldības moduli") #todo("uzrakstīt spēles stāvokļa pārvaldības moduli")
#function-table(
"Spēles sākšana",
"SSPMF01",
"Sākt spēles līmeni, ielādējot labirintu, spēlētāju un mūziku.",
[
+ Ekrāna stāvoklis
],
[
+ Pievieno sistēmas spēles sākumā:
- Izveido līmeni;
- Izveido spēlētāju;
- Sistēmas tiek darbinātas secīgi.
],
[
Izvades datu sistēmai nav.
],
) <screen-F01>
#function-table(
"Atgriešanās uz sākumekrānu",
"SSPMF02",
"Apstrādāt atgriešanos uz titulekrānu no gameplay režīma.",
[
+ Ekrāna stāvoklis
+ Nospiestie tastatūra taustiņi
],
[
+ Pārbauda, vai ir nospiests "Escape" taustiņš.
+ Ja nav, iziet no sistēmas un nedara neko.
+ Pārbauda, vai pašreizējais stāvoklis spēle ir aktīva.
+ Ja nav, iziet no sistēmas un nedara neko.
+ Samaina ekrāna stāvokli uz sākumekrānu.
],
[
Izvades datu sistēmai nav.
],
) <screen-F02>
#function-table(
"Attēlot sākumekrānu",
"SSPMF03",
"Izveido un parāda nosaukuma ekrāna lietotāja saskarni ar interaktīvām pogām.",
[
+ Ekrāna stāvoklis
],
[
+ Pievieno interaktīvas pogas:
- pogu "Play" ar pāreju uz spēli;
// - pogu "Credits" ar pāreju uz kredītiem;
- pogu "Exit" (tikai platformām, kas nav WASM).
+ Pievieno novērotājus katrai pogai.
],
[
Izvades datu sistēmai nav.
],
) <screen-F03>
/* #function-table(
"Mūzikas atskaņošana",
"SSPMF03",
"Sākt atskaņot spēles mūziku gameplay režīmā.",
[ Ievades dati: + GameplayMusic resurss + AudioSource resurss ],
[ + Izveido jaunu audio entītiju + Pievieno AudioPlayer komponenti + Iestata atskaņošanas iestatījumus uz LOOP ],
[ + Aktīva audio atskaņošanas entītija ],
[ Nav definēti specifiski kļūdu ziņojumi. ],
) <screen-F03> */
/* #function-table(
"Mūzikas apturēšana",
"SSPMF04",
"Apturēt spēles mūziku, izejot no gameplay režīma.",
[
+ GameplayMusic resurss ar entītijas ID
],
[
+ Pārbauda, vai eksistē mūzikas entītija:
+ Ja neeksistē, ...
+ Ja eksistē, likvidē entītiju rekursīvi
],
[
Izvades datu sistēmai nav.
],
) <screen-F04> */
== Nefunkcionālās prasības == Nefunkcionālās prasības
=== Veiktspējas prasības === Veiktspējas prasības
Uz sistēmas veiktspēju ir sekojošas prasības: Uz sistēmas veiktspēju ir sekojošas prasības:
- Labirinta ģenerēšana: Jebkura izmēra labirintam jātiek uzģenerētam ātrāk par 1 sekundi. - Jebkura izmēra labirintam jātiek uzģenerētam ātrāk kā 1 sekundē.
- Spēles ielāde: Spēlei jāstartējas ātrāk par 3 sekundēm. - Spēlei jāstartējas ātrāk par 3 sekundēm.
- Kadru ātrums: Spēlei jādarbojas ar vismaz 60 kadriem sekundē. - Spēlei jādarbojas ar vismaz 60 kadriem sekundē.
- Ievades apstrāde: Spēlētāja kustībām jātiek apstrādātām bez manāmas aizkaves ($<16$ms). - Spēlētāja kustībām jātiek apstrādātām bez manāmas aizkaves ($<16$ms).
=== Uzticamība === Uzticamība
Uz sistēmas uzticamību ir sekojošas prasības: Uz sistēmas uzticamību ir sekojošas prasības:
- Kļūdu apstrāde: spēlei jāapstrādā kļūdas graciozi, bez sistēmas atteicēm. - Kļūdu apstrāde: spēlei jāapstrādā kļūdas graciozi, bez sistēmas atteicēm.
@ -499,8 +614,8 @@ ir noteiktas, lai nodrošinātu plašu pieejamību, vienlaikus saglabājot veikt
== Daļējs funkciju projektējums == Daļējs funkciju projektējums
#todo("pievienot funkciju projektējumu +diagrammas") #todo("pievienot funkciju projektējumu +diagrammas")
/* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus; /* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus;
* obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas * obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas
* piemēru (use case) diagrammas */ * piemēru (use case) diagrammas */
== Saskarņu projektējums == Saskarņu projektējums
#todo("pievienot saskarnes (UI/UX)") #todo("pievienot saskarnes (UI/UX)")
/* 5-7 lietotāja saskarnes un to apraksts */ /* 5-7 lietotāja saskarnes un to apraksts */