mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
feat: add player module
This commit is contained in:
parent
e297e1ab9a
commit
84cedbed37
234
main.typ
234
main.typ
@ -21,30 +21,22 @@
|
|||||||
#set heading(numbering: none)
|
#set heading(numbering: none)
|
||||||
= Apzīmējumu saraksts
|
= Apzīmējumu saraksts
|
||||||
|
|
||||||
/ Audio: Skaņas komponentes, kas ietver gan skaņas efektus, gan fona mūziku.
|
/ 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 komponenšu sistēma (angl. Entity-Component-System)@ecs;
|
/ ECS: entitāšu komponenšu sistēma (angl. Entity-Component-System)@ecs;
|
||||||
/ 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;
|
||||||
/ 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.
|
/ Interpolācija: starpvērtību atrašana pēc funkcijas doto vērtību virknes;
|
||||||
/ Laidiens: Programmatūras versija, kas ir gatava izplatīšanai lietotājiem un satur īpašas funkcijas, uzlabojumus vai labojumus.
|
/ 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;
|
||||||
|
/ Laidiens: Programmatūras versija, kas ir gatava izplatīšanai lietotājiem un satur īpašas funkcijas, uzlabojumus vai labojumus;
|
||||||
/ 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;
|
||||||
/ 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>;
|
/ 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>;
|
||||||
/ Pasaules resursi: #todo("add World resource")
|
/ Pirmkods: Cilvēkam lasāmas programmēšanas instrukcijas, kas nosaka programmatūras darbību;
|
||||||
/ Pirmkods: Cilvēkam lasāmas programmēšanas instrukcijas, kas nosaka programmatūras darbību.
|
/ Procedurāla ģenerēšana: datu algoritmiskas izstrādes metode, kurā tiek kombinēts cilvēka radīts saturs un algoritmi, kas apvienoti ar datora ģenerētu nejaušību;
|
||||||
/ Procedurāla ģenerēšana: datu algoritmiskas izstrādes metode, kurā tiek kombinēts cilvēka radīts saturs un algoritmi, kas apvienoti ar datora ģenerētu nejaušību.
|
/ Renderēšana: Process, kurā tiek ģenerēts vizuāla izvade;
|
||||||
/ Renderēšana: Process, kurā tiek ģenerēts vizuāla izvade.
|
/ 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: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai;
|
||||||
/ Sēkla: Skaitliska vērtība, ko izmanto nejaušo skaitļu ģeneratora inicializēšanai.
|
|
||||||
|
|
||||||
/* 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
|
|
||||||
* dzinēju pieejamība. Starp šiem dzinējiem Bevy izceļas kā mūsdienīgs atvērtā
|
|
||||||
* koda risinājums, kas izmanto Rust programmēšanas valodu, lai nodrošinātu
|
|
||||||
* drošību un veiktspēju. Šajā diplomdarbā tiek pētīts Bevy spēļu dzinēja
|
|
||||||
* potenciāls, izstrādājot minimālistisku labirinta izpētes spēli "Maze
|
|
||||||
* Ascension". */
|
|
||||||
|
|
||||||
= Ievads
|
= Ievads
|
||||||
== Nolūks
|
== Nolūks
|
||||||
@ -428,17 +420,15 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
|||||||
[Labirinta #red("izlāde")],
|
[Labirinta #red("izlāde")],
|
||||||
[],
|
[],
|
||||||
|
|
||||||
rowspanx(5)[Spēlētāja modulis], // player
|
rowspanx(4)[Spēlētāja modulis], // player
|
||||||
[Spēlētāja ielāde],
|
[Spēlētāja ielāde],
|
||||||
[],
|
[#link(<player-F01>)[SPMF01]],
|
||||||
[Spēlētāja ievades apstrāde],
|
[Spēlētāja ievades apstrāde],
|
||||||
[],
|
[#link(<player-F02>)[SPMF02]],
|
||||||
[Spēlētāja kustība],
|
[Spēlētāja kustība],
|
||||||
[],
|
[#link(<player-F03>)[SPMF03]],
|
||||||
[Spēlētāja #red("pacelšanās")],
|
[Spēlētāja pāreja],
|
||||||
[],
|
[#link(<player-F04>)[SPMF04]],
|
||||||
[Spēlētāja #red("nolaišainās")],
|
|
||||||
[],
|
|
||||||
|
|
||||||
rowspanx(3)[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],
|
[Spēles sākšana],
|
||||||
@ -641,7 +631,199 @@ programmu.
|
|||||||
) <maze-F01>
|
) <maze-F01>
|
||||||
|
|
||||||
=== Spēlētāja modulis
|
=== Spēlētāja modulis
|
||||||
#todo("uzrakstīt spēlētāja moduli")
|
Spēlētāja modulis ir atbildīgs par spēlētāja entītijas pārvaldību, kas ietver
|
||||||
|
tās izveidi, kustību apstrādi un mijiedarbību ar spēles vidi. Moduļa darbības
|
||||||
|
plūsma ir attēlota 2. līmeņa datu plūsmas diagrammā (sk. @fig:dpd-2-player), kas
|
||||||
|
parāda četras galvenās funkcijas un to mijiedarbību ar datu glabātuvi.
|
||||||
|
|
||||||
|
Spēlētāja kustība tiek realizēta divās daļās: ievades apstrāde
|
||||||
|
(#link(<player-F02>)[SPMF02]) un kustības izpilde
|
||||||
|
(#link(<player-F03>)[SPMF03]).
|
||||||
|
Ievades apstrādes funkcija pārbauda tastatūras ievadi
|
||||||
|
un, ņemot vērā labirinta sienu izvietojumu, nosaka nākamo kustības mērķi.
|
||||||
|
Kustības izpildes funkcija nodrošina plūstošu pārvietošanos uz mērķa pozīciju,
|
||||||
|
izmantojot interpolāciju starp pašreizējo un mērķa pozīciju.
|
||||||
|
|
||||||
|
Stāvu pārejas apstrāde (#link(<player-F04>)[SPMF04]) nepārtraukti uzrauga spēlētāja pozīciju
|
||||||
|
attiecībā pret stāva izeju un sākumu. Kad spēlētājs sasniedz kādu no šiem
|
||||||
|
punktiem, funkcija izsauc atbilstošu pārejas notikumu.
|
||||||
|
|
||||||
|
#figure(
|
||||||
|
caption: [Spēlētāja moduļa 2. līmeņa DPD],
|
||||||
|
diagram(
|
||||||
|
spacing: (6em, 2em),
|
||||||
|
{
|
||||||
|
data-store((0, 0), [Spēlētājs])
|
||||||
|
dpd-edge(
|
||||||
|
"u,r",
|
||||||
|
align(center)[Tastatūras\ ievades dati],
|
||||||
|
label-pos: 0.6,
|
||||||
|
shift: (10pt, 0),
|
||||||
|
)
|
||||||
|
|
||||||
|
process((1, -2), [Spēlētāja\ ielāde])
|
||||||
|
dpd-edge(
|
||||||
|
"rr,dd",
|
||||||
|
align(center)[Spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.2,
|
||||||
|
shift: (-10pt, -29pt),
|
||||||
|
)
|
||||||
|
|
||||||
|
process((1, -1), [Spēlētāja\ ievades apstrāde])
|
||||||
|
dpd-edge(
|
||||||
|
"dr,r",
|
||||||
|
align(center)[Atjaunoti spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.35,
|
||||||
|
shift: (0, -20pt),
|
||||||
|
)
|
||||||
|
|
||||||
|
process((1, 0), [Spēlētāja\ kustība])
|
||||||
|
dpd-edge(
|
||||||
|
"dd,rr,uu",
|
||||||
|
align(center)[Atjaunoti spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.2,
|
||||||
|
shift: (0, -29pt),
|
||||||
|
)
|
||||||
|
process((1, 3), [Spēlētāja\ pāreja])
|
||||||
|
dpd-edge(
|
||||||
|
"rr,uuu",
|
||||||
|
align(center)[Notikuma dati],
|
||||||
|
label-pos: 0.2,
|
||||||
|
label-sep: -0.2em,
|
||||||
|
shift: (9pt, 5pt),
|
||||||
|
)
|
||||||
|
|
||||||
|
dpd-database((3, 0), [Operatīvā\ atmiņa])
|
||||||
|
dpd-edge(
|
||||||
|
"uu,ll",
|
||||||
|
align(center)[Labirinta\ konfigurācijas dati],
|
||||||
|
label-pos: 0.6,
|
||||||
|
shift: (19pt, -10pt),
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"u,ll",
|
||||||
|
align(center)[Labirinta\ konfigurācijas dati],
|
||||||
|
label-pos: 0.75,
|
||||||
|
shift: (-29pt, -10pt),
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"u,ll",
|
||||||
|
align(center)[Spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.55,
|
||||||
|
shift: (-19pt, 10pt),
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"ll",
|
||||||
|
align(center)[Spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.7,
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"ll",
|
||||||
|
align(center)[Labirinta\ konfigurācijas dati],
|
||||||
|
label-pos: 0.35,
|
||||||
|
label-sep: -0.5em,
|
||||||
|
shift: 19pt,
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"ddd,ll",
|
||||||
|
align(center)[Spēlētāja\ entitātes dati],
|
||||||
|
label-pos: 0.8,
|
||||||
|
shift: (19pt, 20pt),
|
||||||
|
)
|
||||||
|
dpd-edge(
|
||||||
|
"ddd,ll",
|
||||||
|
align(center)[Pašreizējā\ stāva dati],
|
||||||
|
label-pos: 0.6,
|
||||||
|
label-sep: -0.2em,
|
||||||
|
shift: (9pt, 5pt),
|
||||||
|
)
|
||||||
|
},
|
||||||
|
),
|
||||||
|
) <dpd-2-player>
|
||||||
|
|
||||||
|
#function-table(
|
||||||
|
"Spēlētāja ielāde",
|
||||||
|
"SPMF01",
|
||||||
|
"Izveido spēlētāja entitāti ar visām nepieciešamajiem komponentēm.",
|
||||||
|
[
|
||||||
|
+ Labirinta konfigurācija.
|
||||||
|
+ Globālā konfigurācija.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Iegūst sākuma pozīciju no labirinta konfigurācijas.
|
||||||
|
+ Izveido spēlētāja entitāti ar:
|
||||||
|
- pašreizējo pozīciju;
|
||||||
|
- tekstūru;
|
||||||
|
- krāsu.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Spēlētāja entitāte.
|
||||||
|
],
|
||||||
|
) <player-F01>
|
||||||
|
|
||||||
|
#function-table(
|
||||||
|
"Spēlētāja ievades apstrāde",
|
||||||
|
"SPMF02",
|
||||||
|
"Apstrādā spēlētāja tastatūras ievadi un aprēķina nākamo kustības plāksi.",
|
||||||
|
[
|
||||||
|
+ Tastatūras ievade.
|
||||||
|
+ Pašreizējā pozīcija.
|
||||||
|
+ Labirinta konfigurācija.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Pārbauda vai ir aktīva kustība.
|
||||||
|
+ Ja ir, iziet no sistēmas un nedara neko.
|
||||||
|
+ Nosaka kustības virzienu no ievades.
|
||||||
|
+ Pārbauda sienu šķēršļus.
|
||||||
|
+ Ja kustības virzienā ir siena, iziet no sistēmas un nedara neko.
|
||||||
|
+ Aprēķina nākamo pozīciju.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Kustības mērķa plāksnes pozīcija.
|
||||||
|
],
|
||||||
|
) <player-F02>
|
||||||
|
|
||||||
|
#function-table(
|
||||||
|
"Spēlētāja kustība",
|
||||||
|
"SPMF03",
|
||||||
|
"Atjaunina spēlētāja pozīciju, veicot plūstošu pārvietošanos uz mērķa plāksnes pozīciju.",
|
||||||
|
[
|
||||||
|
+ Kustības mērķis
|
||||||
|
+ Kustības ātrums
|
||||||
|
+ Pašreizējā pozīcija
|
||||||
|
+ Labirinta konfigurācija
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Aprēķina mērķa pozīciju pasaules koordinātēs.
|
||||||
|
+ Pārvieto spēlētāju uz mērķi ar noteiktu ātrumu.
|
||||||
|
+ Atjaunina pozīcijas datus.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Atjauninātā pozīcija.
|
||||||
|
+ Transformācijas dati.
|
||||||
|
],
|
||||||
|
) <player-F03>
|
||||||
|
|
||||||
|
#function-table(
|
||||||
|
"Stāvu pāreja",
|
||||||
|
"SPMF04",
|
||||||
|
"Pārbauda vai spēlētājs ir sasniedzis stāva izeju vai sākumu un inicializē vertikālo pāreju.",
|
||||||
|
[
|
||||||
|
+ Pašreizējā pozīcija.
|
||||||
|
+ Pašreizējais stāvs.
|
||||||
|
+ Labirinta konfigurācija.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Pārbauda vai pozīcija sakrīt ar izeju.
|
||||||
|
+ Ja sakrīt, izsauc pacelšanās notikumu uz iziet no sistēmas.
|
||||||
|
+ Pārbauda vai pozīcija sakrīt ar sākumu.
|
||||||
|
+ Ja sakrīt, pārbauda vai iespējama nolaišanās.
|
||||||
|
+ Ja ir iespējama, izsauc nolaišanās notikumu uz iziet no sistēmas.
|
||||||
|
],
|
||||||
|
[
|
||||||
|
+ Stāva pārejas notikums.
|
||||||
|
],
|
||||||
|
) <player-F04>
|
||||||
|
|
||||||
=== Spēles stāvokļa pārvaldības modulis
|
=== Spēles stāvokļa pārvaldības modulis
|
||||||
Spēles stāvokļa pārvaldības modulis nodrošina spēles dažādu stāvokļu pārvaldību
|
Spēles stāvokļa pārvaldības modulis nodrošina spēles dažādu stāvokļu pārvaldību
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user