diff options
author | Katharina Fey <kookie@spacekookie.de> | 2021-02-14 14:30:03 +0100 |
---|---|---|
committer | Katharina Fey <kookie@spacekookie.de> | 2021-02-14 14:30:03 +0100 |
commit | 2c7a4c0d0c738f181c7ae42b310e823e4ea35df7 (patch) | |
tree | 4b5e89a918d9700cd6377609ee50ec741340d22b | |
parent | effbdeed66e8de8e769b8ac069926ad1a9110e62 (diff) |
website: first devebruary blog post about rst node
-rw-r--r-- | infra/website/content/blog/121_devebuary_part1.md | 87 | ||||
-rw-r--r-- | infra/website/content/images/rst-concepts0-1.png | bin | 0 -> 183295 bytes | |||
-rw-r--r-- | infra/website/content/images/rst-concepts0.png | bin | 0 -> 153020 bytes | |||
-rw-r--r-- | infra/website/content/images/rst-concepts1.png | bin | 0 -> 136337 bytes | |||
-rw-r--r-- | infra/website/content/images/rst-concepts2.png | bin | 0 -> 200003 bytes | |||
-rw-r--r-- | infra/website/content/images/rst-concepts3.png | bin | 0 -> 376464 bytes | |||
-rw-r--r-- | infra/website/content/images/rst-node-week1.png | bin | 0 -> 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 Binary files differnew file mode 100644 index 000000000000..e480557bfec2 --- /dev/null +++ b/infra/website/content/images/rst-concepts0-1.png diff --git a/infra/website/content/images/rst-concepts0.png b/infra/website/content/images/rst-concepts0.png Binary files differnew file mode 100644 index 000000000000..1bdd6b14591f --- /dev/null +++ b/infra/website/content/images/rst-concepts0.png diff --git a/infra/website/content/images/rst-concepts1.png b/infra/website/content/images/rst-concepts1.png Binary files differnew file mode 100644 index 000000000000..059283083e52 --- /dev/null +++ b/infra/website/content/images/rst-concepts1.png diff --git a/infra/website/content/images/rst-concepts2.png b/infra/website/content/images/rst-concepts2.png Binary files differnew file mode 100644 index 000000000000..d3e0ebccf583 --- /dev/null +++ b/infra/website/content/images/rst-concepts2.png diff --git a/infra/website/content/images/rst-concepts3.png b/infra/website/content/images/rst-concepts3.png Binary files differnew file mode 100644 index 000000000000..4f1e4ff35926 --- /dev/null +++ b/infra/website/content/images/rst-concepts3.png diff --git a/infra/website/content/images/rst-node-week1.png b/infra/website/content/images/rst-node-week1.png Binary files differnew file mode 100644 index 000000000000..78234a4fe60c --- /dev/null +++ b/infra/website/content/images/rst-node-week1.png |