mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
Add abstract and project organization
This commit is contained in:
parent
91eca5ce41
commit
684b56bd9a
37
abstract.typ
37
abstract.typ
@ -1,4 +1,5 @@
|
|||||||
#import "@preview/dashy-todo:0.0.1": todo
|
#import "@preview/dashy-todo:0.0.1": todo
|
||||||
|
#import "@preview/wordometer:0.1.3": word-count, total-words
|
||||||
#pagebreak()
|
#pagebreak()
|
||||||
#heading(
|
#heading(
|
||||||
level: 1,
|
level: 1,
|
||||||
@ -6,11 +7,20 @@
|
|||||||
numbering: none,
|
numbering: none,
|
||||||
"Anotācija",
|
"Anotācija",
|
||||||
)
|
)
|
||||||
|
Kvalifikācijas darbā ir izstrādāta spēle "Maze Ascension", kas piedāvā
|
||||||
|
spēlētājiem izaicinājumu iziet cauri proceduāli ģenerētiem sešstūrainam
|
||||||
|
labirintiem. Spēle ir veidota, izmantojot Rust programmēšanas valodu un Bevy
|
||||||
|
spēļu dzinēju.
|
||||||
|
|
||||||
#lorem(100)
|
Darba gaitā tika izstrādāta "hexlab" bibliotēka labirintu ģenerēšanai, kas tika
|
||||||
|
atdalīta no galvenās spēles loģikas. Labirintu ģenerēšanai tiek izmantots
|
||||||
#todo("Uzrakstīt anotāciju (līdz 850 rakstzīmēm)")
|
rekursīvās atpakaļizsekošanas algoritms, kas nodrošina, ka katrai šūnai var
|
||||||
|
piekļūt no jebkuras citas šūnas.
|
||||||
|
|
||||||
|
Spēle ir izstrādāta kā vienspēlētāja režīmā ar progresējošu grūtības
|
||||||
|
pakāpi, kur katrs nākamais līmenis piedāvā lielāku labirintu. Spēle ir pieejama
|
||||||
|
gan kā lejupielādējama versija Windows, Linux un macOS platformām, gan kā
|
||||||
|
tīmekļa versija, izmantojot WebAssembly tehnoloģiju.
|
||||||
|
|
||||||
#par(
|
#par(
|
||||||
first-line-indent: 0cm,
|
first-line-indent: 0cm,
|
||||||
@ -36,13 +46,20 @@ papilspējas.
|
|||||||
numbering: none,
|
numbering: none,
|
||||||
"Abstract",
|
"Abstract",
|
||||||
)
|
)
|
||||||
_"Maze Ascension" is a minimalist maze exploration game built using the Bevy
|
The qualification work includes the game "Maze Ascension", which offers
|
||||||
engine. The game features simple visuals with hexagonal tiles forming the maze
|
players the challenge to pass through procedurally generated hexagons
|
||||||
structure on a white background with black borders, and a stickman-style player
|
mazes. The game is built using the Rust programming language and Bevy
|
||||||
character. Players navigate through multiple levels of increasing difficulty,
|
game engine.
|
||||||
progressing vertically as they climb up through levels. The game includes
|
|
||||||
power-ups and abilities hidden throughout the maze, and later introduces the
|
The work included the development of a "hexlab" library for maze generation,
|
||||||
ability to move between levels freely._
|
which was separated from the main game logic. The maze generation is a
|
||||||
|
recursive backtracking algorithm which ensures that each cell can be
|
||||||
|
accessed from any other cell.
|
||||||
|
|
||||||
|
The game is designed as a single-player mode with progressive difficulty
|
||||||
|
with each successive level offering a larger maze. The game is available
|
||||||
|
as a downloadable version for Windows, Linux and macOS platforms, and as
|
||||||
|
as a web-based version using WebAssembly technology.
|
||||||
#todo("līdz 850 rakstzīmēm")
|
#todo("līdz 850 rakstzīmēm")
|
||||||
#par(
|
#par(
|
||||||
first-line-indent: 0cm,
|
first-line-indent: 0cm,
|
||||||
|
|||||||
4
assets/images/dpd/dpd2/maze-gen.svg
Normal file
4
assets/images/dpd/dpd2/maze-gen.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 52 KiB |
@ -71,3 +71,43 @@ omg-uml:
|
|||||||
date: 2015-03
|
date: 2015-03
|
||||||
url: https://www.omg.org/spec/UML/2.5/PDF
|
url: https://www.omg.org/spec/UML/2.5/PDF
|
||||||
page-total: 794
|
page-total: 794
|
||||||
|
clippy:
|
||||||
|
type: Web
|
||||||
|
title: Clippy
|
||||||
|
author: Rust Projekta Izstādātāji
|
||||||
|
url: https://doc.rust-lang.org/clippy/usage.html
|
||||||
|
rustfmt:
|
||||||
|
type: Web
|
||||||
|
title: Rustfmt
|
||||||
|
author: Rust Projekta Izstādātāji
|
||||||
|
url: https://github.com/rust-lang/rustfmt
|
||||||
|
cargo-doc:
|
||||||
|
type: Web
|
||||||
|
title: cargo-doc
|
||||||
|
author: Rust Projekta Izstādātāji
|
||||||
|
url: https://doc.rust-lang.org/cargo/commands/cargo-doc.html
|
||||||
|
rust-style:
|
||||||
|
type: Web
|
||||||
|
title: Rust stila ceļvedis
|
||||||
|
author: Rust Projekta Izstādātāji
|
||||||
|
url: https://doc.rust-lang.org/nightly/style-guide/
|
||||||
|
hexlab:
|
||||||
|
type: Web
|
||||||
|
title: Hexlab bibliotēka
|
||||||
|
author: Kristiāns Francis Cagulis
|
||||||
|
url: https://crates.io/crates/hexlab
|
||||||
|
hexlab-docs:
|
||||||
|
type: Web
|
||||||
|
title: Hexlab bibliotēkas dokumentācija
|
||||||
|
author: Kristiāns Francis Cagulis
|
||||||
|
url: https://docs.rs/hexlab/latest/hexlab/
|
||||||
|
justfile:
|
||||||
|
type: Web
|
||||||
|
title: Just programmētāja rokasgrāmata
|
||||||
|
author: Casey Rodarmor
|
||||||
|
url: https://just.systems/man/en/
|
||||||
|
gh-release:
|
||||||
|
type: Web
|
||||||
|
title: Par laidieniem
|
||||||
|
author: GitHub komanda
|
||||||
|
url: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases
|
||||||
|
|||||||
88
doc.typ
Normal file
88
doc.typ
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#import "@preview/tablex:0.0.9": tablex
|
||||||
|
|
||||||
|
#let vspace = 1fr
|
||||||
|
#heading(numbering: none, outlined: false, "Dokumentārā lapa")
|
||||||
|
#v(vspace)
|
||||||
|
|
||||||
|
Kvalifikācijas darbs "Spēles izstrāde, izmantojot Bevy spēļu dzinēju" ir
|
||||||
|
izstrādāts Latvijas Universitātes eksakto zinātņu un tehnoloģiju fakultātē.
|
||||||
|
|
||||||
|
Darba autors apliecina, ka darbs ir veikts patstāvīgi, un ir izmantoti tikai
|
||||||
|
tajā norādītie informācijas avoti.
|
||||||
|
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Darba autors:",
|
||||||
|
[
|
||||||
|
Kristiāns Francis Cagulis, kc22015
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Darba vadītājs:",
|
||||||
|
"prof. Mg. dat. Jānis Iljins",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Darba galīgā versija izgatavota:",
|
||||||
|
"x.01.2025.",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Darba iesniegšanas datums:",
|
||||||
|
"06.01.2025.",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Darba aizstāvēšanas datums:",
|
||||||
|
"x.01.2025.",
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Komisijas vērtējums:",
|
||||||
|
line(length: 100%, start: (0pt, 10pt)),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
#v(vspace)
|
||||||
|
#figure(
|
||||||
|
tablex(
|
||||||
|
stroke: none,
|
||||||
|
columns: (1fr, 1fr),
|
||||||
|
"Komisijas sastāvs:",
|
||||||
|
[
|
||||||
|
#line(length: 100%, start: (0pt, 10pt))
|
||||||
|
#line(length: 100%, start: (0pt, 30pt))
|
||||||
|
#line(length: 100%, start: (0pt, 40pt))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
15
layout.typ
15
layout.typ
@ -184,6 +184,21 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
set ref(supplement: it => { }) // disable default reference suppliments
|
set ref(supplement: it => { }) // disable default reference suppliments
|
||||||
|
show ref: it => {
|
||||||
|
let el = it.element
|
||||||
|
|
||||||
|
if el != none and el.func() == heading {
|
||||||
|
return link(
|
||||||
|
el.location(),
|
||||||
|
numbering(
|
||||||
|
el.numbering,
|
||||||
|
..counter(heading).at(el.location()),
|
||||||
|
) + " " + el.body,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
it
|
||||||
|
}
|
||||||
/* --- Figure/Table config end --- */
|
/* --- Figure/Table config end --- */
|
||||||
|
|
||||||
set list(marker: (
|
set list(marker: (
|
||||||
|
|||||||
145
main.typ
145
main.typ
@ -18,20 +18,20 @@
|
|||||||
#set heading(numbering: none)
|
#set heading(numbering: none)
|
||||||
= Apzīmējumu saraksts
|
= Apzīmējumu saraksts
|
||||||
|
|
||||||
/ Audio: #todo("add description")
|
/ 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 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;
|
|
||||||
/ 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.
|
||||||
/ 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>);
|
/ Laidiens: Programmatūras versija, kas ir gatava izplatīšanai lietotājiem un satur īpašas funkcijas, uzlabojumus vai labojumus.
|
||||||
/ 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;
|
||||||
/ Renderēšana: #todo("add description")
|
/ 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.
|
||||||
|
/ Renderēšana: Process, kurā tiek ģenerēts vizuāla izvade.
|
||||||
|
/ Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai.
|
||||||
/ 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
|
||||||
@ -120,9 +120,10 @@ 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
|
Spēle tiek izplatīta, izmantojot "GitHub
|
||||||
#link("http://itch.io/")[itch.io], kas ir populāra neatkarīgo spēļu
|
releases"@gh-release
|
||||||
platforma, kas ļauj viegli piekļūt un izplatīt spēles visā pasaulē.
|
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 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.
|
||||||
|
|
||||||
@ -149,7 +150,7 @@ Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasī
|
|||||||
+ Savietojamība ar vairākām platformām: sistēma būs pieejama vairākās
|
+ 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
|
platformās, tostarp Linux, macOS, Windows un WebAssembly, nodrošinot plašu
|
||||||
pieejamību un sasniedzamību.
|
pieejamību un sasniedzamību.
|
||||||
+ Kopienas iesaiste: Spēle izmantos #link("http://itch.io/")[itch.io] kopienas
|
+ Kopienas iesaiste: Spēle izmantos itch.io@itch-io kopienas
|
||||||
funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu
|
funkcijas, lai sadarbotos ar spēlētājiem, apkopotu atsauksmes un veicinātu
|
||||||
atbalstošu spēlētāju kopienu.
|
atbalstošu spēlētāju kopienu.
|
||||||
+ Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus
|
+ Regulāri atjauninājumi un uzturēšana: CI/CD cauruļvadu veicinās regulārus
|
||||||
@ -197,7 +198,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
- Windows kompilācijām;
|
- Windows kompilācijām;
|
||||||
- WebAssembly kompilāciju.
|
- WebAssembly kompilāciju.
|
||||||
- Izplatīšanas atkarības:
|
- Izplatīšanas atkarības:
|
||||||
- Pastāvīga #link("http://itch.io/")[itch.io] platformas pieejamība spēļu izplatīšanai.
|
- Pastāvīga itch.io@itch-io platformas pieejamība spēļu izplatīšanai.
|
||||||
- CI/CD darbplūsmai nepieciešamo kompilēšanas rīku un atkarību uzturēšana.
|
- CI/CD darbplūsmai nepieciešamo kompilēšanas rīku un atkarību uzturēšana.
|
||||||
- Izstrādes atkarības:
|
- Izstrādes atkarības:
|
||||||
- Rust programmēšanas valoda (stabilā versija);
|
- Rust programmēšanas valoda (stabilā versija);
|
||||||
@ -205,7 +206,7 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
|||||||
- Nepieciešamie Bevy spraudņi un atkarības, kā norādīts projekta Cargo.toml failā.
|
- Nepieciešamie Bevy spraudņi un atkarības, kā norādīts projekta Cargo.toml failā.
|
||||||
- Lietotāja vides pieņēmumi:
|
- Lietotāja vides pieņēmumi:
|
||||||
- Spēlētājiem ir pamata izpratne par labirinta navigāciju un mīklu risināšanas koncepcijām.
|
- Spēlētājiem ir pamata izpratne par labirinta navigāciju un mīklu risināšanas koncepcijām.
|
||||||
- Lietotāji var piekļūt un lejupielādēt spēles no #link("http://itch.io/")[itch.io] platformas.
|
- Lietotāji var piekļūt un lejupielādēt spēles no itch.io@itch-io platformas.
|
||||||
- Spēlētājiem ir ievadierīces (tastatūra/pele), ar kurām kontrolēt spēli.
|
- Spēlētājiem ir ievadierīces (tastatūra/pele), ar kurām kontrolēt spēli.
|
||||||
|
|
||||||
= Programmatūras prasību specifikācija
|
= Programmatūras prasību specifikācija
|
||||||
@ -271,7 +272,7 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
|||||||
[Spēlētāju stāvokļa atjaunināšana], [],
|
[Spēlētāju stāvokļa atjaunināšana], [],
|
||||||
|
|
||||||
rowspanx(1)[Labirinta ģenerēšanas modulis],
|
rowspanx(1)[Labirinta ģenerēšanas modulis],
|
||||||
[Labirinta ģenerēšana], [#link(<LGMF01>)[LGMF01]],
|
[Labirinta būvētājs], [#link(<LGMF01>)[LGMF01]],
|
||||||
|
|
||||||
rowspanx(5)[Līmeņu pārvaldības modulis],
|
rowspanx(5)[Līmeņu pārvaldības modulis],
|
||||||
[Līmeņu ielāde], [],
|
[Līmeņu ielāde], [],
|
||||||
@ -297,16 +298,38 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
|||||||
=== Spēles stāvokļa pārvaldības modulis
|
=== Spēles stāvokļa pārvaldības modulis
|
||||||
=== Spēlētāja modulis
|
=== Spēlētāja modulis
|
||||||
=== Labirinta ģenerēšanas modulis
|
=== Labirinta ģenerēšanas modulis
|
||||||
|
|
||||||
|
Apakšnodaļa ietver labirinta moduļa funkcijas. Moduļa funkcionalitāte ir
|
||||||
|
izmantota sešstūraina labirinta ģenerēšanai.
|
||||||
|
Moduļa funkciju datu
|
||||||
|
plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (skat. @dpd-2-maze-gen att.)
|
||||||
|
Labirinta būvēšanas funkcija ir aprakstītas atsevišķā tabulā (skat.
|
||||||
|
#link(<LGMF01>)[LGMF01] tab.)
|
||||||
|
|
||||||
|
Modularitātes un atkārtotas lietojamības apsvērumu dēļ labirinta ģenerēšanas
|
||||||
|
funkcionalitāte tika pārnesta uz ārēju bibliotēku "hexlib"@hexlab. Šis lēmums
|
||||||
|
ļauj labirinta ģenerēšanas loģiku atkārtoti izmantot dažādos projektos un
|
||||||
|
lietojumprogrammās, veicinot atkārtotu koda izmantošanu.
|
||||||
|
Iekapsulējot labirinta ģenerēšanu atsevišķā bibliotēkā, to ir vieglāk pārvaldīt
|
||||||
|
un atjaunināt neatkarīgi no galvenās lietojumprogrammas, nodrošinot, ka
|
||||||
|
labirinta ģenerēšanas algoritma uzlabojumus vai izmaiņas var veikt, neietekmējot
|
||||||
|
programmu.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
caption: [Labirinta ģenerēšanas moduļa 2. līmeņa DPD],
|
||||||
|
image("assets/images/dpd/dpd2/maze-gen.svg"),
|
||||||
|
) <dpd-2-maze-gen>
|
||||||
|
|
||||||
#function-table(
|
#function-table(
|
||||||
"Labirinta ģenerēšana",
|
"Labirinta būzētājs",
|
||||||
"LGMF01",
|
"LGMF01",
|
||||||
[Izveido sešstūrainu labirintu ar norādītajiem parametriem.],
|
[Izveido sešstūrainu labirintu ar norādītajiem parametriem.],
|
||||||
[
|
[
|
||||||
+ Rādiuss: `u32` -- Labirinta rādiuss. Obligāts parametrs, kas nosaka labirinta izmēru.
|
+ Rādiuss -- 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
|
+ Sēkla -- Neobligāta sēkla nejaušo skaitļu ģeneratoram. Ja
|
||||||
norādīta, nodrošina reproducējamu labirinta ģenerēšanu ar vienādiem
|
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.
|
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ā.
|
+ Sākuma pozīcija -- 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,
|
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.
|
tiek izvēlēta nejauša derīga sākuma pozīcija.
|
||||||
// + Ģeneratora tips: `GeneratorType` -- Algoritms, kas tiks izmantots
|
// + Ģeneratora tips: `GeneratorType` -- Algoritms, kas tiks izmantots
|
||||||
@ -391,55 +414,103 @@ Pret sistēmas izstrādājamo programmatūras uzturamību tiek izvirzītas sekoj
|
|||||||
|
|
||||||
= Programmatūras projektējuma apraksts
|
= Programmatūras projektējuma apraksts
|
||||||
== Daļējs funkciju projektējums
|
== Daļējs funkciju projektējums
|
||||||
|
#todo("pievienot funkciju projektējumu +diagrammas")
|
||||||
/* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus;
|
/* Apraksta svarīgākās, sarežģītākās funkcijas vai sistēmas darbības aspektus;
|
||||||
* obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas
|
* obligāti jālieto vismaz 4 dažādi diagrammu veidi, izņemot DPD un lietošanas
|
||||||
* piemēru (use case) diagrammas */
|
* piemēru (use case) diagrammas */
|
||||||
== Izmantotās bibliotēkas
|
== Saskarņu projektējums
|
||||||
== Daļējs lietotāju saskarņu projektējums
|
#todo("pievienot saskarnes (UI/UX)")
|
||||||
/* 5-7 lietotāja saskarnes un to apraksts */
|
/* 5-7 lietotāja saskarnes un to apraksts */
|
||||||
|
|
||||||
= Testēšanas dokumentācija
|
= Testēšanas dokumentācija
|
||||||
== Dinamiskā programmatūras testēšana
|
Šajā nodaļā ir aprakstīta spēles "Maze Ascension" testēšanas process.
|
||||||
|
Testēšana tika veikta divos galvenajos virzienos -- statiskā un dinamiskā
|
||||||
|
testēšana, izmantojot gan automatizētus rīkus, gan manuālu pārbaudi.
|
||||||
|
|
||||||
|
== Statiskā testēšana <static-tests>
|
||||||
|
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
|
||||||
|
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
|
||||||
|
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
|
||||||
|
apstrādi. Šie papildu noteikumi palīdz uzturēt augstāku koda kvalitāti un
|
||||||
|
samazināt potenciālo kļūdu skaitu.
|
||||||
|
|
||||||
|
|
||||||
|
/* 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 (skat.
|
||||||
|
izpildes rezultātu attēlā 4.3.). */
|
||||||
|
|
||||||
|
== Dinamiskā testēšana
|
||||||
|
#todo("uztakstīt dinamisko testēšanu")
|
||||||
=== Manuālā integrācijas testēšana
|
=== Manuālā integrācijas testēšana
|
||||||
=== Automatizēti testi
|
=== Automatizēti testi
|
||||||
== Statiskā programmatūras testēšana
|
|
||||||
|
|
||||||
= Programmas projekta organizācija
|
= Programmas projekta organizācija
|
||||||
|
|
||||||
= Kvalitātes nodrošināšana
|
Kvalifikācijas darba prasības paredz, ka programmatūru un dokumentāciju autors
|
||||||
PPS ir izstrādāta, ievērojot LVS 68:1996 standarta "Programmatūras prasību specifikācijas
|
veido patstāvīgi, vadoties pēc darba vadītāja norādījumiem.
|
||||||
ceļvedis"@lvs_68 un LVS 72:1996 standarta "Ieteicamā prakse programmatūras projektējuma
|
|
||||||
aprakstīšanai"@lvs_72 standarta prasības.
|
#todo("uzrakstīt projekta organizāciju")
|
||||||
|
|
||||||
|
== Kvalitātes nodrošināšana
|
||||||
|
Augstas koda kvalitātes nodrošināšana ir jebkura projekta būtisks aspekts.
|
||||||
|
Lai to panāktu, tiek izmantoti vairāki rīki un prakses, kas palīdz uzturēt tīru,
|
||||||
|
efektīvu un uzticamu koda.
|
||||||
|
|
||||||
|
Viens no galvenajiem rīkiem, kas tiek izmantots ir "Clippy"@clippy, kas analizē
|
||||||
|
iespējamās problēmas un iesaka uzlabojumus (skat. @static-tests nodaļu).
|
||||||
|
|
||||||
|
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ē
|
||||||
|
kodu saskaņā ar Rust stila vadlīnijām@rust-style.
|
||||||
|
|
||||||
|
Turklāt visas publiskās funkcijas un datu struktūras
|
||||||
|
hexlab bibliotēkā ir
|
||||||
|
dokumentētas@hexlab-docs. Šajā dokumentācijā ir ietverti detalizēti apraksti un lietošanas
|
||||||
|
piemēri, kas ne tikai palīdz saprast kodu, bet arī kalpo kā dokumentācijas
|
||||||
|
testēšanas veids. Darbinot "cargo doc"@cargo-doc, tiek ģenerēja un validēja
|
||||||
|
dokumentācija, nodrošinot, ka piemēri ir pareizi un aktuāli.
|
||||||
|
|
||||||
|
Programmatūras prasības specifikācija ir izstrādāta, ievērojot LVS 68:1996
|
||||||
|
standarta "Programmatūras prasību specifikācijas ceļvedis"@lvs_68 un LVS 72:1996
|
||||||
|
standarta "Ieteicamā prakse programmatūras projektējuma aprakstīšanai"@lvs_72
|
||||||
|
standarta prasības.
|
||||||
// Programmatūras projektējuma aprakstā iekļautās
|
// Programmatūras projektējuma aprakstā iekļautās
|
||||||
// aktivitāšu diagrammas ir izstrādātas, ievērojot UML 2.5 versijas
|
// aktivitāšu diagrammas ir izstrādātas, ievērojot UML 2.5 versijas
|
||||||
// specifikāciju@omg-uml.
|
// specifikāciju@omg-uml.
|
||||||
|
|
||||||
= Konfigurācijas pārvaldība
|
== Konfigurācijas pārvaldība
|
||||||
Pirmkods tiek pārvaldīts, izmantojot "git"@git versiju kontroles sistēmu.
|
Pirmkods tiek pārvaldīts, izmantojot "git"@git versiju kontroles sistēmu.
|
||||||
Repozitorijs tiek izvietots platformā "GitHub".
|
Repozitorijs tiek izvietots platformā "GitHub".
|
||||||
|
|
||||||
Rīku konfigurācija ir definēta vairākos failos:
|
Rīku konfigurācija ir definēta vairākos failos:
|
||||||
- "justfile#footnote[https://github.com/casey/just]" -- satur atkļūdošanas un
|
- "justfile" -- satur atkļūdošanas un
|
||||||
piegādes komandas dažādām vidēm:
|
laidiena komandas dažādām vidēm@justfile:
|
||||||
- atkļūdošanas kompilācijas ar iespējotu pilnu atpakaļsekošanu;
|
- atkļūdošanas kompilācijas ar iespējotu pilnu atpakaļsekošanu;
|
||||||
- piegādes kompilācijas ar iespējotu optimizāciju.
|
- laidiena kompilācijas ar iespējotu optimizāciju.
|
||||||
- "GitHub Actions" darbplūsmas, kas apstrādā:
|
- "GitHub Actions" darbplūsmas, kas apstrādā:
|
||||||
- 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ā;
|
||||||
- izvieto tīmekļa versiju #link("http://itch.io/")[itch.io] platformā.
|
- izvieto tīmekļa versiju itch.io@itch-io platformā.
|
||||||
|
|
||||||
#indent-par[Versiju kontrole notiek pēc semantiskās versiju@sem_ver atlases
|
Versiju specifikācija notiek pēc semantiskās versiju atlases@sem_ver (MAJOR.MINOR.PATCH):
|
||||||
(MAJOR.MINOR.PATCH): ]
|
|
||||||
+ MAJOR -- galvenā versija, nesaderīgas izmaiņas, būtiskas koda izmaiņas.
|
+ MAJOR -- galvenā versija, nesaderīgas izmaiņas, būtiskas koda izmaiņas.
|
||||||
+ MINOR -- atpakaļsaderīgas funkcionalitātes papildinājumi.
|
+ MINOR -- atpakaļsaderīgas funkcionalitātes papildinājumi.
|
||||||
+ PATCH -- ar iepriekšējo versiju saderīgu kļūdu labojumi.
|
+ PATCH -- ar iepriekšējo versiju saderīgu kļūdu labojumi.
|
||||||
|
|
||||||
= Darbietilpības novērtējums
|
== Darbietilpības novērtējums
|
||||||
|
#todo("uzrakstīt darbietilpības novērtējumu")
|
||||||
|
|
||||||
= Secinājumi
|
// = Secinājumi
|
||||||
|
// #todo("uzrakstīt secinājumus")
|
||||||
|
|
||||||
#bibliography(
|
#bibliography(
|
||||||
title: "Izmantotā literatūra un avoti",
|
title: "Izmantotā literatūra un avoti",
|
||||||
@ -450,5 +521,5 @@ Rīku konfigurācija ir definēta vairākos failos:
|
|||||||
|
|
||||||
// #include "doc.typ"
|
// #include "doc.typ"
|
||||||
|
|
||||||
// #pagebreak()
|
#pagebreak()
|
||||||
// #total-words words
|
#total-words words
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user