mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
feat: add doc page
This commit is contained in:
parent
cd602f30c1
commit
25387397c4
@ -1,32 +1,3 @@
|
||||
#[derive(Component, Default)]
|
||||
pub struct Music;
|
||||
|
||||
#[derive(Component, Default)]
|
||||
pub struct SoundEffect;
|
||||
|
||||
#[derive(Component, Debug, Clone, Copy, PartialEq, Eq, Default, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct Player;
|
||||
|
||||
#[derive(Component, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct MovementController {
|
||||
pub intent: Vec2,
|
||||
pub max_speed: f32,
|
||||
}
|
||||
|
||||
#[derive(Component, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct PlayerAnimation {
|
||||
timer: Timer,
|
||||
frame: usize,
|
||||
state: PlayerAnimationState,
|
||||
}
|
||||
|
||||
#[derive(Component, Debug, Reflect)]
|
||||
#[reflect(Component)]
|
||||
pub struct InteractionPalette {
|
||||
pub none: Color,
|
||||
pub hovered: Color,
|
||||
pub pressed: Color,
|
||||
}
|
||||
|
||||
@ -39,15 +39,6 @@ lvs_72:
|
||||
date: 1996-03-27
|
||||
organization: Latvijas Nacionālais standartizācijas un metroloģijas centrs
|
||||
page-total: 13
|
||||
pipeline:
|
||||
type: Web
|
||||
title: "CI/CD: The what, why, and how"
|
||||
author:
|
||||
url: https://github.com/resources/articles/devops/ci-cd
|
||||
backtracking:
|
||||
type: Web
|
||||
title: Backtracking
|
||||
url: https://en.wikipedia.org/wiki/Backtracking
|
||||
maze-generation:
|
||||
type: Web
|
||||
title: Maze Generation
|
||||
@ -56,14 +47,10 @@ bevy-quickstart:
|
||||
type: Web
|
||||
title: Bevy New 2D
|
||||
url: https://github.com/TheBevyFlock/bevy_new_2d
|
||||
git:
|
||||
type: Web
|
||||
title: Versijas kontroles sistēmas git dokumentācija
|
||||
url: https://git-scm.com/doc
|
||||
sem-ver:
|
||||
type: Web
|
||||
title: Semantiskā versiju veidošana
|
||||
url: https://semver.org/
|
||||
url: {value: "https://semver.org/", date: 2024-09-17}
|
||||
omg-uml:
|
||||
type: Book
|
||||
title: OMG Unified Modeling Language (OMG UML)
|
||||
@ -71,43 +58,23 @@ omg-uml:
|
||||
date: 2015-03
|
||||
url: https://www.omg.org/spec/UML/2.5/PDF
|
||||
page-total: 794
|
||||
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/
|
||||
gh-release:
|
||||
type: Web
|
||||
title: About Releases
|
||||
author: GitHub komanda
|
||||
url: https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases
|
||||
gh-actions:
|
||||
type: Web
|
||||
title: GitHub Actions dokumentācija
|
||||
author: GitHub komanda
|
||||
url: https://docs.github.com/en/actions
|
||||
webgl2:
|
||||
type: Web
|
||||
title: Bevy + WebGPU
|
||||
author:
|
||||
url: https://bevyengine.org/news/bevy-webgpu/
|
||||
url: {value: "https://bevyengine.org/news/bevy-webgpu/", date: 2024-09-20}
|
||||
bevy-egui:
|
||||
type: Web
|
||||
title: Bevy Egui bibliotēkas dokumentācija
|
||||
author:
|
||||
url: https://docs.rs/bevy_egui/latest/bevy_egui/
|
||||
url: {value: "https://docs.rs/bevy_egui/latest/bevy_egui/", date: 2024-09-26}
|
||||
bevy-inspector-egui:
|
||||
type: Web
|
||||
title: Bevy Inspector Egui bibliotēkas dokumentācija
|
||||
author:
|
||||
url: https://docs.rs/bevy-inspector-egui/0.28.0/bevy_inspector_egui/
|
||||
url: {value: "https://docs.rs/bevy-inspector-egui/0.28.0/bevy_inspector_egui/", date: 2024-09-26}
|
||||
the-rust-performance-book:
|
||||
type: Web
|
||||
type: Book
|
||||
title: The Rust Performance Book
|
||||
author: Nicholas Nethercote
|
||||
date: 2020-11
|
||||
@ -116,24 +83,24 @@ cargo-tarpaulin:
|
||||
type: Web
|
||||
title: Tarpaulin
|
||||
author: xd009642
|
||||
url: https://crates.io/crates/cargo-tarpaulin
|
||||
url: {value: "https://crates.io/crates/cargo-tarpaulin", date: 2024-12-18}
|
||||
ecs:
|
||||
type: Web
|
||||
title: ECS
|
||||
url: https://en.wikipedia.org/wiki/Entity_component_system
|
||||
url: {value: "https://en.wikipedia.org/wiki/Entity_component_system", date: 2024-09-12}
|
||||
bevy-ecs:
|
||||
type: Web
|
||||
title: Bevy ECS
|
||||
url: https://bevyengine.org/learn/quick-start/getting-started/ecs/
|
||||
url: {value: "https://bevyengine.org/learn/quick-start/getting-started/ecs/", date: 2024-09-12}
|
||||
SRP:
|
||||
type: Web
|
||||
title: Single-responsibility principle
|
||||
url: https://en.wikipedia.org/wiki/Single-responsibility_principle
|
||||
url: {value: "https://en.wikipedia.org/wiki/Single-responsibility_principle"}
|
||||
SoC:
|
||||
type: Web
|
||||
title: Separation of concerns
|
||||
url: https://en.wikipedia.org/wiki/Separation_of_concerns
|
||||
bitflags:
|
||||
url: {value: "https://en.wikipedia.org/wiki/Separation_of_concerns"}
|
||||
begginer-patterns:
|
||||
type: Book
|
||||
title: Patterns for Beginning Programmers
|
||||
author: David Bernstein
|
||||
|
||||
108
doc.typ
108
doc.typ
@ -1,88 +1,48 @@
|
||||
#import "@preview/tablex:0.0.9": tablex
|
||||
#import "@preview/dashy-todo:0.0.1": todo
|
||||
|
||||
#let vspace = 1fr
|
||||
#heading(numbering: none, outlined: false, "Dokumentārā lapa")
|
||||
#v(vspace)
|
||||
#let fill = box(width: 1fr, repeat(sym.space))
|
||||
#let long-underline = underline(box(width: 1fr, repeat(sym.space)))
|
||||
|
||||
Kvalifikācijas darbs "Spēles izstrāde, izmantojot Bevy spēļu dzinēju" ir
|
||||
#heading(numbering: none, outlined: false, "Dokumentārā lapa")
|
||||
|
||||
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.
|
||||
Ar savu parakstu apliecinu, ka darbs izstrādāts patstāvīgi, izmantoti tikai tajā
|
||||
norādītie informācijas avoti un iesniegtā darba elektroniskā kopija atbilst
|
||||
izdrukai.
|
||||
|
||||
|
||||
#v(vspace)
|
||||
#figure(
|
||||
tablex(
|
||||
stroke: none,
|
||||
columns: (1fr, 1fr),
|
||||
"Darba autors:",
|
||||
[
|
||||
Kristiāns Francis Cagulis, kc22015
|
||||
],
|
||||
),
|
||||
)
|
||||
#context {
|
||||
|
||||
#v(vspace)
|
||||
#figure(
|
||||
tablex(
|
||||
stroke: none,
|
||||
columns: (1fr, 1fr),
|
||||
"Darba vadītājs:",
|
||||
"prof. Mg. dat. Jānis Iljins",
|
||||
),
|
||||
)
|
||||
set par(
|
||||
first-line-indent: 1cm,
|
||||
hanging-indent: 1cm,
|
||||
)
|
||||
|
||||
#v(vspace)
|
||||
#figure(
|
||||
tablex(
|
||||
stroke: none,
|
||||
columns: (1fr, 1fr),
|
||||
"Darba galīgā versija izgatavota:",
|
||||
"x.01.2025.",
|
||||
),
|
||||
)
|
||||
v(vspace)
|
||||
[Darba autors: *Kristiāns Francis Cagulis, kc22015 ~~\_\_.01.2025.*]
|
||||
|
||||
#v(vspace)
|
||||
#figure(
|
||||
tablex(
|
||||
stroke: none,
|
||||
columns: (1fr, 1fr),
|
||||
"Darba iesniegšanas datums:",
|
||||
"06.01.2025.",
|
||||
),
|
||||
)
|
||||
v(vspace)
|
||||
[Rekomendēju darbu aizstāvēšanai\
|
||||
Darba vadītājs: *prof. Mg. dat. Jānis Iljins ~~\_\_.01.2025.*]
|
||||
|
||||
#v(vspace)
|
||||
#figure(
|
||||
tablex(
|
||||
stroke: none,
|
||||
columns: (1fr, 1fr),
|
||||
"Darba aizstāvēšanas datums:",
|
||||
"x.01.2025.",
|
||||
),
|
||||
)
|
||||
v(vspace)
|
||||
[Recenzents: #todo("write reviewer name")*recenzenta grāds, vārds, uzvārds*]
|
||||
|
||||
#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))
|
||||
],
|
||||
),
|
||||
)
|
||||
v(vspace)
|
||||
[Darbs iesniegs *\_\_.01.2025.*\
|
||||
Kvalifikācijas darbu pārbaudījumu komisijas sekretārs(-e): #long-underline
|
||||
]
|
||||
|
||||
v(vspace)
|
||||
[Darbs aizstāvēts kvalifikācijas darbu pārbaudījuma komisijas sēdē\
|
||||
\_\_.01.2025. prot. Nr. #long-underline
|
||||
]
|
||||
v(vspace / 2)
|
||||
[Komisijas sekretārs(-e): #long-underline]
|
||||
v(vspace)
|
||||
}
|
||||
|
||||
62
main.typ
62
main.typ
@ -78,8 +78,8 @@ tehnisko iespējamību.
|
||||
|
||||
== Saistība ar citiem dokumentiem
|
||||
PPS ir izstrādāta, ievērojot LVS 68:1996 "Programmatūras prasību specifikācijas
|
||||
ceļvedis"@lvs_68 un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma
|
||||
aprakstīšanai"@lvs_72 standarta prasības.
|
||||
ceļvedis" un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma
|
||||
aprakstīšanai" standarta prasības @lvs_68 @lvs_72.
|
||||
|
||||
== Pārskats
|
||||
Dokumenta ievads satur ...
|
||||
@ -114,7 +114,8 @@ ietvaros.
|
||||
|
||||
== Produkta perspektīva
|
||||
"Maze Ascension" ir izstrādāta kā daudzplatformu spēle, izmantojot nepārtrauktas
|
||||
integrācijas un nepārtrauktas izvietošanas (CI/CD) darbplūsma@pipeline, lai
|
||||
integrācijas un nepārtrauktas izvietošanas (CI/CD)
|
||||
darbplūsma#footnote[https://github.com/resources/articles/devops/ci-cd]<pipeline>, lai
|
||||
vienkāršotu izstrādes un izplatīšanas procesu.
|
||||
Šī darbplūsma ir konfigurēts tā, lai kompilētu spēli vairākām platformām,
|
||||
tostarp Linux, macOS, Windows un WebAssembly (WASM).
|
||||
@ -122,7 +123,8 @@ Tas nodrošina, ka spēle ir pieejama plašai auditorijai, nodrošinot konsekven
|
||||
un saistošu pieredzi dažādās operētājsistēmās un vidēs.
|
||||
|
||||
Spēle tiek izplatīta, izmantojot "GitHub
|
||||
releases"@gh-release un itch.io#footnote("https://itch.io/")<itch-io>, kas ir
|
||||
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
|
||||
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 iesasaistes funkcijas, tādējādi palielinot spēles sasniedzamību un
|
||||
@ -299,15 +301,13 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
||||
[Spēlētāja #red("nolaušainās")],
|
||||
[],
|
||||
|
||||
rowspanx(4)[Spēles stāvokļa pārvaldības modulis], // screens
|
||||
rowspanx(3)[Spēles stāvokļa pārvaldības modulis], // screens
|
||||
[Spēles sākšana],
|
||||
[#link(<screen-F01>)[SSPMF01]],
|
||||
[Atgriešanās uz sākumekrānu],
|
||||
[#link(<screen-F02>)[SSPMF02]],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[],
|
||||
[Attēlot sākumekrānu],
|
||||
[#link(<screen-F03>)[SSPMF03]],
|
||||
),
|
||||
) <function-modules>
|
||||
|
||||
@ -354,7 +354,7 @@ gala lietotāji nevar piekļūt šīm uzlabotajām konfigurācijas opcijām.
|
||||
[
|
||||
+ Pārbauda, vai labirinta straudņa resurss eksistē pasaulē.
|
||||
+ Ja nav, iziet no sistēmas un nedara neko.
|
||||
+ Saņem `EguiContext` komponentu no primārā loga.
|
||||
+ Saņem `EguiContext`@bevy_egui komponentu no primārā loga.
|
||||
+ Saņem labirinta konfigurāciju un stāvu komponentus no pašreizējā stāva.
|
||||
+ Izveido jaunu "Maze Controls" logu, izmantojot `egui`@bevy-egui.
|
||||
+ Ja globālais labirinta konfigurācijas resurss ir pieejams:
|
||||
@ -389,7 +389,8 @@ plūsmas ir parādītas 2. līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-maz
|
||||
Labirinta būvēšanas funkcija ir aprakstītas atsevišķā tabulā (sk. @tbl:hexlab-F01)
|
||||
|
||||
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
|
||||
funkcionalitāte tika pārnesta uz ārēju bibliotēku
|
||||
"hexlib#footnote[https://crates.io/crates/hexlab]<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
|
||||
@ -680,7 +681,8 @@ labirinta izveidi un uzturēšanu.
|
||||
"Glabā pilnu labirinta struktūru, izmantojot jaucējtabulu (hashmap)",
|
||||
`Walls`,
|
||||
"Apzīmē sienu konfigurāciju",
|
||||
[Pārvalda sienas stāvokļus, izmantojot bitu karodziņus @bitflags.],
|
||||
[Pārvalda sienas stāvokļus, izmantojot bitu karodziņus
|
||||
@begginer-patterns.],
|
||||
) <components-maze>
|
||||
|
||||
==== Spēlētāja komponentes
|
||||
@ -800,9 +802,11 @@ Spēle izmanto vairākus resursus globālās konfigurācijas un stāvokļa pārv
|
||||
"Uzglabā globālos labirinta izskata parametrus.",
|
||||
) <resources>
|
||||
|
||||
Resurss "`GlobalMazeConfig`" ir īpaši svarīgs, jo tas pārvalda labirinta vizuālo
|
||||
attēlojumu, ietverot tādus parametrus kā sešstūra lielums, sienu biezums un
|
||||
vertikālais augstums.
|
||||
#indent-par[
|
||||
Resurss "`GlobalMazeConfig`" ir īpaši svarīgs, jo tas pārvalda labirinta vizuālo
|
||||
attēlojumu, ietverot tādus parametrus kā sešstūra lielums, sienu biezums un
|
||||
vertikālais augstums.
|
||||
]
|
||||
|
||||
== Daļējs funkciju projektējums
|
||||
|
||||
@ -821,7 +825,8 @@ 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
|
||||
"Clippy#footnote[https://doc.rust-lang.org/clippy/usage.html]<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,
|
||||
@ -859,7 +864,7 @@ Izvēlētie testu gadījumi ir detalizēti aprakstīti #todo("tab") tabulā.
|
||||
=== Automatizēti testi
|
||||
|
||||
Automatizētā testēšanas sistēma plaši pārklāj bibliotēku "hexlab", jo tā ir
|
||||
paredzēta publiskai lietošanai@hexlab.
|
||||
paredzēta publiskai lietošanai.
|
||||
Testēšanas stratēģijā ir ieviesti vairāki pārbaudes līmeņi: dokumentācijas testi
|
||||
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
|
||||
@ -899,35 +904,36 @@ 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#footnote[https://doc.rust-lang.org/clippy/usage.html]<clippy>", kas analizē
|
||||
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).
|
||||
|
||||
Kopā ar "Clippy" tiek arī izmantots "Rustfmt#footnote[https://github.com/rust-lang/rustfmt]<rustfmt>", koda formatētājs, lai
|
||||
Kopā ar "Clippy@clippy" tiek arī izmantots "Rustfmt#footnote[https://github.com/rust-lang/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#footnote[https://doc.rust-lang.org/nightly/style-guide/]<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
|
||||
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.
|
||||
hexlab bibliotēkā ir
|
||||
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
|
||||
tikai palīdz saprast kodu, bet programmatūras prasības specifikācija ir
|
||||
izstrādāta, ievērojot LVS 68:1996 standarta "Programmatūras prasību
|
||||
specifikācijas ceļvedis" un LVS 72:1996 standarta "Ieteicamā prakse
|
||||
programmatūras projektējuma aprakstīšanai" standarta prasības @lvs_68 @lvs_72.
|
||||
// Programmatūras projektējuma aprakstā iekļautās
|
||||
// aktivitāšu diagrammas ir izstrādātas, ievērojot UML 2.5 versijas
|
||||
// specifikāciju@omg-uml.
|
||||
|
||||
== Konfigurācijas pārvaldība
|
||||
|
||||
Pirmkods tiek pārvaldīts, izmantojot "git"@git versiju kontroles sistēmu.
|
||||
Pirmkods tiek pārvaldīts, izmantojot "git#footnote[https://git-scm.com/doc]<git>" versiju kontroles sistēmu.
|
||||
Repozitorijs tiek izvietots platformā "GitHub".
|
||||
Rīku konfigurācija ir definēta vairākos failos:
|
||||
- "justfile#footnote[https://just.systems/man/en/]<justfile>" -- satur atkļūdošanas un
|
||||
laidiena komandas dažādām vidēm:
|
||||
- atkļūdošanas kompilācijas ar iespējotu pilnu atpakaļsekošanu;
|
||||
- laidiena kompilācijas ar iespējotu optimizāciju.
|
||||
- "GitHub Actions"@gh-actions darbplūsmas, kas apstrādā:
|
||||
- "GitHub Actions#footnote[https://docs.github.com/en/actions]<gh-actions>" darbplūsmas, kas apstrādā:
|
||||
- koda kvalitātes pārbaudes (vienībtesti, statiskie testi, formatēšana,
|
||||
dokumentācijas izveide).
|
||||
- kompilācijas un izvietotošanas darbplūsma, kas:
|
||||
@ -954,7 +960,7 @@ Versiju specifikācija notiek pēc semantiskās versiju atlases@sem-ver (MAJOR.M
|
||||
#heading("Pielikumi", numbering: none)
|
||||
// #include "code.typ"
|
||||
|
||||
// #include "doc.typ"
|
||||
#include "doc.typ"
|
||||
|
||||
#pagebreak()
|
||||
#total-words words
|
||||
|
||||
Loading…
Reference in New Issue
Block a user