mirror of
https://github.com/kristoferssolo/Qualification-Thesis.git
synced 2025-10-21 20:10:37 +00:00
refactor(dpd): update dpd1
This commit is contained in:
parent
c68065abc7
commit
96f6289552
81
diagrams.typ
81
diagrams.typ
@ -1,5 +1,7 @@
|
||||
#import "@preview/fletcher:0.5.3" as fletcher: diagram, node, edge
|
||||
#import fletcher.shapes: diamond
|
||||
#import fletcher.shapes: diamond, ellipse
|
||||
#import "@preview/cetz:0.3.1"
|
||||
#import cetz: draw
|
||||
|
||||
#let default-node-stroke = 1pt
|
||||
#let default-edge-stroke = 1pt
|
||||
@ -47,7 +49,7 @@
|
||||
|
||||
// Standard arrow edge
|
||||
#let std-edge(..args) = {
|
||||
edge(..args, "-|>", label-pos: 0.1, stroke: default-edge-stroke)
|
||||
edge(label-pos: 0.1, stroke: default-edge-stroke, ..args, "-|>")
|
||||
}
|
||||
|
||||
// Fork/parallel function
|
||||
@ -121,3 +123,78 @@
|
||||
|
||||
elements
|
||||
}
|
||||
|
||||
#let data-store(pos, text) = {
|
||||
node(
|
||||
pos,
|
||||
text,
|
||||
inset: 20pt,
|
||||
stroke: default-node-stroke,
|
||||
)
|
||||
}
|
||||
|
||||
#let process(..args) = {
|
||||
node(
|
||||
inset: 10pt,
|
||||
shape: ellipse,
|
||||
stroke: default-node-stroke,
|
||||
..args,
|
||||
)
|
||||
}
|
||||
|
||||
#let dpd-edge(..args) = {
|
||||
edge(
|
||||
label-pos: 0.5,
|
||||
stroke: default-edge-stroke,
|
||||
label-anchor: "center",
|
||||
label-fill: white,
|
||||
corner-radius: 4pt,
|
||||
..args,
|
||||
"-|>",
|
||||
)
|
||||
}
|
||||
|
||||
// Database shape
|
||||
#let database(node, extrude) = {
|
||||
let (w, h) = node.size
|
||||
|
||||
// Calculate dimensions for the cylinder parts
|
||||
let ellipse-height = h * 0.15
|
||||
|
||||
let cap-ratio = 0.2 // Cap height will be 30% of width
|
||||
let cap-height = w * cap-ratio
|
||||
|
||||
// Main body sides (without bottom line)
|
||||
draw.line(
|
||||
(-w, -h + cap-height), // Start at top-left
|
||||
(-w, h - cap-height), // Left side
|
||||
)
|
||||
draw.line(
|
||||
(w, h - cap-height), // To bottom-right
|
||||
(w, -h + cap-height), // Right side
|
||||
)
|
||||
|
||||
// Top ellipse
|
||||
draw.circle(
|
||||
(0, h - cap-height),
|
||||
radius: (w, cap-height),
|
||||
)
|
||||
|
||||
// Bottom elliptical cap (front arc only)
|
||||
draw.arc(
|
||||
(-w, -h + cap-height),
|
||||
radius: (w, cap-height),
|
||||
start: 180deg,
|
||||
delta: 180deg,
|
||||
)
|
||||
}
|
||||
|
||||
#let dpd-database(..args) = {
|
||||
node(
|
||||
shape: database,
|
||||
height: 4em,
|
||||
stroke: default-node-stroke,
|
||||
fill: white,
|
||||
..args,
|
||||
)
|
||||
}
|
||||
|
||||
146
main.typ
146
main.typ
@ -193,11 +193,23 @@ brīža.
|
||||
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
|
||||
(sk. @fig:dpd-0)
|
||||
(sk. @fig:dpd-0).
|
||||
|
||||
#figure(
|
||||
caption: [\0. līmeņa DPD],
|
||||
image("assets/images/dpd/dpd0.svg"),
|
||||
diagram(
|
||||
data-store((0, 0), [Spēlētājs]),
|
||||
dpd-edge("rr,ddd,ll", [Ievades ierīces\ dati]),
|
||||
process((0, 3), [Spēle], inset: 20pt),
|
||||
dpd-edge(
|
||||
"lll,uuu,rrr",
|
||||
[Vizuālās\ izvades dati],
|
||||
),
|
||||
dpd-edge(
|
||||
"l,uuu,r",
|
||||
[Audio\ izvades dati],
|
||||
),
|
||||
),
|
||||
) <dpd-0>
|
||||
|
||||
== Vispārējie ierobežojumi
|
||||
@ -239,16 +251,16 @@ Ar lietotājiem saistītās datu plūsmas ir attēlotas sistēmas nultā līmeņ
|
||||
== Funkcionālās prasības
|
||||
\1. līmeņa datu plūsmas diagramma (sk. @fig:dpd-1) ilustrē galvenos
|
||||
procesus spēles "Maze Ascension" sistēmā.
|
||||
Diagrammā attēloti septiņi galvenie procesi:
|
||||
ievades apstrādāšanas modulis,
|
||||
spēles stāvokļa pārvalības modulis,
|
||||
Diagrammā attēloti seši galvenie procesi, viens izstrādes process un viens
|
||||
ārējs (bibliotēkas) process(-i) process:
|
||||
stāva pārvaldības modulis,
|
||||
labirinta ģenerēšanas un pārvaldības moduļi,
|
||||
spēlētāja modulis,
|
||||
labirinta ģenerēšanas modulis,
|
||||
spēles līmeņu pārvaldības modulis,
|
||||
atveidošanas jeb renderēšanas un skaņas jeb audio moduļi.
|
||||
spēles stāvokļa pārvalības modulis,
|
||||
papildspēju modulis
|
||||
un izstrādes rīku modulis.
|
||||
Šie procesi mijiedarbojas ar vienu datu krātuvi -- operatīvo atmiņu (RAM) -- un vienu
|
||||
ārējo lietotāju -- spēlētājs.
|
||||
#todo("update module list")
|
||||
|
||||
Ievades apstrādes modulis uztver un apstrādā spēlētāja ievades datus.
|
||||
Spēles stāvokļa modulis pārrauga vispārējo spēles stāvokli.
|
||||
@ -264,12 +276,120 @@ Renderēšanas un audio moduļi pārvalda attiecīgi vizuālo un audio izvadi.
|
||||
|
||||
#figure(
|
||||
caption: [\1. līmeņa DPD],
|
||||
image("assets/images/dpd/dpd1.svg"),
|
||||
diagram({
|
||||
dpd-database((0, 0), [Operatīvā\ atmiņa], snap: -1)
|
||||
dpd-edge(
|
||||
"u,ull",
|
||||
align(center)[Visi spēles\ dati],
|
||||
shift: (-29pt, 0),
|
||||
label-pos: 0.8,
|
||||
) // dev_tools
|
||||
dpd-edge(
|
||||
"uuu",
|
||||
align(center)[Visi spēles\ dati],
|
||||
shift: -20pt,
|
||||
) // bevy
|
||||
dpd-edge("rru,u", [Stāva dati]) // floor
|
||||
dpd-edge(
|
||||
(2.5, 0),
|
||||
align(center)[Labirinta\ konfigurācijas dati],
|
||||
label-sep: -0.5em,
|
||||
shift: -22pt,
|
||||
) // hexlab
|
||||
dpd-edge(
|
||||
"rrd,d",
|
||||
align(center)[Labirinta\ izkārtojuma dati],
|
||||
shift: 20pt,
|
||||
label-pos: 0.501,
|
||||
label-sep: 4em,
|
||||
) // maze
|
||||
dpd-edge(
|
||||
"d,drr",
|
||||
align(center)[Labirinta\ konfigurācijas dati],
|
||||
shift: (-29pt, 0),
|
||||
label-pos: 0.7,
|
||||
) // maze
|
||||
dpd-edge(
|
||||
"ddd",
|
||||
align(center)[Spēlētaja\ dati],
|
||||
shift: 10pt,
|
||||
label-pos: 0.4,
|
||||
) // player
|
||||
dpd-edge(
|
||||
"d,dll",
|
||||
align(center)[Spēles\ stāvokļa dati],
|
||||
shift: (29pt, 0),
|
||||
label-pos: 0.7,
|
||||
) // screns
|
||||
dpd-edge(
|
||||
(-2.5, 0),
|
||||
align(center)[Papildspēju\ stāvokļa dati],
|
||||
shift: 15pt,
|
||||
label-sep: -0.5em,
|
||||
) // power_ups
|
||||
|
||||
process(
|
||||
(0, -3),
|
||||
[Bevy],
|
||||
inset: 20pt,
|
||||
extrude: (-4pt, 0),
|
||||
stroke: (thickness: 1pt, dash: "dashed"),
|
||||
)
|
||||
dpd-edge("uu", align(center)[Vizuālās\ izvades dati])
|
||||
dpd-edge("l,uu,r", align(center)[Audio\ izvades dati])
|
||||
dpd-edge("ddd", [Ievades dati], shift: (-20pt, -20pt), label-pos: 0.3)
|
||||
|
||||
data-store((0, -5), [Spēlētājs])
|
||||
dpd-edge(
|
||||
"r,dd,l",
|
||||
align(center)[Neapstrādāti ievades\ ierīces dati],
|
||||
label-sep: -0.3em,
|
||||
)
|
||||
|
||||
process((-2, -2), [Izstrādes rīku\ modulis])
|
||||
dpd-edge(
|
||||
"d,drr",
|
||||
align(center)[Atjaunoti\ spēles dati],
|
||||
label-pos: 0.4,
|
||||
)
|
||||
|
||||
process((2, -2), [Stāva pārvaldības\ modulis])
|
||||
dpd-edge("ddll", align(center)[Atjaunoti\ stāva dati])
|
||||
|
||||
process((2.5, 0), [Labirinta\ ģenerēšanas\ modulis])
|
||||
dpd-edge((0, 0), align(center)[Labirinta\ izkārtojuma dati], shift: -10pt)
|
||||
|
||||
process((2, 2), [Labirinta\ pārvaldības\ modulis])
|
||||
dpd-edge(
|
||||
"ll,uu",
|
||||
align(center)[Labirinta dati],
|
||||
label-pos: 0.3,
|
||||
shift: (0, 22pt),
|
||||
)
|
||||
|
||||
process((0, 3), [Spēlētāja\ modulis])
|
||||
dpd-edge(
|
||||
"uuu",
|
||||
align(center)[Atjaunoti\ spēlētāja\ dati],
|
||||
shift: 20pt,
|
||||
label-pos: 0.3,
|
||||
)
|
||||
|
||||
process((-2, 2), [Spēles stāvokļa\ pārvaldības modulis])
|
||||
dpd-edge(
|
||||
"u,urr",
|
||||
align(center)[Atjaunoti spēles\ stāvokļa dati],
|
||||
shift: (0, 10pt),
|
||||
label-pos: 0.3,
|
||||
)
|
||||
|
||||
process((-2.5, 0), [Papildspēju\ modulis])
|
||||
dpd-edge((0, 0), align(center)[Papildspēju\ dati], shift: 15pt)
|
||||
}),
|
||||
) <dpd-1>
|
||||
|
||||
|
||||
=== Funkciju sadalījums moduļos
|
||||
Tabulā @tbl:function-modules ir sniegts visaptverošs spēles funkcionalitātes
|
||||
Tabulā @tbl:function-modules[] ir sniegts visaptverošs spēles funkcionalitātes
|
||||
sadalījums pa tās galvenajiem moduļiem. Katram modulim ir noteikti konkrēti
|
||||
pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
||||
|
||||
@ -330,6 +450,8 @@ pienākumi, un tas ietver funkcijas, kas veicina kopējo spēles sistēmu.
|
||||
[#link(<screen-F02>)[SSPMF02]],
|
||||
[Attēlot sākumekrānu],
|
||||
[#link(<screen-F03>)[SSPMF03]],
|
||||
|
||||
rowspanx(3)[Papildspēju modulis], // power_up
|
||||
),
|
||||
) <function-modules>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user