aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2021-02-14 14:30:03 +0100
committerKatharina Fey <kookie@spacekookie.de>2021-02-14 14:30:03 +0100
commit2c7a4c0d0c738f181c7ae42b310e823e4ea35df7 (patch)
tree4b5e89a918d9700cd6377609ee50ec741340d22b
parenteffbdeed66e8de8e769b8ac069926ad1a9110e62 (diff)
website: first devebruary blog post about rst node
-rw-r--r--infra/website/content/blog/121_devebuary_part1.md87
-rw-r--r--infra/website/content/images/rst-concepts0-1.pngbin0 -> 183295 bytes
-rw-r--r--infra/website/content/images/rst-concepts0.pngbin0 -> 153020 bytes
-rw-r--r--infra/website/content/images/rst-concepts1.pngbin0 -> 136337 bytes
-rw-r--r--infra/website/content/images/rst-concepts2.pngbin0 -> 200003 bytes
-rw-r--r--infra/website/content/images/rst-concepts3.pngbin0 -> 376464 bytes
-rw-r--r--infra/website/content/images/rst-node-week1.pngbin0 -> 152847 bytes
7 files changed, 87 insertions, 0 deletions
diff --git a/infra/website/content/blog/121_devebuary_part1.md b/infra/website/content/blog/121_devebuary_part1.md
new file mode 100644
index 000000000000..b4482f628cc4
--- /dev/null
+++ b/infra/website/content/blog/121_devebuary_part1.md
@@ -0,0 +1,87 @@
+Title: Devebruary (Week 1)
+Category: Blog
+Date: 2021-02-14
+Tags: /dev/diary, hackerthon
+
+Last week a friend and I decided to spend four weeks more seriously
+hacking on our games and blogging about it. We called this event
+"Devebruary", even though February had already started. This is my
+first post.
+
+
+## The current state
+
+![Relay concept part](/images/rst-concepts1.png)
+
+I've been working on a game called *"RST Node"* (read "Reset Node") for
+the last few years, albeit only conceptually. It is a 2D (top down)
+RTS set on a computer network. A match consists of multiple players
+spawning on a computer network with nodes and links between them, with
+the task of spreading their influence, build compute clusters to gain
+resources, and attacking the enemy players though a variety of
+exploits.
+
+![Compute node concept art](/images/rst-concepts2.png)
+
+I started programming on this game last year in January, but only
+worked on it for about a month before running out of time and energy
+(did something else happen in 2020? Can't remember). The game is
+written in Rust and AGPL-3.0, seeing as it uses a component from my
+research project (Ratman), which is also licensed under the AGPL-3.0.
+
+![Attack node concept part](/images/rst-concepts3.png)
+
+## What I've done this week
+
+The code up to this week was entirely backend focussed. I had layed
+out the basic structure of units, abilities, and matches. Nothing was
+being drawn yet. To render a client I'm using the [`ggez`] Rust
+crate, which is a Rust clone of the [`love`] framework. I'm not a
+_huge_ fan, and if the game was any more graphically ambitious I'd
+want to find something else. But seeing as I'm only really drawing
+simple 2D graphics and doing some camera (i.e. viewport) manipulation,
+this will do.
+
+The following screenshot demonstrates the current client state. Sexy,
+I know!
+
+![Current game state screenshot](/images/rst-node-week1.png)
+
+
+The asset loading probably took the most effort in this demo. I'm
+creating art assets in inkscape as SVGs, loading them at game start,
+and converting them into sprite textures with `librsvg`. This way the
+game can scale across many resolutions while not requiring a very
+large assets directory.
+
+On the server side I looked into using QUIC for client-server
+communication, but the only crates I could find were either
+synchronous, or used tokio. The rest of the game is built on
+async-std, and I didn't feel like either adding a second runtime _or_
+porting the game. So instead for now I'm using the async-std
+`UdpSocket` abstraction, and if I run into packet delivery problems
+later, I'll either switch to `TcpSocket`, or write an async-std
+wrapper with the `quinn-proto` crate.
+
+
+## What I'm planning for next week
+
+![General node design](/images/rst-concepts0.png)
+
+So far the rendering is largely disconnected from the backend map
+types. Ultimately the renderer needs to be able to render a mesh of
+nodes that are distributed through a 2D space, with links between
+them. Each link also needs to have a length based on the distance
+between two nodes, that determines how long it takes packets to
+traverse it.
+
+![Packet and trail designs](/images/rst-concepts0-1.png)
+
+I already defined a structure of how maps work (as sets of nodes and
+links), although currently without x/y coordinates. In the next week
+I want to integrate map loading into the asset loader (and also make
+the asset loader available to the server which ultimately needs to
+load the map configurations)
+
+_Maybe_ I'll also make enough progress to have a first packet traverse
+a link. But we'll see!
diff --git a/infra/website/content/images/rst-concepts0-1.png b/infra/website/content/images/rst-concepts0-1.png
new file mode 100644
index 000000000000..e480557bfec2
--- /dev/null
+++ b/infra/website/content/images/rst-concepts0-1.png
Binary files differ
diff --git a/infra/website/content/images/rst-concepts0.png b/infra/website/content/images/rst-concepts0.png
new file mode 100644
index 000000000000..1bdd6b14591f
--- /dev/null
+++ b/infra/website/content/images/rst-concepts0.png
Binary files differ
diff --git a/infra/website/content/images/rst-concepts1.png b/infra/website/content/images/rst-concepts1.png
new file mode 100644
index 000000000000..059283083e52
--- /dev/null
+++ b/infra/website/content/images/rst-concepts1.png
Binary files differ
diff --git a/infra/website/content/images/rst-concepts2.png b/infra/website/content/images/rst-concepts2.png
new file mode 100644
index 000000000000..d3e0ebccf583
--- /dev/null
+++ b/infra/website/content/images/rst-concepts2.png
Binary files differ
diff --git a/infra/website/content/images/rst-concepts3.png b/infra/website/content/images/rst-concepts3.png
new file mode 100644
index 000000000000..4f1e4ff35926
--- /dev/null
+++ b/infra/website/content/images/rst-concepts3.png
Binary files differ
diff --git a/infra/website/content/images/rst-node-week1.png b/infra/website/content/images/rst-node-week1.png
new file mode 100644
index 000000000000..78234a4fe60c
--- /dev/null
+++ b/infra/website/content/images/rst-node-week1.png
Binary files differ