feat: add doc page

This commit is contained in:
Kristofers Solo 2024-12-30 22:13:53 +02:00
parent cd602f30c1
commit 25387397c4
4 changed files with 79 additions and 175 deletions

View File

@ -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,
}

View File

@ -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

106
doc.typ
View File

@ -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 {
set par(
first-line-indent: 1cm,
hanging-indent: 1cm,
)
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba vadītājs:",
"prof. Mg. dat. Jānis Iljins",
),
)
v(vspace)
[Darba autors: *Kristiāns Francis Cagulis, kc22015 ~~\_\_.01.2025.*]
#v(vspace)
#figure(
tablex(
stroke: none,
columns: (1fr, 1fr),
"Darba galīgā versija izgatavota:",
"x.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 iesniegšanas datums:",
"06.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),
"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)
[Darbs iesniegs *\_\_.01.2025.*\
Kvalifikācijas darbu pārbaudījumu komisijas sekretārs(-e): #long-underline
]
#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 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)
}

View File

@ -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>
#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