mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
chore: minor changes
This commit is contained in:
parent
e6a51832ab
commit
a3ac544af6
4
.github/workflows/typst.yml
vendored
4
.github/workflows/typst.yml
vendored
@ -25,8 +25,8 @@ jobs:
|
|||||||
cache-dependency-path: requirements.typ
|
cache-dependency-path: requirements.typ
|
||||||
- name: Compile Typst files
|
- name: Compile Typst files
|
||||||
run: |
|
run: |
|
||||||
typst compile --font-path=assets/fonts main.typ kval_darbs_kristians_cagulis_kc22015.pdf
|
typst compile --font-path=assets/fonts main.typ Cagulis_Kristians.Francis_kc22015.pdf
|
||||||
typst compile --font-path=assets/fonts documentary_page.typ
|
typst compile --font-path=assets/fonts documentary_page.typ reg_lapa_Cagulis_Kristians.Francis_kc22015.pdf
|
||||||
- name: Upload PDF file
|
- name: Upload PDF file
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
@ -72,7 +72,7 @@ izdrukai un/vai recenzentam uzrādītajai darba versijai.
|
|||||||
|
|
||||||
v(vspace)
|
v(vspace)
|
||||||
[Rekomendēju darbu aizstāvēšanai\
|
[Rekomendēju darbu aizstāvēšanai\
|
||||||
Darba vadītājs: *prof. Mg. dat. Jānis Iljins ~~06.01.2025.*]
|
Darba vadītājs: *Mg. dat. Jānis Iljins ~~06.01.2025.*]
|
||||||
|
|
||||||
v(vspace)
|
v(vspace)
|
||||||
[Recenzents: *Artūrs Driķis*]
|
[Recenzents: *Artūrs Driķis*]
|
||||||
|
|||||||
253
main.typ
253
main.typ
@ -15,7 +15,7 @@
|
|||||||
thesis_type: "Kvalifikācijas darbs",
|
thesis_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: "Mg. dat. Jānis Iljins",
|
||||||
date: "Rīga 2025",
|
date: "Rīga 2025",
|
||||||
)
|
)
|
||||||
#set heading(numbering: none)
|
#set heading(numbering: none)
|
||||||
@ -30,7 +30,7 @@
|
|||||||
/ Notikums: īslaicīga ziņojuma struktūra, kas tiek izmantota komunikācijai starp sistēmām;
|
/ Notikums: īslaicīga ziņojuma struktūra, kas tiek izmantota komunikācijai starp sistēmām;
|
||||||
/ 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>;
|
/ Papildspēja: spēles mehānika, kas 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: cilvēkam lasāmas programmēšanas instrukcijas, kas nosaka programmatūras darbību;
|
/ Pirmkods: cilvēkam lasāmas programmēšanas instrukcijas, kas nosaka programmatūras darbību;
|
||||||
/ Procedurāla ģenerēšana: algoritmisks satura radīšanas process, kas automātiski ģenerē datus izpildes laikā, nevis izmanto manuāli, iepriekš veidotu saturu;
|
/ Procedurāla ģenerēšana: algoritmisks satura radīšanas process, kas automātiski ģenerē datus izpildes laikā, nevis izmanto manuāli, iepriekš veidotu saturu;
|
||||||
/ Renderēšana: process, kurā tiek ģenerēta vizuāla izvade;
|
/ Renderēšana: process, kurā tiek ģenerēta vizuāla izvade;
|
||||||
@ -51,14 +51,6 @@ galvenais uzdevums ir nodrošināt skaidru un visaptverošu projekta aprakstu, k
|
|||||||
kalpo gan kā tehniskā specifikācija, gan kā izpētes dokumentācija Bevy spēļu
|
kalpo gan kā tehniskā specifikācija, gan kā izpētes dokumentācija Bevy spēļu
|
||||||
dzinēja iespēju demonstrēšanai.
|
dzinēja iespēju demonstrēšanai.
|
||||||
|
|
||||||
Dokumentācija ir paredzēta vairākām mērķauditorijām. Primāri tā ir orientēta uz
|
|
||||||
projekta izstrādātājiem un programmētājiem, kas strādā ar Bevy dzinēju, sniedzot
|
|
||||||
detalizētu ieskatu ECS arhitektūras implementācijā un procedurālās ģenerācijas
|
|
||||||
risinājumos. Tāpat dokumentācija ir noderīga spēļu izstrādes studentiem un
|
|
||||||
tehniskajiem vadītājiem, kas vēlas izprast Bevy dzinēja piemērotību līdzīgiem
|
|
||||||
projektiem, kā arī kvalifikācijas darba vērtētājiem, kas izvērtē projekta
|
|
||||||
tehnisko realizāciju un atbilstību izvirzītajām prasībām.
|
|
||||||
|
|
||||||
== Darbības sfēra
|
== Darbības sfēra
|
||||||
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
|
||||||
@ -66,7 +58,7 @@ integrāciju un vertikālās progresijas mehāniku, vienlaikus ievērojot minim
|
|||||||
dizaina filozofiju.
|
dizaina filozofiju.
|
||||||
|
|
||||||
Spēles pamatā ir procedurāli ģenerēti sešstūra labirinti, kas katrā spēlē rada
|
Spēles pamatā ir procedurāli ģenerēti sešstūra labirinti, kas katrā spēlē rada
|
||||||
unikālu vizuālo un navigācijas izaicinājumu. Procedurālās ģenerēšanas sistēma
|
unikālu vizuālu un navigācijas izaicinājumu. Procedurālās ģenerēšanas sistēma
|
||||||
nodrošina, ka:
|
nodrošina, ka:
|
||||||
|
|
||||||
- katrs labirints tiek unikāli ģenerēts "uzreiz"#footnote[Attiecas uz gandrīz
|
- katrs labirints tiek unikāli ģenerēts "uzreiz"#footnote[Attiecas uz gandrīz
|
||||||
@ -120,8 +112,8 @@ sešstūrainu lauku, kas piedāvā unikālu spēles pieredzi katrā spēles reiz
|
|||||||
Tiek skaidrota arī spēles vertikālās progresijas sistēma un papildspēju
|
Tiek skaidrota arī spēles vertikālās progresijas sistēma un papildspēju
|
||||||
mehānikas, kas padara spēli izaicinošāku un interesantāku.
|
mehānikas, kas padara spēli izaicinošāku un interesantāku.
|
||||||
|
|
||||||
Programmatūras prasību specifikācijas sadaļa detalizē sistēmas funkcionālās
|
Programmatūras prasību specifikācijas sadaļa detalizētāk apraksta sistēmas
|
||||||
prasības un arhitektūru.
|
funkcionālās prasības un arhitektūru.
|
||||||
Izmantojot datu plūsmas diagrammas, tiek ilustrēta sistēmas moduļu mijiedarbība
|
Izmantojot datu plūsmas diagrammas, tiek ilustrēta sistēmas moduļu mijiedarbība
|
||||||
un datu plūsmas starp tiem.
|
un datu plūsmas starp tiem.
|
||||||
Šajā sadaļā tiek aprakstīti pieci galvenie moduļi: spēles stāvokļa pārvaldības
|
Šajā sadaļā tiek aprakstīti pieci galvenie moduļi: spēles stāvokļa pārvaldības
|
||||||
@ -133,7 +125,7 @@ funkciju tabulas.
|
|||||||
Programmatūras projektējuma sadaļa sniedz detalizētu tehnisko specifikāciju.
|
Programmatūras projektējuma sadaļa sniedz detalizētu tehnisko specifikāciju.
|
||||||
Datu struktūru projektējuma apakšsadaļā tiek aprakstītas ECS arhitektūras
|
Datu struktūru projektējuma apakšsadaļā tiek aprakstītas ECS arhitektūras
|
||||||
komponentes, notikumi un resursi.
|
komponentes, notikumi un resursi.
|
||||||
Daļējā funkciju projektējuma apakšsadaļā tiek detalizēta plākšņu pārvaldības
|
Daļējā funkciju projektējuma apakšsadaļā tiek detalizēta šūnu pārvaldības
|
||||||
sistēma un citas būtiskas funkcijas.
|
sistēma un citas būtiskas funkcijas.
|
||||||
Saskarņu projektējuma apakšsadaļā tiek aprakstīta lietotāja saskarnes
|
Saskarņu projektējuma apakšsadaļā tiek aprakstīta lietotāja saskarnes
|
||||||
arhitektūra un implementācija.
|
arhitektūra un implementācija.
|
||||||
@ -141,9 +133,9 @@ arhitektūra un implementācija.
|
|||||||
Testēšanas dokumentācijas sadaļa aptver gan statisko, gan dinamisko testēšanu.
|
Testēšanas dokumentācijas sadaļa aptver gan statisko, gan dinamisko testēšanu.
|
||||||
Statiskās testēšanas apakšsadaļā tiek aprakstītas koda kvalitātes pārbaudes
|
Statiskās testēšanas apakšsadaļā tiek aprakstītas koda kvalitātes pārbaudes
|
||||||
metodes un rīki.
|
metodes un rīki.
|
||||||
Dinamiskās testēšanas apakšsadaļā tiek detalizēta gan manuālā integrācijas
|
Dinamiskās testēšanas apakšsadaļā tiek detalizētāk izskatīta gan manuālā
|
||||||
testēšana, gan automatizēto testu implementācija, sniedzot konkrētus piemērus un
|
integrācijas testēšana, gan automatizēto testu implementācija, sniedzot
|
||||||
rezultātus.
|
konkrētus piemērus un rezultātus.
|
||||||
|
|
||||||
Projekta organizācijas sadaļa apraksta projekta pārvaldības aspektus.
|
Projekta organizācijas sadaļa apraksta projekta pārvaldības aspektus.
|
||||||
Kvalitātes nodrošināšanas apakšsadaļa detalizē izmantotās metodes un rīkus koda
|
Kvalitātes nodrošināšanas apakšsadaļa detalizē izmantotās metodes un rīkus koda
|
||||||
@ -165,7 +157,7 @@ spēlēm un modernu, efektīvu spēļu dzinēju izmantošana. Izstrādātāji ar
|
|||||||
biežāk meklē rīkus, kas piedāvā elastību, veiktspēju un lietošanas ērtumu. Spēļu
|
biežāk meklē rīkus, kas piedāvā elastību, veiktspēju un lietošanas ērtumu. Spēļu
|
||||||
dzinējs Bevy ar savu moderno arhitektūru un Rust programmēšanas valodas
|
dzinējs Bevy ar savu moderno arhitektūru un Rust programmēšanas valodas
|
||||||
izmantošanu gūst arvien lielāku popularitāti izstrādātāju vidū, pateicoties tā
|
izmantošanu gūst arvien lielāku popularitāti izstrādātāju vidū, pateicoties tā
|
||||||
drošām un vienlaicīgām funkcijām.
|
drošām un vienlaicīgām (angl. concurrent) funkcijām.
|
||||||
|
|
||||||
== Pasūtītājs
|
== Pasūtītājs
|
||||||
Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un
|
Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un
|
||||||
@ -184,12 +176,9 @@ un saistošu pieredzi dažādās operētājsistēmās un vidēs.
|
|||||||
|
|
||||||
Spēle tiek izplatīta, izmantojot "GitHub
|
Spēle tiek izplatīta, izmantojot "GitHub
|
||||||
releases"#footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]<gh-release>
|
releases"#footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]<gh-release>
|
||||||
un itch.io,#footnote[https://itch.io/]<itch-io> kas ir
|
un itch.io platformas,#footnote[https://itch.io/]<itch-io> kas ir
|
||||||
populāra neatkarīgo spēļu platforma, kas ļauj viegli piekļūt un izplatīt spēles
|
populāra neatkarīgo spēļu platforma, kas ļauj viegli piekļūt un izplatīt spēles
|
||||||
visā pasaulē.
|
visā pasaulē.
|
||||||
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.
|
|
||||||
|
|
||||||
== Darījumprasības
|
== Darījumprasības
|
||||||
Sistēmas izstrādē tiek izvirzītas sekojošas darījumprasības, kas nodrošinās
|
Sistēmas izstrādē tiek izvirzītas sekojošas darījumprasības, kas nodrošinās
|
||||||
@ -213,7 +202,7 @@ Tā kā spēlei nav nepieciešami lietotāja konti vai autentifikācija, visiem
|
|||||||
spēlētājiem ir vienlīdzīga piekļuve spēles funkcijām un saturam no spēles sākuma
|
spēlētājiem ir vienlīdzīga piekļuve spēles funkcijām un saturam no spēles sākuma
|
||||||
brīža.
|
brīža.
|
||||||
|
|
||||||
Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD
|
Ar lietotāju saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD
|
||||||
(sk. @fig:dpd-0).
|
(sk. @fig:dpd-0).
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
@ -243,7 +232,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
+ Izstrādes vides un tehnoloģijas ierobežojumi:
|
+ Izstrādes vides un tehnoloģijas ierobežojumi:
|
||||||
+ Bevy dzinēja tehniskie ierobežojumi:
|
+ Bevy dzinēja tehniskie ierobežojumi:
|
||||||
+ ECS arhitektūras specifika un tās ierobežojumi datu organizācijā;
|
+ ECS arhitektūras specifika un tās ierobežojumi datu organizācijā;
|
||||||
+ "Render Graph" sistēmas ierobežojumi grafisko elementu attēlošanā;
|
+ "Render Graph"#footnote[https://docs.rs/bevy_render/latest/bevy_render/render_graph/struct.RenderGraph.htmlhttps://docs.rs/bevy_render/latest/bevy_render/render_graph/struct.RenderGraph.html] sistēmas ierobežojumi grafisko elementu attēlošanā;
|
||||||
+ atkarība no "wgpu"#footnote[https://wgpu.rs/] grafikas bibliotēkas iespējām.
|
+ atkarība no "wgpu"#footnote[https://wgpu.rs/] grafikas bibliotēkas iespējām.
|
||||||
+ Rust programmēšanas valodas ierobežojumi:
|
+ Rust programmēšanas valodas ierobežojumi:
|
||||||
+ stingra atmiņas pārvaldība (angl. memory management) un īpašumtiesību (angl. ownership) sistēma;
|
+ stingra atmiņas pārvaldība (angl. memory management) un īpašumtiesību (angl. ownership) sistēma;
|
||||||
@ -296,7 +285,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
\1. līmeņa datu plūsmas diagramma (sk. @fig:dpd-1) ilustrē galvenos
|
\1. līmeņa datu plūsmas diagramma (sk. @fig:dpd-1) ilustrē galvenos
|
||||||
procesus spēles "Maze Ascension" sistēmā.
|
procesus spēles "Maze Ascension" sistēmā.
|
||||||
Diagrammā attēloti seši galvenie procesi, viens izstrādes process un viens
|
Diagrammā attēloti seši galvenie procesi, viens izstrādes process un viens
|
||||||
ārējs (bibliotēkas) process(-i) process:
|
ārējs (bibliotēkas) process(-i):
|
||||||
stāva pārvaldības modulis,
|
stāva pārvaldības modulis,
|
||||||
labirinta ģenerēšanas un pārvaldības moduļi,
|
labirinta ģenerēšanas un pārvaldības moduļi,
|
||||||
spēlētāja modulis,
|
spēlētāja modulis,
|
||||||
@ -306,17 +295,16 @@ un izstrādes rīku modulis.
|
|||||||
Š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.
|
||||||
|
|
||||||
Ievades apstrādes modulis uztver un apstrādā spēlētāja ievades datus.
|
Bevy spēļu dzinējs diagrammā ir attēlots kā ārējs process vairāku iemeslu dēļ.
|
||||||
Spēles stāvokļa modulis pārrauga vispārējo spēles stāvokli.
|
Pirmkārt, Bevy nodrošina pamata infrastruktūru spēles darbībai, ieskaitot
|
||||||
Labirinta ģeneratora modulis izveido un pārvalda labirinta struktūras.
|
ievades apstrādi, renderēšanu un audio atskaņošanu.
|
||||||
Spēlētāja modulis apstrādā visas ar spēlētāju saistītās kustības, sadursmes un papildspēju mijiedarbības.
|
Tā rezultātā visa lietotāja mijiedarbība ar spēli (tastatūras, peles ievade)
|
||||||
Spēles līmeņu pārvaldnieks kontrolē līmeņu virzību un stāvokli.
|
vispirms tiek apstrādāta caur Bevy sistēmām, pirms tā nonāk līdz spēles
|
||||||
Renderēšanas un audio moduļi pārvalda attiecīgi vizuālo un audio izvadi.
|
specifiskajiem moduļiem.
|
||||||
|
|
||||||
// Visas datu plūsmas starp procesiem tiek nodrošinātas, izmantojot operatīvo
|
Operatīvā atmiņa (RAM) ir vienīgā datu krātuve diagrammā, jo Bevy ECS
|
||||||
// atmiņu, ievērojot atbilstošas datu plūsmas diagrammas konvencijas. Šī
|
arhitektūra balstās uz komponenšu datiem, kas tiek glabāti operatīvajā atmiņā un
|
||||||
// arhitektūra nodrošina efektīvu datu pārvaldību un skaidru interešu nodalīšanu
|
spēles stāvoklis netiek pastāvīgi saglabāts diskā.
|
||||||
// starp dažādām spēles sastāvdaļām.
|
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
caption: [\1. līmeņa DPD],
|
caption: [\1. līmeņa DPD],
|
||||||
@ -376,7 +364,6 @@ Renderēšanas un audio moduļi pārvalda attiecīgi vizuālo un audio izvadi.
|
|||||||
(0, -3),
|
(0, -3),
|
||||||
[Bevy],
|
[Bevy],
|
||||||
inset: 20pt,
|
inset: 20pt,
|
||||||
extrude: (-4pt, 0),
|
|
||||||
stroke: (thickness: 1pt, dash: "dashed"),
|
stroke: (thickness: 1pt, dash: "dashed"),
|
||||||
)
|
)
|
||||||
dpd-edge("uu", align(center)[Vizuālās\ izvades dati])
|
dpd-edge("uu", align(center)[Vizuālās\ izvades dati])
|
||||||
@ -498,22 +485,6 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
|||||||
|
|
||||||
=== Izstrādes rīku modulis
|
=== Izstrādes rīku modulis
|
||||||
|
|
||||||
#figure(
|
|
||||||
caption: [Izstrādes rīku moduļa 2. līmeņa DPD],
|
|
||||||
diagram(
|
|
||||||
spacing: 10em,
|
|
||||||
{
|
|
||||||
data-store((0, 0), [Spēlētājs])
|
|
||||||
dpd-edge("r", align(center)[Labirinta\ konfigurācijas dati])
|
|
||||||
|
|
||||||
dpd-database((2, 0), [Operatīvā\ atmiņa])
|
|
||||||
|
|
||||||
process((1, 0), [Labirinta\ pārvaldības\ saskarne])
|
|
||||||
dpd-edge("r", align(center)[Labirinta\ izkārtojuma dati])
|
|
||||||
},
|
|
||||||
),
|
|
||||||
) <dpd-2-dev_tools>
|
|
||||||
|
|
||||||
Dotais modulis ir izstrādes rīks, kas paredzēts lietotāja saskarnes elementu
|
Dotais modulis ir izstrādes rīks, kas paredzēts lietotāja saskarnes elementu
|
||||||
attēlošanai un apstrādei, lai konfigurētu labirinta parametrus.
|
attēlošanai un apstrādei, lai konfigurētu labirinta parametrus.
|
||||||
Šis modulis, izmantojot "bevy_egui"@bevy-egui un "inspector-egui"@bevy-inspector-egui
|
Šis modulis, izmantojot "bevy_egui"@bevy-egui un "inspector-egui"@bevy-inspector-egui
|
||||||
@ -530,22 +501,34 @@ Svarīgi atzīmēt, ka šis modulis ir paredzēts lietošanai spēles izstrādes
|
|||||||
Laidiena 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.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
caption: [Izstrādes rīku moduļa 2. līmeņa DPD],
|
||||||
|
diagram(
|
||||||
|
spacing: 10em,
|
||||||
|
{
|
||||||
|
data-store((0, 0), [Spēlētājs])
|
||||||
|
dpd-edge("r", align(center)[Labirinta\ konfigurācijas dati])
|
||||||
|
|
||||||
|
dpd-database((2, 0), [Operatīvā\ atmiņa])
|
||||||
|
|
||||||
|
process((1, 0), [Labirinta\ pārvaldības\ saskarne])
|
||||||
|
dpd-edge("r", align(center)[Labirinta\ izkārtojuma dati])
|
||||||
|
},
|
||||||
|
),
|
||||||
|
) <dpd-2-dev_tools>
|
||||||
|
|
||||||
#function-table(
|
#function-table(
|
||||||
"Labirinta pārvadības saskarne",
|
"Labirinta pārvadības saskarne",
|
||||||
"IRMF01",
|
"IRMF01",
|
||||||
[Apstrādā un izvada labirinta konfigurācijas vadības elementus lietotāja saskarnē.],
|
[Apstrādā un izvada labirinta konfigurācijas vadības elementus lietotāja saskarnē.],
|
||||||
[
|
[
|
||||||
Ievades dati tiek saņemti no pasaules resursiem un komponentēm:
|
|
||||||
+ Labirinta spraudņa resurss;
|
|
||||||
+ "`EguiContext`" komponente;#footnote[https://docs.rs/bevy_egui/latest/bevy_egui/]<bevy_egui>
|
+ "`EguiContext`" komponente;#footnote[https://docs.rs/bevy_egui/latest/bevy_egui/]<bevy_egui>
|
||||||
+ Labirinta konfigurācija un stāva komponentes saistībā ar pašreizējā stāva
|
+ Labirinta konfigurācija un stāva komponentes saistībā ar pašreizējā stāva
|
||||||
komponenti;
|
komponenti;
|
||||||
+ Globālais labirinta konfigurācijas resurss.
|
+ Globālais labirinta konfigurācijas resurss.
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Pārbauda, vai labirinta straudņa resurss eksistē pasaulē.
|
+ Saņem "`EguiContext`" komponenti no primārā loga.
|
||||||
+ Ja nav, iziet no sistēmas un nedara neko.
|
|
||||||
+ Saņem `EguiContext` komponenti no primārā loga.
|
|
||||||
+ Saņem labirinta konfigurāciju un stāvu komponentes no pašreizējā stāva.
|
+ Saņem labirinta konfigurāciju un stāvu komponentes no pašreizējā stāva.
|
||||||
+ Izveido jaunu "Maze Controls" logu, izmantojot "egui".
|
+ Izveido jaunu "Maze Controls" logu, izmantojot "egui".
|
||||||
+ Ja globālais labirinta konfigurācijas resurss ir pieejams:
|
+ Ja globālais labirinta konfigurācijas resurss ir pieejams:
|
||||||
@ -624,7 +607,6 @@ un nākamo stāvu, reaģējot uz "TransitionFloor" notikumu (sk. @tbl:events-flo
|
|||||||
+ Pārejas notikums.
|
+ Pārejas notikums.
|
||||||
+ Stāvas entitātes.
|
+ Stāvas entitātes.
|
||||||
+ Pašreizējais stāvs.
|
+ Pašreizējais stāvs.
|
||||||
+ Nākamais stāvs.
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Pārbauda vai ir aktīva pāreja.
|
+ Pārbauda vai ir aktīva pāreja.
|
||||||
@ -633,8 +615,7 @@ un nākamo stāvu, reaģējot uz "TransitionFloor" notikumu (sk. @tbl:events-flo
|
|||||||
+ Pievieno mērķa komponentes stāvu entitātēm.
|
+ Pievieno mērķa komponentes stāvu entitātēm.
|
||||||
+ Atjauno stāvu statusus:
|
+ Atjauno stāvu statusus:
|
||||||
+ Noņem pašreizējā stāva komponenti no pašreizējā stāva entitātes.
|
+ Noņem pašreizējā stāva komponenti no pašreizējā stāva entitātes.
|
||||||
+ Pievieno nākamā stāva komponenti nākamā entitātei.
|
+ Pievieno pašreizējā stāva komponenti nākamā stāva entitātei.
|
||||||
+ Noņem nākamā stāva komponenti no nākamā stāva entitātes.
|
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Atjaunināts stāvs.
|
+ Atjaunināts stāvs.
|
||||||
@ -647,7 +628,7 @@ Moduļa funkcionalitāte ir izmantota sešstūraina labirinta ģenerēšanai,
|
|||||||
balstoties uz "Hexagonal Grids"
|
balstoties uz "Hexagonal Grids"
|
||||||
rakstu @hex-grid, kas jau ir
|
rakstu @hex-grid, kas jau ir
|
||||||
kļuvis par _de facto_ standartu sešstūrainu režģu matemātikas un algoritmu
|
kļuvis par _de facto_ standartu sešstūrainu režģu matemātikas un algoritmu
|
||||||
implementācijai izstrādē.
|
implementācijai.
|
||||||
Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-hexlab).
|
Moduļa funkciju datu plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-hexlab).
|
||||||
Labirinta būvēšanas funkcija ir aprakstītas atsevišķā tabulā (sk. @tbl:hexlab-F01).
|
Labirinta būvēšanas funkcija ir aprakstītas atsevišķā tabulā (sk. @tbl:hexlab-F01).
|
||||||
|
|
||||||
@ -675,8 +656,6 @@ programmu.
|
|||||||
),
|
),
|
||||||
) <dpd-2-hexlab>
|
) <dpd-2-hexlab>
|
||||||
|
|
||||||
|
|
||||||
#pagebreak()
|
|
||||||
#function-table(
|
#function-table(
|
||||||
"Labirinta būvētājs",
|
"Labirinta būvētājs",
|
||||||
"LGMF01",
|
"LGMF01",
|
||||||
@ -694,21 +673,21 @@ programmu.
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Validē ievades parametrus:
|
+ Validē ievades parametrus:
|
||||||
+ Pārbauda rādiusa esamību un derīgumu;
|
+ Pārbauda rādiusa esamību un derīgumu.
|
||||||
+ Validē sākuma pozīciju, ja tāda norādīta;
|
+ Validē sākuma pozīciju, ja tāda norādīta.
|
||||||
+ Izveido sākotnējo labirinta struktūru:
|
+ Izveido sākotnējo labirinta struktūru:
|
||||||
+ Inicializē tukšu labirintu ar norādīto rādiusu;
|
+ Inicializē tukšu labirintu ar norādīto rādiusu.
|
||||||
+ Katrai šūnai iestata sākotnējās (visas) sienas.
|
+ Katrai šūnai iestata sākotnējās (visas) sienas.
|
||||||
+ Validē sākuma pozīciju, ja tāda norādīta.
|
+ Validē sākuma pozīciju, ja tāda norādīta.
|
||||||
+ Ģenerē labirintu:
|
+ Ģenerē labirintu:
|
||||||
+ Rekursīvi izveido ceļus, noņemot sienas starp šūnām;
|
+ Rekursīvi izveido ceļus, noņemot sienas starp šūnām.
|
||||||
+ Izmanto atpakaļizsekošanu, kad sasniegts strupceļš.
|
+ Izmanto atpakaļizsekošanu, kad sasniegts strupceļš.
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Jaucējtabulu, kas satur:
|
+ Jaucējtabulu, kas satur:
|
||||||
+ Sešstūra koordinātes kā atslēgās;
|
+ Sešstūra koordinātes kā atslēgās.
|
||||||
+ Sešstūra objekti ar:
|
+ Sešstūra objekti ar:
|
||||||
+ Pozīcijas koordinātēm ($x$, $y$);
|
+ Pozīcijas koordinātēm ($x$, $y$).
|
||||||
+ Sienu konfigurāciju (8-bitu maska).
|
+ Sienu konfigurāciju (8-bitu maska).
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -720,8 +699,8 @@ programmu.
|
|||||||
|
|
||||||
=== Labirinta pārvaldības modulis
|
=== Labirinta pārvaldības modulis
|
||||||
Labirinta pārvaldības modulis ir atbildīgs par labirintu ģenerēšanu un
|
Labirinta pārvaldības modulis ir atbildīgs par labirintu ģenerēšanu un
|
||||||
pārvaldību katrā spēles stāvā. Moduļa darbības plūsma ir attēlota 2. līmeņa datu
|
pārvaldību katrā spēles stāvā. Moduļa funkciju datu plūsmas ir attēlotas 2.
|
||||||
plūsmas diagrammā (sk. @fig:dpd-2-maze).
|
līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-maze).
|
||||||
|
|
||||||
Modulis nodrošina divas galvenās funkcijas: labirinta izveidi
|
Modulis nodrošina divas galvenās funkcijas: labirinta izveidi
|
||||||
(sk. @tbl:maze-F01) un labirinta atjaunošanu (sk. @tbl:maze-F02).
|
(sk. @tbl:maze-F01) un labirinta atjaunošanu (sk. @tbl:maze-F02).
|
||||||
@ -768,8 +747,8 @@ identifikatoru.
|
|||||||
+ Aprēķina vertikālo nobīdi jaunajam stāvam.
|
+ Aprēķina vertikālo nobīdi jaunajam stāvam.
|
||||||
+ Izveido jaunu entitāti, kas pārstāv labirinta stāvu, pievienojot tam
|
+ Izveido jaunu entitāti, kas pārstāv labirinta stāvu, pievienojot tam
|
||||||
atbilstošās komponente.
|
atbilstošās komponente.
|
||||||
+ Atkarībā no tā, vai tas ir pašreizējais vai nākamais stāvs, pievieno
|
+ Atkarībā no tā, vai tas ir pašreizējais stāvs, pievieno
|
||||||
attiecīgo komponenti.
|
pašreizējā stāva komponenti.
|
||||||
+ Izveido jaunas entitātes, kas pārstāv labirinta šūnas, kā bērnu
|
+ Izveido jaunas entitātes, kas pārstāv labirinta šūnas, kā bērnu
|
||||||
elementus labirinta entitātei.
|
elementus labirinta entitātei.
|
||||||
+ Katrai labirinta šūnai atbilstoši labirinta konfigurācijai, izveido
|
+ Katrai labirinta šūnai atbilstoši labirinta konfigurācijai, izveido
|
||||||
@ -780,7 +759,7 @@ identifikatoru.
|
|||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ "Stāvs $x$ jau eksistē."
|
+ "Stāvs $x$ jau eksistē."
|
||||||
+ "Neizdevās ģenerēt labirintu stāvam $x$."
|
// + "Neizdevās ģenerēt labirintu stāvam $x$."
|
||||||
],
|
],
|
||||||
) <maze-F01>
|
) <maze-F01>
|
||||||
|
|
||||||
@ -813,9 +792,10 @@ identifikatoru.
|
|||||||
|
|
||||||
=== Spēlētāja modulis
|
=== Spēlētāja modulis
|
||||||
Spēlētāja modulis ir atbildīgs par spēlētāja entītijas pārvaldību, kas ietver
|
Spēlētāja modulis ir atbildīgs par spēlētāja entītijas pārvaldību, kas ietver
|
||||||
tās izveidi, kustību apstrādi un mijiedarbību ar spēles vidi. Moduļa darbības
|
tās izveidi, kustību apstrādi un mijiedarbību ar spēles vidi.
|
||||||
plūsma ir attēlota 2. līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-player), kas
|
Moduļa datu plūsma ir attēlota 2. līmeņa datu plūsmas diagrammā (sk.
|
||||||
parāda četras galvenās funkcijas un to mijiedarbību ar datu glabātuvi.
|
@fig:dpd-2-player), kas parāda četras galvenās funkcijas un to mijiedarbību ar
|
||||||
|
datu glabātuvi.
|
||||||
|
|
||||||
Spēlētāja kustība tiek realizēta divās daļās: ievades apstrāde
|
Spēlētāja kustība tiek realizēta divās daļās: ievades apstrāde
|
||||||
(@tbl:player-F02) un kustības izpilde (@tbl:player-F03).
|
(@tbl:player-F02) un kustības izpilde (@tbl:player-F03).
|
||||||
@ -825,7 +805,7 @@ Kustības izpildes funkcija nodrošina plūstošu pārvietošanos uz mērķa poz
|
|||||||
izmantojot interpolāciju#footnote[Matemātiska metode, kas aprēķina starpvērtības
|
izmantojot interpolāciju#footnote[Matemātiska metode, kas aprēķina starpvērtības
|
||||||
starp diviem zināmiem punktiem.] starp pašreizējo un mērķa pozīciju.
|
starp diviem zināmiem punktiem.] starp pašreizējo un mērķa pozīciju.
|
||||||
|
|
||||||
Stāvu pārejas apstrāde (#link(<player-F04>)[SPMF04]) nepārtraukti uzrauga spēlētāja pozīciju
|
Stāvu pārejas apstrāde nepārtraukti uzrauga spēlētāja pozīciju
|
||||||
attiecībā pret stāva izeju un sākumu. Kad spēlētājs sasniedz kādu no šiem
|
attiecībā pret stāva izeju un sākumu. Kad spēlētājs sasniedz kādu no šiem
|
||||||
punktiem, funkcija izsauc atbilstošu pārejas notikumu.
|
punktiem, funkcija izsauc atbilstošu pārejas notikumu.
|
||||||
|
|
||||||
@ -1014,7 +994,7 @@ Katra no šīm funkcijām apstrādā specifiskus lietotāja ievades datus un
|
|||||||
atbilstoši atjaunina spēles stāvokli.
|
atbilstoši atjaunina spēles stāvokli.
|
||||||
|
|
||||||
Moduļa 2. līmeņa DPD diagramma (sk. @fig:dpd-2-screen) parāda, ka lietotājs
|
Moduļa 2. līmeņa DPD diagramma (sk. @fig:dpd-2-screen) parāda, ka lietotājs
|
||||||
mijiedarbojas ar sistēmu caur diviem galvenajiem ievades veidiem: pogu izvēli
|
mijiedarbojas ar sistēmu izmantojot divus galvenos ievades veidus: pogu izvēli
|
||||||
sākumekrānā un "Escape" taustiņa nospiešanu spēles laikā.
|
sākumekrānā un "Escape" taustiņa nospiešanu spēles laikā.
|
||||||
|
|
||||||
Spēles sākšanas funkcija inicializē nepieciešamos resursus un
|
Spēles sākšanas funkcija inicializē nepieciešamos resursus un
|
||||||
@ -1046,7 +1026,7 @@ atgriežas uz sākumekrānu.
|
|||||||
dpd-database((6, 0), [Operatīvā\ atmiņa])
|
dpd-database((6, 0), [Operatīvā\ atmiņa])
|
||||||
dpd-edge(
|
dpd-edge(
|
||||||
"d,lll",
|
"d,lll",
|
||||||
align(center)[Atjaunoti spēles\ stāvokļa dati],
|
align(center)[Spēles\ stāvokļa dati],
|
||||||
label-pos: 0.7,
|
label-pos: 0.7,
|
||||||
shift: -20pt,
|
shift: -20pt,
|
||||||
)
|
)
|
||||||
@ -1296,7 +1276,7 @@ spēlētāju saistītās komponentes, kā redzams @tbl:components-floor[],
|
|||||||
|
|
||||||
Stāva komponentes pārvalda vertikālo progresu un kustību spēlē.
|
Stāva komponentes pārvalda vertikālo progresu un kustību spēlē.
|
||||||
Kā redzams @tbl:components-floor[tabulā], šīs komponentes pārvalda stāvu numurus,
|
Kā redzams @tbl:components-floor[tabulā], šīs komponentes pārvalda stāvu numurus,
|
||||||
pašreizējā un nākamā stāva stāvokli un vertikālās kustības mehāniku.
|
pašreizējā stāva stāvokli un vertikālās kustības mehāniku.
|
||||||
|
|
||||||
#components-table(
|
#components-table(
|
||||||
caption: "Ar stāviem saistītās komponentes",
|
caption: "Ar stāviem saistītās komponentes",
|
||||||
@ -1306,9 +1286,6 @@ pašreizējā un nākamā stāva stāvokli un vertikālās kustības mehāniku.
|
|||||||
`CurrentFloor`,
|
`CurrentFloor`,
|
||||||
"Atzīmē pašreizējo stāvu",
|
"Atzīmē pašreizējo stāvu",
|
||||||
"Identificē pašreizējo stāvu.",
|
"Identificē pašreizējo stāvu.",
|
||||||
`NextFloor`,
|
|
||||||
"Atzīmē nākamo stāvu",
|
|
||||||
"Identificē progresa mērķa līmeni, uz kuru jāpāriet. Var būt arī līmenis zemāk.",
|
|
||||||
`FloorYTarget`,
|
`FloorYTarget`,
|
||||||
"Stāva nākamā Y pozīcija",
|
"Stāva nākamā Y pozīcija",
|
||||||
"Identificē stāva Y koordināti, uz kuru tas jāpārvieto.",
|
"Identificē stāva Y koordināti, uz kuru tas jāpārvieto.",
|
||||||
@ -1316,10 +1293,9 @@ pašreizējā un nākamā stāva stāvokli un vertikālās kustības mehāniku.
|
|||||||
|
|
||||||
==== Labirinta komponentes
|
==== Labirinta komponentes
|
||||||
|
|
||||||
Labirinta struktūru pārvalda vairāki savstarpēji saistītas komponentes.
|
Labirinta struktūru pārvalda vairāki savstarpēji saistītas komponentes,
|
||||||
Tabulā @tbl:components-maze[] ir redzamas sastāvdaļas, kas ir atbildīgas par
|
kas ir atbildīgas par labirinta uzturēšanu (sk. @tbl:components-maze).
|
||||||
labirinta izveidi un uzturēšanu.
|
#pagebreak()
|
||||||
|
|
||||||
#components-table(
|
#components-table(
|
||||||
caption: "Ar labirintiem saistītās komponentes",
|
caption: "Ar labirintiem saistītās komponentes",
|
||||||
`HexMaze`,
|
`HexMaze`,
|
||||||
@ -1335,12 +1311,12 @@ labirinta izveidi un uzturēšanu.
|
|||||||
"Glabā labirinta parametrus",
|
"Glabā labirinta parametrus",
|
||||||
"Konfigurē labirinta ģenerēšanu ar rādiusu, pozīcijām un izkārtojumu.",
|
"Konfigurē labirinta ģenerēšanu ar rādiusu, pozīcijām un izkārtojumu.",
|
||||||
`Maze`,
|
`Maze`,
|
||||||
"Glabā sešstūra labirinta datu",
|
"Glabā sešstūra labirinta datus",
|
||||||
"Glabā pilnu labirinta struktūru, izmantojot jaucējtabulu.",
|
"Glabā pilnu labirinta struktūru, izmantojot jaucējtabulu.",
|
||||||
`Walls`,
|
`Walls`,
|
||||||
"Apzīmē sienu konfigurāciju",
|
"Apzīmē sienu konfigurāciju",
|
||||||
[Pārvalda sienas stāvokļus, izmantojot bitu karodziņus.
|
[Pārvalda sienas stāvokļus, izmantojot bitu karodziņus
|
||||||
@begginer-patterns],
|
@begginer-patterns.],
|
||||||
) <components-maze>
|
) <components-maze>
|
||||||
|
|
||||||
==== Spēlētāja komponentes
|
==== Spēlētāja komponentes
|
||||||
@ -1355,8 +1331,8 @@ spēlētāju saistītās funkcijas.
|
|||||||
"Apzīmē spēlētāja entitāti",
|
"Apzīmē spēlētāja entitāti",
|
||||||
"Identificē spēlētāju un pieprasa nepieciešamās sastāvdaļas.",
|
"Identificē spēlētāju un pieprasa nepieciešamās sastāvdaļas.",
|
||||||
`CurrentPosition`,
|
`CurrentPosition`,
|
||||||
"Glabā spēlētāj pozīciju",
|
"Glabā spēlētājs pozīciju",
|
||||||
"nosaka pašreizējo atrašanās vietu labirintā.",
|
"Nosaka pašreizējo atrašanās vietu labirintā.",
|
||||||
`MovementSpeed`,
|
`MovementSpeed`,
|
||||||
"Glabā kustības ātrumu",
|
"Glabā kustības ātrumu",
|
||||||
"Nosaka spēlētāja pārvietošanās ātrumu.",
|
"Nosaka spēlētāja pārvietošanās ātrumu.",
|
||||||
@ -1381,8 +1357,8 @@ un ar spēlētāju saistīti notikumi, kas redzams @tbl:events-maze[],
|
|||||||
==== Labirintu notikumi
|
==== Labirintu notikumi
|
||||||
|
|
||||||
Labirinta notikumi pārvalda labirinta entitāšu dzīves ciklu spēlē. Kā redzams
|
Labirinta notikumi pārvalda labirinta entitāšu dzīves ciklu spēlē. Kā redzams
|
||||||
@tbl:events-maze[tabulā], šie notikumi pārvalda labirinta izveidi, atjaunošanu
|
@tbl:events-maze[tabulā], šie notikumi pārvalda labirinta izveidi un
|
||||||
un likvidēšanu.
|
atjaunošanu.
|
||||||
|
|
||||||
#events-table(
|
#events-table(
|
||||||
caption: "Ar labirintiem saistīti notikumi",
|
caption: "Ar labirintiem saistīti notikumi",
|
||||||
@ -1420,8 +1396,8 @@ Stāvu pārejas sistēma izmanto vienu uzskaitītu notikumu tipu (sk.
|
|||||||
|
|
||||||
Ar spēlētāju saistītie notikumi pārvalda spēlētāja entitātes dzīves ciklu (sk.
|
Ar spēlētāju saistītie notikumi pārvalda spēlētāja entitātes dzīves ciklu (sk.
|
||||||
@tbl:events-player).
|
@tbl:events-player).
|
||||||
Līdzīgi kā labirintu notikumiem, šie apstrādā spēlētāja izveidošanu, atjaunošanu
|
Līdzīgi kā labirintu notikumiem, šie apstrādā spēlētāja izveidošanu un
|
||||||
un likvidēšanu.
|
atjaunošanu.
|
||||||
|
|
||||||
#events-table(
|
#events-table(
|
||||||
caption: "Ar spēlētaju saistīti notikumi",
|
caption: "Ar spēlētaju saistīti notikumi",
|
||||||
@ -1437,11 +1413,11 @@ un likvidēšanu.
|
|||||||
|
|
||||||
Bevy resursi kalpo kā globāli stāvokļa konteineri, kuriem var piekļūt jebkura
|
Bevy resursi kalpo kā globāli stāvokļa konteineri, kuriem var piekļūt jebkura
|
||||||
sistēma.
|
sistēma.
|
||||||
Atšķirībā no komponentiem, kas ir piesaistīti konkrētām entitātēm, resursi
|
Atšķirībā no komponentēm, kas ir piesaistīti konkrētām entitātēm, resursi
|
||||||
nodrošina spēles mēroga datus un konfigurāciju.
|
nodrošina spēles mēroga datus un konfigurāciju.
|
||||||
Tie ir īpaši noderīgi kopīgu stāvokļu un iestatījumu pārvaldībai, kas var
|
Tie ir īpaši noderīgi kopīgu stāvokļu un iestatījumu pārvaldībai, kas var
|
||||||
ietekmē vairākas sistēmas @bevy-cheatbook[nod. ~14.6].
|
ietekmēt vairākas sistēmas @bevy-cheatbook[nod. ~14.6].
|
||||||
Spēle izmanto vairākus resursus globālās konfigurācijas un stāvokļa pārvaldībai
|
Spēle izmanto vienu resursu globālās konfigurācijas un stāvokļa pārvaldībai
|
||||||
(sk. @tbl:resources)
|
(sk. @tbl:resources)
|
||||||
|
|
||||||
#resources-table(
|
#resources-table(
|
||||||
@ -1452,9 +1428,8 @@ Spēle izmanto vairākus resursus globālās konfigurācijas un stāvokļa pārv
|
|||||||
) <resources>
|
) <resources>
|
||||||
|
|
||||||
#indent-par[
|
#indent-par[
|
||||||
Resurss "`GlobalMazeConfig`" ir īpaši svarīgs, jo tas pārvalda labirinta vizuālo
|
Dotais resurss pārvalda labirinta vizuālo attēlojumu, ietverot tādus
|
||||||
attēlojumu, ietverot tādus parametrus kā sešstūra lielums, sienu biezums un
|
parametrus kā sešstūra lielums, sienu biezums un vertikālais augstums.
|
||||||
vertikālais augstums.
|
|
||||||
]
|
]
|
||||||
|
|
||||||
== Daļējs funkciju projektējums
|
== Daļējs funkciju projektējums
|
||||||
@ -1620,7 +1595,7 @@ atgriežas un mēģina citu ceļu.
|
|||||||
Labajā pusē ir attēlota stāvu pārejas loģika, kas tiek izpildīta, kad neviens
|
Labajā pusē ir attēlota stāvu pārejas loģika, kas tiek izpildīta, kad neviens
|
||||||
stāvs nekustās.
|
stāvs nekustās.
|
||||||
Šī daļa aprēķina jaunās $Y$ koordinātes visiem stāviem, pievieno tiem
|
Šī daļa aprēķina jaunās $Y$ koordinātes visiem stāviem, pievieno tiem
|
||||||
galamērķa komponentes un atjaunina pašreizējā un nākamā stāva marķierus.
|
galamērķa komponentes un atjaunina pašreizējā stāva marķierus.
|
||||||
]
|
]
|
||||||
#figure(
|
#figure(
|
||||||
caption: "Stāva kustības sistēma",
|
caption: "Stāva kustības sistēma",
|
||||||
@ -1667,7 +1642,7 @@ atgriežas un mēģina citu ceļu.
|
|||||||
action-node((1, 4), [Pievienot stāva galamērķa\ komponenti katram stāvam])
|
action-node((1, 4), [Pievienot stāva galamērķa\ komponenti katram stāvam])
|
||||||
std-edge()
|
std-edge()
|
||||||
|
|
||||||
action-node((1, 5), [Atjaunina pašreizējā un\ nākamā stāvu marķierus])
|
action-node((1, 5), [Atjaunina pašreizējā marķieri])
|
||||||
std-edge("l,uu,l")
|
std-edge("l,uu,l")
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
@ -1768,21 +1743,21 @@ testēšana, izmantojot gan automatizētus rīkus, gan manuālu pārbaudi.
|
|||||||
|
|
||||||
== Statiskā testēšana <static-tests>
|
== Statiskā testēšana <static-tests>
|
||||||
Statiskā testēšana ir svarīga daļa no projekta kvalitātes nodrošināšanas.
|
Statiskā testēšana ir svarīga daļa no projekta kvalitātes nodrošināšanas.
|
||||||
"Clippy"
|
"Clippy" tiek izmantots koda analīzei, meklējot potenciālas problēmas un
|
||||||
tiek izmantots koda analīzei, meklējot potenciālas problēmas un
|
neoptimālus risinājumus.
|
||||||
neoptimālus risinājumus. Papildus noklusētajiem noteikumiem, tika aktivizēti
|
Papildus noklusētajiem noteikumiem, tika aktivizēti stingrāki koda kvalitātes
|
||||||
stingrāki koda kvalitātes pārbaudes līmeņi: "pedantic" režīms nodrošina
|
pārbaudes līmeņi: "pedantic" režīms nodrošina padziļinātu koda stila pārbaudi,
|
||||||
padziļinātu koda stila pārbaudi, "nursery" aktivizē eksperimentālās pārbaudes,
|
"nursery" aktivizē eksperimentālās pārbaudes, un "unwrap_used" un "expect_used"
|
||||||
un "unwrap_used" un "expect_used" brīdina par potenciāli nedrošu kļūdu
|
brīdina par potenciāli nedrošu kļūdu apstrādi. Šie papildu noteikumi palīdz
|
||||||
apstrādi. Šie papildu noteikumi palīdz uzturēt augstāku koda kvalitāti un
|
uzturēt augstāku koda kvalitāti un samazināt potenciālo kļūdu skaitu @clippy.
|
||||||
samazināt potenciālo kļūdu skaitu @clippy.
|
|
||||||
|
|
||||||
== Dinamiskā testēšana
|
== Dinamiskā testēšana
|
||||||
|
|
||||||
Lai novērtētu programmatūras uzvedību darbības laikā, tika veikta dinamiskā
|
Lai novērtētu programmatūras uzvedību darbības laikā, tika veikta dinamiskā
|
||||||
testēšana. Šī testēšanas pieeja apvieno gan manuālu testēšanu, izmantojot
|
testēšana.
|
||||||
lietotāja saskarnes mijiedarbību, gan automatizētus testu komplektus, lai
|
Šī testēšanas pieeja apvieno gan manuālu testēšanu, izmantojot lietotāja
|
||||||
nodrošinātu visaptverošu spēles funkcionalitātes pārklājumu.
|
saskarnes mijiedarbību, gan automatizētus testu komplektus, lai nodrošinātu
|
||||||
|
visaptverošu spēles funkcionalitātes pārklājumu.
|
||||||
|
|
||||||
=== Manuālā integrācijas testēšana
|
=== Manuālā integrācijas testēšana
|
||||||
|
|
||||||
@ -1791,7 +1766,7 @@ Katrs testa scenārijs ir dokumentēta strukturētas tabulas formātā, ievēroj
|
|||||||
būtisku informāciju, piemēram, test nosaukumu, unikālo identifikatoru, aprakstu,
|
būtisku informāciju, piemēram, test nosaukumu, unikālo identifikatoru, aprakstu,
|
||||||
izpildes soļus, gaidāmo rezultātu un faktisko rezultātu (veiksmīga testa
|
izpildes soļus, gaidāmo rezultātu un faktisko rezultātu (veiksmīga testa
|
||||||
gadījumā apzīmēts ar "Ok", bet neveiksmīgu -- "Err").
|
gadījumā apzīmēts ar "Ok", bet neveiksmīgu -- "Err").
|
||||||
Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabulā].
|
Testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabulā].
|
||||||
|
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
@ -1825,22 +1800,24 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
"Stāvu pāreja (uz augšu)",
|
"Stāvu pāreja (uz augšu)",
|
||||||
[
|
[
|
||||||
+ Nokļūt līdz beigu šūnai
|
+ Nokļūt līdz beigu šūnai
|
||||||
|
+ Nospiest taustiņu "E"
|
||||||
+ Novērot animāciju
|
+ Novērot animāciju
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Plūstoša pāreja starp stāviem uz augšu
|
|
||||||
+ Jauna stāva ģenerēšana
|
+ Jauna stāva ģenerēšana
|
||||||
|
+ Plūstoša pāreja starp stāviem uz augšu
|
||||||
],
|
],
|
||||||
"Ok",
|
"Ok",
|
||||||
"MT04",
|
"MT04",
|
||||||
"Stāvu pāreja (uz leju)",
|
"Stāvu pāreja (uz leju)",
|
||||||
[
|
[
|
||||||
+ Nokļūt līdz sākuma šūnai
|
+ Nokļūt līdz sākuma šūnai
|
||||||
|
+ Nospiest taustiņu "E"
|
||||||
+ Novērot animāciju
|
+ Novērot animāciju
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Plūstoša pāreja starp stāviem uz leju
|
|
||||||
+ Jauns stāvs netiek ģenerēts
|
+ Jauns stāvs netiek ģenerēts
|
||||||
|
+ Plūstoša pāreja starp stāviem uz leju
|
||||||
],
|
],
|
||||||
"Ok",
|
"Ok",
|
||||||
"MT05",
|
"MT05",
|
||||||
@ -1873,7 +1850,7 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
"MT08",
|
"MT08",
|
||||||
[Spēlētāja kustība],
|
[Spēlētāja kustība],
|
||||||
[
|
[
|
||||||
+ Izmantot WASD vadību
|
+ Izmantot "WASD" kustības taustiņus
|
||||||
+ Mēģināt šķērsot sienas
|
+ Mēģināt šķērsot sienas
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -1886,7 +1863,7 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
[
|
[
|
||||||
+ Kompilēt spēli Windows platformai
|
+ Kompilēt spēli Windows platformai
|
||||||
+ Palaist .exe failu
|
+ Palaist .exe failu
|
||||||
+ Veikt pamata funkcionalitātes testu
|
+ Veikt pamata funkcionalitātes testus
|
||||||
],
|
],
|
||||||
[Spēle darbojas Windows vidē bez kļūdām],
|
[Spēle darbojas Windows vidē bez kļūdām],
|
||||||
"Ok",
|
"Ok",
|
||||||
@ -1895,7 +1872,7 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
[
|
[
|
||||||
+ Kompilēt spēli Linux platformai
|
+ Kompilēt spēli Linux platformai
|
||||||
+ Palaist bināro failu
|
+ Palaist bināro failu
|
||||||
+ Veikt pamata funkcionalitātes testu
|
+ Veikt pamata funkcionalitātes testus
|
||||||
],
|
],
|
||||||
[Spēle darbojas Linux vidē bez kļūdām],
|
[Spēle darbojas Linux vidē bez kļūdām],
|
||||||
"Ok",
|
"Ok",
|
||||||
@ -1904,7 +1881,7 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
[
|
[
|
||||||
+ Kompilēt spēli macOS platformai
|
+ Kompilēt spēli macOS platformai
|
||||||
+ Palaist .dmg pakotni
|
+ Palaist .dmg pakotni
|
||||||
+ Veikt pamata funkcionalitātes testu
|
+ Veikt pamata funkcionalitātes testus
|
||||||
],
|
],
|
||||||
[Spēle darbojas macOS vidē bez kļūdām],
|
[Spēle darbojas macOS vidē bez kļūdām],
|
||||||
"Err",
|
"Err",
|
||||||
@ -1913,7 +1890,7 @@ Izvēlētie testu gadījumi ir detalizētāk aprakstīti @tbl:manual-tests[tabul
|
|||||||
[
|
[
|
||||||
+ Kompilēt spēli WASM mērķim
|
+ Kompilēt spēli WASM mērķim
|
||||||
+ Atvērt pārlūkā
|
+ Atvērt pārlūkā
|
||||||
+ Veikt pamata funkcionalitātes testu
|
+ Veikt pamata funkcionalitātes testus
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
+ Spēle ielādējas pārlūkā
|
+ Spēle ielādējas pārlūkā
|
||||||
@ -1945,9 +1922,9 @@ Testēšanas stratēģijā ir ieviesti vairāki pārbaudes līmeņi: dokumentāc
|
|||||||
no drošina piemēra koda pareizību, moduļu testi pārbauda iekšējo
|
no drošina piemēra koda pareizību, moduļu testi pārbauda iekšējo
|
||||||
funkcionalitāti, savukārt testu mapē esošie vienībtesti un integrācijas testi
|
funkcionalitāti, savukārt testu mapē esošie vienībtesti un integrācijas testi
|
||||||
pārbauda sarežģītākus gadījumus.
|
pārbauda sarežģītākus gadījumus.
|
||||||
Automatizēto testu izpildes rezultātu kopsavilkums ir redzams
|
Daļējs automatizēto testu izpildes rezultāts ir redzams @fig:tests-hexlab, savukārt
|
||||||
pieejams @tests-hexlab-full[pielikumā].
|
detalizēts testu izpildes pārskats ir redzams piejams pielikumā (sk.
|
||||||
@fig:tests-hexlab[attēlā], savukārt detalizēts testu izpildes pārskats ir
|
@tests-hexlab-full).
|
||||||
|
|
||||||
Izmantojot "cargo-tarpaulin", testu pārklājums ir $81.69%$ (sk.
|
Izmantojot "cargo-tarpaulin", testu pārklājums ir $81.69%$ (sk.
|
||||||
@tarpaulin-hexlab[pielikumu]), tomēr šis rādītājs
|
@tarpaulin-hexlab[pielikumu]), tomēr šis rādītājs
|
||||||
@ -1999,12 +1976,16 @@ uzturētu vienotu koda formatējumu visā projektā.
|
|||||||
Turklāt visas publiskās funkcijas un datu struktūras "hexlab" bibliotēkā ir
|
Turklāt visas publiskās funkcijas un datu struktūras "hexlab" bibliotēkā ir
|
||||||
dokumentētas#footnote[https://docs.rs/hexlab/latest/hexlab/]<hexlab-docs>.
|
dokumentētas#footnote[https://docs.rs/hexlab/latest/hexlab/]<hexlab-docs>.
|
||||||
Šajā dokumentācijā ir ietverti detalizēti apraksti un lietošanas piemēri, kas ne
|
Šajā dokumentācijā ir ietverti detalizēti apraksti un lietošanas piemēri, kas ne
|
||||||
tikai palīdz saprast kodu, bet programmatūras prasības specifikācija ir
|
tikai palīdz saprast kodu, bet arī atvieglo bibliotēkas testēšanu un kļūdu
|
||||||
izstrādāta, ievērojot LVS 68:1996 standarta "Programmatūras prasību
|
labošanu.
|
||||||
specifikācijas ceļvedis" @lvs_68 un LVS 72:1996 standarta "Ieteicamā prakse
|
|
||||||
programmatūras projektējuma aprakstīšanai" standarta prasības @lvs_72.
|
Programmatūras prasības specifikācija ir izstrādāta, ievērojot LVS 68:1996
|
||||||
Programmatūras projektējuma aprakstā iekļautās aktivitāšu diagrammas ir veidotas
|
standarta "Programmatūras prasību specifikācijas ceļvedis" @lvs_68 un LVS
|
||||||
atbilstoši UML (Unified Modeling Language) 2.5 specifikācijai @omg-uml.
|
72:1996 standarta "Ieteicamā prakse programmatūras projektējuma aprakstīšanai"
|
||||||
|
standarta prasības @lvs_72.
|
||||||
|
// Programmatūras projektējuma aprakstā iekļautās
|
||||||
|
// aktivitāšu diagrammas ir veidotas atbilstoši UML (Unified Modeling Language) 2.5
|
||||||
|
// specifikācijai @omg-uml.
|
||||||
|
|
||||||
== Konfigurācijas pārvaldība
|
== Konfigurācijas pārvaldība
|
||||||
|
|
||||||
@ -2017,7 +1998,7 @@ Rīku konfigurācija ir definēta vairākos failos:
|
|||||||
- laidiena kompilācijas ar iespējotu optimizāciju.
|
- laidiena kompilācijas ar iespējotu optimizāciju.
|
||||||
- "GitHub Actions" darbplūsmas, kas apstrādā @gh-actions:
|
- "GitHub Actions" darbplūsmas, kas apstrādā @gh-actions:
|
||||||
- koda kvalitātes pārbaudes (vienībtesti, statiskie testi, formatēšana,
|
- koda kvalitātes pārbaudes (vienībtesti, statiskie testi, formatēšana,
|
||||||
dokumentācijas izveide).
|
dokumentācijas izveide);
|
||||||
- kompilācijas un izvietotošanas darbplūsma, kas:
|
- kompilācijas un izvietotošanas darbplūsma, kas:
|
||||||
- izveido Windows, Linux, macOS un WebAssembly versijas;
|
- izveido Windows, Linux, macOS un WebAssembly versijas;
|
||||||
- publicē bināros failus GitHub platformā;
|
- publicē bināros failus GitHub platformā;
|
||||||
@ -2030,7 +2011,7 @@ Versiju specifikācija notiek pēc semantiskās versiju atlases (MAJOR.MINOR.PAT
|
|||||||
|
|
||||||
== Darbietilpības novērtējums
|
== Darbietilpības novērtējums
|
||||||
Projekta darbietilpības novērtēšanai tika izmantota QSM (angl. Quantitative
|
Projekta darbietilpības novērtēšanai tika izmantota QSM (angl. Quantitative
|
||||||
Software Management, latv. kvantitatīvā programmatūra vadība) metodoloģija, kas
|
Software Management, latv. kvantitatīvā programmatūras vadība) metodoloģija, kas
|
||||||
balstās uz $550$ verificētu programmatūras projektu datubāzi @QSM.
|
balstās uz $550$ verificētu programmatūras projektu datubāzi @QSM.
|
||||||
Izmantojot "tokei" rīku @tokei, tika veikta detalizēta projekta koda analīze,
|
Izmantojot "tokei" rīku @tokei, tika veikta detalizēta projekta koda analīze,
|
||||||
kas parādija, ka "Maze Ascension" projekts satur $2686$ koda rindiņas (sk. @tokei-maze-ascension), bet
|
kas parādija, ka "Maze Ascension" projekts satur $2686$ koda rindiņas (sk. @tokei-maze-ascension), bet
|
||||||
@ -2079,7 +2060,7 @@ Bevy spēļu dzinēja izmantošana ļāva efektīvi implementēt entitāšu-komp
|
|||||||
sistēmu (ECS), kas nodrošina labu veiktspēju un koda organizāciju.
|
sistēmu (ECS), kas nodrošina labu veiktspēju un koda organizāciju.
|
||||||
Tomēr tika konstatēts, ka Bevy ekosistēma joprojām ir aktīvās izstrādes stadijā,
|
Tomēr tika konstatēts, ka Bevy ekosistēma joprojām ir aktīvās izstrādes stadijā,
|
||||||
ko apliecina darba izstrādes laikā iznākusī jaunā versija (0.15).
|
ko apliecina darba izstrādes laikā iznākusī jaunā versija (0.15).
|
||||||
Ši versija ieviesa vairākas būtiskas izmaiņas, piemēram, "Required Components"
|
Šī versija ieviesa vairākas būtiskas izmaiņas, piemēram, "Required Components"
|
||||||
(latv. nepieciešamo komponenšu) konceptu uzlabotu animāciju sistēmu un daudz ko
|
(latv. nepieciešamo komponenšu) konceptu uzlabotu animāciju sistēmu un daudz ko
|
||||||
citu, kas radīja nepieciešamību pielāgot esošo kodu @bevy-0.15.
|
citu, kas radīja nepieciešamību pielāgot esošo kodu @bevy-0.15.
|
||||||
Šāda strauja attīstība, no vienas puses, nodrošina jaunas iespējas un
|
Šāda strauja attīstība, no vienas puses, nodrošina jaunas iespējas un
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user