From 25387397c4d2cee66b6f6e86bcdaf89829adf33d Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Mon, 30 Dec 2024 22:13:53 +0200 Subject: [PATCH] feat: add doc page --- assets/code/maze-ascension/components.rs | 29 ------ bibliography.yml | 55 +++--------- doc.typ | 108 +++++++---------------- main.typ | 62 +++++++------ 4 files changed, 79 insertions(+), 175 deletions(-) diff --git a/assets/code/maze-ascension/components.rs b/assets/code/maze-ascension/components.rs index 26b5918..516d1a4 100644 --- a/assets/code/maze-ascension/components.rs +++ b/assets/code/maze-ascension/components.rs @@ -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, -} diff --git a/bibliography.yml b/bibliography.yml index 181fb63..3a8c446 100644 --- a/bibliography.yml +++ b/bibliography.yml @@ -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 diff --git a/doc.typ b/doc.typ index 7f38411..98de379 100644 --- a/doc.typ +++ b/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) +} diff --git a/main.typ b/main.typ index 3284612..de0451f 100644 --- a/main.typ +++ b/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], 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/"), kas ir +releases#footnote[https://docs.github.com/en/repositories/releasing-projects-on-github/about-releases]" +un itch.io#footnote("https://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()[SSPMF01]], [Atgriešanās uz sākumekrānu], [#link()[SSPMF02]], - [], - [], - [], - [], + [Attēlot sākumekrānu], + [#link()[SSPMF03]], ), ) @@ -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]". Š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.], ) ==== 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.", ) -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 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]" +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]", 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]", koda formatētājs, lai +Kopā ar "Clippy@clippy" tiek arī izmantots "Rustfmt#footnote[https://github.com/rust-lang/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/]. 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/]. +Š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]" 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/]" -- 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]" 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