mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
fix: typos
This commit is contained in:
parent
e71ddd761a
commit
7217cd110d
3
.github/workflows/typst.yml
vendored
3
.github/workflows/typst.yml
vendored
@ -32,7 +32,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: PDF
|
name: PDF
|
||||||
path: |
|
path: |
|
||||||
*.pdf
|
kval_darbs_kristians_cagulis_kc22015.pdf
|
||||||
|
documentary_page.pdf
|
||||||
- name: Get current date
|
- name: Get current date
|
||||||
id: date
|
id: date
|
||||||
run: echo "DATE=$(date +%Y-%m-%d-%H:%M)" >> $GITHUB_ENV
|
run: echo "DATE=$(date +%Y-%m-%d-%H:%M)" >> $GITHUB_ENV
|
||||||
|
|||||||
218
main.typ
218
main.typ
@ -20,23 +20,26 @@
|
|||||||
)
|
)
|
||||||
#set heading(numbering: none)
|
#set heading(numbering: none)
|
||||||
= Apzīmējumu saraksts
|
= Apzīmējumu saraksts
|
||||||
/ Audio: Skaņas komponentes, kas ietver gan skaņas efektus, gan fona mūziku;
|
/ Audio: skaņas komponentes, kas ietver gan skaņas efektus, gan fona mūziku;
|
||||||
/ 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-komponenšu sistēma (angl. Entity-Component-System)@ecs;
|
/ ECS: entitāšu-komponenšu sistēma (angl. Entity-Component-System)@ecs;
|
||||||
/ Interpolācija: starpvērtību atrašana pēc funkcijas doto vērtību virknes;
|
/ Entitāte: unikāls identifikators, kas apvieno saistītās komponentes;
|
||||||
/ 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;
|
/ 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;
|
||||||
/ Laidiens: Programmatūras versija, kas ir gatava izplatīšanai lietotājiem un satur īpašas funkcijas, uzlabojumus vai labojumus;
|
/ Komponente: datu struktūra, kas satur tikai datus bez loģikas;
|
||||||
|
/ 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: 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: 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: datu algoritmiskas izstrādes metode, kurā tiek kombinēts cilvēka radīts saturs un algoritmi, kas apvienoti ar datora ģenerētu nejaušību;
|
/ 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ēts vizuāla izvade;
|
/ Renderēšana: process, kurā tiek ģenerēta vizuāla izvade;
|
||||||
/ Režģis: Strukturēts šūnu izkārtojums, kas veido spēles pasaules pamata struktūru;
|
/ Resurss: globāli pieejama datu struktūra, kas nav piesaistīta konkrētai entitātei;
|
||||||
/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā;
|
/ Režģis: strukturēts šūnu izkārtojums, kas veido spēles pasaules pamata struktūru;
|
||||||
/ Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai;
|
/ Sistēma: loģikas vienība, kas apstrādā entitātes ar specifiskām komponentēm;
|
||||||
/ Šūna: Sešstūraina režģa viena pozīcija, kas definē telpu, kuru var aizņemt viena plāksne.
|
/ Spēlētājs: entitāte, kas reprezentē lietotāja vadāmo objektu spēlē;
|
||||||
|
/ Sēkla: skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai;
|
||||||
|
/ Šūna: sešstūraina režģa viena pozīcija, kas definē telpu, kuru var aizņemt viena plāksne;
|
||||||
/ WASM: WebAssembly -- zema līmeņa assemblera tipa kods, kas var darboties modernos tīmekļa pārlūkos.
|
/ WASM: WebAssembly -- zema līmeņa assemblera tipa kods, kas var darboties modernos tīmekļa pārlūkos.
|
||||||
|
|
||||||
= Ievads
|
= Ievads
|
||||||
@ -64,7 +67,7 @@ nodrošina, ka:
|
|||||||
- uzglabāšanas prasības tiek samazinātas līdz minimumam, ģenerējot labirintus reāllaikā.
|
- uzglabāšanas prasības tiek samazinātas līdz minimumam, ģenerējot labirintus reāllaikā.
|
||||||
|
|
||||||
#indent-par[
|
#indent-par[
|
||||||
Spēlētāju uzdevums ir pārvietoties pa šiem procesuāli ģenerētajiem labirintiem,
|
Spēlētāju uzdevums ir pārvietoties pa šiem procedurāli ģenerētajiem labirintiem,
|
||||||
lai sasniegtu katra līmeņa beigas. Turpinot progresēt, spēlētāji saskaras ar
|
lai sasniegtu katra līmeņa beigas. Turpinot progresēt, spēlētāji saskaras ar
|
||||||
arvien sarežģītākiem labirintiem, kuros nepieciešama stratēģiskā domāšana,
|
arvien sarežģītākiem labirintiem, kuros nepieciešama stratēģiskā domāšana,
|
||||||
izpēte un papildu prasmju izmantošana.
|
izpēte un papildu prasmju izmantošana.
|
||||||
@ -76,9 +79,9 @@ pieredzi, veicinot izpēti un eksperimentēšanu ar dažādām spēju kombināci
|
|||||||
radot dinamiskākus un aizraujošākus spēles scenārijus.
|
radot dinamiskākus un aizraujošākus spēles scenārijus.
|
||||||
|
|
||||||
No tehniskā viedokļa darbā tiek pētīta šo funkciju īstenošana, izmantojot
|
No tehniskā viedokļa darbā tiek pētīta šo funkciju īstenošana, izmantojot
|
||||||
Bevy entitāšu-komponentu sistēmas (tuprmāk tekstā -- ECS) arhitektūru.
|
Bevy entitāšu-komponenšu sistēmas (turpmāk tekstā -- ECS) arhitektūru.
|
||||||
Tas ietver stabilu spēles vides sistēmu izstrādi, stāvokļa pārvaldības
|
Tas ietver stabilu spēles vides sistēmu izstrādi, stāvokļa pārvaldības
|
||||||
mehānismus un efektīvu Bevy iebūvēto funkcionalitāšu izmantošanu.
|
mehānismus un efektīvu Bevy iebūvēto funkciju izmantošanu.
|
||||||
|
|
||||||
No darbības sfēras apzināti izslēgta daudzspēlētāju funkcionalitāte un sarežģīti
|
No darbības sfēras apzināti izslēgta daudzspēlētāju funkcionalitāte un sarežģīti
|
||||||
grafiskie efekti, koncentrējoties uz pulētu viena spēlētāja pieredzi ar skaidru,
|
grafiskie efekti, koncentrējoties uz pulētu viena spēlētāja pieredzi ar skaidru,
|
||||||
@ -171,39 +174,25 @@ 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,#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ē. Izmantojot šīs platformas, datorspēle gūst dažādu maksājumu modeļu
|
visā pasaulē.
|
||||||
un kopienas iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un
|
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.
|
atpazīstamību.
|
||||||
|
|
||||||
/* Lai gan spēle neizmanto mākoņpakalpojumus datu uzglabāšanai vai
|
|
||||||
analīzei, CI/CD cauruļvads nodrošina, ka atjauninājumus un jaunas funkcijas var
|
|
||||||
izvietot efektīvi un droši. Šāda konfigurācija ļauj ātri veikt iterāciju un
|
|
||||||
nepārtraukti uzlabot spēli, nodrošinot, ka spēlētājiem vienmēr ir pieejama
|
|
||||||
jaunākā versija ar jaunākajiem uzlabojumiem un kļūdu labojumiem. */
|
|
||||||
|
|
||||||
== Darījumprasības
|
== Darījumprasības
|
||||||
Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasību
|
Sistēmas izstrādē tiek izvirzītas sekojošas darījumprasības, kas nodrošinās
|
||||||
īstenošanai, lai nodrošinātu stabilu un saistošu lietotāja pieredzi:
|
kvalitatīvu lietotāja pieredzi:
|
||||||
|
|
||||||
+ Spēles progresēšana un līmeņu pārvaldība: Sistēma automātiski pārvaldīs
|
- Līmeņu pārvaldība: Sistēma nodrošinās automātisku spēles līmeņu pārvaldību un
|
||||||
spēlētāju virzību pa spēles līmeņiem, nodrošinot vienmērīgu pāreju, kad
|
vienmērīgu pāreju starp tiem, veidojot pakāpenisku grūtības pieaugumu.
|
||||||
spēlētāji progresē un saskaras ar jauniem izaicinājumiem. Progress tiks
|
- Tieša piekļuve: Spēle būs pieejama bez lietotāja konta izveides vai
|
||||||
saglabāts lokāli spēlētāja ierīcē.
|
autentifikācijas, nodrošinot tūlītēju piekļuvi spēles saturam.
|
||||||
+ Nevainojama piekļuve spēlēm: Spēlētāji varēs piekļūt spēlei un spēlēt to bez
|
- Platformu atbalsts: Sistēma tiks izstrādāta ar daudzplatformu atbalstu,
|
||||||
nepieciešamības izveidot lietotāja kontu vai pieteikties. Tas nodrošina
|
ietverot Linux, macOS, Windows un WebAssembly platformas.
|
||||||
netraucētu piekļuvi spēlei, ļaujot spēlētājiem nekavējoties sākt spēlēt.
|
- Kopienas integrācija: Izmantojot itch.io@itch-io platformu, tiks nodrošināta
|
||||||
// + Paziņošanas sistēma: Spēlētāji saņems paziņojumus par svarīgiem spēles
|
spēlētāju atsauksmju apkopošana un kopienas atbalsts.
|
||||||
// atjauninājumiem, sasniegumiem un citu svarīgu informāciju, lai saglabātu viņu
|
- Nepārtraukta izstrāde: Izmantojot CI/CD risinājumus, tiks nodrošināta regulāra
|
||||||
// iesaisti un informētību.
|
spēles atjaunināšana un uzturēšana.
|
||||||
+ 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 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
|
||||||
@ -212,9 +201,6 @@ 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.
|
||||||
|
|
||||||
/* "Sistēma" lietotājs ir atbildīgs par notikumu apstrādātāju izsaukšanu, kas
|
|
||||||
nepieciešams automātiskai spēles gaitas pārvaldībai. */
|
|
||||||
|
|
||||||
Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD
|
Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņa DPD
|
||||||
(sk. @fig:dpd-0).
|
(sk. @fig:dpd-0).
|
||||||
|
|
||||||
@ -236,10 +222,29 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
) <dpd-0>
|
) <dpd-0>
|
||||||
|
|
||||||
== Vispārējie ierobežojumi
|
== Vispārējie ierobežojumi
|
||||||
|
// + Izstrādes vides un tehnoloģijas ierobežojumi:
|
||||||
|
// + Programmēšanas valodas un Bevy spēles dzinēja tehniskie ierobežojumi;
|
||||||
|
// + Responsivitāte;
|
||||||
|
// + Starpplatformu savietojamība: Linux, macOS, Windows un WebAssembly.
|
||||||
|
|
||||||
|
|
||||||
+ Izstrādes vides un tehnoloģijas ierobežojumi:
|
+ Izstrādes vides un tehnoloģijas ierobežojumi:
|
||||||
+ Programmēšanas valodas un Bevy spēles dzinēja tehniskie ierobežojumi;
|
+ Bevy dzinēja tehniskie ierobežojumi:
|
||||||
+ Responsivitāte;
|
+ ECS arhitektūras specifika un tās ierobežojumi datu organizācijā;
|
||||||
+ Starpplatformu savietojamība: Linux, macOS, Windows un WebAssembly.
|
+ "Render Graph" sistēmas ierobežojumi grafisko elementu attēlošanā;
|
||||||
|
+ atkarība no "wgpu"#footnote[https://wgpu.rs/] grafikas bibliotēkas iespējām.
|
||||||
|
+ Rust programmēšanas valodas ierobežojumi:
|
||||||
|
+ stingra atmiņas pārvaldība (angl. memory management) un īpašumtiesību (angl. ownership) sistēma;
|
||||||
|
+ kompilācijas laika pārbaudes un to ietekme uz izstrādes procesu;
|
||||||
|
+ WebAssembly kompilācijas specifika.
|
||||||
|
+ Platformu atbalsta ierobežojumi:
|
||||||
|
+ Nepieciešamība nodrošināt savietojamību ar:
|
||||||
|
+ darbvirsmas platformām (Linux, macOS, Windows);
|
||||||
|
+ tīmekļa pārlūkprogrammām caur WebAssembly.
|
||||||
|
+ Platformu specifiskās prasības attiecībā uz:
|
||||||
|
+ grafikas renderēšanu;
|
||||||
|
+ ievades apstrādi;
|
||||||
|
+ veiktspējas optimizāciju.
|
||||||
|
|
||||||
#indent-par[
|
#indent-par[
|
||||||
Dokumentācijas izstrādei ir izmantots Typst rīks, kas nodrošina efektīvu darbu
|
Dokumentācijas izstrādei ir izmantots Typst rīks, kas nodrošina efektīvu darbu
|
||||||
@ -250,11 +255,11 @@ 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
|
- 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.
|
palaist uz Bevy spēles dzinēja balstītas spēles;
|
||||||
- ierīcei jāatbalsta WebGL2 #footnote("https://registry.khronos.org/webgl/specs/latest/2.0/"),
|
- ierīcei jāatbalsta WebGL2 #footnote("https://registry.khronos.org/webgl/specs/latest/2.0/");
|
||||||
lai nodrošinātu pareizu atveidošanu @webgl2.
|
lai nodrošinātu pareizu atveidošanu @webgl2;
|
||||||
- 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 $800 times 600$ pikseļi.
|
||||||
- Veiktspējas atkarība:
|
- Veiktspējas atkarība:
|
||||||
- Spēle ir atkarīga no Bevy spēles dzinēja (0.15).
|
- Spēle ir atkarīga no Bevy spēles dzinēja (0.15).
|
||||||
- Veiksmīga kompilēšana un izvietošana ir atkarīga no CI/CD darbplūsmai saderības ar:
|
- Veiksmīga kompilēšana un izvietošana ir atkarīga no CI/CD darbplūsmai saderības ar:
|
||||||
@ -499,7 +504,7 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
|||||||
|
|
||||||
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 "egui"@bevy-egui un "inspector-egui"@bevy-inspector-egui
|
Šis modulis, izmantojot "bevy_egui"@bevy-egui un "inspector-egui"@bevy-inspector-egui
|
||||||
bibliotēkas, izveido logu "Maze Controls" (labirinta vadības
|
bibliotēkas, izveido logu "Maze Controls" (labirinta vadības
|
||||||
elementi), kurā tiek parādītas dažādas
|
elementi), kurā tiek parādītas dažādas
|
||||||
konfigurācijas opcijas, piemēram, sēkla, rādiuss, augstums, labirinta izmērs,
|
konfigurācijas opcijas, piemēram, sēkla, rādiuss, augstums, labirinta izmērs,
|
||||||
@ -513,12 +518,6 @@ 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.
|
||||||
|
|
||||||
// Moduļa funkcionalitāti var vizualizēt, izmantojot datu plūsmas diagrammu (DFD),
|
|
||||||
// kurā būtu parādītas ievades no spēles pasaules (piemēram, pašreizējā stāva un
|
|
||||||
// labirinta konfigurācija), apstrāde lietotāja saskarnes sistēmā un izejas kā
|
|
||||||
// atjauninātas labirinta konfigurācijas un respawn notikumi.
|
|
||||||
|
|
||||||
|
|
||||||
#function-table(
|
#function-table(
|
||||||
"Labirinta pārvadības saskarne",
|
"Labirinta pārvadības saskarne",
|
||||||
"IRMF01",
|
"IRMF01",
|
||||||
@ -526,7 +525,7 @@ gala lietotāji nevar piekļūt šīm uzlabotajām konfigurācijas opcijām.
|
|||||||
[
|
[
|
||||||
Ievades dati tiek saņemti no pasaules resursiem un komponentēm:
|
Ievades dati tiek saņemti no pasaules resursiem un komponentēm:
|
||||||
+ Labirinta spraudņa resurss;
|
+ 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.
|
||||||
@ -563,7 +562,7 @@ Modulis sastāv no divām galvenajām funkcijām (sk. @fig:dpd-2-floor):
|
|||||||
stāvu kustības (sk. @tbl:floor-F01) un stāvu
|
stāvu kustības (sk. @tbl:floor-F01) un stāvu
|
||||||
pārejas apstrādes (sk. @tbl:floor-F02).
|
pārejas apstrādes (sk. @tbl:floor-F02).
|
||||||
Stāvu kustības sistēma nodrošina plūstošu vertikālo pārvietošanos starp
|
Stāvu kustības sistēma nodrošina plūstošu vertikālo pārvietošanos starp
|
||||||
līmeņiem, savukārt pārejas apstrādes sistema koordinē pārejas starp pašreizējo
|
līmeņiem, savukārt pārejas apstrādes sistēma koordinē pārejas starp pašreizējo
|
||||||
un nākamo stāvu, reaģējot uz "TransitionFloor" notikumu (sk. @tbl:events-floor).
|
un nākamo stāvu, reaģējot uz "TransitionFloor" notikumu (sk. @tbl:events-floor).
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
@ -633,7 +632,7 @@ un nākamo stāvu, reaģējot uz "TransitionFloor" notikumu (sk. @tbl:events-flo
|
|||||||
=== Labirinta ģenerēšanas modulis
|
=== Labirinta ģenerēšanas modulis
|
||||||
|
|
||||||
Moduļa funkcionalitāte ir izmantota sešstūraina labirinta ģenerēšanai,
|
Moduļa funkcionalitāte ir izmantota sešstūraina labirinta ģenerēšanai,
|
||||||
balstoties uz Amit Patel's "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 izstrādē.
|
||||||
@ -686,7 +685,7 @@ programmu.
|
|||||||
+ 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ē stākuma prozī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ļš.
|
||||||
@ -718,7 +717,8 @@ Funkcija ģenerē jaunu labirintu, izmantojot norādīto konfigurāciju, un izvi
|
|||||||
to atbilstošā augstumā spēles pasaulē.
|
to atbilstošā augstumā spēles pasaulē.
|
||||||
|
|
||||||
Labirinta atjaunošanas funkcija ļauj pārģenerēt esošā stāva labirintu,
|
Labirinta atjaunošanas funkcija ļauj pārģenerēt esošā stāva labirintu,
|
||||||
saglabājot to pašu stāva numuru un pozīciju telpā nemainot entitātes ID.
|
saglabājot to pašu stāva numuru un pozīciju telpā nemainot entitātes
|
||||||
|
identifikatoru.
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
caption: [Labirinta pārvaldības moduļa 2. līmeņa DPD],
|
caption: [Labirinta pārvaldības moduļa 2. līmeņa DPD],
|
||||||
@ -808,7 +808,8 @@ Spēlētāja kustība tiek realizēta divās daļās: ievades apstrāde
|
|||||||
Ievades apstrādes funkcija pārbauda tastatūras ievadi
|
Ievades apstrādes funkcija pārbauda tastatūras ievadi
|
||||||
un, ņemot vērā labirinta sienu izvietojumu, nosaka nākamo kustības mērķi.
|
un, ņemot vērā labirinta sienu izvietojumu, nosaka nākamo kustības mērķi.
|
||||||
Kustības izpildes funkcija nodrošina plūstošu pārvietošanos uz mērķa pozīciju,
|
Kustības izpildes funkcija nodrošina plūstošu pārvietošanos uz mērķa pozīciju,
|
||||||
izmantojot interpolāciju starp pašreizējo un mērķa pozīciju.
|
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.
|
||||||
|
|
||||||
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 (#link(<player-F04>)[SPMF04]) 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
|
||||||
@ -989,22 +990,23 @@ punktiem, funkcija izsauc atbilstošu pārejas notikumu.
|
|||||||
) <player-F04>
|
) <player-F04>
|
||||||
|
|
||||||
=== Spēles stāvokļa pārvaldības modulis
|
=== Spēles stāvokļa pārvaldības modulis
|
||||||
|
|
||||||
Spēles stāvokļa pārvaldības modulis nodrošina spēles dažādu stāvokļu pārvaldību
|
Spēles stāvokļa pārvaldības modulis nodrošina spēles dažādu stāvokļu pārvaldību
|
||||||
un pārejas starp tiem. Modulis sastāv no trim galvenajām funkcijām: spēles
|
un pārejas starp tiem. Modulis sastāv no trim galvenajām funkcijām:
|
||||||
sākšana (@tbl:screen-F01), atgriešanās uz sākumekrānu
|
spēles sākšana (@tbl:screen-F01),
|
||||||
(@tbl:screen-F02) un sākumekrāna attēlošanas
|
atgriešanās uz sākumekrānu (@tbl:screen-F02) un
|
||||||
(@tbl:screen-F03). Katra no šīm funkcijām apstrādā specifiskus
|
sākumekrāna attēlošanas (@tbl:screen-F03).
|
||||||
lietotāja ievades datus un atbilstoši atjaunina spēles stāvokli operatīvajā
|
Katra no šīm funkcijām apstrādā specifiskus lietotāja ievades datus un
|
||||||
atmiņā.
|
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 caur diviem galvenajiem ievades veidiem: 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
|
||||||
sistēmas, kad lietotājs izvēlas sākt jaunu spēli. Atgriešanās funkcija
|
sistēmas, kad lietotājs izvēlas sākt jaunu spēli.
|
||||||
apstrādā lietotāja pieprasījumu pārtraukt aktīvo spēli un atgriežas uz
|
Atgriešanās funkcija apstrādā lietotāja pieprasījumu pārtraukt aktīvo spēli un
|
||||||
sākumekrānu.
|
atgriežas uz sākumekrānu.
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
caption: [Spēles stāvokļa pārvaldības moduļa 2. līmeņa DPD],
|
caption: [Spēles stāvokļa pārvaldības moduļa 2. līmeņa DPD],
|
||||||
@ -1218,12 +1220,13 @@ Uz sistēmas veiktspēju ir sekojošas prasības:
|
|||||||
- Jebkura izmēra labirintam jātiek uzģenerētam ātrāk kā 1 sekundē.
|
- Jebkura izmēra labirintam jātiek uzģenerētam ātrāk kā 1 sekundē.
|
||||||
- Spēlei jāstartējas ātrāk par 3 sekundēm.
|
- Spēlei jāstartējas ātrāk par 3 sekundēm.
|
||||||
- Spēlei jādarbojas ar vismaz 60 kadriem sekundē.
|
- Spēlei jādarbojas ar vismaz 60 kadriem sekundē.
|
||||||
- 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ā 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.
|
||||||
- Saglabāšana: spēles progresam jātiek automātiski saglabātam pēc katra līmeņa.
|
// - 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.
|
// - Atjaunošanās: spēlei jāspēj atjaunoties pēc negaidītas aizvēršanas.
|
||||||
|
|
||||||
=== Atribūti
|
=== Atribūti
|
||||||
==== Izmantojamība
|
==== Izmantojamība
|
||||||
@ -1256,7 +1259,7 @@ ir noteiktas, lai nodrošinātu plašu pieejamību, vienlaikus saglabājot veikt
|
|||||||
== Datu struktūru projektējums
|
== Datu struktūru projektējums
|
||||||
|
|
||||||
Spēle ir veidota, izmantojot Bevy spēles dzinēju, kas īstenu
|
Spēle ir veidota, izmantojot Bevy spēles dzinēju, kas īstenu
|
||||||
entitāšu komponenšu sistēmu (ECS) arhitektūras modeli.
|
entitāšu-komponenšu sistēmu (ECS) arhitektūras modeli.
|
||||||
Šis modelis sadala spēles loģiku trīs galvenajās daļās: entitātes jeb spēles
|
Šis modelis sadala spēles loģiku trīs galvenajās daļās: entitātes jeb spēles
|
||||||
objekti, komponentes jeb dati un sistēmas -- loģika, kas darbojas ar entitātēm
|
objekti, komponentes jeb dati un sistēmas -- loģika, kas darbojas ar entitātēm
|
||||||
ar konkrētām komponentēm @ecs @bevy-ecs @bevy-cheatbook[nod. ~14.7].
|
ar konkrētām komponentēm @ecs @bevy-ecs @bevy-cheatbook[nod. ~14.7].
|
||||||
@ -1666,14 +1669,14 @@ atgriežas un mēģina citu ceļu.
|
|||||||
) <floor-transition-diagram>
|
) <floor-transition-diagram>
|
||||||
|
|
||||||
|
|
||||||
=== Plākšņu pārvaldas sistēma
|
=== Plākšņu pārvaldības sistēma
|
||||||
|
|
||||||
Projekta sākotnējā plānošanas posmā tika apsvēra iespēja labirinta elementu
|
Projekta sākotnējā plānošanas posmā tika apsvēra iespēja labirinta elementu
|
||||||
pārvaldībai izmantot
|
pārvaldībai izmantot
|
||||||
"`bevy_ecs_tilemap`" bibliotēku.#footnote[https://crates.io/crates/bevy_ecs_tilemap]<bevy-ecs-tilemap>
|
"bevy_ecs_tilemap" bibliotēku.#footnote[https://crates.io/crates/bevy_ecs_tilemap]<bevy-ecs-tilemap>
|
||||||
Tomēr pēc rūpīgas izvērtēšanas tika secināts, ka tā neatbilst konkrētajam
|
Tomēr pēc rūpīgas izvērtēšanas tika secināts, ka tā neatbilst konkrētajam
|
||||||
projekta lietojuma gadījumam sekojošu iemeslu dēļ:
|
projekta lietojuma gadījumam sekojošu iemeslu dēļ:
|
||||||
+ Uz failiem balstīta plākšņu ielāde: "`bevy_ecs_tilemap`" galvenokārt paļaujas uz
|
+ Uz failiem balstīta plākšņu ielāde: "bevy_ecs_tilemap" galvenokārt paļaujas uz
|
||||||
plākšņu ielādi no ārējiem failiem. Šajā projektā ir nepieciešami dinamiski,
|
plākšņu ielādi no ārējiem failiem. Šajā projektā ir nepieciešami dinamiski,
|
||||||
procedurāli ģenerēti labirinti, tāpēc šī pieeja nav īsti piemērota.
|
procedurāli ģenerēti labirinti, tāpēc šī pieeja nav īsti piemērota.
|
||||||
+ Elastības ierobežojumi: bibliotēkas plākšņu datu struktūra nav viegli
|
+ Elastības ierobežojumi: bibliotēkas plākšņu datu struktūra nav viegli
|
||||||
@ -1681,14 +1684,14 @@ projekta lietojuma gadījumam sekojošu iemeslu dēļ:
|
|||||||
sarežģītākām telpiskām attiecībām starp šūnām.
|
sarežģītākām telpiskām attiecībām starp šūnām.
|
||||||
+ Prasības attiecībā uz sienu veidošanu: katrai sistēmas labirinta šūnai
|
+ Prasības attiecībā uz sienu veidošanu: katrai sistēmas labirinta šūnai
|
||||||
var būt 0-6 sienas, kas tiek ģenerētas nejauši. Šādu dinamisku sienu ģenerēšanas
|
var būt 0-6 sienas, kas tiek ģenerētas nejauši. Šādu dinamisku sienu ģenerēšanas
|
||||||
līmeni nav viegli sasniegt izmantojot "`bevy_ecs_tilemap`".
|
līmeni nav viegli sasniegt izmantojot "bevy_ecs_tilemap".
|
||||||
|
|
||||||
#indent-par[
|
#indent-par[
|
||||||
Tā vietā, lai izmantotu "`bevy_ecs_tilemap`", tika izlemts izstrādāt pielāgotu
|
Tā vietā, lai izmantotu "bevy_ecs_tilemap", tika izlemts izstrādāt pielāgotu
|
||||||
risinājumu, kas tieši integrējas ar labirinta ģenerēšanas algoritmu. Šī
|
risinājumu, kas tieši integrējas ar labirinta ģenerēšanas algoritmu. Šī
|
||||||
pieeja ļauj:
|
pieeja ļauj:
|
||||||
]
|
]
|
||||||
- vienkāršāku integrācija ar procesuālo labirintu ģenerēšanu;
|
- vienkāršāku integrācija ar procedurālo labirintu ģenerēšanu;
|
||||||
- optimālāku veiktspēja projekta lietošanas gadījumam;
|
- optimālāku veiktspēja projekta lietošanas gadījumam;
|
||||||
- lielāku kontroli pār labirinta vizuālo attēlojumu.
|
- lielāku kontroli pār labirinta vizuālo attēlojumu.
|
||||||
|
|
||||||
@ -1726,7 +1729,7 @@ pogas.
|
|||||||
=== Spēles skats
|
=== Spēles skats
|
||||||
|
|
||||||
Spēles skats apvieno pašu spēles pasauli ar minimālistisku lietotāja saskarni
|
Spēles skats apvieno pašu spēles pasauli ar minimālistisku lietotāja saskarni
|
||||||
(sk, @fig:game-ui).
|
(sk. @fig:game-ui).
|
||||||
Centrālo daļu aizņem spēles pasaule ar sešstūra labirintu, kas veido spēles
|
Centrālo daļu aizņem spēles pasaule ar sešstūra labirintu, kas veido spēles
|
||||||
galveno interaktīvo elementu.
|
galveno interaktīvo elementu.
|
||||||
Ekrāna kreisajā apakšējā stūrī ir izvietoti papildspēju statusa indikatori, kas
|
Ekrāna kreisajā apakšējā stūrī ir izvietoti papildspēju statusa indikatori, kas
|
||||||
@ -1741,7 +1744,7 @@ atjaunošanās laiku.
|
|||||||
|
|
||||||
=== Izstrādes rīki
|
=== Izstrādes rīki
|
||||||
Izstrādes rīki, kas redzami @fig:dev-tools-ui[attēlā], ir implementēti
|
Izstrādes rīki, kas redzami @fig:dev-tools-ui[attēlā], ir implementēti
|
||||||
izmantojot "egui" bibliotēku @bevy_egui.
|
izmantojot "bevy_egui" bibliotēku @bevy_egui.
|
||||||
Pirmais "Bevy Inspector Egui" noklusētais skats @bevy-inspector-egui, kas
|
Pirmais "Bevy Inspector Egui" noklusētais skats @bevy-inspector-egui, kas
|
||||||
nodrošina detalizētu piekļuvi spēles entitāšu hierarhijai, komponenšu
|
nodrošina detalizētu piekļuvi spēles entitāšu hierarhijai, komponenšu
|
||||||
inspektoram un resursu pārvaldniekam.
|
inspektoram un resursu pārvaldniekam.
|
||||||
@ -1763,21 +1766,12 @@ Statiskā testēšana ir svarīga daļa no projekta kvalitātes nodrošināšana
|
|||||||
"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. Papildus noklusētajiem noteikumiem, tika aktivizēti
|
neoptimālus risinājumus. Papildus noklusētajiem noteikumiem, tika aktivizēti
|
||||||
stingrāki koda kvalitātes pārbaudes līmeņi: "`pedantic`" režīms nodrošina
|
stingrāki koda kvalitātes pārbaudes līmeņi: "pedantic" režīms nodrošina
|
||||||
padziļinātu koda stila pārbaudi, "`nursery`" aktivizē eksperimentālās pārbaudes,
|
padziļinātu koda stila pārbaudi, "nursery" aktivizē eksperimentālās pārbaudes,
|
||||||
un "`unwrap_used`" un "`expect_used`" brīdina par potenciāli nedrošu kļūdu
|
un "unwrap_used" un "expect_used" brīdina par potenciāli nedrošu kļūdu
|
||||||
apstrādi. Šie papildu noteikumi palīdz uzturēt augstāku koda kvalitāti un
|
apstrādi. Šie papildu noteikumi palīdz uzturēt augstāku koda kvalitāti un
|
||||||
samazināt potenciālo kļūdu skaitu @clippy.
|
samazināt potenciālo kļūdu skaitu @clippy.
|
||||||
|
|
||||||
|
|
||||||
/* Programmatūras statiskai testēšanai ir izmantots rīks „clang-tidy“, kas analizē
|
|
||||||
programmatūru, meklējot kļūdas un problēmas pirmkodā. [12] Rīks satur vairākas specifiskas
|
|
||||||
problēmu kopas, kas var tikt izmantotas analīzē. Tika izmantota „clang-analyzer“ problēmu
|
|
||||||
kopa. Vieglākai statisko testu darbināšanai tika izmantots vienkāršs programmēšanas valodas
|
|
||||||
„Python“ skripts, kas atlasa visus failus, kuru paplašinājums ir „cpp“ (valodas „C++“ pirmkoda
|
|
||||||
fails) vai „h“ (galvenes fails) un darbina statiskās analīzes rīku ar katru failu atsevišķi (sk.
|
|
||||||
izpildes rezultātu attēlā 4.3.). */
|
|
||||||
|
|
||||||
== 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ā
|
||||||
@ -1950,8 +1944,8 @@ Automatizēto testu izpildes rezultātu kopsavilkums ir redzams
|
|||||||
pieejams @tests-hexlab-full[pielikumā].
|
pieejams @tests-hexlab-full[pielikumā].
|
||||||
@fig:tests-hexlab[attēlā], savukārt detalizēts testu izpildes pārskats ir
|
@fig:tests-hexlab[attēlā], savukārt detalizēts testu izpildes pārskats ir
|
||||||
|
|
||||||
Izmantojot "cargo-tarpaulin", testu pārklājums ir $81.69%$ (116 no 142
|
Izmantojot "cargo-tarpaulin", testu pārklājums ir $81.69%$ (sk.
|
||||||
iekļautajām rindiņām) (sk. @tarpaulin-hexlab[pielikumu]), tomēr šis rādītājs
|
@tarpaulin-hexlab[pielikumu]), tomēr šis rādītājs
|
||||||
pilnībā neatspoguļo faktisko pārklājumu, jo rīkam ir ierobežojumi attiecībā uz
|
pilnībā neatspoguļo faktisko pārklājumu, jo rīkam ir ierobežojumi attiecībā uz
|
||||||
"inline"#footnote[https://doc.rust-lang.org/nightly/reference/attributes/codegen.html?highlight=inline]
|
"inline"#footnote[https://doc.rust-lang.org/nightly/reference/attributes/codegen.html?highlight=inline]
|
||||||
funkcijām un citi tehniski ierobežojumi @cargo-tarpaulin.
|
funkcijām un citi tehniski ierobežojumi @cargo-tarpaulin.
|
||||||
@ -1994,9 +1988,8 @@ Viens no galvenajiem rīkiem, kas tiek izmantots ir "Clippy"@clippy, kas analiz
|
|||||||
iespējamās problēmas un iesaka uzlabojumus (sk. @static-tests nodaļu).
|
iespējamās problēmas un iesaka uzlabojumus (sk. @static-tests nodaļu).
|
||||||
|
|
||||||
Kopā ar "Clippy" tiek arī izmantots "Rustfmt" @rustfmt, koda formatētājs, lai
|
Kopā ar "Clippy" tiek arī izmantots "Rustfmt" @rustfmt, koda formatētājs, lai
|
||||||
uzturētu vienotu koda formatējumu visā projektā. Šis rīks automātiski formatē
|
uzturētu vienotu koda formatējumu visā projektā.
|
||||||
kodu saskaņā ar Rust stila
|
Šis rīks automātiski formatē kodu saskaņā ar Rust stila vadlīnijām @rust-style.
|
||||||
vadlīnijām @rust-style.
|
|
||||||
|
|
||||||
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>.
|
||||||
@ -2035,15 +2028,14 @@ 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ūra 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 $1927$ koda rindiņas, bet
|
kas parādija, ka "Maze Ascension" projekts satur $1927$ koda rindiņas (sk. @tokei-maze-ascension), bet
|
||||||
saistītā "hexlab" bibliotēka -- $979$ rindiņas, kopā veidojot $2906$ loģiskās koda
|
saistītā "hexlab" bibliotēka -- $979$ rindiņas (sk. @tokei-hexlab), kopā veidojot $2906$ loģiskās koda
|
||||||
rindiņas, neiekļaujot tukšās rindiņas un komentārus (sk. @tokei-maze-ascension[]
|
rindiņas, neiekļaujot tukšās rindiņas un komentārus .
|
||||||
un @tokei-hexlab[pielikumus]).
|
|
||||||
|
|
||||||
Saskaņā ar QSM etalontabulu "Business Systems Implementation Unit (New and
|
Saskaņā ar QSM etalontabulu "Business Systems Implementation Unit (New and
|
||||||
Modified IU) Benchmarks", pirmās kvartiles projekti ($25%$ mazākie no $550$
|
Modified IU) Benchmarks", pirmās kvartiles projekti ($25%$ mazākie no $550$
|
||||||
biznesa sistēmu projektiem) vidēji ilgst $3.2$ mēnešus, ar vidēji $1.57$
|
biznesa sistēmu projektiem) vidēji ilgst $3.2$ mēnešus, ar vidēji $1.57$
|
||||||
izstrādātājiem un mediāno projekta apjomu -- $1889$ koda rindiņas @QSM.
|
izstrādātājiem un mediāna projekta apjomu -- $1889$ koda rindiņas @QSM.
|
||||||
Ņemot vērā, ka projekta autors ir students ar ierobežotu pieredzi, tiek
|
Ņemot vērā, ka projekta autors ir students ar ierobežotu pieredzi, tiek
|
||||||
izmantota pirmās kvartiles $50%$ diapazona augšējā robeža -- $466$ rindiņas
|
izmantota pirmās kvartiles $50%$ diapazona augšējā robeža -- $466$ rindiņas
|
||||||
personmēnesī.
|
personmēnesī.
|
||||||
@ -2051,11 +2043,11 @@ Tādējādi minimālais nepieciešamais koda apjoms trīs mēnešu darbam būtu
|
|||||||
= 1398$ rindiņas.
|
= 1398$ rindiņas.
|
||||||
|
|
||||||
Projekta faktiskais koda apjoms ($2906$ rindiņas) vairāk nekā divkārt pārsniedz šo
|
Projekta faktiskais koda apjoms ($2906$ rindiņas) vairāk nekā divkārt pārsniedz šo
|
||||||
minimālo slieksni, kas nepārprotami apliecina projekta atbilstību trīs mēnešu
|
minimālo slieksni, kas apliecina projekta atbilstību trīs mēnešu darbietilpības
|
||||||
darbietilpības prasībai.
|
prasībai.
|
||||||
Turklāt jāņem vērā projekta papildu sarežģītības faktori:
|
Turklāt jāņem vērā projekta papildu sarežģītības faktori:
|
||||||
- Bevy dzinēja un ECS arhitektūras apgūšana;
|
- Bevy dzinēja un ECS arhitektūras apgūšana;
|
||||||
- Procesuālās ģenerēšanas algoritma izstrāde "hexlab" bibliotēkai;
|
- Procedurālās ģenerēšanas algoritma izstrāde "hexlab" bibliotēkai;
|
||||||
- "hexlab" bibliotēkas izstrāde ar plašu dokumentāciju, ieskaitot API
|
- "hexlab" bibliotēkas izstrāde ar plašu dokumentāciju, ieskaitot API
|
||||||
dokumentāciju, lietošanas piemērus un integrācijas vadlīnijas.
|
dokumentāciju, lietošanas piemērus un integrācijas vadlīnijas.
|
||||||
|
|
||||||
@ -2082,7 +2074,7 @@ pāreju starp dažādiem labirinta līmeņiem.
|
|||||||
Bevy spēļu dzinēja izmantošana ļāva efektīvi implementēt entitāšu-komponenšu
|
Bevy spēļu dzinēja izmantošana ļāva efektīvi implementēt entitāšu-komponenšu
|
||||||
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 projekta 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"
|
Ši versija ieviesa vairākas būtiskas izmaiņas, piemēram, "Required Components"
|
||||||
(latv. nepieciešamo komponentu) konceptu uzlabotu animāciju sistēmu un daudz ko
|
(latv. nepieciešamo komponentu) 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.
|
||||||
|
|||||||
@ -256,7 +256,7 @@
|
|||||||
let supplement_map = (
|
let supplement_map = (
|
||||||
i-figured-table: "tab.",
|
i-figured-table: "tab.",
|
||||||
i-figured-image: "att.",
|
i-figured-image: "att.",
|
||||||
attachment: "pielikums",
|
attachment: "pielikumu",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user