diff --git a/assets/images/dpd/dpd0.jpg b/assets/images/dpd/dpd0.jpg new file mode 120000 index 0000000..fbddb49 --- /dev/null +++ b/assets/images/dpd/dpd0.jpg @@ -0,0 +1 @@ +../placeholder.jpg \ No newline at end of file diff --git a/assets/images/dpd/dpd1.jpg b/assets/images/dpd/dpd1.jpg new file mode 120000 index 0000000..fbddb49 --- /dev/null +++ b/assets/images/dpd/dpd1.jpg @@ -0,0 +1 @@ +../placeholder.jpg \ No newline at end of file diff --git a/assets/images/placeholder.jpg b/assets/images/placeholder.jpg new file mode 100644 index 0000000..9a74bb1 Binary files /dev/null and b/assets/images/placeholder.jpg differ diff --git a/bibliography.yml b/bibliography.yml new file mode 100644 index 0000000..2fd5ac2 --- /dev/null +++ b/bibliography.yml @@ -0,0 +1,41 @@ +typst: + type: Web + title: Typst + author: + - Mädje + - Laurenz + - Haug + - Martin + - Typst Projekta Izstrādātāji + url: https://typst.app/ +hex_grid: + type: Web + title: Hexagonal Grids + author: Red Blob Games + url: {value: 'https://www.redblobgames.com/grids/hexagons/', date: 2024-09-10} +bevy_examples: + type: Web + title: Bevy Examples + author: + url: {value: 'https://bevyengine.org/examples/', date: 2024-09-10} +bevy_cheatbook: + type: Web + title: Unofficial Bevy Cheat Book + author: + url: {value: 'https://bevy-cheatbook.github.io/', date: 2024-09-10} +lvs_68: + type: Book + title: Programmatūras prasību specifikācijas ceļvedis + author: Institūcija SIA "Latvijas standarts" + issue: 68 + date: 1996-03-27 + organization: Latvijas Nacionālais standartizācijas un metroloģijas centrs + page-total: 22 +lvs_72: + type: Book + title: Ieteicamā prakse programmatūras projektējuma aprakstīšanai + author: Institūcija SIA "Latvijas standarts" + issue: 72 + date: 1996-03-27 + organization: Latvijas Nacionālais standartizācijas un metroloģijas centrs + page-total: 13 diff --git a/layout.typ b/layout.typ index 2075230..afcfef3 100644 --- a/layout.typ +++ b/layout.typ @@ -7,6 +7,7 @@ #let project( university: "", faculty: "", + type: "", title: [], authors: (), advisor: "", @@ -27,7 +28,7 @@ ) set text( //font: "New Computer Modern", - font: "CMU", size: 12pt, hyphenate: auto, lang: "lv", region: "LV", + font: "CMU", size: 12pt, hyphenate: auto, lang: "lv", region: "lv", ) show raw: set text(font: "New Computer Modern Mono") @@ -38,8 +39,8 @@ justify: true, leading: 1.5em, first-line-indent: indent, + spacing: 1.5em, ) - show par: set block(spacing: 1.5em) // Set 1.5em gap between paragraphs show heading: set block(spacing: 1.5em) set terms(separator: [ -- ]) @@ -80,10 +81,24 @@ align( center, - text( - 20pt, - weight: "bold", - title, + upper( + text( + 20pt, + weight: "bold", + title, + ), + ), + ) + + v(0.3fr) + + align( + center, + upper( + text( + size: 16pt, + type, + ), ), ) @@ -134,32 +149,34 @@ /* --- Figure/Table config start --- */ show heading: i-figured.reset-counters show figure: i-figured.show-figure.with(numbering: "1.1.") + set figure(placement: auto) show figure.where(kind: "i-figured-table"): set block(breakable: true) show figure.where(kind: "i-figured-table"): set figure.caption(position: top) show figure: set par(justify: false) // disable justify for figures (tables) + show figure.caption: set text(size: 11pt) show figure.caption: it => { if it.kind == "i-figured-table" { - align( + return align( end, emph(it.counter.display(it.numbering) + " tabula ") + text( weight: "bold", it.body, ), ) - } else if it.kind == "i-figured-image" { - align( + } + if it.kind == "i-figured-image" { + return align( start, emph(it.counter.display(it.numbering) + " att. ") + text( weight: "bold", it.body, ), ) - } else { - it } + it } set ref(supplement: it => { }) // disable default reference suppliments @@ -199,6 +216,9 @@ number-align: center, ) + + // show link: set text(fill: blue.darken(20%)) + // Main body body } diff --git a/main.typ b/main.typ index 174093a..b30d404 100644 --- a/main.typ +++ b/main.typ @@ -2,23 +2,27 @@ #import "@preview/i-figured:0.2.4" #import "@preview/tablex:0.0.9": tablex, rowspanx, colspanx, cellx #import "utils.typ": * +#import "@preview/wordometer:0.1.3": word-count, total-words +#show: word-count #show: project.with( university: "Latvijas Universitāte", faculty: "Eksakto zinātņu un tehnoloģiju fakultāte", + type: "Kvalifikācijas darbs", title: [Spēles izstrāde, izmantojot Bevy spēļu dzinēju], authors: ("Kristiāns Francis Cagulis, kc22015",), advisor: "prof. Mg. dat. Jānis Iljins", date: "Rīga 2025", ) - #set heading(numbering: none) - = Apzīmējumu saraksts +/ DPD: datu plūsmas diagramma; / ECS: entitāšu komponentu sistēma (angl. Entity-Component-System); +/ PPA: programmatūras projektējuma apraksts; / 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); +/ 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]); +/ Spēlētājs: lietotāja ieraksts vienas virtuālās istabas kontekstā. /* 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 @@ -32,7 +36,7 @@ == Nolūks Šī dokumenta mērķis ir raksturot sešstūru labirinta spēles "Maze Ascension" programmatūras prasības un izpētīt Bevy spēļu dzinēja iespējas. - +#lorem(100) == Darbības sfēra #todo("add first sentence") @@ -63,10 +67,10 @@ netraucētu un efektīvu spēles pieredzi. == Saistība ar citiem dokumentiem PPS ir izstrādāta, ievērojot LVS 68:1996 "Programmatūras prasību specifikācijas -ceļvedis" un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma -aprakstīšanai" standarta prasības. +ceļvedis"@lvs_68 un LVS 72:1996 "Ieteicamā prakse programmatūras projektējuma +aprakstīšanai"@lvs_72 standarta prasības. -#todo("papildināt dokumentus") +#todo("papildināt dokumentu sarakstu") == Pārskats Dokumenta ievads satur ... @@ -85,11 +89,76 @@ Trešajā nodaļā tiek aprakstīta ... #set heading(numbering: "1.1.") = Vispārējais apraksts == Esošā stāvokļa apraksts +Pašreizējo spēļu izstrādes ainavu raksturo pieaugoša interese par neatkarīgajām +spēlēm un modernu, efektīvu spēļu dzinēju izmantošana. Izstrādātāji arvien +biežāk meklē rīkus, kas piedāvā elastību, veiktspēju un lietošanas ērtumu. Spēļu +dzinējs Bevy ar savu moderno arhitektūru un Rust programmēšanas valodas +izmantošanu gūst arvien lielāku popularitāti izstrādātāju vidū, pateicoties tā +drošības un laiksakritība funkcijām. + == Pasūtītājs +Sistēma nav izstrādāta pēc konkrēta pasūtītāja pieprasījuma, tā ir raksturota un +projektēta ar iespēju realizēt pēc studenta iniciatīvas kvalifikācijas darba +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) _pipeline_ +#todo("check CI/CD pipeline translation"), lai racionalizētu +izstrādes un izplatīšanas procesu. Šis _pipeline_ ir konfigurēts tā, lai kompilētu +spēli vairākām platformām, tostarp Linux, macOS, Windows un WebAssembly (Wasm). +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. + +Spēle tiek izplatīta, izmantojot #todo("GitHub releases") un #link("http://itch.io/")[itch.io], kas ir populāra neatkarīgo spēļu +platforma, kas ļauj viegli piekļūt un izplatīt spēli 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 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 +Sistēmas izstrādē galvenā uzmanība tiks pievērsta sekojošu darījumprasību +īstenošanai, lai nodrošinātu stabilu un saistošu lietotāja pieredzi: + ++ Spēles progresēšana un līmeņu pārvaldība: Sistēma automātiski pārvaldīs spēlētāju virzību pa spēles līmeņiem, nodrošinot vienmērīgu pāreju, kad spēlētāji progresē un saskaras ar jauniem izaicinājumiem. + Progress tiks saglabāts lokāli spēlētāja ierīcē. ++ Nevainojama piekļuve spēlēm: Spēlētāji varēs piekļūt spēlei un spēlēt to bez nepieciešamības izveidot lietotāja kontu vai pieteikties. Tas nodrošina netraucētu piekļuvi spēlei, ļaujot spēlētājiem nekavējoties sākt spēlēt. +// + Paziņošanas sistēma: Spēlētāji saņems paziņojumus par svarīgiem spēles atjauninājumiem, sasniegumiem un citu svarīgu informāciju, lai saglabātu viņu iesaisti un informētību. ++ 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 #link("http://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 _pipeline_ 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ēma ir izstrādāta, ņemot vērā vienu lietotāja tipu -- spēlētājs. Spēlētāji +ir personas, kas iesaistās spēlē, lai pārvietotos pa tās labirinta struktūrām. +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 +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 +(skat. @fig:dpd-0 att.) + +#figure( + caption: "0. līmeņa DPD", + image("assets/images/dpd/dpd0.jpg"), +) + == 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. +// + Izplatīšanas un izvietošanas ierobežojumi: +// + CI/CD _pipeline_. + == Pieņēmumi un atkarības // Constraints @@ -115,6 +184,11 @@ pārvaldāms, nodrošinot strukturētu ceļu projekta mērķu sasniegšanai. */ = Programmatūras prasību specifikācija == Funkcionālās prasības +#figure( + caption: "1. līmeņa DPD", + image("assets/images/dpd/dpd1.jpg"), +) + == Nefunkcionālās prasības === Veiktspējas prasības ==== Statiskā veiktspēja @@ -143,75 +217,10 @@ pārvaldāms, nodrošinot strukturētu ceļu projekta mērķu sasniegšanai. */ === Navigācija === Ekrānskati -#heading( - numbering: none, - "Izmantotā literatūra un avoti", +#bibliography( + title: "Izmantotā literatūra un avoti", + "bibliography.yml", ) -+ #hyperlink-source( - [Institūcija "Latvijas standarts".], - [LVS 68:1996 "Programmatūras prasību specifikācijas ceļvedis". 1996, marts.], - "", - datetime( - year: 2023, - month: 11, - day: 20, - ), - ) - -+ #hyperlink-source( - [Institūcija "Latvijas standarts".], - [LVS 72:1996 PPS "Ieteicamā prakse programmatūras projektējuma aprakstīšanai". 1996, marts.], - "", - datetime( - year: 2024, - month: 11, - day: 04, - ), - ) - -+ #hyperlink-source( - "", // TODO: - "Hexagonal Grids from Red Blob Games.", - "https://www.redblobgames.com/grids/hexagons/", - datetime( - year: 2024, - month: 09, - day: 10, - ) -) - -+ #hyperlink-source( - "", // TODO: - "Power-up.", - "https://en.wikipedia.org/wiki/Power-up", - datetime( - year: 2024, - month: 11, - day: 04, - ), - ) - - -+ #hyperlink-source( - "", // TODO: - "Unofficial Bevy Cheat Book.", - "https://bevy-cheatbook.github.io/", - datetime( - year: 2024, - month: 09, - day: 10, - ), - ) - -+ #hyperlink-source( - "Bevy piemēri.", - "Bevy Examples", - "https://bevyengine.org/examples/", - datetime( - year: 2024, - month: 09, - day: 10, - ), - ) - +#pagebreak() +#todo[#total-words words]