mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
Merge branch 'chapter/requirements'
This commit is contained in:
commit
ae1dee0996
@ -1,3 +1,4 @@
|
|||||||
|
#import "@preview/dashy-todo:0.0.1": todo
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
#heading(
|
#heading(
|
||||||
level: 1,
|
level: 1,
|
||||||
@ -8,6 +9,9 @@
|
|||||||
|
|
||||||
#lorem(100)
|
#lorem(100)
|
||||||
|
|
||||||
|
#todo("Uzrakstīt anotāciju (līdz 850 rakstzīmēm)")
|
||||||
|
|
||||||
|
|
||||||
#par(
|
#par(
|
||||||
first-line-indent: 0cm,
|
first-line-indent: 0cm,
|
||||||
[*Atslēgvārdi:*],
|
[*Atslēgvārdi:*],
|
||||||
@ -39,6 +43,7 @@ papilspējas.
|
|||||||
progressing vertically as they climb up through levels. The game includes
|
progressing vertically as they climb up through levels. The game includes
|
||||||
power-ups and abilities hidden throughout the maze, and later introduces the
|
power-ups and abilities hidden throughout the maze, and later introduces the
|
||||||
ability to move between levels freely._
|
ability to move between levels freely._
|
||||||
|
#todo("līdz 850 rakstzīmēm")
|
||||||
#par(
|
#par(
|
||||||
first-line-indent: 0cm,
|
first-line-indent: 0cm,
|
||||||
[*Keywords:*],
|
[*Keywords:*],
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
../placeholder.jpg
|
|
||||||
4
assets/images/dpd/dpd0.svg
Normal file
4
assets/images/dpd/dpd0.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 56 KiB |
@ -1 +0,0 @@
|
|||||||
../placeholder.jpg
|
|
||||||
4
assets/images/dpd/dpd1.svg
Normal file
4
assets/images/dpd/dpd1.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 304 KiB |
@ -44,3 +44,15 @@ pipeline:
|
|||||||
title: "CI/CD: The what, why, and how"
|
title: "CI/CD: The what, why, and how"
|
||||||
author:
|
author:
|
||||||
url: https://github.com/resources/articles/devops/ci-cd
|
url: https://github.com/resources/articles/devops/ci-cd
|
||||||
|
backtracking:
|
||||||
|
type: Web
|
||||||
|
title: Backtracking
|
||||||
|
url: https://en.wikipedia.org/wiki/Backtracking
|
||||||
|
maze_generation:
|
||||||
|
type: Web
|
||||||
|
title: Maze Generation
|
||||||
|
url: https://rosettacode.org/wiki/Maze_generation
|
||||||
|
bevy_quickstart:
|
||||||
|
type: Web
|
||||||
|
title: Bevy New 2D
|
||||||
|
url: https://github.com/TheBevyFlock/bevy_new_2d
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
#import "@preview/i-figured:0.2.4"
|
#import "@preview/i-figured:0.2.4"
|
||||||
#import "@preview/big-todo:0.2.0": *
|
|
||||||
#import "@preview/tablex:0.0.9": tablex
|
#import "@preview/tablex:0.0.9": tablex
|
||||||
|
|
||||||
#let indent = 1cm
|
#let indent = 1cm
|
||||||
@ -57,7 +56,7 @@
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
it
|
text(12pt, it)
|
||||||
}
|
}
|
||||||
""
|
""
|
||||||
v(-1cm)
|
v(-1cm)
|
||||||
@ -144,12 +143,12 @@
|
|||||||
/* Title page config end */
|
/* Title page config end */
|
||||||
|
|
||||||
// WARNING: remove before sending
|
// WARNING: remove before sending
|
||||||
todo_outline
|
outline(title: "TODOs", target: figure.where(kind: "todo"))
|
||||||
|
|
||||||
/* --- Figure/Table config start --- */
|
/* --- Figure/Table config start --- */
|
||||||
show heading: i-figured.reset-counters
|
show heading: i-figured.reset-counters
|
||||||
show figure: i-figured.show-figure.with(numbering: "1.1.")
|
show figure: i-figured.show-figure.with(numbering: "1.1.")
|
||||||
set figure(placement: auto)
|
set figure(placement: none)
|
||||||
|
|
||||||
show figure.where(kind: "i-figured-table"): set block(breakable: true)
|
show figure.where(kind: "i-figured-table"): set block(breakable: true)
|
||||||
show figure.where(kind: "i-figured-table"): set figure.caption(position: top)
|
show figure.where(kind: "i-figured-table"): set figure.caption(position: top)
|
||||||
|
|||||||
261
main.typ
261
main.typ
@ -1,15 +1,16 @@
|
|||||||
#import "layout.typ": project
|
#import "@preview/dashy-todo:0.0.1": todo
|
||||||
#import "@preview/i-figured:0.2.4"
|
#import "@preview/i-figured:0.2.4"
|
||||||
#import "@preview/tablex:0.0.9": tablex, rowspanx, colspanx, cellx
|
#import "@preview/tablex:0.0.9": tablex, rowspanx, colspanx, cellx
|
||||||
#import "utils.typ": *
|
|
||||||
#import "@preview/wordometer:0.1.3": word-count, total-words
|
#import "@preview/wordometer:0.1.3": word-count, total-words
|
||||||
|
#import "layout.typ": project
|
||||||
|
#import "utils.typ": *
|
||||||
#show: word-count
|
#show: word-count
|
||||||
|
|
||||||
#show: project.with(
|
#show: project.with(
|
||||||
university: "Latvijas Universitāte",
|
university: "Latvijas Universitāte",
|
||||||
faculty: "Eksakto zinātņu un tehnoloģiju fakultāte",
|
faculty: "Eksakto zinātņu un tehnoloģiju fakultāte",
|
||||||
type: "Kvalifikācijas darbs",
|
type: "Kvalifikācijas darbs",
|
||||||
title: [Spēles izstrāde, izmantojot Bevy spēļu dzinēju],
|
title: [Spēles izstrāde, izmantojot\ Bevy spēļu dzinēju],
|
||||||
authors: ("Kristiāns Francis Cagulis, kc22015",),
|
authors: ("Kristiāns Francis Cagulis, kc22015",),
|
||||||
advisor: "prof. Mg. dat. Jānis Iljins",
|
advisor: "prof. Mg. dat. Jānis Iljins",
|
||||||
date: "Rīga 2025",
|
date: "Rīga 2025",
|
||||||
@ -17,15 +18,20 @@
|
|||||||
#set heading(numbering: none)
|
#set heading(numbering: none)
|
||||||
= Apzīmējumu saraksts
|
= Apzīmējumu saraksts
|
||||||
|
|
||||||
|
/ Audio: #todo("add description")
|
||||||
/ CI/CD: nepārtraukta integrācija un nepārtraukta izvietošana;
|
/ CI/CD: nepārtraukta integrācija un nepārtraukta izvietošana;
|
||||||
/ DPD: datu plūsmas diagramma;
|
/ DPD: datu plūsmas diagramma;
|
||||||
/ ECS: entitāšu komponentu sistēma (angl. Entity-Component-System#footnote[https://en.wikipedia.org/wiki/Entity_component_system]);
|
/ ECS: entitāšu komponentu sistēma (angl. Entity-Component-System#footnote[https://en.wikipedia.org/wiki/Entity_component_system]);
|
||||||
/ GitHub#footnote[https://en.wikipedia.org/wiki/GitHub]: izstrādātāju platforma, kas ļauj izstrādātājiem izveidot, glabāt, pārvaldīt un kopīgot savu kodu;
|
/ GitHub#footnote[https://en.wikipedia.org/wiki/GitHub]: izstrādātāju platforma, kas ļauj izstrādātājiem izveidot, glabāt, pārvaldīt un kopīgot savu kodu;
|
||||||
/ GitHub Release #footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]<gh-release>: izvēršamas programmatūras iterācijas, ko varat iepakot un padarīt pieejamas plašākai auditorijai, lai lejupielādētu un izmantotu;
|
/ GitHub Release #footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]<gh-release>: izvēršamas programmatūras iterācijas, ko varat iepakot un padarīt pieejamas plašākai auditorijai, lai lejupielādētu un izmantotu;
|
||||||
|
/ Jaucējtabula#footnote[https://lv.wikipedia.org/wiki/Jauc%C4%93jtabula]: jeb heštabula (angl. hash table#footnote[https://en.wikipedia.org/wiki/Hash_table]) ir datu struktūra, kas saista identificējošās vērtības ar piesaistītajām vērtībām.
|
||||||
|
/ Papildspēja: objekts, kas kā spēles mehānika spēlētājam piešķir īslaicīgas priekšrocības vai papildu spējas (angl. power-up#footnote[https://en.wikipedia.org/wiki/Power-up]<power-up>);
|
||||||
|
/ Pirmkods: #todo("add description")
|
||||||
/ PPA: programmatūras projektējuma apraksts;
|
/ PPA: programmatūras projektējuma apraksts;
|
||||||
/ PPS: programmatūras prasību specifikācija;
|
/ PPS: programmatūras prasību specifikācija;
|
||||||
/ Papildspēja: objekts, kas kā spēles mehānika spēlētājam piešķir īslaicīgas priekšrocības vai papildu spējas (angl. power-up#footnote[https://en.wikipedia.org/wiki/Power-up]<power-up>);
|
/ Renderēšana: #todo("add description")
|
||||||
/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā.
|
/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā.
|
||||||
|
/ Sēkla: _seed_ #todo("add description")
|
||||||
|
|
||||||
/* 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
|
||||||
@ -41,8 +47,6 @@
|
|||||||
programmatūras prasības un izpētīt Bevy spēļu dzinēja iespējas.
|
programmatūras prasības un izpētīt Bevy spēļu dzinēja iespējas.
|
||||||
|
|
||||||
== Darbības sfēra
|
== Darbības sfēra
|
||||||
#todo("add first sentence")
|
|
||||||
|
|
||||||
Darba galvenā uzmanība ir vērsta uz būtisku spēles mehāniku ieviešanu, tostarp
|
Darba galvenā uzmanība ir vērsta uz būtisku spēles mehāniku ieviešanu, tostarp
|
||||||
procedurālu labirintu ģenerēšanu, spēlētāju navigācijas sistēmu, papildspēju
|
procedurālu labirintu ģenerēšanu, spēlētāju navigācijas sistēmu, papildspēju
|
||||||
integrāciju un vertikālās progresijas mehāniku, vienlaikus ievērojot minimālisma
|
integrāciju un vertikālās progresijas mehāniku, vienlaikus ievērojot minimālisma
|
||||||
@ -112,11 +116,12 @@ ietvaros.
|
|||||||
integrācijas un nepārtrauktas izvietošanas (CI/CD) cauruļvadu@pipeline, lai
|
integrācijas un nepārtrauktas izvietošanas (CI/CD) cauruļvadu@pipeline, lai
|
||||||
vienkāršotu izstrādes un izplatīšanas procesu.
|
vienkāršotu izstrādes un izplatīšanas procesu.
|
||||||
Šis cauruļvads ir konfigurēts tā, lai kompilētu spēli vairākām platformām,
|
Šis cauruļvads ir konfigurēts tā, lai kompilētu spēli vairākām platformām,
|
||||||
tostarp Linux, macOS, Windows un WebAssembly (Wasm).
|
tostarp Linux, MacOS, Windows un WebAssembly (Wasm).
|
||||||
Tas nodrošina, ka spēle ir pieejama plašai auditorijai, nodrošinot konsekventu
|
Tas nodrošina, ka spēle ir pieejama plašai auditorijai, nodrošinot konsekventu
|
||||||
un saistošu pieredzi dažādās operētājsistēmās un vidēs.
|
un saistošu pieredzi dažādās operētājsistēmās un vidēs.
|
||||||
|
|
||||||
Spēle tiek izplatīta, izmantojot GitHub releases un #link("http://itch.io/")[itch.io], kas ir populāra neatkarīgo spēļu
|
Spēle tiek izplatīta, izmantojot GitHub releases un
|
||||||
|
#link("http://itch.io/")[itch.io], kas ir populāra neatkarīgo spēļu
|
||||||
platforma, kas ļauj viegli piekļūt un izplatīt spēles visā pasaulē.
|
platforma, kas ļauj viegli piekļūt un izplatīt spēles visā pasaulē.
|
||||||
Izmantojot šīs platformas, datorspēle gūst dažādu maksājumu modeļu un kopienas
|
Izmantojot šīs platformas, datorspēle gūst dažādu maksājumu modeļu un kopienas
|
||||||
iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un atpazīstamību.
|
iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un atpazīstamību.
|
||||||
@ -131,13 +136,25 @@ jaunākā versija ar jaunākajiem uzlabojumiem un kļūdu labojumiem. */
|
|||||||
Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasību
|
Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasību
|
||||||
īstenošanai, lai nodrošinātu stabilu un saistošu lietotāja pieredzi:
|
īstenošanai, lai nodrošinātu stabilu un saistošu lietotāja pieredzi:
|
||||||
|
|
||||||
+ Spēles progresēšana un līmeņu pārvaldība: Sistēma automātiski pārvaldīs spēlētāju virzību pa spēles līmeņiem, nodrošinot vienmērīgu pāreju, kad spēlētāji progresē un saskaras ar jauniem izaicinājumiem.
|
+ Spēles progresēšana un līmeņu pārvaldība: Sistēma automātiski pārvaldīs
|
||||||
Progress tiks saglabāts lokāli spēlētāja ierīcē.
|
spēlētāju virzību pa spēles līmeņiem, nodrošinot vienmērīgu pāreju, kad
|
||||||
+ Nevainojama piekļuve spēlēm: Spēlētāji varēs piekļūt spēlei un spēlēt to bez nepieciešamības izveidot lietotāja kontu vai pieteikties. Tas nodrošina netraucētu piekļuvi spēlei, ļaujot spēlētājiem nekavējoties sākt spēlēt.
|
spēlētāji progresē un saskaras ar jauniem izaicinājumiem. Progress tiks
|
||||||
// + Paziņošanas sistēma: Spēlētāji saņems paziņojumus par svarīgiem spēles atjauninājumiem, sasniegumiem un citu svarīgu informāciju, lai saglabātu viņu iesaisti un informētību.
|
saglabāts lokāli spēlētāja ierīcē.
|
||||||
+ Savietojamība ar vairākām platformām: sistēma būs pieejama vairākās platformās, tostarp Linux, macOS, Windows un WebAssembly, nodrošinot plašu pieejamību un sasniedzamību.
|
+ Nevainojama piekļuve spēlēm: Spēlētāji varēs piekļūt spēlei un spēlēt to bez
|
||||||
+ Kopienas iesaiste: Spēle izmantos #link("http://itch.io/")[itch.io] kopienas funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu atbalstošu spēlētāju kopienu.
|
nepieciešamības izveidot lietotāja kontu vai pieteikties. Tas nodrošina
|
||||||
+ Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus atjauninājumus un uzturēšanu, nodrošinot, ka spēle ir atjaunināta ar jaunākajām funkcijām un uzlabojumiem.
|
netraucētu piekļuvi spēlei, ļaujot spēlētājiem nekavējoties sākt spēlēt.
|
||||||
|
// + Paziņošanas sistēma: Spēlētāji saņems paziņojumus par svarīgiem spēles
|
||||||
|
// atjauninājumiem, sasniegumiem un citu svarīgu informāciju, lai saglabātu viņu
|
||||||
|
// iesaisti un informētību.
|
||||||
|
+ Savietojamība ar vairākām platformām: sistēma būs pieejama vairākās
|
||||||
|
platformās, tostarp Linux, macOS, Windows un WebAssembly, nodrošinot plašu
|
||||||
|
pieejamību un sasniedzamību.
|
||||||
|
+ Kopienas iesaiste: Spēle izmantos #link("http://itch.io/")[itch.io] kopienas
|
||||||
|
funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu
|
||||||
|
atbalstošu spēlētāju kopienu.
|
||||||
|
+ Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus
|
||||||
|
atjauninājumus un uzturēšanu, nodrošinot, ka spēle ir atjaunināta ar jaunākajām
|
||||||
|
funkcijām un uzlabojumiem.
|
||||||
|
|
||||||
== Sistēmas lietotāji
|
== Sistēmas lietotāji
|
||||||
Sistēma ir izstrādāta, ņemot vērā vienu lietotāja tipu -- spēlētājs. Spēlētāji
|
Sistēma ir izstrādāta, ņemot vērā vienu lietotāja tipu -- spēlētājs. Spēlētāji
|
||||||
@ -153,8 +170,8 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
(skat. @fig:dpd-0 att.)
|
(skat. @fig:dpd-0 att.)
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
caption: "0. līmeņa DPD",
|
caption: [\0. līmeņa DPD #todo("uzlabot diagrammu")],
|
||||||
image("assets/images/dpd/dpd0.jpg"),
|
image("assets/images/dpd/dpd0.svg"),
|
||||||
) <dpd-0>
|
) <dpd-0>
|
||||||
|
|
||||||
== Vispārējie ierobežojumi
|
== Vispārējie ierobežojumi
|
||||||
@ -167,7 +184,8 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
|
|
||||||
== Pieņēmumi un atkarības
|
== Pieņēmumi un atkarības
|
||||||
- Tehniskie pieņēmumi:
|
- Tehniskie pieņēmumi:
|
||||||
- Spēlētāja ierīcei jāatbilst minimālajām aparatūras prasībām, lai varētu palaist uz Bevy spēles dzinēja balstītas spēles.
|
- Spēlētāja ierīcei jāatbilst minimālajām aparatūras prasībām, lai varētu
|
||||||
|
palaist uz Bevy spēles dzinēja balstītas spēles.
|
||||||
- ierīcei jāatbalsta OpenGL 3.3 vai WebGL 2.0, lai nodrošinātu pareizu atveidošanu.
|
- ierīcei jāatbalsta OpenGL 3.3 vai WebGL 2.0, lai nodrošinātu pareizu atveidošanu.
|
||||||
- tīmekļa spēļu spēlēšanai (WebAssembly versija) pārlūkprogrammai jābūt mūsdienīgai un saderīgai ar WebAssembly.
|
- tīmekļa spēļu spēlēšanai (WebAssembly versija) pārlūkprogrammai jābūt mūsdienīgai un saderīgai ar WebAssembly.
|
||||||
- ekrāna izšķirtspējai jābūt vismaz 800x600 pikseļu, lai spēle būtu optimāla.
|
- ekrāna izšķirtspējai jābūt vismaz 800x600 pikseļu, lai spēle būtu optimāla.
|
||||||
@ -192,43 +210,218 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
|
|
||||||
= Programmatūras prasību specifikācija
|
= Programmatūras prasību specifikācija
|
||||||
== Funkcionālās prasības
|
== Funkcionālās prasības
|
||||||
|
\1. līmeņa datu plūsmas diagramma (skat. @fig:dpd-1 att.) ilustrē galvenos
|
||||||
|
procesus spēles "Maze Ascension" sistēmā.
|
||||||
|
Diagrammā attēloti septiņi galvenie procesi:
|
||||||
|
ievades apstrādātājs,
|
||||||
|
spēles stāvokļa pārvaldnieks,
|
||||||
|
labirinta ģenerators,
|
||||||
|
spēlētāja modulis,
|
||||||
|
spēles līmeņu pārvaldnieks,
|
||||||
|
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
|
||||||
|
ārējo lietotāju -- spēlētājs.
|
||||||
|
|
||||||
|
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.
|
||||||
|
Labirinta ģeneratora modulis izveido un pārvalda labirinta struktūras.
|
||||||
|
Spēlētāja modulis apstrādā visas ar spēlētāju saistītās kustības, sadursmes un papildspēju mijiedarbības.
|
||||||
|
Spēles līmeņu pārvaldnieks kontrolē līmeņu virzību un stāvokli.
|
||||||
|
Renderēšanas un audio moduļi pārvalda attiecīgi vizuālo un audio izvadi.
|
||||||
|
|
||||||
|
// Visas datu plūsmas starp procesiem tiek nodrošinātas, izmantojot operatīvo
|
||||||
|
// atmiņu, ievērojot atbilstošas datu plūsmas diagrammas konvencijas. Šī
|
||||||
|
// arhitektūra nodrošina efektīvu datu pārvaldību un skaidru interešu nodalīšanu
|
||||||
|
// starp dažādām spēles sastāvdaļām.
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
caption: "1. līmeņa DPD",
|
caption: [\1. līmeņa DPD #todo("uzlabot diagrammu")],
|
||||||
image("assets/images/dpd/dpd1.jpg"),
|
image("assets/images/dpd/dpd1.svg"),
|
||||||
) <dpd-1>
|
) <dpd-1>
|
||||||
|
|
||||||
|
|
||||||
|
=== Funkciju sadalījums moduļos
|
||||||
|
Tabulā @tbl:function-modules ir sniegts visaptverošs spēles funkcionalitātes
|
||||||
|
sadalījums pa tās galvenajiem moduļiem. Katram modulim ir noteikti konkrēti
|
||||||
|
pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
caption: "Funkciju sadalījums pa moduļiem",
|
||||||
|
kind: table,
|
||||||
|
tablex(
|
||||||
|
columns: (auto, 1fr, auto),
|
||||||
|
/* --- header --- */
|
||||||
|
[*Modulis*], [*Funkcija*], [*Identifikators*],
|
||||||
|
/* -------------- */
|
||||||
|
rowspanx(3)[Ievades apstrādes modulis],
|
||||||
|
[Ievades notikumu apstrāde], [],
|
||||||
|
[Ievades stāvokļa atjaunināšana], [],
|
||||||
|
[Ievades validācija], [],
|
||||||
|
|
||||||
|
rowspanx(4)[Spēles stāvokļa pārvaldības modulis],
|
||||||
|
[Spēļu stāvokļa pārvaldība], [],
|
||||||
|
[Spēles cilpas pārvaldība], [],
|
||||||
|
[Stāvokļu pāreju apstrāde], [],
|
||||||
|
[Spēles notikumu apstrāde], [],
|
||||||
|
|
||||||
|
rowspanx(4)[Spēlētāja modulis],
|
||||||
|
[Kustības vadība], [],
|
||||||
|
[Sadursmju apstrāde], [],
|
||||||
|
[Papildsēju pārvaldība], [],
|
||||||
|
[Spēlētāju stāvokļa atjaunināšana], [],
|
||||||
|
|
||||||
|
rowspanx(1)[Labirinta ģenerēšanas modulis],
|
||||||
|
[Labirinta ģenerēšana], [#link(<LGMF01>)[LGMF01]],
|
||||||
|
|
||||||
|
rowspanx(5)[Līmeņu pārvaldības modulis],
|
||||||
|
[Līmeņu ielāde], [],
|
||||||
|
[Progresa izsekošana], [],
|
||||||
|
[Pāreju apstrāde], [],
|
||||||
|
[Stāvokļa saglabāšana], [],
|
||||||
|
[Stāvokļa ielāde], [],
|
||||||
|
|
||||||
|
rowspanx(4)[Renderēšanas modulis],
|
||||||
|
[Labirinta renderēšana], [],
|
||||||
|
[Spēlētāja renderēšana], [],
|
||||||
|
[Lietotājsaskarnes renderēšana], [],
|
||||||
|
[Vizuālo efektu renderēšana], [],
|
||||||
|
|
||||||
|
rowspanx(3)[Audio modulis],
|
||||||
|
[Skaņas efektu atskaņošana], [],
|
||||||
|
[Mūzikas pārvaldība], [],
|
||||||
|
[Audio stāvokļu apstrāde], [],
|
||||||
|
),
|
||||||
|
) <function-modules>
|
||||||
|
|
||||||
|
=== Ievades apstrādes modulis
|
||||||
|
=== Spēles stāvokļa pārvaldības modulis
|
||||||
|
=== Spēlētāja modulis
|
||||||
|
=== Labirinta ģenerēšanas modulis
|
||||||
|
#function-table(
|
||||||
|
"Labirinta ģenerēšana",
|
||||||
|
"LGMF01",
|
||||||
|
[Izveido sešstūrainu labirintu ar norādītajiem parametriem.],
|
||||||
|
[
|
||||||
|
+ Rādiuss: `u32` -- Labirinta rādiuss. Obligāts parametrs, kas nosaka labirinta izmēru.
|
||||||
|
+ Sēkla: `Option<u64>` -- Neobligāta sēkla nejaušo skaitļu ģeneratoram. Ja
|
||||||
|
norādīta, nodrošina reproducējamu labirinta ģenerēšanu ar vienādiem
|
||||||
|
parametriem. Ja nav norādīta, tiek izmantota nejauša sēkla.
|
||||||
|
+ Sākuma pozīcija: `Option<Hex>` -- Neobligāta sākotnējā pozīcija labirintā.
|
||||||
|
Ja norādīta, labirinta ģenerēšana sāksies no šīs pozīcijas. Ja nav norādīta,
|
||||||
|
tiek izvēlēta nejauša derīga sākuma pozīcija.
|
||||||
|
// + Ģeneratora tips: `GeneratorType` -- Algoritms, kas tiks izmantots
|
||||||
|
// labirinta ģenerēšanai. Pašlaik pieejams tikai RecursiveBacktracking.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Validē ievades parametrus:
|
||||||
|
+ Pārbauda rādiusa esamību un derīgumu;
|
||||||
|
+ Validē sākuma pozīciju, ja tāda norādīta;
|
||||||
|
+ Izveido sākotnējo labirinta struktūru:
|
||||||
|
+ Inicializē tukšu labirintu ar norādīto rādiusu;
|
||||||
|
+ Katrai šūnai iestata sākotnējās (visas) sienas.
|
||||||
|
+ Validē stākuma prozīciju, ja tāda norādīta.
|
||||||
|
+ Ģenerē labirintu:
|
||||||
|
+ Rekursīvi izveido ceļus, noņemot sienas starp šūnām;
|
||||||
|
+ Izmanto atpakaļizsekošanu, kad sasniegts strupceļš.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Jaucējtabulu, kas satur:
|
||||||
|
+ Sešstūra koordinātes kā atslēgās;
|
||||||
|
+ Sešstūra objekti ar:
|
||||||
|
+ Pozīcijas koordinātēm ($x$, $y$);
|
||||||
|
+ Sienu konfigurāciju (8-bitu maska).
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Lai izveidotu labirintu, ir jānorāda rādiuss.
|
||||||
|
+ Sākuma pozīcija ir ārpus labirinta robežām.
|
||||||
|
+ Neizdevās izveidot labirintu.
|
||||||
|
],
|
||||||
|
) <LGMF01>
|
||||||
|
|
||||||
|
|
||||||
|
=== Līmeņu pārvaldības modulis
|
||||||
|
=== Renderēšanas modulis
|
||||||
|
=== Audio modulis
|
||||||
|
|
||||||
== Nefunkcionālās prasības
|
== Nefunkcionālās prasības
|
||||||
=== Veiktspējas prasības
|
=== Veiktspējas prasības
|
||||||
==== Statiskā veiktspēja
|
Uz sistēmas veiktspēju ir sekojošas prasības:
|
||||||
==== Dinamiskā veiktspēja
|
- Labirinta ģenerēšana: Jebkura izmēra labirintam jātiek uzģenerētam ātrāk par 1 sekundi.
|
||||||
|
- Spēles ielāde: Spēlei jāstartējas ātrāk par 3 sekundēm.
|
||||||
|
- Kadru ātrums: 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).
|
||||||
|
=== Uzticamība
|
||||||
|
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.
|
||||||
|
- Saglabāšana: spēles progresam jātiek automātiski saglabātam pēc katra līmeņa.
|
||||||
|
- Atjaunošanās: spēlei jāspēj atjaunoties pēc negaidītas aizvēršanas.
|
||||||
|
|
||||||
=== Atribūti
|
=== Atribūti
|
||||||
==== Izmantojamība
|
==== Izmantojamība
|
||||||
==== Mērogojamība
|
Uz sistēmas izmantojamību ir sekojošas prasības:
|
||||||
|
- $90%$ jaunu lietotāju jāspēj lietot visas tiem pieejamās funkcijas bez palīdzības.
|
||||||
|
- Teksta fonta izmēram datoru ekrāniem jābūt vismaz 14 pikseļiem, labas
|
||||||
|
salasāmības nodrošināšanai.
|
||||||
|
|
||||||
==== Drošība
|
==== Drošība
|
||||||
|
Uz drošību risinājumiem ir sekojošas prasības:
|
||||||
|
- Spēles pirmkods ir iekļauts kopā ar izpildāmo bināro failu;
|
||||||
|
- Spēle nemodificē un nelasa lietotāja vai operētājsistēmas failus, izņemot izmantoto bibliotēku
|
||||||
|
failus.
|
||||||
|
|
||||||
==== Uzturamība
|
==== Uzturamība
|
||||||
|
Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekojošās prasības:
|
||||||
|
- API dokumentācijas pārklājumam jābūt vismaz 80%.
|
||||||
|
- Koda testēšanas pārklājumam jābūt vismaz 70%.
|
||||||
|
|
||||||
==== Pārnesamība
|
==== Pārnesamība
|
||||||
=== Projekta ierobežojumi
|
- Platformas: spēlei jādarbojas uz 64 bitu Windows, Linux un MacOS.
|
||||||
==== Intelektuālā īpašuma tiesības
|
- Prasības: spēlei jādarbojas uz datora ar vismaz:
|
||||||
==== Aparatūras ierobežojumi
|
- 4GB operatīvo atmiņa(RAM);
|
||||||
===== Atbalstītās ierīces
|
- Integrēto grafisko karti;
|
||||||
===== Serveris un mitināšana
|
- Divu-kodolu procesoru.
|
||||||
|
|
||||||
|
=== Paplašināmība
|
||||||
|
- Labirinta ģenerēšana: jābūt iespējai viegli pievienot jaunus ģenerēšanas
|
||||||
|
algoritmus,
|
||||||
|
- Līmeņu dizains: jābūt iespējai viegli pievienot jaunus līmeņus.
|
||||||
|
- Papildinājumi: koda arhitektūrai jāatbalsta jaunu funkciju pievienošana.
|
||||||
|
|
||||||
=== Ārējās saskarnes prasības
|
=== Ārējās saskarnes prasības
|
||||||
==== Lietotāja saskarne
|
|
||||||
==== Sakaru saskarne
|
|
||||||
= Programmatūras projektējuma apraksts
|
= Programmatūras projektējuma apraksts
|
||||||
== Daļējs funkciju projektējums
|
== Daļējs funkciju projektējums
|
||||||
/* 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 */
|
||||||
|
== Izmantotās bibliotēkas
|
||||||
== Daļējs lietotāju saskarņu projektējums
|
== Daļējs lietotāju saskarņu projektējums
|
||||||
/* 5-7 lietotāja saskarnes un to apraksts */
|
/* 5-7 lietotāja saskarnes un to apraksts */
|
||||||
=== Navigācija
|
|
||||||
=== Ekrānskati
|
= Testēšanas dokumentācija
|
||||||
|
== Dinamiskā programmatūras testēšana
|
||||||
|
=== Manuālā integrācijas testēšana
|
||||||
|
=== Automatizēti testi
|
||||||
|
== Statiskā programmatūras testēšana
|
||||||
|
|
||||||
|
= Programmas projekta organizācija
|
||||||
|
|
||||||
|
= Kvalitātes nodrošināšana
|
||||||
|
|
||||||
|
= Konfigurācijas pārvaldība
|
||||||
|
|
||||||
|
= Darbietilpības novērtējums
|
||||||
|
|
||||||
|
= Secinājumi
|
||||||
|
|
||||||
#bibliography(
|
#bibliography(
|
||||||
title: "Izmantotā literatūra un avoti",
|
title: "Izmantotā literatūra un avoti",
|
||||||
"bibliography.yml",
|
"bibliography.yml",
|
||||||
)
|
)
|
||||||
|
|
||||||
#pagebreak()
|
#heading("Pielikumi", numbering: none)
|
||||||
#todo[#total-words words]
|
|
||||||
|
// #include "doc.typ"
|
||||||
|
|
||||||
|
// #pagebreak()
|
||||||
|
// #total-words words
|
||||||
|
|||||||
14
utils.typ
14
utils.typ
@ -1,5 +1,4 @@
|
|||||||
#import "@preview/tablex:0.0.9": tablex
|
#import "@preview/tablex:0.0.9": tablex
|
||||||
#import "@preview/big-todo:0.2.0": todo as TODO
|
|
||||||
|
|
||||||
#let custom-block(
|
#let custom-block(
|
||||||
item,
|
item,
|
||||||
@ -115,7 +114,7 @@
|
|||||||
titles: (
|
titles: (
|
||||||
"Funkcijas nosaukums",
|
"Funkcijas nosaukums",
|
||||||
"Funkcijas identifikators",
|
"Funkcijas identifikators",
|
||||||
"Ievads",
|
"Apraksts",
|
||||||
"Ievade",
|
"Ievade",
|
||||||
"Apstrāde",
|
"Apstrāde",
|
||||||
"Izvade",
|
"Izvade",
|
||||||
@ -180,17 +179,6 @@
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#let todo(
|
|
||||||
..body,
|
|
||||||
) = {
|
|
||||||
TODO(
|
|
||||||
..body,
|
|
||||||
inline: true,
|
|
||||||
big_text: 14pt,
|
|
||||||
small_text: 12pt,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
#let hyperlink-source(
|
#let hyperlink-source(
|
||||||
author,
|
author,
|
||||||
title,
|
title,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user