diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..951e49ee1
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,3 @@
+[*.{md,mkdn}]
+trim_trailing_whitespace = false
+indent_style = space
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index f58bad3a2..b1330ffda 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,3 +1,3 @@
-Please, read the [contributing guidelines][contributing] before submitting a PR.
+<!-- Please, insert the parent issue's id below. Example: "_Part of #589_" -->
 
-[contributing]: https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md
+_Part of #TODO_
diff --git a/.github/create_newsletter_scaffold.sh b/.github/create_newsletter_scaffold.sh
new file mode 100755
index 000000000..45184e856
--- /dev/null
+++ b/.github/create_newsletter_scaffold.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+if [[ -z "${NEWSLETTER_MONTH}" ]]; then
+  echo "NEWSLETTER_MONTH is not set. Exiting..."
+  exit 1
+fi
+
+if [[ -z "${NEWSLETTER_YEAR}" ]]; then
+  echo "NEWSLETTER_YEAR is not set. Exiting..."
+  exit 1
+fi
+
+if [[ -z "${NEWSLETTER_COUNTER}" ]]; then
+  echo "NEWSLETTER_COUNTER is not set. Exiting..."
+  exit 1
+fi
+
+# NEWSLETTER_NEXT_MONTH_NUMBER
+if [[ -z "${NEWSLETTER_NEXT_MONTH_NUMBER}" ]]; then
+  echo "NEWSLETTER_NEXT_MONTH_NUMBER is not set. Exiting..."
+  exit 1
+fi
+
+cp .github/newsletter-template.md index.md
+sed -i "s/{{\s*NEWSLETTER_MONTH\s*}}/${NEWSLETTER_MONTH}/g" index.md
+sed -i "s/{{\s*NEWSLETTER_YEAR\s*}}/${NEWSLETTER_YEAR}/g" index.md
+sed -i "s/{{\s*NEWSLETTER_COUNTER\s*}}/${NEWSLETTER_COUNTER}/g" index.md
+sed -i "s/{{\s*NEWSLETTER_COUNTER_NEXT\s*}}/$((NEWSLETTER_COUNTER + 1))/g" index.md
+sed -i "s/{{\s*NEWSLETTER_NEXT_MONTH_NUMBER\s*}}/${NEWSLETTER_NEXT_MONTH_NUMBER}/g" index.md
+# Create a dir in content/news with the counter with 3 digits as name
+destination="content/news/$(printf "%03d" ${NEWSLETTER_COUNTER})"
+mkdir -p $destination
+mv index.md $destination/index.md
+git status
diff --git a/.github/newsletter-issue-template.md b/.github/newsletter-issue-template.md
new file mode 100644
index 000000000..ec9566cd3
--- /dev/null
+++ b/.github/newsletter-issue-template.md
@@ -0,0 +1,165 @@
+---
+title: "Newsletter {{ env.NEWSLETTER_COUNTER}}: {{ env.NEWSLETTER_MONTH }} {{ env.NEWSLETTER_YEAR }}"
+labels: coordination, help wanted
+assignees: AngelOnFira, mamaicode, janhohenheim
+---
+
+**Editors:** @janhohenheim, @AngelOnFira, @mamaicode
+
+Another month has gone by, so it's time to put together the Rust Gamedev newsletter with {{ env.NEWSLETTER_MONTH }}'s news!
+
+## Current Schedule
+
+The deadline for all section PRs is the **28th of {{ env.NEWSLETTER_MONTH}}, {{ env.NEWSLETTER_YEAR }}**. Submissions after this date will be added to the next newsletter.
+Our target release date is the **3rd of {{ env.NEWSLETTER_NEXT_MONTH }}, {{ env.NEWSLETTER_YEAR }}**.
+
+## Current Structure & Status
+
+Below is our current planned structure for the newsletter, and the status of each PR (which we'll try to keep updated).
+
+This is **not** an exhaustive list - if you have your own project that you want to write about, just make a comment on this issue and open a PR!
+
+### Game Updates
+
+None yet. Feel free to submit yours!
+
+### Learning Material Updates
+
+None yet. Feel free to submit yours!
+
+### Engine Updates
+
+None yet. Feel free to submit yours!
+
+### Tooling Updates
+
+None yet. Feel free to submit yours!
+
+### Library Updates
+
+None yet. Feel free to submit yours!
+
+### Other News
+
+None yet. Feel free to submit yours!
+
+### Discussions
+
+None yet. Feel free to submit yours!
+
+## Calls for Submissions
+
+### Social Media
+
+- [ ] Reddit
+- [ ] Lemmy
+- [ ] Mastodon
+- [ ] Twitter/X
+- [ ] Hacker News
+
+### Discord Servers
+
+- [ ] Rust GameDev
+- [ ] Bevy
+- [ ] Blue Engine
+- [ ] Macroquad
+- [ ] Fyrox
+- [ ] LogLogGames (comfy engine)
+- [ ] Spicy Lobster
+- [ ] Rust Godot
+
+Let us know if you also want to receive monthly reminders on your Discord server!
+
+## Publishing Steps
+
+- [ ] Final review - by everyone
+- [ ] Publish - by @janhohenheim
+- [ ] Post together with next calls for submissions - by @janhohenheim
+- [ ] Pin thread on social media - by @janhohenheim
+- [ ] Add comment links - by @janhohenheim
+
+## How to Contribute
+
+If you want to help writing the newsletter:
+
+- **Read [CONTRIBUTING.md](https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md?rgh-link-date=2023-09-12T16%3A17%3A34Z).**
+- Choose one or more of the "🆓 **free**" sections listed below, and leave a comment letting us know you want to work on them.
+  - The links in brackets (like `[1](#), [2](#), [3](#)`) are suggestions of links to include in the section. Feel free to add more!
+  - The username listed next to the section (like `@janhohenheim?`) is a suggestion of who may want to pick up the work (usually the project's developer, or someone who has expressed interest in the past).
+  - You are not obligated to write a section if you're tagged or your project is listed! You're welcome to ask someone else to write the section, or to ask for your project to be excluded from this month's post.
+  - Extra sections not listed in the plan are welcomed - just leave a comment and open a PR!
+- Write a short overview in the newsletter's Markdown file, making sure to follow the style guidelines (see below).
+- Send a PR [_to the `source` branch_](https://github.com/rust-gamedev/rust-gamedev.github.io/tree/source) (example PR: [N15: A/B Street #336](https://github.com/rust-gamedev/rust-gamedev.github.io/pull/336)).
+- Mention this issue in your PR's description to link it all together.
+
+## Style Guidelines
+
+The full style guide is in [CONTRIBUTING.md](https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md?rgh-link-date=2023-09-12T16%3A17%3A34Z),
+but here are the most important rules:
+
+- Write in third-person perspective.
+- Each line must be 160 characters or less, for ease of reviewing/diffing.
+- Only one image per section is allowed.
+  - The maximum size is 300kb for static images and 2.5mb for GIFs.
+  - The image should come before the text, and must have alt text for accessibility.
+  - Prefer static images to GIFs/videos, to keep the page load times down.
+  - To include a video, encode it as `H.264` in an `mp4` container and use
+    the `video_figure()` shortcode; videos autoplay in a loop (muted).
+- Each section should be under 1000 characters, and under 6 paragraphs.
+  - This only applies to the rendered text, not the markup.
+- Keep formatting minimal - no bold/italics/etc.
+- Avoid long/nested bullet point lists - no changelogs!
+
+Please use these templates as a starting point:
+
+**Games/apps/libraries:**
+
+```md
+### [Game name]
+
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
+
+[Game name] ([GitHub], [Discord], [Twitter]) by [@nickname]
+is... {short project description in one sentence}.
+
+{An overview of the recent updates with links to more details}.
+
+_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_
+
+[Game name]: http://example.com
+```
+
+**Articles/blog posts/videos/etc:**
+
+```md
+### [Article name]
+
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
+
+[@nickname] published an [article] about...
+{overview what the resource is about}.
+
+_Discussions: [/r/rust_gamedev](link), [Twiter](link), [etc](link)_
+
+[Article name]: http://example.com
+```
diff --git a/newsletter-template.md b/.github/newsletter-template.md
similarity index 52%
rename from newsletter-template.md
rename to .github/newsletter-template.md
index 6b88e0d1a..35158343f 100644
--- a/newsletter-template.md
+++ b/.github/newsletter-template.md
@@ -1,12 +1,15 @@
 +++
-title = "This Month in Rust GameDev #{TODO} - {TODO} {TODO}"
+title = "This Month in Rust GameDev #{{ NEWSLETTER_COUNTER }} - {{ NEWSLETTER_MONTH }} {{ NEWSLETTER_YEAR }}"
 transparent = true
+date = {{ NEWSLETTER_YEAR }}-{{ NEWSLETTER_NEXT_MONTH_NUMBER }}-03
 draft = true
 +++
 
+<!-- no toc -->
+
 <!-- Check the post with markdownlint-->
 
-Welcome to the {TODO}th issue of the Rust GameDev Workgroup's
+Welcome to the {{ NEWSLETTER_COUNTER }}th issue of the Rust GameDev Workgroup's
 monthly newsletter.
 [Rust] is a systems language pursuing the trifecta:
 safety, concurrency, and speed.
@@ -26,18 +29,20 @@ Feel free to send PRs about your own projects!
 [pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
 [coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
 
-[Rust]: https://rust-lang.org
-[join]: https://github.com/rust-gamedev/wg#join-the-fun
-
+- [Announcements](#announcements)
 - [Game Updates](#game-updates)
-- [Learning Material Updates](#learning-material-updates)
 - [Engine Updates](#engine-updates)
-- [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Other News](#other-news)
 - [Meeting Minutes](#meeting-minutes)
+- [Discussions](#discussions)
 - [Requests for Contribution](#requests-for-contribution)
 - [Jobs](#jobs)
 - [Bonus](#bonus)
+- [Future news](#future-news)
 
 <!--
 Ideal section structure is:
@@ -45,8 +50,17 @@ Ideal section structure is:
 ```
 ### [Title]
 
-![image/GIF description](image link)
-_image caption_
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
 
 A paragraph or two with a summary and [useful links].
 
@@ -61,18 +75,26 @@ _Discussions:
 If needed, a section can be split into subsections with a "------" delimiter.
 -->
 
+## Announcements
+
 ## Game Updates
 
 ## Engine Updates
 
 ## Learning Material Updates
 
-## Library & Tooling Updates
+## Tooling Updates
 
-## Popular Workgroup Issues in Github
+## Library Updates
+
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
 ## Meeting Minutes
 
 <!-- Up to 10 most important notes + a link to the full details -->
@@ -82,6 +104,11 @@ or [join the next meeting][join].
 
 [label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting
 
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
 ## Requests for Contribution
 
 <!-- Links to "good first issue"-labels or direct links to specific tasks -->
@@ -95,23 +122,38 @@ or [join the next meeting][join].
 <!-- Bonus section to make the newsletter more interesting
 and highlight events from the past. -->
 
+## Future news
+
+<!-- Section to get more people involved in writing news. -->
+
+Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. 
+Thanks to everyone who helped us this month!
+
+If you want something mentioned in the next newsletter, [send us a pull request][pr].
+
+You can also get an early look at pending issues for the [next newsletter][news_future_prs].
+
+[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N{{ NEWSLETTER_COUNTER }}%27
+[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N{{ NEWSLETTER_COUNTER_NEXT }}%27
+
 ------
 
 That's all news for today, thanks for reading!
 
-Want something mentioned in the next newsletter?
-[Send us a pull request][pr].
-
-Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
-or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+Also, subscribe to our socials if you want to receive fresh news!
+- X/Twitter: [@rust_gamedev][@x_rust_gamedev]
+- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev]
+- Reddit: [/r/rust_gamedev][/r/rust_gamedev]
 
 <!--
 TODO: Add real links and un-comment once this post is published
-**Discussions of this post**:
-[/r/rust](TODO),
-[twitter](TODO).
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Mastodon](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
 -->
 
 [/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
-[@rust_gamedev]: https://twitter.com/rust_gamedev
-[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[@x_rust_gamedev]: https://twitter.com/rust_gamedev
+[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 05255f3f4..7035bdd57 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -2,7 +2,7 @@ name: Zola
 
 on:
   push:
-    branches: source
+    branches: main
   pull_request:
 
 jobs:
@@ -10,25 +10,74 @@ jobs:
     runs-on: ubuntu-latest
     env:
       BASE_URL: https://github.com/getzola/zola/releases/download
-      VERS: v0.12.2
+      VERS: v0.19.1
       ARCH: x86_64-unknown-linux-gnu
-      # https://github.com/marketplace/actions/github-pages#warning-limitation
-      GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
+      # https://github.com/crazy-max/ghaction-github-pages/issues/1#issuecomment-623202206
+      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
     steps:
-    - uses: actions/checkout@v2
+    - uses: actions/checkout@v4
     - name: Lint
       uses: avto-dev/markdown-lint@v1
       with:
         args: '.'
         config: '.markdownlint.json'
     - name: Install Zola
-      run: curl -L ${BASE_URL}/${VERS}/zola-${VERS}-${ARCH}.tar.gz | tar -xz
-    - run: ./zola --version
-    - run: ./zola build
-    - name: Deploy
-      if: github.ref == 'refs/heads/source'
-      uses: crazy-max/ghaction-github-pages@v1
+      run: |
+        curl -L ${BASE_URL}/${VERS}/zola-${VERS}-${ARCH}.tar.gz | tar -xz
+        echo "Zola version: $(./zola --version)"
+    - name: Zola build
+      run: ./zola build
+    - name: Upload GitHub Pages artifact
+      uses: actions/upload-pages-artifact@v3
       with:
-        build_dir: public
-        target_branch: master
-        keep_history: true
+        path: public
+
+  links:
+    name: Check for Broken Links
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v4
+      with:
+        fetch-depth: ${{ github.event_name == 'pull_request' && 2 || 0 }}
+    - name: Get changed files
+      id: changed-files
+      # source: https://stackoverflow.com/a/74268200, added filtering for markdown files
+      run: |
+        if ${{ github.event_name == 'pull_request' }}; then
+            changed_files=$(git diff --name-only -r HEAD^1 HEAD -z | grep '\.md$' -zZ | xargs -0)
+        else
+            changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} -z | grep '\.md$' -zZ | xargs -0)
+        fi
+        echo "changed_files: $changed_files"
+        echo "changed_files=$changed_files" >> $GITHUB_OUTPUT
+    - name: Check links
+      uses: lycheeverse/lychee-action@v1.9.0
+      if: ${{ steps.changed-files.outputs.changed_files != '' }}
+      with:
+        fail: true
+        args: >-
+          --verbose
+          --no-progress
+          --accept '100..=103,200..=299,300..=399'
+          --exclude '[^\w]todo[^\w]?'
+          --exclude 'https://(www\.|old\.)?reddit\.com'
+          --exclude 'https://www.patreon.com'
+          --exclude 'https://gamedev.social'
+          --exclude 'dev.epicgames.com'
+          --exclude-path 'assets/logo/readme.md'
+          ${{ steps.changed-files.outputs.changed_files }}
+
+  pages:
+    needs: zola
+    permissions:
+      pages: write
+      id-token: write
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+    runs-on: ubuntu-latest
+    if: format('refs/heads/{0}', github.event.repository.default_branch) == github.ref
+    steps:
+    - name: Deploy to GitHub Pages
+      id: deployment
+      uses: actions/deploy-pages@v4
diff --git a/.github/workflows/create-newsletter.yaml b/.github/workflows/create-newsletter.yaml
new file mode 100644
index 000000000..888db62aa
--- /dev/null
+++ b/.github/workflows/create-newsletter.yaml
@@ -0,0 +1,45 @@
+name: Create Newsletter
+on:
+  schedule:
+    # Run on the 3rd of every month at 9 am
+    - cron: "0 9 3 * *"
+  workflow_dispatch:
+    inputs: {}
+permissions:
+  contents: write
+  issues: write
+  pull-requests: write
+jobs:
+  create-newsletter:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+        with:
+          ref: main
+      - name: Set environment variables
+        run: |
+          echo "NEWSLETTER_MONTH=$(date +'%B')" >> $GITHUB_ENV
+          echo "NEWSLETTER_NEXT_MONTH=$(date -d' 1 month ' +'%B')" >> $GITHUB_ENV
+          echo "NEWSLETTER_NEXT_MONTH_NUMBER=$(date -d' 1 month ' +'%m')" >> $GITHUB_ENV
+          echo "NEWSLETTER_YEAR=$(date +'%Y')" >> $GITHUB_ENV
+          # take the amount of months since feb 2024 and add 50
+          echo "NEWSLETTER_COUNTER=$(( ( ( $(date +'%Y') - 2024 ) * 12 + $(date +'%m') - 4 ) + 50 ))" >> $GITHUB_ENV
+      - name: Create newsletter scaffold
+        run: ./.github/create_newsletter_scaffold.sh
+      - name: Commit and create pull request
+        uses: peter-evans/create-pull-request@v3
+        with:
+          commit-message: "Create newsletter N${{ env.NEWSLETTER_COUNTER }} for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}"
+          branch: "start-newsletter-${{ env.NEWSLETTER_COUNTER }}"
+          title: "Newsletter N${{ env.NEWSLETTER_COUNTER }} for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}"
+          body: "This PR adds the initial newsletter source file for ${{ env.NEWSLETTER_MONTH }} ${{ env.NEWSLETTER_YEAR }}."
+          assignees: |
+            AngelOnFira
+            janhohenheim
+            mamaicode
+      - name: Create tracking issue
+        uses: JasonEtco/create-an-issue@v2
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          filename: .github/newsletter-issue-template.md
diff --git a/.gitignore b/.gitignore
index 364fdec1a..0036b599a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
 public/
+.idea/
+*.DS_Store
diff --git a/.markdownlint.json b/.markdownlint.json
index 196cbc370..2254eb4e0 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -1,12 +1,21 @@
 {
     "line-length": {
-        "line_length": 80,
+        "line_length": 160,
         "code_blocks": false
     },
-    "ul-style": {
-        "style": "dash"
-    },
-    "no-trailing-punctuation": {
-        "punctuation": ".,;:。，；："
+    "blanks-around-lists": false,
+    "blanks-around-headings": false,
+    "no-multiple-blanks": false,
+    "no-trailing-spaces": false,
+    "no-trailing-punctuation": false,
+    "no-hard-tabs": false,
+    "hr-style": false,
+    "strong-style": false,
+    "no-bare-urls": false,
+    "emphasis-style": false,
+    "no-inline-html": {
+        "allowed_elements": [
+            "abbr"
+        ]
     }
-}
+}
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index f53e401f5..ef174b4f2 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,234 +1,170 @@
 # Contributing Guide
 
-## Workflow Overview
+Thank you for contributing to the newsletter! 💖
 
-- In the last week of the month, a [coordination issue][coordination]
-  with an initial outline of this month's news is created by a coordinator.
+- [Contributing Guide](#contributing-guide)
+  - [Writing Newsletter Sections](#writing-newsletter-sections)
+    - [Templates](#templates)
+      - [Games, Apps or Libraries](#games-apps-or-libraries)
+      - [Articles, Blog Posts or Videos](#articles-blog-posts-or-videos)
+    - [Style Guidelines](#style-guidelines)
+  - [Becoming an Editor](#becoming-an-editor)
 
-  News are mostly collected from [/r/rust_gamedev], [@rust_gamedev] on Twitter,
-  and the "\#showcase-only" [Rust GameDev channel on Discord][gd-discord].
-  Feel free to suggest sections if something cool isn't listed.
+## Writing Newsletter Sections
 
-- During the following few days, contributors take "🆓 **free**" sections
-  and submit corresponding PRs.
+At the end of each month, a [coordination issue] will be created by one of
+the newsletter editors. This signals that it's time to start writing and
+submitting sections!
 
-  Leave a comment like "Taking {section\_name\_1} and {section\_name\_2}"
-  in the coordination issue to claim free sections you are interested in.
-  Claimed sections are marked as "🚧 WIP by @nickname" in the plan.
-  This is done to avoid work duplication.
+The coordination issue will contain the deadlines for submissions, as well
+as an initial outline for the newsletter's content. Each item in the outline
+will have a marker showing whether it is free for someone to pick up, and a
+suggested author.
 
-  You aren't required to be a project's author to write about it.
-
-  Some free sections have a nickname with a question mark in brackets
-  (like "🆓 **free** (@nickname?)") -
-  it's just an invitation to write the corresponding section if you want,
-  but anyone is free to take it.
-
-- Submitted PRs are reviewed, tweaked if needed, and merged.
-
-  Feel free to help with reviews.
-
-- After all the contributors' PRs are processed, coordinators
-  take and write all sections that no one has submitted.
-
-- In the first week of the next month, the final draft is reviewed and merged.
-
-- A small PR that adds links to discussions
-  (see the comment at the bottom of the draft) is made.
-
-- A draft of the next newsletter is added to the repo.
-
-## PRs
-
-- The current draft is `/posts/newsletter-{N}/index.md`,
-  where `{N}` is this issue's number.
-
-- Place the sections accordingly to how they're ordered
-  in the coordination issue.
-
-- PRs are sent against the `source` branch.
-
-- Mention the coordination issue in the PR's description to link it all together.
-
-- Don't send PRs from your main branch, create a unique branch
-  (named like `n14_zemeroth`, `n12_veloren`, etc) for each PR.
-  This allows sending multiple simultaneous PRs
-  and simplifies the creation of the next PRs.
-
-- Make sure that the "Allow edits from maintainers" box is checked
-  ([avoid using org accounts][gh-org] if possible)
-  \- it makes updating/tweaking the PR easier for the coordinators.
-
-- Don't bother resolving merge conflicts in your PR
-  as they will likely to re-appear after yet another PR is merged.
-  It easier for a coordinator to update the PR right before merging it.
-
-- Don't worry about cleaning up the PR's commit history
-  \- we're squashing the PR into one commit before the merge anyway.
-
-[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+> This outline is just a first draft - feel free to submit sections that
+aren't listed!
+
+If you would like to write a section for the newsletter, leave a comment on
+the coordination issue stating what you're planning to write about. This
+allows the editors to keep track of what's in progress, and prevents
+duplicated work.
+
+Next, make your changes to the newsletter's main Markdown file - this is
+located in [`/content/news/{N}/index.md`][newsletter-source], where `{N}` is
+the newsletter's issue number. You can either do this by forking the repo,
+or by using GitHub's built-in editor. If you're picking up a section from
+the coordination issue's outline, use the provided links as a starting
+point.
+
+> **Please follow the [templates](#templates) and
+[style guidelines](#style-guidelines) provided below when writing your
+section, for consistency with the rest of the newsletter!**
+
+Once your edits are done, send a PR against the `source` branch (not
+`master`). Make sure that you mention the coordination issue in the PR
+description, and tick the 'Allow edits from maintainers' box to make it
+easier for editors to fix any issues.
+
+Upon submitting your PR, a CI build will run, checking that your changes
+meet the style guidelines. Please double check that this passes, and watch
+your GitHub notifications for any further review comments from the editors.
+
+### Templates
+
+#### Games, Apps or Libraries
+
+```md
+### [Game name]
+
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
+
+[Game name] ([GitHub], [Discord], [Twitter]) by [@nickname]
+is... {short project description in one sentence}.
+
+{An overview of the recent updates with links to more details}.
+
+_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_
+
+[Game name]: http://example.com
+```
+
+#### Articles, Blog Posts or Videos
+
+```md
+### [Article name]
+
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
+
+[@nickname] published an [article] about...
+{overview what the resource is about}.
+
+_Discussions: [/r/rust_gamedev](link), [Twitter](link), [etc](link)_
+
+[Article name]: http://example.com
+```
+
+### Style Guidelines
+
+- Run [MarkdownLint] against your changes with [our config][md-config].
+  - Most editors have a MarkdownLint plugin available
+    (e.g. [VS Code][md-vscode], [Sublime Text][md-sublime],
+    [Vim][md-vim]).
+- Write in third-person perspective.
+- Lines should be no more than 80 characters long.
+- The rendered text should be under 1000 characters, and under 6
+  paragraphs - this doesn't include markup/links/etc.
+- Do not use rich formatting (bold, italics, etc).
+- Avoid having multiple/nested bullet points.
+  - This guideline may be relaxed if your project has multiple parts that
+    aren't independent enough for their own sections.
+- Only include one image (<300kb), GIF (<2.5mb) or video (<2.5mb).
+  - Images should be placed before text, with an optional caption and
+    mandatory alternate text for accessibility.
+  - Unless essential to demonstrating your project, prefer static images
+    over GIFs/videos, to keep the file size down.
+  - To include a video, encode it as `H.264` in an `mp4` container and use
+    the `video_figure()` shortcode; videos autoplay in a loop (muted).
+- Use singular 'they' if you’re not sure what someone's pronouns are.
+- If a project has been featured in previous newsletters, try to focus on
+  what's new rather than repeating previous content.
+- Donation/sponsorship links are allowed, but should not be the focus of a
+  section.
+
+[coordination issue]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
 [@rust_gamedev]: https://twitter.com/rust_gamedev
 [/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
 [gd-discord]: https://discord.gg/yNtPTb2
-[gh-org]: https://github.com/isaacs/github/issues/1681
-
-## Style
-
-Please, try to maintain a consistent style with the rest of the newsletter.
-
-- In general, the sections are expected to have this structure:
-
-  ```markdown
-  ### [Project]
-
-  ![alt image description](image.jpeg)
-  _image caption_
-
-  [Project] by [@Author] is an awesome Rust project.
-
-  A paragraph or two with a summary and [useful links][other-link].
-
-  _Discussions:
-  [/r/rust](https://reddit.com/r/rust/123456),
-  [twitter](https://twitter.com/todo/status/123456)_
-
-  [Project]: https://first.link
-  [@Author]: https://author.link
-  [other-link]: https://other.link
-  ```
-
-  It was decided to use an image + short TLDR-overview section scheme
-  because people, in general, don't follow the links in digests.
-  This way readers should get a general idea of what's going on
-  just by scrolling through the issue.
-
-  But please don't make the sections too long/detailed,
-  otherwise, the newsletter as a whole will become too bloated.
-  It's not a strict limit, but please try to keep the sections under 200 words.
-
-- Games are quite visual-oriented media
-  so the default section structure includes one image before the text.
-  One image is preferred, two images are usually the max.
-
-  Keep the file size in mind: GIFs should be <2MB in size
-  ([ezgif.com] is a nice online tool for quick editing/optimization),
-  static images should be optimized too
-  (prefer jpeg to png for complex screenshots, etc).
-
-  All images should have a short but meaningful and descriptive alt text
-  (more info about alt text [here](https://moz.com/learn/seo/alt-text)
-  and [here](https://webaim.org/techniques/alttext/)).
-
-  Image files should be placed in the same folder as the post
-  and be named using "\-" to split the words, not "\_".
-
-- Markdown doesn't natively support videos,
-  so the usual workaround is to include a clickable screenshot of the video:
-  [example 1](https://rust-gamedev.github.io/posts/newsletter-012/#ochre-4k-intro),
-  [example 2](https://rust-gamedev.github.io/posts/newsletter-012/#rust-n-games-talk).
-
-- Contributions should be written clearly and simply so that
-  they are accessible to readers for whom English is not their first language.
-
-- Keep in mind that more than half of readers consume the newsletter
-  using mobile devices.
-  So try to avoid things that don't work well with small screens:
-  nested lists, long titles, images with important small details,
-  code blocks with long lines, etc.
-
-- Don't use fourth-level headers.
-  Divide a section into subsections using a `------` line if needed.
-
-- Avoid using bold, italic, etc rich formatting if possible.
-
-- Write from a third-person perspective even if you're writing
-  about your project's updates.
-
-- Use singular "they" if you're not sure what the person's pronouns are.
-
-- If the project was already featured in the newsletter,
-  use a one-sentence description at the beginning of the section
-  as a reminder for readers
-  and describe only the updates next.
-
-- It's ok to add a donation/sponsorship link,
-  but avoid making it a central point of your section.
-
-- Discussion links should be added at the end of the (sub)section only if
-  they already contain some actual interesting discussions.
-
-[ezgif.com]: https://ezgif.com
-
-## Formatting
-
-As with the style, keeping the MD formatting consistent over the newsletter
-is important too.
-So, please, try to follow the formatting guidelines
-but don't worry too much about them:
-they are easier to fix for coordinators than issues with the content itself.
-
-- Some of the basic formatting rules are enforced on CI using [markdownlint].
-
-  If you're working on your PR locally, consider installing
-  one of the markdownlint extensions for your editor
-  ([vscode][vscode-lint], [sublime][sublime-lint], [vim][vim-lint]),
-  otherwise please check the results of the CI run.
-
-- Insert line breaks ([softbreak]) at 80 chars.
-
-- Use [reference-style links][md-reflinks] and group them into blocks
-  at the end of the (sub)sections.
-
-  URLs in these references block can break the 80 chars rule:
-
-  ```markdown
-  [Rapier][rapier], a new pure-rust physics engine,
-  released an [official Bevy plugin][bevy-rapier].
-
-  [rapier]: https://rapier.rs
-  [bevy-rapier]: https://www.dimforge.com/blog/2020/08/25/announcing-the-rapier-physics-engine/#reaching-out-to-other-communities-bevy-and-javascript
-  ```
-
-- Use only dashes (`-`) for list items, `**` for bold, and `_` for italic.
-
-- Don't use double linebreaks and trailing whitespaces.
+[newsletter-source]: https://github.com/rust-gamedev/rust-gamedev.github.io/tree/source/content/news
+[markdownlint]: https://github.com/DavidAnson/markdownlint
+[md-config]: https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/.markdownlint.json
+[md-vscode]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
+[md-sublime]: https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint
+[md-vim]: https://github.com/fannheyward/coc-markdownlint
 
-- Only use inline code formatting ("\`mycrate\`") for crate names
-  if this helps to avoid confusion.
+## Becoming an Editor
 
-- Don't use GitHub shortcodes (like `:tada:`) - they won't be rendered
-  by normal MD renderers. Use plain Unicode emojis instead.
+The newsletter is organized by a small volunteer group of editors. If you
+have some time to spare each month and want to help out, please get in
+touch, either via the [issue tracker][issues] or the
+[gamedev working group's Discord channel][wg-discord]. We'd be happy to have
+you!
 
-- Consequent list item lines are indented with two spaces. Example:
+Editors have two main responsibilities:
 
-  ```markdown
-  - Aaaaaaaa aaaaaaa aaaaaaaaaa (Aaaaaaa) aaaaaaaa aaaa
-    aaaaaa aaaa. Aaaaaa aaaa aa'a aaaaaaaa aaaaaa aaa aaaaaaa.
-    aaaaa aaaaa aa aaaaaaaaa, aaaaaaa.
-  - Aaaaaaaaaaaaa aaaaaaaaaaa aaa aaaaaaa aaaaa.
-    - Aaaaaaaaaaaaaa aaaaaaa aaaaaaaa AaaAA aaaa aaa aaa'a
-      aaaa aaaaa aaaaa `aaa_aaaaa` aaaa, aaaa `aaaa_aaaaa_aaa`,
-      aaaaa.
-    - Aaaaaaa aaaaa aaaaaa (aaaaaaa aaaaaaa).
-  ```
+- Gathering news and links over the course of the month
+- Reviewing, fixing and merging PRs
 
-- Try to strip unneeded parts of URLs.
-  For example, remove `www.`, `old.`, and description parts of Reddit links:
+Each month, one of the editors will be designated as the 'lead editor'. Their additional
+responsibilities are:
 
-  - `https://old.reddit.com/r/rust/comments/i7bcwu/introducing_bevy_a_refreshingly_simple_datadriven`
-  - `https://reddit.com/r/rust/comments/i7bcwu/introducing_bevy`
+- Creating and maintaining the coordination issue
+- Preparing the final draft
+- Publishing the newsletter
+- Linking to the newsletter on social media
+- Creating the files for next month's newsletter
 
-- Use a consistent list item termination
-  (don't mix items ending with ";", ",", ".", etc).
+The lead editor role rotates every month, to spread the workload fairly, but
+you can opt out if you want.
 
-[markdownlint]: https://github.com/DavidAnson/markdownlint
-[vscode-lint]: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
-[sublime-lint]: https://packagecontrol.io/packages/SublimeLinter-contrib-markdownlint
-[vim-lint]: https://github.com/fannheyward/coc-markdownlint
-[softbreak]: https://spec.commonmark.org/0.29/#soft-line-breaks
-[md-reflinks]: https://www.markdownguide.org/basic-syntax/#reference-style-links
-
-Ping the coordinators in the current coordination issue
-or WG's Discord channel if there are any questions.
-If something in this guide is unclear file an issue
-and we'll try to improve it.
+[issues]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues
+[wg-discord]: https://discord.gg/DACMGKM5en
diff --git a/LICENSE-APACHE.txt b/LICENSE-APACHE.txt
new file mode 100644
index 000000000..df5035b57
--- /dev/null
+++ b/LICENSE-APACHE.txt
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2024 Rust GameDev Working Group
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/LICENSE-MIT.txt b/LICENSE-MIT.txt
new file mode 100644
index 000000000..1375ceaa9
--- /dev/null
+++ b/LICENSE-MIT.txt
@@ -0,0 +1,7 @@
+Copyright 2024 Rust GameDev Working Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index cb0c14378..d15b1fb88 100644
--- a/README.md
+++ b/README.md
@@ -8,22 +8,24 @@ To contribute to the newsletter, please see [CONTRIBUTING].
 
 ## Building from Source
 
-The site is built and deployed automatically from the repo (see .github/workflows/ci.yml).
+The site is built and deployed automatically from the repo (see
+[.github/workflows/ci.yml][ci]).
 
 To preview/experiment locally:
 
-1) [Install Zola][zola-get].
+1) [Install Zola][zola-get]. Make sure to use 0.19.1, to match [our CI config][ci]!
 2) Run `zola serve --drafts` and open the link.
 
 [zola-get]: https://getzola.org/documentation/getting-started/installation
+[ci]: https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/.github/workflows/ci.yml
 
 ## License
 
 This project is licensed under either of:
 
-- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
+- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE.txt) or
   <http://www.apache.org/licenses/LICENSE-2.0>)
-- MIT license ([LICENSE-MIT](LICENSE-MIT) or
+- MIT license ([LICENSE-MIT](LICENSE-MIT.txt) or
   <http://opensource.org/licenses/MIT>)
 
 With the exception of:
diff --git a/assets/logo/readme.md b/assets/logo/readme.md
new file mode 100644
index 000000000..94cca47c6
--- /dev/null
+++ b/assets/logo/readme.md
@@ -0,0 +1,12 @@
+# Logo
+
+The vectorized logo is a re-drawn version based on
+[@shmutalov](https://github.com/shmutalov)'s [original, rasterized version](https://github.com/rust-gamedev/wg/issues/4).
+
+It incorporates the official [rust-logo-gear-only.svg](https://github.com/rust-lang/rust-artwork/blob/master/logo/rust-logo-gear-only.svg).
+
+## Exporting
+
+The various exported PNG's in [static](../static/) can be found in [rust-gamedev-logo-raw.svg](./rust-gamedev-logo-raw.svg) as individual (Inkscape) pages.
+
+After exporting be sure to run `svgo` on the exported SVG and `optipng` on the exported PNGs.
diff --git a/assets/logo/rust-gamedev-logo-raw.svg b/assets/logo/rust-gamedev-logo-raw.svg
new file mode 100644
index 000000000..12dec1bae
--- /dev/null
+++ b/assets/logo/rust-gamedev-logo-raw.svg
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   version="1.1"
+   height="106"
+   width="106"
+   id="svg39"
+   sodipodi:docname="rust-gamedev-logo-raw.svg"
+   xml:space="preserve"
+   inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"><defs
+     id="defs39"><inkscape:path-effect
+       effect="bspline"
+       id="path-effect87"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /><inkscape:path-effect
+       effect="bspline"
+       id="path-effect83"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /><inkscape:path-effect
+       effect="bspline"
+       id="path-effect77"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /><inkscape:path-effect
+       effect="bspline"
+       id="path-effect75"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /><inkscape:path-effect
+       effect="bspline"
+       id="path-effect71"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /><mask
+       id="holes"><rect
+         x="-60"
+         y="-60"
+         width="120"
+         height="120"
+         fill="white"
+         id="rect35" /><circle
+         id="hole"
+         cy="-40"
+         r="3" /><use
+         xlink:href="#hole"
+         transform="rotate(72)"
+         id="use36" /><use
+         xlink:href="#hole"
+         transform="rotate(144)"
+         id="use37" /><use
+         xlink:href="#hole"
+         transform="rotate(216)"
+         id="use38" /><use
+         xlink:href="#hole"
+         transform="rotate(288)"
+         id="use39" /></mask><inkscape:path-effect
+       effect="bspline"
+       id="path-effect87-1"
+       is_visible="true"
+       lpeversion="1.3"
+       weight="33.333333"
+       steps="2"
+       helper_size="0"
+       apply_no_weight="true"
+       apply_with_weight="true"
+       only_selected="false"
+       uniform="false" /></defs><sodipodi:namedview
+     id="namedview39"
+     pagecolor="#ffffff"
+     bordercolor="#000000"
+     borderopacity="0.25"
+     inkscape:showpageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     inkscape:deskcolor="#d1d1d1"
+     showguides="true"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="146.3711"
+     inkscape:cy="62.57895"
+     inkscape:window-width="2560"
+     inkscape:window-height="1371"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g83"
+     inkscape:export-bgcolor="#ffffff07"><inkscape:page
+       x="0"
+       y="0"
+       width="106"
+       height="106"
+       id="page1"
+       margin="0"
+       bleed="0"
+       inkscape:label="Export"
+       inkscape:export-filename="social-card.png"
+       inkscape:export-xdpi="96"
+       inkscape:export-ydpi="96" /><inkscape:page
+       x="116"
+       y="0"
+       width="106"
+       height="106"
+       id="page2"
+       margin="0"
+       bleed="0"
+       inkscape:label="Editable" /><inkscape:page
+       x="232"
+       y="0"
+       width="106"
+       height="106"
+       id="page3"
+       margin="0"
+       bleed="0"
+       inkscape:label="Original Raster Image" /><inkscape:page
+       x="348"
+       y="0"
+       width="192"
+       height="192"
+       id="page112"
+       margin="0"
+       bleed="0"
+       inkscape:label="android-chrome-192x192" /><inkscape:page
+       x="549.41211"
+       y="0"
+       width="512"
+       height="512"
+       id="page113"
+       margin="0"
+       bleed="0"
+       inkscape:label="android-chrome-512x512" /><inkscape:page
+       x="1071.4121"
+       y="0"
+       width="180"
+       height="180"
+       id="page190"
+       margin="0"
+       bleed="0"
+       inkscape:label="apple-touch-icon" /><inkscape:page
+       x="1261.4121"
+       y="0"
+       width="16"
+       height="16"
+       id="page191"
+       margin="0"
+       bleed="0"
+       inkscape:label="favicon-16x16" /><inkscape:page
+       x="1287.4121"
+       y="0"
+       width="32"
+       height="32"
+       id="page192"
+       margin="0"
+       bleed="0"
+       inkscape:export-filename="./favicon-32x32.png"
+       inkscape:export-xdpi="96"
+       inkscape:export-ydpi="96"
+       inkscape:label="favicon-32x32" /><inkscape:page
+       x="1329.4121"
+       y="0"
+       width="1200"
+       height="600"
+       id="page193"
+       margin="0"
+       bleed="0"
+       inkscape:export-filename="social-card.png"
+       inkscape:export-xdpi="96"
+       inkscape:export-ydpi="96"
+       inkscape:label="social-card" /><sodipodi:guide
+       position="169,106"
+       orientation="-1,0"
+       id="guide1"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,134,229)" /></sodipodi:namedview><image
+     width="105.00002"
+     height="105.00002"
+     preserveAspectRatio="none"
+     xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9AAAAfQCAYAAACaOMR5AAAA6GVYSWZJSSoACAAAAAoAAAEEAAEA&#10;AADQBwAAAQEEAAEAAADQBwAAAgEDAAMAAACGAAAAEgEDAAEAAAABAAAAGgEFAAEAAACMAAAAGwEF&#10;AAEAAACUAAAAKAEDAAEAAAACAAAAMQECAA0AAACcAAAAMgECABQAAACqAAAAaYcEAAEAAAC+AAAA&#10;AAAAAAgACAAIAEgAAAABAAAASAAAAAEAAABHSU1QIDIuMTAuMzgAADIwMjQ6MDc6MDIgMTU6MTQ6&#10;NTUAAwABoAMAAQAAAAEAAAACoAQAAQAAANAHAAADoAQAAQAAANAHAAAAAAAAFc/BOwAAAYNpQ0NQ&#10;SUNDIHByb2ZpbGUAAHicfZE9SMNAHMVfU6UirQ52UHHIUJ3soiKOWoUiVAi1QqsOJpd+QZOGJMXF&#10;UXAtOPixWHVwcdbVwVUQBD9AnB2cFF2kxP8lhRYxHhz34929x907QGhUmGZ1zQKabpvpZELM5lbF&#10;0CtCEBBBH4ZkZhlzkpSC7/i6R4Cvd3Ge5X/uzxFR8xYDAiLxLDNMm3iDeHrTNjjvE0dZSVaJz4nH&#10;Tbog8SPXFY/fOBddFnhm1Myk54mjxGKxg5UOZiVTI54ijqmaTvlC1mOV8xZnrVJjrXvyF4bz+soy&#10;12mOIIlFLEGCCAU1lFGBjTitOikW0rSf8PEPu36JXAq5ymDkWEAVGmTXD/4Hv7u1CpMTXlI4AXS/&#10;OM7HKBDaBZp1x/k+dpzmCRB8Bq70tr/aAGY+Sa+3tdgR0L8NXFy3NWUPuNwBBp8M2ZRdKUhTKBSA&#10;9zP6phwwcAv0rnm9tfZx+gBkqKvUDXBwCIwVKXvd5909nb39e6bV3w82CHKOZ5KALQAAEDlpVFh0&#10;WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2Vo&#10;aUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6&#10;eG1wdGs9IlhNUCBDb3JlIDQuNC4wLUV4aXYyIj4KIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDov&#10;L3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgPHJkZjpEZXNjcmlwdGlv&#10;biByZGY6YWJvdXQ9IiIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x&#10;LjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlw&#10;ZS9SZXNvdXJjZUV2ZW50IyIKICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVu&#10;dHMvMS4xLyIKICAgIHhtbG5zOkdJTVA9Imh0dHA6Ly93d3cuZ2ltcC5vcmcveG1wLyIKICAgIHht&#10;bG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHht&#10;bG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgeG1sbnM6eG1wPSJo&#10;dHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlk&#10;OkRGMjgyNjM3NTU3NEU3MTFCNEZCQUYxMEQ3RURCMEMzIgogICB4bXBNTTpJbnN0YW5jZUlEPSJ4&#10;bXAuaWlkOjU0NjY2ZWFjLTNlMTctNDU1MC04OTM1LTlkNDg3NDA2N2MyYSIKICAgeG1wTU06T3Jp&#10;Z2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOkRGMjgyNjM3NTU3NEU3MTFCNEZCQUYxMEQ3RURCMEMz&#10;IgogICBkYzpmb3JtYXQ9ImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AiCiAgIEdJTVA6&#10;QVBJPSIyLjAiCiAgIEdJTVA6UGxhdGZvcm09IkxpbnV4IgogICBHSU1QOlRpbWVTdGFtcD0iMTcx&#10;OTkyNjEwNTU2OTg5OCIKICAgR0lNUDpWZXJzaW9uPSIyLjEwLjM4IgogICBwaG90b3Nob3A6Q29s&#10;b3JNb2RlPSIzIgogICB0aWZmOk9yaWVudGF0aW9uPSIxIgogICB4bXA6Q3JlYXRlRGF0ZT0iMjAx&#10;Ny0wNi0xNlQxNjozNjowOCswNTowMCIKICAgeG1wOkNyZWF0b3JUb29sPSJHSU1QIDIuMTAiCiAg&#10;IHhtcDpNZXRhZGF0YURhdGU9IjIwMjQ6MDc6MDJUMTU6MTQ6NTUrMDI6MDAiCiAgIHhtcDpNb2Rp&#10;ZnlEYXRlPSIyMDI0OjA3OjAyVDE1OjE0OjU1KzAyOjAwIj4KICAgPHhtcE1NOkhpc3Rvcnk+CiAg&#10;ICA8cmRmOlNlcT4KICAgICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIKICAg&#10;ICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpERjI4MjYzNzU1NzRFNzExQjRGQkFGMTBEN0VE&#10;QjBDMyIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2lu&#10;ZG93cykiCiAgICAgIHN0RXZ0OndoZW49IjIwMTctMDYtMTZUMTY6MzY6MDgrMDU6MDAiLz4KICAg&#10;ICA8cmRmOmxpCiAgICAgIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIgogICAgICBzdEV2dDpwYXJh&#10;bWV0ZXJzPSJmcm9tIGltYWdlL3BuZyB0byBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9w&#10;Ii8+CiAgICAgPHJkZjpsaQogICAgICBzdEV2dDphY3Rpb249InNhdmVkIgogICAgICBzdEV2dDpj&#10;aGFuZ2VkPSIvIgogICAgICBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMjgyNjM3NTU3NEU3&#10;MTFCNEZCQUYxMEQ3RURCMEMzIgogICAgICBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90&#10;b3Nob3AgQ1M2IChXaW5kb3dzKSIKICAgICAgc3RFdnQ6d2hlbj0iMjAxNy0wNy0yOVQxNzowMjox&#10;MyswNTowMCIvPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJzYXZlZCIKICAgICAg&#10;c3RFdnQ6Y2hhbmdlZD0iLyIKICAgICAgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDphNzQ2YTFj&#10;Mi0yZDllLTQyMGMtYTg3My05Y2EwMGVkYjkxMmEiCiAgICAgIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9&#10;IkdpbXAgMi4xMCAoTGludXgpIgogICAgICBzdEV2dDp3aGVuPSIyMDI0LTA3LTAyVDE1OjE1OjA1&#10;KzAyOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNj&#10;cmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg&#10;IAogICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/Pv7iH3kAAAAE&#10;Z0FNQQAAsY8L/GEFAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJ&#10;TUUH6AcCDQ8F0cBcxwAAIABJREFUeNrs3Xe8pVdZ6PHfTCa9VxJKSGhpSO9FcwMK0gQkgEBApVmQ&#10;iKAoKES9KgpeQUHkikoTFEGqeBEVURBQurSAgAFCCBB6ejK5f7wnGkKSycw5+5y91/5+P5/nM3Gc&#10;cvazHua8az3vWqsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&#10;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2bZMUAAAAwLrb&#10;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&#10;"
+     id="image1"
+     x="232.49998"
+     y="0.49998856"
+     style="display:inline;mix-blend-mode:normal;stroke-width:25.3968" /><g
+     id="g83"
+     inkscape:label="logo"
+     style="display:inline;mix-blend-mode:normal"><g
+       id="gear"
+       mask="url(#holes)"
+       transform="translate(53,53)"
+       sodipodi:insensitive="true"><circle
+         r="43"
+         fill="none"
+         stroke="#000000"
+         stroke-width="9"
+         id="circle1"
+         cx="0"
+         cy="0" /><g
+         id="cogs"><polygon
+           id="cog"
+           stroke="#000000"
+           stroke-width="3"
+           stroke-linejoin="round"
+           points="46,-3 46,3 51,0 " /><use
+           xlink:href="#cog"
+           transform="rotate(11.25)"
+           id="use1" /><use
+           xlink:href="#cog"
+           transform="rotate(22.5)"
+           id="use2" /><use
+           xlink:href="#cog"
+           transform="rotate(33.75)"
+           id="use3" /><use
+           xlink:href="#cog"
+           transform="rotate(45)"
+           id="use4" /><use
+           xlink:href="#cog"
+           transform="rotate(56.25)"
+           id="use5" /><use
+           xlink:href="#cog"
+           transform="rotate(67.5)"
+           id="use6" /><use
+           xlink:href="#cog"
+           transform="rotate(78.75)"
+           id="use7" /><use
+           xlink:href="#cog"
+           transform="rotate(90)"
+           id="use8" /><use
+           xlink:href="#cog"
+           transform="rotate(101.25)"
+           id="use9" /><use
+           xlink:href="#cog"
+           transform="rotate(112.5)"
+           id="use10" /><use
+           xlink:href="#cog"
+           transform="rotate(123.75)"
+           id="use11" /><use
+           xlink:href="#cog"
+           transform="rotate(135)"
+           id="use12" /><use
+           xlink:href="#cog"
+           transform="rotate(146.25)"
+           id="use13" /><use
+           xlink:href="#cog"
+           transform="rotate(157.5)"
+           id="use14" /><use
+           xlink:href="#cog"
+           transform="rotate(168.75)"
+           id="use15" /><use
+           xlink:href="#cog"
+           transform="scale(-1)"
+           id="use16" /><use
+           xlink:href="#cog"
+           transform="rotate(-168.75)"
+           id="use17" /><use
+           xlink:href="#cog"
+           transform="rotate(-157.5)"
+           id="use18" /><use
+           xlink:href="#cog"
+           transform="rotate(-146.25)"
+           id="use19" /><use
+           xlink:href="#cog"
+           transform="rotate(-135)"
+           id="use20" /><use
+           xlink:href="#cog"
+           transform="rotate(-123.75)"
+           id="use21" /><use
+           xlink:href="#cog"
+           transform="rotate(-112.5)"
+           id="use22" /><use
+           xlink:href="#cog"
+           transform="rotate(-101.25)"
+           id="use23" /><use
+           xlink:href="#cog"
+           transform="rotate(-90)"
+           id="use24" /><use
+           xlink:href="#cog"
+           transform="rotate(-78.75)"
+           id="use25" /><use
+           xlink:href="#cog"
+           transform="rotate(-67.5)"
+           id="use26" /><use
+           xlink:href="#cog"
+           transform="rotate(-56.25)"
+           id="use27" /><use
+           xlink:href="#cog"
+           transform="rotate(-45)"
+           id="use28" /><use
+           xlink:href="#cog"
+           transform="rotate(-33.75)"
+           id="use29" /><use
+           xlink:href="#cog"
+           transform="rotate(-22.5)"
+           id="use30" /><use
+           xlink:href="#cog"
+           transform="rotate(-11.25)"
+           id="use31" /></g><g
+         id="mounts"><polygon
+           id="mount"
+           stroke="#000000"
+           stroke-width="6"
+           stroke-linejoin="round"
+           points="7,-42 -7,-42 0,-35 " /><use
+           xlink:href="#mount"
+           transform="rotate(72)"
+           id="use32" /><use
+           xlink:href="#mount"
+           transform="rotate(144)"
+           id="use33" /><use
+           xlink:href="#mount"
+           transform="rotate(-144)"
+           id="use34" /><use
+           xlink:href="#mount"
+           transform="rotate(-72)"
+           id="use35" /></g></g><g
+       id="g85-2"
+       inkscape:label="controller"
+       transform="translate(-189.48389,-13.52668)"
+       style="display:inline;mix-blend-mode:normal"><path
+         id="path76-7"
+         style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:5.31402"
+         inkscape:label="controller-shape-bspline"
+         d="M 258.44384 46.408028 C 259.10353 46.392237 259.77116 46.503328 260.44384 46.781075 C 264.03138 48.262378 267.76759 54.493684 270.2036 59.94709 C 272.63967 65.400502 273.77438 70.076174 273.88134 74.474434 C 273.9883 78.872687 273.06737 82.992483 271.05517 85.050606 C 269.0429 87.108728 265.94186 87.10269 263.37157 84.945137 C 260.80135 82.787584 258.81079 78.576845 255.34813 75.95295 C 251.88554 73.329048 247.27477 72.529122 242.49853 72.529121 C 237.72222 72.529121 233.05399 73.329048 229.56103 75.95295 C 226.068 78.576845 224.07663 82.787584 221.50634 84.945137 C 218.93605 87.10269 215.83501 87.108728 213.82274 85.050606 C 211.81054 82.992483 210.88961 78.872687 210.99657 74.474434 C 211.10353 70.076174 212.23824 65.400502 214.67431 59.94709 C 217.11032 54.493684 220.84843 48.262378 224.43603 46.781075 C 228.02357 45.299765 231.46234 48.568996 234.43798 50.460762 C 237.41362 52.352528 239.68539 52.818184 242.43993 52.818184 C 245.19447 52.818184 247.58708 52.328469 250.50243 50.449043 C 252.87116 48.922012 255.58519 46.476455 258.44384 46.408028 z M 225.27196 53.847481 A 2.5 2.5 0 0 0 222.77196 56.347481 A 2.5 2.5 0 0 0 225.27196 58.847481 A 2.5 2.5 0 0 0 227.77196 56.347481 A 2.5 2.5 0 0 0 225.27196 53.847481 z M 261.06493 55.148262 L 258.57274 55.148262 C 258.48955 55.148262 258.42235 55.215443 258.42235 55.298653 L 258.42235 57.45295 L 258.42235 59.308418 L 258.42235 59.945137 C 258.42235 60.028347 258.35516 60.095528 258.27196 60.095528 L 257.72313 60.095528 L 253.62743 60.095528 C 253.54424 60.095528 253.47704 60.162708 253.47704 60.245918 L 253.47704 62.738106 C 253.47704 62.821316 253.54423 62.888496 253.62743 62.888496 L 257.56103 62.888496 L 258.27196 62.888496 C 258.35515 62.888496 258.42235 62.955677 258.42235 63.038887 L 258.42235 63.538887 L 258.42235 65.531075 L 258.42235 67.683418 C 258.42235 67.766629 258.48954 67.833809 258.57274 67.833809 L 261.06493 67.833809 C 261.14812 67.833809 261.21532 67.766628 261.21532 67.683418 L 261.21532 65.519356 L 261.21532 63.529121 L 261.21532 63.027168 C 261.21532 62.943957 261.28251 62.876778 261.36571 62.876778 L 266.01024 62.876778 C 266.02204 62.876778 266.0344 62.878184 266.0454 62.880684 C 266.11093 62.864478 266.16063 62.808776 266.16063 62.738106 L 266.16063 60.245918 C 266.16063 60.162707 266.09344 60.095528 266.01024 60.095528 L 261.91454 60.095528 L 261.36571 60.095528 C 261.28252 60.095528 261.21532 60.028347 261.21532 59.945137 L 261.21532 59.443184 L 261.21532 57.45295 L 261.21532 55.298653 C 261.21532 55.215443 261.14813 55.148262 261.06493 55.148262 z M 230.24853 58.771309 A 2.5 2.5 0 0 0 227.74853 61.271309 A 2.5 2.5 0 0 0 230.24853 63.771309 A 2.5 2.5 0 0 0 232.74853 61.271309 A 2.5 2.5 0 0 0 230.24853 58.771309 z M 220.29735 58.771309 A 2.5 2.5 0 0 0 217.79735 61.271309 A 2.5 2.5 0 0 0 220.29735 63.771309 A 2.5 2.5 0 0 0 222.79735 61.271309 A 2.5 2.5 0 0 0 220.29735 58.771309 z M 225.27196 63.718575 A 2.5 2.5 0 0 0 222.77196 66.218575 A 2.5 2.5 0 0 0 225.27196 68.718575 A 2.5 2.5 0 0 0 227.77196 66.218575 A 2.5 2.5 0 0 0 225.27196 63.718575 z M 249.82274 64.75959 L 245.14696 64.75959 C 245.05998 64.75959 244.99071 64.828857 244.99071 64.91584 L 244.99071 67.521309 C 244.99071 67.608292 245.05998 67.679512 245.14696 67.679512 L 249.82274 67.679512 C 249.90973 67.679512 249.97899 67.608292 249.97899 67.521309 L 249.97899 64.91584 C 249.97899 64.828857 249.90973 64.75959 249.82274 64.75959 z M 239.7329 64.75959 L 235.05712 64.75959 C 234.97014 64.75959 234.89892 64.828857 234.89892 64.91584 L 234.89892 67.521309 C 234.89892 67.608292 234.97014 67.679512 235.05712 67.679512 L 239.7329 67.679512 C 239.81988 67.679512 239.88915 67.608292 239.88915 67.521309 L 239.88915 64.91584 C 239.88915 64.828857 239.81988 64.75959 239.7329 64.75959 z "
+         transform="matrix(-1,0,0,1,484.8789,0.034668)" /></g></g><g
+     id="g86"
+     inkscape:label="logo (editable)"
+     style="display:inline;mix-blend-mode:normal"
+     transform="translate(116)"><g
+       id="g75"
+       mask="url(#holes)"
+       transform="translate(53,53)"
+       inkscape:label="gear"
+       sodipodi:insensitive="true"><circle
+         r="43"
+         fill="none"
+         stroke="#000000"
+         stroke-width="9"
+         id="circle4"
+         cx="0"
+         cy="0" /><g
+         id="g70"><polygon
+           id="polygon4"
+           stroke="#000000"
+           stroke-width="3"
+           stroke-linejoin="round"
+           points="46,3 51,0 46,-3 " /><use
+           xlink:href="#cog"
+           transform="rotate(11.25)"
+           id="use40" /><use
+           xlink:href="#cog"
+           transform="rotate(22.5)"
+           id="use41" /><use
+           xlink:href="#cog"
+           transform="rotate(33.75)"
+           id="use42" /><use
+           xlink:href="#cog"
+           transform="rotate(45)"
+           id="use43" /><use
+           xlink:href="#cog"
+           transform="rotate(56.25)"
+           id="use44" /><use
+           xlink:href="#cog"
+           transform="rotate(67.5)"
+           id="use45" /><use
+           xlink:href="#cog"
+           transform="rotate(78.75)"
+           id="use46" /><use
+           xlink:href="#cog"
+           transform="rotate(90)"
+           id="use47" /><use
+           xlink:href="#cog"
+           transform="rotate(101.25)"
+           id="use48" /><use
+           xlink:href="#cog"
+           transform="rotate(112.5)"
+           id="use49" /><use
+           xlink:href="#cog"
+           transform="rotate(123.75)"
+           id="use50" /><use
+           xlink:href="#cog"
+           transform="rotate(135)"
+           id="use51" /><use
+           xlink:href="#cog"
+           transform="rotate(146.25)"
+           id="use52" /><use
+           xlink:href="#cog"
+           transform="rotate(157.5)"
+           id="use53" /><use
+           xlink:href="#cog"
+           transform="rotate(168.75)"
+           id="use54" /><use
+           xlink:href="#cog"
+           transform="scale(-1)"
+           id="use55" /><use
+           xlink:href="#cog"
+           transform="rotate(-168.75)"
+           id="use56" /><use
+           xlink:href="#cog"
+           transform="rotate(-157.5)"
+           id="use57" /><use
+           xlink:href="#cog"
+           transform="rotate(-146.25)"
+           id="use58" /><use
+           xlink:href="#cog"
+           transform="rotate(-135)"
+           id="use59" /><use
+           xlink:href="#cog"
+           transform="rotate(-123.75)"
+           id="use60" /><use
+           xlink:href="#cog"
+           transform="rotate(-112.5)"
+           id="use61" /><use
+           xlink:href="#cog"
+           transform="rotate(-101.25)"
+           id="use62" /><use
+           xlink:href="#cog"
+           transform="rotate(-90)"
+           id="use63" /><use
+           xlink:href="#cog"
+           transform="rotate(-78.75)"
+           id="use64" /><use
+           xlink:href="#cog"
+           transform="rotate(-67.5)"
+           id="use65" /><use
+           xlink:href="#cog"
+           transform="rotate(-56.25)"
+           id="use66" /><use
+           xlink:href="#cog"
+           transform="rotate(-45)"
+           id="use67" /><use
+           xlink:href="#cog"
+           transform="rotate(-33.75)"
+           id="use68" /><use
+           xlink:href="#cog"
+           transform="rotate(-22.5)"
+           id="use69" /><use
+           xlink:href="#cog"
+           transform="rotate(-11.25)"
+           id="use70" /></g><g
+         id="g74"><polygon
+           id="polygon70"
+           stroke="#000000"
+           stroke-width="6"
+           stroke-linejoin="round"
+           points="-7,-42 0,-35 7,-42 " /><use
+           xlink:href="#mount"
+           transform="rotate(72)"
+           id="use71" /><use
+           xlink:href="#mount"
+           transform="rotate(144)"
+           id="use72" /><use
+           xlink:href="#mount"
+           transform="rotate(-144)"
+           id="use73" /><use
+           xlink:href="#mount"
+           transform="rotate(-72)"
+           id="use74" /></g></g><g
+       id="g85"
+       inkscape:label="controller"
+       transform="translate(-189.43945,-13.52758)"><path
+         id="path76"
+         style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke-width:5.31402"
+         transform="matrix(-1,0,0,1,484.8789,0.034668)"
+         d="m 229.56169,75.952408 c -3.49302,2.623916 -5.48458,6.834796 -8.05487,8.992363 -2.57029,2.157567 -5.67169,2.163249 -7.68396,0.105112 -2.01227,-2.058137 -2.9327,-6.176778 -2.82574,-10.575066 0.10696,-4.398288 1.24192,-9.073486 3.67799,-14.526933 2.43608,-5.453448 6.17321,-11.685067 9.76081,-13.166384 3.58761,-1.481317 7.02546,1.787756 10.0011,3.679536 2.97565,1.89178 5.24789,2.356858 8.00243,2.356858 2.75454,0 5.14736,-0.489758 8.06272,-2.369198 2.91535,-1.87944 6.3532,-5.148513 9.94081,-3.667196 3.5876,1.481317 7.32473,7.712936 9.76081,13.166384 2.43607,5.453447 3.57103,10.128645 3.67799,14.526933 0.10696,4.398288 -0.81347,8.516929 -2.82574,10.575066 -2.01227,2.058137 -5.11367,2.052455 -7.68396,-0.105112 -2.57029,-2.157567 -4.56185,-6.368447 -8.0245,-8.992363 -3.46266,-2.623916 -8.07252,-3.42374 -12.84883,-3.42374 -4.77631,-10e-7 -9.44403,0.799824 -12.93706,3.42374 z"
+         sodipodi:nodetypes="ccccccccccccccccc"
+         inkscape:original-d="m 228.15345,74.168337 c -2.08478,4.407988 -4.07634,8.618867 -6.11452,12.928318 -3.1024,0.0057 -6.2038,0.01135 -9.30716,0.01705 -0.92118,-4.121958 -1.84162,-8.240599 -2.76266,-12.36197 1.13497,-4.675205 2.26993,-9.350404 3.40489,-14.025594 3.73719,-6.231702 7.47432,-12.463324 11.21157,-18.695135 3.43796,3.269175 6.87581,6.538248 10.31371,9.807373 2.51339,0.514437 4.78563,0.979514 7.54017,1.54331 2.75454,-0.563796 5.14736,-1.053553 7.54017,-1.54331 3.4379,-3.269125 6.87575,-6.538198 10.31371,-9.807373 3.73725,6.231811 7.47438,12.463433 11.21157,18.695135 1.13496,4.67519 2.26992,9.350389 3.40489,14.025594 -0.92104,4.121371 -1.84148,8.240012 -2.76266,12.36197 -3.10336,-0.0057 -6.20476,-0.01137 -9.30716,-0.01705 -2.03818,-4.309451 -4.02974,-8.52033 -6.11452,-12.928318 -4.84053,-0.839845 -9.45039,-1.63967 -14.19692,-2.463205 -4.80609,0.823535 -9.47381,1.62336 -14.37508,2.463205 z"
+         inkscape:path-effect="#path-effect87"
+         inkscape:label="controller-shape-bspline" /><rect
+         style="display:inline;opacity:0.611565;fill:#f600ff;fill-opacity:1;stroke-width:5.31402"
+         id="rect76"
+         width="4.9898849"
+         height="2.9191461"
+         x="234.89928"
+         y="64.794258"
+         ry="0.15701017" /><path
+         id="path77"
+         style="display:inline;opacity:0.611565;fill:#f600ff;fill-opacity:1;stroke-width:5.31402"
+         d="m 223.81445,55.183594 c -0.0832,0 -0.15039,0.06718 -0.15039,0.15039 v 2.154297 1.990235 0.501953 c 0,0.08321 -0.0672,0.15039 -0.15039,0.15039 h -0.54883 -4.0957 c -0.0832,0 -0.15039,0.06718 -0.15039,0.150391 v 2.492188 c 0,0.07067 0.0497,0.126372 0.11523,0.142578 0.011,-0.0025 0.0234,-0.0039 0.0352,-0.0039 h 4.64453 c 0.0832,0 0.15039,0.06718 0.15039,0.150391 v 0.501953 1.990235 2.164062 c 0,0.08321 0.0672,0.150391 0.15039,0.150391 h 2.49219 c 0.0832,0 0.15039,-0.06718 0.15039,-0.150391 v -2.152344 -1.992187 -0.5 c 0,-0.08321 0.0672,-0.150391 0.15039,-0.150391 h 0.71094 3.93359 c 0.0832,0 0.15039,-0.06718 0.15039,-0.15039 V 60.28125 c 0,-0.08321 -0.0672,-0.150391 -0.15039,-0.150391 h -4.0957 -0.54883 c -0.0832,0 -0.15039,-0.06718 -0.15039,-0.15039 V 59.34375 57.488281 55.333984 c 0,-0.08321 -0.0672,-0.15039 -0.15039,-0.15039 z" /><circle
+         style="display:inline;opacity:0.611565;fill:#008000;fill-opacity:1;stroke-width:5.31402"
+         id="circle77"
+         cx="254.63106"
+         cy="61.305382"
+         r="2.5" /><circle
+         style="display:inline;opacity:0.611565;fill:#008000;fill-opacity:1;stroke-width:5.31402"
+         id="circle78"
+         cx="259.60669"
+         cy="56.382809"
+         r="2.5" /><circle
+         style="display:inline;opacity:0.611565;fill:#008000;fill-opacity:1;stroke-width:5.31402"
+         id="circle83"
+         cx="259.60669"
+         cy="66.25383"
+         r="2.5" /><circle
+         style="display:inline;opacity:0.611565;fill:#008000;fill-opacity:1;stroke-width:5.31402"
+         id="circle84"
+         cx="264.58234"
+         cy="61.305382"
+         r="2.5" /><rect
+         style="display:inline;opacity:0.611565;fill:#f600ff;fill-opacity:1;stroke-width:5.31402"
+         id="rect1"
+         width="4.9898849"
+         height="2.9191461"
+         x="244.98975"
+         y="64.794258"
+         ry="0.15701017" /></g></g><use
+     x="0"
+     y="0"
+     xlink:href="#g83"
+     id="use115"
+     transform="matrix(4.8728511,0,0,4.8728511,547.151,-2.2611083)"
+     style="stroke-width:0.205219" /><use
+     x="0"
+     y="0"
+     xlink:href="#g83"
+     id="use190"
+     transform="matrix(1.8278597,0,0,1.8278597,347.58595,-0.8765641)"
+     style="stroke-width:0.547088" /><use
+     x="0"
+     y="0"
+     xlink:href="#g83"
+     id="use191"
+     transform="matrix(1.7136726,0,0,1.7136726,1070.5875,-0.8246478)"
+     style="stroke-width:0.583542" /><use
+     x="0"
+     y="0"
+     xlink:href="#g83"
+     id="use192"
+     transform="matrix(0.1523598,0,0,0.1523598,1261.337,-0.0750694)"
+     style="stroke-width:6.56341" /><use
+     x="0"
+     y="0"
+     xlink:href="#use192"
+     id="use193"
+     transform="matrix(1.9994179,0,0,1.9994179,-1234.6731,0.0046568)"
+     style="stroke-width:0.500146" /><text
+     xml:space="preserve"
+     style="font-size:8px;line-height:normal;font-family:Calibri;-inkscape-font-specification:Calibri;font-feature-settings:'ss03';text-decoration-color:#000000;opacity:0.447893;fill:#ffd42a;stroke:#ff0000;stroke-width:5.31402"
+     x="1898.6591"
+     y="303.34882"
+     id="text194"><tspan
+       sodipodi:role="line"
+       id="tspan194" /></text><g
+     id="g199"
+     inkscape:label="social-card"><rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:5.31402"
+       id="rect198"
+       width="1200"
+       height="600"
+       x="1329.4121"
+       y="0" /><use
+       x="0"
+       y="0"
+       xlink:href="#use193"
+       id="use194"
+       transform="matrix(5.609179,0,0,5.609179,-4951.2736,174.64376)"
+       style="stroke-width:0.178279" /><g
+       id="g198"
+       transform="translate(13.60791,32.182831)"><text
+         xml:space="preserve"
+         style="font-size:80px;line-height:normal;font-family:Calibri;-inkscape-font-specification:Calibri;font-feature-settings:'ss03';text-decoration-color:#000000;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:5.31402"
+         x="1391.8628"
+         y="226.05283"
+         id="text195"><tspan
+           sodipodi:role="line"
+           id="tspan195"
+           x="1391.8628"
+           y="226.05283"
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:80px;font-family:Roboto;-inkscape-font-specification:Roboto;fill:#000000;fill-opacity:1">Rust GameDev WG </tspan></text><text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:normal;font-family:Roboto;-inkscape-font-specification:Roboto;font-feature-settings:'ss03';text-decoration-color:#000000;opacity:1;fill:#5b5b5b;fill-opacity:1;stroke:none;stroke-width:5.31402"
+         x="1395.8276"
+         y="308.93698"
+         id="text196"><tspan
+           sodipodi:role="line"
+           id="tspan196"
+           x="1395.8276"
+           y="308.93698"
+           style="font-size:40px;fill:#5b5b5b;fill-opacity:1">Making Rust a first-class choice </tspan><tspan
+           sodipodi:role="line"
+           x="1395.8276"
+           y="358.93698"
+           style="font-size:40px;fill:#5b5b5b;fill-opacity:1"
+           id="tspan197">for game development </tspan></text></g><rect
+       style="opacity:1;fill:#0066cc;fill-opacity:1;stroke:none;stroke-width:5.31402"
+       id="rect195"
+       width="1200"
+       height="30.314938"
+       x="1329.4121"
+       y="569.68506" /></g></svg>
diff --git a/config.toml b/config.toml
index f849a592c..5fc7bd5cc 100644
--- a/config.toml
+++ b/config.toml
@@ -1,11 +1,14 @@
-title = "Rust Game Development Working Group"
+title = "Rust GameDev WG"
 description = "Stay up to date with the progress and recent developments in the Rust Game Development Working Group."
-base_url = "https://rust-gamedev.github.io/"
+base_url = "https://gamedev.rs/"
 default_language = "en"
 compile_sass = true
+generate_feeds = true
+feed_filenames = ["rss.xml"]
+
+[markdown]
 highlight_code = true
-generate_feed = true
-feed_filename = "rss.xml"
+smart_punctuation = true
 
 [extra]
 date_format = "%F"
diff --git a/content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md b/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md
similarity index 91%
rename from content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md
rename to content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md
index bc581dfad..847e8b2c1 100644
--- a/content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md
+++ b/content/blog/2019-08-18-introducing-the-rust-game-development-working-group.md
@@ -1,6 +1,10 @@
 +++
 title = "Introducing the Rust Game Development Working Group"
-aliases = ["/2019/08/18/introducing-the-rust-game-development-working-group", "/2019/08/18/introducing-the-rust-game-development-working-group.html"]
+aliases = [
+  "/2019/08/18/introducing-the-rust-game-development-working-group",
+  "/2019/08/18/introducing-the-rust-game-development-working-group.html",
+  "posts/introducing-the-rust-game-development-working-group",
+]
 +++
 
 Rust's combination of low-level control, excellent performance
@@ -43,7 +47,7 @@ we've already got several projects underway:
 
 ## How can I get involved?
 
-Our main hub for co-ordination is our [Github repository](https://github.com/rust-gamedev/wg),
+Our main hub for co-ordination is our [GitHub repository](https://github.com/rust-gamedev/wg),
 where you can (and should!) raise issues calling out your ideas, proposals
 or problems with the Rust gamedev ecosystem.
 We also have a `#wg-gamedev` channel on the [official Rust Discord server](https://discord.gg/j6QJsMd),
diff --git a/content/blog/_index.md b/content/blog/_index.md
new file mode 100644
index 000000000..05fe8455c
--- /dev/null
+++ b/content/blog/_index.md
@@ -0,0 +1,7 @@
++++
+title = "Blog Posts"
+insert_anchor_links = "right"
+template = "posts.html"
+page_template = "post.html"
+sort_by = "date"
++++
diff --git a/content/blog/graphics-meetup-02/index.md b/content/blog/graphics-meetup-02/index.md
new file mode 100644
index 000000000..477d2e5a7
--- /dev/null
+++ b/content/blog/graphics-meetup-02/index.md
@@ -0,0 +1,65 @@
++++
+title = "Rust Graphics Meetup 2"
+date = 2022-05-18
+transparent = true
+aliases = ["posts/graphics-meetup-02"]
++++
+
+<!-- markdownlint-disable single-title heading-increment no-blanks-blockquote -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Graphics Meetup](rust-graphics-meetup-2.jpg)
+
+The second Rust Graphics Meetup will take place on [May 21st at 16:00
+UTC+0][meetup-time]. This meetup is a chance to see what others have been
+working on in the Rust graphics community. You can see the videos from the
+[first meetup here][rust-graphics-meetup-1].
+
+The meetup will take place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream].
+
+[meetup-time]: https://everytimezone.com/s/b6ec5c17
+[rust-graphics-meetup-1]: https://www.youtube.com/playlist?list=PLYiOdhpKxxXJwaocrJcOCoBhlV6foaO8F
+[youtube-stream]: https://www.youtube.com/watch?v=aIdsrZDActM
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Schedule
+
+### Vismut | [Lukas Orsvärn]
+
+#### 16:00 - 16:20
+
+> Vismut will be a procedural texturing tool for Windows and Linux, allowing for
+> a 100% non-destructive material creation workflow. This means you build
+> textures from scratch using procedural nodes, allowing for changes to any step
+> in the process at any time, including changing the texture's resolution.
+
+#### *[Recording][vismut-recording]*
+
+[Lukas Orsvärn]: https://github.com/lukors
+[vismut-recording]: https://www.youtube.com/watch?v=0IsllXP7_pY
+
+### Screen-13 | [John Wells]
+
+#### 16:20 - 16:30
+
+> Screen 13 is an easy-to-use Vulkan rendering engine in the spirit of QBasic.
+
+#### *[Recording][screen-13-recording]*
+
+[John Wells]: https://github.com/attackgoat/screen-13
+[screen-13-recording]: https://www.youtube.com/watch?v=ywZznsCXUjs
+
+### Optimizing wgpu with Data Driven Design | [Connor Fitzgerald]
+
+#### 16:30 - 17:00
+
+> A look into how Data Driven Design is the key to the performance increases
+> coming in wgpu 0.13 and what the future holds for solving long standing
+> performance bottlenecks in the codebase. wgpu is the graphics abstraction at
+> the core of many rust projects and ensuring it is as fast as possible will
+> push the boundary of what is possible in safe Rust today.
+
+#### *[Recording][wgpu-recording]*
+
+[Connor Fitzgerald]: https://github.com/cwfitzgerald
+[wgpu-recording]: https://www.youtube.com/watch?v=DDG4bcGs7zM
diff --git a/content/blog/graphics-meetup-02/rust-graphics-meetup-2.jpg b/content/blog/graphics-meetup-02/rust-graphics-meetup-2.jpg
new file mode 100644
index 000000000..fee3dcb1f
Binary files /dev/null and b/content/blog/graphics-meetup-02/rust-graphics-meetup-2.jpg differ
diff --git a/content/blog/graphics-meetup-03/index.md b/content/blog/graphics-meetup-03/index.md
new file mode 100644
index 000000000..8e25e7c97
--- /dev/null
+++ b/content/blog/graphics-meetup-03/index.md
@@ -0,0 +1,59 @@
++++
+title = "Rust Graphics Meetup 3"
+date = 2023-01-25
+transparent = true
+aliases = ["posts/graphics-meetup-03"]
++++
+
+<!-- markdownlint-disable single-title heading-increment -->
+<!-- markdownlint-disable no-blanks-blockquote no-emphasis-as-header -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Graphics Meetup](rust-graphics-meetup-3.jpg)
+
+The third Rust Graphics Meetup will take place on [Jan 28th at 16:00
+UTC+0][meetup-time]. This meetup is a chance to see what others have been
+working on in the Rust graphics community. You can see videos from the [previous
+meetups here][rust-graphics-meetup-playlist].
+
+The meetup will take place on the Rust Gamedev [YouTube][youtube-stream] and
+[Twitch][twitch-stream].
+
+[meetup-time]: https://everytimezone.com/s/0d2e3d68
+[rust-graphics-meetup-playlist]: https://www.youtube.com/watch?v=Yzr9va5UtiE&list=PLYiOdhpKxxXJwaocrJcOCoBhlV6foaO8F
+[youtube-stream]: https://www.youtube.com/watch?v=63dnzjw4azI
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Schedule
+
+### Introduction 👋 | [Dzmitry Malyshau] & [Connor Fitzgerald]
+
+**16:00 - 16:05**
+
+### Hello, Blade! | [Dzmitry Malyshau]
+
+**16:05 - 16:40**
+
+> Introducing a lean and mean graphics library 'Blade', for fun and no profit.
+
+### Implementing an Extensible Renderer | [Philip Degarmo]
+
+**16:40 - 16:55**
+
+> Quick introduction to Rafx, and some ideas for making more extensible
+> renderers.
+
+### Rend3: High Performance, Cross Platform, GPU Driven Rendering in wgpu and WebGPU | [Connor Fitzgerald]
+
+**16:55 - 17:25**
+
+> An overview of the current state of rend3: new data and gpu driven rendering
+> model, performance improvements, and a look into the future.
+
+### Conclusion
+
+**17:25 - 17:30**
+
+[Dzmitry Malyshau]: https://github.com/kvark
+[Connor Fitzgerald]: https://github.com/cwfitzgerald
+[Philip Degarmo]: https://github.com/aclysma
diff --git a/content/blog/graphics-meetup-03/rust-graphics-meetup-3.jpg b/content/blog/graphics-meetup-03/rust-graphics-meetup-3.jpg
new file mode 100644
index 000000000..00bbb1cdc
Binary files /dev/null and b/content/blog/graphics-meetup-03/rust-graphics-meetup-3.jpg differ
diff --git a/content/blog/newsletter-changes/index.md b/content/blog/newsletter-changes/index.md
new file mode 100644
index 000000000..32605c3b2
--- /dev/null
+++ b/content/blog/newsletter-changes/index.md
@@ -0,0 +1,65 @@
++++
+title = "Newsletter Changes"
+date = 2024-05-02
+transparent = true
++++
+
+*Please fill out [this survey][survey] before skipping this section! More info below!*
+
+Hey everyone, it's been a while! As you've certainly noticed, the newsletter has
+been on hiatus for some months. The reason was mostly maintainer burnout, which is
+also why the newsletter of August 2023 was not published [until a few days
+ago][august-news].
+
+We're back now though! A couple of community members, Jan Hohenheim
+([@janhohenheim]) and Thierry Berger ([@Vrixyz]), have led the revival of the
+newsletter. This includes making changes requested by the community, and
+improving sustainability for the long term.
+
+### Schedule Changes
+
+Thierry Berger ([@Vrixyz]), has come up with a new [monthly
+schedule][monthly_schedule] that we will try out:
+
+- 3rd of the month: Newsletter starts. A call for submissions is made on social
+media and community Discord servers interested in receiving it. At the same
+time, last month's newsletter is published.
+- 3rd to 28th of the month: submissions are collected and the newsletter is
+  written.
+- 28th of the month: Submissions are closed. New submissions go into the next
+  month's newsletter.
+- 3rd of the next month: The newsletter is published. Any submissions not edited
+in time will be moved to the next month or removed entirely.
+
+This more strict schedule should help with the issue of late entries and reduce
+the pressure of editing by having a dedicated time for it with no incoming
+submissions. The goal is to be more consistent and reliable in our publishing
+schedule.
+
+### Community Survey
+
+This restructuring is also a good time to improve the content of the newsletter.
+We've got some community feedback on the [Rust GameDev Discord][Discord] already
+and would like to hear more from you. It would be great if you could fill out
+[this survey][survey] to let us know how we can improve the newsletter going
+forward. The survey closes on the **28th of May 2024**. We will be evaluating
+the [survey] results in an upcoming blog post, so stay tuned for that.
+
+### Future Steps
+
+Based on feedback we've already gotten, the steps for next months are:
+
+- Add an email subscription option to the newsletter
+- Setup a system for how to edit entries that are not ready before the
+newsletter ships. We are currently looking into either hiring a part-time
+editor, using generative AI to add a few sentences where needed, or simply
+removing these entries.
+
+That's all for now. Have fun reading!
+
+[august-news]: https://gamedev.rs/news/049/
+[@janhohenheim]: https://github.com/janhohenheim
+[@Vrixyz]: https://github.com/Vrixyz
+[monthly_schedule]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1417#issuecomment-1764534286
+[survey]: https://forms.gle/oeSb46twWsxRKYJe7
+[Discord]: https://discord.gg/game-development-in-rust-676678179678715904
diff --git a/content/blog/rust-gamedev-meetup-30/blue-engine.png b/content/blog/rust-gamedev-meetup-30/blue-engine.png
new file mode 100644
index 000000000..2c5cb65b0
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/blue-engine.png differ
diff --git a/content/blog/rust-gamedev-meetup-30/cybergate.png b/content/blog/rust-gamedev-meetup-30/cybergate.png
new file mode 100644
index 000000000..86f5ec350
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/cybergate.png differ
diff --git a/content/posts/newsletter-018/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-30/gamedev-meetup.png
similarity index 100%
rename from content/posts/newsletter-018/gamedev-meetup.png
rename to content/blog/rust-gamedev-meetup-30/gamedev-meetup.png
diff --git a/content/blog/rust-gamedev-meetup-30/index.md b/content/blog/rust-gamedev-meetup-30/index.md
new file mode 100644
index 000000000..92114f01c
--- /dev/null
+++ b/content/blog/rust-gamedev-meetup-30/index.md
@@ -0,0 +1,76 @@
++++
+title = "Rust Gamedev Meetup 30"
+date = 2023-09-23
+transparent = true
+aliases = ["posts/gamedev-meetup-30"]
++++
+
+<!-- markdownlint-disable single-title heading-increment -->
+<!-- markdownlint-disable no-blanks-blockquote no-emphasis-as-header -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Gamedev Meetup](gamedev-meetup.png)
+
+The 30th Rust Gamedev Meetup took place on September 23rd. You can watch the
+recording of the meetup [here on YouTube][meetup-video]. The meetup will take
+place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream].
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[meetup-video]: https://www.youtube.com/watch?v=fAp_-Hp2gGo
+[youtube-stream]: https://www.youtube.com/@RustGameDevelopment
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Talks
+
+### [Blue Engine] | [@ElhamAryanpur]
+
+![Blue engine](blue-engine.png)
+
+> Updates about the Blue Engine project and its 0.5.0 release.
+
+**Links:**
+
+- [Blue Engine GitHub repository]
+- [Blue Engine Discord server]
+
+[@ElhamAryanpur]: https://github.com/ElhamAryanpur
+[Blue Engine GitHub repository]: https://github.com/AryanpurTech/BlueEngine
+[Blue Engine Discord server]: https://discord.gg/s7xsj9q
+
+### [Cybergate] | [@cybersoulK]
+
+![Cybergate](cybergate.png)
+
+> An overview of Cybergate, a multiplayer game being developed for native and
+> browser play.
+
+**Links:**
+
+- [Cybergate Discord server]
+
+[@cybersoulK]: https://github.com/cybersoulK
+[Cybergate Discord server]: https://discord.gg/R7DkHqw7zJ
+
+### [no_std: ?no_problem]  | [@kpreid]
+
+![no_std: ?no_problem](no-std.png)
+
+> An introduction to making your Rust crates `no_std` compatible, and
+> why you might want to do this.
+
+**Links:**
+
+- [YouTube Video]
+- [Slides]
+
+[@kpreid]: https://github.com/kpreid
+[YouTube Video]: https://www.youtube.com/watch?v=Oq-3bOBrpeo
+[Slides]: https://docs.google.com/presentation/d/e/2PACX-1vTfI-IhBIjyz3vf1sGAQSw02xUuQaDuQ5N4KZRvIdblJrX0uf9ijarVx7gwpUNzhhPotTEqKbgFP0Qe/pub?start=false&slide=id.p
+
+[Blue Engine]: https://www.youtube.com/live/fAp_-Hp2gGo?si=3uhCXRBGEtJa9XY_&t=731
+[Cybergate]: https://www.youtube.com/live/fAp_-Hp2gGo?si=U8yNvON23EqAXz19&t=1581
+[no_std: ?no_problem]: https://www.youtube.com/live/fAp_-Hp2gGo?si=N_bzPJNx29XDhoyf&t=3010
diff --git a/content/blog/rust-gamedev-meetup-30/no-std.png b/content/blog/rust-gamedev-meetup-30/no-std.png
new file mode 100644
index 000000000..bee974a64
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-30/no-std.png differ
diff --git a/content/posts/newsletter-019/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-31/gamedev-meetup.png
similarity index 100%
rename from content/posts/newsletter-019/gamedev-meetup.png
rename to content/blog/rust-gamedev-meetup-31/gamedev-meetup.png
diff --git a/content/blog/rust-gamedev-meetup-31/hardware.jpg b/content/blog/rust-gamedev-meetup-31/hardware.jpg
new file mode 100644
index 000000000..a4afd4f4a
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/hardware.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-31/index.md b/content/blog/rust-gamedev-meetup-31/index.md
new file mode 100644
index 000000000..feba3ba35
--- /dev/null
+++ b/content/blog/rust-gamedev-meetup-31/index.md
@@ -0,0 +1,68 @@
++++
+title = "Rust Gamedev Meetup 31"
+date = 2023-10-14
+transparent = true
+aliases = ["posts/gamedev-meetup-31"]
++++
+
+<!-- markdownlint-disable single-title heading-increment -->
+<!-- markdownlint-disable no-blanks-blockquote no-emphasis-as-header -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Gamedev Meetup](gamedev-meetup.png)
+
+The 31th Rust Gamedev Meetup took place on October 14th. You can watch the
+recording of the meetup [here on YouTube][meetup-video]. The meetup will take
+place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream].
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[meetup-video]: https://www.youtube.com/watch?v=MadryxOwjb8
+[youtube-stream]: https://www.youtube.com/@RustGameDevelopment
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Talks
+
+### [Games, but no video: Embedded trinkets in Rust] | [@Noxim]
+
+![Hardware](hardware.jpg)
+
+> An overview of making games with constrained hardware
+
+- [Slides]
+- [Hardware]
+- [Firmware]
+- [Rustc]
+- [PAC + HAL]
+- [Blog post][More details]
+
+[Slides]: https://docs.google.com/presentation/d/1LnxSBdzKOGLGbUAiyaZShYfjJYitCOkM8MzPNLfFEQc/edit?usp=sharing
+[Hardware]: https://oshwlab.com/noxim/nxr-w-101-001_copy
+[Firmware]: https://owo.codes/noxim/nxr-t202-bitfiddle
+[Rustc]: https://github.com/noxime/rust/tree/rv32e-upstream
+[PAC + HAL]: https://github.com/ch32-rs
+[More details]: https://noxim.xyz/blog/rust-ch32v003/
+[Games, but no video: Embedded trinkets in Rust]: https://www.youtube.com/live/MadryxOwjb8?si=erY49m_5_HDFkrpf&t=694
+[@Noxim]: https://github.com/Noxime
+
+### [Tunnet] | [@puzzled_squid]
+
+![tunnet title](tunnet.jpg)
+
+> A short game where you design, build, and optimize
+> a computer network in an underground complex
+
+- [itch.io page]
+- [YouTube trailer]
+- [Website]
+
+![tunnet title](tunnet-network.jpg)
+
+[itch.io page]: https://puzzled-squid.itch.io/tunnet
+[YouTube trailer]: https://www.youtube.com/watch?v=6gxytilYoOM
+[Website]: https://puzzledsquid.xyz/
+[Tunnet]: https://www.youtube.com/live/MadryxOwjb8?si=vZrhqUszuv9qvG9t&t=2878
+[@puzzled_squid]: https://github.com/puzzled-squid
diff --git a/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg b/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg
new file mode 100644
index 000000000..129c877f3
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/tunnet-network.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-31/tunnet.jpg b/content/blog/rust-gamedev-meetup-31/tunnet.jpg
new file mode 100644
index 000000000..569fc68ac
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-31/tunnet.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-32/blade.jpg b/content/blog/rust-gamedev-meetup-32/blade.jpg
new file mode 100644
index 000000000..db06a1fb8
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/blade.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/gamedev-meetup.png differ
diff --git a/content/blog/rust-gamedev-meetup-32/index.md b/content/blog/rust-gamedev-meetup-32/index.md
new file mode 100644
index 000000000..4a33c8848
--- /dev/null
+++ b/content/blog/rust-gamedev-meetup-32/index.md
@@ -0,0 +1,101 @@
++++
+title = "Rust Gamedev Meetup 32"
+date = 2023-11-11
+transparent = true
+aliases = ["posts/gamedev-meetup-32"]
++++
+
+<!-- markdownlint-disable single-title heading-increment -->
+<!-- markdownlint-disable no-blanks-blockquote no-emphasis-as-header -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Gamedev Meetup](gamedev-meetup.png)
+
+The 32nd Rust Gamedev Meetup took place on November 11th. You can watch the
+recording of the meetup [here on YouTube][meetup-video]. The meetup took
+place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream].
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[meetup-video]: https://www.youtube.com/watch?v=MadryxOwjb8
+[youtube-stream]: https://www.youtube.com/@RustGameDevelopment
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Talks
+
+### [Minewars][minewars-video] | [@inodentry]
+
+[![Minewars](minewars.jpg)][minewars-video]
+
+> An upcoming multiplayer minesweeper game. **[Video link][minewars-video]**
+
+**Links:**
+
+- GitHub + Sponsors: [@inodentry]
+- Mastodon: [@iyes@mastodon.gamedev.place]
+- Discord: [Minewars Discord server]
+- Open source client: [Minewars GitHub]
+- Public documentation: [Minewars Documentation]
+- Open-source vs proprietary plans: [Minewars FOSS Plans]
+
+[@inodentry]: https://github.com/inodentry
+[@iyes@mastodon.gamedev.place]: https://mastodon.gamedev.place/@iyes
+[Minewars GitHub]: https://github.com/IyesGames/minewars
+[Minewars Documentation]: https://iyes.games/minewars/book/
+[Minewars FOSS Plans]: https://iyes.games/minewars/book/foss.html
+[minewars-video]: https://www.youtube.com/watch?v=Mb7Xv-Mu-G4
+[Minewars Discord server]: https://discord.gg/Caxfzjwxs5
+
+### [Blade][blade-video] | [@Kvark]
+
+[![Blade](blade.jpg)][blade-video]
+
+> Sharp and simple graphics library **[Video link][blade-video]**
+
+**Links:**
+
+- GitHub repo: [Blade]
+
+[@Kvark]: https://github.com/kvark
+[Blade]: https://github.com/kvark/blade
+[blade-video]: https://youtu.be/Q5IUOvuXoC8
+
+### [Jarl][jarl-video] | [@zaycev] | [Video link][jarl-video]
+
+[![Jarl](jarl.jpg)][jarl-video]
+
+> A fantasy colony simulator. **[Video link][jarl-video]**
+
+**Links:**
+
+- GitHub: [@zaycev]
+- Website: [Jarl Game]
+- Twitter: [@jarl_game]
+- YouTube: [Jarl-Game-com]
+- Discord: [Jarl Discord server]
+
+[@zaycev]: https://github.com/zaycev
+[Jarl Game]: https://jarl-game.com/
+[@jarl_game]: https://twitter.com/jarl_game
+[Jarl-Game-com]: https://www.youtube.com/@Jarl-Game-com
+[Jarl Discord server]: https://discord.com/invite/Dcwemjyfbb
+[jarl-video]: https://www.youtube.com/watch?v=Sv7jcyqThdM
+
+### [The Seeker][seeker-video] | [@inodentry], [@c12hz] | [Video link][seeker-video]
+
+[![Seeker](theseeker.jpg)][seeker-video]
+
+> A 2D platformer game. **[Video link][seeker-video]**
+
+**Links:**
+
+- Discord: [Seeker Discord server]
+- GitHub: [@TheSeekerGame]
+
+[@c12hz]: https://github.com/c12hz
+[Seeker Discord server]: https://discord.gg/b7YRzMFzBN
+[@TheSeekerGame]: https://github.com/TheSeekerGame/TheSeeker
+[seeker-video]: https://www.youtube.com/watch?v=EGIIKbnh-1M
diff --git a/content/blog/rust-gamedev-meetup-32/jarl.jpg b/content/blog/rust-gamedev-meetup-32/jarl.jpg
new file mode 100644
index 000000000..ef1c46591
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/jarl.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-32/minewars.jpg b/content/blog/rust-gamedev-meetup-32/minewars.jpg
new file mode 100644
index 000000000..f461e4081
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/minewars.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-32/theseeker.jpg b/content/blog/rust-gamedev-meetup-32/theseeker.jpg
new file mode 100644
index 000000000..c4c847fd5
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-32/theseeker.jpg differ
diff --git a/content/blog/rust-gamedev-meetup-33/blue-engine.png b/content/blog/rust-gamedev-meetup-33/blue-engine.png
new file mode 100644
index 000000000..c24907b28
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/blue-engine.png differ
diff --git a/content/blog/rust-gamedev-meetup-33/bones.png b/content/blog/rust-gamedev-meetup-33/bones.png
new file mode 100644
index 000000000..c25afb22c
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/bones.png differ
diff --git a/content/blog/rust-gamedev-meetup-33/galaxion.png b/content/blog/rust-gamedev-meetup-33/galaxion.png
new file mode 100644
index 000000000..525d45c72
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/galaxion.png differ
diff --git a/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png b/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/blog/rust-gamedev-meetup-33/gamedev-meetup.png differ
diff --git a/content/blog/rust-gamedev-meetup-33/index.md b/content/blog/rust-gamedev-meetup-33/index.md
new file mode 100644
index 000000000..682b2438c
--- /dev/null
+++ b/content/blog/rust-gamedev-meetup-33/index.md
@@ -0,0 +1,84 @@
++++
+title = "Rust Gamedev Meetup 33"
+date = 2023-12-09
+transparent = true
+aliases = ["posts/gamedev-meetup-33"]
++++
+
+<!-- markdownlint-disable single-title heading-increment -->
+<!-- markdownlint-disable no-blanks-blockquote no-emphasis-as-header -->
+<!-- markdownlint-configure-file {"line-length": {"heading_line_length": 120}} -->
+
+![Rust Gamedev Meetup](gamedev-meetup.png)
+
+The 33rd Rust Gamedev Meetup took place on December 9th. You can watch the
+recording of the meetup [here on YouTube][meetup-video]. The meetup took
+place on the Rust Gamedev [YouTube][youtube-stream] and [Twitch][twitch-stream].
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[meetup-video]: https://www.youtube.com/watch?v=eItRSKJGV1I
+[youtube-stream]: https://www.youtube.com/@RustGameDevelopment
+[twitch-stream]: https://www.twitch.tv/RustGameDev
+
+## Talks
+
+### [Blue Engine][blue-engine-video] | [@ElhamAryanpur]
+
+[![Blue Engine](blue-engine.png)][blue-engine-video]
+
+> Updates about community work for the Blue Engine, as well as future engine
+> features coming up.
+
+**Links:**
+
+- [Blue Engine GitHub repository]
+- [Blue Engine Discord server]
+
+[@ElhamAryanpur]: https://github.com/ElhamAryanpur
+[blue-engine-video]: https://www.youtube.com/watch?v=7u9YrBOnTww
+[Blue Engine GitHub repository]: https://github.com/AryanpurTech/BlueEngine
+[Blue Engine Discord server]: https://discord.gg/s7xsj9q
+
+### [Galaxion Trade Wars][galaxion-trade-wars-video] | [@Syn-Nine]
+
+[![Galaxion Trade Wars](galaxion.png)][galaxion-trade-wars-video]
+
+> Space Trading Game made in Rust based on the Trade Wars 2002 BBS game.
+
+**Links:**
+
+- [Galaxion Trade Wars GitHub repository]
+- [Syn-Nine Twitter]
+- [Syn-Nine Website]
+
+[@Syn-Nine]: https://github.com/Syn-Nine
+[galaxion-trade-wars-video]: https://www.youtube.com/watch?v=oNx5wqAsvXM
+[Galaxion Trade Wars GitHub repository]: https://github.com/Syn-Nine/galaxion-trade-empire/
+[Syn-Nine Twitter]: https://twitter.com/Syn9Dev
+[Syn-Nine Website]: https://syn9.thehideoutgames.com/
+
+### [Bones Engine][bones-engine-video] | [@zicklag]
+
+[![Bones Engine](bones.png)][bones-engine-video]
+
+> A 'meta-engine' framework made to facilitate the development of moddable,
+> multiplayer 2D games.
+
+**Links:**
+
+- [@zicklag]
+- [Bone Engine GitHub repository]
+- [Jumpy GitHub repository]
+- [Jumpy's Migration to the Bones Framework]
+- [Introducing Lua Scripting in Jumpy]
+
+[@zicklag]: https://github.com/zicklag
+[bones-engine-video]: https://www.youtube.com/watch?v=bEyZubAx_oM
+[Bone Engine GitHub repository]: https://github.com/fishfolk/bones
+[Jumpy GitHub repository]: https://github.com/fishfolk/jumpy
+[Jumpy's Migration to the Bones Framework]: https://fishfolk.org/blog/jumpy-migration-to-bones-framework/
+[Introducing Lua Scripting in Jumpy]: https://fishfolk.org/blog/introducing-lua-scripting-in-jumpy/
diff --git a/content/blog/rustyjam-02/aaron.png b/content/blog/rustyjam-02/aaron.png
new file mode 100644
index 000000000..e70629a1d
Binary files /dev/null and b/content/blog/rustyjam-02/aaron.png differ
diff --git a/content/blog/rustyjam-02/index.md b/content/blog/rustyjam-02/index.md
new file mode 100644
index 000000000..ae4ec9e8a
--- /dev/null
+++ b/content/blog/rustyjam-02/index.md
@@ -0,0 +1,44 @@
++++
+title = "Rusty Jam 2"
+date = 2022-06-11
+transparent = true
++++
+
+![Aaron: a drawing of a humanoid fox](aaron.png)
+
+Hey everyone, we're finally announcing the [Rusty Jam #2][itch]!
+It's a great chance to try out some new Rusty tech,
+form a team of like-minded rustaceans, and feel what
+a full cycle of making a game in Rust feels like in miniature!
+
+Submissions will be open from June 18th to June 26th.
+Voting on submissions will begin as soon as the jam ends and will run for a week.
+
+This jam focuses more on using Rust than anything else.
+That means you aren't restricted on your design, music, or graphics,
+as long as you use Rust to make it!
+
+The optional-to-use theme for the jam is going to be announced
+[in the Rusty Jam Discord][discord] and pinned in the community section.
+While you're waiting for the theme, you can start looking for a team
+in the #looking-for-team Discord channel.
+If you want to solo jam though, that's fine too.
+
+[See the itch.io page for more details about dates, rules, modifiers, etc!][itch]
+
+------
+
+This jam's mascot is Aaron the Rust-loving fox ([submitted][mascot] by vSmiles)!
+
+> Aaron is a proud supporter of Rust and loves spreading this love
+> around the world.
+>
+> He hands out little red flags as he marks the places he's reached,
+> and with his big furry smile, he wants Rust to be an approachable
+> programming language that's suitable for anyone!
+>
+> He also has a very special bandana that features his little friend Ferris.
+
+[itch]: https://itch.io/jam/rusty-jam-2
+[discord]: https://discord.gg/8dUQJFFmxG
+[mascot]: https://vsmiles.itch.io/aaron-the-rust-loving-fox
diff --git a/content/posts/survey-01/.DS_Store b/content/blog/survey-01/.DS_Store
similarity index 100%
rename from content/posts/survey-01/.DS_Store
rename to content/blog/survey-01/.DS_Store
diff --git a/content/posts/survey-01/hobbyist-or-professional.png b/content/blog/survey-01/hobbyist-or-professional.png
similarity index 100%
rename from content/posts/survey-01/hobbyist-or-professional.png
rename to content/blog/survey-01/hobbyist-or-professional.png
diff --git a/content/posts/survey-01/index.md b/content/blog/survey-01/index.md
similarity index 99%
rename from content/posts/survey-01/index.md
rename to content/blog/survey-01/index.md
index a1c9ea019..52bb12d7a 100644
--- a/content/posts/survey-01/index.md
+++ b/content/blog/survey-01/index.md
@@ -2,6 +2,7 @@
 title = "Rust Game Development - Ecosystem Survey"
 date = 2020-02-06
 transparent = true
+aliases = ["posts/survey-01"]
 +++
 
 <!-- markdownlint-disable single-title heading-increment no-blanks-blockquote -->
diff --git a/content/posts/newsletter-007/survey-thanks.png b/content/blog/survey-01/survey-thanks.png
similarity index 100%
rename from content/posts/newsletter-007/survey-thanks.png
rename to content/blog/survey-01/survey-thanks.png
diff --git a/content/posts/survey-01/using-rust.png b/content/blog/survey-01/using-rust.png
similarity index 100%
rename from content/posts/survey-01/using-rust.png
rename to content/blog/survey-01/using-rust.png
diff --git a/content/blog/survey-02/ai.png b/content/blog/survey-02/ai.png
new file mode 100644
index 000000000..3388c8def
Binary files /dev/null and b/content/blog/survey-02/ai.png differ
diff --git a/content/blog/survey-02/ai_contributions.png b/content/blog/survey-02/ai_contributions.png
new file mode 100644
index 000000000..ab09afa69
Binary files /dev/null and b/content/blog/survey-02/ai_contributions.png differ
diff --git a/content/blog/survey-02/comment.png b/content/blog/survey-02/comment.png
new file mode 100644
index 000000000..7d2355ead
Binary files /dev/null and b/content/blog/survey-02/comment.png differ
diff --git a/content/blog/survey-02/content_quantity.png b/content/blog/survey-02/content_quantity.png
new file mode 100644
index 000000000..55e1489df
Binary files /dev/null and b/content/blog/survey-02/content_quantity.png differ
diff --git a/content/blog/survey-02/contributions copy.png b/content/blog/survey-02/contributions copy.png
new file mode 100644
index 000000000..849c65bb8
Binary files /dev/null and b/content/blog/survey-02/contributions copy.png differ
diff --git a/content/blog/survey-02/contributions.png b/content/blog/survey-02/contributions.png
new file mode 100644
index 000000000..849c65bb8
Binary files /dev/null and b/content/blog/survey-02/contributions.png differ
diff --git a/content/blog/survey-02/ease.png b/content/blog/survey-02/ease.png
new file mode 100644
index 000000000..f8f2a6524
Binary files /dev/null and b/content/blog/survey-02/ease.png differ
diff --git a/content/blog/survey-02/ease_contributions.png b/content/blog/survey-02/ease_contributions.png
new file mode 100644
index 000000000..9a386555d
Binary files /dev/null and b/content/blog/survey-02/ease_contributions.png differ
diff --git a/content/blog/survey-02/excitement.png b/content/blog/survey-02/excitement.png
new file mode 100644
index 000000000..4b2be800e
Binary files /dev/null and b/content/blog/survey-02/excitement.png differ
diff --git a/content/blog/survey-02/excitement_contributions.png b/content/blog/survey-02/excitement_contributions.png
new file mode 100644
index 000000000..73f05498a
Binary files /dev/null and b/content/blog/survey-02/excitement_contributions.png differ
diff --git a/content/blog/survey-02/frequency.png b/content/blog/survey-02/frequency.png
new file mode 100644
index 000000000..0a4fbc9dd
Binary files /dev/null and b/content/blog/survey-02/frequency.png differ
diff --git a/content/blog/survey-02/improve.png b/content/blog/survey-02/improve.png
new file mode 100644
index 000000000..ff4eadb71
Binary files /dev/null and b/content/blog/survey-02/improve.png differ
diff --git a/content/blog/survey-02/index.md b/content/blog/survey-02/index.md
new file mode 100644
index 000000000..095abfcd1
--- /dev/null
+++ b/content/blog/survey-02/index.md
@@ -0,0 +1,214 @@
++++
+title = "Newsletter Survey Results"
+date = 2024-06-03
+transparent = true
+draft = false
++++
+
+Since we are [rebooting the newsletter](https://gamedev.rs/blog/newsletter-changes/), we wanted to know more about our readers. 
+52 of you filled out the survey last month. Thank you very much!
+
+The biggest takeaways are:
+- People are generally excited about the newsletter
+- The current frequency of the newsletter is good
+- Readers do not want anything in the newsletter generated by AI
+- Contributing to the newsletter could be easier. If you've got ideas on how to make this happen, please [let us know](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519)!
+
+We will now go through the results in the same order as the questions were asked. The full analysis and data is open-sourced on [GitHub](https://github.com/janhohenheim/rust-gamedev-statistics/tree/main/jan-hohenheim-2024).
+
+## Excitement
+
+![Excitement barplot](excitement.png)
+
+On average, readers are excited about the newsletter. The mean excitement level is 3.6 out of 5, the median is 4.
+Our 95% confidence interval is [3.32, 3.91] using a standard error of 0.15 (sd = 1.05, n = 52).
+
+These are fairly nice results. Anecdotally, we got a lot of messages about issues with the newsletter and how to improve it, 
+so we are happy to see that the excitement is still high. Still, the data shows that we have room for improvement.
+
+## Content Quantity
+
+![Content quantity barplot](content_quantity.png)
+
+
+When asked about how to change the amount of content per newsletter, the majority of readers (58%) voted to leave the amount as-is or don't care. 
+On the other hand, this means nearly half of the readers would change something about the content quantity. 
+17% voted for "less content; keep only the most important news" and 25% for "more content; add sections for minor news".
+These two options are luckily not mutually exclusive. 
+One option we could implement is to have a new section for "minor news" where we don't go into detail, 
+and a section for "miscellaneous links" where we only list some links without any commentary.
+
+## Newsletter Frequency
+
+![Newsletter frequency barplot](frequency.png)
+
+73% of readers are either happy with the current frequency or don't care. A minority of 21% would like the newsletter to become quarterly. 
+Arguments we've heard for this are that a lower frequency would allow editors to improve the quality that goes into each newsletter. 
+Counterarguments include that a lower frequency would make the newsletter less timely. 
+Things like calls for playtesters or job offers would be less useful if they were only sent out every three months.
+
+## AI
+
+![AI barplot](ai.png)
+
+This question was a catalyst for a lot of discussion on [Discord]. 
+
+If we interpret the answers as a scale of 1-5, where 1 is "not okay at all" and 5 is "I love it", the mean answer was 2.25, the median 2.
+Notably, the mode is tied at 1 and 2. The 95% confidence interval is [1.89, 2.61] using a standard error of 0.18 (sd = 1.30, n = 52). 
+People are generally against using an LLM to generate summaries. 79.2% of readers would prefer not to use AI.
+
+Viewed from another angle: while a majority of readers (65%) are at least okay with AI-generated summaries, 
+a significant minority (35%) are not okay at all with this proposal.
+These include very active members of the community and 
+contributors who have announced that they would no longer want their content to be included in the newsletter if AI was used.
+
+The reasons people gave for not wanting AI-generated summaries were varied.
+Among these were:
+- Solidarity with the large number of creatives who recently lost their jobs due to AI-generated content, 
+inside and outside the game development industry.
+- Concerns about the quality of AI-generated summaries.
+- Skepticism about AI-generated summaries saving time if they still need to be edited by hand.
+
+## Tone
+
+![Tone barplot](tone.png)
+
+A significant majority of readers (86.5%) are happy with the current tone of the newsletter, with a minority of 11.5% wanting a less formal tone. 
+While votes for the latter did not reach a majority, the written feedback we got included quite a few requests for more "personality" in the newsletter.
+
+## Contributions
+
+![Contributions barplot](contributions.png)
+
+The majority of readers (61.5%) have not yet contributed to the newsletter and 26.9% have contributed 2-5 times. 
+Only 3.8% contributed exactly once, while the rest (7.7%) are heavy contributors, helping us out more than five times.
+
+While it might seem weird that more people contributed 2-5 times than exactly once,
+keep in mind that the former is the sum of people who contributed twice, thrice, four times, and five times. 
+The reason we binned these together is that we are interested in the following categories:
+- Pure readers
+- People who contributed once and then stopped
+- People who contributed a few times
+- People who are regular contributors
+
+We are happy to see that people who contributed once seem to continue contributing in the future.
+
+## Ease
+
+![Ease barplot](ease.png)
+
+The mean ease of contributing is 3.0, and the median is 3. The 95% confidence interval is [2.5, 3.6] using a standard error of 0.26 (sd = 1.26, n = 23).
+
+Readers generally feel neutral about the ease of contributing to the newsletter.
+
+We can do better here, but we are not sure yet how. 
+We'd love to hear your ideas on [GitHub](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519) or on [Discord] (ping @janhohenheim).
+
+## Keeping up with the newsletter
+
+![Keeping up barplot](informed.png)
+
+This was a multiple-choice question. The most popular source of information about the newsletter is RSS (27.5%). 
+If we add the choices for the official [Rust GameDev Discord server][Discord] (21.7%) and other Discord servers (11.6%), 
+Discord in general becomes the leading source of information (33.3%), taking up nearly exactly a third of all votes.
+
+We can see the shift from X / Twitter to Mastodon reported by many OSS communities in our readers as well. 
+Lemmy is not looking popular as an alternative to Reddit yet, with no reader reporting it as a source of information.
+
+The "Email" option in the survey is meant for people who have set up some kind of email alerts manually.
+
+Per written feedback, a lot of people want to see proper email subscriptions implemented. While this was a goal for this month, 
+we have not managed to implement it yet.
+We will try to [get this done](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/24) for the next newsletter.
+
+## What is going well
+
+![What is going well wordcloud](like.png)
+
+This was a free-text question. The above is a word cloud of the answers with some obvious words like "game" or "newsletter" removed.
+Note that the inclusion of the word "AI" is misleading, as it was only mentioned in answers that read similar to 
+"I like that we don't use AI, please don't use LLMs".
+
+Going through the feedback by hand, common things readers enjoy about the newsletter are:
+- A good mix of content
+- Very open to contributions
+- Small-scale games are featured, not just success stories or technical articles
+
+## What needs to be improved
+
+![What needs to be improved wordcloud](improve.png)
+
+Another free-text question. The feedback here is fairly diverse. The most common complaints we already mentioned in previous sections are:
+- Add an email subscription
+- Improve the ease of contributing
+
+Additionally, many people feel like the "Games" section reads more like an advertisement than an article aimed at other game developers.
+
+Among the more unique suggestions were:
+- Conduct interviews
+- Have a stronger sense of personality in the writing
+- Make the newsletter more consistent in timing and quantity
+- Have more editors to not overburden the current ones
+- Have some more clarity of purpose
+
+
+## Comments
+
+![Comments wordcloud](comment.png)
+
+This last free-text question was meant for any additional comments readers might have. 
+The word cloud above is dominated by one sentence: "Thank you for your work". Thank you very very much for your kind words! 
+We are working on this newsletter in our free time because we love the community and Rust game development, so reading this means a lot to us.
+
+## Correlations
+
+We were interested in how the responses to some questions correlated with how much people had already contributed to the newsletter.
+Long story short: it seems like there is no significant correlation between how much people contributed and how they answered the other questions.
+
+Let's look at the correlations in turn now.
+Note that all the following plots are jittered to make the data more readable.
+
+
+### Excitement By Contributions
+
+![Excitement correlation](excitement_contributions.png)
+
+We hypothesized that people who contributed more to the newsletter would be more excited about it. 
+We found no evidence for this (the p-value of a Jonckheere-Terpstra test for increasing trend is 0.986). 
+Based on the plot above, we then hypothesized that the opposite might be true, namely that frequent contributors are less excited about the newsletter.
+This actually might be the case (p-value is 0.021), but do not take this as a strong result.
+It is a posthoc hypothesis and the resulting p-value is not very low considering the number of tests we run in this analysis. 
+For these reasons, we do not consider this result to be significant.
+
+### Feelings About AI By Contributions
+
+![AI correlation](ai_contributions.png)
+
+We hypothesized that there would be a correlation between how much people contributed to the newsletter and how they felt about AI-generated summaries. 
+We found no evidence for this (the p-value of a Jonckheere-Terpstra test for a two-sided alternative is 0.57).
+
+### Ease of Contributing By Contributions
+
+![Ease correlation](ease_contributions.png)
+
+We hypothesized that there would be a correlation between how much people contributed to the newsletter and how easily they found it to contribute.
+
+We found no evidence for this (the p-value of a Jonckheere-Terpstra test for a two-sided alternative is 0.25).
+
+## Conclusion
+
+All in all, we are happy with the results of the survey. 
+It seems like our readers are generally happy with the newsletter, and have good ideas on how to improve it. 
+We will discuss how to implement these ideas in the future and keep you updated on our progress.
+
+If you are interested in helping us out, we are always looking for new editors and contributors. Just leave us a message on [Discord] or [GitHub].
+
+Again, thank you very much for your feedback. Rebooting the newsletter was a big ordeal for us,
+and we are happy to see such an active interest in the community. We hope that we can continue to provide you with a newsletter you enjoy.
+
+Until next time!
+
+~ The Rust GameDev Newsletter Team, and Jan Hohenheim in particular
+
+[Discord]: https://discord.gg/yNtPTb2
+[GitHub]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/blog/survey-02/informed.png b/content/blog/survey-02/informed.png
new file mode 100644
index 000000000..3616d4a7a
Binary files /dev/null and b/content/blog/survey-02/informed.png differ
diff --git a/content/blog/survey-02/like.png b/content/blog/survey-02/like.png
new file mode 100644
index 000000000..d17610ac1
Binary files /dev/null and b/content/blog/survey-02/like.png differ
diff --git a/content/blog/survey-02/tone.png b/content/blog/survey-02/tone.png
new file mode 100644
index 000000000..6a4c4b6dd
Binary files /dev/null and b/content/blog/survey-02/tone.png differ
diff --git a/content/posts/newsletter-001/a-snakes-tail.gif b/content/news/001/a-snakes-tail.gif
similarity index 100%
rename from content/posts/newsletter-001/a-snakes-tail.gif
rename to content/news/001/a-snakes-tail.gif
diff --git a/content/posts/newsletter-001/a-snakes-tale-logo.png b/content/news/001/a-snakes-tale-logo.png
similarity index 100%
rename from content/posts/newsletter-001/a-snakes-tale-logo.png
rename to content/news/001/a-snakes-tale-logo.png
diff --git a/content/posts/newsletter-001/amethyst-space-shooter.gif b/content/news/001/amethyst-space-shooter.gif
similarity index 100%
rename from content/posts/newsletter-001/amethyst-space-shooter.gif
rename to content/news/001/amethyst-space-shooter.gif
diff --git a/content/posts/newsletter-001/ccd_substeps.svg b/content/news/001/ccd_substeps.svg
similarity index 100%
rename from content/posts/newsletter-001/ccd_substeps.svg
rename to content/news/001/ccd_substeps.svg
diff --git a/content/posts/newsletter-001/embark-logo-bg.jpg b/content/news/001/embark-logo-bg.jpg
similarity index 100%
rename from content/posts/newsletter-001/embark-logo-bg.jpg
rename to content/news/001/embark-logo-bg.jpg
diff --git a/content/posts/newsletter-001/evoli-shot.png b/content/news/001/evoli-shot.png
similarity index 100%
rename from content/posts/newsletter-001/evoli-shot.png
rename to content/news/001/evoli-shot.png
diff --git a/content/posts/newsletter-001/gfx-mipmap.png b/content/news/001/gfx-mipmap.png
similarity index 100%
rename from content/posts/newsletter-001/gfx-mipmap.png
rename to content/news/001/gfx-mipmap.png
diff --git a/content/posts/newsletter-001/index.md b/content/news/001/index.md
similarity index 97%
rename from content/posts/newsletter-001/index.md
rename to content/news/001/index.md
index 5cc2ae62c..d4bc25734 100644
--- a/content/posts/newsletter-001/index.md
+++ b/content/news/001/index.md
@@ -2,7 +2,7 @@
 title = "This Month in Rust GameDev #1 - August 2019"
 date = 2019-09-02
 transparent = true
-aliases = ["/2019/09/02/newsletter-001", "2019/09/02/newsletter-001.html"]
+aliases = ["/2019/09/02/newsletter-001", "2019/09/02/newsletter-001.html", "posts/newsletter-001"]
 +++
 
 Welcome to the inaugural issue of the Rust Game Development Workgroup’s
@@ -115,8 +115,11 @@ Also, check out
 
 ### Way of Rhea [Trailer][rhea trailer] and [Steam Wishlist][rhea steam] Announced
 
-[![Part of the trailer](way-of-rhea.gif)][rhea trailer]
-_click on the GIF to see [the full trailer][rhea trailer]_
+{{ image_figure(
+    alt="Part of the trailer"
+    src="way-of-rhea.gif"
+    caption="click on the GIF to see [the full trailer](https://youtube.com/watch?v=VIzqlI-gbAY)",
+    link="https://youtube.com/watch?v=VIzqlI-gbAY") }}
 
 [A new trailer][rhea trailer] and the [Steam wishlist][rhea steam]
 were published for "Way of Rhea" by [Anthropic Studios].
@@ -464,7 +467,7 @@ Special section for other news (up to 15) in a one-liner format:
 [Alex Butler]: https://twitter.com/bigabgames
 [roboinstructus 1.0]: https://reddit.com/r/rust/comments/cdw1ct/robo_instructus_is_out_now_programming_puzzle
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
@@ -520,8 +523,11 @@ by [Michael Fairley] was released:
 > Clear a path to get to the hole, eat some eggs along the way,
 > and make sure to press all the buttons.
 
-[![Part of A snake's Tail's trailer](a-snakes-tail.gif)][snake trailer]
-_click on the GIF to see [the full release trailer][snake trailer]_
+{{ image_figure(
+    alt="Part of A snake's Tail's trailer"
+    src="a-snakes-tail.gif"
+    caption="click on the GIF to see [the full release trailer](https://www.youtube.com/watch?v=23pQmEuueNw)",
+    link="https://www.youtube.com/watch?v=23pQmEuueNw") }}
 
 A few posts about the game and how it was developed:
 
diff --git a/content/posts/newsletter-001/iolivia-screenshot.png b/content/news/001/iolivia-screenshot.png
similarity index 100%
rename from content/posts/newsletter-001/iolivia-screenshot.png
rename to content/news/001/iolivia-screenshot.png
diff --git a/content/posts/newsletter-001/oxygengine-navigation-demo.gif b/content/news/001/oxygengine-navigation-demo.gif
similarity index 100%
rename from content/posts/newsletter-001/oxygengine-navigation-demo.gif
rename to content/news/001/oxygengine-navigation-demo.gif
diff --git a/content/posts/newsletter-001/physx-example.png b/content/news/001/physx-example.png
similarity index 100%
rename from content/posts/newsletter-001/physx-example.png
rename to content/news/001/physx-example.png
diff --git a/content/posts/newsletter-001/roboinstructus.jpg b/content/news/001/roboinstructus.jpg
similarity index 100%
rename from content/posts/newsletter-001/roboinstructus.jpg
rename to content/news/001/roboinstructus.jpg
diff --git a/content/posts/newsletter-001/ruzzt.png b/content/news/001/ruzzt.png
similarity index 100%
rename from content/posts/newsletter-001/ruzzt.png
rename to content/news/001/ruzzt.png
diff --git a/content/posts/newsletter-001/space-menace.png b/content/news/001/space-menace.png
similarity index 100%
rename from content/posts/newsletter-001/space-menace.png
rename to content/news/001/space-menace.png
diff --git a/content/posts/newsletter-001/veloren.png b/content/news/001/veloren.png
similarity index 100%
rename from content/posts/newsletter-001/veloren.png
rename to content/news/001/veloren.png
diff --git a/content/posts/newsletter-001/vlad-asteroinds-gameplay.gif b/content/news/001/vlad-asteroinds-gameplay.gif
similarity index 100%
rename from content/posts/newsletter-001/vlad-asteroinds-gameplay.gif
rename to content/news/001/vlad-asteroinds-gameplay.gif
diff --git a/content/posts/newsletter-001/way-of-rhea.gif b/content/news/001/way-of-rhea.gif
similarity index 100%
rename from content/posts/newsletter-001/way-of-rhea.gif
rename to content/news/001/way-of-rhea.gif
diff --git a/content/posts/newsletter-001/will-charging.png b/content/news/001/will-charging.png
similarity index 100%
rename from content/posts/newsletter-001/will-charging.png
rename to content/news/001/will-charging.png
diff --git a/content/posts/newsletter-002/amethyst-imgui.gif b/content/news/002/amethyst-imgui.gif
similarity index 100%
rename from content/posts/newsletter-002/amethyst-imgui.gif
rename to content/news/002/amethyst-imgui.gif
diff --git a/content/posts/newsletter-002/asteroids-demo.gif b/content/news/002/asteroids-demo.gif
similarity index 100%
rename from content/posts/newsletter-002/asteroids-demo.gif
rename to content/news/002/asteroids-demo.gif
diff --git a/content/posts/newsletter-002/deios.jpg b/content/news/002/deios.jpg
similarity index 100%
rename from content/posts/newsletter-002/deios.jpg
rename to content/news/002/deios.jpg
diff --git a/content/posts/newsletter-002/disconnect-console.png b/content/news/002/disconnect-console.png
similarity index 100%
rename from content/posts/newsletter-002/disconnect-console.png
rename to content/news/002/disconnect-console.png
diff --git a/content/posts/newsletter-002/doom-bsp-wasm.png b/content/news/002/doom-bsp-wasm.png
similarity index 100%
rename from content/posts/newsletter-002/doom-bsp-wasm.png
rename to content/news/002/doom-bsp-wasm.png
diff --git a/content/posts/newsletter-002/dooskington-devlog-5-screenshot.jpeg b/content/news/002/dooskington-devlog-5-screenshot.jpeg
similarity index 100%
rename from content/posts/newsletter-002/dooskington-devlog-5-screenshot.jpeg
rename to content/news/002/dooskington-devlog-5-screenshot.jpeg
diff --git a/content/posts/newsletter-002/garden.jpeg b/content/news/002/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-002/garden.jpeg
rename to content/news/002/garden.jpeg
diff --git a/content/posts/newsletter-002/gfx-logo.png b/content/news/002/gfx-logo.png
similarity index 100%
rename from content/posts/newsletter-002/gfx-logo.png
rename to content/news/002/gfx-logo.png
diff --git a/content/posts/newsletter-002/github_actions_ci.gif b/content/news/002/github_actions_ci.gif
similarity index 100%
rename from content/posts/newsletter-002/github_actions_ci.gif
rename to content/news/002/github_actions_ci.gif
diff --git a/content/posts/newsletter-002/hex-fov.jpeg b/content/news/002/hex-fov.jpeg
similarity index 100%
rename from content/posts/newsletter-002/hex-fov.jpeg
rename to content/news/002/hex-fov.jpeg
diff --git a/content/posts/newsletter-002/iced.gif b/content/news/002/iced.gif
similarity index 100%
rename from content/posts/newsletter-002/iced.gif
rename to content/news/002/iced.gif
diff --git a/content/posts/newsletter-002/imgui-inspect.png b/content/news/002/imgui-inspect.png
similarity index 100%
rename from content/posts/newsletter-002/imgui-inspect.png
rename to content/news/002/imgui-inspect.png
diff --git a/content/posts/newsletter-002/index.md b/content/news/002/index.md
similarity index 99%
rename from content/posts/newsletter-002/index.md
rename to content/news/002/index.md
index 139814037..3b75a4a87 100644
--- a/content/posts/newsletter-002/index.md
+++ b/content/news/002/index.md
@@ -2,7 +2,7 @@
 title = "This Month in Rust GameDev #2 - September 2019"
 date = 2019-10-05
 transparent = true
-aliases = ["/2019/10/05/newsletter-002", "2019/10/05/newsletter-002.html"]
+aliases = ["/2019/10/05/newsletter-002", "2019/10/05/newsletter-002.html", "posts/newsletter-002"]
 +++
 
 Welcome to the second issue of the Rust GameDev Workgroup’s
@@ -461,11 +461,11 @@ _Discussions:
 
   ![Live2D Piston demo](live2d-cubism.png)
 
-- ["Github Actions CI with Rust and SDL2"] -
+- ["GitHub Actions CI with Rust and SDL2"] -
   [Alexandru Ene] wrote a post about CI with [github actions]
   for [their hobby game project][after-hours] that uses Rust and SDL2.
 
-  ![Github Actions with SDL2 screencast demo](github_actions_ci.gif)
+  ![GitHub Actions with SDL2 screencast demo](github_actions_ci.gif)
 
 - [@phaazon] released [luminance] 0.33 that
   [brings geometry instancing support](https://reddit.com/r/rust/comments/d0us73/announcement_luminance033);
@@ -527,7 +527,7 @@ but I'm too tired to this atm and it will be rendered correctly anyway.
 -->
 
 [Alexandru Ene]: https://twitter.com/_AlexEne_
-["Github Actions CI with Rust and SDL2"]: https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html
+["GitHub Actions CI with Rust and SDL2"]: https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html
 [github actions]: https://github.com/features/actions
 [after-hours]: https://alexene.dev/2019/01/15/After-hours-game-development.html
 [Xprite]: https://pickitup247.com/xprite.html
@@ -568,7 +568,7 @@ but I'm too tired to this atm and it will be rendered correctly anyway.
 [imgui-inspect]: https://github.com/aclysma/imgui-inspect
 [minimum]: https://github.com/aclysma/minimum
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-002/live-cli.png b/content/news/002/live-cli.png
similarity index 100%
rename from content/posts/newsletter-002/live-cli.png
rename to content/news/002/live-cli.png
diff --git a/content/posts/newsletter-002/live2d-cubism.png b/content/news/002/live2d-cubism.png
similarity index 100%
rename from content/posts/newsletter-002/live2d-cubism.png
rename to content/news/002/live2d-cubism.png
diff --git a/content/posts/newsletter-002/minimum.png b/content/news/002/minimum.png
similarity index 100%
rename from content/posts/newsletter-002/minimum.png
rename to content/news/002/minimum.png
diff --git a/content/posts/newsletter-002/mun-logo.png b/content/news/002/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-002/mun-logo.png
rename to content/news/002/mun-logo.png
diff --git a/content/posts/newsletter-002/proc-dungeons.png b/content/news/002/proc-dungeons.png
similarity index 100%
rename from content/posts/newsletter-002/proc-dungeons.png
rename to content/news/002/proc-dungeons.png
diff --git a/content/posts/newsletter-002/recall-singularity.jpeg b/content/news/002/recall-singularity.jpeg
similarity index 100%
rename from content/posts/newsletter-002/recall-singularity.jpeg
rename to content/news/002/recall-singularity.jpeg
diff --git a/content/posts/newsletter-002/rltk-rs-example-06.gif b/content/news/002/rltk-rs-example-06.gif
similarity index 100%
rename from content/posts/newsletter-002/rltk-rs-example-06.gif
rename to content/news/002/rltk-rs-example-06.gif
diff --git a/content/posts/newsletter-002/robo.jpg b/content/news/002/robo.jpg
similarity index 100%
rename from content/posts/newsletter-002/robo.jpg
rename to content/news/002/robo.jpg
diff --git a/content/posts/newsletter-002/rox_clone_attack.png b/content/news/002/rox_clone_attack.png
similarity index 100%
rename from content/posts/newsletter-002/rox_clone_attack.png
rename to content/news/002/rox_clone_attack.png
diff --git a/content/posts/newsletter-002/rx.gif b/content/news/002/rx.gif
similarity index 100%
rename from content/posts/newsletter-002/rx.gif
rename to content/news/002/rx.gif
diff --git a/content/posts/newsletter-002/sandspiel.png b/content/news/002/sandspiel.png
similarity index 100%
rename from content/posts/newsletter-002/sandspiel.png
rename to content/news/002/sandspiel.png
diff --git a/content/posts/newsletter-002/shadows.gif b/content/news/002/shadows.gif
similarity index 100%
rename from content/posts/newsletter-002/shadows.gif
rename to content/news/002/shadows.gif
diff --git a/content/posts/newsletter-002/space-shooter.gif b/content/news/002/space-shooter.gif
similarity index 100%
rename from content/posts/newsletter-002/space-shooter.gif
rename to content/news/002/space-shooter.gif
diff --git a/content/posts/newsletter-002/splines.png b/content/news/002/splines.png
similarity index 100%
rename from content/posts/newsletter-002/splines.png
rename to content/news/002/splines.png
diff --git a/content/posts/newsletter-002/stabman-overworld.png b/content/news/002/stabman-overworld.png
similarity index 100%
rename from content/posts/newsletter-002/stabman-overworld.png
rename to content/news/002/stabman-overworld.png
diff --git a/content/posts/newsletter-002/suzanne_lit.png b/content/news/002/suzanne_lit.png
similarity index 100%
rename from content/posts/newsletter-002/suzanne_lit.png
rename to content/news/002/suzanne_lit.png
diff --git a/content/posts/newsletter-002/tennis-academy.gif b/content/news/002/tennis-academy.gif
similarity index 100%
rename from content/posts/newsletter-002/tennis-academy.gif
rename to content/news/002/tennis-academy.gif
diff --git a/content/posts/newsletter-002/texture-synthesis.jpg b/content/news/002/texture-synthesis.jpg
similarity index 100%
rename from content/posts/newsletter-002/texture-synthesis.jpg
rename to content/news/002/texture-synthesis.jpg
diff --git a/content/posts/newsletter-002/vallentin-voxel-terrain.jpeg b/content/news/002/vallentin-voxel-terrain.jpeg
similarity index 100%
rename from content/posts/newsletter-002/vallentin-voxel-terrain.jpeg
rename to content/news/002/vallentin-voxel-terrain.jpeg
diff --git a/content/posts/newsletter-002/veloren-town.png b/content/news/002/veloren-town.png
similarity index 100%
rename from content/posts/newsletter-002/veloren-town.png
rename to content/news/002/veloren-town.png
diff --git a/content/posts/newsletter-002/wraith-def.jpeg b/content/news/002/wraith-def.jpeg
similarity index 100%
rename from content/posts/newsletter-002/wraith-def.jpeg
rename to content/news/002/wraith-def.jpeg
diff --git a/content/posts/newsletter-002/xprite-demo.gif b/content/news/002/xprite-demo.gif
similarity index 100%
rename from content/posts/newsletter-002/xprite-demo.gif
rename to content/news/002/xprite-demo.gif
diff --git a/content/posts/newsletter-002/zemeroth.png b/content/news/002/zemeroth.png
similarity index 100%
rename from content/posts/newsletter-002/zemeroth.png
rename to content/news/002/zemeroth.png
diff --git a/content/posts/newsletter-003/antorum.jpeg b/content/news/003/antorum.jpeg
similarity index 100%
rename from content/posts/newsletter-003/antorum.jpeg
rename to content/news/003/antorum.jpeg
diff --git a/content/posts/newsletter-003/arrakis.png b/content/news/003/arrakis.png
similarity index 100%
rename from content/posts/newsletter-003/arrakis.png
rename to content/news/003/arrakis.png
diff --git a/content/posts/newsletter-003/cyclone-physics-demo.gif b/content/news/003/cyclone-physics-demo.gif
similarity index 100%
rename from content/posts/newsletter-003/cyclone-physics-demo.gif
rename to content/news/003/cyclone-physics-demo.gif
diff --git a/content/posts/newsletter-003/dissolve.gif b/content/news/003/dissolve.gif
similarity index 100%
rename from content/posts/newsletter-003/dissolve.gif
rename to content/news/003/dissolve.gif
diff --git a/content/posts/newsletter-003/ferris-fencing.png b/content/news/003/ferris-fencing.png
similarity index 100%
rename from content/posts/newsletter-003/ferris-fencing.png
rename to content/news/003/ferris-fencing.png
diff --git a/content/posts/newsletter-003/garden.jpeg b/content/news/003/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-003/garden.jpeg
rename to content/news/003/garden.jpeg
diff --git a/content/posts/newsletter-003/gravisim.png b/content/news/003/gravisim.png
similarity index 100%
rename from content/posts/newsletter-003/gravisim.png
rename to content/news/003/gravisim.png
diff --git a/content/posts/newsletter-003/grumpy-visitors.png b/content/news/003/grumpy-visitors.png
similarity index 100%
rename from content/posts/newsletter-003/grumpy-visitors.png
rename to content/news/003/grumpy-visitors.png
diff --git a/content/posts/newsletter-003/index.md b/content/news/003/index.md
similarity index 98%
rename from content/posts/newsletter-003/index.md
rename to content/news/003/index.md
index a7f0eacf8..74851e5c5 100644
--- a/content/posts/newsletter-003/index.md
+++ b/content/news/003/index.md
@@ -2,7 +2,7 @@
 title = "This Month in Rust GameDev #3 - October 2019"
 date = 2019-11-07
 transparent = true
-aliases = ["/2019/11/027/newsletter-003", "2019/11/07/newsletter-003.html"]
+aliases = ["/2019/11/027/newsletter-003", "2019/11/07/newsletter-003.html", "posts/newsletter-003"]
 +++
 
 Welcome to the third issue of the Rust GameDev Workgroup’s
@@ -523,8 +523,10 @@ Also, see this GameDev WG tracker/complaint issue:
 
 ### [RLSL][rlsl]: a Rust to SPIR-V Compiler
 
-![RLSL code sample](rlsl-example.png)
-_a simple fragment shader that renders a red circle (temporary syntax)_
+{{ image_figure(
+    alt="RLSL code sample"
+    src="rlsl-example.png"
+    caption="a simple fragment shader that renders a red circle (temporary syntax)") }}
 
 This month, [@MaikKlein_DEV] gave a talk at
 [The Khronos Group](https://www.khronos.org)'s meetup in Munich
@@ -557,8 +559,10 @@ _Discussions:
 
 ### [gfx-rs v0.4][gfx-v0-4]
 
-![sailor screenshot: vector terrain map and some basic UI](sailor.png)
-_a screenshot from [Yatekii/sailor] - a wgpu-based sailing navigation application_
+{{ image_figure(
+    alt="sailor screenshot: vector terrain map and some basic UI"
+    src="sailor.png"
+    caption="a screenshot from [Yatekii/sailor](https://github.com/Yatekii/sailor) - a wgpu-based sailing navigation application") }}
 
 [gfx-rs v0.4 was released](https://reddit.com/r/rust/comments/dm89t2/gfxhal_version_04_release):
 major changes were described in [the last blog post](https://gfx-rs.github.io/2019/10/01/update.html),
@@ -683,8 +687,11 @@ _Discussions:
 
 ### [cyclone-physics-rs]
 
-[![cyclone physics demo](cyclone-physics-demo.gif)][cyclone-video-demo]
-_a little demo of "particle" simulation_
+{{ image_figure(
+    alt="cyclone physics demo",
+    src="cyclone-physics-demo.gif",
+    caption='a little demo of "particle" simulation',
+    link="https://twitter.com/heyrutvik/status/1180072669250834432") }}
 
 [cyclone-physics-rs] by [@heyrutvik] a new WIP game physics engine
 based on the ["Game Physics Engine Development" book][cyclone-physics-book].
@@ -793,7 +800,7 @@ _Discussions:
 [Amethyst organization]: https://github.com/amethyst
 [@_AndreaCatania]: https://twitter.com/_AndreaCatania
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-003/ld45-mindmaze.png b/content/news/003/ld45-mindmaze.png
similarity index 100%
rename from content/posts/newsletter-003/ld45-mindmaze.png
rename to content/news/003/ld45-mindmaze.png
diff --git a/content/posts/newsletter-003/legally-dead.png b/content/news/003/legally-dead.png
similarity index 100%
rename from content/posts/newsletter-003/legally-dead.png
rename to content/news/003/legally-dead.png
diff --git a/content/posts/newsletter-003/mission_partners_nannou_mozilla.png b/content/news/003/mission_partners_nannou_mozilla.png
similarity index 100%
rename from content/posts/newsletter-003/mission_partners_nannou_mozilla.png
rename to content/news/003/mission_partners_nannou_mozilla.png
diff --git a/content/posts/newsletter-003/pf-sandbox.jpg b/content/news/003/pf-sandbox.jpg
similarity index 100%
rename from content/posts/newsletter-003/pf-sandbox.jpg
rename to content/news/003/pf-sandbox.jpg
diff --git a/content/posts/newsletter-003/piano.png b/content/news/003/piano.png
similarity index 100%
rename from content/posts/newsletter-003/piano.png
rename to content/news/003/piano.png
diff --git a/content/posts/newsletter-003/recall-singular.png b/content/news/003/recall-singular.png
similarity index 100%
rename from content/posts/newsletter-003/recall-singular.png
rename to content/news/003/recall-singular.png
diff --git a/content/posts/newsletter-003/rlsl-example.png b/content/news/003/rlsl-example.png
similarity index 100%
rename from content/posts/newsletter-003/rlsl-example.png
rename to content/news/003/rlsl-example.png
diff --git a/content/posts/newsletter-003/robo-ru.png b/content/news/003/robo-ru.png
similarity index 100%
rename from content/posts/newsletter-003/robo-ru.png
rename to content/news/003/robo-ru.png
diff --git a/content/posts/newsletter-003/rogulike-demo.gif b/content/news/003/rogulike-demo.gif
similarity index 100%
rename from content/posts/newsletter-003/rogulike-demo.gif
rename to content/news/003/rogulike-demo.gif
diff --git a/content/posts/newsletter-003/sailor.png b/content/news/003/sailor.png
similarity index 100%
rename from content/posts/newsletter-003/sailor.png
rename to content/news/003/sailor.png
diff --git a/content/posts/newsletter-003/salva.png b/content/news/003/salva.png
similarity index 100%
rename from content/posts/newsletter-003/salva.png
rename to content/news/003/salva.png
diff --git a/content/posts/newsletter-003/splines.png b/content/news/003/splines.png
similarity index 100%
rename from content/posts/newsletter-003/splines.png
rename to content/news/003/splines.png
diff --git a/content/posts/newsletter-003/sulis-abilities-tree.png b/content/news/003/sulis-abilities-tree.png
similarity index 100%
rename from content/posts/newsletter-003/sulis-abilities-tree.png
rename to content/news/003/sulis-abilities-tree.png
diff --git a/content/posts/newsletter-003/sulis-battle.png b/content/news/003/sulis-battle.png
similarity index 100%
rename from content/posts/newsletter-003/sulis-battle.png
rename to content/news/003/sulis-battle.png
diff --git a/content/posts/newsletter-003/sulis-inventory.png b/content/news/003/sulis-inventory.png
similarity index 100%
rename from content/posts/newsletter-003/sulis-inventory.png
rename to content/news/003/sulis-inventory.png
diff --git a/content/posts/newsletter-003/takeryo-eeic-hex-game.png b/content/news/003/takeryo-eeic-hex-game.png
similarity index 100%
rename from content/posts/newsletter-003/takeryo-eeic-hex-game.png
rename to content/news/003/takeryo-eeic-hex-game.png
diff --git a/content/posts/newsletter-003/tennis-academy.png b/content/news/003/tennis-academy.png
similarity index 100%
rename from content/posts/newsletter-003/tennis-academy.png
rename to content/news/003/tennis-academy.png
diff --git a/content/posts/newsletter-003/ultraviolet-benches.png b/content/news/003/ultraviolet-benches.png
similarity index 100%
rename from content/posts/newsletter-003/ultraviolet-benches.png
rename to content/news/003/ultraviolet-benches.png
diff --git a/content/posts/newsletter-003/veloren.png b/content/news/003/veloren.png
similarity index 100%
rename from content/posts/newsletter-003/veloren.png
rename to content/news/003/veloren.png
diff --git a/content/posts/newsletter-003/vulkano-logo.png b/content/news/003/vulkano-logo.png
similarity index 100%
rename from content/posts/newsletter-003/vulkano-logo.png
rename to content/news/003/vulkano-logo.png
diff --git a/content/posts/newsletter-003/webshinra-hex.jpg b/content/news/003/webshinra-hex.jpg
similarity index 100%
rename from content/posts/newsletter-003/webshinra-hex.jpg
rename to content/news/003/webshinra-hex.jpg
diff --git a/content/posts/newsletter-003/working-title.png b/content/news/003/working-title.png
similarity index 100%
rename from content/posts/newsletter-003/working-title.png
rename to content/news/003/working-title.png
diff --git a/content/posts/newsletter-004/amethyst-logo.png b/content/news/004/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-004/amethyst-logo.png
rename to content/news/004/amethyst-logo.png
diff --git a/content/posts/newsletter-004/antorum.jpeg b/content/news/004/antorum.jpeg
similarity index 100%
rename from content/posts/newsletter-004/antorum.jpeg
rename to content/news/004/antorum.jpeg
diff --git a/content/posts/newsletter-004/asteroids-demo.gif b/content/news/004/asteroids-demo.gif
similarity index 100%
rename from content/posts/newsletter-004/asteroids-demo.gif
rename to content/news/004/asteroids-demo.gif
diff --git a/content/posts/newsletter-004/castles.jpg b/content/news/004/castles.jpg
similarity index 100%
rename from content/posts/newsletter-004/castles.jpg
rename to content/news/004/castles.jpg
diff --git a/content/posts/newsletter-004/compact-space.png b/content/news/004/compact-space.png
similarity index 100%
rename from content/posts/newsletter-004/compact-space.png
rename to content/news/004/compact-space.png
diff --git a/content/posts/newsletter-004/conquest.png b/content/news/004/conquest.png
similarity index 100%
rename from content/posts/newsletter-004/conquest.png
rename to content/news/004/conquest.png
diff --git a/content/posts/newsletter-004/dank_defence.gif b/content/news/004/dank_defence.gif
similarity index 100%
rename from content/posts/newsletter-004/dank_defence.gif
rename to content/news/004/dank_defence.gif
diff --git a/content/posts/newsletter-004/embark.png b/content/news/004/embark.png
similarity index 100%
rename from content/posts/newsletter-004/embark.png
rename to content/news/004/embark.png
diff --git a/content/posts/newsletter-004/erasterra.png b/content/news/004/erasterra.png
similarity index 100%
rename from content/posts/newsletter-004/erasterra.png
rename to content/news/004/erasterra.png
diff --git a/content/posts/newsletter-004/fedor-defense.gif b/content/news/004/fedor-defense.gif
similarity index 100%
rename from content/posts/newsletter-004/fedor-defense.gif
rename to content/news/004/fedor-defense.gif
diff --git a/content/posts/newsletter-004/food_truck_cropped.jpg b/content/news/004/food_truck_cropped.jpg
similarity index 100%
rename from content/posts/newsletter-004/food_truck_cropped.jpg
rename to content/news/004/food_truck_cropped.jpg
diff --git a/content/posts/newsletter-004/garden.jpeg b/content/news/004/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-004/garden.jpeg
rename to content/news/004/garden.jpeg
diff --git a/content/posts/newsletter-004/gh-gameoff.gif b/content/news/004/gh-gameoff.gif
similarity index 100%
rename from content/posts/newsletter-004/gh-gameoff.gif
rename to content/news/004/gh-gameoff.gif
diff --git a/content/posts/newsletter-004/gh-gameoff.png b/content/news/004/gh-gameoff.png
similarity index 100%
rename from content/posts/newsletter-004/gh-gameoff.png
rename to content/news/004/gh-gameoff.png
diff --git a/content/posts/newsletter-004/iced.gif b/content/news/004/iced.gif
similarity index 100%
rename from content/posts/newsletter-004/iced.gif
rename to content/news/004/iced.gif
diff --git a/content/posts/newsletter-004/index.md b/content/news/004/index.md
similarity index 98%
rename from content/posts/newsletter-004/index.md
rename to content/news/004/index.md
index 9afc940d1..e97bf85aa 100644
--- a/content/posts/newsletter-004/index.md
+++ b/content/news/004/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #4 - November 2019"
 date = 2019-12-08
 transparent = true
+aliases = ["posts/newsletter-004"]
 +++
 
 Welcome to the fourth issue of the Rust GameDev Workgroup’s
@@ -200,8 +201,11 @@ about the implementation of a drop table system to handle monster loot.
 
 ### [Recall Singularity: November Progress][recall-s-nov-text]
 
-[![Demo of the basic ship collision](recall-sing.gif)][recall-s-nov-video]
-_Demo of the basic ship collision._
+{{ image_figure(
+    alt="Demo of the basic ship collision"
+    src="recall-sing.gif"
+    caption="Demo of the basic ship collision.",
+    link="https://youtube.com/watch?v=AoPSAoqmTCk") }}
 
 [Tom Leys] is working on a "The Recall Singularity" game
 about designing autonomous factory ships and stations
@@ -720,7 +724,7 @@ Check out the [online Demo][rust-nes-demo].
 [Blaine Price]: https://blaineprice.me
 [@mvlabat]: https://github.com/mvlabat
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
@@ -776,8 +780,11 @@ and highlight events from the past. -->
 
 Just an interesting Rust gamedev link from the past. :)
 
-[![Pascal Penguin logo](penguin.png)][penguin-video]
-_click to see the [release trailer][penguin-video]_
+{{ image_figure(
+    alt="Pascal Penguin logo"
+    src="penguin.png"
+    caption="click to see the [release trailer](https://youtube.com/watch?v=EgFr73AUwps)",
+    link="https://youtube.com/watch?v=EgFr73AUwps") }}
 
 ["Adventures of Pascal Penguin"][penguin-about]
 by [Matthew Michelotti](http://luduminis.com)
diff --git a/content/posts/newsletter-004/ltd.gif b/content/news/004/ltd.gif
similarity index 100%
rename from content/posts/newsletter-004/ltd.gif
rename to content/news/004/ltd.gif
diff --git a/content/posts/newsletter-004/luminance-space-game.gif b/content/news/004/luminance-space-game.gif
similarity index 100%
rename from content/posts/newsletter-004/luminance-space-game.gif
rename to content/news/004/luminance-space-game.gif
diff --git a/content/posts/newsletter-004/math-def.png b/content/news/004/math-def.png
similarity index 100%
rename from content/posts/newsletter-004/math-def.png
rename to content/news/004/math-def.png
diff --git a/content/posts/newsletter-004/mem-arena.jpg b/content/news/004/mem-arena.jpg
similarity index 100%
rename from content/posts/newsletter-004/mem-arena.jpg
rename to content/news/004/mem-arena.jpg
diff --git a/content/posts/newsletter-004/mun_logo.png b/content/news/004/mun_logo.png
similarity index 100%
rename from content/posts/newsletter-004/mun_logo.png
rename to content/news/004/mun_logo.png
diff --git a/content/posts/newsletter-004/nannou.png b/content/news/004/nannou.png
similarity index 100%
rename from content/posts/newsletter-004/nannou.png
rename to content/news/004/nannou.png
diff --git a/content/posts/newsletter-004/nes-wasm.gif b/content/news/004/nes-wasm.gif
similarity index 100%
rename from content/posts/newsletter-004/nes-wasm.gif
rename to content/news/004/nes-wasm.gif
diff --git a/content/posts/newsletter-004/paddlers-arch.png b/content/news/004/paddlers-arch.png
similarity index 100%
rename from content/posts/newsletter-004/paddlers-arch.png
rename to content/news/004/paddlers-arch.png
diff --git a/content/posts/newsletter-004/penguin.png b/content/news/004/penguin.png
similarity index 100%
rename from content/posts/newsletter-004/penguin.png
rename to content/news/004/penguin.png
diff --git a/content/posts/newsletter-004/pixels.png b/content/news/004/pixels.png
similarity index 100%
rename from content/posts/newsletter-004/pixels.png
rename to content/news/004/pixels.png
diff --git a/content/posts/newsletter-004/rayn-render.png b/content/news/004/rayn-render.png
similarity index 100%
rename from content/posts/newsletter-004/rayn-render.png
rename to content/news/004/rayn-render.png
diff --git a/content/posts/newsletter-004/recall-sing.gif b/content/news/004/recall-sing.gif
similarity index 100%
rename from content/posts/newsletter-004/recall-sing.gif
rename to content/news/004/recall-sing.gif
diff --git a/content/posts/newsletter-004/robo.jpeg b/content/news/004/robo.jpeg
similarity index 100%
rename from content/posts/newsletter-004/robo.jpeg
rename to content/news/004/robo.jpeg
diff --git a/content/posts/newsletter-004/rogue-sim.gif b/content/news/004/rogue-sim.gif
similarity index 100%
rename from content/posts/newsletter-004/rogue-sim.gif
rename to content/news/004/rogue-sim.gif
diff --git a/content/posts/newsletter-004/rogulike-demo.gif b/content/news/004/rogulike-demo.gif
similarity index 100%
rename from content/posts/newsletter-004/rogulike-demo.gif
rename to content/news/004/rogulike-demo.gif
diff --git a/content/posts/newsletter-004/skuplin.jpeg b/content/news/004/skuplin.jpeg
similarity index 100%
rename from content/posts/newsletter-004/skuplin.jpeg
rename to content/news/004/skuplin.jpeg
diff --git a/content/posts/newsletter-004/spir-q.png b/content/news/004/spir-q.png
similarity index 100%
rename from content/posts/newsletter-004/spir-q.png
rename to content/news/004/spir-q.png
diff --git a/content/posts/newsletter-004/sulis_logo.png b/content/news/004/sulis_logo.png
similarity index 100%
rename from content/posts/newsletter-004/sulis_logo.png
rename to content/news/004/sulis_logo.png
diff --git a/content/posts/newsletter-004/tennis-academy.gif b/content/news/004/tennis-academy.gif
similarity index 100%
rename from content/posts/newsletter-004/tennis-academy.gif
rename to content/news/004/tennis-academy.gif
diff --git a/content/posts/newsletter-004/veloren-video.png b/content/news/004/veloren-video.png
similarity index 100%
rename from content/posts/newsletter-004/veloren-video.png
rename to content/news/004/veloren-video.png
diff --git a/content/posts/newsletter-004/veloren.png b/content/news/004/veloren.png
similarity index 100%
rename from content/posts/newsletter-004/veloren.png
rename to content/news/004/veloren.png
diff --git a/content/posts/newsletter-004/webgpu.png b/content/news/004/webgpu.png
similarity index 100%
rename from content/posts/newsletter-004/webgpu.png
rename to content/news/004/webgpu.png
diff --git a/content/posts/newsletter-004/will_winner_status.png b/content/news/004/will_winner_status.png
similarity index 100%
rename from content/posts/newsletter-004/will_winner_status.png
rename to content/news/004/will_winner_status.png
diff --git a/content/posts/newsletter-005/abstreet.gif b/content/news/005/abstreet.gif
similarity index 100%
rename from content/posts/newsletter-005/abstreet.gif
rename to content/news/005/abstreet.gif
diff --git a/content/posts/newsletter-005/akigi.png b/content/news/005/akigi.png
similarity index 100%
rename from content/posts/newsletter-005/akigi.png
rename to content/news/005/akigi.png
diff --git a/content/posts/newsletter-005/amethyst-rotating-map.gif b/content/news/005/amethyst-rotating-map.gif
similarity index 100%
rename from content/posts/newsletter-005/amethyst-rotating-map.gif
rename to content/news/005/amethyst-rotating-map.gif
diff --git a/content/posts/newsletter-005/compact-space.gif b/content/news/005/compact-space.gif
similarity index 100%
rename from content/posts/newsletter-005/compact-space.gif
rename to content/news/005/compact-space.gif
diff --git a/content/posts/newsletter-005/dank-defense.gif b/content/news/005/dank-defense.gif
similarity index 100%
rename from content/posts/newsletter-005/dank-defense.gif
rename to content/news/005/dank-defense.gif
diff --git a/content/posts/newsletter-005/doryen-small.png b/content/news/005/doryen-small.png
similarity index 100%
rename from content/posts/newsletter-005/doryen-small.png
rename to content/news/005/doryen-small.png
diff --git a/content/posts/newsletter-005/embark.png b/content/news/005/embark.png
similarity index 100%
rename from content/posts/newsletter-005/embark.png
rename to content/news/005/embark.png
diff --git a/content/posts/newsletter-005/garden.gif b/content/news/005/garden.gif
similarity index 100%
rename from content/posts/newsletter-005/garden.gif
rename to content/news/005/garden.gif
diff --git a/content/posts/newsletter-005/ggez-logo-maroon-full.svg b/content/news/005/ggez-logo-maroon-full.svg
similarity index 100%
rename from content/posts/newsletter-005/ggez-logo-maroon-full.svg
rename to content/news/005/ggez-logo-maroon-full.svg
diff --git a/content/posts/newsletter-005/index.md b/content/news/005/index.md
similarity index 98%
rename from content/posts/newsletter-005/index.md
rename to content/news/005/index.md
index 9f5b66ab0..25e14d6d6 100644
--- a/content/posts/newsletter-005/index.md
+++ b/content/news/005/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #5 - December 2019"
 date = 2020-01-10
 transparent = true
+aliases = ["posts/newsletter-005"]
 +++
 
 Welcome to the fifth issue of the Rust GameDev Workgroup’s
@@ -257,8 +258,11 @@ _Discussions:
 
 ### [Garden Devlog: December][garden-dec]
 
-[![Playing with dirt](garden.gif)][garden-video]
-_new smooth soil editing demo_
+{{ image_figure(
+    alt="Playing with dirt"
+    src="garden.gif"
+    caption="new smooth soil editing demo",
+    link="https://youtube.com/watch?v=xU93FGrk1d8") }}
 
 [Garden][garden] is an upcoming game centered around growing realistic plants.
 
@@ -801,7 +805,7 @@ Here're some of the Rust news from it:
 [inside-rust]: https://medium.com/embarkstudios/inside-rust-at-embark-b82c06d1d9f4
 [cargo-about]: https://github.com/embarkstudios/cargo-about
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
@@ -854,8 +858,11 @@ and highlight events from the past. -->
 
 Just an interesting Rust gamedev link from the past. :)
 
-[![Modulator video](modulator_youtube.gif)][modulator-video]
-_click to see [the tutorial video][modulator-video]_
+{{ image_figure(
+    alt="Modulator video"
+    src="modulator_youtube.gif"
+    caption="click to see [the tutorial video][modulator-video]",
+    link="modulator-video") }}
 
 In the November of 2018,
 [@AndreaPessino] (Founder/CTO of [Ready At Dawn] Studios)
diff --git a/content/posts/newsletter-005/lyon-sweep-v-h.png b/content/news/005/lyon-sweep-v-h.png
similarity index 100%
rename from content/posts/newsletter-005/lyon-sweep-v-h.png
rename to content/news/005/lyon-sweep-v-h.png
diff --git a/content/posts/newsletter-005/makepad.jpg b/content/news/005/makepad.jpg
similarity index 100%
rename from content/posts/newsletter-005/makepad.jpg
rename to content/news/005/makepad.jpg
diff --git a/content/posts/newsletter-005/mines.gif b/content/news/005/mines.gif
similarity index 100%
rename from content/posts/newsletter-005/mines.gif
rename to content/news/005/mines.gif
diff --git a/content/posts/newsletter-005/miniquad.gif b/content/news/005/miniquad.gif
similarity index 100%
rename from content/posts/newsletter-005/miniquad.gif
rename to content/news/005/miniquad.gif
diff --git a/content/posts/newsletter-005/modulator_youtube.gif b/content/news/005/modulator_youtube.gif
similarity index 100%
rename from content/posts/newsletter-005/modulator_youtube.gif
rename to content/news/005/modulator_youtube.gif
diff --git a/content/posts/newsletter-005/mun_logo.png b/content/news/005/mun_logo.png
similarity index 100%
rename from content/posts/newsletter-005/mun_logo.png
rename to content/news/005/mun_logo.png
diff --git a/content/posts/newsletter-005/nes-multiplay.png b/content/news/005/nes-multiplay.png
similarity index 100%
rename from content/posts/newsletter-005/nes-multiplay.png
rename to content/news/005/nes-multiplay.png
diff --git a/content/posts/newsletter-005/oxygengine-dark-logo.svg b/content/news/005/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-005/oxygengine-dark-logo.svg
rename to content/news/005/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-005/raylib-rs.png b/content/news/005/raylib-rs.png
similarity index 100%
rename from content/posts/newsletter-005/raylib-rs.png
rename to content/news/005/raylib-rs.png
diff --git a/content/posts/newsletter-005/rayn.png b/content/news/005/rayn.png
similarity index 100%
rename from content/posts/newsletter-005/rayn.png
rename to content/news/005/rayn.png
diff --git a/content/posts/newsletter-005/rendology_hdr_0_4.png b/content/news/005/rendology_hdr_0_4.png
similarity index 100%
rename from content/posts/newsletter-005/rendology_hdr_0_4.png
rename to content/news/005/rendology_hdr_0_4.png
diff --git a/content/posts/newsletter-005/rl-c63-s4.gif b/content/news/005/rl-c63-s4.gif
similarity index 100%
rename from content/posts/newsletter-005/rl-c63-s4.gif
rename to content/news/005/rl-c63-s4.gif
diff --git a/content/posts/newsletter-005/roboinstructus.jpg b/content/news/005/roboinstructus.jpg
similarity index 100%
rename from content/posts/newsletter-005/roboinstructus.jpg
rename to content/news/005/roboinstructus.jpg
diff --git a/content/posts/newsletter-005/siebencorgie-voxels.jpeg b/content/news/005/siebencorgie-voxels.jpeg
similarity index 100%
rename from content/posts/newsletter-005/siebencorgie-voxels.jpeg
rename to content/news/005/siebencorgie-voxels.jpeg
diff --git a/content/posts/newsletter-005/slavic-castles.jpg b/content/news/005/slavic-castles.jpg
similarity index 100%
rename from content/posts/newsletter-005/slavic-castles.jpg
rename to content/news/005/slavic-castles.jpg
diff --git a/content/posts/newsletter-005/space-shooter.gif b/content/news/005/space-shooter.gif
similarity index 100%
rename from content/posts/newsletter-005/space-shooter.gif
rename to content/news/005/space-shooter.gif
diff --git a/content/posts/newsletter-005/tennis-academy.gif b/content/news/005/tennis-academy.gif
similarity index 100%
rename from content/posts/newsletter-005/tennis-academy.gif
rename to content/news/005/tennis-academy.gif
diff --git a/content/posts/newsletter-005/texel.png b/content/news/005/texel.png
similarity index 100%
rename from content/posts/newsletter-005/texel.png
rename to content/news/005/texel.png
diff --git a/content/posts/newsletter-005/vangers.png b/content/news/005/vangers.png
similarity index 100%
rename from content/posts/newsletter-005/vangers.png
rename to content/news/005/vangers.png
diff --git a/content/posts/newsletter-005/veloren1.png b/content/news/005/veloren1.png
similarity index 100%
rename from content/posts/newsletter-005/veloren1.png
rename to content/news/005/veloren1.png
diff --git a/content/posts/newsletter-005/veloren2.png b/content/news/005/veloren2.png
similarity index 100%
rename from content/posts/newsletter-005/veloren2.png
rename to content/news/005/veloren2.png
diff --git a/content/posts/newsletter-005/voxel-rs.png b/content/news/005/voxel-rs.png
similarity index 100%
rename from content/posts/newsletter-005/voxel-rs.png
rename to content/news/005/voxel-rs.png
diff --git a/content/posts/newsletter-005/will.png b/content/news/005/will.png
similarity index 100%
rename from content/posts/newsletter-005/will.png
rename to content/news/005/will.png
diff --git a/content/posts/newsletter-006/12seconds.jpeg b/content/news/006/12seconds.jpeg
similarity index 100%
rename from content/posts/newsletter-006/12seconds.jpeg
rename to content/news/006/12seconds.jpeg
diff --git a/content/posts/newsletter-006/4k-mini-gl.png b/content/news/006/4k-mini-gl.png
similarity index 100%
rename from content/posts/newsletter-006/4k-mini-gl.png
rename to content/news/006/4k-mini-gl.png
diff --git a/content/posts/newsletter-006/akigi.png b/content/news/006/akigi.png
similarity index 100%
rename from content/posts/newsletter-006/akigi.png
rename to content/news/006/akigi.png
diff --git a/content/posts/newsletter-006/amethyst-logo.png b/content/news/006/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-006/amethyst-logo.png
rename to content/news/006/amethyst-logo.png
diff --git a/content/posts/newsletter-006/antorum.jpg b/content/news/006/antorum.jpg
similarity index 100%
rename from content/posts/newsletter-006/antorum.jpg
rename to content/news/006/antorum.jpg
diff --git a/content/posts/newsletter-006/bonus-bw.png b/content/news/006/bonus-bw.png
similarity index 100%
rename from content/posts/newsletter-006/bonus-bw.png
rename to content/news/006/bonus-bw.png
diff --git a/content/posts/newsletter-006/cmd-tea-game.jpeg b/content/news/006/cmd-tea-game.jpeg
similarity index 100%
rename from content/posts/newsletter-006/cmd-tea-game.jpeg
rename to content/news/006/cmd-tea-game.jpeg
diff --git a/content/posts/newsletter-006/colony-genesis.png b/content/news/006/colony-genesis.png
similarity index 100%
rename from content/posts/newsletter-006/colony-genesis.png
rename to content/news/006/colony-genesis.png
diff --git a/content/posts/newsletter-006/cows.png b/content/news/006/cows.png
similarity index 100%
rename from content/posts/newsletter-006/cows.png
rename to content/news/006/cows.png
diff --git a/content/posts/newsletter-006/dash.gif b/content/news/006/dash.gif
similarity index 100%
rename from content/posts/newsletter-006/dash.gif
rename to content/news/006/dash.gif
diff --git a/content/posts/newsletter-006/dwarfs.gif b/content/news/006/dwarfs.gif
similarity index 100%
rename from content/posts/newsletter-006/dwarfs.gif
rename to content/news/006/dwarfs.gif
diff --git a/content/posts/newsletter-006/grumpy-visitors.png b/content/news/006/grumpy-visitors.png
similarity index 100%
rename from content/posts/newsletter-006/grumpy-visitors.png
rename to content/news/006/grumpy-visitors.png
diff --git a/content/posts/newsletter-006/index.md b/content/news/006/index.md
similarity index 99%
rename from content/posts/newsletter-006/index.md
rename to content/news/006/index.md
index 3f887eb4c..1c06e7994 100644
--- a/content/posts/newsletter-006/index.md
+++ b/content/news/006/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #6 - January 2020"
 date = 2020-02-16
 transparent = true
+aliases = ["posts/newsletter-006"]
 +++
 
 Welcome to the sixth issue of the Rust GameDev Workgroup’s
@@ -108,7 +109,7 @@ It was also the first anniversary of This Week in Veloren!
 There has been a devblog each week since the end of January last year.
 Here are some of the big changes in this release:
 
-```text
+```txt
 - Added initial region system implementation
 - Added moon and clouds
 - Added proper SFX system
@@ -837,8 +838,10 @@ Btw, [@resinten] continues working on a luminance-based game:
 
 ### [SPIR-Q][spir-q] v0.4.1
 
-![Example walking an entry point of a SPIR-V file](spir-q.png)
-_Example walking an entry point of a SPIR-V file_
+{{ image_figure(
+    alt="Example walking an entry point of a SPIR-V file"
+    src="spir-q.png"
+    caption="Example walking an entry point of a SPIR-V file") }}
 
 [SPIR-Q][spir-q] is a lightweight [SPIR-V] query library.
 This month v0.2..v0.4.1 versions were released:
@@ -961,7 +964,7 @@ _Discussions:
 
 [nestur]: https://github.com/spieglt/nestur
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-006/mao-brush.png b/content/news/006/mao-brush.png
similarity index 100%
rename from content/posts/newsletter-006/mao-brush.png
rename to content/news/006/mao-brush.png
diff --git a/content/posts/newsletter-006/micro-entertainment-pack.png b/content/news/006/micro-entertainment-pack.png
similarity index 100%
rename from content/posts/newsletter-006/micro-entertainment-pack.png
rename to content/news/006/micro-entertainment-pack.png
diff --git a/content/posts/newsletter-006/mun-logo.png b/content/news/006/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-006/mun-logo.png
rename to content/news/006/mun-logo.png
diff --git a/content/posts/newsletter-006/muoxi-cog.png b/content/news/006/muoxi-cog.png
similarity index 100%
rename from content/posts/newsletter-006/muoxi-cog.png
rename to content/news/006/muoxi-cog.png
diff --git a/content/posts/newsletter-006/nestur.png b/content/news/006/nestur.png
similarity index 100%
rename from content/posts/newsletter-006/nestur.png
rename to content/news/006/nestur.png
diff --git a/content/posts/newsletter-006/noodle-cat.png b/content/news/006/noodle-cat.png
similarity index 100%
rename from content/posts/newsletter-006/noodle-cat.png
rename to content/news/006/noodle-cat.png
diff --git a/content/posts/newsletter-006/oxygengine-dark-logo.svg b/content/news/006/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-006/oxygengine-dark-logo.svg
rename to content/news/006/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-006/q3.jpeg b/content/news/006/q3.jpeg
similarity index 100%
rename from content/posts/newsletter-006/q3.jpeg
rename to content/news/006/q3.jpeg
diff --git a/content/posts/newsletter-006/rad.png b/content/news/006/rad.png
similarity index 100%
rename from content/posts/newsletter-006/rad.png
rename to content/news/006/rad.png
diff --git a/content/posts/newsletter-006/realm-one.png b/content/news/006/realm-one.png
similarity index 100%
rename from content/posts/newsletter-006/realm-one.png
rename to content/news/006/realm-one.png
diff --git a/content/posts/newsletter-006/rl-c70-pewpew.gif b/content/news/006/rl-c70-pewpew.gif
similarity index 100%
rename from content/posts/newsletter-006/rl-c70-pewpew.gif
rename to content/news/006/rl-c70-pewpew.gif
diff --git a/content/posts/newsletter-006/rust-1-41.png b/content/news/006/rust-1-41.png
similarity index 100%
rename from content/posts/newsletter-006/rust-1-41.png
rename to content/news/006/rust-1-41.png
diff --git a/content/posts/newsletter-006/rust-3d-wasm.png b/content/news/006/rust-3d-wasm.png
similarity index 100%
rename from content/posts/newsletter-006/rust-3d-wasm.png
rename to content/news/006/rust-3d-wasm.png
diff --git a/content/posts/newsletter-006/rustacean-station.jpg b/content/news/006/rustacean-station.jpg
similarity index 100%
rename from content/posts/newsletter-006/rustacean-station.jpg
rename to content/news/006/rustacean-station.jpg
diff --git a/content/posts/newsletter-006/scales.png b/content/news/006/scales.png
similarity index 100%
rename from content/posts/newsletter-006/scales.png
rename to content/news/006/scales.png
diff --git a/content/posts/newsletter-006/snake-course.gif b/content/news/006/snake-course.gif
similarity index 100%
rename from content/posts/newsletter-006/snake-course.gif
rename to content/news/006/snake-course.gif
diff --git a/content/posts/newsletter-006/space-game.png b/content/news/006/space-game.png
similarity index 100%
rename from content/posts/newsletter-006/space-game.png
rename to content/news/006/space-game.png
diff --git a/content/posts/newsletter-006/spir-q.png b/content/news/006/spir-q.png
similarity index 100%
rename from content/posts/newsletter-006/spir-q.png
rename to content/news/006/spir-q.png
diff --git a/content/posts/newsletter-006/split.png b/content/news/006/split.png
similarity index 100%
rename from content/posts/newsletter-006/split.png
rename to content/news/006/split.png
diff --git a/content/posts/newsletter-006/veloren1.png b/content/news/006/veloren1.png
similarity index 100%
rename from content/posts/newsletter-006/veloren1.png
rename to content/news/006/veloren1.png
diff --git a/content/posts/newsletter-006/veloren2.png b/content/news/006/veloren2.png
similarity index 100%
rename from content/posts/newsletter-006/veloren2.png
rename to content/news/006/veloren2.png
diff --git a/content/posts/newsletter-006/wall-jump.gif b/content/news/006/wall-jump.gif
similarity index 100%
rename from content/posts/newsletter-006/wall-jump.gif
rename to content/news/006/wall-jump.gif
diff --git a/content/posts/newsletter-006/will-character-selection.png b/content/news/006/will-character-selection.png
similarity index 100%
rename from content/posts/newsletter-006/will-character-selection.png
rename to content/news/006/will-character-selection.png
diff --git a/content/posts/newsletter-007/akigi.png b/content/news/007/akigi.png
similarity index 100%
rename from content/posts/newsletter-007/akigi.png
rename to content/news/007/akigi.png
diff --git a/content/posts/newsletter-007/antorum.jpg b/content/news/007/antorum.jpg
similarity index 100%
rename from content/posts/newsletter-007/antorum.jpg
rename to content/news/007/antorum.jpg
diff --git a/content/posts/newsletter-007/awgy.png b/content/news/007/awgy.png
similarity index 100%
rename from content/posts/newsletter-007/awgy.png
rename to content/news/007/awgy.png
diff --git a/content/posts/newsletter-007/china.png b/content/news/007/china.png
similarity index 100%
rename from content/posts/newsletter-007/china.png
rename to content/news/007/china.png
diff --git a/content/posts/newsletter-007/colony-genesis.png b/content/news/007/colony-genesis.png
similarity index 100%
rename from content/posts/newsletter-007/colony-genesis.png
rename to content/news/007/colony-genesis.png
diff --git a/content/posts/newsletter-007/crow-akari.png b/content/news/007/crow-akari.png
similarity index 100%
rename from content/posts/newsletter-007/crow-akari.png
rename to content/news/007/crow-akari.png
diff --git a/content/posts/newsletter-007/dash.gif b/content/news/007/dash.gif
similarity index 100%
rename from content/posts/newsletter-007/dash.gif
rename to content/news/007/dash.gif
diff --git a/content/posts/newsletter-007/discord-invite.png b/content/news/007/discord-invite.png
similarity index 100%
rename from content/posts/newsletter-007/discord-invite.png
rename to content/news/007/discord-invite.png
diff --git a/content/posts/newsletter-007/dwarf-world.png b/content/news/007/dwarf-world.png
similarity index 100%
rename from content/posts/newsletter-007/dwarf-world.png
rename to content/news/007/dwarf-world.png
diff --git a/content/posts/newsletter-007/everpuzzle-020-preview.gif b/content/news/007/everpuzzle-020-preview.gif
similarity index 100%
rename from content/posts/newsletter-007/everpuzzle-020-preview.gif
rename to content/news/007/everpuzzle-020-preview.gif
diff --git a/content/posts/newsletter-007/for-quest.gif b/content/news/007/for-quest.gif
similarity index 100%
rename from content/posts/newsletter-007/for-quest.gif
rename to content/news/007/for-quest.gif
diff --git a/content/posts/newsletter-007/fyt-ggez.gif b/content/news/007/fyt-ggez.gif
similarity index 100%
rename from content/posts/newsletter-007/fyt-ggez.gif
rename to content/news/007/fyt-ggez.gif
diff --git a/content/posts/newsletter-007/garden-pyramids.jpg b/content/news/007/garden-pyramids.jpg
similarity index 100%
rename from content/posts/newsletter-007/garden-pyramids.jpg
rename to content/news/007/garden-pyramids.jpg
diff --git a/content/posts/newsletter-007/grumpy_missiles.jpg b/content/news/007/grumpy_missiles.jpg
similarity index 100%
rename from content/posts/newsletter-007/grumpy_missiles.jpg
rename to content/news/007/grumpy_missiles.jpg
diff --git a/content/posts/newsletter-007/index.md b/content/news/007/index.md
similarity index 96%
rename from content/posts/newsletter-007/index.md
rename to content/news/007/index.md
index c40e3ce50..3d168d99a 100644
--- a/content/posts/newsletter-007/index.md
+++ b/content/news/007/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #7 - February 2020"
 date = 2020-03-05
 transparent = true
+aliases = ["posts/newsletter-007"]
 +++
 
 Welcome to the seventh issue of the Rust GameDev Workgroup’s
@@ -176,8 +177,10 @@ This month an alpha version was published on itch: [check it out here][colony-it
 
 ### [Veloren][veloren]
 
-![Rolling mountain landscape](veloren1.png)
-_Rolling mountain landscape_
+{{ image_figure(
+    alt="Rolling mountain landscape"
+    src="veloren1.png"
+    caption="Rolling mountain landscape") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG
 inspired by Dwarf Fortress and Cube World.
@@ -195,7 +198,7 @@ is a large part of what is needed for The Content Update.
 
 Here is the February changelog:
 
-```text
+```txt
 - Fixed NPCs attacking the player forever after killing them
 - Extend run sfx to small animals to prevent sneak attacks by geese
 - Added sfx for wielding/unwielding weapons
@@ -213,8 +216,11 @@ Here is the February changelog:
 - Added music system
 ```
 
-[![veloren development](veloren3.gif)](https://youtube.com/watch?v=1ldHQfxCT24)
-_1 year of Veloren development. Click for the full video!_
+{{ image_figure(
+    alt="veloren development"
+    src="veloren3.gif"
+    caption="1 year of Veloren development. Click for the full video!"
+    link="https://youtube.com/watch?v=1ldHQfxCT24") }}
 
 You can read more about some specific topics:
 
@@ -242,8 +248,11 @@ February's full weekly devlogs: "This Week In Veloren...":
 
 ### [Oxidator][oxidator]
 
-[![Gameplay demo: two giant tank armies clashing](oxidator-play.gif)][oxidator-video-play]
-_gameplay demo (35000 units)_
+{{ image_figure(
+    alt="Gameplay demo: two giant tank armies clashing"
+    src="oxidator-play.gif"
+    caption="gameplay demo (35000 units)",
+    link="https://streamable.com/499j0") }}
 
 [Oxidator][oxidator] by [@Ruddle] is a real-time strategy game/engine
 written with Rust and WebGPU.
@@ -269,11 +278,17 @@ Some of the current features:
 - Unit editor: basic editor with joint & mesh selection and parameter editing
   (speed, turn rate, health, etc);
 
-[![Unit editor demo: move agent's parts](oxidator-unit-editor.gif)][oxidator-video-unit-editor]
-_Demo of the unit editor_
+{{ image_figure(
+    alt="Unit editor demo: move agent's parts"
+    src="oxidator-unit-editor.gif"
+    caption="Demo of the unit editor",
+    link="https://streamable.com/ywr44") }}
 
-[![Map editor demo: use pencil tool to instantly create a lake and mountains](oxidator-map-editor.gif)][oxidator-video-map-editor]
-_Demo of the map editor_
+{{ image_figure(
+    alt="Map editor demo: use pencil tool to instantly create a lake and mountains"
+    src="oxidator-map-editor.gif"
+    caption="Demo of the map editor",
+    link="https://github.com/Ruddle/oxidator/blob/be4863e74/etc/map_editor.gif") }}
 
 [oxidator]: https://github.com/Ruddle/oxidator
 [@Ruddle]: https://github.com/Ruddle
@@ -484,9 +499,11 @@ Tetra itself also received two small updates recently:
 
 ### [Akigi][akigi]
 
-![High detail terrain chunk with PRR](akigi.png)
-_Sampling a heightmap in the vertex shader and also computing the normal,
-tangent and bitangent vectors in the vertex shader._
+{{ image_figure(
+    alt="High detail terrain chunk with PRR"
+    src="akigi.png"
+    caption="Sampling a heightmap in the vertex shader and also computing the normal,
+tangent and bitangent vectors in the vertex shader.") }}
 
 [Akigi][akigi] is a multiplayer online world where most believe that humans are inferior.
 
@@ -589,8 +606,10 @@ Check them out in the [latest winter devlog][grumpy_visitors].
 
 ### [Make China Great Again][china-great]
 
-![cities, planes and keys](china.png)
-_Turn back planes to the port, by clicking right keys to the virus beat._
+{{ image_figure(
+    alt="cities, planes and keys"
+    src="china.png"
+    caption="Turn back planes to the port, by clicking right keys to the virus beat.") }}
 
 [Make China Great Again][china-great] ([source][china-great-src])
 by [@PsichiX] is a GlobalGameJam game written using [Oxygengine].
@@ -632,8 +651,10 @@ dependency updates, bugfixes and performance optimizations.
 
 ### [Recall Singularity: February Progress][recall-s-feb]
 
-![Harvesting and refining some Gold](recall-singularity.png)
-_Harvesting and refining some Gold._
+{{ image_figure(
+    alt="Harvesting and refining some Gold"
+    src="recall-singularity.png"
+    caption="Harvesting and refining some Gold.") }}
 
 [Tom Leys] is working on a "The Recall Singularity" game
 about designing autonomous factory ships and stations.
@@ -904,8 +925,10 @@ A showcase game is [being developed](https://github.com/lcnr/akari) with crow.
 
 ### miniquad: ["Rust 2D Engine 2020 Roadmap"][fedor-road]
 
-![mainloop async/await experiment in macroquad](miniquad-sample.png)
-_mainloop async/await experiment in macroquad_
+{{ image_figure(
+    alt="mainloop async/await experiment in macroquad"
+    src="miniquad-sample.png"
+    caption="mainloop async/await experiment in macroquad") }}
 
 [miniquad] by [@fedor_games] is a safe cross-platform rendering library
 focused on portability and low-end platforms support.
@@ -1159,7 +1182,7 @@ It uses vulkan and skia for rendering.
 
 [neovide]: https://github.com/Kethku/neovide
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-007/kas.png b/content/news/007/kas.png
similarity index 100%
rename from content/posts/newsletter-007/kas.png
rename to content/news/007/kas.png
diff --git a/content/posts/newsletter-007/logo_salva_full.svg b/content/news/007/logo_salva_full.svg
similarity index 100%
rename from content/posts/newsletter-007/logo_salva_full.svg
rename to content/news/007/logo_salva_full.svg
diff --git a/content/posts/newsletter-007/lonely-star.png b/content/news/007/lonely-star.png
similarity index 100%
rename from content/posts/newsletter-007/lonely-star.png
rename to content/news/007/lonely-star.png
diff --git a/content/posts/newsletter-007/miniquad-sample.png b/content/news/007/miniquad-sample.png
similarity index 100%
rename from content/posts/newsletter-007/miniquad-sample.png
rename to content/news/007/miniquad-sample.png
diff --git a/content/posts/newsletter-007/n-body-sim.gif b/content/news/007/n-body-sim.gif
similarity index 100%
rename from content/posts/newsletter-007/n-body-sim.gif
rename to content/news/007/n-body-sim.gif
diff --git a/content/posts/newsletter-007/nannou.gif b/content/news/007/nannou.gif
similarity index 100%
rename from content/posts/newsletter-007/nannou.gif
rename to content/news/007/nannou.gif
diff --git a/content/posts/newsletter-007/neovide-cursor.gif b/content/news/007/neovide-cursor.gif
similarity index 100%
rename from content/posts/newsletter-007/neovide-cursor.gif
rename to content/news/007/neovide-cursor.gif
diff --git a/content/posts/newsletter-007/noodle-cat.gif b/content/news/007/noodle-cat.gif
similarity index 100%
rename from content/posts/newsletter-007/noodle-cat.gif
rename to content/news/007/noodle-cat.gif
diff --git a/content/posts/newsletter-007/not-cool.png b/content/news/007/not-cool.png
similarity index 100%
rename from content/posts/newsletter-007/not-cool.png
rename to content/news/007/not-cool.png
diff --git a/content/posts/newsletter-007/oxidator-map-editor.gif b/content/news/007/oxidator-map-editor.gif
similarity index 100%
rename from content/posts/newsletter-007/oxidator-map-editor.gif
rename to content/news/007/oxidator-map-editor.gif
diff --git a/content/posts/newsletter-007/oxidator-play.gif b/content/news/007/oxidator-play.gif
similarity index 100%
rename from content/posts/newsletter-007/oxidator-play.gif
rename to content/news/007/oxidator-play.gif
diff --git a/content/posts/newsletter-007/oxidator-unit-editor.gif b/content/news/007/oxidator-unit-editor.gif
similarity index 100%
rename from content/posts/newsletter-007/oxidator-unit-editor.gif
rename to content/news/007/oxidator-unit-editor.gif
diff --git a/content/posts/newsletter-007/oxygengine-dark-logo.svg b/content/news/007/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-007/oxygengine-dark-logo.svg
rename to content/news/007/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-007/oxygengine-visual-novel-teaser.gif b/content/news/007/oxygengine-visual-novel-teaser.gif
similarity index 100%
rename from content/posts/newsletter-007/oxygengine-visual-novel-teaser.gif
rename to content/news/007/oxygengine-visual-novel-teaser.gif
diff --git a/content/posts/newsletter-007/pglowrpg.gif b/content/news/007/pglowrpg.gif
similarity index 100%
rename from content/posts/newsletter-007/pglowrpg.gif
rename to content/news/007/pglowrpg.gif
diff --git a/content/posts/newsletter-007/pushrod-layout.png b/content/news/007/pushrod-layout.png
similarity index 100%
rename from content/posts/newsletter-007/pushrod-layout.png
rename to content/news/007/pushrod-layout.png
diff --git a/content/posts/newsletter-007/recall-singularity.png b/content/news/007/recall-singularity.png
similarity index 100%
rename from content/posts/newsletter-007/recall-singularity.png
rename to content/news/007/recall-singularity.png
diff --git a/content/posts/newsletter-007/rg-300.jpeg b/content/news/007/rg-300.jpeg
similarity index 100%
rename from content/posts/newsletter-007/rg-300.jpeg
rename to content/news/007/rg-300.jpeg
diff --git a/content/posts/newsletter-007/riot-api.jpg b/content/news/007/riot-api.jpg
similarity index 100%
rename from content/posts/newsletter-007/riot-api.jpg
rename to content/news/007/riot-api.jpg
diff --git a/content/posts/newsletter-007/roboinstructus.jpg b/content/news/007/roboinstructus.jpg
similarity index 100%
rename from content/posts/newsletter-007/roboinstructus.jpg
rename to content/news/007/roboinstructus.jpg
diff --git a/content/posts/newsletter-007/roguelike-tutorial.jpg b/content/news/007/roguelike-tutorial.jpg
similarity index 100%
rename from content/posts/newsletter-007/roguelike-tutorial.jpg
rename to content/news/007/roguelike-tutorial.jpg
diff --git a/content/posts/newsletter-007/rusty-shooter-in-game.jpg b/content/news/007/rusty-shooter-in-game.jpg
similarity index 100%
rename from content/posts/newsletter-007/rusty-shooter-in-game.jpg
rename to content/news/007/rusty-shooter-in-game.jpg
diff --git a/content/posts/newsletter-007/rusty-shooter-youtube.PNG b/content/news/007/rusty-shooter-youtube.PNG
similarity index 100%
rename from content/posts/newsletter-007/rusty-shooter-youtube.PNG
rename to content/news/007/rusty-shooter-youtube.PNG
diff --git a/content/posts/newsletter-007/scale.png b/content/news/007/scale.png
similarity index 100%
rename from content/posts/newsletter-007/scale.png
rename to content/news/007/scale.png
diff --git a/content/posts/newsletter-007/superluminal-app.png b/content/news/007/superluminal-app.png
similarity index 100%
rename from content/posts/newsletter-007/superluminal-app.png
rename to content/news/007/superluminal-app.png
diff --git a/content/posts/newsletter-007/superlumunal.png b/content/news/007/superlumunal.png
similarity index 100%
rename from content/posts/newsletter-007/superlumunal.png
rename to content/news/007/superlumunal.png
diff --git a/content/posts/survey-01/survey-thanks.png b/content/news/007/survey-thanks.png
similarity index 100%
rename from content/posts/survey-01/survey-thanks.png
rename to content/news/007/survey-thanks.png
diff --git a/content/posts/newsletter-007/tallinn.jpeg b/content/news/007/tallinn.jpeg
similarity index 100%
rename from content/posts/newsletter-007/tallinn.jpeg
rename to content/news/007/tallinn.jpeg
diff --git a/content/posts/newsletter-007/tikan-youtube.png b/content/news/007/tikan-youtube.png
similarity index 100%
rename from content/posts/newsletter-007/tikan-youtube.png
rename to content/news/007/tikan-youtube.png
diff --git a/content/posts/newsletter-007/ultimate_scale.png b/content/news/007/ultimate_scale.png
similarity index 100%
rename from content/posts/newsletter-007/ultimate_scale.png
rename to content/news/007/ultimate_scale.png
diff --git a/content/posts/newsletter-007/univer-city-demo.gif b/content/news/007/univer-city-demo.gif
similarity index 100%
rename from content/posts/newsletter-007/univer-city-demo.gif
rename to content/news/007/univer-city-demo.gif
diff --git a/content/posts/newsletter-007/univer-logo.jpg b/content/news/007/univer-logo.jpg
similarity index 100%
rename from content/posts/newsletter-007/univer-logo.jpg
rename to content/news/007/univer-logo.jpg
diff --git a/content/posts/newsletter-007/veloren1.png b/content/news/007/veloren1.png
similarity index 100%
rename from content/posts/newsletter-007/veloren1.png
rename to content/news/007/veloren1.png
diff --git a/content/posts/newsletter-007/veloren2.png b/content/news/007/veloren2.png
similarity index 100%
rename from content/posts/newsletter-007/veloren2.png
rename to content/news/007/veloren2.png
diff --git a/content/posts/newsletter-007/veloren3.gif b/content/news/007/veloren3.gif
similarity index 100%
rename from content/posts/newsletter-007/veloren3.gif
rename to content/news/007/veloren3.gif
diff --git a/content/posts/newsletter-007/way-of-rhea.jpg b/content/news/007/way-of-rhea.jpg
similarity index 100%
rename from content/posts/newsletter-007/way-of-rhea.jpg
rename to content/news/007/way-of-rhea.jpg
diff --git a/content/posts/newsletter-007/wgpu-logo.png b/content/news/007/wgpu-logo.png
similarity index 100%
rename from content/posts/newsletter-007/wgpu-logo.png
rename to content/news/007/wgpu-logo.png
diff --git a/content/posts/newsletter-007/wgpu-talk.png b/content/news/007/wgpu-talk.png
similarity index 100%
rename from content/posts/newsletter-007/wgpu-talk.png
rename to content/news/007/wgpu-talk.png
diff --git a/content/posts/newsletter-007/will_network_play.png b/content/news/007/will_network_play.png
similarity index 100%
rename from content/posts/newsletter-007/will_network_play.png
rename to content/news/007/will_network_play.png
diff --git a/content/posts/newsletter-008/akigi.png b/content/news/008/akigi.png
similarity index 100%
rename from content/posts/newsletter-008/akigi.png
rename to content/news/008/akigi.png
diff --git a/content/posts/newsletter-008/amethyst-logo.png b/content/news/008/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-008/amethyst-logo.png
rename to content/news/008/amethyst-logo.png
diff --git a/content/posts/newsletter-008/ascension.gif b/content/news/008/ascension.gif
similarity index 100%
rename from content/posts/newsletter-008/ascension.gif
rename to content/news/008/ascension.gif
diff --git a/content/posts/newsletter-008/colony.png b/content/news/008/colony.png
similarity index 100%
rename from content/posts/newsletter-008/colony.png
rename to content/news/008/colony.png
diff --git a/content/posts/newsletter-008/const-tweaker.gif b/content/news/008/const-tweaker.gif
similarity index 100%
rename from content/posts/newsletter-008/const-tweaker.gif
rename to content/news/008/const-tweaker.gif
diff --git a/content/posts/newsletter-008/cp437-demo.gif b/content/news/008/cp437-demo.gif
similarity index 100%
rename from content/posts/newsletter-008/cp437-demo.gif
rename to content/news/008/cp437-demo.gif
diff --git a/content/posts/newsletter-008/deeper.png b/content/news/008/deeper.png
similarity index 100%
rename from content/posts/newsletter-008/deeper.png
rename to content/news/008/deeper.png
diff --git a/content/posts/newsletter-008/dynamaze.png b/content/news/008/dynamaze.png
similarity index 100%
rename from content/posts/newsletter-008/dynamaze.png
rename to content/news/008/dynamaze.png
diff --git a/content/posts/newsletter-008/forthequest.jpg b/content/news/008/forthequest.jpg
similarity index 100%
rename from content/posts/newsletter-008/forthequest.jpg
rename to content/news/008/forthequest.jpg
diff --git a/content/posts/newsletter-008/garden.gif b/content/news/008/garden.gif
similarity index 100%
rename from content/posts/newsletter-008/garden.gif
rename to content/news/008/garden.gif
diff --git a/content/posts/newsletter-008/helix-repair.png b/content/news/008/helix-repair.png
similarity index 100%
rename from content/posts/newsletter-008/helix-repair.png
rename to content/news/008/helix-repair.png
diff --git a/content/posts/newsletter-008/index.md b/content/news/008/index.md
similarity index 98%
rename from content/posts/newsletter-008/index.md
rename to content/news/008/index.md
index e5f576928..0af92e25e 100644
--- a/content/posts/newsletter-008/index.md
+++ b/content/news/008/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #8 - March 2020"
 date = 2020-04-08
 transparent = true
+aliases = ["posts/newsletter-008"]
 +++
 
 Welcome to the eighth issue of the Rust GameDev Workgroup’s
@@ -333,8 +334,10 @@ Some of this month's updates:
 
 ### [Veloren][veloren]
 
-![LoD](veloren1.png)
-_Work on Level of Detail_
+{{ image_figure(
+    alt="LoD"
+    src="veloren1.png"
+    caption="Work on Level of Detail") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG
 inspired by Dwarf Fortress and Cube World.
@@ -347,7 +350,7 @@ Networking is also being reworked from the ground up.
 
 Here is the March changelog:
 
-```text
+```txt
 - Added sfx for wielding/unwielding weapons
 - Fixed NPCs attacking the player forever after killing them
 - Added sfx for collecting, dropping and using inventory items
@@ -432,8 +435,10 @@ Main updates:
 
 ### gfx-rs and wgpu news
 
-![Deeper game](deeper.png)
-_[deeper] uses wgpu for rendering_
+{{ image_figure(
+    alt="Deeper game"
+    src="deeper.png"
+    caption="[deeper](https://github.com/arnfaldur/deeper) uses wgpu for rendering") }}
 
 [gfx-hal-0.5](https://github.com/gfx-rs/gfx/) was released!
 Improvements done in March:
@@ -516,8 +521,10 @@ Some of this month's updates:
 
 ### [Nannou v0.13][nannou-post]
 
-![Daily Sketch 0114 by Mactuitui](nannou.png)
-_Daily Sketch 0114 by Mactuitui_
+{{ image_figure(
+    alt="Daily Sketch 0114 by Mactuitui"
+    src="nannou.png"
+    caption="Daily Sketch 0114 by Mactuitui") }}
 
 [Nannou][nannou] is a creative coding framework that aims to make it easy
 for artists to express themselves with simple, fast, reliable code.
@@ -759,7 +766,7 @@ Full documentation is available at the [rectangle-pack docs.rs section][rectangl
 [rectangle-pack-homepage]: https://github.com/chinedufn/rectangle-pack
 [rectangle-pack-docs]: https://crates.io/crates/rectangle-pack/0.1.5
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-008/miniquad.gif b/content/news/008/miniquad.gif
similarity index 100%
rename from content/posts/newsletter-008/miniquad.gif
rename to content/news/008/miniquad.gif
diff --git a/content/posts/newsletter-008/mun-logo.png b/content/news/008/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-008/mun-logo.png
rename to content/news/008/mun-logo.png
diff --git a/content/posts/newsletter-008/nannou.png b/content/news/008/nannou.png
similarity index 100%
rename from content/posts/newsletter-008/nannou.png
rename to content/news/008/nannou.png
diff --git a/content/posts/newsletter-008/oxygengine-asset-browser.gif b/content/news/008/oxygengine-asset-browser.gif
similarity index 100%
rename from content/posts/newsletter-008/oxygengine-asset-browser.gif
rename to content/news/008/oxygengine-asset-browser.gif
diff --git a/content/posts/newsletter-008/oxygengine-dark-logo.svg b/content/news/008/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-008/oxygengine-dark-logo.svg
rename to content/news/008/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-008/pglowrpg.png b/content/news/008/pglowrpg.png
similarity index 100%
rename from content/posts/newsletter-008/pglowrpg.png
rename to content/news/008/pglowrpg.png
diff --git a/content/posts/newsletter-008/quest.jpg b/content/news/008/quest.jpg
similarity index 100%
rename from content/posts/newsletter-008/quest.jpg
rename to content/news/008/quest.jpg
diff --git a/content/posts/newsletter-008/realm-one-video.png b/content/news/008/realm-one-video.png
similarity index 100%
rename from content/posts/newsletter-008/realm-one-video.png
rename to content/news/008/realm-one-video.png
diff --git a/content/posts/newsletter-008/robo-logo.jpeg b/content/news/008/robo-logo.jpeg
similarity index 100%
rename from content/posts/newsletter-008/robo-logo.jpeg
rename to content/news/008/robo-logo.jpeg
diff --git a/content/posts/newsletter-008/robo-screenshot.jpg b/content/news/008/robo-screenshot.jpg
similarity index 100%
rename from content/posts/newsletter-008/robo-screenshot.jpg
rename to content/news/008/robo-screenshot.jpg
diff --git a/content/posts/newsletter-008/rustsim-simba.svg b/content/news/008/rustsim-simba.svg
similarity index 100%
rename from content/posts/newsletter-008/rustsim-simba.svg
rename to content/news/008/rustsim-simba.svg
diff --git a/content/posts/newsletter-008/slime99.png b/content/news/008/slime99.png
similarity index 100%
rename from content/posts/newsletter-008/slime99.png
rename to content/news/008/slime99.png
diff --git a/content/posts/newsletter-008/specs-vs-legion.png b/content/news/008/specs-vs-legion.png
similarity index 100%
rename from content/posts/newsletter-008/specs-vs-legion.png
rename to content/news/008/specs-vs-legion.png
diff --git a/content/posts/newsletter-008/sphere.png b/content/news/008/sphere.png
similarity index 100%
rename from content/posts/newsletter-008/sphere.png
rename to content/news/008/sphere.png
diff --git a/content/posts/newsletter-008/tennis.gif b/content/news/008/tennis.gif
similarity index 100%
rename from content/posts/newsletter-008/tennis.gif
rename to content/news/008/tennis.gif
diff --git a/content/posts/newsletter-008/three-d-lighting.png b/content/news/008/three-d-lighting.png
similarity index 100%
rename from content/posts/newsletter-008/three-d-lighting.png
rename to content/news/008/three-d-lighting.png
diff --git a/content/posts/newsletter-008/three-d-spider.jpeg b/content/news/008/three-d-spider.jpeg
similarity index 100%
rename from content/posts/newsletter-008/three-d-spider.jpeg
rename to content/news/008/three-d-spider.jpeg
diff --git a/content/posts/newsletter-008/urban-gift-video.png b/content/news/008/urban-gift-video.png
similarity index 100%
rename from content/posts/newsletter-008/urban-gift-video.png
rename to content/news/008/urban-gift-video.png
diff --git a/content/posts/newsletter-008/veloren1.png b/content/news/008/veloren1.png
similarity index 100%
rename from content/posts/newsletter-008/veloren1.png
rename to content/news/008/veloren1.png
diff --git a/content/posts/newsletter-008/veloren2.png b/content/news/008/veloren2.png
similarity index 100%
rename from content/posts/newsletter-008/veloren2.png
rename to content/news/008/veloren2.png
diff --git a/content/posts/newsletter-008/will_main.png b/content/news/008/will_main.png
similarity index 100%
rename from content/posts/newsletter-008/will_main.png
rename to content/news/008/will_main.png
diff --git a/content/posts/newsletter-008/zemeroth.jpeg b/content/news/008/zemeroth.jpeg
similarity index 100%
rename from content/posts/newsletter-008/zemeroth.jpeg
rename to content/news/008/zemeroth.jpeg
diff --git a/content/posts/newsletter-009/abstreetgui.png b/content/news/009/abstreetgui.png
similarity index 100%
rename from content/posts/newsletter-009/abstreetgui.png
rename to content/news/009/abstreetgui.png
diff --git a/content/posts/newsletter-009/akigi-shadows.jpeg b/content/news/009/akigi-shadows.jpeg
similarity index 100%
rename from content/posts/newsletter-009/akigi-shadows.jpeg
rename to content/news/009/akigi-shadows.jpeg
diff --git a/content/posts/newsletter-009/amethyst-logo.png b/content/news/009/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-009/amethyst-logo.png
rename to content/news/009/amethyst-logo.png
diff --git a/content/posts/newsletter-009/blobs-n-bullets.gif b/content/news/009/blobs-n-bullets.gif
similarity index 100%
rename from content/posts/newsletter-009/blobs-n-bullets.gif
rename to content/news/009/blobs-n-bullets.gif
diff --git a/content/posts/newsletter-009/boulder_dash.png b/content/news/009/boulder_dash.png
similarity index 100%
rename from content/posts/newsletter-009/boulder_dash.png
rename to content/news/009/boulder_dash.png
diff --git a/content/posts/newsletter-009/citybound.jpeg b/content/news/009/citybound.jpeg
similarity index 100%
rename from content/posts/newsletter-009/citybound.jpeg
rename to content/news/009/citybound.jpeg
diff --git a/content/posts/newsletter-009/colony.png b/content/news/009/colony.png
similarity index 100%
rename from content/posts/newsletter-009/colony.png
rename to content/news/009/colony.png
diff --git a/content/posts/newsletter-009/conquest.gif b/content/news/009/conquest.gif
similarity index 100%
rename from content/posts/newsletter-009/conquest.gif
rename to content/news/009/conquest.gif
diff --git a/content/posts/newsletter-009/cratebeforeattack.png b/content/news/009/cratebeforeattack.png
similarity index 100%
rename from content/posts/newsletter-009/cratebeforeattack.png
rename to content/news/009/cratebeforeattack.png
diff --git a/content/posts/newsletter-009/dgnfog.jpeg b/content/news/009/dgnfog.jpeg
similarity index 100%
rename from content/posts/newsletter-009/dgnfog.jpeg
rename to content/news/009/dgnfog.jpeg
diff --git a/content/posts/newsletter-009/erupt.png b/content/news/009/erupt.png
similarity index 100%
rename from content/posts/newsletter-009/erupt.png
rename to content/news/009/erupt.png
diff --git a/content/posts/newsletter-009/fermi-paradox.jpg b/content/news/009/fermi-paradox.jpg
similarity index 100%
rename from content/posts/newsletter-009/fermi-paradox.jpg
rename to content/news/009/fermi-paradox.jpg
diff --git a/content/posts/newsletter-009/forthequest.jpg b/content/news/009/forthequest.jpg
similarity index 100%
rename from content/posts/newsletter-009/forthequest.jpg
rename to content/news/009/forthequest.jpg
diff --git a/content/posts/newsletter-009/frog-rations.jpg b/content/news/009/frog-rations.jpg
similarity index 100%
rename from content/posts/newsletter-009/frog-rations.jpg
rename to content/news/009/frog-rations.jpg
diff --git a/content/posts/newsletter-009/grumpy_visitors-video.gif b/content/news/009/grumpy_visitors-video.gif
similarity index 100%
rename from content/posts/newsletter-009/grumpy_visitors-video.gif
rename to content/news/009/grumpy_visitors-video.gif
diff --git a/content/posts/newsletter-009/hectic.png b/content/news/009/hectic.png
similarity index 100%
rename from content/posts/newsletter-009/hectic.png
rename to content/news/009/hectic.png
diff --git a/content/posts/newsletter-009/ignite-code-media.gif b/content/news/009/ignite-code-media.gif
similarity index 100%
rename from content/posts/newsletter-009/ignite-code-media.gif
rename to content/news/009/ignite-code-media.gif
diff --git a/content/posts/newsletter-009/ignite-play-mode.jpeg b/content/news/009/ignite-play-mode.jpeg
similarity index 100%
rename from content/posts/newsletter-009/ignite-play-mode.jpeg
rename to content/news/009/ignite-play-mode.jpeg
diff --git a/content/posts/newsletter-009/ignite-proc-macro.png b/content/news/009/ignite-proc-macro.png
similarity index 100%
rename from content/posts/newsletter-009/ignite-proc-macro.png
rename to content/news/009/ignite-proc-macro.png
diff --git a/content/posts/newsletter-009/index.md b/content/news/009/index.md
similarity index 97%
rename from content/posts/newsletter-009/index.md
rename to content/news/009/index.md
index c535ba2c8..a3bb90147 100644
--- a/content/posts/newsletter-009/index.md
+++ b/content/news/009/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #9 - April 2020"
 date = 2020-05-06
 transparent = true
+aliases = ["posts/newsletter-009"]
 +++
 
 Welcome to the ninth issue of the Rust GameDev Workgroup’s
@@ -246,8 +247,10 @@ Follow [@seratonik] on Twitter for updates.
 
 ### [Akigi][akigi]
 
-![shadows demo](akigi-shadows.jpeg)
-_new shadows_
+{{ image_figure(
+    alt="shadows demo"
+    src="akigi-shadows.jpeg"
+    caption="new shadows") }}
 
 > [Akigi][akigi] is a multiplayer online world where humans
 > aren't the only intelligent animals.
@@ -478,8 +481,10 @@ Here's a roundup of some of them:
 
 ### [Veloren][veloren]
 
-![Buildings](veloren1.png)
-_Early procedural building generation_
+{{ image_figure(
+    alt="Buildings"
+    src="veloren1.png"
+    caption="Early procedural building generation") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG
 inspired by Dwarf Fortress and Cube World.
@@ -494,7 +499,7 @@ more alive.
 
 Here is the April changelog:
 
-```text
+```txt
 - Complete rewrite of the combat system into a state machine
 - Abilities like Dash and Triplestrike
 - Fireball explosions
@@ -516,8 +521,10 @@ Here is the April changelog:
 - You can start the game by pressing "enter" from the character selection menu
 ```
 
-![Hanging out](veloren2.png)
-_Early procedural building generation_
+{{ image_figure(
+    alt="Hanging out"
+    src="veloren2.png"
+    caption="Early procedural building generation") }}
 
 You can read more about some specific topics from April:
 
@@ -631,9 +638,11 @@ explaining why they've chosen Rust for their project's backend.
 
 ### [Symmetric Matrices & Triangle Numbers][matrices-post]
 
-![an example of a multi-layered game level](rhea-player-orb.jpeg)
-_The pink orb should not collide with the player,
-but it should collide with the ground._
+{{ image_figure(
+    alt="an example of a multi-layered game level"
+    src="rhea-player-orb.jpeg"
+    caption="The pink orb should not collide with the player,
+             but it should collide with the ground.") }}
 
 [Anthropic Studios][anthropic] has [shared a post][matrices-post]
 about implementing a layer system to ["Way of Rhea"'s][rhea] physics engine
@@ -737,8 +746,10 @@ and additional information about contributing are available on the [github repos
 
 ### `gfx-rs` and `wgpu` News
 
-![hectic screenshot: graveyard and vampires](hectic.png)
-_[hectic-rs] - Rust/wgpu/specs re-write of hectic by [@expenses]_
+{{ image_figure(
+    alt="hectic screenshot: graveyard and vampires"
+    src="hectic.png"
+    caption="[hectic-rs](https://github.com/expenses/hectic-rs) - Rust/wgpu/specs re-write of hectic by [@expenses](https://github.com/expenses)") }}
 
 wgpu-0.5 release happened! See the [changelog][wgpu-0-5].
 It's based on `gfx-hal-0.5` (which was covered in the [March newsletter][gfx-march]),
@@ -882,8 +893,10 @@ in an eternally sprawling office complex.
 
 ### [miniquad]
 
-![miniquad logo](miniquad_logo.png)
-_`miniquad` project got a logo_
+{{ image_figure(
+    alt="miniquad logo"
+    src="miniquad_logo.png"
+    caption="`miniquad` project got a logo") }}
 
 [miniquad] is a safe and cross-platform rendering library
 focused on portability and low-end platforms support.
@@ -1074,7 +1087,7 @@ _Discussions:
 [Godot]: https://godotengine.org
 
 <!--
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 skiping this section this time
 -->
@@ -1123,8 +1136,10 @@ and highlight events from the past. -->
 
 Just an interesting Rust gamedev link from the past. :)
 
-![example](valora-example.jpeg)
-_"dead end" by turnage, 2019_
+{{ image_figure(
+    alt="example"
+    src="valora-example.jpeg"
+    caption=""dead end" by turnage, 2019") }}
 
 A few months ago a  generative art library ["valora"][valora-src]
 was released by [@turnage].
diff --git a/content/posts/newsletter-009/ldn-video.jpeg b/content/news/009/ldn-video.jpeg
similarity index 100%
rename from content/posts/newsletter-009/ldn-video.jpeg
rename to content/news/009/ldn-video.jpeg
diff --git a/content/posts/newsletter-009/lighthouse-keeper.jpg b/content/news/009/lighthouse-keeper.jpg
similarity index 100%
rename from content/posts/newsletter-009/lighthouse-keeper.jpg
rename to content/news/009/lighthouse-keeper.jpg
diff --git a/content/posts/newsletter-009/melody-madness.png b/content/news/009/melody-madness.png
similarity index 100%
rename from content/posts/newsletter-009/melody-madness.png
rename to content/news/009/melody-madness.png
diff --git a/content/posts/newsletter-009/miniquad_logo.png b/content/news/009/miniquad_logo.png
similarity index 100%
rename from content/posts/newsletter-009/miniquad_logo.png
rename to content/news/009/miniquad_logo.png
diff --git a/content/posts/newsletter-009/mun-logo.png b/content/news/009/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-009/mun-logo.png
rename to content/news/009/mun-logo.png
diff --git a/content/posts/newsletter-009/officerl.png b/content/news/009/officerl.png
similarity index 100%
rename from content/posts/newsletter-009/officerl.png
rename to content/news/009/officerl.png
diff --git a/content/posts/newsletter-009/oxygengine-dark-logo.svg b/content/news/009/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-009/oxygengine-dark-logo.svg
rename to content/news/009/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-009/quadtree.jpeg b/content/news/009/quadtree.jpeg
similarity index 100%
rename from content/posts/newsletter-009/quadtree.jpeg
rename to content/news/009/quadtree.jpeg
diff --git a/content/posts/newsletter-009/realm-one.jpeg b/content/news/009/realm-one.jpeg
similarity index 100%
rename from content/posts/newsletter-009/realm-one.jpeg
rename to content/news/009/realm-one.jpeg
diff --git a/content/posts/newsletter-009/rhea-player-orb.jpeg b/content/news/009/rhea-player-orb.jpeg
similarity index 100%
rename from content/posts/newsletter-009/rhea-player-orb.jpeg
rename to content/news/009/rhea-player-orb.jpeg
diff --git a/content/posts/newsletter-009/robo.gif b/content/news/009/robo.gif
similarity index 100%
rename from content/posts/newsletter-009/robo.gif
rename to content/news/009/robo.gif
diff --git a/content/posts/newsletter-009/sarekt.png b/content/news/009/sarekt.png
similarity index 100%
rename from content/posts/newsletter-009/sarekt.png
rename to content/news/009/sarekt.png
diff --git a/content/posts/newsletter-009/scale.png b/content/news/009/scale.png
similarity index 100%
rename from content/posts/newsletter-009/scale.png
rename to content/news/009/scale.png
diff --git a/content/posts/newsletter-009/sokoban_level.gif b/content/news/009/sokoban_level.gif
similarity index 100%
rename from content/posts/newsletter-009/sokoban_level.gif
rename to content/news/009/sokoban_level.gif
diff --git a/content/posts/newsletter-009/ssshmup.gif b/content/news/009/ssshmup.gif
similarity index 100%
rename from content/posts/newsletter-009/ssshmup.gif
rename to content/news/009/ssshmup.gif
diff --git a/content/posts/newsletter-009/the-hum.jpg b/content/news/009/the-hum.jpg
similarity index 100%
rename from content/posts/newsletter-009/the-hum.jpg
rename to content/news/009/the-hum.jpg
diff --git a/content/posts/newsletter-009/the-last-ship.jpg b/content/news/009/the-last-ship.jpg
similarity index 100%
rename from content/posts/newsletter-009/the-last-ship.jpg
rename to content/news/009/the-last-ship.jpg
diff --git a/content/posts/newsletter-009/valora-example.jpeg b/content/news/009/valora-example.jpeg
similarity index 100%
rename from content/posts/newsletter-009/valora-example.jpeg
rename to content/news/009/valora-example.jpeg
diff --git a/content/posts/newsletter-009/veloren1.png b/content/news/009/veloren1.png
similarity index 100%
rename from content/posts/newsletter-009/veloren1.png
rename to content/news/009/veloren1.png
diff --git a/content/posts/newsletter-009/veloren2.png b/content/news/009/veloren2.png
similarity index 100%
rename from content/posts/newsletter-009/veloren2.png
rename to content/news/009/veloren2.png
diff --git a/content/posts/newsletter-009/visarcana.jpeg b/content/news/009/visarcana.jpeg
similarity index 100%
rename from content/posts/newsletter-009/visarcana.jpeg
rename to content/news/009/visarcana.jpeg
diff --git a/content/posts/newsletter-009/will_wasm_network.png b/content/news/009/will_wasm_network.png
similarity index 100%
rename from content/posts/newsletter-009/will_wasm_network.png
rename to content/news/009/will_wasm_network.png
diff --git a/content/posts/newsletter-009/wonder.jpg b/content/news/009/wonder.jpg
similarity index 100%
rename from content/posts/newsletter-009/wonder.jpg
rename to content/news/009/wonder.jpg
diff --git a/content/posts/newsletter-009/woods.jpg b/content/news/009/woods.jpg
similarity index 100%
rename from content/posts/newsletter-009/woods.jpg
rename to content/news/009/woods.jpg
diff --git a/content/posts/newsletter-010/akigi1.png b/content/news/010/akigi1.png
similarity index 100%
rename from content/posts/newsletter-010/akigi1.png
rename to content/news/010/akigi1.png
diff --git a/content/posts/newsletter-010/amethyst-logo.png b/content/news/010/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-010/amethyst-logo.png
rename to content/news/010/amethyst-logo.png
diff --git a/content/posts/newsletter-010/cb-talk-video.jpeg b/content/news/010/cb-talk-video.jpeg
similarity index 100%
rename from content/posts/newsletter-010/cb-talk-video.jpeg
rename to content/news/010/cb-talk-video.jpeg
diff --git a/content/posts/newsletter-010/crate_before_attack.png b/content/news/010/crate_before_attack.png
similarity index 100%
rename from content/posts/newsletter-010/crate_before_attack.png
rename to content/news/010/crate_before_attack.png
diff --git a/content/posts/newsletter-010/digescape.png b/content/news/010/digescape.png
similarity index 100%
rename from content/posts/newsletter-010/digescape.png
rename to content/news/010/digescape.png
diff --git a/content/posts/newsletter-010/elektron.png b/content/news/010/elektron.png
similarity index 100%
rename from content/posts/newsletter-010/elektron.png
rename to content/news/010/elektron.png
diff --git a/content/posts/newsletter-010/forthequest.jpg b/content/news/010/forthequest.jpg
similarity index 100%
rename from content/posts/newsletter-010/forthequest.jpg
rename to content/news/010/forthequest.jpg
diff --git a/content/posts/newsletter-010/garden.jpg b/content/news/010/garden.jpg
similarity index 100%
rename from content/posts/newsletter-010/garden.jpg
rename to content/news/010/garden.jpg
diff --git a/content/posts/newsletter-010/gfx-hal-tutorial.jpeg b/content/news/010/gfx-hal-tutorial.jpeg
similarity index 100%
rename from content/posts/newsletter-010/gfx-hal-tutorial.jpeg
rename to content/news/010/gfx-hal-tutorial.jpeg
diff --git a/content/posts/newsletter-010/iced-life.gif b/content/news/010/iced-life.gif
similarity index 100%
rename from content/posts/newsletter-010/iced-life.gif
rename to content/news/010/iced-life.gif
diff --git a/content/posts/newsletter-010/index.md b/content/news/010/index.md
similarity index 96%
rename from content/posts/newsletter-010/index.md
rename to content/news/010/index.md
index fd8a4d94d..241bfb18f 100644
--- a/content/posts/newsletter-010/index.md
+++ b/content/news/010/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #10 - May 2020"
 date = 2020-06-08
 transparent = true
+aliases = ["posts/newsletter-010"]
 +++
 
 Welcome to the tenth issue of the Rust GameDev Workgroup’s
@@ -29,7 +30,7 @@ Table of contents:
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Meeting Minutes](#meeting-minutes)
 - [Requests for Contribution](#requests-for-contribution)
 - [Jobs](#jobs)
@@ -63,8 +64,10 @@ If needed, a section can be split into subsections with a "------" delimiter.
 
 ### [Veloren][veloren]
 
-![Buildings](veloren1.png)
-_The new repo banner_
+{{ image_figure(
+    alt="Buildings"
+    src="veloren1.png"
+    caption="The new repo banner") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -78,8 +81,11 @@ release as well. Veloren also now has an [Open Collective
 account][veloren-opencollective], and you can donate towards our infrastructure
 costs. GamingOnLinux [wrote an article][gamingonlinux] on Veloren's development.
 
-[![0.6 release trailer](veloren_trailer.gif)](https://www.youtube.com/watch?v=kjDFVgWYMd4)
-_0.6 release trailer. Click for the full video!_
+{{ image_figure(
+    alt="0.6 release trailer"
+    src="veloren_trailer.gif"
+    caption="0.6 release trailer. Click for the full video!"
+    link="https://www.youtube.com/watch?v=kjDFVgWYMd4") }}
 
 Here is the May changelog:
 
@@ -112,8 +118,10 @@ of 0.7, and what they wanted to achieve:
 > clashing together. I want to be able to add people to my combat party and
 > interact with the game UI to do this.
 
-![Welcome to Veloren](veloren2.png)
-_Welcome to Veloren! From the 0.6 release party_
+{{ image_figure(
+    alt="Welcome to Veloren"
+    src="veloren2.png"
+    caption="Welcome to Veloren! From the 0.6 release party") }}
 
 You can read more about some specific topics from May:
 
@@ -212,8 +220,11 @@ Some of the updates:
 
 ### [Sandbox]
 
-[![Sandbox gameplay demo](sandbox.jpeg)](https://streamable.com/0bhbol#)
-_click to see a gameplay demo_
+{{ image_figure(
+    alt="Sandbox gameplay demo"
+    src="sandbox.jpeg"
+    caption="click to see a gameplay demo"
+    link="https://streamable.com/0bhbol#") }}
 
 [Sandbox] is a falling sand game by JMS55 that provides a variety of fun
 particle types to place, and then you get to watch the resulting interactions!
@@ -319,8 +330,11 @@ Follow [@seratonik] on Twitter for updates.
 
 ### [Crate Before Attack][cratebeforeattack-site]
 
-[![screenshot: decision tree and goal distance map in the background](crate_before_attack.png)][cratebeforeattack-site]
-_Decision tree and goal distance map in the background_
+{{ image_figure(
+    alt="screenshot: decision tree and goal distance map in the background"
+    src="crate_before_attack.png"
+    caption="Decision tree and goal distance map in the background",
+    link="https://cratebeforeattack.com") }}
 
 [Crate Before Attack][cratebeforeattack-site] by [koalefant (@CrateAttack)][@CrateAttack]
 is a realtime/turn-based multiplayer game where frogs combat their friends
@@ -376,7 +390,7 @@ Dig Escape is a simple puzzle game written in Rust. You can play it in the
 browser [here][digescape-game]. The developer has released [some
 videos][digescape-progress-video] about the development of the game. They also
 [did a review][digescape-rust-review] on what it was like working with Rust for
-the first time. Be sure to check out the [Github repo][digescape-github].
+the first time. Be sure to check out the [GitHub repo][digescape-github].
 
 [digescape-game]: https://tantandev.itch.io/digescape
 [digescape-progress-video]: https://www.youtube.com/watch?v=q6-f63vZW8Y
@@ -385,8 +399,10 @@ the first time. Be sure to check out the [Github repo][digescape-github].
 
 ### [Akigi][akigi]
 
-![cat model](akigi1.png)
-_Completed cat model with rigging_
+{{ image_figure(
+    alt="cat model"
+    src="akigi1.png"
+    caption="Completed cat model with rigging") }}
 
 > [Akigi][akigi] is a magical multiplayer online world where humans aren't the
 > only intelligent animals. Akigi is a solo project, and the developer hopes to
@@ -419,8 +435,10 @@ Full devlogs:
 
 ### Nox Futura: Rust Edition
 
-![worldgen menu](nox-f.png)
-_Worldgen menu_
+{{ image_figure(
+    alt="worldgen menu"
+    src="nox-f.png"
+    caption="Worldgen menu") }}
 
 [Herbert Wolverson][thebracket]
 (the author of [bracket-lib] and [the Rust Roguelike Tutorial][rl-book])
@@ -638,8 +656,11 @@ _Discussions:
 
 ### NodeFX
 
-[![NodeFX](nodefx.png)][NodeFXTweet]
-_Click the image to see the animated version_
+{{ image_figure(
+    alt="NodeFX"
+    src="nodefx.png"
+    caption="Click the image to see the animated version",
+    link="https://twitter.com/MrVallentin/status/1256805858022998016") }}
 
 Project "NodeFX" by [Christian Vallentin (@MrVallentin)][@MrVallentin]
 is an unnamed node-based tool for creating GLSL shaders in real-time,
@@ -736,7 +757,7 @@ Also, check out a new "Game of Life" demo [here][iced-life].
 
 ### [beehive]
 
-```text
+```txt
        yz +Y
        __
    yx /  \ xz +X
@@ -963,7 +984,7 @@ Robo Instructus][otf-font-robo].
 [gdnative-release]: https://twitter.com/toast_dev/status/1267071886040555520
 [@toast_dev]: https://twitter.com/toast_dev
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-010/kas.png b/content/news/010/kas.png
similarity index 100%
rename from content/posts/newsletter-010/kas.png
rename to content/news/010/kas.png
diff --git a/content/posts/newsletter-010/life.png b/content/news/010/life.png
similarity index 100%
rename from content/posts/newsletter-010/life.png
rename to content/news/010/life.png
diff --git a/content/posts/newsletter-010/minds_eye.gif b/content/news/010/minds_eye.gif
similarity index 100%
rename from content/posts/newsletter-010/minds_eye.gif
rename to content/news/010/minds_eye.gif
diff --git a/content/posts/newsletter-010/mun-logo.png b/content/news/010/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-010/mun-logo.png
rename to content/news/010/mun-logo.png
diff --git a/content/posts/newsletter-010/networking_wasm_recv.png b/content/news/010/networking_wasm_recv.png
similarity index 100%
rename from content/posts/newsletter-010/networking_wasm_recv.png
rename to content/news/010/networking_wasm_recv.png
diff --git a/content/posts/newsletter-010/nodefx.png b/content/news/010/nodefx.png
similarity index 100%
rename from content/posts/newsletter-010/nodefx.png
rename to content/news/010/nodefx.png
diff --git a/content/posts/newsletter-010/nox-f.png b/content/news/010/nox-f.png
similarity index 100%
rename from content/posts/newsletter-010/nox-f.png
rename to content/news/010/nox-f.png
diff --git a/content/posts/newsletter-010/on-fps.jpeg b/content/news/010/on-fps.jpeg
similarity index 100%
rename from content/posts/newsletter-010/on-fps.jpeg
rename to content/news/010/on-fps.jpeg
diff --git a/content/posts/newsletter-010/orb_farm.jpeg b/content/news/010/orb_farm.jpeg
similarity index 100%
rename from content/posts/newsletter-010/orb_farm.jpeg
rename to content/news/010/orb_farm.jpeg
diff --git a/content/posts/newsletter-010/oxygengine-custom-fonts.png b/content/news/010/oxygengine-custom-fonts.png
similarity index 100%
rename from content/posts/newsletter-010/oxygengine-custom-fonts.png
rename to content/news/010/oxygengine-custom-fonts.png
diff --git a/content/posts/newsletter-010/oxygengine-dark-logo.svg b/content/news/010/oxygengine-dark-logo.svg
similarity index 100%
rename from content/posts/newsletter-010/oxygengine-dark-logo.svg
rename to content/news/010/oxygengine-dark-logo.svg
diff --git a/content/posts/newsletter-010/oxygengine-pokemon-gold.gif b/content/news/010/oxygengine-pokemon-gold.gif
similarity index 100%
rename from content/posts/newsletter-010/oxygengine-pokemon-gold.gif
rename to content/news/010/oxygengine-pokemon-gold.gif
diff --git a/content/posts/newsletter-010/paddlers.jpg b/content/news/010/paddlers.jpg
similarity index 100%
rename from content/posts/newsletter-010/paddlers.jpg
rename to content/news/010/paddlers.jpg
diff --git a/content/posts/newsletter-010/rg3d_3rd_person_example.jpg b/content/news/010/rg3d_3rd_person_example.jpg
similarity index 100%
rename from content/posts/newsletter-010/rg3d_3rd_person_example.jpg
rename to content/news/010/rg3d_3rd_person_example.jpg
diff --git a/content/posts/newsletter-010/rust_asm.png b/content/news/010/rust_asm.png
similarity index 100%
rename from content/posts/newsletter-010/rust_asm.png
rename to content/news/010/rust_asm.png
diff --git a/content/posts/newsletter-010/rustsim.png b/content/news/010/rustsim.png
similarity index 100%
rename from content/posts/newsletter-010/rustsim.png
rename to content/news/010/rustsim.png
diff --git a/content/posts/newsletter-010/rusty_editor.jpg b/content/news/010/rusty_editor.jpg
similarity index 100%
rename from content/posts/newsletter-010/rusty_editor.jpg
rename to content/news/010/rusty_editor.jpg
diff --git a/content/posts/newsletter-010/sailing-sim.jpg b/content/news/010/sailing-sim.jpg
similarity index 100%
rename from content/posts/newsletter-010/sailing-sim.jpg
rename to content/news/010/sailing-sim.jpg
diff --git a/content/posts/newsletter-010/sandbox.jpeg b/content/news/010/sandbox.jpeg
similarity index 100%
rename from content/posts/newsletter-010/sandbox.jpeg
rename to content/news/010/sandbox.jpeg
diff --git a/content/posts/newsletter-010/sokoban_2.jpeg b/content/news/010/sokoban_2.jpeg
similarity index 100%
rename from content/posts/newsletter-010/sokoban_2.jpeg
rename to content/news/010/sokoban_2.jpeg
diff --git a/content/posts/newsletter-010/stellary.jpeg b/content/news/010/stellary.jpeg
similarity index 100%
rename from content/posts/newsletter-010/stellary.jpeg
rename to content/news/010/stellary.jpeg
diff --git a/content/posts/newsletter-010/svg_face.jpeg b/content/news/010/svg_face.jpeg
similarity index 100%
rename from content/posts/newsletter-010/svg_face.jpeg
rename to content/news/010/svg_face.jpeg
diff --git a/content/posts/newsletter-010/ttf.gif b/content/news/010/ttf.gif
similarity index 100%
rename from content/posts/newsletter-010/ttf.gif
rename to content/news/010/ttf.gif
diff --git a/content/posts/newsletter-010/veloren1.png b/content/news/010/veloren1.png
similarity index 100%
rename from content/posts/newsletter-010/veloren1.png
rename to content/news/010/veloren1.png
diff --git a/content/posts/newsletter-010/veloren2.png b/content/news/010/veloren2.png
similarity index 100%
rename from content/posts/newsletter-010/veloren2.png
rename to content/news/010/veloren2.png
diff --git a/content/posts/newsletter-010/veloren_trailer.gif b/content/news/010/veloren_trailer.gif
similarity index 100%
rename from content/posts/newsletter-010/veloren_trailer.gif
rename to content/news/010/veloren_trailer.gif
diff --git a/content/posts/newsletter-010/vkeyes.gif b/content/news/010/vkeyes.gif
similarity index 100%
rename from content/posts/newsletter-010/vkeyes.gif
rename to content/news/010/vkeyes.gif
diff --git a/content/posts/newsletter-010/wgpu-logo.png b/content/news/010/wgpu-logo.png
similarity index 100%
rename from content/posts/newsletter-010/wgpu-logo.png
rename to content/news/010/wgpu-logo.png
diff --git a/content/posts/newsletter-011/abstreet-evaluating-impacts.gif b/content/news/011/abstreet-evaluating-impacts.gif
similarity index 100%
rename from content/posts/newsletter-011/abstreet-evaluating-impacts.gif
rename to content/news/011/abstreet-evaluating-impacts.gif
diff --git a/content/posts/newsletter-011/animal-chess.jpeg b/content/news/011/animal-chess.jpeg
similarity index 100%
rename from content/posts/newsletter-011/animal-chess.jpeg
rename to content/news/011/animal-chess.jpeg
diff --git a/content/posts/newsletter-011/blub-fluid.gif b/content/news/011/blub-fluid.gif
similarity index 100%
rename from content/posts/newsletter-011/blub-fluid.gif
rename to content/news/011/blub-fluid.gif
diff --git a/content/posts/newsletter-011/boundless.jpeg b/content/news/011/boundless.jpeg
similarity index 100%
rename from content/posts/newsletter-011/boundless.jpeg
rename to content/news/011/boundless.jpeg
diff --git a/content/posts/newsletter-011/crate_before_attack.gif b/content/news/011/crate_before_attack.gif
similarity index 100%
rename from content/posts/newsletter-011/crate_before_attack.gif
rename to content/news/011/crate_before_attack.gif
diff --git a/content/posts/newsletter-011/doom-fire.gif b/content/news/011/doom-fire.gif
similarity index 100%
rename from content/posts/newsletter-011/doom-fire.gif
rename to content/news/011/doom-fire.gif
diff --git a/content/posts/newsletter-011/ecs-talk.png b/content/news/011/ecs-talk.png
similarity index 100%
rename from content/posts/newsletter-011/ecs-talk.png
rename to content/news/011/ecs-talk.png
diff --git a/content/posts/newsletter-011/garden.jpeg b/content/news/011/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-011/garden.jpeg
rename to content/news/011/garden.jpeg
diff --git a/content/posts/newsletter-011/glisp-logo.png b/content/news/011/glisp-logo.png
similarity index 100%
rename from content/posts/newsletter-011/glisp-logo.png
rename to content/news/011/glisp-logo.png
diff --git a/content/posts/newsletter-011/goeld.jpg b/content/news/011/goeld.jpg
similarity index 100%
rename from content/posts/newsletter-011/goeld.jpg
rename to content/news/011/goeld.jpg
diff --git a/content/posts/newsletter-011/guacamole.gif b/content/news/011/guacamole.gif
similarity index 100%
rename from content/posts/newsletter-011/guacamole.gif
rename to content/news/011/guacamole.gif
diff --git a/content/posts/newsletter-011/index.md b/content/news/011/index.md
similarity index 95%
rename from content/posts/newsletter-011/index.md
rename to content/news/011/index.md
index 49c70ba9d..7bb64bd71 100644
--- a/content/posts/newsletter-011/index.md
+++ b/content/news/011/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #11 - June 2020"
 date = 2020-07-07
 transparent = true
+aliases = ["posts/newsletter-011"]
 +++
 
 Welcome to the eleventh issue of the Rust GameDev Workgroup’s
@@ -30,7 +31,7 @@ Table of contents:
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Meeting Minutes](#meeting-minutes)
 - [Requests for Contribution](#requests-for-contribution)
 - [Bonus](#bonus)
@@ -92,8 +93,11 @@ Also, participants are encouraged to
 
 ### [Way of Rhea][rhea-site]
 
-[![Way of Rhea Trailer](way-of-rhea.jpeg)][rhea-trailer]
-_Click to see the latest version of the game's trailer_
+{{ image_figure(
+    alt="Way of Rhea Trailer"
+    src="way-of-rhea.jpeg"
+    caption="Click to see the latest version of the game's trailer",
+    link="https://youtube.com/watch?v=eVrbZss_B3g") }}
 
 [Way of Rhea][rhea-site] ([steam][rhea-steam])
 is an upcoming puzzle platformer that takes place in a world
@@ -128,8 +132,10 @@ or [subscribe to its newsletter][rhea-newsletter].
 
 ### [A/B Street][abstreet] - Adjust Traffic Patterns in Real Cities
 
-![Measuring the effects of changes](abstreet-evaluating-impacts.gif)
-_Measuring the effects of some changes_
+{{ image_figure(
+    alt="Measuring the effects of changes"
+    src="abstreet-evaluating-impacts.gif"
+    caption="Measuring the effects of some changes") }}
 
 [A/B Street][abstreet] is a traffic simulation game exploring how
 small changes to roads affect cyclists, transit users, pedestrians, and drivers.
@@ -159,8 +165,11 @@ A/B Street uses a [custom GUI library][ezgui], leveraging `glium`, `usvg`, and
 
 ### [Crate Before Attack][cba-site]
 
-[![In-game visual scripting prototype](crate_before_attack.gif)][cba-youtube-scripting]
-_In-game visual scripting prototype_
+{{ image_figure(
+    alt="In-game visual scripting prototype"
+    src="crate_before_attack.gif"
+    caption="In-game visual scripting prototype",
+    link="https://youtu.be/LLAc9_cOR9o") }}
 
 [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
 is a skill-based grappling hook multiplayer game where frogs combat their friends
@@ -210,8 +219,10 @@ Some of the updates from [the June devlog][garden-devlog]:
 
 ### [Veloren][veloren]
 
-![Animation improvements](veloren-wolf.gif)
-_Animation improvements_
+{{ image_figure(
+    alt="Animation improvements"
+    src="veloren-wolf.gif"
+    caption="Animation improvements") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -280,8 +291,10 @@ Also, check out [a talk about open source and Veloren][veloren-talk]:
 
 ### [Zero to Game][zerotoga.me]
 
-![ships with greater thrust explode](zerotogame-destruction.gif)
-_The initial destruction prototype applied across different thrust levels_
+{{ image_figure(
+    alt="ships with greater thrust explode"
+    src="zerotogame-destruction.gif"
+    caption="The initial destruction prototype applied across different thrust levels") }}
 
 [Zero to Game][zerotoga.me] is a project that documents
 the creation of an independent space game from zero.
@@ -328,7 +341,7 @@ without any Javascript (besides a small shim).
 It can be played online [here][pont-online]!
 
 The system architecture is described in a [blog post][pont-blog]
-and the source is available [on Github][pont-source]
+and the source is available [on GitHub][pont-source]
 
 _Discussions:
 [/r/rust](https://www.reddit.com/r/rust/comments/gu1bq5/pont_a_board_game_in_rust_webassembly/),
@@ -378,8 +391,10 @@ Web, Mac, Linux, Windows (untested) & possible even iOS & Android.
 
 ### [Animal Chess][AnimalChess]
 
-![Part of the game map](animal-chess.jpeg)
-_Part of the game map_
+{{ image_figure(
+    alt="Part of the game map"
+    src="animal-chess.jpeg"
+    caption="Part of the game map") }}
 
 [Animal Fight Chess][AnimalChess] (斗兽棋, "Doe Show Chee") by [@netcan]
 is a Rust implementation of a popular Chinese game.
@@ -462,8 +477,11 @@ Two devlogs were released this month:
 
 ### [Weegames][weegames-itch]
 
-[![Weegames](weegames.jpg)][weegames-video]
-_Click to see [a demo video][weegames-video]_
+{{ image_figure(
+    alt="Weegames"
+    src="weegames.jpg"
+    caption="Click to see [a demo video](https://youtube.com/watch?v=A_GqhZ_7EIw)",
+    link="https://youtube.com/watch?v=A_GqhZ_7EIw") }}
 
 [Weegames][weegames-itch] is a fast-paced minigame collection.
 There are 23 odd games all made using free images and sounds.
@@ -501,8 +519,11 @@ The demo's source code [could be found here][hypervis].
 
 ### [Boids in Rust][rboids-post-1]
 
-[![Boids demo](rboids-video.jpeg)][rboids-video]
-_Click to watch [the video demo][rboids-video]_
+{{ image_figure(
+    alt="Boids demo"
+    src="rboids-video.jpeg"
+    caption="Click to watch [the video demo](https://drive.google.com/file/d/1ri4x-jCX8SA9oX8OqDIKtXhYIrEKlGjO/view)",
+    link="https://drive.google.com/file/d/1ri4x-jCX8SA9oX8OqDIKtXhYIrEKlGjO/view") }}
 
 [@twitu] has published a three-part blog series
 about simulating a group of virtual agents (boids)
@@ -623,8 +644,10 @@ seemed like now is the time to address such issues in the API.
 
 ### [This Month in Mun][mun-june]
 
-![Language Server Diagnostics in action](mun-languageserver.gif)
-_Mun language server diagnostics in action_
+{{ image_figure(
+    alt="Language Server Diagnostics in action"
+    src="mun-languageserver.gif"
+    caption="Mun language server diagnostics in action") }}
 
 [Mun] is a scripting language for gamedev focused on quick iteration times
 that is written in Rust.
@@ -657,7 +680,7 @@ different projects. A reference guide is also [available][glisp-reference] as
 well as [API documentation][glisp-docsrs] for integration into Rust.
 
 The crate has had its [initial release][glisp-cratesio], a roadmap and ways
-to contribute are available on GameLisp's [Github Respository][glisp-github].
+to contribute are available on GameLisp's [GitHub Respository][glisp-github].
 
 [gamelisp]: https://gamelisp.rs/
 [glisp-playground]: https://gamelisp.rs/playground/
@@ -747,7 +770,7 @@ increased incremental build time, and build artifacts size.
 nanoserde may be useful when the whole game has less than a minute
 clean build time and spending ~40s on serde is unreasonable.
 
-```text
+```txt
 > cargo tree
 nanoserde v0.1.0 (/../nanoserde)
 └── nanoserde-derive v0.1.0 (/../nanoserde/derive)
@@ -901,7 +924,7 @@ that allows you to play classic Nintendo Entertainment System games in the brows
 [gc-nes-src]: https://github.com/GarettCooper/gc_nes_emulator
 [garettcooper.com]: https://garettcooper.com/
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-011/ldn-4d-talk.jpeg b/content/news/011/ldn-4d-talk.jpeg
similarity index 100%
rename from content/posts/newsletter-011/ldn-4d-talk.jpeg
rename to content/news/011/ldn-4d-talk.jpeg
diff --git a/content/posts/newsletter-011/macroquad_asteroids.gif b/content/news/011/macroquad_asteroids.gif
similarity index 100%
rename from content/posts/newsletter-011/macroquad_asteroids.gif
rename to content/news/011/macroquad_asteroids.gif
diff --git a/content/posts/newsletter-011/macroquad_snake.gif b/content/news/011/macroquad_snake.gif
similarity index 100%
rename from content/posts/newsletter-011/macroquad_snake.gif
rename to content/news/011/macroquad_snake.gif
diff --git a/content/posts/newsletter-011/macroquad_ui.gif b/content/news/011/macroquad_ui.gif
similarity index 100%
rename from content/posts/newsletter-011/macroquad_ui.gif
rename to content/news/011/macroquad_ui.gif
diff --git a/content/posts/newsletter-011/mun-languageserver.gif b/content/news/011/mun-languageserver.gif
similarity index 100%
rename from content/posts/newsletter-011/mun-languageserver.gif
rename to content/news/011/mun-languageserver.gif
diff --git a/content/posts/newsletter-011/nes-emu.png b/content/news/011/nes-emu.png
similarity index 100%
rename from content/posts/newsletter-011/nes-emu.png
rename to content/news/011/nes-emu.png
diff --git a/content/posts/newsletter-011/nodefx.png b/content/news/011/nodefx.png
similarity index 100%
rename from content/posts/newsletter-011/nodefx.png
rename to content/news/011/nodefx.png
diff --git a/content/posts/newsletter-011/pont_screenshot.png b/content/news/011/pont_screenshot.png
similarity index 100%
rename from content/posts/newsletter-011/pont_screenshot.png
rename to content/news/011/pont_screenshot.png
diff --git a/content/posts/newsletter-011/psp.gif b/content/news/011/psp.gif
similarity index 100%
rename from content/posts/newsletter-011/psp.gif
rename to content/news/011/psp.gif
diff --git a/content/posts/newsletter-011/rboids-video.jpeg b/content/news/011/rboids-video.jpeg
similarity index 100%
rename from content/posts/newsletter-011/rboids-video.jpeg
rename to content/news/011/rboids-video.jpeg
diff --git a/content/posts/newsletter-011/roman-empire.jpeg b/content/news/011/roman-empire.jpeg
similarity index 100%
rename from content/posts/newsletter-011/roman-empire.jpeg
rename to content/news/011/roman-empire.jpeg
diff --git a/content/posts/newsletter-011/rs-type.png b/content/news/011/rs-type.png
similarity index 100%
rename from content/posts/newsletter-011/rs-type.png
rename to content/news/011/rs-type.png
diff --git a/content/posts/newsletter-011/runner_gameplay_sample.png b/content/news/011/runner_gameplay_sample.png
similarity index 100%
rename from content/posts/newsletter-011/runner_gameplay_sample.png
rename to content/news/011/runner_gameplay_sample.png
diff --git a/content/posts/newsletter-011/scale.png b/content/news/011/scale.png
similarity index 100%
rename from content/posts/newsletter-011/scale.png
rename to content/news/011/scale.png
diff --git a/content/posts/newsletter-011/veloren-talk.jpeg b/content/news/011/veloren-talk.jpeg
similarity index 100%
rename from content/posts/newsletter-011/veloren-talk.jpeg
rename to content/news/011/veloren-talk.jpeg
diff --git a/content/posts/newsletter-011/veloren-wolf.gif b/content/news/011/veloren-wolf.gif
similarity index 100%
rename from content/posts/newsletter-011/veloren-wolf.gif
rename to content/news/011/veloren-wolf.gif
diff --git a/content/posts/newsletter-011/veloren2.jpeg b/content/news/011/veloren2.jpeg
similarity index 100%
rename from content/posts/newsletter-011/veloren2.jpeg
rename to content/news/011/veloren2.jpeg
diff --git a/content/posts/newsletter-011/vimnail.gif b/content/news/011/vimnail.gif
similarity index 100%
rename from content/posts/newsletter-011/vimnail.gif
rename to content/news/011/vimnail.gif
diff --git a/content/posts/newsletter-011/way-of-rhea.jpeg b/content/news/011/way-of-rhea.jpeg
similarity index 100%
rename from content/posts/newsletter-011/way-of-rhea.jpeg
rename to content/news/011/way-of-rhea.jpeg
diff --git a/content/posts/newsletter-011/weegames.jpg b/content/news/011/weegames.jpg
similarity index 100%
rename from content/posts/newsletter-011/weegames.jpg
rename to content/news/011/weegames.jpg
diff --git a/content/posts/newsletter-011/wooting_snake.gif b/content/news/011/wooting_snake.gif
similarity index 100%
rename from content/posts/newsletter-011/wooting_snake.gif
rename to content/news/011/wooting_snake.gif
diff --git a/content/posts/newsletter-011/zerotogame-destruction.gif b/content/news/011/zerotogame-destruction.gif
similarity index 100%
rename from content/posts/newsletter-011/zerotogame-destruction.gif
rename to content/news/011/zerotogame-destruction.gif
diff --git a/content/posts/newsletter-012/4k-into-youtube.jpeg b/content/news/012/4k-into-youtube.jpeg
similarity index 100%
rename from content/posts/newsletter-012/4k-into-youtube.jpeg
rename to content/news/012/4k-into-youtube.jpeg
diff --git a/content/posts/newsletter-012/abstreet.jpeg b/content/news/012/abstreet.jpeg
similarity index 100%
rename from content/posts/newsletter-012/abstreet.jpeg
rename to content/news/012/abstreet.jpeg
diff --git a/content/posts/newsletter-012/canon-collision.png b/content/news/012/canon-collision.png
similarity index 100%
rename from content/posts/newsletter-012/canon-collision.png
rename to content/news/012/canon-collision.png
diff --git a/content/posts/newsletter-012/crate-before-attack.gif b/content/news/012/crate-before-attack.gif
similarity index 100%
rename from content/posts/newsletter-012/crate-before-attack.gif
rename to content/news/012/crate-before-attack.gif
diff --git a/content/posts/newsletter-012/data_oriented_design.svg b/content/news/012/data_oriented_design.svg
similarity index 100%
rename from content/posts/newsletter-012/data_oriented_design.svg
rename to content/news/012/data_oriented_design.svg
diff --git a/content/posts/newsletter-012/dont-stop.gif b/content/news/012/dont-stop.gif
similarity index 100%
rename from content/posts/newsletter-012/dont-stop.gif
rename to content/news/012/dont-stop.gif
diff --git a/content/posts/newsletter-012/embark-logo-bg.jpg b/content/news/012/embark-logo-bg.jpg
similarity index 100%
rename from content/posts/newsletter-012/embark-logo-bg.jpg
rename to content/news/012/embark-logo-bg.jpg
diff --git a/content/posts/newsletter-012/fps-game-2.jpeg b/content/news/012/fps-game-2.jpeg
similarity index 100%
rename from content/posts/newsletter-012/fps-game-2.jpeg
rename to content/news/012/fps-game-2.jpeg
diff --git a/content/posts/newsletter-012/graphene-demo.jpeg b/content/news/012/graphene-demo.jpeg
similarity index 100%
rename from content/posts/newsletter-012/graphene-demo.jpeg
rename to content/news/012/graphene-demo.jpeg
diff --git a/content/posts/newsletter-012/graphene.png b/content/news/012/graphene.png
similarity index 100%
rename from content/posts/newsletter-012/graphene.png
rename to content/news/012/graphene.png
diff --git a/content/posts/newsletter-012/hex_strat_gameplay.gif b/content/news/012/hex_strat_gameplay.gif
similarity index 100%
rename from content/posts/newsletter-012/hex_strat_gameplay.gif
rename to content/news/012/hex_strat_gameplay.gif
diff --git a/content/posts/newsletter-012/index.md b/content/news/012/index.md
similarity index 95%
rename from content/posts/newsletter-012/index.md
rename to content/news/012/index.md
index 35997d485..bd2b863b6 100644
--- a/content/posts/newsletter-012/index.md
+++ b/content/news/012/index.md
@@ -3,6 +3,7 @@ title = "This Month in Rust GameDev #12 - July 2020"
 date = 2020-08-06
 transparent = true
 draft = false
+aliases = ["posts/newsletter-012"]
 +++
 
 Welcome to the twelfth issue of the Rust GameDev Workgroup’s
@@ -63,8 +64,11 @@ If needed, a section can be split into subsections with a "------" delimiter.
 
 ### [ochre][4k-post] - 4K Intro
 
-[![Youtube preview: mountains & spheres](4k-into-youtube.jpeg)][4k-video]
-_Click to [watch the demo on Youtube][4k-video]._
+{{ image_figure(
+    alt="Youtube preview: mountains & spheres"
+    src="4k-into-youtube.jpeg"
+    caption="Click to [watch the demo on Youtube](https://youtube.com/watch?v=SIkkYRQ07tU).",
+    link="https://youtube.com/watch?v=SIkkYRQ07tU") }}
 
 Jani Peltonen has recently released a [4K intro][4k-src]
 which is completely written in Rust and GLSL
@@ -115,8 +119,11 @@ _Discussions:
 
 ### [Crate Before Attack][cba-site]
 
-[![Golf Club in Crate Before Attack](crate-before-attack.gif)][cba-site]
-_A new weapon: the Golf Club_
+{{ image_figure(
+    alt="Golf Club in Crate Before Attack"
+    src="crate-before-attack.gif"
+    caption="A new weapon: the Golf Club",
+    link="https://cratebeforeattack.com") }}
 
 [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
 is a skill-based grappling hook multiplayer game where frogs combat their friends
@@ -470,8 +477,11 @@ The game is in an early stage of development,
 
 ### [On FPS Game Progress \#2][on-fps-game-2]
 
-[![fps-game-screenshot](fps-game-2.jpeg)][on-fps-game-2-youtube]
-_Click to watch [footage from the game's current state][on-fps-game-2-youtube]._
+{{ image_figure(
+    alt="fps-game-screenshot"
+    src="fps-game-2.jpeg"
+    caption="Click to watch [footage from the game's current state](https://youtu.be/NIJNgr9zeXk).",
+    link="https://youtu.be/NIJNgr9zeXk") }}
 
 On this update, [@pingFromHeaven] talks about the lighting implementation that
 sets the tone for the game, how Rust is good at shortening the debugging
@@ -508,8 +518,10 @@ Some of the recent updates:
 
 ### [Veloren][veloren]
 
-![Sunrise](veloren-sunrise.gif)
-_Sunrise_
+{{ image_figure(
+    alt="Sunrise"
+    src="veloren-sunrise.gif"
+    caption="Sunrise") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -523,8 +535,10 @@ fast quadruped movement. Particle systems are being implemented and optimized. A
 crafting GUI has been added. Translations have stabilized significantly, and
 there is a framework for translators to know what needs to be done.
 
-![Fire particles](veloren-fire.gif)
-_Progress on the particle system_
+{{ image_figure(
+    alt="Fire particles"
+    src="veloren-fire.gif"
+    caption="Progress on the particle system") }}
 
 You can read more about some specific topics from July:
 
@@ -548,8 +562,10 @@ In August, 0.7 will be released. Work will continue on castle and cave
 generation. The inaugural episode of the Rust Game Dev podcast will be released,
 which features an interview by Veloren developers.
 
-![Quadrupeds](veloren-quadrupeds.png)
-_Quadruped overhaul_
+{{ image_figure(
+    alt="Quadrupeds"
+    src="veloren-quadrupeds.png"
+    caption="Quadruped overhaul") }}
 
 [veloren]: https://veloren.net
 
@@ -598,8 +614,11 @@ read the book at [sokoban.iolivia.me][sokoban_book].
 
 ### [Make Pong with Rust][tantan-video]
 
-[![youtube preview](video-pong-tutorial.jpeg)][tantan-video]
-_Click to [watch the tutorial][tantan-video]._
+{{ image_figure(
+    alt="youtube preview"
+    src="video-pong-tutorial.jpeg"
+    caption="Click to [watch the tutorial][tantan-video].",
+    link="tantan-video") }}
 
 [TanTan] released a [video tutorial][tantan-video]
 that guides you through all the step of making a pong game in Rust
@@ -637,8 +656,11 @@ The full article is available [here][dod].
 
 ### ["Rust'N'Games" Talk][rust-n-games]
 
-[![youtube preview: a slide with Tower Rangers game](rust-n-games-youtube.jpeg)][rust-n-games]
-_Click to [watch the talk][rust-n-games]._
+{{ image_figure(
+    alt="youtube preview: a slide with Tower Rangers game"
+    src="rust-n-games-youtube.jpeg"
+    caption="Click to [watch the talk](https://youtu.be/0Bj-5C2Zfqs?t=1404).",
+    link="https://youtu.be/0Bj-5C2Zfqs?t=1404") }}
 
 During the recent ["Rust and Tell"][rust-n-tell] online event
 [Stephan @extrawurst Dilly][@extrawurst] gave a ["Rust'N'Games" talk][rust-n-games]
@@ -809,8 +831,10 @@ Linux, macOS and Windows!
 
 ### [wgpu][wgpu-site]
 
-![procgen dynamic "grass field"](tuitui-grass-field.jpeg)
-_[@MacTuitui]'s everyday [nannou] experiment #1274_
+{{ image_figure(
+    alt='procgen dynamic "grass field"'
+    src="tuitui-grass-field.jpeg"
+    caption="[@MacTuitui](https://twitter.com/MacTuitui)'s everyday [nannou](https://nannou.cc) experiment #1274") }}
 
 The work is ongoing to validate all the incoming commands and guarantee API safety.
 Special thanks to [@GabrielMajeri] for helping to convert assertions
@@ -930,8 +954,11 @@ You can follow progress on [GitHub][graphene] or on [Twitter][apoorvaj].
 
 ### Vulkan Renderer (Name TBD)
 
-[![Vulkan renderer on iOS prototype](vulkan-renderer-prototype.jpeg)][vulkan-renderer-prototype-video]
-_Click to watch [the video demo][vulkan-renderer-prototype-video] running on iOS._
+{{ image_figure(
+    alt="Vulkan renderer on iOS prototype"
+    src="vulkan-renderer-prototype.jpeg"
+    caption="Click to watch [the video demo][vulkan-renderer-prototype-video] running on iOS.",
+    link="vulkan-renderer-prototype-video") }}
 
 [@aclysma] published a [new vulkan-based renderer][renderer-prototype] that
 uses [atelier-assets] to load 3D scenes exported from blender.
@@ -1013,7 +1040,7 @@ You can watch a [video of Rust interpreter running Fizzbuzz][langcraft-video]:
 [Langcraft]: https://github.com/SuperTails/langcraft
 [langcraft-video]: https://youtube.com/watch?v=Cx0w5Wn9pPU
 
-<!-- ## Popular Workgroup Issues in Github -->
+<!-- ## Popular Workgroup Issues in GitHub -->
 
 ## Meeting Minutes
 
@@ -1088,8 +1115,11 @@ and highlight events from the past. -->
 
 Just an interesting Rust gamedev link from the past. :)
 
-[![youtube preview](shar-youtube.jpeg)][shar-trailer]
-_Click to watch [SHAR's Greenlight trailer][shar-trailer]_
+{{ image_figure(
+    alt="youtube preview"
+    src="shar-youtube.jpeg"
+    caption="Click to watch [SHAR's Greenlight trailer][shar-trailer]",
+    link="shar-trailer") }}
 
 [SHAR][shar-itch] (Russian "Шар" - ball) by [@fedor_games] (author of [miniquad]/[macroquad])
 is a 3rd-person online action game that aims to create unique experience
diff --git a/content/posts/newsletter-012/longcraft-video.jpeg b/content/news/012/longcraft-video.jpeg
similarity index 100%
rename from content/posts/newsletter-012/longcraft-video.jpeg
rename to content/news/012/longcraft-video.jpeg
diff --git a/content/posts/newsletter-012/ludusavi.gif b/content/news/012/ludusavi.gif
similarity index 100%
rename from content/posts/newsletter-012/ludusavi.gif
rename to content/news/012/ludusavi.gif
diff --git a/content/posts/newsletter-012/luminance-logo.svg b/content/news/012/luminance-logo.svg
similarity index 100%
rename from content/posts/newsletter-012/luminance-logo.svg
rename to content/news/012/luminance-logo.svg
diff --git a/content/posts/newsletter-012/miniquad_ios.jpg b/content/news/012/miniquad_ios.jpg
similarity index 100%
rename from content/posts/newsletter-012/miniquad_ios.jpg
rename to content/news/012/miniquad_ios.jpg
diff --git a/content/posts/newsletter-012/mun-logo.png b/content/news/012/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-012/mun-logo.png
rename to content/news/012/mun-logo.png
diff --git a/content/posts/newsletter-012/nox-futura.jpeg b/content/news/012/nox-futura.jpeg
similarity index 100%
rename from content/posts/newsletter-012/nox-futura.jpeg
rename to content/news/012/nox-futura.jpeg
diff --git a/content/posts/newsletter-012/pglowrpg_12.gif b/content/news/012/pglowrpg_12.gif
similarity index 100%
rename from content/posts/newsletter-012/pglowrpg_12.gif
rename to content/news/012/pglowrpg_12.gif
diff --git a/content/posts/newsletter-012/protochess.gif b/content/news/012/protochess.gif
similarity index 100%
rename from content/posts/newsletter-012/protochess.gif
rename to content/news/012/protochess.gif
diff --git a/content/posts/newsletter-012/pushin_boxes_gameplay.gif b/content/news/012/pushin_boxes_gameplay.gif
similarity index 100%
rename from content/posts/newsletter-012/pushin_boxes_gameplay.gif
rename to content/news/012/pushin_boxes_gameplay.gif
diff --git a/content/posts/newsletter-012/robo-os.jpg b/content/news/012/robo-os.jpg
similarity index 100%
rename from content/posts/newsletter-012/robo-os.jpg
rename to content/news/012/robo-os.jpg
diff --git a/content/posts/newsletter-012/rust-ios-sdl2-screenshot.png b/content/news/012/rust-ios-sdl2-screenshot.png
similarity index 100%
rename from content/posts/newsletter-012/rust-ios-sdl2-screenshot.png
rename to content/news/012/rust-ios-sdl2-screenshot.png
diff --git a/content/posts/newsletter-012/rust-n-games-youtube.jpeg b/content/news/012/rust-n-games-youtube.jpeg
similarity index 100%
rename from content/posts/newsletter-012/rust-n-games-youtube.jpeg
rename to content/news/012/rust-n-games-youtube.jpeg
diff --git a/content/posts/newsletter-012/rust_sokoban.png b/content/news/012/rust_sokoban.png
similarity index 100%
rename from content/posts/newsletter-012/rust_sokoban.png
rename to content/news/012/rust_sokoban.png
diff --git a/content/posts/newsletter-012/sandbox_icon.svg b/content/news/012/sandbox_icon.svg
similarity index 100%
rename from content/posts/newsletter-012/sandbox_icon.svg
rename to content/news/012/sandbox_icon.svg
diff --git a/content/posts/newsletter-012/sandbox_screenshot.png b/content/news/012/sandbox_screenshot.png
similarity index 100%
rename from content/posts/newsletter-012/sandbox_screenshot.png
rename to content/news/012/sandbox_screenshot.png
diff --git a/content/posts/newsletter-012/servo-unity.png b/content/news/012/servo-unity.png
similarity index 100%
rename from content/posts/newsletter-012/servo-unity.png
rename to content/news/012/servo-unity.png
diff --git a/content/posts/newsletter-012/shar-talk.jpeg b/content/news/012/shar-talk.jpeg
similarity index 100%
rename from content/posts/newsletter-012/shar-talk.jpeg
rename to content/news/012/shar-talk.jpeg
diff --git a/content/posts/newsletter-012/shar-youtube.jpeg b/content/news/012/shar-youtube.jpeg
similarity index 100%
rename from content/posts/newsletter-012/shar-youtube.jpeg
rename to content/news/012/shar-youtube.jpeg
diff --git a/content/posts/newsletter-012/tennis_academy.gif b/content/news/012/tennis_academy.gif
similarity index 100%
rename from content/posts/newsletter-012/tennis_academy.gif
rename to content/news/012/tennis_academy.gif
diff --git a/content/posts/newsletter-012/textcamp.png b/content/news/012/textcamp.png
similarity index 100%
rename from content/posts/newsletter-012/textcamp.png
rename to content/news/012/textcamp.png
diff --git a/content/posts/newsletter-012/tuitui-grass-field.jpeg b/content/news/012/tuitui-grass-field.jpeg
similarity index 100%
rename from content/posts/newsletter-012/tuitui-grass-field.jpeg
rename to content/news/012/tuitui-grass-field.jpeg
diff --git a/content/posts/newsletter-012/veloren-fire.gif b/content/news/012/veloren-fire.gif
similarity index 100%
rename from content/posts/newsletter-012/veloren-fire.gif
rename to content/news/012/veloren-fire.gif
diff --git a/content/posts/newsletter-012/veloren-quadrupeds.png b/content/news/012/veloren-quadrupeds.png
similarity index 100%
rename from content/posts/newsletter-012/veloren-quadrupeds.png
rename to content/news/012/veloren-quadrupeds.png
diff --git a/content/posts/newsletter-012/veloren-sunrise.gif b/content/news/012/veloren-sunrise.gif
similarity index 100%
rename from content/posts/newsletter-012/veloren-sunrise.gif
rename to content/news/012/veloren-sunrise.gif
diff --git a/content/posts/newsletter-012/video-pong-tutorial.jpeg b/content/news/012/video-pong-tutorial.jpeg
similarity index 100%
rename from content/posts/newsletter-012/video-pong-tutorial.jpeg
rename to content/news/012/video-pong-tutorial.jpeg
diff --git a/content/posts/newsletter-012/voronator.png b/content/news/012/voronator.png
similarity index 100%
rename from content/posts/newsletter-012/voronator.png
rename to content/news/012/voronator.png
diff --git a/content/posts/newsletter-012/vulkan-renderer-prototype.jpeg b/content/news/012/vulkan-renderer-prototype.jpeg
similarity index 100%
rename from content/posts/newsletter-012/vulkan-renderer-prototype.jpeg
rename to content/news/012/vulkan-renderer-prototype.jpeg
diff --git a/content/posts/newsletter-012/wonder-screenshot.png b/content/news/012/wonder-screenshot.png
similarity index 100%
rename from content/posts/newsletter-012/wonder-screenshot.png
rename to content/news/012/wonder-screenshot.png
diff --git a/content/posts/newsletter-012/zemeroth.jpeg b/content/news/012/zemeroth.jpeg
similarity index 100%
rename from content/posts/newsletter-012/zemeroth.jpeg
rename to content/news/012/zemeroth.jpeg
diff --git a/content/posts/newsletter-013/abstreet.png b/content/news/013/abstreet.png
similarity index 100%
rename from content/posts/newsletter-013/abstreet.png
rename to content/news/013/abstreet.png
diff --git a/content/posts/newsletter-013/amethyst-logo.png b/content/news/013/amethyst-logo.png
similarity index 100%
rename from content/posts/newsletter-013/amethyst-logo.png
rename to content/news/013/amethyst-logo.png
diff --git a/content/posts/newsletter-013/bevy_logo.png b/content/news/013/bevy_logo.png
similarity index 100%
rename from content/posts/newsletter-013/bevy_logo.png
rename to content/news/013/bevy_logo.png
diff --git a/content/posts/newsletter-013/bevy_showcase.png b/content/news/013/bevy_showcase.png
similarity index 100%
rename from content/posts/newsletter-013/bevy_showcase.png
rename to content/news/013/bevy_showcase.png
diff --git a/content/posts/newsletter-013/cary_screenshot.png b/content/news/013/cary_screenshot.png
similarity index 100%
rename from content/posts/newsletter-013/cary_screenshot.png
rename to content/news/013/cary_screenshot.png
diff --git a/content/posts/newsletter-013/chargrid-roguelike-tutorial-2020.png b/content/news/013/chargrid-roguelike-tutorial-2020.png
similarity index 100%
rename from content/posts/newsletter-013/chargrid-roguelike-tutorial-2020.png
rename to content/news/013/chargrid-roguelike-tutorial-2020.png
diff --git a/content/posts/newsletter-013/chillscapes_main_menu.png b/content/news/013/chillscapes_main_menu.png
similarity index 100%
rename from content/posts/newsletter-013/chillscapes_main_menu.png
rename to content/news/013/chillscapes_main_menu.png
diff --git a/content/posts/newsletter-013/crate-before-attack.jpeg b/content/news/013/crate-before-attack.jpeg
similarity index 100%
rename from content/posts/newsletter-013/crate-before-attack.jpeg
rename to content/news/013/crate-before-attack.jpeg
diff --git a/content/posts/newsletter-013/cute-c2-collision.gif b/content/news/013/cute-c2-collision.gif
similarity index 100%
rename from content/posts/newsletter-013/cute-c2-collision.gif
rename to content/news/013/cute-c2-collision.gif
diff --git a/content/posts/newsletter-013/dwarf_seeks_fortune.png b/content/news/013/dwarf_seeks_fortune.png
similarity index 100%
rename from content/posts/newsletter-013/dwarf_seeks_fortune.png
rename to content/news/013/dwarf_seeks_fortune.png
diff --git a/content/posts/newsletter-013/ecs-bench.png b/content/news/013/ecs-bench.png
similarity index 100%
rename from content/posts/newsletter-013/ecs-bench.png
rename to content/news/013/ecs-bench.png
diff --git a/content/posts/newsletter-013/egregoria.png b/content/news/013/egregoria.png
similarity index 100%
rename from content/posts/newsletter-013/egregoria.png
rename to content/news/013/egregoria.png
diff --git a/content/posts/newsletter-013/egui.png b/content/news/013/egui.png
similarity index 100%
rename from content/posts/newsletter-013/egui.png
rename to content/news/013/egui.png
diff --git a/content/posts/newsletter-013/event-chain-assets-graph.png b/content/news/013/event-chain-assets-graph.png
similarity index 100%
rename from content/posts/newsletter-013/event-chain-assets-graph.png
rename to content/news/013/event-chain-assets-graph.png
diff --git a/content/posts/newsletter-013/football-manager.jpeg b/content/news/013/football-manager.jpeg
similarity index 100%
rename from content/posts/newsletter-013/football-manager.jpeg
rename to content/news/013/football-manager.jpeg
diff --git a/content/posts/newsletter-013/garden.jpeg b/content/news/013/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-013/garden.jpeg
rename to content/news/013/garden.jpeg
diff --git a/content/posts/newsletter-013/hexasphere.gif b/content/news/013/hexasphere.gif
similarity index 100%
rename from content/posts/newsletter-013/hexasphere.gif
rename to content/news/013/hexasphere.gif
diff --git a/content/posts/newsletter-013/index.md b/content/news/013/index.md
similarity index 95%
rename from content/posts/newsletter-013/index.md
rename to content/news/013/index.md
index d135156ec..822545c21 100644
--- a/content/posts/newsletter-013/index.md
+++ b/content/news/013/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #13 - August 2020"
 date = 2020-09-07
 transparent = true
+aliases = ["posts/newsletter-013"]
 +++
 
 Welcome to the 13th issue of the Rust GameDev Workgroup’s
@@ -30,7 +31,7 @@ Table of contents:
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Meeting Minutes](#meeting-minutes)
 - [Requests for Contribution](#requests-for-contribution)
 
@@ -112,8 +113,11 @@ for you to listen and subscribe:
 
 ### [Crate Before Attack][cba-site]
 
-[![Camera debugging in Crate Before Attack](crate-before-attack.jpeg)][cba-site]
-_Debugging camera motion: highlighted areas are points of interest_
+{{ image_figure(
+    alt="Camera debugging in Crate Before Attack"
+    src="crate-before-attack.jpeg"
+    caption="Debugging camera motion: highlighted areas are points of interest",
+    link="https://cratebeforeattack.com") }}
 
 [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
 is a skill-based multiplayer game where frogs combat their friends
@@ -143,8 +147,10 @@ More details are in [August DevLog-entry][cba-august-update].
 
 ### [Veloren][veloren]
 
-![Landscape](veloren-landscape1.jpeg)
-_Landscape with new LoD and lighting_
+{{ image_figure(
+    alt="Landscape"
+    src="veloren-landscape1.jpeg"
+    caption="Landscape with new LoD and lighting") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -162,8 +168,10 @@ UX front. Animations for movement and combat were added and improved. Work
 continued on particle systems, which have been added to Veloren in places like
 campfires, fireworks, and weapons.
 
-![Healing sceptre](veloren-sceptre.gif)
-_Healing sceptre with the new particle system_
+{{ image_figure(
+    alt="Healing sceptre"
+    src="veloren-sceptre.gif"
+    caption="Healing sceptre with the new particle system") }}
 
 You can read more about some specific topics from August:
 
@@ -261,8 +269,11 @@ It can be played in the browser or downloaded at [itch.io][Cary].
 
 ### [Way of Rhea]
 
-[![Anthropic's virtual booth at Play NYC](way-of-rhea-play-nyc.png)][Way of Rhea]
-_Anthropic's virtual booth at [Play NYC]_
+{{ image_figure(
+    alt="Anthropic's virtual booth at Play NYC"
+    src="way-of-rhea-play-nyc.png"
+    caption="Anthropic's virtual booth at [Play NYC](https://www.play-nyc.com/)",
+    link="https://store.steampowered.com/app/1110620/Way_of_Rhea/") }}
 
 [Way of Rhea] is a puzzle platformer that takes place in a world where you can
 only interact with items that match your current color.
@@ -350,8 +361,11 @@ Chillscapes is written using an early-in-development 2d engine,
 
 ### [Dwarf Seeks Fortune][dsf-github]
 
-[![Dwarf Seeks Fortune](dwarf_seeks_fortune.png)][dsf-github]
-_Collect all keys to unlock the door to the next level_
+{{ image_figure(
+    alt="Dwarf Seeks Fortune"
+    src="dwarf_seeks_fortune.png"
+    caption="Collect all keys to unlock the door to the next level",
+    link="https://github.com/amethyst/dwarf_seeks_fortune") }}
 
 [Dwarf Seeks Fortune][dsf-github] is a puzzle-platformer made with the Amethyst game
 engine. Its developer, Jazarro, has partnered with the Amethyst organization
@@ -395,8 +409,11 @@ Full devlogs:
 
 ### [SIMple Physics][simple-physics-site]
 
-[![SIMple Mechanics wave preset](simple-physics-wave.gif)][simple-physics-gifs]
-_One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles_
+{{ image_figure(
+    alt="SIMple Mechanics wave preset"
+    src="simple-physics-wave.gif"
+    caption="One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles",
+    link="https://mkhan45.github.io/SIMple-Physics/posts/Gifs/") }}
 
 [SIMple Physics][simple-physics-site] by [@mkhan45] is a set of educational physics
 simulators meant to help students and teachers conduct labs without expensive equipment
@@ -442,8 +459,11 @@ work with graphics in Rust using [SDL2][sdl2] library.
 
 ### [Beginning Game Development with Amethyst][rustconf-talk-video]
 
-[![youtube preview](rustconf-amethyst-talk.png)][rustconf-talk-video]
-_Click to [watch the talk][rustconf-talk-video]_
+{{ image_figure(
+    alt="youtube preview"
+    src="rustconf-amethyst-talk.png"
+    caption="Click to [watch the talk](https://www.youtube.com/watch?v=GFi_EdS_s_c)",
+    link="https://www.youtube.com/watch?v=GFi_EdS_s_c") }}
 
 Getting started with Rust + gamedev can be intimidating. At
 [RustConf 2020][rust-conf-2020], [Micah Tigley] gave a talk about their experience
@@ -514,8 +534,10 @@ game development are planned.
 
 ### [ecs_bench_suite]
 
-![Summary results table](ecs-bench.png)
-_The full benchmark report is available [here][ecs_report]_
+{{ image_figure(
+    alt="Summary results table"
+    src="ecs-bench.png"
+    caption="The full benchmark report is available [here](https://rust-gamedev.github.io/ecs_bench_suite/target/criterion/report/index.html)") }}
 
 This month [@TomGillen] (author of the [Legion][legion] ECS) released
 [ecs_bench_suite] - a suite of benchmarks designed to test and compare
@@ -758,8 +780,10 @@ also built.
 
 ### [gfx-rs][gfx-repo] and [wgpu][wgpu-site]
 
-![wgpu-rs water](wgpu-water.gif)
-_wgpu-rs's [water example][wgpu-water]_
+{{ image_figure(
+    alt="wgpu-rs water"
+    src="wgpu-water.gif"
+    caption="wgpu-rs's [water example](https://github.com/gfx-rs/wgpu-rs/tree/master/examples/water)") }}
 
 gfx-rs project and wgpu ecosystem have observed the release of 0.6 versions! 🎉
 
@@ -899,7 +923,7 @@ These last few weeks have been big for the Bevy project:
 - Rapier, a new pure-rust physics engine,
   released an [official Bevy plugin][bevy-rapier].
 - Thanks to the generosity of individuals and companies, they quickly met
-  their first two funding goals on @cart's [Github Sponsors page][bevy-spnsors]:
+  their first two funding goals on @cart's [GitHub Sponsors page][bevy-spnsors]:
   "sustainable development" and "@cart makes minimum wage working on Bevy".
 - Bevy received a glowing review from the Amethyst Engine team and they agreed
   to collaborate in certain areas.
@@ -1015,7 +1039,7 @@ using `#` as a prefix.
 Here is an example of this feature is being tested in
 an experimental offline 3D renderer (not open sourced):
 
-```text
+```txt
 // Called by `set_simple(scene: _, sdf: _, id: _)`.
 dyon_fn!{fn set_simple__scene_sdf_id(
     scene: #&mut SimpleScene,
@@ -1103,7 +1127,7 @@ _Discussions:
 
 ![Current state of starframe graphics and physics](starframe-demo.gif)
 
-[starframe] by [@moletrooper] is a work-in-progress 2D game engine
+[starframe] by [@molentum] is a work-in-progress 2D game engine
 for physics-y sidescrolling games. This month it received
 [an experimental graph-based entity system][sf-graph-post].
 
@@ -1112,11 +1136,11 @@ generalized constraints, which will enable things like friction and joints.
 
 _Discussions:
 [/r/rust](https://www.reddit.com/r/rust/comments/iju3xq/starframe_devlog_architecture_ecs_graph/),
-[twitter](https://twitter.com/moletrooper/status/1300034941816897542)_
+[twitter](https://twitter.com/molentum_/status/1300034941816897542)_
 
-[starframe]: https://github.com/moletrooper/starframe
-[@moletrooper]: https://twitter.com/moletrooper
-[sf-graph-post]: https://moletrooper.github.io/blog/2020/08/starframe-1-architecture/
+[starframe]: https://github.com/m0lentum/starframe
+[@molentum]: https://twitter.com/molentum_
+[sf-graph-post]: https://molentum.me/blog/starframe-architecture/
 
 ### [mochi]
 
@@ -1170,8 +1194,11 @@ The collected profile data can be viewed ingame with [imgui-rs].
 
 ### [Optick][optick] Profiler
 
-[![A screenshot from the video](optick-video.jpg)][optic-video]
-_Click to watch a [video tutorial / features overview][optic-video]_
+{{ image_figure(
+    alt="A screenshot from the video"
+    src="optick-video.jpg"
+    caption="Click to watch a [video tutorial / features overview](https://youtube.com/watch?v=p57TV5342fo)",
+    link="https://youtube.com/watch?v=p57TV5342fo") }}
 
 [Optick][optick] by [@bombomby] is a lightweight C++ profiler for games
 that provides access for all the necessary tools required for
@@ -1252,7 +1279,7 @@ Amongst them:
 [football-manager]: https://en.wikipedia.org/wiki/Football_Manager
 [Football Manager Tools]: https://github.com/Stromberg90/football-manager-tools
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 - [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
   - [#89 "Moving ecs_bench to GDWG"](https://github.com/rust-gamedev/wg/issues/89);
diff --git a/content/posts/newsletter-013/inline-spirv-demo.png b/content/news/013/inline-spirv-demo.png
similarity index 100%
rename from content/posts/newsletter-013/inline-spirv-demo.png
rename to content/news/013/inline-spirv-demo.png
diff --git a/content/posts/newsletter-013/inline-tweak.gif b/content/news/013/inline-tweak.gif
similarity index 100%
rename from content/posts/newsletter-013/inline-tweak.gif
rename to content/news/013/inline-tweak.gif
diff --git a/content/posts/newsletter-013/jude3d.jpeg b/content/news/013/jude3d.jpeg
similarity index 100%
rename from content/posts/newsletter-013/jude3d.jpeg
rename to content/news/013/jude3d.jpeg
diff --git a/content/posts/newsletter-013/kas-text-layout.png b/content/news/013/kas-text-layout.png
similarity index 100%
rename from content/posts/newsletter-013/kas-text-layout.png
rename to content/news/013/kas-text-layout.png
diff --git a/content/posts/newsletter-013/mochi.jpg b/content/news/013/mochi.jpg
similarity index 100%
rename from content/posts/newsletter-013/mochi.jpg
rename to content/news/013/mochi.jpg
diff --git a/content/posts/newsletter-013/mun-logo.png b/content/news/013/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-013/mun-logo.png
rename to content/news/013/mun-logo.png
diff --git a/content/posts/newsletter-013/nes_emulator_rust.png b/content/news/013/nes_emulator_rust.png
similarity index 100%
rename from content/posts/newsletter-013/nes_emulator_rust.png
rename to content/news/013/nes_emulator_rust.png
diff --git a/content/posts/newsletter-013/optick-video.jpg b/content/news/013/optick-video.jpg
similarity index 100%
rename from content/posts/newsletter-013/optick-video.jpg
rename to content/news/013/optick-video.jpg
diff --git a/content/posts/newsletter-013/piston-logo.png b/content/news/013/piston-logo.png
similarity index 100%
rename from content/posts/newsletter-013/piston-logo.png
rename to content/news/013/piston-logo.png
diff --git a/content/posts/newsletter-013/podcast.jpeg b/content/news/013/podcast.jpeg
similarity index 100%
rename from content/posts/newsletter-013/podcast.jpeg
rename to content/news/013/podcast.jpeg
diff --git a/content/posts/newsletter-013/puffin.png b/content/news/013/puffin.png
similarity index 100%
rename from content/posts/newsletter-013/puffin.png
rename to content/news/013/puffin.png
diff --git a/content/posts/newsletter-013/rapier-logo.svg b/content/news/013/rapier-logo.svg
similarity index 100%
rename from content/posts/newsletter-013/rapier-logo.svg
rename to content/news/013/rapier-logo.svg
diff --git a/content/posts/newsletter-013/rustconf-amethyst-talk.png b/content/news/013/rustconf-amethyst-talk.png
similarity index 100%
rename from content/posts/newsletter-013/rustconf-amethyst-talk.png
rename to content/news/013/rustconf-amethyst-talk.png
diff --git a/content/posts/newsletter-013/simple-physics-wave.gif b/content/news/013/simple-physics-wave.gif
similarity index 100%
rename from content/posts/newsletter-013/simple-physics-wave.gif
rename to content/news/013/simple-physics-wave.gif
diff --git a/content/posts/newsletter-013/starframe-demo.gif b/content/news/013/starframe-demo.gif
similarity index 100%
rename from content/posts/newsletter-013/starframe-demo.gif
rename to content/news/013/starframe-demo.gif
diff --git a/content/posts/newsletter-013/traverse-research-banner.png b/content/news/013/traverse-research-banner.png
similarity index 100%
rename from content/posts/newsletter-013/traverse-research-banner.png
rename to content/news/013/traverse-research-banner.png
diff --git a/content/posts/newsletter-013/vangers-shadows.jpeg b/content/news/013/vangers-shadows.jpeg
similarity index 100%
rename from content/posts/newsletter-013/vangers-shadows.jpeg
rename to content/news/013/vangers-shadows.jpeg
diff --git a/content/posts/newsletter-013/veloren-landscape1.jpeg b/content/news/013/veloren-landscape1.jpeg
similarity index 100%
rename from content/posts/newsletter-013/veloren-landscape1.jpeg
rename to content/news/013/veloren-landscape1.jpeg
diff --git a/content/posts/newsletter-013/veloren-sceptre.gif b/content/news/013/veloren-sceptre.gif
similarity index 100%
rename from content/posts/newsletter-013/veloren-sceptre.gif
rename to content/news/013/veloren-sceptre.gif
diff --git a/content/posts/newsletter-013/voxel-mapper.jpeg b/content/news/013/voxel-mapper.jpeg
similarity index 100%
rename from content/posts/newsletter-013/voxel-mapper.jpeg
rename to content/news/013/voxel-mapper.jpeg
diff --git a/content/posts/newsletter-013/way-of-rhea-play-nyc.png b/content/news/013/way-of-rhea-play-nyc.png
similarity index 100%
rename from content/posts/newsletter-013/way-of-rhea-play-nyc.png
rename to content/news/013/way-of-rhea-play-nyc.png
diff --git a/content/posts/newsletter-013/wgpu-water.gif b/content/news/013/wgpu-water.gif
similarity index 100%
rename from content/posts/newsletter-013/wgpu-water.gif
rename to content/news/013/wgpu-water.gif
diff --git a/content/posts/newsletter-013/wowAddonManager-example.png b/content/news/013/wowAddonManager-example.png
similarity index 100%
rename from content/posts/newsletter-013/wowAddonManager-example.png
rename to content/news/013/wowAddonManager-example.png
diff --git a/content/posts/newsletter-014/BUGOUT.jpg b/content/news/014/BUGOUT.jpg
similarity index 100%
rename from content/posts/newsletter-014/BUGOUT.jpg
rename to content/news/014/BUGOUT.jpg
diff --git a/content/posts/newsletter-014/abstreet.png b/content/news/014/abstreet.png
similarity index 100%
rename from content/posts/newsletter-014/abstreet.png
rename to content/news/014/abstreet.png
diff --git a/content/posts/newsletter-014/bevy_logo.png b/content/news/014/bevy_logo.png
similarity index 100%
rename from content/posts/newsletter-014/bevy_logo.png
rename to content/news/014/bevy_logo.png
diff --git a/content/posts/newsletter-014/citybound.png b/content/news/014/citybound.png
similarity index 100%
rename from content/posts/newsletter-014/citybound.png
rename to content/news/014/citybound.png
diff --git a/content/posts/newsletter-014/cool-bear.png b/content/news/014/cool-bear.png
similarity index 100%
rename from content/posts/newsletter-014/cool-bear.png
rename to content/news/014/cool-bear.png
diff --git a/content/posts/newsletter-014/diff-gi.gif b/content/news/014/diff-gi.gif
similarity index 100%
rename from content/posts/newsletter-014/diff-gi.gif
rename to content/news/014/diff-gi.gif
diff --git a/content/posts/newsletter-014/ecs-bevy-tutorial.png b/content/news/014/ecs-bevy-tutorial.png
similarity index 100%
rename from content/posts/newsletter-014/ecs-bevy-tutorial.png
rename to content/news/014/ecs-bevy-tutorial.png
diff --git a/content/posts/newsletter-014/femtovg.png b/content/news/014/femtovg.png
similarity index 100%
rename from content/posts/newsletter-014/femtovg.png
rename to content/news/014/femtovg.png
diff --git a/content/posts/newsletter-014/galangua.png b/content/news/014/galangua.png
similarity index 100%
rename from content/posts/newsletter-014/galangua.png
rename to content/news/014/galangua.png
diff --git a/content/posts/newsletter-014/garden.jpeg b/content/news/014/garden.jpeg
similarity index 100%
rename from content/posts/newsletter-014/garden.jpeg
rename to content/news/014/garden.jpeg
diff --git a/content/posts/newsletter-014/gfx-logo.png b/content/news/014/gfx-logo.png
similarity index 100%
rename from content/posts/newsletter-014/gfx-logo.png
rename to content/news/014/gfx-logo.png
diff --git a/content/posts/newsletter-014/godot.png b/content/news/014/godot.png
similarity index 100%
rename from content/posts/newsletter-014/godot.png
rename to content/news/014/godot.png
diff --git a/content/posts/newsletter-014/index.md b/content/news/014/index.md
similarity index 96%
rename from content/posts/newsletter-014/index.md
rename to content/news/014/index.md
index e941aef42..b34c86bba 100644
--- a/content/posts/newsletter-014/index.md
+++ b/content/news/014/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #14 - September 2020"
 date = 2020-10-07
 transparent = true
+aliases = ["posts/newsletter-014"]
 +++
 
 Welcome to the 14th issue of the Rust GameDev Workgroup's
@@ -29,7 +30,7 @@ Table of contents:
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -61,8 +62,10 @@ If needed, a section can be split into subsections with a "------" delimiter.
 
 ### [Veloren][veloren]
 
-![Landscape](veloren_river.png)
-_Deer by the riverside_
+{{ image_figure(
+    alt="Landscape"
+    src="veloren_river.png"
+    caption="Deer by the riverside") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -99,8 +102,10 @@ September's full weekly devlogs: "This Week In Veloren...":
 [#86](https://veloren.net/devblog-86),
 [#87](https://veloren.net/devblog-87).
 
-![Healing sceptre](veloren_night.png)
-_A reprise from hunting at night_
+{{ image_figure(
+    alt="Healing sceptre"
+    src="veloren_night.png"
+    caption="A reprise from hunting at night") }}
 
 In October, Veloren will keep pushing towards more scalable infrastructure.
 Tests are happening to move towards a Kubernetes cluster to manage more
@@ -204,8 +209,10 @@ hot-code reload of building rules in the running game.
 
 ### Recall Singularity
 
-![Demo of the basic ship collision](recall_singularity.png)
-_A ray-traced selection of modules_
+{{ image_figure(
+    alt="Demo of the basic ship collision"
+    src="recall_singularity.png"
+    caption="A ray-traced selection of modules") }}
 
 The Recall Singularity is a game about designing autonomous factory ships and
 stations created by [Tom Leys].
@@ -321,8 +328,10 @@ furnitures, collect coins, and fight lava/fire based enemies with your water gun
 
 ### [Zemeroth][zemeroth]
 
-![Summoner imps throw a swordsman around](zemeroth_chain.gif)
-_Be careful with chained reaction attacks!_
+{{ image_figure(
+    alt="Summoner imps throw a swordsman around"
+    src="zemeroth_chain.gif"
+    caption="Be careful with chained reaction attacks!") }}
 
 [Zemeroth][zemeroth] by [@ozkriff] is a minimalistic 2D turn-based tactical game.
 Some of the recent updates:
@@ -367,8 +376,10 @@ Full devlogs:
 
 ### [BUGOUT]
 
-![Play Go against AI and friends on the web](BUGOUT.jpg)
-_Playing KataGo AI in 9x9_
+{{ image_figure(
+    alt="Play Go against AI and friends on the web"
+    src="BUGOUT.jpg"
+    caption="Playing KataGo AI in 9x9") }}
 
 [BUGOUT] is a web application which allows you to play Go/Baduk/Weiqi
 against a leading AI ([KataGo]).
@@ -448,8 +459,10 @@ Both developers wrote about the work and their experiences developing space_shoo
 
 ### [So You Want to Live-Reload Rust][fasterthanlime-post]
 
-![cool bear with glasses](cool-bear.png)
-_Cool bear_
+{{ image_figure(
+    alt="cool bear with glasses"
+    src="cool-bear.png"
+    caption="Cool bear") }}
 
 [@fasterthanlime] published a giant blog post
 ["So you want to live-reload Rust"][fasterthanlime-post]
@@ -489,8 +502,10 @@ Also, the whole tutorial [was upgraded to WGPU v0.6][learn-wgpu-upgrade].
 
 ### [Is It Easy to Draw a Line?][Lines]
 
-![hexagonal strategy map with region borders](lines_hexstrat.jpeg)
-_Example of result chains._
+{{ image_figure(
+    alt="hexagonal strategy map with region borders"
+    src="lines_hexstrat.jpeg"
+    caption="Example of result chains.") }}
 
 A small note by [@VladZhukov0] about drawing lines and chains
 with signed distance fields.
@@ -565,8 +580,11 @@ The source code [can be found here][bevy-flappy-src].
 
 ### [Real-Time Global Illumination in WGPU][gi-post]
 
-[![diff-gi-gif](diff-gi.gif)][gi-post]
-_Infinite light bounces in Cornell Box_
+{{ image_figure(
+    alt="diff-gi-gif"
+    src="diff-gi.gif"
+    caption="Infinite light bounces in Cornell Box",
+    link="https://reddit.com/r/rust_gamedev/comments/ixocl2/real_time_diffuse_global_illumination") }}
 
 [DI2edd] shared his [real-time diffuse global illumination demo on /r/rust_gamedev][gi-post].
 It's written in 100% Rust and uses WGPU for graphics, proving that the API
@@ -863,8 +881,11 @@ The book should be going into early access/beta in time for the next newsletter.
 
 ### [macroquad]
 
-[![quadgames](quadgames.gif)][sponsors]
-_Games built with miniquad/macroquad._
+{{ image_figure(
+    alt="quadgames"
+    src="quadgames.gif"
+    caption="Games built with miniquad/macroquad.",
+    link="https://github.com/sponsors/not-fl3") }}
 
 [macroquad] by [@fedor_games] is a cross-platform
 (Windows/Linux/macOS/Android/iOS/WASM)
@@ -990,8 +1011,11 @@ _Discussions:
 
 ### [rg3d][rg3d]
 
-[![a scene with lightning and a hi-poly character model](rg3d.jpg)][rg3d_twitter]
-_Click to watch a [video demo of one of the new examples][rg3d_twit]._
+{{ image_figure(
+    alt="a scene with lightning and a hi-poly character model"
+    src="rg3d.jpg"
+    caption="Click to watch a [video demo of one of the new examples](https://twitter.com/DmitryS36934349/status/1312836831390687232).",
+    link="https://twitter.com/DmitryS36934349") }}
 
 [rg3d] is a game engine that aims to be easy to use and provide large set
 of out-of-box features. Some of the recent updates:
@@ -1051,7 +1075,7 @@ to the user guide.
 [godot-rust-v0-9]: https://godot-rust.github.io/release-notes/0-9-0/
 [godot-rust-migration]: https://godot-rust.github.io/book/migrating-0-8.html
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 - [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
   - [#21 "Planning a survey for Rust game developers"](https://github.com/rust-gamedev/wg/issues/21);
diff --git a/content/posts/newsletter-014/legion_violin.png b/content/news/014/legion_violin.png
similarity index 100%
rename from content/posts/newsletter-014/legion_violin.png
rename to content/news/014/legion_violin.png
diff --git a/content/posts/newsletter-014/lines_hexstrat.jpeg b/content/news/014/lines_hexstrat.jpeg
similarity index 100%
rename from content/posts/newsletter-014/lines_hexstrat.jpeg
rename to content/news/014/lines_hexstrat.jpeg
diff --git a/content/posts/newsletter-014/mimas.png b/content/news/014/mimas.png
similarity index 100%
rename from content/posts/newsletter-014/mimas.png
rename to content/news/014/mimas.png
diff --git a/content/posts/newsletter-014/mun-logo.png b/content/news/014/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-014/mun-logo.png
rename to content/news/014/mun-logo.png
diff --git a/content/posts/newsletter-014/noxfutura.jpeg b/content/news/014/noxfutura.jpeg
similarity index 100%
rename from content/posts/newsletter-014/noxfutura.jpeg
rename to content/news/014/noxfutura.jpeg
diff --git a/content/posts/newsletter-014/ohnolava_troligtvis.gif b/content/news/014/ohnolava_troligtvis.gif
similarity index 100%
rename from content/posts/newsletter-014/ohnolava_troligtvis.gif
rename to content/news/014/ohnolava_troligtvis.gif
diff --git a/content/posts/newsletter-014/opengl_preprocessor.png b/content/news/014/opengl_preprocessor.png
similarity index 100%
rename from content/posts/newsletter-014/opengl_preprocessor.png
rename to content/news/014/opengl_preprocessor.png
diff --git a/content/posts/newsletter-014/pglowrpg_banner.png b/content/news/014/pglowrpg_banner.png
similarity index 100%
rename from content/posts/newsletter-014/pglowrpg_banner.png
rename to content/news/014/pglowrpg_banner.png
diff --git a/content/posts/newsletter-014/project_yawc.png b/content/news/014/project_yawc.png
similarity index 100%
rename from content/posts/newsletter-014/project_yawc.png
rename to content/news/014/project_yawc.png
diff --git a/content/posts/newsletter-014/quadgames.gif b/content/news/014/quadgames.gif
similarity index 100%
rename from content/posts/newsletter-014/quadgames.gif
rename to content/news/014/quadgames.gif
diff --git a/content/posts/newsletter-014/recall_singularity.png b/content/news/014/recall_singularity.png
similarity index 100%
rename from content/posts/newsletter-014/recall_singularity.png
rename to content/news/014/recall_singularity.png
diff --git a/content/posts/newsletter-014/rg3d.jpg b/content/news/014/rg3d.jpg
similarity index 100%
rename from content/posts/newsletter-014/rg3d.jpg
rename to content/news/014/rg3d.jpg
diff --git a/content/posts/newsletter-014/rusty_editor.jpg b/content/news/014/rusty_editor.jpg
similarity index 100%
rename from content/posts/newsletter-014/rusty_editor.jpg
rename to content/news/014/rusty_editor.jpg
diff --git a/content/posts/newsletter-014/shadertoy.gif b/content/news/014/shadertoy.gif
similarity index 100%
rename from content/posts/newsletter-014/shadertoy.gif
rename to content/news/014/shadertoy.gif
diff --git a/content/posts/newsletter-014/space_shooter_rs.gif b/content/news/014/space_shooter_rs.gif
similarity index 100%
rename from content/posts/newsletter-014/space_shooter_rs.gif
rename to content/news/014/space_shooter_rs.gif
diff --git a/content/posts/newsletter-014/tantan_bevy.png b/content/news/014/tantan_bevy.png
similarity index 100%
rename from content/posts/newsletter-014/tantan_bevy.png
rename to content/news/014/tantan_bevy.png
diff --git a/content/posts/newsletter-014/tetris-bane.png b/content/news/014/tetris-bane.png
similarity index 100%
rename from content/posts/newsletter-014/tetris-bane.png
rename to content/news/014/tetris-bane.png
diff --git a/content/posts/newsletter-014/veloren_night.png b/content/news/014/veloren_night.png
similarity index 100%
rename from content/posts/newsletter-014/veloren_night.png
rename to content/news/014/veloren_night.png
diff --git a/content/posts/newsletter-014/veloren_river.png b/content/news/014/veloren_river.png
similarity index 100%
rename from content/posts/newsletter-014/veloren_river.png
rename to content/news/014/veloren_river.png
diff --git a/content/posts/newsletter-014/way-of-rhea-header.jpg b/content/news/014/way-of-rhea-header.jpg
similarity index 100%
rename from content/posts/newsletter-014/way-of-rhea-header.jpg
rename to content/news/014/way-of-rhea-header.jpg
diff --git a/content/posts/newsletter-014/way-of-rhea-ice-biome-snowcrab.png b/content/news/014/way-of-rhea-ice-biome-snowcrab.png
similarity index 100%
rename from content/posts/newsletter-014/way-of-rhea-ice-biome-snowcrab.png
rename to content/news/014/way-of-rhea-ice-biome-snowcrab.png
diff --git a/content/posts/newsletter-014/zemeroth_chain.gif b/content/news/014/zemeroth_chain.gif
similarity index 100%
rename from content/posts/newsletter-014/zemeroth_chain.gif
rename to content/news/014/zemeroth_chain.gif
diff --git a/content/posts/newsletter-015/abstreet.png b/content/news/015/abstreet.png
similarity index 100%
rename from content/posts/newsletter-015/abstreet.png
rename to content/news/015/abstreet.png
diff --git a/content/posts/newsletter-015/ajour-banner.jpg b/content/news/015/ajour-banner.jpg
similarity index 100%
rename from content/posts/newsletter-015/ajour-banner.jpg
rename to content/news/015/ajour-banner.jpg
diff --git a/content/posts/newsletter-015/ajour-ui.png b/content/news/015/ajour-ui.png
similarity index 100%
rename from content/posts/newsletter-015/ajour-ui.png
rename to content/news/015/ajour-ui.png
diff --git a/content/posts/newsletter-015/antorum-online-10-29-2020.jpg b/content/news/015/antorum-online-10-29-2020.jpg
similarity index 100%
rename from content/posts/newsletter-015/antorum-online-10-29-2020.jpg
rename to content/news/015/antorum-online-10-29-2020.jpg
diff --git a/content/posts/newsletter-015/bevy_logo.png b/content/news/015/bevy_logo.png
similarity index 100%
rename from content/posts/newsletter-015/bevy_logo.png
rename to content/news/015/bevy_logo.png
diff --git a/content/posts/newsletter-015/bevy_snake.gif b/content/news/015/bevy_snake.gif
similarity index 100%
rename from content/posts/newsletter-015/bevy_snake.gif
rename to content/news/015/bevy_snake.gif
diff --git a/content/posts/newsletter-015/building-blocks.gif b/content/news/015/building-blocks.gif
similarity index 100%
rename from content/posts/newsletter-015/building-blocks.gif
rename to content/news/015/building-blocks.gif
diff --git a/content/posts/newsletter-015/bve-reborn-dx11.jpg b/content/news/015/bve-reborn-dx11.jpg
similarity index 100%
rename from content/posts/newsletter-015/bve-reborn-dx11.jpg
rename to content/news/015/bve-reborn-dx11.jpg
diff --git a/content/posts/newsletter-015/camp-misty.PNG b/content/news/015/camp-misty.PNG
similarity index 100%
rename from content/posts/newsletter-015/camp-misty.PNG
rename to content/news/015/camp-misty.PNG
diff --git a/content/posts/newsletter-015/canon_collision.gif b/content/news/015/canon_collision.gif
similarity index 100%
rename from content/posts/newsletter-015/canon_collision.gif
rename to content/news/015/canon_collision.gif
diff --git a/content/posts/newsletter-015/crate-before-attack.gif b/content/news/015/crate-before-attack.gif
similarity index 100%
rename from content/posts/newsletter-015/crate-before-attack.gif
rename to content/news/015/crate-before-attack.gif
diff --git a/content/posts/newsletter-015/density-mesh.png b/content/news/015/density-mesh.png
similarity index 100%
rename from content/posts/newsletter-015/density-mesh.png
rename to content/news/015/density-mesh.png
diff --git a/content/posts/newsletter-015/egregoria.jpg b/content/news/015/egregoria.jpg
similarity index 100%
rename from content/posts/newsletter-015/egregoria.jpg
rename to content/news/015/egregoria.jpg
diff --git a/content/posts/newsletter-015/fastnbt.png b/content/news/015/fastnbt.png
similarity index 100%
rename from content/posts/newsletter-015/fastnbt.png
rename to content/news/015/fastnbt.png
diff --git a/content/posts/newsletter-015/galaxy-sim.gif b/content/news/015/galaxy-sim.gif
similarity index 100%
rename from content/posts/newsletter-015/galaxy-sim.gif
rename to content/news/015/galaxy-sim.gif
diff --git a/content/posts/newsletter-015/garden_scaled_1.png b/content/news/015/garden_scaled_1.png
similarity index 100%
rename from content/posts/newsletter-015/garden_scaled_1.png
rename to content/news/015/garden_scaled_1.png
diff --git a/content/posts/newsletter-015/gbemu.png b/content/news/015/gbemu.png
similarity index 100%
rename from content/posts/newsletter-015/gbemu.png
rename to content/news/015/gbemu.png
diff --git a/content/posts/newsletter-015/honor.png b/content/news/015/honor.png
similarity index 100%
rename from content/posts/newsletter-015/honor.png
rename to content/news/015/honor.png
diff --git a/content/posts/newsletter-015/index.md b/content/news/015/index.md
similarity index 96%
rename from content/posts/newsletter-015/index.md
rename to content/news/015/index.md
index 1cdd45bd6..36434fb8b 100644
--- a/content/posts/newsletter-015/index.md
+++ b/content/news/015/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #15 - October 2020"
 date = 2020-11-09
 transparent = true
+aliases = ["posts/newsletter-015"]
 +++
 
 Welcome to the 15th issue of the Rust GameDev Workgroup's
@@ -30,7 +31,7 @@ Table of contents:
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -69,8 +70,10 @@ and where we should try to focus our collective efforts.
 
 ### [Veloren][veloren]
 
-![Landscape](veloren_clouds.jpeg)
-_Endless mountains to explore_
+{{ image_figure(
+    alt="Landscape"
+    src="veloren_clouds.jpeg"
+    caption="Endless mountains to explore") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -103,15 +106,20 @@ October's full weekly devlogs: "This Week In Veloren...":
 In November, Veloren will release 0.8. Veloren will also be speaking at
 MiniDebConf on November 22nd.
 
-![Healing sceptre](veloren_wolves.jpeg)
-_Team hunt_
+{{ image_figure(
+    alt="Healing sceptre"
+    src="veloren_wolves.jpeg"
+    caption="Team hunt") }}
 
 [veloren]: https://veloren.net
 
 ### [Crate Before Attack][cba-site]
 
-[![Leaderboard Histogram](crate-before-attack.gif)][cba-site]
-_Interactive Histogram with Race Results_
+{{ image_figure(
+    alt="Leaderboard Histogram"
+    src="crate-before-attack.gif"
+    caption="Interactive Histogram with Race Results",
+    link="https://cratebeforeattack.com") }}
 
 [Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
 is a skill-based multiplayer game where frogs fight and race using their sticky
@@ -195,8 +203,10 @@ Some of this month's updates:
 
 ### Worship The Sun
 
-![Worship The Sun](worship-sun.jpg)
-_One of the many unique and confounding puzzles in the game_
+{{ image_figure(
+    alt="Worship The Sun"
+    src="worship-sun.jpg"
+    caption="One of the many unique and confounding puzzles in the game") }}
 
 Worship The Sun is a dark, mysterious 2D puzzle-platform game with computer
 science themes. It introduces the player to a rich language of puzzle elements
@@ -224,8 +234,10 @@ For updates and possible playtesting opportunities, follow
 
 ### [Garden][garden]
 
-![Garden](garden_scaled_1.png)
-_A couple of trees growing and basking in the sun_
+{{ image_figure(
+    alt="Garden"
+    src="garden_scaled_1.png"
+    caption="A couple of trees growing and basking in the sun") }}
 
 [Garden][garden] is a procedural tree-growing, strategical ecosystem-restoration
 and biological simulation game with an infinite amount of plant species where
@@ -456,8 +468,11 @@ an effective code refactor for a project using ECS, make sure to check out
 
 ### [Weegames][weegames-itch]
 
-[![Jumping across walls minigame](weegames.png)][weegames-video]
-_Click to see [a demo video][weegames-video]_
+{{ image_figure(
+    alt="Jumping across walls minigame"
+    src="weegames.png"
+    caption="Click to see [a demo video](https://youtu.be/sstqGppo7L4)",
+    link="https://youtu.be/sstqGppo7L4") }}
 
 [Weegames][weegames-itch] ([source code][weegames-repository])
 is a fast-paced minigame collection.
@@ -628,8 +643,10 @@ development for Entity-Component-Systems, Windowing and Event Loops, and WGPU.
 
 ### [Creating a Snake Clone in Bevy]
 
-![Snake clone tutorial output](bevy_snake.gif)
-_Gameplay of snake clone_
+{{ image_figure(
+    alt="Snake clone tutorial output"
+    src="bevy_snake.gif"
+    caption="Gameplay of snake clone") }}
 
 Bevy is a rapidly growing game engine written in Rust. This tutorial walks
 through creating a snake clone, introducing Bevy concepts on the way. The
@@ -937,15 +954,17 @@ Join [Building Blocks's Discord server](https://discord.gg/CnTNjwb).
 
 ### [Rust GPU v0.1][rustgpu-v0.1]
 
-![Rust GPU Sky](rustgpu.jpg)
-_Sky example in Rust GPU_
+{{ image_figure(
+    alt="Rust GPU Sky"
+    src="rustgpu.jpg"
+    caption="Sky example in Rust GPU") }}
 
 [Rust GPU][rustgpu] is a project backed by [Embark Studios][embark]
 to make Rust a first-class language and ecosystem for building GPU code.
 
 Although still in very early stages of development,
 [Rust GPU released v0.1 in October][rustgpu-v0.1],
-and has already garnered over 2000 stars on Github.
+and has already garnered over 2000 stars on GitHub.
 Currently, compiling and running very simple shaders
 works, and a significant portion of the core library also compiles. While things
 like if-statements and while-loops are working, many things aren't implemented yet.
@@ -1033,8 +1052,10 @@ available [here][ggez-release-checklist].
 
 ### [miniquad]
 
-![miniquad_wayland](miniquad_wayland.gif)
-_Miniquad compiled from scratch and running on Wayland._
+{{ image_figure(
+    alt="miniquad_wayland"
+    src="miniquad_wayland.gif"
+    caption="Miniquad compiled from scratch and running on Wayland.") }}
 
 [miniquad] is cross-platform windowing and rendering library.
 
@@ -1054,8 +1075,10 @@ This month two big PRs got into the final review stage:
 
 ### [macroquad]
 
-![macroquad-gif](macroquad.gif)
-_Macroquad-particles real-life example_
+{{ image_figure(
+    alt="macroquad-gif"
+    src="macroquad.gif"
+    caption="Macroquad-particles real-life example") }}
 
 [macroquad] is a cross-platform (Windows/Linux/macOS/Android/iOS/WASM)
 game framework built on top of [miniquad].
@@ -1316,23 +1339,23 @@ Join the [Discord server](https://discord.com/invite/ajour) and say hi.
 [Ajour]: https://getajour.com
 [Iced]: https://github.com/hecrj/iced
 
-### [Proton][Proton-Github] 5.13-1
+### [Proton][Proton-GitHub] 5.13-1
 
 In addition to adding Linux Support for more Windows-exclusive games,
 Valve Software's wine-based translation layer for Linux: Proton now
 includes Rust as part of its build system.
-[Media Converter][Proton-Media-Converter-Github], is a Proton module
+[Media Converter][Proton-Media-Converter-GitHub], is a Proton module
 written in Rust as a gstreamer plugin to convert certain media encodings
 from one format to another.
 
-Documentation for building Proton is available on [Github][Proton-Github].
+Documentation for building Proton is available on [GitHub][Proton-GitHub].
 Further documentation on Media Converter and its source code is available
-on the module's [repository][Proton-Media-Converter-Github]
+on the module's [repository][Proton-Media-Converter-GitHub]
 
-[Proton-Github]: https://github.com/ValveSoftware/Proton
-[Proton-Media-Converter-Github]: https://github.com/ValveSoftware/Proton/tree/proton_5.13/media-converter
+[Proton-GitHub]: https://github.com/ValveSoftware/Proton
+[Proton-Media-Converter-GitHub]: https://github.com/ValveSoftware/Proton/tree/proton_5.13/media-converter
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-015/ld47-bloody-baron.png b/content/news/015/ld47-bloody-baron.png
similarity index 100%
rename from content/posts/newsletter-015/ld47-bloody-baron.png
rename to content/news/015/ld47-bloody-baron.png
diff --git a/content/posts/newsletter-015/ld47-island.gif b/content/news/015/ld47-island.gif
similarity index 100%
rename from content/posts/newsletter-015/ld47-island.gif
rename to content/news/015/ld47-island.gif
diff --git a/content/posts/newsletter-015/ld47-keep-inside.gif b/content/news/015/ld47-keep-inside.gif
similarity index 100%
rename from content/posts/newsletter-015/ld47-keep-inside.gif
rename to content/news/015/ld47-keep-inside.gif
diff --git a/content/posts/newsletter-015/ld47-nobody-burns.png b/content/news/015/ld47-nobody-burns.png
similarity index 100%
rename from content/posts/newsletter-015/ld47-nobody-burns.png
rename to content/news/015/ld47-nobody-burns.png
diff --git a/content/posts/newsletter-015/ld47-quantum-loops.gif b/content/news/015/ld47-quantum-loops.gif
similarity index 100%
rename from content/posts/newsletter-015/ld47-quantum-loops.gif
rename to content/news/015/ld47-quantum-loops.gif
diff --git a/content/posts/newsletter-015/ld47-soy.png b/content/news/015/ld47-soy.png
similarity index 100%
rename from content/posts/newsletter-015/ld47-soy.png
rename to content/news/015/ld47-soy.png
diff --git a/content/posts/newsletter-015/ld47-time-ghosts.png b/content/news/015/ld47-time-ghosts.png
similarity index 100%
rename from content/posts/newsletter-015/ld47-time-ghosts.png
rename to content/news/015/ld47-time-ghosts.png
diff --git a/content/posts/newsletter-015/macroquad.gif b/content/news/015/macroquad.gif
similarity index 100%
rename from content/posts/newsletter-015/macroquad.gif
rename to content/news/015/macroquad.gif
diff --git a/content/posts/newsletter-015/miniquad_wayland.gif b/content/news/015/miniquad_wayland.gif
similarity index 100%
rename from content/posts/newsletter-015/miniquad_wayland.gif
rename to content/news/015/miniquad_wayland.gif
diff --git a/content/posts/newsletter-015/mun-logo.png b/content/news/015/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-015/mun-logo.png
rename to content/news/015/mun-logo.png
diff --git a/content/posts/newsletter-015/pglowrpg.gif b/content/news/015/pglowrpg.gif
similarity index 100%
rename from content/posts/newsletter-015/pglowrpg.gif
rename to content/news/015/pglowrpg.gif
diff --git a/content/posts/newsletter-015/power-kick-shot.png b/content/news/015/power-kick-shot.png
similarity index 100%
rename from content/posts/newsletter-015/power-kick-shot.png
rename to content/news/015/power-kick-shot.png
diff --git a/content/posts/newsletter-015/rapier-demo.gif b/content/news/015/rapier-demo.gif
similarity index 100%
rename from content/posts/newsletter-015/rapier-demo.gif
rename to content/news/015/rapier-demo.gif
diff --git a/content/posts/newsletter-015/rapier-logo.svg b/content/news/015/rapier-logo.svg
similarity index 100%
rename from content/posts/newsletter-015/rapier-logo.svg
rename to content/news/015/rapier-logo.svg
diff --git a/content/posts/newsletter-015/rg3d.jpg b/content/news/015/rg3d.jpg
similarity index 100%
rename from content/posts/newsletter-015/rg3d.jpg
rename to content/news/015/rg3d.jpg
diff --git a/content/posts/newsletter-015/rust-psp-tetris-small.jpg b/content/news/015/rust-psp-tetris-small.jpg
similarity index 100%
rename from content/posts/newsletter-015/rust-psp-tetris-small.jpg
rename to content/news/015/rust-psp-tetris-small.jpg
diff --git a/content/posts/newsletter-015/rustgpu.jpg b/content/news/015/rustgpu.jpg
similarity index 100%
rename from content/posts/newsletter-015/rustgpu.jpg
rename to content/news/015/rustgpu.jpg
diff --git a/content/posts/newsletter-015/rymd_2020_11_05.gif b/content/news/015/rymd_2020_11_05.gif
similarity index 100%
rename from content/posts/newsletter-015/rymd_2020_11_05.gif
rename to content/news/015/rymd_2020_11_05.gif
diff --git a/content/posts/newsletter-015/shared-arena.png b/content/news/015/shared-arena.png
similarity index 100%
rename from content/posts/newsletter-015/shared-arena.png
rename to content/news/015/shared-arena.png
diff --git a/content/posts/newsletter-015/smash_x_rust.png b/content/news/015/smash_x_rust.png
similarity index 100%
rename from content/posts/newsletter-015/smash_x_rust.png
rename to content/news/015/smash_x_rust.png
diff --git a/content/posts/newsletter-015/space_shooter_11-03-2020.gif b/content/news/015/space_shooter_11-03-2020.gif
similarity index 100%
rename from content/posts/newsletter-015/space_shooter_11-03-2020.gif
rename to content/news/015/space_shooter_11-03-2020.gif
diff --git a/content/posts/newsletter-015/sun_prison.gif b/content/news/015/sun_prison.gif
similarity index 100%
rename from content/posts/newsletter-015/sun_prison.gif
rename to content/news/015/sun_prison.gif
diff --git a/content/posts/newsletter-015/veloren_clouds.jpeg b/content/news/015/veloren_clouds.jpeg
similarity index 100%
rename from content/posts/newsletter-015/veloren_clouds.jpeg
rename to content/news/015/veloren_clouds.jpeg
diff --git a/content/posts/newsletter-015/veloren_wolves.jpeg b/content/news/015/veloren_wolves.jpeg
similarity index 100%
rename from content/posts/newsletter-015/veloren_wolves.jpeg
rename to content/news/015/veloren_wolves.jpeg
diff --git a/content/posts/newsletter-015/video-ffi-msfs.jpg b/content/news/015/video-ffi-msfs.jpg
similarity index 100%
rename from content/posts/newsletter-015/video-ffi-msfs.jpg
rename to content/news/015/video-ffi-msfs.jpg
diff --git a/content/posts/newsletter-015/voxel-mapper.gif b/content/news/015/voxel-mapper.gif
similarity index 100%
rename from content/posts/newsletter-015/voxel-mapper.gif
rename to content/news/015/voxel-mapper.gif
diff --git a/content/posts/newsletter-015/weegames.png b/content/news/015/weegames.png
similarity index 100%
rename from content/posts/newsletter-015/weegames.png
rename to content/news/015/weegames.png
diff --git a/content/posts/newsletter-015/wilds.1.png b/content/news/015/wilds.1.png
similarity index 100%
rename from content/posts/newsletter-015/wilds.1.png
rename to content/news/015/wilds.1.png
diff --git a/content/posts/newsletter-015/worship-sun.jpg b/content/news/015/worship-sun.jpg
similarity index 100%
rename from content/posts/newsletter-015/worship-sun.jpg
rename to content/news/015/worship-sun.jpg
diff --git a/content/posts/newsletter-015/yawc.png b/content/news/015/yawc.png
similarity index 100%
rename from content/posts/newsletter-015/yawc.png
rename to content/news/015/yawc.png
diff --git a/content/posts/newsletter-016/abstreet.png b/content/news/016/abstreet.png
similarity index 100%
rename from content/posts/newsletter-016/abstreet.png
rename to content/news/016/abstreet.png
diff --git a/content/posts/newsletter-016/akigi_butcher.jpg b/content/news/016/akigi_butcher.jpg
similarity index 100%
rename from content/posts/newsletter-016/akigi_butcher.jpg
rename to content/news/016/akigi_butcher.jpg
diff --git a/content/posts/newsletter-016/antorum-online-11-25-2020.gif b/content/news/016/antorum-online-11-25-2020.gif
similarity index 100%
rename from content/posts/newsletter-016/antorum-online-11-25-2020.gif
rename to content/news/016/antorum-online-11-25-2020.gif
diff --git a/content/posts/newsletter-016/aws.png b/content/news/016/aws.png
similarity index 100%
rename from content/posts/newsletter-016/aws.png
rename to content/news/016/aws.png
diff --git a/content/posts/newsletter-016/bevmnist.gif b/content/news/016/bevmnist.gif
similarity index 100%
rename from content/posts/newsletter-016/bevmnist.gif
rename to content/news/016/bevmnist.gif
diff --git a/content/posts/newsletter-016/bevy_chess.gif b/content/news/016/bevy_chess.gif
similarity index 100%
rename from content/posts/newsletter-016/bevy_chess.gif
rename to content/news/016/bevy_chess.gif
diff --git a/content/posts/newsletter-016/cargo-mobile.jpg b/content/news/016/cargo-mobile.jpg
similarity index 100%
rename from content/posts/newsletter-016/cargo-mobile.jpg
rename to content/news/016/cargo-mobile.jpg
diff --git a/content/posts/newsletter-016/dotrix-rendering.png b/content/news/016/dotrix-rendering.png
similarity index 100%
rename from content/posts/newsletter-016/dotrix-rendering.png
rename to content/news/016/dotrix-rendering.png
diff --git a/content/posts/newsletter-016/egui.png b/content/news/016/egui.png
similarity index 100%
rename from content/posts/newsletter-016/egui.png
rename to content/news/016/egui.png
diff --git a/content/posts/newsletter-016/everfight.jpg b/content/news/016/everfight.jpg
similarity index 100%
rename from content/posts/newsletter-016/everfight.jpg
rename to content/news/016/everfight.jpg
diff --git a/content/posts/newsletter-016/f1-tui.gif b/content/news/016/f1-tui.gif
similarity index 100%
rename from content/posts/newsletter-016/f1-tui.gif
rename to content/news/016/f1-tui.gif
diff --git a/content/posts/newsletter-016/fbsim.png b/content/news/016/fbsim.png
similarity index 100%
rename from content/posts/newsletter-016/fbsim.png
rename to content/news/016/fbsim.png
diff --git a/content/posts/newsletter-016/ggez-bun.png b/content/news/016/ggez-bun.png
similarity index 100%
rename from content/posts/newsletter-016/ggez-bun.png
rename to content/news/016/ggez-bun.png
diff --git a/content/posts/newsletter-016/gh-gameoff.png b/content/news/016/gh-gameoff.png
similarity index 100%
rename from content/posts/newsletter-016/gh-gameoff.png
rename to content/news/016/gh-gameoff.png
diff --git a/content/posts/newsletter-016/go-wotm.png b/content/news/016/go-wotm.png
similarity index 100%
rename from content/posts/newsletter-016/go-wotm.png
rename to content/news/016/go-wotm.png
diff --git a/content/posts/newsletter-016/hands-on-rust.jpg b/content/news/016/hands-on-rust.jpg
similarity index 100%
rename from content/posts/newsletter-016/hands-on-rust.jpg
rename to content/news/016/hands-on-rust.jpg
diff --git a/content/posts/newsletter-016/iced-game-of-life.gif b/content/news/016/iced-game-of-life.gif
similarity index 100%
rename from content/posts/newsletter-016/iced-game-of-life.gif
rename to content/news/016/iced-game-of-life.gif
diff --git a/content/posts/newsletter-016/index.md b/content/news/016/index.md
similarity index 93%
rename from content/posts/newsletter-016/index.md
rename to content/news/016/index.md
index 9827ba681..0b7c57d10 100644
--- a/content/posts/newsletter-016/index.md
+++ b/content/news/016/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #16 - November 2020"
 date = 2020-12-08
 transparent = true
+aliases = ["posts/newsletter-016"]
 +++
 
 Welcome to the 16th issue of the Rust GameDev Workgroup's
@@ -29,12 +30,12 @@ Feel free to send PRs about your own projects!
 
 Table of contents:
 
-- [Rust GameDev Podcast](#rust-gamedev-podcast)
+- [Rust GameDev Podcast #3](#rust-gamedev-podcast-3)
 - [Last Call for Rust GameDev Survey](#last-call-for-rust-gamedev-survey)
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -110,8 +111,10 @@ Some of this month's updates:
 
 ### [Veloren][veloren]
 
-![Landscape](veloren_fly.jpg)
-_Endless mountains to explore_
+{{ image_figure(
+    alt="Landscape"
+    src="veloren_fly.jpg"
+    caption="Endless mountains to explore") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -126,8 +129,11 @@ freeze, many networking and combat bugs were fixed. The Veloren 0.8 release
 party took place on the 28th and saw a peak of 112 players online, doubling the
 previous record.
 
-[![Youtube preview img](veloren-gameplay-video.gif)][veloren-0.8-gameplay]
-_0.8 gameplay video_
+{{ image_figure(
+    alt="Youtube preview img"
+    src="veloren-gameplay-video.gif"
+    caption="0.8 gameplay video",
+    link="https://www.youtube.com/watch?v=TMYfrdiEJw4") }}
 
 You can read more about specific topics from November:
 
@@ -155,8 +161,10 @@ In December, work will begin on 0.9. There are some discussions about larger
 refactors in the codebase. Many new developers have joined and are getting up to
 speed on contributing. Veloren will also reach its 100th blog post!
 
-![Healing sceptre](veloren_adventure.jpg)
-_The start of an adventure_
+{{ image_figure(
+    alt="Healing sceptre"
+    src="veloren_adventure.jpg"
+    caption="The start of an adventure") }}
 
 [veloren]: https://veloren.net
 [veloren-0.8-changelog]: https://gitlab.com/veloren/veloren/-/blob/master/CHANGELOG.md#080-2020-11-28
@@ -166,8 +174,10 @@ _The start of an adventure_
 
 ### [FBSim]
 
-![FBSim initial version](fbsim.png)
-_FBSim running with default agents._
+{{ image_figure(
+    alt="FBSim initial version"
+    src="fbsim.png"
+    caption="FBSim running with default agents.") }}
 
 [FBSim] by [Ian Tayler] is a football/soccer game where you program the
 players using Rust and try to beat a team controlled by another AI.
@@ -206,8 +216,10 @@ engine to support named zones on the map.
 
 ### [Akigi][akigi]
 
-![Akiki butcher](akigi_butcher.jpg)
-_Akigi butcher skill_
+{{ image_figure(
+    alt="Akiki butcher"
+    src="akigi_butcher.jpg"
+    caption="Akigi butcher skill") }}
 
 [Akigi][akigi] is a WIP online multiplayer game.
 
@@ -251,8 +263,10 @@ Recent updates include:
 
 ### [Shotcaller]
 
-![Shotcaller dual frontend](shotcaller-2guis.png)
-_ASCII and sprites versions of Shotcaller interface._
+{{ image_figure(
+    alt="Shotcaller dual frontend"
+    src="shotcaller-2guis.png"
+    caption="ASCII and sprites versions of Shotcaller interface.") }}
 
 [Shotcaller] is a moddable RTS/MOBA game made with bracket-lib and specs.
 
@@ -325,7 +339,7 @@ Here are some of the games made with Rust:
   > plasma doors, saw blades, etc.), bonuses (fuel, health) and coins.
 
   [@grzi] also published a devlog post:
-  ["My journey into Github GameOff 2020"][go-starlight-post].
+  ["My journey into GitHub GameOff 2020"][go-starlight-post].
 
   ![gameplay](starlight-1961.png)
 
@@ -401,8 +415,11 @@ _Discussions:
 
 ### [How to Build a Multiplayer Game][talk-dns2utf8-video]
 
-[![A screenshot from the talk](talk-multiplayer-game.jpg)][talk-dns2utf8-video]
-_You can [watch the recording here][talk-dns2utf8-video]._
+{{ image_figure(
+    alt="A screenshot from the talk"
+    src="talk-multiplayer-game.jpg"
+    caption="You can [watch the recording here](https://youtube.com/watch?v=Yb-QR3Vm3sk).",
+    link="https://youtube.com/watch?v=Yb-QR3Vm3sk") }}
 
 This month, [@dns2utf8] gave a [talk][talk-dns2utf8-video] about
 how to build a multiplayer game with actix-web that people with
@@ -439,8 +456,10 @@ examples.
 
 ### [Chess game in Rust using Bevy]
 
-![Tutorial result](bevy_chess.gif)
-_Chess gameplay_
+{{ image_figure(
+    alt="Tutorial result"
+    src="bevy_chess.gif"
+    caption="Chess gameplay") }}
 
 [@guimcaballero] published a tutorial on using Bevy 0.3 to make a Chess clone in
 3d. Most of the concepts are explained along the way, from how to load meshes to
@@ -477,8 +496,11 @@ You can learn more [on the Learn Wgpu news page][learn-wgpu-news].
 
 ### [cargo-mobile]
 
-[![Bevy's Breakout example running on an iPhone XR](cargo-mobile.jpg)][cargo-mobile]
-_Bevy's Breakout example running on an iPhone XR_
+{{ image_figure(
+    alt="Bevy's Breakout example running on an iPhone XR"
+    src="cargo-mobile.jpg"
+    caption="Bevy's Breakout example running on an iPhone XR",
+    link="https://dev.brainiumstudios.com/2020/11/24/cargo-mobile.html") }}
 
 [cargo-mobile] is a tool created by [Brainium Studios] to simplify Rust mobile
 development. It generates Xcode and Android Studio projects, and provides handy
@@ -530,7 +552,7 @@ It has a handful of features that make it stand out:
 Reddit user [vlmutolo] also made a [toy benchmark] comparing rkyv against serde
 and bincode and found that rkyv had promising initial numbers:
 
-```text
+```txt
 serialize (bincode):    89 ns/iter
 serialize (rkyv):       86 ns/iter
 
@@ -570,8 +592,10 @@ Version 0.4.0 was released this month, bringing loads of improvements.
 
 ### [Terra Mach][terramach]
 
-![Dashboard demo](terramach.gif)
-_Terra Mach dashboard demo_
+{{ image_figure(
+    alt="Dashboard demo"
+    src="terramach.gif"
+    caption="Terra Mach dashboard demo") }}
 
 [Terra Mach][terramach] is a mapping frontend system to build graphical interfaces
 for devices. It focuses on experiences around statistical data (graphs, diagrams),
@@ -764,8 +788,10 @@ most of the updated [WebGPU samples][wgpu-samples].
 
 ### [Iced] v0.2
 
-![Iced - Game of Life example](iced-game-of-life.gif)
-_The new [Game of Life example], made with Iced_
+{{ image_figure(
+    alt="Iced - Game of Life example"
+    src="iced-game-of-life.gif"
+    caption="The new [Game of Life example](https://github.com/hecrj/iced/tree/0.2/examples/game_of_life), made with Iced") }}
 
 Iced is an experimental cross-platform GUI library focused on simplicity and
 type-safety. Inspired by [Elm].
@@ -798,8 +824,10 @@ _Discussions:
 
 ### [KAS] v0.6 and [KAS-text] v0.2
 
-![KAS markdown](kas-markdown.png)
-_Markdown parsing demo_
+{{ image_figure(
+    alt="KAS markdown"
+    src="kas-markdown.png"
+    caption="Markdown parsing demo") }}
 
 [KAS] by [@dhardy] is a general-purpose UI toolkit; its
 initial aim is "old school" desktop apps with good keyboard and touchscreen
@@ -835,8 +863,10 @@ Also, [egui_web] v0.4.0 was released, with a simple fetch API \-
 
 ### [miniquad]
 
-![miniquad_wayland](miniquad_kms.gif)
-_Miniquad running on raspberry pi 4 with a SPI screen._
+{{ image_figure(
+    alt="miniquad_wayland"
+    src="miniquad_kms.gif"
+    caption="Miniquad running on raspberry pi 4 with a SPI screen.") }}
 
 [miniquad] is cross-platform windowing and rendering library.
 
@@ -850,8 +880,10 @@ right on the Linux kernel with KMS.
 
 ### [macroquad]
 
-![macroquad_particles](macroquad_particles.gif)
-_Small editor footage._
+{{ image_figure(
+    alt="macroquad_particles"
+    src="macroquad_particles.gif"
+    caption="Small editor footage.") }}
 
 [macroquad] is a cross-platform (Windows/Linux/macOS/Android/iOS/WASM)
 game framework built on top of [miniquad].
@@ -864,8 +896,10 @@ style effects: [try it out online here][macroquad-particles].
 
 ### [Dotrix]
 
-![Animated low-poly character rendered by Dotrix](dotrix-rendering.png)
-_A screenshot of running low-poly female model_
+{{ image_figure(
+    alt="Animated low-poly character rendered by Dotrix"
+    src="dotrix-rendering.png"
+    caption="A screenshot of running low-poly female model") }}
 
 The goal of [Dotrix] is to become a 3D engine for the new RPG project. The
 engine is free and open source, delivering a set of common high-level features
@@ -935,8 +969,10 @@ has also been updated to show the new helpers in action.
 
 ### [ggez]
 
-![lots of overlapping bunnies](ggez-bun.png)
-_ggez bunnymark - 60,000 buns at 60 FPS_
+{{ image_figure(
+    alt="lots of overlapping bunnies"
+    src="ggez-bun.png"
+    caption="ggez bunnymark - 60,000 buns at 60 FPS") }}
 
 [ggez] is a 2D game framework inspired by Love2D. The project is chugging
 along getting everything prepared for a 0.6 release at the end of 2020,
@@ -958,8 +994,11 @@ branch and give it a go!
 
 ### [rg3d]
 
-[![a scene with lightning and multiple hi-poly character models](rg3d_instancing.jpg)][rg3d_twit]
-_Geometry instancing demo._
+{{ image_figure(
+    alt="a scene with lightning and multiple hi-poly character models"
+    src="rg3d_instancing.jpg"
+    caption="Geometry instancing demo.",
+    link="https://twitter.com/DmitryS36934349/status/1328797761874046977") }}
 
 [rg3d] is a game engine that aims to be easy to use and provide large set
 of out-of-box features. Some of the recent updates:
@@ -986,8 +1025,10 @@ or follow [Dmitry Stepanov on Twitter][rg3d_twitter].
 
 ### [Another World Suite][another-world-suite]
 
-![multiple windows with asm and sprites](aws.png)
-_debugger and resource viewer_
+{{ image_figure(
+    alt="multiple windows with asm and sprites"
+    src="aws.png"
+    caption="debugger and resource viewer") }}
 
 [Another World Suite][another-world-suite] by [@c_botana] is a Rust
 implementation of the ["Another World"][another-world] ("Out of This World" in USA)
@@ -1018,8 +1059,10 @@ _Discussions:
 
 ### [bevmnist][bevmnist-itch.io]
 
-![demo of running inferences for all digits](bevmnist.gif)
-_Running through all digits_
+{{ image_figure(
+    alt="demo of running inferences for all digits"
+    src="bevmnist.gif"
+    caption="Running through all digits") }}
 
 [bevmnist][bevmnist-itch.io] by [@FrancoisMockers] is a PoC for running
 inferences from a neural network in a game made with [bevy], that can run in
@@ -1039,7 +1082,7 @@ build and release a [bevy] game to itch.io for Linux, macOS, Windows and WASM.
 [bevy]: https://bevyengine.org
 [tract]: https://github.com/sonos/tract
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-016/kas-markdown.png b/content/news/016/kas-markdown.png
similarity index 100%
rename from content/posts/newsletter-016/kas-markdown.png
rename to content/news/016/kas-markdown.png
diff --git a/content/posts/newsletter-016/macroquad_particles.gif b/content/news/016/macroquad_particles.gif
similarity index 100%
rename from content/posts/newsletter-016/macroquad_particles.gif
rename to content/news/016/macroquad_particles.gif
diff --git a/content/posts/newsletter-016/miniquad_kms.gif b/content/news/016/miniquad_kms.gif
similarity index 100%
rename from content/posts/newsletter-016/miniquad_kms.gif
rename to content/news/016/miniquad_kms.gif
diff --git a/content/posts/newsletter-016/old-gods-logo.png b/content/news/016/old-gods-logo.png
similarity index 100%
rename from content/posts/newsletter-016/old-gods-logo.png
rename to content/news/016/old-gods-logo.png
diff --git a/content/posts/newsletter-016/optick-small.png b/content/news/016/optick-small.png
similarity index 100%
rename from content/posts/newsletter-016/optick-small.png
rename to content/news/016/optick-small.png
diff --git a/content/posts/newsletter-016/optick.jpeg b/content/news/016/optick.jpeg
similarity index 100%
rename from content/posts/newsletter-016/optick.jpeg
rename to content/news/016/optick.jpeg
diff --git a/content/posts/newsletter-016/podcast.jpeg b/content/news/016/podcast.jpeg
similarity index 100%
rename from content/posts/newsletter-016/podcast.jpeg
rename to content/news/016/podcast.jpeg
diff --git a/content/posts/newsletter-016/rapier-demo.gif b/content/news/016/rapier-demo.gif
similarity index 100%
rename from content/posts/newsletter-016/rapier-demo.gif
rename to content/news/016/rapier-demo.gif
diff --git a/content/posts/newsletter-016/rapier-logo.svg b/content/news/016/rapier-logo.svg
similarity index 100%
rename from content/posts/newsletter-016/rapier-logo.svg
rename to content/news/016/rapier-logo.svg
diff --git a/content/posts/newsletter-016/rg3d_instancing.jpg b/content/news/016/rg3d_instancing.jpg
similarity index 100%
rename from content/posts/newsletter-016/rg3d_instancing.jpg
rename to content/news/016/rg3d_instancing.jpg
diff --git a/content/posts/newsletter-016/rib.gif b/content/news/016/rib.gif
similarity index 100%
rename from content/posts/newsletter-016/rib.gif
rename to content/news/016/rib.gif
diff --git a/content/posts/newsletter-016/rymd_2020_12_02.gif b/content/news/016/rymd_2020_12_02.gif
similarity index 100%
rename from content/posts/newsletter-016/rymd_2020_12_02.gif
rename to content/news/016/rymd_2020_12_02.gif
diff --git a/content/posts/newsletter-016/salva-logo.svg b/content/news/016/salva-logo.svg
similarity index 100%
rename from content/posts/newsletter-016/salva-logo.svg
rename to content/news/016/salva-logo.svg
diff --git a/content/posts/newsletter-016/shotcaller-2guis.png b/content/news/016/shotcaller-2guis.png
similarity index 100%
rename from content/posts/newsletter-016/shotcaller-2guis.png
rename to content/news/016/shotcaller-2guis.png
diff --git a/content/posts/newsletter-016/space_shooter_12-03-2020.gif b/content/news/016/space_shooter_12-03-2020.gif
similarity index 100%
rename from content/posts/newsletter-016/space_shooter_12-03-2020.gif
rename to content/news/016/space_shooter_12-03-2020.gif
diff --git a/content/posts/newsletter-016/starlight-1961.png b/content/news/016/starlight-1961.png
similarity index 100%
rename from content/posts/newsletter-016/starlight-1961.png
rename to content/news/016/starlight-1961.png
diff --git a/content/posts/newsletter-016/talk-multiplayer-game.jpg b/content/news/016/talk-multiplayer-game.jpg
similarity index 100%
rename from content/posts/newsletter-016/talk-multiplayer-game.jpg
rename to content/news/016/talk-multiplayer-game.jpg
diff --git a/content/posts/newsletter-016/terramach.gif b/content/news/016/terramach.gif
similarity index 100%
rename from content/posts/newsletter-016/terramach.gif
rename to content/news/016/terramach.gif
diff --git a/content/posts/newsletter-016/veloren-gameplay-video.gif b/content/news/016/veloren-gameplay-video.gif
similarity index 100%
rename from content/posts/newsletter-016/veloren-gameplay-video.gif
rename to content/news/016/veloren-gameplay-video.gif
diff --git a/content/posts/newsletter-016/veloren_adventure.jpg b/content/news/016/veloren_adventure.jpg
similarity index 100%
rename from content/posts/newsletter-016/veloren_adventure.jpg
rename to content/news/016/veloren_adventure.jpg
diff --git a/content/posts/newsletter-016/veloren_fly.jpg b/content/news/016/veloren_fly.jpg
similarity index 100%
rename from content/posts/newsletter-016/veloren_fly.jpg
rename to content/news/016/veloren_fly.jpg
diff --git a/content/posts/newsletter-016/wgpu-big-picture.svg b/content/news/016/wgpu-big-picture.svg
similarity index 100%
rename from content/posts/newsletter-016/wgpu-big-picture.svg
rename to content/news/016/wgpu-big-picture.svg
diff --git a/content/posts/newsletter-017/a-zombie-shooter-game-demo.gif b/content/news/017/a-zombie-shooter-game-demo.gif
similarity index 100%
rename from content/posts/newsletter-017/a-zombie-shooter-game-demo.gif
rename to content/news/017/a-zombie-shooter-game-demo.gif
diff --git a/content/posts/newsletter-017/akigi.gif b/content/news/017/akigi.gif
similarity index 100%
rename from content/posts/newsletter-017/akigi.gif
rename to content/news/017/akigi.gif
diff --git a/content/posts/newsletter-017/antorum-12-30-2020.jpg b/content/news/017/antorum-12-30-2020.jpg
similarity index 100%
rename from content/posts/newsletter-017/antorum-12-30-2020.jpg
rename to content/news/017/antorum-12-30-2020.jpg
diff --git a/content/posts/newsletter-017/bevy_logo.png b/content/news/017/bevy_logo.png
similarity index 100%
rename from content/posts/newsletter-017/bevy_logo.png
rename to content/news/017/bevy_logo.png
diff --git a/content/posts/newsletter-017/beziers.gif b/content/news/017/beziers.gif
similarity index 100%
rename from content/posts/newsletter-017/beziers.gif
rename to content/news/017/beziers.gif
diff --git a/content/posts/newsletter-017/cheese-screenshot.png b/content/news/017/cheese-screenshot.png
similarity index 100%
rename from content/posts/newsletter-017/cheese-screenshot.png
rename to content/news/017/cheese-screenshot.png
diff --git a/content/posts/newsletter-017/dotrix-in-december.gif b/content/news/017/dotrix-in-december.gif
similarity index 100%
rename from content/posts/newsletter-017/dotrix-in-december.gif
rename to content/news/017/dotrix-in-december.gif
diff --git a/content/posts/newsletter-017/doukutsu-rs.png b/content/news/017/doukutsu-rs.png
similarity index 100%
rename from content/posts/newsletter-017/doukutsu-rs.png
rename to content/news/017/doukutsu-rs.png
diff --git a/content/posts/newsletter-017/egregoria.jpg b/content/news/017/egregoria.jpg
similarity index 100%
rename from content/posts/newsletter-017/egregoria.jpg
rename to content/news/017/egregoria.jpg
diff --git a/content/posts/newsletter-017/egui.gif b/content/news/017/egui.gif
similarity index 100%
rename from content/posts/newsletter-017/egui.gif
rename to content/news/017/egui.gif
diff --git a/content/posts/newsletter-017/freenukum-somersaults.gif b/content/news/017/freenukum-somersaults.gif
similarity index 100%
rename from content/posts/newsletter-017/freenukum-somersaults.gif
rename to content/news/017/freenukum-somersaults.gif
diff --git a/content/posts/newsletter-017/freenukum.png b/content/news/017/freenukum.png
similarity index 100%
rename from content/posts/newsletter-017/freenukum.png
rename to content/news/017/freenukum.png
diff --git a/content/posts/newsletter-017/harvest_hero_snippet.gif b/content/news/017/harvest_hero_snippet.gif
similarity index 100%
rename from content/posts/newsletter-017/harvest_hero_snippet.gif
rename to content/news/017/harvest_hero_snippet.gif
diff --git a/content/posts/newsletter-017/how-to-revive-a-dead-rust-project.jpg b/content/news/017/how-to-revive-a-dead-rust-project.jpg
similarity index 100%
rename from content/posts/newsletter-017/how-to-revive-a-dead-rust-project.jpg
rename to content/news/017/how-to-revive-a-dead-rust-project.jpg
diff --git a/content/posts/newsletter-017/index.md b/content/news/017/index.md
similarity index 92%
rename from content/posts/newsletter-017/index.md
rename to content/news/017/index.md
index 67cc80b6a..7d9240fe3 100644
--- a/content/posts/newsletter-017/index.md
+++ b/content/news/017/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #17 - December 2020"
 date = 2021-01-14
 transparent = true
+aliases = ["posts/newsletter-017"]
 +++
 
 Welcome to the 17th issue of the Rust GameDev Workgroup's
@@ -28,12 +29,12 @@ Feel free to send PRs about your own projects!
 
 Table of contents:
 
+- [Rust GameDev Podcast #4](#rust-gamedev-podcast-4)
 - [Rust Gamedev Meetup](#rust-gamedev-meetup)
-- [Rust GameDev Podcast](#rust-gamedev-podcast)
 - [Game Updates](#game-updates)
 - [Learning Material Updates](#learning-material-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -104,8 +105,10 @@ _Discussions:
 
 ### [Way of Rhea has a Discord!][wor-discord]
 
-![New Way of Rhea assets](way-of-rhea.gif)
-_Updated visuals for interactive items._
+{{ image_figure(
+    alt="New Way of Rhea assets"
+    src="way-of-rhea.gif"
+    caption="Updated visuals for interactive items.") }}
 
 [Way of Rhea][wor-website] is a puzzle platformer that takes place in a world
 where you can only interact with objects that match your current color. The game
@@ -126,8 +129,10 @@ This month's updates:
 
 ### [Veloren][veloren]
 
-![Landscape](veloren1.jpg)
-_A village over the river_
+{{ image_figure(
+    alt="Landscape"
+    src="veloren1.jpg"
+    caption="A village over the river") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -167,8 +172,11 @@ December's full weekly devlogs: "This Week In Veloren...":
 [#99](https://veloren.net/devblog-99),
 [#100](https://veloren.net/devblog-100).
 
-[![Youtube preview img](veloren-glider.gif)][veloren-0.8-gameplay]
-_[New glider physics][veloren-glider] video_
+{{ image_figure(
+    alt="Youtube preview img"
+    src="veloren-glider.gif"
+    caption="[New glider physics](https://veloren.net/devblog-100#glider-physics-by-slipped) video",
+    link="https://youtube.com/watch?v=8WWVe1cIu7I") }}
 
 In January, work will continue on 0.9. Work will be done on economic simulation,
 world simulation, and combat systems. New developers are joining the project
@@ -297,8 +305,11 @@ out the dev logs for more info.
 
 ### [A Zombie Shooter Game][zombie-shooter]
 
-[![Demo](a-zombie-shooter-game-demo.gif)][zombie-shooter-youtube]
-_Watch a [video demo on YouTube][zombie-shooter-youtube]_
+{{ image_figure(
+    alt="Demo"
+    src="a-zombie-shooter-game-demo.gif"
+    caption="Watch a [video demo on YouTube](https://youtu.be/9o6KjlwKyGo)",
+    link="https://youtu.be/9o6KjlwKyGo") }}
 
 [A Zombie Shooter Game][zombie-shooter] is a work-in-progress multiplayer
 top-down shooter. Actually, it's a Rust port of an old Java game with
@@ -325,8 +336,10 @@ You can discuss the project at [its GitHub forum][zombie-shooter-forum].
 is being developed by [@chinedufn] for the web and desktop using a custom
 Rust game engine.
 
-![Moving while attacking](akigi.gif)
-_Moving while attacking. Don't look at the shoulders._
+{{ image_figure(
+    alt="Moving while attacking"
+    src="akigi.gif"
+    caption="Moving while attacking. Don't look at the shoulders.") }}
 
 December updates include:
 
@@ -349,8 +362,10 @@ Full December's devlogs:
 
 ### [Swoop][swoop-itch]
 
-![Doing donuts while being overtaken](swoop.gif)
-_Getting lapped by purple? - don't worry, it happens to everyone_
+{{ image_figure(
+    alt="Doing donuts while being overtaken"
+    src="swoop.gif"
+    caption="Getting lapped by purple? - don't worry, it happens to everyone") }}
 
 [Swoop][swoop-itch] by [@sdfgeoff] is a procedural racing web game
 written in Rust from scratch.
@@ -381,8 +396,10 @@ that is based on raymarching giant caves.
 
 ### Harvest Hero
 
-![Harvest Hero Gameplay](harvest_hero_snippet.gif)
-_Harvest crops and whack those pesky Groobles!_
+{{ image_figure(
+    alt="Harvest Hero Gameplay"
+    src="harvest_hero_snippet.gif"
+    caption="Harvest crops and whack those pesky Groobles!") }}
 
 Harvest Hero by [@bombfuse_dev] is an arcade/roguelike game.
 This month in development:
@@ -414,8 +431,10 @@ Some of [this month's changes][fn-changelog]:
 - The project's wiki now has a ["FreeNukum Screenshots" page][fn-screenshots].
 - A [Matrix chat room][fn-matrix-chat] is now available.
 
-![FreeNukum showing the hero making somersaults](freenukum-somersaults.gif)
-_Somersaults!_
+{{ image_figure(
+    alt="FreeNukum showing the hero making somersaults"
+    src="freenukum-somersaults.gif"
+    caption="Somersaults!") }}
 
 [fn]: https://gitlab.com/silwol/freenukum
 [fn-reddit-announce]: https://reddit.com/r/rust_gamedev/comments/k9dw50/freenukum
@@ -462,8 +481,10 @@ Sound was recently added to the demo using the quad-snd library.
 
 ### [Shotcaller]
 
-![Shotcaller dual frontend](shotcaller-2guis.png)
-_ASCII and sprites versions of Shotcaller interface._
+{{ image_figure(
+    alt="Shotcaller dual frontend"
+    src="shotcaller-2guis.png"
+    caption="ASCII and sprites versions of Shotcaller interface.") }}
 
 [Shotcaller] is a moddable RTS/MOBA game made with bracket-lib.
 
@@ -483,8 +504,10 @@ Contributions welcome: [try add a new Leader][shotcaller-issue-leader].
 
 ### [Cheese]
 
-![A screenshot of some mice shooting other mice](cheese-screenshot.png)
-_Pew pew!_
+{{ image_figure(
+    alt="A screenshot of some mice shooting other mice"
+    src="cheese-screenshot.png"
+    caption="Pew pew!") }}
 
 [Cheese] is a small Real Time Strategy game created for the
 [GitHub Game Off 2020]. It was written using a 'low-level gamedev stack'
@@ -518,7 +541,7 @@ Check out the source code at [github.com/expenses/cheese].
 You as a player are cursed and must find 4 ingredients for the famous
 `Moonshot` disenchantment potion.
 
-It was initially created for the Github Game Off 2020 Jam to gain experience
+It was initially created for the GitHub Game Off 2020 Jam to gain experience
 with WASM and [macroquad]. This month a post jam version was released.
 It contains:
 
@@ -542,8 +565,11 @@ technical implementations:
 
 ### [How to Revive a Dead Rust Project][rustfest-talk]
 
-[![RustFest Sketchnote](how-to-revive-a-dead-rust-project.jpg)][rustfest-talk]
-_Drawing by [Carlo Gilmar][visual_partner]. Click to [watch the talk.][rustfest-talk]_
+{{ image_figure(
+    alt="RustFest Sketchnote"
+    src="how-to-revive-a-dead-rust-project.jpg"
+    caption="Drawing by [Carlo Gilmar](https://twitter.com/visual_partner). Click to [watch the talk.](https://www.youtube.com/watch?v=qoCryIy4bFE)",
+    link="https://www.youtube.com/watch?v=qoCryIy4bFE") }}
 
 At [RustFest Global 2020], [@micah_tigley] and [@carlosupina] talked about their
 experiences collaborating together to revive the [space_shooter_rs] project through
@@ -568,8 +594,11 @@ game. Some updates include:
 
 ### [Building Pikachu Volleyball][pikachu-video]
 
-[![YouTube Preview: Video thumbnail with a crab and text](pikachu0.png)][pikachu-video]
-_Click to [watch the video on YouTube][pikachu-video]_
+{{ image_figure(
+    alt="YouTube Preview: Video thumbnail with a crab and text"
+    src="pikachu0.png"
+    caption="Click to [watch the video on YouTube](https://youtube.com/watch?v=Z1sxCC0CDts)",
+    link="https://youtube.com/watch?v=Z1sxCC0CDts") }}
 
 [Building Pikachu Volleyball][pikachu-video] by [@danlogs] is the latest episode
 of a video series inspired by Shing Lyu's book [Practical Rust Projects][amazon-book].
@@ -595,8 +624,11 @@ or follow [@danologue on Twitter][@danologue].
 
 ### [Creative Coding in Rust: Re-creating Retro Screensaver][timclicks-session]
 
-[![A screenshot from the coding sesion](retro_screensaver.jpg)][timclicks-session]
-_You can [watch the recording here][timclicks-session]._
+{{ image_figure(
+    alt="A screenshot from the coding sesion"
+    src="retro_screensaver.jpg"
+    caption="You can [watch the recording here](https://youtube.com/watch?v=d9lsT4kJo44).",
+    link="https://youtube.com/watch?v=d9lsT4kJo44") }}
 
 [@timClicks] live streamed a coding session featuring
 [Nannou][timclicks-nannou], an open-source creative-coding framework,
@@ -612,8 +644,10 @@ _Discussions:
 
 ### [Drawing Bezier curves with SDFs][bezier_article]
 
-![Demo](beziers.gif)
-_The demo is available [here][bezier_demo]_
+{{ image_figure(
+    alt="Demo"
+    src="beziers.gif"
+    caption="The demo is available [here](https://pum-purum-pum-pum.github.io/bezier)") }}
 
 A short note by [@VladZhukov0] about drawing Bezier curves (strokes)
 with signed distance fields.
@@ -626,8 +660,11 @@ Continuation of a [previous note][hqlines] about drawing lines with SDF.
 
 ### [Nannou: Creative Coding with Rust][mactuitui-talk]
 
-[![A screenshot from the talk](nannou_creative_coding.jpg)][mactuitui-talk]
-_You can [watch the recording here][mactuitui-talk]._
+{{ image_figure(
+    alt="A screenshot from the talk"
+    src="nannou_creative_coding.jpg"
+    caption="You can [watch the recording here](https://www.youtube.com/watch?v=Ml6tpyTyXhM).",
+    link="https://www.youtube.com/watch?v=Ml6tpyTyXhM") }}
 
 [Alexis André][@mactuitui] gave a [talk][mactuitui-talk] at
 [GitHub Universe][mactuitui-github-universe] about working with Rust
@@ -803,8 +840,10 @@ _Discussions:
 
 ### [polyhedron-ops]
 
-![polyhedron render](polyhedron.jpg)
-_Some brutalist polyhedron; rendered with 3Delight and post processed in Darktable._
+{{ image_figure(
+    alt="polyhedron render"
+    src="polyhedron.jpg"
+    caption="Some brutalist polyhedron; rendered with 3Delight and post processed in Darktable.") }}
 
 [polyhedron-ops] implements the [Conway Polyhedron Operators][polyhedron-wiki]
 and their extensions by George W. Hart and others.
@@ -867,8 +906,10 @@ For more information, please refer to [the original post][spirq-reddit].
 
 ### [rust-gpu]
 
-![A collage of various shadertoy.com shaders built with rust-gpu.](rust-gpu-shaders.jpeg)
-_Various shaders from shadertoy.com ported to Rust and built with rust-gpu._
+{{ image_figure(
+    alt="A collage of various shadertoy.com shaders built with rust-gpu."
+    src="rust-gpu-shaders.jpeg"
+    caption="Various shaders from shadertoy.com ported to Rust and built with rust-gpu.") }}
 
 [rust-gpu] is a new codegen backend by Embark Studios for Rust, aimed at making
 Rust a first class language for writing GPU shaders! This past month was the
@@ -889,8 +930,10 @@ Some of the highlights include:
 
 ### [Egui]
 
-![Egui emojis](egui.gif)
-_Some of the supported emojis in the [online demo][demo]._
+{{ image_figure(
+    alt="Egui emojis"
+    src="egui.gif"
+    caption="Some of the supported emojis in the [online demo](https://emilk.github.io/egui).") }}
 
 [Egui] is an easy-to-use GUI in pure Rust.
 Egui can be integrated into a game engine, or used standalone with the help of [eframe].
@@ -931,8 +974,10 @@ a 0.6.0 release.
 
 ### [macroquad]
 
-![macroquad_profiling](macroquad-profiling.gif)
-_Macroquad-profiler footage._
+{{ image_figure(
+    alt="macroquad_profiling"
+    src="macroquad-profiling.gif"
+    caption="Macroquad-profiler footage.") }}
 
 [macroquad] is a cross-platform (Windows/Linux/macOS/Android/iOS/WASM)
 game framework built on top of [miniquad].
@@ -968,9 +1013,12 @@ This month's updates:
 
 ### [rg3d]
 
-[![rusty-editor screenshot](rusty-editor.jpg)][rg3d_twit]
-_A level made in [rusty-editor][rusty_editor] which is a native scene editor
-for the rg3d game engine._
+{{ image_figure(
+    alt="rusty-editor screenshot"
+    src="rusty-editor.jpg"
+    caption="A level made in [rusty-editor](https://github.com/mrDIMAS/rusty-editor) which is a native scene editor
+for the rg3d game engine.",
+    link="https://twitter.com/DmitryNStepanov/status/1336802725007396865") }}
 
 [rg3d] is a game engine that aims to be easy to use and provide large set
 of out-of-box features. Some of the recent updates:
@@ -1005,16 +1053,16 @@ or follow [Dmitry Stepanov on Twitter][rg3d_twitter].
 
 ![Current state of starframe graphics and physics](starframe.gif)
 
-[starframe] by [@moletrooper] is a work-in-progress game engine
+[starframe] by [@molentum] is a work-in-progress game engine
 for physics-y sidescrolling 2D games. This month, a new, more versatile
 constraint solver was used to add friction and basic joints. Collision
 detection accuracy and overall stability were also improved.
 
 _Discussions:
-[twitter](https://twitter.com/moletrooper/status/1338066680724008960)_
+[twitter](https://twitter.com/molentum_/status/1338066680724008960)_
 
-[starframe]: https://github.com/moletrooper/starframe
-[@moletrooper]: https://twitter.com/moletrooper
+[starframe]: https://github.com/m0lentum/starframe
+[@molentum]: https://twitter.com/molentum_
 
 ### [Dotrix]
 
@@ -1130,8 +1178,10 @@ and follow [@BevyEngine on Twitter][bevy-twitter].
 
 ### [rpt]: Rust Path Tracer
 
-![demo renders](rpt-collage.jpg)
-_Sample images rendered by path tracing._
+{{ image_figure(
+    alt="demo renders"
+    src="rpt-collage.jpg"
+    caption="Sample images rendered by path tracing.") }}
 
 [rpt] by [@ekzhang] and [@scanhex] is a physically based, CPU-only rendering
 engine written in Rust. It uses path tracing to generate realistic images of 3D
@@ -1208,7 +1258,7 @@ _Discussions:
 [serpinski-carpet]: http://playground.meteorlinker.com/?share=1054
 [graphics-playground-source]: https://gitlab.com/DixieDev/rust-graphics-playground
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-017/macroquad-profiling.gif b/content/news/017/macroquad-profiling.gif
similarity index 100%
rename from content/posts/newsletter-017/macroquad-profiling.gif
rename to content/news/017/macroquad-profiling.gif
diff --git a/content/posts/newsletter-017/meetup.png b/content/news/017/meetup.png
similarity index 100%
rename from content/posts/newsletter-017/meetup.png
rename to content/news/017/meetup.png
diff --git a/content/posts/newsletter-017/mun-logo.png b/content/news/017/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-017/mun-logo.png
rename to content/news/017/mun-logo.png
diff --git a/content/posts/newsletter-017/nannou_creative_coding.jpg b/content/news/017/nannou_creative_coding.jpg
similarity index 100%
rename from content/posts/newsletter-017/nannou_creative_coding.jpg
rename to content/news/017/nannou_creative_coding.jpg
diff --git a/content/posts/newsletter-017/openEtG.jpg b/content/news/017/openEtG.jpg
similarity index 100%
rename from content/posts/newsletter-017/openEtG.jpg
rename to content/news/017/openEtG.jpg
diff --git a/content/posts/newsletter-017/pikachu0.png b/content/news/017/pikachu0.png
similarity index 100%
rename from content/posts/newsletter-017/pikachu0.png
rename to content/news/017/pikachu0.png
diff --git a/content/posts/newsletter-017/podcast.jpeg b/content/news/017/podcast.jpeg
similarity index 100%
rename from content/posts/newsletter-017/podcast.jpeg
rename to content/news/017/podcast.jpeg
diff --git a/content/posts/newsletter-017/polyhedron.jpg b/content/news/017/polyhedron.jpg
similarity index 100%
rename from content/posts/newsletter-017/polyhedron.jpg
rename to content/news/017/polyhedron.jpg
diff --git a/content/posts/newsletter-017/retro_screensaver.jpg b/content/news/017/retro_screensaver.jpg
similarity index 100%
rename from content/posts/newsletter-017/retro_screensaver.jpg
rename to content/news/017/retro_screensaver.jpg
diff --git a/content/posts/newsletter-017/rpt-collage.jpg b/content/news/017/rpt-collage.jpg
similarity index 100%
rename from content/posts/newsletter-017/rpt-collage.jpg
rename to content/news/017/rpt-collage.jpg
diff --git a/content/posts/newsletter-017/rust-gpu-shaders.jpeg b/content/news/017/rust-gpu-shaders.jpeg
similarity index 100%
rename from content/posts/newsletter-017/rust-gpu-shaders.jpeg
rename to content/news/017/rust-gpu-shaders.jpeg
diff --git a/content/posts/newsletter-017/rust-graphics-playground.gif b/content/news/017/rust-graphics-playground.gif
similarity index 100%
rename from content/posts/newsletter-017/rust-graphics-playground.gif
rename to content/news/017/rust-graphics-playground.gif
diff --git a/content/posts/newsletter-017/rusty-editor.jpg b/content/news/017/rusty-editor.jpg
similarity index 100%
rename from content/posts/newsletter-017/rusty-editor.jpg
rename to content/news/017/rusty-editor.jpg
diff --git a/content/posts/newsletter-017/santa.png b/content/news/017/santa.png
similarity index 100%
rename from content/posts/newsletter-017/santa.png
rename to content/news/017/santa.png
diff --git a/content/posts/newsletter-017/shotcaller-2guis.png b/content/news/017/shotcaller-2guis.png
similarity index 100%
rename from content/posts/newsletter-017/shotcaller-2guis.png
rename to content/news/017/shotcaller-2guis.png
diff --git a/content/posts/newsletter-017/starframe.gif b/content/news/017/starframe.gif
similarity index 100%
rename from content/posts/newsletter-017/starframe.gif
rename to content/news/017/starframe.gif
diff --git a/content/posts/newsletter-017/swoop.gif b/content/news/017/swoop.gif
similarity index 100%
rename from content/posts/newsletter-017/swoop.gif
rename to content/news/017/swoop.gif
diff --git a/content/posts/newsletter-017/textyle.png b/content/news/017/textyle.png
similarity index 100%
rename from content/posts/newsletter-017/textyle.png
rename to content/news/017/textyle.png
diff --git a/content/posts/newsletter-017/veloren-glider.gif b/content/news/017/veloren-glider.gif
similarity index 100%
rename from content/posts/newsletter-017/veloren-glider.gif
rename to content/news/017/veloren-glider.gif
diff --git a/content/posts/newsletter-017/veloren1.jpg b/content/news/017/veloren1.jpg
similarity index 100%
rename from content/posts/newsletter-017/veloren1.jpg
rename to content/news/017/veloren1.jpg
diff --git a/content/posts/newsletter-017/vollmond-preview.png b/content/news/017/vollmond-preview.png
similarity index 100%
rename from content/posts/newsletter-017/vollmond-preview.png
rename to content/news/017/vollmond-preview.png
diff --git a/content/posts/newsletter-017/wasm_sprite_transform.svg b/content/news/017/wasm_sprite_transform.svg
similarity index 100%
rename from content/posts/newsletter-017/wasm_sprite_transform.svg
rename to content/news/017/wasm_sprite_transform.svg
diff --git a/content/posts/newsletter-017/way-of-rhea.gif b/content/news/017/way-of-rhea.gif
similarity index 100%
rename from content/posts/newsletter-017/way-of-rhea.gif
rename to content/news/017/way-of-rhea.gif
diff --git a/content/posts/newsletter-017/weegames.jpg b/content/news/017/weegames.jpg
similarity index 100%
rename from content/posts/newsletter-017/weegames.jpg
rename to content/news/017/weegames.jpg
diff --git a/content/posts/newsletter-018/3.png b/content/news/018/3.png
similarity index 100%
rename from content/posts/newsletter-018/3.png
rename to content/news/018/3.png
diff --git a/content/posts/newsletter-018/abstreet.gif b/content/news/018/abstreet.gif
similarity index 100%
rename from content/posts/newsletter-018/abstreet.gif
rename to content/news/018/abstreet.gif
diff --git a/content/posts/newsletter-018/antorum-2-1-2021.jpg b/content/news/018/antorum-2-1-2021.jpg
similarity index 100%
rename from content/posts/newsletter-018/antorum-2-1-2021.jpg
rename to content/news/018/antorum-2-1-2021.jpg
diff --git a/content/posts/newsletter-018/bevy_egui.png b/content/news/018/bevy_egui.png
similarity index 100%
rename from content/posts/newsletter-018/bevy_egui.png
rename to content/news/018/bevy_egui.png
diff --git a/content/posts/newsletter-018/bevy_ldtk.jpg b/content/news/018/bevy_ldtk.jpg
similarity index 100%
rename from content/posts/newsletter-018/bevy_ldtk.jpg
rename to content/news/018/bevy_ldtk.jpg
diff --git a/content/posts/newsletter-018/bounty-bros.jpg b/content/news/018/bounty-bros.jpg
similarity index 100%
rename from content/posts/newsletter-018/bounty-bros.jpg
rename to content/news/018/bounty-bros.jpg
diff --git a/content/posts/newsletter-018/chess.png b/content/news/018/chess.png
similarity index 100%
rename from content/posts/newsletter-018/chess.png
rename to content/news/018/chess.png
diff --git a/content/posts/newsletter-018/dcliah.png b/content/news/018/dcliah.png
similarity index 100%
rename from content/posts/newsletter-018/dcliah.png
rename to content/news/018/dcliah.png
diff --git a/content/posts/newsletter-018/dimforge.png b/content/news/018/dimforge.png
similarity index 100%
rename from content/posts/newsletter-018/dimforge.png
rename to content/news/018/dimforge.png
diff --git a/content/posts/newsletter-018/dotrix-in-january.png b/content/news/018/dotrix-in-january.png
similarity index 100%
rename from content/posts/newsletter-018/dotrix-in-january.png
rename to content/news/018/dotrix-in-january.png
diff --git a/content/posts/newsletter-018/dwarfworld_lights.gif b/content/news/018/dwarfworld_lights.gif
similarity index 100%
rename from content/posts/newsletter-018/dwarfworld_lights.gif
rename to content/news/018/dwarfworld_lights.gif
diff --git a/content/posts/newsletter-018/egui_0.8.0.gif b/content/news/018/egui_0.8.0.gif
similarity index 100%
rename from content/posts/newsletter-018/egui_0.8.0.gif
rename to content/news/018/egui_0.8.0.gif
diff --git a/content/posts/newsletter-018/fishgame.gif b/content/news/018/fishgame.gif
similarity index 100%
rename from content/posts/newsletter-018/fishgame.gif
rename to content/news/018/fishgame.gif
diff --git a/content/posts/newsletter-018/flesh.gif b/content/news/018/flesh.gif
similarity index 100%
rename from content/posts/newsletter-018/flesh.gif
rename to content/news/018/flesh.gif
diff --git a/content/news/018/gamedev-meetup.png b/content/news/018/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/018/gamedev-meetup.png differ
diff --git a/content/posts/newsletter-018/glisp-logo.png b/content/news/018/glisp-logo.png
similarity index 100%
rename from content/posts/newsletter-018/glisp-logo.png
rename to content/news/018/glisp-logo.png
diff --git a/content/posts/newsletter-018/hands-on-rust.jpg b/content/news/018/hands-on-rust.jpg
similarity index 100%
rename from content/posts/newsletter-018/hands-on-rust.jpg
rename to content/news/018/hands-on-rust.jpg
diff --git a/content/posts/newsletter-018/harvest_hero.png b/content/news/018/harvest_hero.png
similarity index 100%
rename from content/posts/newsletter-018/harvest_hero.png
rename to content/news/018/harvest_hero.png
diff --git a/content/posts/newsletter-018/imgui-rs.gif b/content/news/018/imgui-rs.gif
similarity index 100%
rename from content/posts/newsletter-018/imgui-rs.gif
rename to content/news/018/imgui-rs.gif
diff --git a/content/posts/newsletter-018/index.md b/content/news/018/index.md
similarity index 92%
rename from content/posts/newsletter-018/index.md
rename to content/news/018/index.md
index 1880988b7..bb8243516 100644
--- a/content/posts/newsletter-018/index.md
+++ b/content/news/018/index.md
@@ -2,6 +2,7 @@
 title = "This Month in Rust GameDev #18 - January 2021"
 date = 2021-02-06
 transparent = true
+aliases = ["posts/newsletter-018"]
 +++
 
 Welcome to the 18th issue of the Rust GameDev Workgroup's
@@ -34,7 +35,7 @@ Table of contents:
 - [Learning Material Updates](#learning-material-updates)
 - [Engine Updates](#engine-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -99,7 +100,7 @@ also be [streamed on Twitch][rust-gamedev-twitch].
 
 [gamedev-meetup-video]: https://www.youtube.com/watch?v=2L3w3UiEzAk
 [rust-gamedev-discord]: https://discord.gg/yNtPTb2
-[rust-gamedev-twitch]: https://www.twitch.tv/rustgamedevmeetup
+[rust-gamedev-twitch]: https://www.twitch.tv/rustgamedev
 
 ## Game Updates
 
@@ -125,8 +126,10 @@ The project is still at a “very” early stage of development (Dec. 2020).
 
 ### [Fishgame][fishgame]
 
-![Fishgame gameplay](fishgame.gif)
-_Fish game gameplay footage._
+{{ image_figure(
+    alt="Fishgame gameplay"
+    src="fishgame.gif"
+    caption="Fish game gameplay footage.") }}
 
 [Fishgame][fishgame] is an online multiplayer game, created in a
 collaboration between [Nakama][nakama], an open-source scalable game
@@ -144,8 +147,11 @@ This month the game got a public, multiplayer HTML5 build. [Play it online!][fis
 
 ### [Station Iapetus]
 
-[![Station Iapetus Youtube](station-iapetus-youtube.JPG)][si-youtube]
-_Check [gameplay video][si-youtube] on YouTube_
+{{ image_figure(
+    alt="Station Iapetus Youtube"
+    src="station-iapetus-youtube.JPG"
+    caption="Check [gameplay video](https://www.youtube.com/watch?v=JCH2U5JOMlU) on YouTube",
+    link="https://www.youtube.com/watch?v=JCH2U5JOMlU") }}
 
 [Station Iapetus][Station Iapetus] by [@mrDIMAS]
 is a 3rd person shooter on the space prison Iapetus near the Saturn.
@@ -161,8 +167,10 @@ which will be released in Steam.
 
 ### [SeniorSKY]
 
-![SeniorSKY](3.png)
-_Over the mountains in Slovakia_
+{{ image_figure(
+    alt="SeniorSKY"
+    src="3.png"
+    caption="Over the mountains in Slovakia") }}
 
 [SeniorSKY]
 is a flight simulator which uses Vulkan API, developed by [@pmathia0].
@@ -189,8 +197,10 @@ flight dynamics is already in progress.
 
 ### [Oicana][oicana]
 
-![oicana game play](oicana.png)
-_Solving puzzles to build towers_
+{{ image_figure(
+    alt="oicana game play"
+    src="oicana.png"
+    caption="Solving puzzles to build towers") }}
 
 [Oicana][oicana] is a tower defense game with puzzle aspects submitted to Mini
 jam 71 [on itch][oicana-itch] by [M1nd0fRafa3l][rafael-itch] and
@@ -215,9 +225,11 @@ changed to use [Kira][kira-sound] via an
 
 ### [Bounty Bros.][bounty-bros]
 
-[![Bounty Bros. Video](bounty-bros.jpg)][bounty_bros_video]
-_First pass character controller video_
-
+{{ image_figure(
+    alt="Bounty Bros. Video"
+    src="bounty-bros.jpg"
+    caption="First pass character controller video",
+    link="https://katharostech.com/post/bounty-bros-prototype-game#video") }}
 [Bounty Bros.][bounty-bros] is a prototype dungeon crawler game
 in the spirit of "Legend of Zelda: Link to the Past".
 The game is being developed by [Katharos Technology] as a playground
@@ -237,8 +249,10 @@ primarily by simply writing YAML configuration files and integrating with
 
 ### Flesh
 
-![flesh preview](flesh.gif)
-_Inside flesh_
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="Inside flesh") }}
 
 Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation
 and implement using tetra. It still in the development stage but have
@@ -296,8 +310,10 @@ tuned for more exciting updates in the next monthly newsletter!
 
 ### [Antorum]
 
-![Some players hanging out next to the bank Vault in Belmart](antorum-2-1-2021.jpg)
-_Hanging out by the vault_
+{{ image_figure(
+    alt="Some players hanging out next to the bank Vault in Belmart"
+    src="antorum-2-1-2021.jpg"
+    caption="Hanging out by the vault") }}
 
 [Antorum] is a micro-multiplayer online role-playing game by [@dooskington].
 The game server is written in Rust, and the official client is being developed
@@ -380,8 +396,11 @@ Twitter if you have a flash of inspiration!
 
 ### [Theta Wave]
 
-[![Homing Missiles](theta_wave_homing_missiles.gif)][Theta Wave]
-_Homing missiles pursue the closest player entity_
+{{ image_figure(
+    alt="Homing Missiles"
+    src="theta_wave_homing_missiles.gif"
+    caption="Homing missiles pursue the closest player entity",
+    link="https://github.com/amethyst/theta-wave") }}
 
  A real name was finally chosen for space_shooter_rs! [Theta Wave] is a space
  shooter game by developers [@micah_tigley] and [@carlosupina]. It is one of
@@ -417,8 +436,10 @@ This month's major updates include:
 
 ### [Veloren][veloren]
 
-![Veloren Snow](veloren-snow.gif)
-_Let it snow!_
+{{ image_figure(
+    alt="Veloren Snow"
+    src="veloren-snow.gif"
+    caption="Let it snow!") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -443,8 +464,10 @@ January's full weekly devlogs: "This Week In Veloren...":
 
 ### [Shotcaller]
 
-![Custom art assets for Shotcaller](shotcaller-full.png)
-_An art mockup of some Shotcaller action._
+{{ image_figure(
+    alt="Custom art assets for Shotcaller"
+    src="shotcaller-full.png"
+    caption="An art mockup of some Shotcaller action.") }}
 
 [Shotcaller] ([Discord][shotcaller-Discord]) is a minimalistic MOBA
 that focuses strictly on macro-play with few actions-per-minute,
@@ -479,8 +502,11 @@ Recent updates include:
 
 ### [Zemeroth][zemeroth]
 
-[![Some generic gameplay demo](zemeroth.gif)][zemeroth-audio]
-_Click to [watch a footage with sound][zemeroth-audio] 🔊_
+{{ image_figure(
+    alt="Some generic gameplay demo"
+    src="zemeroth.gif"
+    caption="Click to [watch a footage with sound](https://twitter.com/ozkriff/status/1341052260885942272) 🔊",
+    link="https://twitter.com/ozkriff/status/1341052260885942272") }}
 
 [Zemeroth][zemeroth] by [@ozkriff] is a minimalistic 2D turn-based tactical game.
 Some of the recent updates:
@@ -545,8 +571,10 @@ Two extensive chapters were added this month:
 
 ### [Setting a Rust Executable's Icon in Windows][win-icon]
 
-![Windows taskbar with Way of Rhea icon on the right](win-icons-task-bar.png)
-_[Way of Rhea][wor-site]'s icon in the taskbar_
+{{ image_figure(
+    alt="Windows taskbar with Way of Rhea icon on the right"
+    src="win-icons-task-bar.png"
+    caption="[Way of Rhea](https://www.anthropicstudios.com/way-of-rhea)'s icon in the taskbar") }}
 
 [Anthropic Studios][anthropic] has [shared an article][win-icon] about
 manually using `rc.exe` and embedding the resulting `.res` into your app
@@ -629,9 +657,11 @@ already find on [YouTube][lowenware-youtube].
 
 ### [rg3d]
 
-![rusty-editor screenshot](rusty-editor.jpg)
-_A level made in [rusty-editor][rusty_editor] which is a native scene editor
-for the rg3d game engine._
+{{ image_figure(
+    alt="rusty-editor screenshot"
+    src="rusty-editor.jpg"
+    caption="A level made in [rusty-editor](https://github.com/mrDIMAS/rusty-editor) which is a native scene editor
+for the rg3d game engine.") }}
 
 [rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter])
 is a game engine that aims to be easy to use and provide large set
@@ -749,8 +779,10 @@ updates.
 
 ### [bevy_ldtk]
 
-![LDtk Map Running in Bevy](./bevy_ldtk.jpg)
-_Tileset from ["Cavernas"] by Adam Saltsman_
+{{ image_figure(
+    alt="LDtk Map Running in Bevy"
+    src="bevy_ldtk.jpg"
+    caption='Tileset from ["Cavernas"](https://adamatomic.itch.io/cavernas) by Adam Saltsman') }}
 
 [bevy_ldtk] is a Bevy plugin for loading [LDtk] tilemaps.
 
@@ -820,8 +852,10 @@ and gfx-rs community is inviting Rust game/graphics developers to evaluate if
 
 ### [imgui-rs]
 
-![imgui drag drop example](imgui-rs.gif)
-_Drag and Drop and the new Drawing Api at Work in 0.7.0_
+{{ image_figure(
+    alt="imgui drag drop example"
+    src="imgui-rs.gif"
+    caption="Drag and Drop and the new Drawing Api at Work in 0.7.0") }}
 
 [imgui-rs] is the Rust bindings for the ubiquitous immediate mode GUI library,
 Dear ImGui.
@@ -835,8 +869,10 @@ macro.
 
 ### [egui]
 
-![egui widget gallery](egui_0.8.0.gif)
-_Some of the supported widgets in the new grid layout._
+{{ image_figure(
+    alt="egui widget gallery"
+    src="egui_0.8.0.gif"
+    caption="Some of the supported widgets in the new grid layout.") }}
 
 [egui] is a simple, fast, and highly portable immediate mode GUI library.
 
@@ -864,8 +900,10 @@ Try out the [online demo](https://mvlabat.github.io/bevy_egui_web_showcase/index
 
 ### [chess-engine]
 
-![cli + web version](chess.png)
-_Console and web clients for the chess-engine_
+{{ image_figure(
+    alt="cli + web version"
+    src="chess.png"
+    caption="Console and web clients for the chess-engine") }}
 
 [chess-engine] by [@adam-mcdaniel] is a pure Rust, no-std, dependency-free
 chess engine built to run anywhere.
@@ -891,8 +929,10 @@ _Discussions:
 
 ### [dcli]
 
-![plaintext tables](dcliah.png)
-_Example of dcliah output_
+{{ image_figure(
+    alt="plaintext tables"
+    src="dcliah.png"
+    caption="Example of dcliah output") }}
 
 [dcli] by [Mike Chambers][@mikechambers] is a library and a collection
 of utilities&apps that provide a command line interface (CLI) for viewing
@@ -926,7 +966,7 @@ by [@tgjones] now allows you to try out writing shaders in Rust
 [shader-playground-src]: https://github.com/tgjones/shader-playground
 [rust-gpu]: https://github.com/EmbarkStudios/rust-gpu
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-018/mun-logo.png b/content/news/018/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-018/mun-logo.png
rename to content/news/018/mun-logo.png
diff --git a/content/posts/newsletter-018/oicana.png b/content/news/018/oicana.png
similarity index 100%
rename from content/posts/newsletter-018/oicana.png
rename to content/news/018/oicana.png
diff --git a/content/posts/newsletter-018/paddlers_v0.2.jpeg b/content/news/018/paddlers_v0.2.jpeg
similarity index 100%
rename from content/posts/newsletter-018/paddlers_v0.2.jpeg
rename to content/news/018/paddlers_v0.2.jpeg
diff --git a/content/posts/newsletter-018/podcast.jpeg b/content/news/018/podcast.jpeg
similarity index 100%
rename from content/posts/newsletter-018/podcast.jpeg
rename to content/news/018/podcast.jpeg
diff --git a/content/posts/newsletter-018/rusty-editor.jpg b/content/news/018/rusty-editor.jpg
similarity index 100%
rename from content/posts/newsletter-018/rusty-editor.jpg
rename to content/news/018/rusty-editor.jpg
diff --git a/content/posts/newsletter-018/shaderplay.jpeg b/content/news/018/shaderplay.jpeg
similarity index 100%
rename from content/posts/newsletter-018/shaderplay.jpeg
rename to content/news/018/shaderplay.jpeg
diff --git a/content/posts/newsletter-018/shotcaller-full.png b/content/news/018/shotcaller-full.png
similarity index 100%
rename from content/posts/newsletter-018/shotcaller-full.png
rename to content/news/018/shotcaller-full.png
diff --git a/content/posts/newsletter-018/station-iapetus-youtube.JPG b/content/news/018/station-iapetus-youtube.JPG
similarity index 100%
rename from content/posts/newsletter-018/station-iapetus-youtube.JPG
rename to content/news/018/station-iapetus-youtube.JPG
diff --git a/content/posts/newsletter-018/stellary_2_banner.jpg b/content/news/018/stellary_2_banner.jpg
similarity index 100%
rename from content/posts/newsletter-018/stellary_2_banner.jpg
rename to content/news/018/stellary_2_banner.jpg
diff --git a/content/posts/newsletter-018/teki.gif b/content/news/018/teki.gif
similarity index 100%
rename from content/posts/newsletter-018/teki.gif
rename to content/news/018/teki.gif
diff --git a/content/posts/newsletter-018/theta_wave_homing_missiles.gif b/content/news/018/theta_wave_homing_missiles.gif
similarity index 100%
rename from content/posts/newsletter-018/theta_wave_homing_missiles.gif
rename to content/news/018/theta_wave_homing_missiles.gif
diff --git a/content/posts/newsletter-018/tic-tac-tide.png b/content/news/018/tic-tac-tide.png
similarity index 100%
rename from content/posts/newsletter-018/tic-tac-tide.png
rename to content/news/018/tic-tac-tide.png
diff --git a/content/posts/newsletter-018/veloren-snow.gif b/content/news/018/veloren-snow.gif
similarity index 100%
rename from content/posts/newsletter-018/veloren-snow.gif
rename to content/news/018/veloren-snow.gif
diff --git a/content/posts/newsletter-018/wgpu-spaceship.jpg b/content/news/018/wgpu-spaceship.jpg
similarity index 100%
rename from content/posts/newsletter-018/wgpu-spaceship.jpg
rename to content/news/018/wgpu-spaceship.jpg
diff --git a/content/posts/newsletter-018/win-icons-task-bar.png b/content/news/018/win-icons-task-bar.png
similarity index 100%
rename from content/posts/newsletter-018/win-icons-task-bar.png
rename to content/news/018/win-icons-task-bar.png
diff --git a/content/posts/newsletter-018/wor.jpg b/content/news/018/wor.jpg
similarity index 100%
rename from content/posts/newsletter-018/wor.jpg
rename to content/news/018/wor.jpg
diff --git a/content/posts/newsletter-018/zemeroth.gif b/content/news/018/zemeroth.gif
similarity index 100%
rename from content/posts/newsletter-018/zemeroth.gif
rename to content/news/018/zemeroth.gif
diff --git a/content/posts/newsletter-019/abstreet.png b/content/news/019/abstreet.png
similarity index 100%
rename from content/posts/newsletter-019/abstreet.png
rename to content/news/019/abstreet.png
diff --git a/content/posts/newsletter-019/antorum-2-21-2021.jpg b/content/news/019/antorum-2-21-2021.jpg
similarity index 100%
rename from content/posts/newsletter-019/antorum-2-21-2021.jpg
rename to content/news/019/antorum-2-21-2021.jpg
diff --git a/content/posts/newsletter-019/bevy-rhythm-game.gif b/content/news/019/bevy-rhythm-game.gif
similarity index 100%
rename from content/posts/newsletter-019/bevy-rhythm-game.gif
rename to content/news/019/bevy-rhythm-game.gif
diff --git a/content/posts/newsletter-019/dotrix-light-demo.png b/content/news/019/dotrix-light-demo.png
similarity index 100%
rename from content/posts/newsletter-019/dotrix-light-demo.png
rename to content/news/019/dotrix-light-demo.png
diff --git a/content/posts/newsletter-019/egui-plot.gif b/content/news/019/egui-plot.gif
similarity index 100%
rename from content/posts/newsletter-019/egui-plot.gif
rename to content/news/019/egui-plot.gif
diff --git a/content/posts/newsletter-019/fishgame.gif b/content/news/019/fishgame.gif
similarity index 100%
rename from content/posts/newsletter-019/fishgame.gif
rename to content/news/019/fishgame.gif
diff --git a/content/posts/newsletter-019/flesh.gif b/content/news/019/flesh.gif
similarity index 100%
rename from content/posts/newsletter-019/flesh.gif
rename to content/news/019/flesh.gif
diff --git a/content/news/019/gamedev-meetup.png b/content/news/019/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/019/gamedev-meetup.png differ
diff --git a/content/posts/newsletter-019/godot-vs-rapier.gif b/content/news/019/godot-vs-rapier.gif
similarity index 100%
rename from content/posts/newsletter-019/godot-vs-rapier.gif
rename to content/news/019/godot-vs-rapier.gif
diff --git a/content/posts/newsletter-019/graphite.png b/content/news/019/graphite.png
similarity index 100%
rename from content/posts/newsletter-019/graphite.png
rename to content/news/019/graphite.png
diff --git a/content/posts/newsletter-019/harvest_hero.gif b/content/news/019/harvest_hero.gif
similarity index 100%
rename from content/posts/newsletter-019/harvest_hero.gif
rename to content/news/019/harvest_hero.gif
diff --git a/content/posts/newsletter-019/index.md b/content/news/019/index.md
similarity index 92%
rename from content/posts/newsletter-019/index.md
rename to content/news/019/index.md
index a684f47c8..687358873 100644
--- a/content/posts/newsletter-019/index.md
+++ b/content/news/019/index.md
@@ -2,7 +2,7 @@
 title = "This Month in Rust GameDev #19 - February 2021"
 date = 2021-03-08
 transparent = true
-draft = false
+aliases = ["posts/newsletter-019"]
 +++
 
 Welcome to the 19th issue of the Rust GameDev Workgroup's
@@ -33,7 +33,7 @@ Table of contents:
 - [Learning Material Updates](#learning-material-updates)
 - [Engine Updates](#engine-updates)
 - [Library & Tooling Updates](#library-tooling-updates)
-- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
 - [Requests for Contribution](#requests-for-contribution)
 
 <!--
@@ -76,14 +76,16 @@ working on, fill out [this form][gamedev-meetup-form].
 [gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
 [gamedev-meetup-video]: https://www.youtube.com/watch?v=Ea4Wt_FgEEw
 [rust-gamedev-discord]: https://discord.gg/yNtPTb2
-[rust-gamedev-twitch]: https://www.twitch.tv/rustgamedevmeetup
+[rust-gamedev-twitch]: https://www.twitch.tv/rustgamedev
 
 ## Game Updates
 
 ### Flesh
 
-![flesh preview](flesh.gif)
-_Title screen + gameplay_
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="Title screen + gameplay") }}
 
 Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
 organic/fleshy theme. It is implemented using [tetra]. This month's updates
@@ -98,8 +100,10 @@ include:
 
 ### [Fishgame][fishgame]
 
-![Fishgame gui](fishgame.gif)
-_Fish game UI._
+{{ image_figure(
+    alt="Fishgame gui"
+    src="fishgame.gif"
+    caption="Fish game UI.") }}
 
 [Fishgame][fishgame] [(web build)][fishgame-itch] is an online multiplayer game,
 created in a collaboration between [Nakama][nakama], an open-source scalable
@@ -202,8 +206,11 @@ on the developer's private website.
 
 ### Stellary 2
 
-[![Stellary 2 Anti-Missile Laser](stellary2-anti-missile-laser.gif)][stellary2-aml-tweet]
-_▶️ Click to [watch the full video][stellary2-aml-tweet]_
+{{ image_figure(
+    alt="Stellary 2 Anti-Missile Laser"
+    src="stellary2-anti-missile-laser.gif"
+    caption="▶️ Click to [watch the full video](https://twitter.com/CoffeJunkStudio/status/1360637714660548618)",
+    link="https://twitter.com/CoffeJunkStudio/status/1360637714660548618") }}
 
 Stellary 2 by [@CoffeJunkStudio][coffe-junk-studio] is a 3D real-time space
 shooter in which the player has to prevail against enemy space ships.
@@ -223,8 +230,11 @@ The latest updates include:
 
 ### [Theta Wave]
 
-[![Homing Missiles](theta_wave.gif)][Theta Wave]
-_Homing missiles periodically spawn from missile launcher enemies_
+{{ image_figure(
+    alt="Homing Missiles"
+    src="theta_wave.gif"
+    caption="Homing missiles periodically spawn from missile launcher enemies",
+    link="https://github.com/amethyst/theta-wave") }}
 
 [Theta Wave] is a space shooter game by developers [@micah_tigley] and
 [@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In
@@ -243,8 +253,10 @@ Notable changes:
 
 ### [SeniorSKY]
 
-![SeniorSKY](senior_sky.png)
-_Rising sun_
+{{ image_figure(
+    alt="SeniorSKY"
+    src="senior_sky.png"
+    caption="Rising sun") }}
 
 [SeniorSKY] is a flight simulator that uses the Vulkan API, developed by
 [@pmathia0]. As an aerospace engineering student, Peter has always been
@@ -293,8 +305,11 @@ This month's major updates include:
 
 ### [Station Iapetus]
 
-[![Station Iapetus Youtube](station-iapetus-youtube.JPG)][si-youtube]
-_Check [gameplay video][si-youtube] on YouTube_
+{{ image_figure(
+    alt="Station Iapetus Youtube"
+    src="station-iapetus-youtube.JPG"
+    caption="Check [gameplay video](https://www.youtube.com/watch?v=cagT0GbiLxY) on YouTube",
+    link="https://www.youtube.com/watch?v=cagT0GbiLxY") }}
 
 [Station Iapetus][Station Iapetus] by [@mrDIMAS] is a 3rd person shooter on the
 space prison Iapetus near the Saturn.
@@ -316,8 +331,10 @@ space prison Iapetus near the Saturn.
 
 ### [Veloren][veloren]
 
-![Lush forest](veloren.jpg)
-_A lush forest to explore_
+{{ image_figure(
+    alt="Lush forest"
+    src="veloren.jpg"
+    caption="A lush forest to explore") }}
 
 [Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
 Fortress and Cube World.
@@ -333,7 +350,7 @@ A rework of attacks was done to allow their effects to be more dynamic. Lots of
 work has been done on the art team, with new weapon models, new mobs like fish.
 Some quality of life improvements were added, like humanoids automatically
 deploying gliders while falling to avoid fall damage. CI changes were made to
-finally have the Github mirror update periodically without error from LFS
+finally have the GitHub mirror update periodically without error from LFS
 storage. In March, Veloren will release 0.9.
 
 February's full weekly devlogs: "This Week In Veloren...":
@@ -362,8 +379,10 @@ Those interested in participating in the alpha test should fill out this
 
 ### [Antorum Online]
 
-![A player standing in front of a giant crab](antorum-2-21-2021.jpg)
-_Challenging Kroob_
+{{ image_figure(
+    alt="A player standing in front of a giant crab"
+    src="antorum-2-21-2021.jpg"
+    caption="Challenging Kroob") }}
 
 [Antorum Online] is a micro-multiplayer online role-playing game by
 [@dooskington]. The game server is written in Rust, and the official client is
@@ -382,8 +401,10 @@ world. They can also break down old or unwanted gear to recycle it.
 
 ### [Fullscreen Exclusive Is A Lie (...sort of)][fs-exclusive]
 
-![Way of Rhea's video settings](wor-video-settings.jpg)
-_[Way of Rhea][wor-site]'s video settings_
+{{ image_figure(
+    alt="Way of Rhea's video settings"
+    src="wor-video-settings.jpg"
+    caption="[Way of Rhea](https://store.steampowered.com/app/1110620/Way_of_Rhea/)'s video settings") }}
 
 [Anthropic Studios][anthropic] has [shared an article][fs-exclusive] walking
 through what they learned from implementing fullscreen exclusivity in their Rust
@@ -399,8 +420,10 @@ _Discussions:
 
 ### [Rhythm game in Rust using Bevy]
 
-![Rhythm game demo](bevy-rhythm-game.gif)
-_Rhythm game demo_
+{{ image_figure(
+    alt="Rhythm game demo"
+    src="bevy-rhythm-game.gif"
+    caption="Rhythm game demo") }}
 
 [Rhythm game in Rust using Bevy] is an introductory tutorial for Bevy made by
 [@guimcaballero]. It guides through how to use Bevy to develop a Rhythm game,
@@ -429,8 +452,10 @@ _Discussions:
 
 ### [macroquad]
 
-![macroquad_gui](macroquad_skins.gif)
-_Macroquad-UI runtime GUI skins configuration._
+{{ image_figure(
+    alt="macroquad_gui"
+    src="macroquad_skins.gif"
+    caption="Macroquad-UI runtime GUI skins configuration.") }}
 
 [macroquad] is a cross-platform (Windows/Linux/macOS/Android/iOS/WASM) game
 framework built on top of [miniquad].  
@@ -456,8 +481,9 @@ Minor updates:
 
 ### [Tetra]
 
-![Tetra's demo game](./tetra.png)
-_Tetra's demo game_
+{{ image_figure(
+    alt="Tetra's demo game"
+    src="tetra.png") }}
 
 [Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
 month, version 0.6 was released, with some big changes and features:
@@ -476,8 +502,11 @@ twitter thread][tetra-twitter] about the release.
 
 ### [rg3d]
 
-[![rg3d Youtube](rg3d-youtube.JPG)][rg3d-youtube]
-_Check [navmesh agent navigation][rg3d-youtube] on YouTube_
+{{ image_figure(
+    alt="rg3d Youtube"
+    src="rg3d-youtube.JPG"
+    caption="Check [navmesh agent navigation](https://www.youtube.com/watch?v=tqFdQ5OPB1I) on YouTube",
+    link="https://www.youtube.com/watch?v=tqFdQ5OPB1I") }}
 
 [rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
 aims to be easy to use and provide a large set of out-of-box features. Some of
@@ -504,8 +533,10 @@ the recent updates:
 
 ### [Dotrix]
 
-![Dotrix Light Demo](dotrix-light-demo.png)
-_Demo application demonstrating light rendering_
+{{ image_figure(
+    alt="Dotrix Light Demo"
+    src="dotrix-light-demo.png"
+    caption="Demo application demonstrating light rendering") }}
 
 [Dotrix] ([YouTube][lowenware_youtube], [Discord][lowenware_discord]) by
 [@lowenware] is an ECS based 3D game engine with renderer built around the
@@ -549,7 +580,7 @@ provides advanced features like streaming live asset updates to remote devices.
 
 More information about rafx:
 
-- [Github][rafx-github]
+- [GitHub][rafx-github]
 - [Documentation][rafx-documentation]
 - [Why Rafx?][why-rafx] (includes similarities/differences with other rust and
   non-rust alternatives)
@@ -602,8 +633,10 @@ include:
 
 ### [Graphite][graphite-repo]
 
-![Graphite GUI](graphite.png)
-_Progress on the GUI_
+{{ image_figure(
+    alt="Graphite GUI"
+    src="graphite.png"
+    caption="Progress on the GUI") }}
 
 [Graphite][graphite-repo] ([GitHub][graphite-repo], [Discord][graphite-discord],
 [Twitter](https://twitter.com/GraphiteEditor)) is an in-progress vector and
@@ -787,7 +820,7 @@ It consists of two crates:
 [wasm_plugin_host]: https://lib.rs/crates/wasm_plugin_host
 [wasm_plugin_guest]: https://lib.rs/crates/wasm_plugin_guest
 
-## Popular Workgroup Issues in Github
+## Popular Workgroup Issues in GitHub
 
 <!-- Up to 10 links to interesting issues -->
 
diff --git a/content/posts/newsletter-019/macroquad_skins.gif b/content/news/019/macroquad_skins.gif
similarity index 100%
rename from content/posts/newsletter-019/macroquad_skins.gif
rename to content/news/019/macroquad_skins.gif
diff --git a/content/posts/newsletter-019/mun-logo.png b/content/news/019/mun-logo.png
similarity index 100%
rename from content/posts/newsletter-019/mun-logo.png
rename to content/news/019/mun-logo.png
diff --git a/content/posts/newsletter-019/paddlers_0.2.1.jpg b/content/news/019/paddlers_0.2.1.jpg
similarity index 100%
rename from content/posts/newsletter-019/paddlers_0.2.1.jpg
rename to content/news/019/paddlers_0.2.1.jpg
diff --git a/content/posts/newsletter-019/rafx-screenshot.png b/content/news/019/rafx-screenshot.png
similarity index 100%
rename from content/posts/newsletter-019/rafx-screenshot.png
rename to content/news/019/rafx-screenshot.png
diff --git a/content/posts/newsletter-019/rg3d-youtube.JPG b/content/news/019/rg3d-youtube.JPG
similarity index 100%
rename from content/posts/newsletter-019/rg3d-youtube.JPG
rename to content/news/019/rg3d-youtube.JPG
diff --git a/content/posts/newsletter-019/senior_sky.png b/content/news/019/senior_sky.png
similarity index 100%
rename from content/posts/newsletter-019/senior_sky.png
rename to content/news/019/senior_sky.png
diff --git a/content/posts/newsletter-019/station-iapetus-youtube.JPG b/content/news/019/station-iapetus-youtube.JPG
similarity index 100%
rename from content/posts/newsletter-019/station-iapetus-youtube.JPG
rename to content/news/019/station-iapetus-youtube.JPG
diff --git a/content/posts/newsletter-019/stellary2-anti-missile-laser.gif b/content/news/019/stellary2-anti-missile-laser.gif
similarity index 100%
rename from content/posts/newsletter-019/stellary2-anti-missile-laser.gif
rename to content/news/019/stellary2-anti-missile-laser.gif
diff --git a/content/posts/newsletter-019/teki.gif b/content/news/019/teki.gif
similarity index 100%
rename from content/posts/newsletter-019/teki.gif
rename to content/news/019/teki.gif
diff --git a/content/posts/newsletter-019/tetra.png b/content/news/019/tetra.png
similarity index 100%
rename from content/posts/newsletter-019/tetra.png
rename to content/news/019/tetra.png
diff --git a/content/posts/newsletter-019/theta_wave.gif b/content/news/019/theta_wave.gif
similarity index 100%
rename from content/posts/newsletter-019/theta_wave.gif
rename to content/news/019/theta_wave.gif
diff --git a/content/posts/newsletter-019/veloren.jpg b/content/news/019/veloren.jpg
similarity index 100%
rename from content/posts/newsletter-019/veloren.jpg
rename to content/news/019/veloren.jpg
diff --git a/content/posts/newsletter-019/wor-capsule.png b/content/news/019/wor-capsule.png
similarity index 100%
rename from content/posts/newsletter-019/wor-capsule.png
rename to content/news/019/wor-capsule.png
diff --git a/content/posts/newsletter-019/wor-video-settings.jpg b/content/news/019/wor-video-settings.jpg
similarity index 100%
rename from content/posts/newsletter-019/wor-video-settings.jpg
rename to content/news/019/wor-video-settings.jpg
diff --git a/content/posts/newsletter-019/yawc_n19.png b/content/news/019/yawc_n19.png
similarity index 100%
rename from content/posts/newsletter-019/yawc_n19.png
rename to content/news/019/yawc_n19.png
diff --git a/content/news/020/abstreet.jpg b/content/news/020/abstreet.jpg
new file mode 100644
index 000000000..0b879a32d
Binary files /dev/null and b/content/news/020/abstreet.jpg differ
diff --git a/content/news/020/aladin_lite_mars_RdBu_cm.gif b/content/news/020/aladin_lite_mars_RdBu_cm.gif
new file mode 100644
index 000000000..fe9a89e2b
Binary files /dev/null and b/content/news/020/aladin_lite_mars_RdBu_cm.gif differ
diff --git a/content/news/020/bevy_pbr.png b/content/news/020/bevy_pbr.png
new file mode 100644
index 000000000..e1f175ede
Binary files /dev/null and b/content/news/020/bevy_pbr.png differ
diff --git a/content/news/020/bevy_retro.gif b/content/news/020/bevy_retro.gif
new file mode 100644
index 000000000..ef9cedcc1
Binary files /dev/null and b/content/news/020/bevy_retro.gif differ
diff --git a/content/news/020/bitmapflow.gif b/content/news/020/bitmapflow.gif
new file mode 100644
index 000000000..0523b5fa4
Binary files /dev/null and b/content/news/020/bitmapflow.gif differ
diff --git a/content/news/020/bounty_bros.png b/content/news/020/bounty_bros.png
new file mode 100644
index 000000000..41fcb79d4
Binary files /dev/null and b/content/news/020/bounty_bros.png differ
diff --git a/content/news/020/building-blocks-lod-terrain.jpg b/content/news/020/building-blocks-lod-terrain.jpg
new file mode 100644
index 000000000..cb762cd08
Binary files /dev/null and b/content/news/020/building-blocks-lod-terrain.jpg differ
diff --git a/content/news/020/disguiser.png b/content/news/020/disguiser.png
new file mode 100644
index 000000000..42d8bae4e
Binary files /dev/null and b/content/news/020/disguiser.png differ
diff --git a/content/news/020/egregoria.jpg b/content/news/020/egregoria.jpg
new file mode 100644
index 000000000..827605572
Binary files /dev/null and b/content/news/020/egregoria.jpg differ
diff --git a/content/news/020/egui-macroquad.png b/content/news/020/egui-macroquad.png
new file mode 100644
index 000000000..18430f55a
Binary files /dev/null and b/content/news/020/egui-macroquad.png differ
diff --git a/content/news/020/em_desktop_icon.png b/content/news/020/em_desktop_icon.png
new file mode 100644
index 000000000..8444d8184
Binary files /dev/null and b/content/news/020/em_desktop_icon.png differ
diff --git a/content/news/020/femtovg.png b/content/news/020/femtovg.png
new file mode 100644
index 000000000..d19abc407
Binary files /dev/null and b/content/news/020/femtovg.png differ
diff --git a/content/news/020/fishgame.gif b/content/news/020/fishgame.gif
new file mode 100644
index 000000000..a4ca18d8d
Binary files /dev/null and b/content/news/020/fishgame.gif differ
diff --git a/content/news/020/gamedev-meetup.png b/content/news/020/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/020/gamedev-meetup.png differ
diff --git a/content/news/020/gargoyles_quest.png b/content/news/020/gargoyles_quest.png
new file mode 100644
index 000000000..abf380520
Binary files /dev/null and b/content/news/020/gargoyles_quest.png differ
diff --git a/content/news/020/graphite-tool-system-progress.png b/content/news/020/graphite-tool-system-progress.png
new file mode 100644
index 000000000..e885b498e
Binary files /dev/null and b/content/news/020/graphite-tool-system-progress.png differ
diff --git a/content/news/020/grr-gltf.jpg b/content/news/020/grr-gltf.jpg
new file mode 100644
index 000000000..a7104d494
Binary files /dev/null and b/content/news/020/grr-gltf.jpg differ
diff --git a/content/news/020/harvest_hero_level_making.gif b/content/news/020/harvest_hero_level_making.gif
new file mode 100644
index 000000000..885e4612f
Binary files /dev/null and b/content/news/020/harvest_hero_level_making.gif differ
diff --git a/content/news/020/index.md b/content/news/020/index.md
new file mode 100644
index 000000000..4fcc925cf
--- /dev/null
+++ b/content/news/020/index.md
@@ -0,0 +1,1546 @@
++++
+title = "This Month in Rust GameDev #20 - March 2021"
+date = 2021-04-10
+transparent = true
+aliases = ["posts/newsletter-020"]
++++
+
+Welcome to the 20th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Library & Tooling Updates](#library-tooling-updates)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The third Rust Gamedev Meetup happened in March. It was an opportunity for
+developers to show off what Rust projects they've been working on in the game
+ecosystem. Developers showed off game engine demos, in-game playthroughs,
+tooling, and more. You can watch the recording of the meetup [here on
+Youtube][gamedev-meetup-video].
+
+The next meetup will take place on the 10th of April at 16:00 GMT on the [Rust
+Gamedev Discord server][rust-gamedev-discord], and can also be [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on, fill out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://youtube.com/watch?v=gqCxt8XL92o
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### [MineWars][minewars]
+
+![MineWars Game Screenshot](minewars.jpg)
+
+[MineWars][minewars] ([Twitter][minewars-twitter], [Reddit][minewars-reddit])
+by @jamadazi is Minesweeper reimagined as a Multiplayer Real Time Strategy!
+
+Capture mines. Move them around. Cause explosion chains. Take out enemy mines.
+Defend your Cities. Fight for territory. Eliminate other players. Play on a
+procedurally-generated map.
+
+The game has been privately in development for many months and was just
+announced publicly. The project is currently working towards an alpha release
+for public playtesting. Read the announcement on the [website][minewars] for
+more information.
+
+Made in the [Bevy Game Engine][bevy].
+
+[minewars]: https://minewars.cc
+[minewars-twitter]: https://twitter.com/MineWarsGame
+[minewars-reddit]: https://reddit.com/r/minewars
+[bevy]: https://bevyengine.org
+
+### [sm64js][sm64js]
+
+![Super Mario 64 JavaScript](sm64js.jpg)
+
+[sm64js][sm64js] ([GitHub][sm64js-github], [Discord][sm64js-discord]) is a rewrite
+of the decompilation project of Super Mario 64 in JavaScript with a strong focus
+on massive multiplayer online.
+The [backend][sm64js-server] recently has been rewritten in Rust by [@marior]
+and is now live.
+
+You can find more information about it in [this recent blog post][net64-blog],
+where the developers of a similar mod called Net64 are talking
+about several decompilation projects.
+
+Some of the most recent additions are:
+
+- Karts and gliders.
+- Health meters.
+- More visuals with butterflies and fish.
+
+A stress test is scheduled for 2021-04-17 17:30 UTC and everyone is invited to join.
+
+[@marior]: https://twitter.com/marior_dev
+[sm64js]: https://sm64js.com
+[sm64js-github]: https://github.com/sm64js/sm64js
+[sm64js-discord]: https://discord.gg/7UaDnJt
+[sm64js-server]: https://github.com/sm64js/sm64js-mmo-server
+[net64-blog]: https://net64-mod.github.io/blog/sm64js/
+
+### [Outer Wonders][outer-wonders-intro]
+
+![Bibi rolling around](outer-wonders.gif)
+
+[Outer Wonders][outer-wonders-intro] by the [Utopixel Studio][utopixel]
+is a pixelart puzzle-based adventure game built using SDL2.
+
+> Explore a world of fantasy in Outer Wonders.
+> Play as Bibi, the cute round monkey, unveil the natural wonders surrounding
+> your native village, and unravel their mysteries in this
+> ecological puzzle-based adventure game.
+
+March was mostly about various preparations for the upcoming playable demo release.
+Some of the recent updates:
+
+- More lively in-game environments.
+- Scripted cutscenes.
+- Translations.
+- [Linux support progress][outer-wonders-blog1].
+- [Lot's of level and technical testing][outer-wonders-blog2].
+- The playable demo [will be released on April 16][outer-wonders-blog3].
+
+[You can read the full March devlogs here][outer-wonders-blog].
+
+[outer-wonders-blog]: https://utopixel.games/en/blog
+[outer-wonders-intro]: https://utopixel.games/en/blog/introducing-outer-wonders
+[utopixel]: https://twitter.com/utopixel
+[outer-wonders-blog1]: https://utopixel.games/en/blog/building-outer-wonders-for-multiple-platforms
+[outer-wonders-blog2]: https://utopixel.games/en/blog/testing-outer-wonders-demo-before-release
+[outer-wonders-blog3]: https://utopixel.games/en/blog/outer-wonders-demo-release-on-april-16
+
+### [Aladin Lite]
+
+{{ image_figure(
+    alt="Mars with a RdBu colormap"
+    src="aladin_lite_mars_RdBu_cm.gif"
+    caption="Mars heightmap with a RdBu colormap rendered with Aladin Lite v3") }}
+
+[Aladin Lite] is a spatial image survey visualizer developed by the [Astronomical
+Observatory of Strasbourg] in France. Since its first release in 2013,
+[Aladin Lite] has been used by astronomers as well as amateurs that
+are curious about exploring the sky.
+
+Originally developed using 2D Javascript canvas, its core has been fully
+rewritten in Rust and WebGL2 using [wasm-bindgen].
+New features include:
+
+- The support of multiple allsky projections (mercator, aitoff, ...).
+- The blending of multiple surveys.
+- The support of FITS file images.
+
+For more information, see a [talk][adass-talk] done at the ADASS 2020
+conference. A web page is also available [here][al-test-url] for you to test.
+You are also very welcolme to contribute to the project by e.g. posting issues
+on the project's github.
+
+[Astronomical Observatory of Strasbourg]: https://cds.u-strasbg.fr/index-fr.gml
+[Aladin Lite]: https://github.com/cds-astro/aladin-lite/tree/develop
+[wasm-bindgen]: https://github.com/rustwasm/wasm-bindgen
+[adass-talk]: https://youtube.com/watch?v=TILtJOiiRoc
+[al-test-url]: https://bmatthieu3.github.io/hips_webgl_renderer/index.html
+
+### [Portal Explorer][portal-explorer]
+
+{{ image_figure(
+    alt='"Portal in portal" scene'
+    src="portal-explorer.png"
+    caption='"Portal in portal" scene') }}
+
+[Portal Explorer][portal-explorer] by [@optozorax][optozorax-twitter] is a web
+visualizator of mind-blowing portals.
+
+In Portal Explorer you can view how interesting portals are constructed, and
+visually explore their properties by moving and rotating them. This program
+doesn't work well on mobile, better opened from PC. The most interesting
+scene is [portal in portal][portal-in-portal].
+
+Created using ray-tracing in shaders, engine is [macroquad][macroquad-git],
+interface is [egui][egui-git].
+
+[portal-explorer]: https://github.com/optozorax/portal
+[optozorax-twitter]: https://twitter.com/optozorax
+[portal-in-portal]: https://optozorax.github.io/portal/?scene=portal_in_portal
+[macroquad-git]: https://github.com/not-fl3/macroquad
+[egui-git]: https://github.com/emilk/egui
+
+### [Name Needed][name-needed]
+
+{{ image_figure(
+    alt="Wandering agents hauling items around and digging"
+    src="name-needed.gif"
+    caption="Agents wandering around, hauling items and digging blocks") }}
+
+[Name Needed][name-needed] by [@DomWilliams0][domwilliams-github] is a one man
+effort to produce an open source, intuitive and high performance Dwarf
+Fortress-esque game.
+
+The engine is custom, built with SDL2 and OpenGL. It's still early days, but
+steady progress has been made over the last 18 months. The developer aims to
+release occasional technical devlogs about interesting parts of the engine,
+which so far include:
+
+- [Long term vision and goals][name-needed-devlog0]
+- [High level engine architecture][name-needed-devlog1]
+- [Intelligent entity behaviors][name-needed-devlog2]
+
+[name-needed]: https://github.com/DomWilliams0/name-needed
+[domwilliams-github]: https://github.com/DomWilliams0
+[name-needed-devlog0]: https://domwillia.ms/devlog0/
+[name-needed-devlog1]: https://domwillia.ms/devlog2/
+[name-needed-devlog2]: https://domwillia.ms/devlog4/
+
+### [Orbital Decay][orbital-decay]
+
+{{ image_figure(
+    alt="Orbital Decay"
+    src="orbital-decay.gif"
+    caption="Orbital Decay gameplay") }}
+
+[Orbital Decay][orbital-decay] by [@stevebob] is an
+[open-source][orbital-decay-source] turn-based tactical roguelike with a focus
+on ranged combat. Deal enough damage to enemies to get through their armour
+without breaching the hull of the station, or risk being pulled into the void.
+It was made for the [7 Day Roguelike 2021][7drl-2021] game jam.
+
+Traverse a procedurally-generated space station to reach the fuel bay on the
+5th floor. Choose your weapons and upgrades wisely to make it past the
+station's former crew - now a horde of ravenous undead.
+
+Read more about Orbital Decay on its [development blog][orbital-decay-blog].
+
+[orbital-decay]: https://gridbugs.itch.io/orbital-decay
+[orbital-decay-source]: https://github.com/stevebob/orbital-decay
+[@stevebob]: https://github.com/stevebob
+[7drl-2021]: https://itch.io/jam/7drl-challenge-2021
+[orbital-decay-blog]: https://www.gridbugs.org/7drl2021-day7/
+
+### [Disguiser][disguiser]
+
+![Title card with game name and a big mansion](disguiser.png)
+
+[Disguiser][disguiser] ([itch.io][disguiser-itch], [source code][disguiser-src])
+by [@mcneja]
+is a coffee-break turn-based stealth game inspired by Thief that
+was made for the [7 Day Roguelike 2021][7drl-2021] game jam.
+The randomly-generated mansions are loosely based on Chinese courtyard houses,
+with symmetry, enclosed gardens, and a public-to-private gradient
+from the entrance northward.
+
+The development process is documented in
+a [bunch of devlog posts][disguiser-blog-tag].
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/m5tjbs/7drl_in_rust)_
+
+[disguiser]: https://mcneja.github.io/disguiser
+[disguiser-blog-tag]: http://playtechs.blogspot.com/search/label/2021-7drl
+[disguiser-itch]: https://mcneja.itch.io/disguiser-2021-7drl
+[disguiser-src]: https://github.com/mcneja/disguiser
+[@mcneja]: http://playtechs.blogspot.com
+
+### [secbot][secbot-itch]
+
+![a screenshot with in-game message](secbot.jpg)
+
+[secbot][secbot-itch] ([web version][secbot-web], [souce code][secbot-src])
+by [Herbert Wolverson][thebracket] is another 7DRL submission:
+
+> The idea behind SecBot is that an outpost has ceased communications,
+> so the morally dubious Bracket Corporation dispatch a security bot
+> to find out what happened.
+> Upon arrival, it becomes clear that things aren't going well for the colony
+> \- so the player rushes around collecting colonists
+> and shepherding them back to the spaceship.
+> I tried to bake some narrative/flavor into the game,
+> and create a fun game you can enjoy over a coffee-break.
+
+Btw, Herbert is going to give a "Learning Rust With Game Development" talk
+at [Rust Meetup Linz on April 22][rust-linz].
+
+[secbot-itch]: https://thebracket.itch.io/secbot
+[secbot-web]: http://bfnightly.bracketproductions.com/secbot2021
+[secbot-src]: https://github.com/thebracket/secbot-2021-7drl
+[rust-linz]: https://rust-linz.at
+[thebracket]: https://bracketproductions.com
+
+### [Bounty Bros.][bounty_bros]
+
+{{ image_figure(
+    alt="bounty-bros-character-on-map"
+    src="bounty_bros.png"
+    caption="Click the image to play the game in your browser!",
+    link="https://skipngo.katharostech.com/?asset_url=https://bounty-bros.skipngo.katharostech.com/") }}
+
+[Bounty Bros.][bounty_bros] is a prototype game similar to the old Legend of
+Zelda® games developed by [Katharos Technology][katharostech] as a testing
+ground for a future commercial game.
+
+In the last 2 months Bounty Bros. has gotten a lot of updates. Now you can [play
+the game][bounty_bros_webgame] right inside of your browser on desktop or mobile
+devices!
+
+- You can no longer walk through walls or objects.
+- You can now walk into buildings.
+- The camera follows the player without passing beyond the map borders.
+- Rendering is now scaled pixel-perfect.
+- Mobile touch controls were added.
+- There is a new [retro mode][bounty_bros_retro_mode] that tries to make it
+  look like the game is running on an old CRT television.
+
+All of the source code, excluding assets and artwork, was also made available
+and split into two independent projects.
+
+These projects were released under the
+[Katharos License][katharos_license]. This license has moral and ethical
+implications that you may or may not agree with, so please read it before making
+use of these projects:
+
+- [Bevy Retro][bevy_retro] ([forum][skipngo_discussions])
+  \- a Bevy plugin for pixel-perfect games.
+- [Skip'n Go][skipngo] ([forum][bounty_bros_blog_post])
+  \- a simple game engine for making top-down pixel games.
+
+You can read the full update in the [Blog Post][bounty_bros_blog_post].
+
+[bevy_retro]: https://github.com/katharostech/bevy_retro
+[bevy_retro_discussions]: https://github.com/katharostech/bevy_retro/discussions
+[katharostech]: https://katharostech.com
+[skipngo]: https://github.com/katharostech/skipngo
+[skipngo_discussions]: https://github.com/katharostech/skipngo/discussions
+[bounty_bros]: https://katharostech.com/post/bounty-bros-on-web
+[bounty_bros_webgame]: https://skipngo.katharostech.com/?asset_url=https://bounty-bros.skipngo.katharostech.com/
+[bounty_bros_blog_post]: https://katharostech.com/post/bounty-bros-on-web
+[bounty_bros_retro_mode]: https://skipngo.katharostech.com/?asset_url=https://bounty-bros.skipngo.katharostech.com/&enable_crt=true&pixel_aspect_ratio=1.3
+[katharos_license]: https://github.com/katharostech/katharos-license
+
+### [pGLOWrpg][pglowrpg-github]
+
+![Improved text rendering](pglowrpg_progress.jpg)
+
+[pGLOWrpg][pglowrpg-github] ([Twitter][pglowrpg-twitter]) by [@Roal_Yr]
+is a Procedurally Generated Living Open World RPG,
+a long-term project in development, which aims to be a narrative text-based game
+with maximum portability and accessibility.
+
+Recent updates include:
+
+- Reformatting a print interface, making it very easy to link text UI and code.
+- Switching to .ron file format for storing configs and strings.
+- Implementing individual strings coloring for better visual perception.
+
+[@Roal_Yr]: https://twitter.com/Roal_Yr
+[pglowrpg-twitter]: https://twitter.com/pglowrpg
+[pglowrpg-github]: https://github.com/roalyr/pglowrpg
+
+### [rusty-bomber]
+
+![gameplay screenshot wthh an explosion](rusty-bomber.png)
+
+[rusty-bomber] ([source code][rusty-bomber-src]) by [@rgripper] and [@Cupnfish]
+is a BomberMan clone written using Bevy & Rapier that works on desktop and web.
+
+Check out the [devlog][rusty-bomber-devlog] for more details about
+the project's internals.
+
+[@Cupnfish]: https://github.com/Cupnfish
+[@rgripper]: https://github.com/rgripper
+[rusty-bomber]: https://rgripper.github.io/rusty-bomber
+[rusty-bomber-src]: https://github.com/rgripper/rusty-bomber
+[rusty-bomber-devlog]: https://github.com/rgripper/rusty-bomber/blob/548d50470/blog/blog.md
+
+### Stellary 2
+
+{{ image_figure(
+    alt="Stellary 2 Anti-Missile Laser"
+    src="stellary2-centered-view.gif"
+    caption="▶️ Click to [watch the full video](https://twitter.com/CoffeJunkStudio/status/1378719827347509249)",
+    link="https://twitter.com/CoffeJunkStudio/status/1378719827347509249") }}
+
+Stellary 2 by [@CoffeJunkStudio][coffe-junk-studio] is a 3D real-time space
+shooter in which the player has to control his spaceship to colonize each planet
+in the solar system.
+
+In the last month, the game concept has been overhauled. Most importantly:
+
+- Planets become inhabitable over time, starting with the outermost one in order
+  to bring head-to-head matches to an end eventually.
+- Full focus on multiplayer, including AIs.
+- Players can’t die mid-game anymore. When defeated, they re-spawn and lose a
+  colony for it (if they have one) instead of dying. This prevents long waiting
+  times when playing against friends.
+
+You can follow the development of Stellary 2 on [Twitter][coffe-junk-studio].
+
+[coffe-junk-studio]: https://twitter.com/CoffeJunkStudio
+[stellary2-ppcv-tweet]: https://twitter.com/CoffeJunkStudio/status/1378719827347509249
+
+### [A/B Street]
+
+![Elevation data in A/B Street](abstreet.jpg)
+
+[A/B Street] by [@dabreegster] is a traffic simulation game exploring how small
+changes to roads affect cyclists, transit users, pedestrians, and drivers, with
+support for any city with OpenStreetMap coverage.
+
+In March, elevation data courtesy of [Eldan] was imported, letting cycling
+speeds uphill be adjusted. Importing any area from OpenStreetMap can now be
+done from the UI with no command-line experience, and custom travel demand
+models based on UK-wide census data can now be generated. Some important
+simulation fixes for roundabouts improve gridlock, and [Michael] and [Yuwen]
+helped adjust the UI panel layout for smaller screens.
+
+[A/B Street]: https://github.com/a-b-street/abstreet
+[@dabreegster]: https://twitter.com/CarlinoDustin
+[Eldan]: https://github.com/eldang/
+[Michael]: https://github.com/michaelkirk
+[Yuwen]: https://www.yuwen-li.com/
+
+### [Egregoria]
+
+![Egregoria city at dawn](egregoria.jpg)
+
+[Egregoria] ([GitHub][Egregoria], [Discord][egregoria-discord])
+by [@Uriopass]
+is a simulation oriented city builder that tries
+to replicate modern society as well as possible.
+
+The [8th devlog][egregoria-blog-post] was published.
+Updates include:
+
+- Multiplayer based on deterministic lockstep
+- Economy revamp inspired by Anno 1800
+- Infinite world using procedural generation
+- Many more QoL features
+
+See also the [YouTube summary video][egregoria-youtube]
+of the past 6 months of development.
+
+[Egregoria]: https://github.com/Uriopass/Egregoria
+[@Uriopass]: https://github.com/Uriopass
+[egregoria-blog-post]: https://douady.paris/blog/egregoria_8.html
+[egregoria-discord]: https://discord.gg/CAaZhUJ
+[egregoria-youtube]: https://youtu.be/qH2SKWbRV5I
+
+### [Gargoyle's Quest]
+
+![Gargoyle's Quest](gargoyles_quest.png)
+
+[Gargoyle's Quest] by [@ShamylZakariya] is an implementation of level one
+of the 1990 [Gameboy platformer][gargoyle-wiki] built using [wgpu].
+
+[Gargoyle's Quest]: https://github.com/ShamylZakariya/Platformer
+[@ShamylZakariya]: https://github.com/ShamylZakariya
+[gargoyle-wiki]: https://en.wikipedia.org/wiki/Gargoyle%27s_Quest
+[wgpu]: https://github.com/gfx-rs/wgpu-rs
+
+### [Fishgame][fishgame]
+
+{{ image_figure(
+    alt="Fishgame"
+    src="fishgame.gif"
+    caption="Game footage with the new weapon.") }}
+
+[Fishgame][fishgame] [(web build)][fishgame-itch] is an online multiplayer game,
+created in a collaboration between [Nakama][nakama], an open-source scalable
+game server, and the [Macroquad][macroquad] game engine.
+
+This month:
+
+- fishgame migrated to [nakama-rs] (featured in this newsletter as well).
+- Also a second weapon, the sword, was added to the game.
+
+[fishgame]: https://github.com/heroiclabs/fishgame-macroquad
+[fishgame-itch]: https://fedorgames.itch.io/fish-game?secret=UAVcggHn332a
+[nakama]: https://heroiclabs.com/
+[macroquad]: https://github.com/not-fl3/macroquad
+[nakama-rs]: https://github.com/not-fl3/nakama-rs
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Airship"
+    src="veloren.jpg"
+    caption="Waiting for the airship to land") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In March, Veloren released 0.9. Lots of work throughout the month was put
+towards preparing for this. NPC merchants and trading was merged. Many changes
+were made to combat, including buffs and combat. Player-to-player trading was
+also implemented. Lots of work was done in optimizing Veloren. This included
+significantly improving how long physics was talking, and network improvements.
+Metrics tracking was also overhauled to better track the different systems in
+Veloren. Pathfinding is also working through an overhaul. A large feature
+implemented in March was Airships being merged into the game. This prompted a
+redo of how physics in the game is handled.
+
+A survey was sent out in preparation for the release. A lot of information was
+gathered about how players experience Veloren, and the items they like or don't
+like. These can all be ready in [devblog #112](https://veloren.net/devblog-112).
+This was followed up by the 0.9 release, which turned out to be the largest yet.
+At peak, 133 players joined the main server. There were problems throughout the
+release party relating to networking, as well as our tick performance.
+
+March's full weekly devlogs: "This Week In Veloren...":
+[#109](https://veloren.net/devblog-109),
+[#110](https://veloren.net/devblog-110),
+[#111](https://veloren.net/devblog-111),
+[#112](https://veloren.net/devblog-112).
+[#113](https://veloren.net/devblog-113).
+
+[veloren]: https://veloren.net
+
+### [Theta Wave]
+
+{{ image_figure(
+    alt="Enemy Formations"
+    src="theta-wave.gif"
+    caption="Enemies can now be easily spawned in formations",
+    link="https://github.com/amethyst/theta-wave") }}
+
+[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and
+[@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In
+the past month, the ["Foundations"] update was released which included numerous
+refactors that improved the accessibility of contributing to the game.
+
+They are now working on the ["Formations"] update which will organize how
+waves of enemies are spawned into the game.
+
+Notable changes:
+
+- Formations can be defined in a data file
+- New `InvasionFormation` phase where formations of enemies are spawned from
+  a pool of formations
+
+[Theta Wave]: https://github.com/amethyst/theta-wave
+[@micah_tigley]: https://twitter.com/micah_tigley
+[@carlosupina]: https://twitter.com/carlosupina
+[Amethyst Engine]: https://amethyst.rs/
+["Foundations"]: https://github.com/amethyst/theta-wave/releases/tag/v0.1.4
+["Formations"]: https://github.com/amethyst/theta-wave/projects/2
+
+### [Harvest Hero][hh_disc]
+
+![harvest_hero_level](harvest_hero_level_making.gif)
+
+[Harvest Hero][hh_disc] ([Discord][hh_disc], [Twitter][bmb_twitter])
+by [@bombfuse][bmb_twitter] is an arcade/roguelite where you whack Groobles.
+Built on top of [Emerald](#emerald).
+
+Harvest Hero has undergone a large change, migrating
+from semi-randomly generated levels to handcrafted levels
+that are randomly selected throughout your playthrough.
+
+This means using [Ogmo][ogmo] to design levels,
+and using [nano-ogmo][nano-ogmo] to import them.
+
+Updates:
+
+- General UI update
+- Importing ogmo levels via nano-ogmo
+- [April Fools demo][gag_demo]
+
+[hh_disc]: https://discord.gg/CJRbxQn3d9
+[bmb_twitter]: https://twitter.com/bombfuse_dev
+[ogmo]: https://ogmo-editor-3.github.io/
+[nano-ogmo]: https://github.com/Bombfuse/nano-ogmo
+[gag_demo]: https://bombfuse.itch.io/him-character-demo-harvest-hero
+
+### [Station Iapetus]
+
+{{ image_figure(
+    alt="Station Iapetus Youtube"
+    src="station-iapetus-youtube.png"
+    caption="Click on the iamge to see the gameplay video on YouTube",
+    link="https://youtube.com/watch?v=O_ETjSkVBME") }}
+
+[Station Iapetus][Station Iapetus] by [@mrDIMAS] is a 3rd person shooter on the
+prison Iapetus near the Saturn.
+This month's updates include:
+
+- Inventory fixes and improvements
+- Splash damage for grenades
+- Weapon recoil
+- More items
+- Bots now hear player
+- More assets
+- First level improvements
+- Procedural animation of impact for bots
+- More sounds
+- Separate scene for menu with music
+- Pause game when in menu
+- More switches in options menu
+- Turrets
+
+[@mrDIMAS]: https://github.com/mrDIMAS
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[Station Iapetus]: https://github.com/mrDIMAS/StationIapetus
+[si-youtube]: https://youtube.com/watch?v=O_ETjSkVBME
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea on Steam](wor-capsule.png)][wor]
+
+[Way of Rhea][wor] is a picturesque puzzle platformer—without the platforming.
+Solve mind bending color puzzles, unlock new areas of a vibrant hub world, and
+talk to NPCs to unravel the mysteries of a world you left behind!
+
+Way of Rhea is being produced by [@masonremaley][mason-remaley]. Latest Way of
+Rhea developments:
+
+- A free demo was distributed as part of [Indie Maker Syndicate][wor-ims]'s
+online event
+- The demo included a number of minor visual improvements [aimed at better
+communicating the game's mechanics][wor-visual-mechanics]
+- Progress is being made adding [new artwork][wor-art] to the game
+- Tools for laying out artwork in game were [improved][wor-art-tools]
+- A crash reporter was implemented to give players the option to report issues
+directly to [Way of Rhea's Discord][wor-discord]. A writeup will be posted
+explaining how it works soon!
+- Work has begun on a dialog system for chatting w/ NPCs!
+
+[wor]: https://store.steampowered.com/app/1110620?utm_campaign=tmirgd&utm_source=n20
+[mason-remaley]: https://twitter.com/masonremaley
+[wor-visual-mechanics]: https://twitter.com/masonremaley/status/1375534918646763528
+[wor-ims]: https://indiemakersyndicate.com/
+[wor-art]: https://twitter.com/masonremaley/status/1377693351198216193
+[wor-art-tools]: https://twitter.com/masonremaley/status/1377736615997636611
+[wor-discord]: https://discord.gg/JGeVt5XwPP
+
+[wor-art]: https://twitter.com/masonremaley/status/1377693351198216193
+
+## Engine Updates
+
+### [Tetra]
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, versions 0.6.1 and 0.6.2 were released, featuring:
+
+- Support for blend modes and premultiplied alpha
+- Scissor rectangles (useful for UI rendering)
+- Word wrapping for text
+- More events and methods for tracking/controlling the window's state
+- Bugfixes and docs improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+Additionally, a [template repository][tetra-template] has been created,
+demonstrating some useful patterns for structuring a Tetra project.
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[tetra-template]: https://twitter.com/17cupsofcoffee/status/1357750836370284544
+
+### [Starframe]
+
+![Current state of starframe graphics and physics](starframe.gif)
+
+[Starframe] by [@molentum] is a work-in-progress game engine for physics-y
+sidescrolling 2D games.
+
+This month, [its physics engine was revamped once more][sf-update-tweet]
+(for the last time, hopefully),
+implementing a modern solver method called Extended Position-Based Dynamics.
+Also, [a blog post][sf-blog-post] was published, covering the
+development of the physics engine so far in a great deal of mathematical
+detail.
+
+[starframe]: https://github.com/m0lentum/starframe
+[@molentum]: https://twitter.com/molentum_
+[sf-blog-post]: https://molentum.me/blog/starframe-constraints/
+[sf-update-tweet]: https://twitter.com/molentum_/status/1360723470414450688
+
+### Emerald
+
+![emerald_logo](em_desktop_icon.png)
+
+[Emerald][emerald_github] by [@bombfuse][bombfuse_twitter]
+is a 2D game engine focused on being as portable as possible.
+
+The ultimate goal of Emerald is to be a fully featured engine
+that you can slap onto any device with relative ease.
+It's currently able to run on WASM, Raspberry Pi, Mac, Windows, and Linux
+thanks to [miniquad][miniquad_git].
+
+Features include physics via [rapier2d][rapier_2d],
+ECS via [hecs][hecs_git], and font rendering via [fontdue][fontdue_git].
+
+Recent updates:
+
+- Rendering to textures was added ([example][em_render_texture_example]).
+- [WASM game sample][em_wasm_example].
+
+[bombfuse_twitter]: https://twitter.com/bombfuse_dev
+[emerald_github]: https://github.com/Bombfuse/emerald
+[rapier_2d]: https://github.com/dimforge/rapier
+[miniquad_git]: https://github.com/not-fl3/miniquad
+[em_wasm_example]: https://bombfuse.itch.io/him-character-demo-harvest-hero
+[em_render_texture_example]: https://github.com/Bombfuse/emerald/blob/eb38d868a/examples/render_to_texture.rs
+[hecs_git]: https://github.com/Ralith/hecs
+[fontdue_git]: https://github.com/mooman219/fontdue
+
+### [rg3d]
+
+![rg3d Youtube](rg3d_logo.png)
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-box features. Some of
+the recent engine updates:
+
+- Context menus and tooltips (huge thanks to [MinusGix]).
+- Performance improvements for UI.
+- Parallax Mapping.
+- Ability to enable/disable scenes.
+- Expansion strategies for TreeView.
+- LOD system fixes.
+- Graphical fixes.
+- First version of engine's architecture overview.
+- Various bug fixes and small improvements.
+
+[Editor][rusty-editor] updates:
+
+- Ability to edit collision groups and mask for colliders.
+- Ability to clear command stack.
+- Ability to change render path for meshes.
+- LOD editor.
+- "Collapse All", "Expand All", "Locate Selection" buttons for world outliner.
+- "Fit Collider" feature fixes.
+- Picking fixes.
+- Change selection when paste from clipboard.
+- "Slow" and "Fast" camera movement modifiers.
+- Navmesh selection fixes.
+- Simple TBN visualizer.
+- Parallax mapping switch in settings.
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+[rusty-editor]: https://github.com/mrDIMAS/rusty-editor
+[MinusGix]: https://github.com/MinusGix
+
+### [Oxygengine v0.16.0][oxygengine-git]
+
+{{ image_figure(
+    alt="Oxygengine + RAUI integration",
+    src="oxygengine-raui-integration.gif",
+    caption="Integration of RAUI (UI/UX) crate with Oxygengine game engine") }}
+
+[Oxygengine][oxygengine-git] by [@PsichiX][psichix-twitter] is the hottest
+HTML5 + WASM game engine for games written in Rust with web-sys.
+The goal of this project is to combine professional game development tools under
+one highly modular toolset.
+
+- Version 0.16.0 was focused on integration of [RAUI][raui-git] crate into the
+  engine to allow building rich UI/UX experience for your games using declarative
+  mode UI composition (which now makes currently used simple UI Elements feature
+  deprecated and it's gonna be removed at some point in the near future).
+- In addition to that [basic web game demo][oxygengine-basic-demo]
+  and [pokemon-like RPG demo][oxygengine-rpg-demo] were enhanced with new UI showing
+  how to build UI/UX with RAUI.
+- Next months will be focused on making RPG showing
+  full potential of what you can do with RAUI in Oxygengine, as well as remaking
+  Visual Novel module to be entirely based on RAUI in a way similar to how RenPy
+  is made!
+
+[psichix-twitter]: https://twitter.com/psichix
+[oxygengine-git]: https://github.com/PsichiX/Oxygengine
+[oxygengine-basic-demo]: https://github.com/PsichiX/Oxygengine/tree/master/demos/basic-web-game
+[oxygengine-rpg-demo]: https://github.com/PsichiX/Oxygengine/tree/master/demos/pokemon
+
+### [Bevy v0.5][bevy-blog]
+
+{{ image_figure(
+    alt="PBR material example"
+    src="bevy_pbr.png"
+    caption="Material grid with varying PBR properties") }}
+
+[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is
+[free and open source][bevy-git] forever!
+
+Bevy 0.5 was a massive community effort. You can check out the
+[full release blog post here][bevy-blog], but here are some highlights:
+
+- Physically Based Rendering (PBR).
+- GLTF Improvements, such as support for PBR textures and a new top-level GLTF
+  asset type.
+- Bevy ECS V2: a complete rewrite of the Bevy ECS core with a hybrid component
+  storage model, Archetype Graphs, stateful queries, and across-the-board performance
+  improvements.
+- A brand new Parallel System Executor packed with features: explicit system
+  dependencies, system labels, system sets, improved run criteria,
+  and increased parallelism.
+- Reliable change detection: efficiently query changes to any component or
+  resource at any point in time (even across frames).
+- State System Rewrite: a new stack-based state system that makes running systems
+  for different states (ex: menus vs in-game) much easier.
+- Rich text: style text "spans" with different colors / fonts while still
+  respecting layout.
+- HIDPI text: render crisp text at any resolution.
+- 2D world space text, world to screen space conversions, 2d/3d orthographic
+  camera improvements, render layers, sprite flipping, improved color space handling,
+  wireframes, timer improvements, and more!
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/mljg39/bevy_05),
+[Hacker News](https://news.ycombinator.com/item?id=26716166),
+[Twitter](https://twitter.com/cart_cart/status/1379514923819012097)_
+
+[bevy]: https://bevyengine.org
+[bevy-git]: https://github.com/bevyengine/bevy
+[bevy-blog]: https://bevyengine.org/news/bevy-0-5
+
+## Learning Material Updates
+
+### [Robo Instructus Is a Coding Game Built Entirely in Rust][robo-article]
+
+![A screenshot from the middle of the game](robo.jpg)
+
+This month Tammy Xu published an article about [Alex Butler]'s two-year journey
+of creating [Robo Instructus][robo].
+The article touches lots of topics like:
+why a custom game engine in Rust was choosen, design of the custom
+scripting language, and game design of programming puzzles.
+
+[robo-article]: https://builtin.com/software-engineering-perspectives/rust-puzzle-game
+[Alex Butler]: https://twitter.com/bigabgames
+[robo]: https://store.steampowered.com/app/1032170/Robo_Instructus
+
+### [Bevy Cheatbook: Major Overhaul for Bevy 0.5][bevy_cheatbook]
+
+The Unofficial Bevy Cheatbook by @jamadazi is a practical reference book for
+the [Bevy Game Engine][bevy]. It teaches programming patterns, features, and
+solutions to common problems. Written to be concise and easy to learn from.
+
+The book recently got a major overhaul for the big new Bevy 0.5 release. Many
+pages were expanded or rewritten, new content added, and community feedback
+addressed.
+
+If you are interested in Bevy, this book is now one of the most detailed
+learning resources. Have fun making cool things with Bevy!
+
+[bevy_cheatbook]: https://bevy-cheatbook.github.io
+[bevy]: https://bevyengine.org
+
+### [Bevy Game Template][bevy-game-template]
+
+[Bevy game template][bevy-game-template] by [@nikl_me][nikl_twitter]
+is a template repository for a Bevy game.
+
+The goal is to present a possible structure for Bevy games and at the
+same time reduce the amount of copy paste when starting a new project.
+The repository includes a GitHub workflow for Linux, MacOS, and Windows builds
+(WASM will be supported soon) and comes with a small, opinionated example game.
+
+[bevy-game-template]:https://github.com/NiklasEi/bevy_game_template
+[nikl_twitter]: https://twitter.com/nikl_me
+
+### [Reverse-Engineering NES Tetris to Add Hard Drop][tetris-hard-drop]
+
+{{ image_figure(
+    alt="NES Tetris with Hard Drop and Ghost Piece"
+    src="tetris-hard-drop.gif"
+    caption="NES Tetris with Hard Drop and Ghost Piece") }}
+
+A [blog post][tetris-hard-drop] describing the process of reverse-engineering
+the rendering and input-handling logic in the NES version of Tetris, and using
+a [rust embedded domain-specific language][tetris-hard-drop-dsl-example] to
+make a [patching tool][tetris-hard-drop-patch-tool] that generates code (6502
+machine code) to add hard drop (instantly dropping the current piece) and to
+render a ghost piece (the dotted outline showing where the current piece will
+land).
+
+The patching tool uses the crate
+[mos6502_assembler][tetris-hard-drop-assembler] to specify 6502 assembly in
+rust and generate machine code. Many of the reverse-engineering experiments
+were done using [this rust NES emulator][tetris-hard-drop-nes-emulator]. The
+result is available as an [IPS Patch][tetris-hard-drop-ips-patch].
+
+_Discussions:
+[Hacker News](https://news.ycombinator.com/item?id=26530604),
+[/r/rust](https://reddit.com/r/rust/comments/ma6jqz/using_a_rust_dsl_to_add_hard_drop_to_nes_tetris)_
+
+[tetris-hard-drop]: https://www.gridbugs.org/reverse-engineering-nes-tetris-to-add-hard-drop
+[tetris-hard-drop-nes-emulator]: https://github.com/stevebob/mos6502/tree/master/nes-emulator
+[tetris-hard-drop-assembler]: https://github.com/stevebob/mos6502/tree/master/assembler
+[tetris-hard-drop-ips-patch]: https://github.com/stevebob/mos6502/raw/master/tetris-hard-drop-patcher/tetris-hard-drop.ips
+[tetris-hard-drop-patch-tool]: https://github.com/stevebob/mos6502/tree/master/tetris-hard-drop-patcher
+[tetris-hard-drop-dsl-example]: https://github.com/stevebob/mos6502/blob/master/tetris-hard-drop-patcher/src/main.rs#L23
+
+### [Tutorial: Writing a tiny Entity Component System in Rust][ecs-in-rust]
+
+[@kettlecorn][kettlecorn_twitter] wrote
+a beginner-friendly [tutorial][ecs-in-rust] that dives into the
+inner workings of the Entity-Component-System pattern.
+The tutorial walks through a minimalist ECS
+implementation to illustrate how the pattern works, and
+why it's useful.
+
+_Discussion:
+[/r/rust](https://reddit.com/r/rust/comments/m88ywa/tutorial_writing_a_tiny_entity_component_system)_
+
+[kettlecorn_twitter]: https://twitter.com/kettlecorn
+[ecs-in-rust]:https://ianjk.com/ecs-in-rust/
+
+### Writing a 3D Shooter Using rg3d
+
+[![Demo of the third part: shooting at a moving zombie](rg3d-tut.jpg)][rg3d-tut3]
+
+[@mrDIMAS] started a tutorial series about making a 3D shooter
+using the [rg3d] game engine.
+So far three parts were released:
+
+- ["Character Controller"][rg3d-tut1] - engine & editor basics,
+  simple character controller.
+- ["Weapons"][rg3d-tut2] - player weapon with recoil and simple impact effect.
+- ["Bots, AI"][rg3d-tut3] - bots, actor animations, and a simple AI.
+
+[rg3d-tut1]: https://rg3d.rs/tutorials/2021/03/05/tutorial1.html
+[rg3d-tut2]: https://rg3d.rs/tutorials/2021/03/09/tutorial2.html
+[rg3d-tut3]: https://rg3d.rs/tutorials/2021/03/11/tutorial3.html
+
+### [Using Tests to Speed Up Your Feedback Loop][tdd-feedback]
+
+![Tile map with basic agents and resources](robotcards.png)
+
+[@philipk] shared a [blog post][tdd-feedback] about using tests not only
+for verifying correctness, but also for faster feedback loops in some
+circumstances. [RobotCards] - a WIP game that uses the Legion ECS -
+is used as a practical example.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/man8u1/using_tests_to_speed_up_your_feedback_loop)_
+
+[@philipk]: https://github.com/philipk
+[tdd-feedback]: https://philipk.github.io/devblog/blog/tdd-gamedev-feedback-loop
+[RobotCards]: https://philipk.github.io/devblog/robotcards
+
+## Library & Tooling Updates
+
+### [genesis]
+
+[genesis] by [@StygianLightning] is a library for generating statically-typed
+ECS worlds by using a procedural macro.
+
+Unlike other ECS libraries and frameworks, which do dynamic borrow-checking
+at runtime, you define all your components upfront and generate
+a completely statically typed ECS, with borrow checking done at compile time.
+Gone are the days of passing a World between functions,
+only to encounter a dynamic borrow checking problem!
+
+genesis is a lightweight ECS library that doesn't provide any scheduling capabilities.
+Instead, you can query the storage for each component type directly.
+
+[genesis]: https://github.com/StygianLightning/genesis
+[@StygianLightning]: https://github.com/StygianLightning
+
+### [Shipyard v0.5][shipyard-0-5]
+
+[Shipyard] by [@leudz] is an ECS library built on top of sparse sets
+and focused on usability and speed.
+
+Main changes of the [latest version][shipyard-0-5]:
+
+- The `system!` macro, packs, and `Shiperator` trait were removed.
+- Bulk add entity - faster way than adding entities one by one.
+- Accurate modification tracking by default.
+- No more `try_*` - now all functions that can fail because of storage access
+  return a Result while almost all others panic.
+- More flexible workload building and debugging.
+- Customizable views and storages.
+- Significant performance improvements.
+
+[Shipyard]: https://crates.io/crates/shipyard
+[shipyard-0-5]: https://users.rust-lang.org/t/shipyard-0-5-release/57203
+[@leudz]: https://github.com/leudz
+
+### [Planck ECS]
+
+![planck logo](planck_ecs.png)
+
+[Planck ECS] ([GitHub][Planck ECS], [Blog][planck_blog],
+[Patreon][planck_patreon]) by [@jojolepro]
+is a brand new minimalist and safe ECS library.
+
+The 1.0 release happened in the past month, featuring: various fixes,
+quality of life improvements, removal of unsafe code and completion of tests and
+documentation.
+
+The library is currently considered completed, which means that all planned
+features are implemented, tested and benchmarked. Future updates will focus on
+performance improvements and usability improvements.
+
+[Planck ECS] is also used in [Shotcaller][planck_shotcaller] which is featured in
+this newsletter too.
+
+You can read more about the library on the [Blog][planck_blog] and on
+[GitHub][Planck ECS].
+
+_Discussions: [/r/rust][planck_reddit]_
+
+[@jojolepro]: https://github.com/jojolepro
+[Planck ECS]: https://github.com/jojolepro/planck_ecs
+[planck_shotcaller]: https://github.com/amethyst/shotcaller
+[planck_blog]: https://jojolepro.com/blog/2021-01-13_planck_ecs/
+[planck_patreon]: https://patreon.com/jojolepro
+[planck_reddit]: https://reddit.com/r/rust/comments/m73ema/yet_another_ecs_library_except_much_safer
+
+### [hecs] v0.5
+
+[hecs] is a fast, lightweight, and unopinionated archetypal ECS library.
+
+Version 0.5 introduces a column-major serialization mode. This imitates the
+in-memory data layout, enabling higher performance than the already-fast
+row-major serialization mode. Because columnar layout places similar data
+nearby, it also improves the effectiveness of compression.
+
+Other changes include major optimizations to spawning entities and
+adding/removing components, inspired by the archetype graph model recently
+adopted by bevy.
+
+[hecs]: https://github.com/Ralith/hecs
+
+### [rkyv] v0.5
+
+[rkyv] is a zero-copy deserialization framework for Rust. It's similar to FlatBuffers
+and Cap'n Proto and can be used for data storage and messaging.
+
+A [benchmark][rust-serialization-benchmark] was put together to compare rkyv
+against other leading serialization solutions and gather feedback and use
+cases for development. A [summary and analysis][rkyv-is-faster-than] of the
+results is also available.
+
+Version 0.5 is hot off the presses and rolls up features from the 0.4
+development cycle:
+
+- Derive macros can now implement `PartialEq` and `PartialOrd` between
+  archived and unarchived types.
+- Custom type bounds for serialization and deserialization can be added
+  with derive attributes.
+- Helper types like [AlignedVec][rkyv-AlignedVec] and
+  [Infallible][rkyv-Infallible] were introduced to improve ergonomics.
+- `const_generics` are now enabled by default.
+- Helper functions have been added to make getting root objects easier.
+- Several bugfixes and performance improvements.
+
+A [feedback issue][rkyv-feedback] is still open for providing feedback on
+further development.
+
+[rkyv]: https://github.com/djkoloski/rkyv
+[rust-serialization-benchmark]: https://github.com/djkoloski/rust_serialization_benchmark
+[rkyv-is-faster-than]: https://davidkoloski.me/blog/rkyv-is-faster-than
+[rkyv-AlignedVec]: https://docs.rs/rkyv/0.5.0/rkyv/struct.AlignedVec.html
+[rkyv-Infallible]: https://docs.rs/rkyv/0.5.0/rkyv/struct.Infallible.html
+[rkyv-feedback]: https://github.com/djkoloski/rkyv/issues/67
+
+### [gba] v0.4
+
+[gba] is a crate for making GBA games with Rust.
+This month it was updated to 0.4!
+It's using the new `thumbv4-none-eabi` target, and has
+an overall simpler build process than before.
+
+The project is still a work in progress, but if you've wanted to try
+an embedded experience this is an easy way to test the waters.
+No hardware required!
+Compiled binaries can be run in a GBA emulator just fine.
+
+[gba]: https://github.com/rust-console/gba
+
+### [kira]
+
+[kira] by [@tesselode] is a game audio library tailored to composers and other
+people who need expressive audio.
+
+v0.5.0 was released with mixer send tracks, new effects, and playback position tracking
+for instances, as well as a variety of smaller improvements.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/m0llxm/kira_game_audio_library_v050),
+[Twitter](https://twitter.com/tesselode/status/1368984205947006976)_
+
+[Kira]: https://github.com/tesselode/kira
+[@tesselode]: https://twitter.com/tesselode
+
+### [Quinn] v0.7
+
+[Quinn] is an async-friendly implementation of the state-of-the-art QUIC
+transport protocol soon to be standardized by the IETF.
+
+QUIC is a uniquely versatile foundation for building application protocols. Its
+support for low-latency communication, multiplexing, fine-grained reliability,
+and security make an excellent basis for real-time game networking, providing an
+array of powerful primitives unavailable on UDP or TCP.
+
+[Quinn 0.7][quinn_release] introduces support for Tokio 1.0 and many
+optimizations and bug fixes, and updates to [draft 32][quic_32] of the proposed
+standard. With last call underway in the IETF, the devs expect to release an
+implementation of the final standard soon with no major changes.
+
+[Quinn]: https://github.com/quinn-rs/quinn
+[quinn_release]: https://github.com/quinn-rs/quinn/releases/tag/0.7.0
+[quic_32]: https://tools.ietf.org/html/draft-ietf-quic-transport-32
+
+### [nakama-rs]
+
+[nakama-rs] is a pure Rust implementation of the [Nakama] protocol.
+
+[Nakama] is an open-source server designed to power modern games and apps.
+Features include user accounts, chat, social, matchmaker, realtime multiplayer,
+and much [more][heroiclabs].
+
+Being pure Rust, [nakama-rs] brings the full API and socket options to any
+platform Rust works on.
+
+[nakama]: https://github.com/heroiclabs/nakama
+[heroiclabs]: https://heroiclabs.com
+[nakama-rs]: https://github.com/not-fl3/nakama-rs
+
+### [smaa-rs]
+
+The [smaa-rs] library provides fast and high quality post-process
+anti-aliaising using the [SMAA algorithm]. It is designed to be
+easy to integrate into other [wgpu] applications with only a few
+added lines of code.
+
+The 0.2 series released this month includes a steamlined API
+which makes it easier to enable/disable anti-aliasing via a
+configuration setting. Currently SMAA 1x is supported with
+SMAA S2x likely to be added depending on interest.
+
+[smaa-rs]: https://github.com/fintelia/smaa-rs
+[SMAA algorithm]: http://www.iryoku.com/smaa/
+
+### [wgpu]
+
+{{ image_figure(
+    alt="voxel bunny on wgpu"
+    src="wgpu-conservative-bunny.png"
+    caption="Voxel Bunny rendering with conservative rasterization") }}
+
+[wgpu] is a [WebGPU] implementation in Rust. It is safe, efficient,
+and portable: can target both native (Vulkan/D3D/Metal) and the Web.
+
+Most progress in March was focused around [WGSL] shaders and validation.
+[naga] has seen a lot of improvements in the SPIR-V and WGSL parsing, as well
+as backend code generation. Most importantly, it now fully validates both
+statements and expressions. No more accidental foot shots from adding vec2
+and vec3 in the shaders!
+
+The last and the biggest (in terms of shader complexity) example - "water"
+has been successfully ported to WGSL 🎉.
+
+A small addition to our native-only features - conservative rasterization
+feature - was added by [@wumpf] and demonstrated on a voxel bunny 🐇
+
+Finally, there is a blog post on Mozilla [graphics team blog] about the
+progress using [wgpu] in Gecko.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/mgvd8d/last_big_wgpurs_example_shaders_are_fully_ported)_
+
+[naga]: https://github.com/gfx-rs/naga
+[wgpu]: https://github.com/gfx-rs/wgpu
+[WebGPU]: https://gpuweb.github.io/gpuweb/
+[WGSL]: https://gpuweb.github.io/gpuweb/wgsl/
+[@wumpf]: https://github.com/Wumpf
+[graphics team blog]: https://mozillagfx.wordpress.com/2021/03/10/webgpu-progress/
+
+### [rust-gpu v0.3][rust-gpu-v0-3]
+
+{{ image_figure(
+    alt="A Sci-Fi helmet model"
+    src="grr-gltf.jpg"
+    caption="The Khronos Sci-Fi helmet model in a [glTF model viewer](https://github.com/msiglreith/grr-gltf)
+created by [@msiglreith](https://github.com/msiglreith) using rust-gpu") }}
+
+[rust-gpu] is a new codegen backend by Embark Studios for Rust, aimed at making
+Rust a first class language for writing GPU shaders!
+This past month was the [release of rust-gpu v0.3][rust-gpu-v0-3].
+Some of the highlights:
+
+- A lot of technical debt that was visible to users
+  (such as `#[allow(unused_attributes)]`) was removed.
+- rust-gpu now also supports basic ADT enums and has a whole inference pass
+  for storage class variables.
+- All Embark's shaders for their internal engine
+  [are now written in Rust](https://twitter.com/repi/status/1365256477569667075)
+  \- no more GLSL/HLSL, just Rust for all CPU & GPU code!
+
+Full release notes are available [here][rust-gpu-v0-3].
+
+For more information on how to get started with using rust-gpu in your projects,
+check out [the Rust-GPU Dev Guide](https://embarkstudios.github.io/rust-gpu/book/).
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/lxpcc2/announcing_rustgpu_v03)_
+
+[rust-gpu]: https://shader.rs
+[rust-gpu-v0-3]: https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.3.0
+[grr-gltf]: https://github.com/msiglreith/grr-gltf
+[@msiglreith]: https://github.com/msiglreith
+
+### [rafx]
+
+{{ image_figure(
+    alt="rafx tilemap rendering"
+    src="rafx-tilemap-rendering.png"
+    caption="Rafx rendering an example tilemap from [LDTK level editor](https://ldtk.io)") }}
+
+Rafx is a multi-backend renderer that optionally integrates with the
+[distill][rafx-distill] asset pipeline. This month, a fourth layer
+was introduced to the library, `rafx-renderer`. It provides a plugin system,
+simplifying framework setup in a project.
+
+The demo now includes a tilemap renderer that integrates with the [LDTK level
+editor][rafx-ldtk]. The `distill` integration processes the level files offline
+for very efficient loading/rendering at runtime.
+
+Sprite rendering in general is also much faster now. Scenes with 40k-100k
+sprites can render at 60fps (measured on M1 mini) depending on
+transparency/distinct Z values in the scene. New examples demonstrate tilemap
+and sprite rendering.
+
+Early work was also done to reuse descriptor sets across frames and reduce
+dynamic memory allocation when working with descriptor sets. Rafx also
+includes more options for HDR tonemapping.
+
+[rafx]: https://github.com/aclysma/rafx
+[rafx-distill]: https://github.com/amethyst/distill
+[rafx-ldtk]: https://ldtk.io
+
+### [FemtoVG]
+
+![femtovg](femtovg.png)
+
+FemtoVG is a 2D canvas like vector graphics library based on nanovg that has
+been previously featured in this newsletter.
+
+This month, the FemtoVG team has implemented a new rendering backend based on
+the `wgpu` library. This work is being done in this [fork][femtovg-fork] of
+FemtoVG and will be merged into the main repo soon. The team is currently
+looking for users to try out the new backend and provide feedback.
+
+Join the [FemtoVG Discord channel](https://discord.gg/V69VdVu).
+
+[FemtoVG]: https://github.com/femtovg/femtovg
+[femtovg-fork]: https://github.com/adamnemecek/femtovg
+
+### Kajiya
+
+![A race car in its natural habitat inspired by the Cornell Box](kajiya.gif)
+
+Kajiya by [@h3r2tic] is a real-time global illumination renderer.
+
+It utilizes Vulkan Ray Tracing via [ash][ash] and [hassle-rs][hassle-rs] to
+implement multi-bounce light transport in fully dynamic scenes. By shooting
+only two rays per pixel on average, it keeps performance high; thanks to a
+voxel-based light cache and extensive spatio-temporal filtering, it keeps
+noise low. It supports physically-based rendering of [GLTF][gltf-rs] scenes,
+and achieves a close match to reference path-tracing.
+
+Kajiya is still in its infancy, and not yet available to the public, but you
+can get glimpses of its development by following the author on [Twitter][h3r2tic-twitter].
+
+[ash]: https://github.com/MaikKlein/ash
+[hassle-rs]: https://github.com/Traverse-Research/hassle-rs
+[gltf-rs]: https://github.com/gltf-rs/gltf
+[@h3r2tic]: https://github.com/h3r2tic
+[h3r2tic-twitter]: https://twitter.com/h3r2tic
+
+### [Bevy Retro][bevy_retro]
+
+{{ image_figure(
+    alt="pixel-perfect-collision-demo"
+    src="bevy_retro.gif"
+    caption="Pixel-perfect collision [example](https://github.com/katharostech/bevy_retro/tree/master/examples#collisions)") }}
+
+[Bevy Retro][bevy_retro] is a new [Bevy] plugin designed for making pixel-perfect
+games.
+
+This project was released under the [Katharos License][katharos_license]. This
+license has moral and ethical implications that you may or may not agree with,
+so please read it before making use of this project.
+
+Bevy Retro features:
+
+- Web and desktop support out of the box - it even runs in Safari on iOS!
+- Integer pixel coordinates - no need to round floats to keep pixels aligned!
+- Support for sprites, sprite sheets and animations.
+- A super simple hierarchy system.
+- A custom, scaled, pixel-perfect renderer with three camera modes: fixed width,
+  fixed height, and letter-boxed.
+- An [LDtk](https://ldtk.io) map loading plugin.
+- Pixel-perfect collision detection.
+- Support for post-processing effects using custom shaders or the built-in CRT filter.
+- Support for custom pixel aspect ratios.
+
+Feel free to discuss the project and provide feedback
+[on GitHub](https://github.com/katharostech/bevy_retro/discussions).
+
+[bevy_retro]: https://github.com/katharostech/bevy_retro
+[Bevy]: https://bevyengine.org
+[katharos_license]: https://github.com/katharostech/katharos-license
+[bevy_retro_collision_example]: https://github.com/katharostech/bevy_retro/tree/master/examples#collisions
+
+### [RAUI v0.28.1][raui-git]
+
+{{ image_figure(
+    alt="RAUI + Tetra TODO app"
+    src="raui-tetra-todo-app-material-ui.gif"
+    caption="RAUI + Tetra TODO app demo") }}
+
+[RAUI][raui-git] by [@PsichiX][psichix-twitter] is a Renderer Agnostic User
+Interface crate that is based on declarative mode UI composition similar to
+React.js and UE4 Slate system.
+
+This month's updates:
+
+- Advanced navigation system mainly for the use in [Oxygengine][oxygengine-git]
+  game engine.
+- [Tesselation renderer][raui-tesselation] module to allow buildings
+  Vertex + Index + Batch buffers for backends that allows to render meshes.
+- [Tetra integration][raui-tetra] crate that allows use of RAUI with [Tetra][Tetra]
+  game framework.
+- Porting [demos][raui-demos] to Tetra which became one of two mainly supported
+  backends for RAUI.
+
+[raui-git]: https://github.com/PsichiX/raui
+[raui-tesselation]: https://github.com/PsichiX/raui/tree/master/raui-tesselate-renderer
+[raui-tetra]: https://github.com/PsichiX/raui/tree/master/raui-tetra-renderer
+[raui-demos]: https://github.com/PsichiX/raui/tree/master/demos
+
+### [egui-macroquad]
+
+{{ image_figure(
+    alt="Code example of usage of this library."
+    src="egui-macroquad.png"
+    caption="Code example of usage of this library.") }}
+
+[egui-macroquad] is a small library to use [egui][egui-git] inside of
+[macroquad][macroquad-git]. It consists only of two functions.
+
+Used in [Portal Explorer][portal-explorer], see the section above.
+
+[egui-macroquad]: https://github.com/optozorax/egui-macroquad
+[macroquad-git]: https://github.com/not-fl3/macroquad
+[egui-git]: https://github.com/emilk/egui
+
+### [building-blocks] v0.6.0
+
+![LOD Terrain](building-blocks-lod-terrain.jpg)
+
+In v0.6.0, the [building-blocks] voxel library brings a couple important features
+for scaling up to large maps:
+
+- pyramids for level of detail
+- multichannel arrays
+
+There is still much work to be done to optimize the voxel mesh LOD at large
+scales and improve the cosmetics of LOD transitions, but the preliminary work
+has allowed us to demonstrate the feasibility of this approach with a new demo
+that you can view [here](https://youtube.com/watch?v=fCP8xZYJiSI).
+
+Full release notes are available on [here][blocks-notes].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust_gamedev/comments/ma76je/buildingblocks_v060)_
+
+[blocks-notes]: https://github.com/bonsairobo/building-blocks/releases/tag/v0.6.0
+[building-blocks]: https://github.com/bonsairobo/building-blocks
+
+### [WhatTheFrame]
+
+![whattheframe gui](whattheframe.png)
+
+[WhatTheFrame] by [@JMS55]
+is a frame-based cpu profiler crate along with a [GTK] ([gtk4-rs]) based GUI.
+
+This project aims to answer the question: Which frames of my game are slow, and why?
+
+It aims to be simple to use, consisting of only 3 functions: Call `let _r = Profiler::new_frame()`
+at the start of each frame, `let _r = Profiler::new_task("task_name")` whenever you
+want to profile a task, and finally `Profiler::end_profiling()` once at the end.
+
+You can then open the resulting `.wtf` profile in the GUI and analyze the results.
+
+This month was spent designing and implementing both the GUI and profiler crate.
+The core functionality of both programs are complete, and all that remains is
+cleanup, tweaks, optimization, and finally packaging the GUI up.
+
+[WhatTheFrame]: https://github.com/JMS55/whattheframe
+[@JMS55]: https://github.com/JMS55
+[GTK]: https://gtk.org/
+[gtk4-rs]: https://github.com/gtk-rs/gtk4-rs#gtk4-rs-
+
+### [Bitmapflow]
+
+{{ image_figure(
+    alt="Bitmapflow interpolating a walking mech animation"
+    src="bitmapflow.gif"
+    caption="Bitmapflow interpolating a walking mech animation") }}
+
+Bitmapflow ([GitHub][Bitmapflow-GitHub]) by [@bauxitedev] is a tool to help you
+generate [inbetweens] for animated sprites. In other words, it makes your
+animations smoother. It uses [optical flow] to try to guess how the pixels move
+between frames, and blends them accordingly. The results are far from perfect,
+and probably require some editing by hand afterwards, but it can produce decent
+results.
+
+It supports loading and saving animated gifs, spritesheets and individual
+frames.
+
+The tool is written using godot-rust and executables are available for Windows,
+although Linux support will be coming soon. (If you compile the program from
+source, it already works on Linux.)
+
+A full demonstration and walkthrough of the program is available on
+[YouTube][Bitmapflow-Youtube].
+
+You can try it out yourself on [itch.io][Bitmapflow-Itch].
+
+_Discussions: [/r/rust_gamedev][Bitmapflow-Reddit]_
+
+[Bitmapflow]: https://github.com/Bauxitedev/bitmapflow
+[Bitmapflow-GitHub]: https://github.com/Bauxitedev/bitmapflow
+[Bitmapflow-Youtube]: https://youtube.com/watch?v=rC359dDAMiI
+[Bitmapflow-Reddit]: https://reddit.com/r/rust_gamedev/comments/mjw90q/introducing_bitmapflow_a_tool
+[Bitmapflow-Itch]: https://bauxite.itch.io/bitmapflow
+[@bauxitedev]: https://twitter.com/bauxitedev
+[inbetweens]: https://en.wikipedia.org/wiki/Inbetweening
+[optical flow]: https://en.wikipedia.org/wiki/Optical_flow
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt='"Graphite" drawn using the circles and rectangles of the new tool drawing system'
+    src="graphite-tool-system-progress.png"
+    caption='"Graphite" drawn using the circles and rectangles of the new tool drawing system') }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-progress vector and
+raster graphics editor built on a nondestructive node-based workflow.
+
+The team has grown from 1 to 5 in the past month and major progress was made
+building core architectural Rust code. A large accomplishment was designing the
+[software architecture diagram][graphite-architecture].
+
+The current editor now has functional Select, Rectangle, and Ellipse tools
+thanks to the newly-added tool state machine and SVG viewport drawing. The UI
+now also implements tool-related icons and buttons, bringing it closer to
+parity with the design mockup. The team also set up a Web/Rust-WASM build
+system, GitHub CI to confirm PRs compile, and put together
+[starter documentation][graphite-docs] for the codebase, UX design, and manual.
+
+Graphite is making rapid progress towards becoming a nondestructive, procedural
+graphics editor suitable of replacing traditional 2D DCC applications. Please
+[join the Discord][graphite-discord] - and consider asking for a tour of the
+code and how you can help!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://github.com/GraphiteEditor/Graphite/blob/master/README.md#discord
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-architecture]: https://files.keavon.com/-/CostlyViolentPurplemarten/Architecture_Diagram.png
+[graphite-docs]: https://github.com/GraphiteEditor/Graphite/blob/master/docs/index.md
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [femtovg is looking for help with the wgpu backend][femtovg-help].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [gfx-rs's "contributor-friendly" issues][gfx-issues].
+- [wgpu's "help wanted" issues][wgpu-help-wanted].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[femtovg-help]: https://reddit.com/r/rust/comments/mfuo4m/femtovg_2d_vector_graphics_crate_is_looking_for
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[gfx-issues]: https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly
+[wgpu-help-wanted]: https://github.com/gfx-rs/wgpu-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/good%20first%20issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust](https://reddit.com/r/rust/comments/mo72tu/this_month_in_rust_gamedev_20_march_2021),
+[Twitter](https://twitter.com/rust_gamedev/status/1380907528201076741),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/020/kajiya.gif b/content/news/020/kajiya.gif
new file mode 100644
index 000000000..f937de2bd
Binary files /dev/null and b/content/news/020/kajiya.gif differ
diff --git a/content/news/020/minewars.jpg b/content/news/020/minewars.jpg
new file mode 100644
index 000000000..0c1c8b0d3
Binary files /dev/null and b/content/news/020/minewars.jpg differ
diff --git a/content/news/020/name-needed.gif b/content/news/020/name-needed.gif
new file mode 100644
index 000000000..21d0cb760
Binary files /dev/null and b/content/news/020/name-needed.gif differ
diff --git a/content/news/020/orbital-decay.gif b/content/news/020/orbital-decay.gif
new file mode 100644
index 000000000..7428b1d07
Binary files /dev/null and b/content/news/020/orbital-decay.gif differ
diff --git a/content/news/020/outer-wonders.gif b/content/news/020/outer-wonders.gif
new file mode 100644
index 000000000..76b792bd6
Binary files /dev/null and b/content/news/020/outer-wonders.gif differ
diff --git a/content/news/020/oxygengine-raui-integration.gif b/content/news/020/oxygengine-raui-integration.gif
new file mode 100644
index 000000000..98e363ffd
Binary files /dev/null and b/content/news/020/oxygengine-raui-integration.gif differ
diff --git a/content/news/020/pglowrpg_progress.jpg b/content/news/020/pglowrpg_progress.jpg
new file mode 100644
index 000000000..ad9bc9d1f
Binary files /dev/null and b/content/news/020/pglowrpg_progress.jpg differ
diff --git a/content/news/020/planck_ecs.png b/content/news/020/planck_ecs.png
new file mode 100644
index 000000000..432792eaa
Binary files /dev/null and b/content/news/020/planck_ecs.png differ
diff --git a/content/news/020/portal-explorer.png b/content/news/020/portal-explorer.png
new file mode 100644
index 000000000..416905397
Binary files /dev/null and b/content/news/020/portal-explorer.png differ
diff --git a/content/news/020/rafx-tilemap-rendering.png b/content/news/020/rafx-tilemap-rendering.png
new file mode 100644
index 000000000..036bf35af
Binary files /dev/null and b/content/news/020/rafx-tilemap-rendering.png differ
diff --git a/content/news/020/raui-tetra-todo-app-material-ui.gif b/content/news/020/raui-tetra-todo-app-material-ui.gif
new file mode 100644
index 000000000..5774413df
Binary files /dev/null and b/content/news/020/raui-tetra-todo-app-material-ui.gif differ
diff --git a/content/news/020/rg3d-tut.jpg b/content/news/020/rg3d-tut.jpg
new file mode 100644
index 000000000..edd8198aa
Binary files /dev/null and b/content/news/020/rg3d-tut.jpg differ
diff --git a/content/news/020/rg3d_logo.png b/content/news/020/rg3d_logo.png
new file mode 100644
index 000000000..53d8a734d
Binary files /dev/null and b/content/news/020/rg3d_logo.png differ
diff --git a/content/news/020/robo.jpg b/content/news/020/robo.jpg
new file mode 100644
index 000000000..62fa107fc
Binary files /dev/null and b/content/news/020/robo.jpg differ
diff --git a/content/news/020/robotcards.png b/content/news/020/robotcards.png
new file mode 100644
index 000000000..77aafc14e
Binary files /dev/null and b/content/news/020/robotcards.png differ
diff --git a/content/news/020/rusty-bomber.png b/content/news/020/rusty-bomber.png
new file mode 100644
index 000000000..55a735b4f
Binary files /dev/null and b/content/news/020/rusty-bomber.png differ
diff --git a/content/news/020/secbot.jpg b/content/news/020/secbot.jpg
new file mode 100644
index 000000000..0fbfa158d
Binary files /dev/null and b/content/news/020/secbot.jpg differ
diff --git a/content/news/020/sm64js.jpg b/content/news/020/sm64js.jpg
new file mode 100644
index 000000000..362b25a32
Binary files /dev/null and b/content/news/020/sm64js.jpg differ
diff --git a/content/news/020/starframe.gif b/content/news/020/starframe.gif
new file mode 100755
index 000000000..1e7d623c0
Binary files /dev/null and b/content/news/020/starframe.gif differ
diff --git a/content/news/020/station-iapetus-youtube.png b/content/news/020/station-iapetus-youtube.png
new file mode 100644
index 000000000..fb6448e89
Binary files /dev/null and b/content/news/020/station-iapetus-youtube.png differ
diff --git a/content/news/020/stellary2-centered-view.gif b/content/news/020/stellary2-centered-view.gif
new file mode 100644
index 000000000..c5dabf686
Binary files /dev/null and b/content/news/020/stellary2-centered-view.gif differ
diff --git a/content/news/020/tetris-hard-drop.gif b/content/news/020/tetris-hard-drop.gif
new file mode 100644
index 000000000..dc494e63b
Binary files /dev/null and b/content/news/020/tetris-hard-drop.gif differ
diff --git a/content/news/020/theta-wave.gif b/content/news/020/theta-wave.gif
new file mode 100644
index 000000000..a4c2153e2
Binary files /dev/null and b/content/news/020/theta-wave.gif differ
diff --git a/content/news/020/veloren.jpg b/content/news/020/veloren.jpg
new file mode 100644
index 000000000..53ca3345b
Binary files /dev/null and b/content/news/020/veloren.jpg differ
diff --git a/content/news/020/wgpu-conservative-bunny.png b/content/news/020/wgpu-conservative-bunny.png
new file mode 100644
index 000000000..a151704ee
Binary files /dev/null and b/content/news/020/wgpu-conservative-bunny.png differ
diff --git a/content/news/020/whattheframe.png b/content/news/020/whattheframe.png
new file mode 100644
index 000000000..6cbf3e229
Binary files /dev/null and b/content/news/020/whattheframe.png differ
diff --git a/content/news/020/wor-capsule.png b/content/news/020/wor-capsule.png
new file mode 100644
index 000000000..aca016309
Binary files /dev/null and b/content/news/020/wor-capsule.png differ
diff --git a/content/news/021/abstreet.png b/content/news/021/abstreet.png
new file mode 100644
index 000000000..e9d069698
Binary files /dev/null and b/content/news/021/abstreet.png differ
diff --git a/content/news/021/bevy-shoot-video.jpg b/content/news/021/bevy-shoot-video.jpg
new file mode 100644
index 000000000..8c437cff9
Binary files /dev/null and b/content/news/021/bevy-shoot-video.jpg differ
diff --git a/content/news/021/chip-8-rs.jpg b/content/news/021/chip-8-rs.jpg
new file mode 100644
index 000000000..1c7a31590
Binary files /dev/null and b/content/news/021/chip-8-rs.jpg differ
diff --git a/content/news/021/dfs.jpg b/content/news/021/dfs.jpg
new file mode 100644
index 000000000..b00892a07
Binary files /dev/null and b/content/news/021/dfs.jpg differ
diff --git a/content/news/021/egui.gif b/content/news/021/egui.gif
new file mode 100644
index 000000000..e2208c6a5
Binary files /dev/null and b/content/news/021/egui.gif differ
diff --git a/content/news/021/fishgame.gif b/content/news/021/fishgame.gif
new file mode 100644
index 000000000..101cabfc8
Binary files /dev/null and b/content/news/021/fishgame.gif differ
diff --git a/content/news/021/gamedev-meetup.png b/content/news/021/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/021/gamedev-meetup.png differ
diff --git a/content/news/021/graphite-ferris.png b/content/news/021/graphite-ferris.png
new file mode 100644
index 000000000..67ba95192
Binary files /dev/null and b/content/news/021/graphite-ferris.png differ
diff --git a/content/news/021/index.md b/content/news/021/index.md
new file mode 100644
index 000000000..84236eeb4
--- /dev/null
+++ b/content/news/021/index.md
@@ -0,0 +1,1061 @@
++++
+title = "This Month in Rust GameDev #21 - April 2021"
+date = 2021-05-09
+transparent = true
++++
+
+Welcome to the 21st issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [gamedev.rs](#gamedev-rs)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Library & Tooling Updates](#library-tooling-updates)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_Optional image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The fourth Rust Gamedev Meetup happened in April. It was an opportunity for
+developers to show off what Rust projects they've been working on in the game
+ecosystem. This month, we heard a talk about threading in WASM, profiling,
+getting a game ready for release, and much more. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video].
+
+The meetups take place on the second Saturday every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord], and can also be [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on in a future meetup, fill out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=XE0lH0tlbBs
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## gamedev.rs
+
+As you may have noticed, [rust-gamedev.github.io](https://rust-gamedev.github.io)
+(this site) got an awesome custom domain: [gamedev.rs](https://gamedev.rs)!
+We've been looking for a good & available domain a [long time][gamedev-rs-233].
+Huge thanks to Juratech Systems for donating their domain
+to the Rust GameDev WG! ❤️
+
+We've also [switched to a more compact URL scheme][gamedev-rs-586]
+with separate categories for [the newsletter](https://gamedev.rs/news)
+and [other posts](https://gamedev.rs/blog).
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/mq6mmj/rustgamedevgithubio_is_now_gamedevrs),
+[Twitter](https://twitter.com/ozkriff/status/1382016040662614017)_
+
+[gamedev-rs-233]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/233
+[gamedev-rs-586]: https://github.com/rust-gamedev/rust-gamedev.github.io/pull/586
+
+## Game Updates
+
+### [LD48: Micronaut][micronaut-itch]
+
+{{ image_figure(
+    alt="GIF showing Micronaut's primary level recursion mechanic"
+    src="micronaut.gif"
+    caption="Micronaut features a deep recursive level layout",
+    link="https://healthire.itch.io/micronaut") }}
+
+Micronaut is a small puzzle platformer by [@Healthire] made in 48 hours for the
+Ludum Dare 48 Compo. Run and jump your way through a recursive level layout to
+reach the end. Cross platform for native and web, with source available on
+[GitHub][micronaut-github].
+
+_Discussions: [Twitter][micronaut-twitter], [ldjam.com][micronaut-ldjam]_
+
+[@Healthire]: https://twitter.com/healthire
+[micronaut-github]: https://github.com/Healthire/ld48
+[micronaut-itch]: https://healthire.itch.io/micronaut
+[micronaut-twitter]: https://twitter.com/healthire/status/1386468257125830662
+[micronaut-ldjam]: https://ldjam.com/events/ludum-dare/48/micronaut
+
+### [LD48: The Submariner][submariner-itch]
+
+[![GIF of a submarine firing torpedoes at vicious attacking fish.](submariner.gif)][submariner-itch]
+
+[The Submariner][submariner-itch] is a minimalist action
+game made by [@kettlecorn] for the Ludum Dare 48 Compo. Dive
+deep into the murky depths, defend yourself with torpedoes,
+and try to find a way home!
+
+The Submariner was made with the [Macroquad][macroquad] game engine
+and [hecs] was used as the Entity-Component-System (ECS) data structure.
+
+[Click here to play the Submariner in your browser.][submariner-itch]
+
+_Discussions: [ldjam.com][submariner-ldjam]_
+
+[@kettlecorn]: https://twitter.com/kettlecorn
+[submariner-github]: https://github.com/kettle11/LD48
+[submariner-itch]: https://kettlecorn.itch.io/submariner
+[submariner-ldjam]:https://ldjam.com/events/ludum-dare/48/the-submariner
+[hecs]:https://github.com/Ralith/hecs
+
+### [LD48: Depth-First Search][dfs-ldjam]
+
+![Depth-First Search's title card](dfs.jpg)
+
+[Depth-First Search][dfs-ldjam] by [@LPGhatguy] and [@evaeraevaera] is a space
+dogfighting game made in 72 hours for the Ludum Dare 48 Jam. Travel alone to the
+center of the galaxy, battling space pirates, alien eyeballs, and more.
+
+The game was made possible by [wgpu], [egui], [rapier], [hecs], and many more
+Rust community libraries!
+
+_Discussions: [ldjam.com][dfs-ldjam], [Twitter][dfs-twitter]_
+
+[@LPGhatguy]: https://twitter.com/LPGhatguy
+[@evaeraevaera]: https://twitter.com/evaeraeveara
+[dfs-ldjam]: https://ldjam.com/events/ludum-dare/48/depth-first-search
+[dfs-twitter]: https://twitter.com/evaeraevaera/status/1386863330355257346
+[rapier]: https://github.com/dimforge/rapier
+[hecs]: https://github.com/Ralith/hecs
+
+### [MineWars][minewars]
+
+![MineWars Game Screenshot](minewars.jpg)
+
+[MineWars][minewars] ([Twitter][minewars-twitter], [Reddit][minewars-reddit])
+by @jamadazi is Minesweeper reimagined as a Multiplayer Real Time Strategy!
+
+First announced publicly last month, the project is working towards an alpha
+release for public playtesting. This month's progress has been mostly internal
+refactoring to be able to support networked multiplayer fully. The next steps
+are to implement the remaining core game mechanics. The client implementation
+may be changed to use the new `bevy_ecs_tilemap` crate.
+
+Made in the [Bevy Game Engine][bevy].
+
+[minewars]: https://minewars.cc
+[minewars-twitter]: https://twitter.com/MineWarsGame
+[minewars-reddit]: https://reddit.com/r/minewars
+[bevy]: https://bevyengine.org
+
+### [Fish game]
+
+![Fish game](fishgame.gif)
+
+[Fish game] is an online multiplayer game,
+created in a collaboration between [Nakama][nakama], an open-source scalable
+game server, and the [Macroquad][macroquad] game engine.
+
+This month:
+
+- [Fish game tutorial] got published.
+  The tutorial breaks down the game codebase into steps, from setting
+  up an empty macroquad project into building a platformer game, and
+  then turning it into a multiplayer game with Nakama.
+
+- [Web build][fishgame-itch] went live on itch.io
+
+[Fish game]: https://github.com/heroiclabs/fishgame-macroquad
+[fishgame-itch]: https://fedorgames.itch.io/fish-game
+[nakama]: https://heroiclabs.com/
+[macroquad]: https://github.com/not-fl3/macroquad
+[Fish game tutorial]: https://macroquad.rs/tutorials/fish-tutorial/
+
+### Project YAWC
+
+![A demonstration of the Project YAWC map editor](project_yawc_map_editor.png)
+
+Project YAWC ([Twitter](https://twitter.com/ProjectYawc)) is a turn-based
+strategy game built in GGEZ, being developed by junkmail.
+
+April saw the release of Alpha 5, including the integrated map editor, alongside
+balance changes and unit additions.
+
+An [alpha access request form](https://forms.gle/w22ohPGNk58fo9bv6) is available,
+if you want to try it out.
+
+### [The Process]
+
+{{ image_figure(
+    alt="Animated image showcasing the test map in The Process"
+    src="the_process.gif"
+    caption="The new test map in The Process") }}
+
+[The Process] by @setzer22 is an upcoming
+game about factory building, process management and carrot production, built
+with Rust using the Godot game engine!
+
+Some of the main highlights of the game:
+
+- Automate complex processes by combining machines and programmable workers.
+- Obtain materials from a wide variety of natural resources: Even chicken!
+- An upbeat, wholesome aesthetic: Factories don't need to be depressing.
+
+This last month was focused on implementing the following features:
+
+- A [test map](https://twitter.com/PlayTheProcess/status/1381648397569036291) to
+  ensure all corners of the codebase are working
+- Improved player mobility by introducing a
+  [grappling hook](https://www.reddit.com/r/rust_gamedev/comments/mztqhy/added_a_grappling_hook_to_my_game_built_with_rust/)
+
+The game has been in active development for over a year and is now approaching
+its first initial playable alpha version. Stayed tuned to the official twitter
+for updates!
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/mopoxk/showcasing_my_game_the_process_built_with_rust/),
+[Twitter](https://twitter.com/PlayTheProcess)_
+
+[The Process]: https://twitter.com/PlayTheProcess/
+
+### [pGLOWrpg][pglowrpg-github]
+
+![Improved text rendering](pglowrpg_progress.jpg)
+
+pGLOWrpg ([GitHub][pglowrpg-github], [Twitter][pglowrpg-twitter]) by [@Roal_Yr]
+is a Procedurally Generated Living Open World RPG,
+a long-term project in development, which aims to be a narrative text-based game
+with maximum portability and accessibility.
+
+Recent updates include:
+
+- Finished implementing new printing interface.
+- Different types of text: normal, announcement, banner, etc.
+- Text color scheme in separate .ron preset file.
+- Text wrap implemented.
+- Fallback modes for text printing implemented.
+
+[@Roal_Yr]: https://twitter.com/Roal_Yr
+[pglowrpg-twitter]: https://twitter.com/pglowrpg
+[pglowrpg-github]: https://github.com/roalyr/pglowrpg
+
+### [Taipo][taipo-itch]
+
+{{ image_figure(
+    alt="Screenshot of Taipo showing a variety of towers and enemies"
+    src="taipo.png"
+    caption="Click the image to play the game in your desktop browser!",
+    link="https://euclidean-whale.itch.io/taipo") }}
+
+Taipo ([itch.io][taipo-itch], [GitHub][taipo-github]) by [@rparrett]
+is a Tower Defense game that's controlled solely by typing words and phrases.
+
+Taipo is intended to be a thin veneer of a game over a tool for practicing
+Japanese, but there's an English mode as well. Gameplay sessions are short and
+the game is playable in a desktop web browser.
+
+Taipo was built with [Bevy 0.5][taipo-bevy] with web builds made possible by
+[bevy_webgl2] and [bevy_kira_audio]. Taipo is also supported by these great
+projects: [bevy_tiled], [bevy_asset_ron].
+
+[taipo-itch]: https://euclidean-whale.itch.io/taipo
+[taipo-github]: https://github.com/rparrett/taipo
+[taipo-bevy]: https://bevyengine.org
+[bevy_webgl2]: https://github.com/mrk-its/bevy_webgl2
+[bevy_asset_ron]: https://github.com/jamadazi/bevy_asset_ron
+[bevy_tiled]: https://github.com/stararawn/bevy_tiled
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio
+[@rparrett]: https://github.com/rparrett
+
+### [A/B Street]
+
+![Consolidated intersections in A/B Street](abstreet.png)
+
+[A/B Street] by [@dabreegster] is a traffic simulation game exploring how small
+changes to roads affect cyclists, transit users, pedestrians, and drivers, with
+support for any city with OpenStreetMap coverage.
+
+In April, a new road editor was prototyped, letting the number and width of
+lanes be changed. Initial installation and downloading new maps is now simpler.
+Slowly, complex intersections are being handled better. The team also completed
+four usability study sessions and adjusted the UI accordingly.
+
+[A/B Street]: https://github.com/a-b-street/abstreet
+[@dabreegster]: https://twitter.com/CarlinoDustin
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea on Steam](wor-ice.jpg)][wor]
+
+[Way of Rhea][wor] is a picturesque puzzle platformer—without the platforming.
+Solve mind bending color puzzles, unlock new areas of a vibrant hub world, and
+talk to NPCs to unravel the mysteries of a world you left behind!
+
+Way of Rhea is being produced by [@masonremaley][mason-remaley]. Latest Way of
+Rhea developments:
+
+- A [hierarchy tree view][wor-hierarchy] was added to the editor to make getting
+  art into the game easier.
+- Work is wrapping up getting [art into the first snow crab level!][wor-art]
+- [@masonremaley][mason-remaley] wrote up [an article walking through how the
+  Way of Rhea crash reporter works][wor-crash-reporter].
+- [@masonremaley][mason-remaley] is mixing signed distance fields, bézier
+  curves, and art by [Carolyn Whitmeyer][carolyn-whitmeyer] to create
+  [procedural vines][wor-vines].
+- [Carolyn Whitmeyer][carolyn-whitmeyer], the game's artist, released [a demo
+  real including some content from Way of Rhea][wor-cw-demo-reel].
+
+[wor]: https://store.steampowered.com/app/1110620?utm_campaign=tmirgd&utm_source=n21
+[wor-art]: https://twitter.com/AnthropicSt/status/1388907046574215172
+[wor-hierarchy]: https://twitter.com/AnthropicSt/status/1387947007508160517
+[mason-remaley]: https://twitter.com/masonremaley
+[wor-crash-reporter]: https://www.anthropicstudios.com/2021/03/05/crash-reporter/
+[carolyn-whitmeyer]: https://www.instagram.com/cw_visuals_insta/
+[wor-cw-demo-reel]: https://twitter.com/masonremaley/status/1387102693626421254
+[wor-vines]: https://twitter.com/masonremaley/status/1389070879536173056
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Airship"
+    src="veloren.jpg"
+    caption="A mist rolling over the land") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In April, work started on 0.10. Work is being done on combat, with new models
+being created for enemies, animations being refined, and new player gear being
+added. The trading and economic systems have continued progress at a good pace.
+The music system was expanded to support combat music.
+
+Veloren's financial state was overhauled to examine previous expenses, and
+prepare for provisioning the dedicated server. Functionality was added to switch
+between server-authoritative and client-authoritative physics. Skeletons for
+big-winged creatures were added. Data being sent over the network is being
+optimized to reduce the amount of bandwidth players have to use.
+
+April's full weekly devlogs: "This Week In Veloren...":
+[#114](https://veloren.net/devblog-114),
+[#115](https://veloren.net/devblog-115),
+[#116](https://veloren.net/devblog-116).
+[#117](https://veloren.net/devblog-117).
+
+[veloren]: https://veloren.net
+
+### [Outer Wonders]
+
+![Animation showing Bibi, the main protagonist of Outer Wonders,
+jumping from a treetop through a hole, rolling from obstacle to obstacle
+at the bottom of the tree, and then leaning on a coiled snake to jump back
+up to the other side of the treetop and continue its way](outer-wonders.gif)
+
+[Outer Wonders] is a colorful, pixel art, puzzle-based adventure game
+developed by [Utopixel] where you play as Bibi, a cute round monkey who
+enjoys rolling in straight lines. Explore a whimsical nature where
+altering the environment is key to progress, and solve puzzles to protect
+its wonders.
+
+In April, [Utopixel] released the first playable demo of [Outer Wonders]
+for Windows and Linux on [itch.io]! In order to achieve this, the [Utopixel]
+team:
+
+- Added a cutscene and a tutorial level at the beginning of the demo campaign.
+- Integrated sound effects for interaction with the environment and the UI.
+- Finished implementing full support for Linux on [itch.io] through a portable
+  build of the game.
+- Polished the menus by adding a "_Press any key to continue_" prompt on game
+  startup, as well as a confirmation prompt for all quit buttons.
+- Tested the demo thoroughly on both Windows and Linux to fix all bugs
+  and level design issues.
+
+_Discussions:
+[/r/rust](https://www.reddit.com/mx3enm),
+[Twitter](https://twitter.com/utopixel/status/1385632054021345289)_
+
+[Outer Wonders]: https://utopixel.itch.io/outer-wonders
+[Utopixel]: https://utopixel.games
+[itch.io]: https://utopixel.itch.io/outer-wonders
+
+### [Theta Wave]
+
+{{ image_figure(
+    alt="Enemy Formations"
+    src="theta-wave.gif"
+    caption="Mobs may now be spawned in predefined formations",
+    link="https://github.com/amethyst/theta-wave") }}
+
+[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and
+[@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In
+the past month, the ["Formations"] update was released which organized how mobs
+are spawned in different phases of the level.
+
+They are now working on the ["Loot"] update which will enhance how loot drops
+are rolled, spawned, and how their effects are applied to the game.
+
+[Theta Wave]: https://github.com/amethyst/theta-wave
+[@micah_tigley]: https://twitter.com/micah_tigley
+[@carlosupina]: https://twitter.com/carlosupina
+[Amethyst Engine]: https://amethyst.rs/
+["Formations"]: https://github.com/amethyst/theta-wave/releases/tag/v0.1.5
+["Loot"]: https://github.com/amethyst/theta-wave/projects/4
+
+### [Station Iapetus]
+
+[![Station Iapetus Youtube](station-iapetus.jpg)][si-youtube]
+
+[Station Iapetus][Station Iapetus] by [@mrDIMAS] is a 3rd person shooter on the
+prison Iapetus near Saturn.
+This month's updates include:
+
+- New level (lab)
+- More assets
+- Performance improvements
+- Bots now able to use weapons
+- Melee attacks are much harder to avoid now
+- Bots drop items
+- Journal
+
+[@mrDIMAS]: https://github.com/mrDIMAS
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[Station Iapetus]: https://github.com/mrDIMAS/StationIapetus
+[si-youtube]: https://youtube.com/watch?v=O_ETjSkVBME
+
+## Engine Updates
+
+### [macroquad]
+
+[![macroquad](macroquad.png)][macroquad.rs]
+
+[macroquad] is a cross-platform (Windows/Linux/macOS/Android/iOS/WASM) game
+framework built on top of [miniquad].
+
+This month macroquad finally got out of alpha and `0.3` got released!
+All the examples with both sources and interactive wasm versions may
+be found on [the new macroquad website][macroquad_examples].
+
+[miniquad]: https://github.com/not-fl3/miniquad
+[macroquad]: https://github.com/not-fl3/macroquad
+[macroquad.rs]: https://macroquad.rs/
+[macroquad_examples]: https://macroquad.rs/examples
+
+### [Tetra]
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, version 0.6.3 was released, featuring:
+
+- BMFont support
+- An `ImageData` type for loading and manipulating images on the CPU
+- More color utilities, including shortcuts for premultiplied alpha
+- Bugfixes and docs improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+Additionally, [Tetra's website][tetra-website] has been updated to make it easier
+to read and contribute to. The site features tutorials, guides and FAQs on how to
+use Tetra effectively, as well as a showcase of cool projects made using the
+framework - additions are welcomed!
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md#063---2021-04-09
+[tetra-website]: https://tetra.seventeencups.net/
+
+### [Oxygengine v0.19.1][oxygengine-git]
+
+{{ image_figure(
+    alt="Oxygengine UI splash screen"
+    src="oxygengine-ui-splash-screen.gif"
+    caption="Making splash screens in Oxygengine with RAUI") }}
+
+[Oxygengine][oxygengine-git] by [@PsichiX][psichix-twitter] is the hottest
+HTML5 + WASM game engine for games written in Rust with web-sys.
+The goal of this project is to combine professional game development tools under
+one highly modular toolset.
+
+This month's changes include:
+
+- Fixed bugs with rendering images on Firefox browser.
+- Added support for filters.
+- Updated [RAUI][raui-git] dependency to improve UI.
+- Added support for image smoothing render command.
+- Added [puzzle game demo WIP][oxygengine-puzzle-demo] that shows how to use RAUI
+  to make for example fancy splash screens with RAUI.
+
+[psichix-twitter]: https://twitter.com/psichix
+[oxygengine-git]: https://github.com/PsichiX/Oxygengine
+[oxygengine-puzzle-demo]: https://github.com/PsichiX/Oxygengine/tree/master/demos/soulhunter
+
+### [rg3d]
+
+![rg3d](rg3d_logo.png)
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-box features. Some of
+the recent engine updates:
+
+- WebAssembly support ([check online demo][rg3d_wasm_demo])
+- Proc-macro for Visit trait
+- On-demand texture compression
+- Performance improvements
+- Various bug fixes and small improvements.
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+[rg3d_wasm_demo]: https://rg3d.rs/assets/webexample/index.html
+
+### [Arcana]
+
+{{ image_figure(
+    alt="arcana"
+    src="tanks.gif"
+    caption="A demo Arcana game") }}
+
+[Arcana] is a new game engine built with focus on ease of use
+without compromising on level of control.
+The engine is aimed to support a wide variety of games,
+from pixel-art to fully ray-traced,
+from single-player puzzles to online strategies.
+
+It is at a very early stage, not all necessary subsystems are done
+and code is in flux.
+
+The demo shown above was coded in a single evening,
+together with sprite sheet loading and sprite animations
+which will be integrated into the engine later.
+
+The default 2D renderer renders sprites with auto-batching,
+so all sprites are rendered in single instanced draw call,
+allowing rendering millions of sprites in one frame. Rendering
+is done with [`sierra`] - a Vulkan-like graphics API with
+batteries included. The engine also uses [`hecs`] as its ECS,
+and rolls its own simplistic `System` trait to define and run
+systems, once per frame or with fixed steps. [`rapier`] physics
+is integrated for 2D cases, but this system is kept opt-in.
+
+[Arcana]: https://github.com/zakarumych/arcana
+[`sierra`]: https://github.com/zakarumych/sierra
+[`hecs`]: https://crates.io/crates/hecs
+[`rapier`]: https://rapier.rs/docs/
+
+## Learning Material Updates
+
+### [Bevy Cheatbook][bevy_cheatbook]
+
+The Unofficial Bevy Cheatbook by @jamadazi is a practical book for learning the
+[Bevy Game Engine][bevy].
+
+The book recently got an assortment of improvements and new content, including
+a detailed page about [input handling][bevy_cheatbook_input] and a chapter about
+[browser games using WASM][bevy_cheatbook_wasm] (written with help from @Zaszi).
+
+The author now has a [GitHub Sponsors][jamadazi_ghsponsors], support them!
+
+[bevy_cheatbook]: https://bevy-cheatbook.github.io
+[bevy_cheatbook_input]: https://bevy-cheatbook.github.io/features/input-handling.html
+[bevy_cheatbook_wasm]: https://bevy-cheatbook.github.io/platforms/wasm.html
+[jamadazi_ghsponsors]: https://github.com/sponsors/jamadazi
+[bevy]: https://bevyengine.org
+
+### [Shooting Gallery Game in Rust and Bevy in 5 Hours][bevy-5h-video]
+
+[![preview](bevy-shoot-video.jpg)][bevy-5h-video]
+
+[@camsjams] released [a video][bevy-5h-video] about
+developing a shooting gallery using Bevy
+to demonstrate 2D games with multiple layers of depth.
+Some of the features covered in the video:
+
+- Basic UI with score and countdown clock.
+- 2D shooting with moving set pieces - clouds, grass, water.
+- Tracking of target hits, each target having their own unique
+  movement speed and points.
+- Game over state when clock runs out.
+
+[The full source is available here][bevy-5h-src].
+
+[bevy-5h-video]: https://youtube.com/watch?v=T1ZT0EkzvgI
+[@camsjams]: https://twitter.com/camsjams
+[bevy-5h-src]: https://github.com/camsjams/rust-2d-shooting-gallery
+
+### [Learning OpenGL in 7 days using Rust][tantan-video]
+
+[![video preview](tantan-preview.jpg)][tantan-video]
+
+[TanTan] released a [video][tantan-video] about making a water shader,
+loading 3D models, creating a beautiful transition shader
+using glium and macroquad.
+The water & transition shader is open source and can be found
+[here][mq-tantan-toolbox].
+
+[TanTan]: https://twitter.com/TantanDev
+[tantan-video]: https://youtube.com/watch?v=KEQIWqSq42k
+[mq-tantan-toolbox]: https://github.com/TanTanDev/macroquad_tantan_toolbox
+
+### [Rust Linz: Learning Rust with Game Development][rust-linz]
+
+{{ image_figure(
+    alt="Rust Linz talk screenshot"
+    src="rust-linz.png"
+    caption="Click on the image to watch the talk",
+    link="https://www.youtube.com/watch?v=79GyLlXAk-0") }}
+
+As part of April's Rust Linz meetup, [Herbert Wolverson][rust-linz-hw]
+gave a talk about using game development as a means of learning
+Rust, stepping through the creation of Flappy Dragon - a simple game
+used in his book 'Hands-On Rust' to teach the language basics.
+
+'Hands-On Rust' is currently available for 50% off, via a coupon
+posted on the [author's twitter][rust-linz-coupon].
+
+[rust-linz]: https://www.youtube.com/watch?v=79GyLlXAk-0
+[rust-linz-hw]: https://twitter.com/herberticus
+[rust-linz-coupon]: https://twitter.com/herberticus/status/1387090355250675716
+
+### [Rust LA Meetup: Happiness in Rust][rust-la]
+
+{{ image_figure(
+    alt="Rust LA talk screenshot"
+    src="rust-la.png"
+    caption="Click on the image to watch the talk",
+    link="https://www.youtube.com/watch?v=TJ3w-pZ7FMI") }}
+
+As part of April's Rust LA meetup, [Andrea Pessino][rad-andrea] from
+[Ready at Dawn][rad] gave a talk examining how to increase Rust adoption
+among game developers and performance-centric developers, giving
+practical, actionable advice to those who hit early bumps in their
+Rust discovery.
+
+[rust-la]: https://www.youtube.com/watch?v=TJ3w-pZ7FMI
+[rad-andrea]: https://twitter.com/AndreaPessino
+[rad]: http://www.readyatdawn.com/
+
+### [How To Write a Crash Reporter][crash-reporter]
+
+![How To Write a Crash Reporter](wor-crash-reporter.jpg)
+
+[@masonremaley][mason-remaley] wrote [an article][crash-reporter] walking
+through [Way of Rhea's][wor] crash reporter implementation.
+
+The article covers how to detect a crash, how to report a crash via chat
+services like Discord or Slack, and how to implement a robust native UI on
+Windows to handle requesting user consent to file the report, as well as some
+design considerations.
+
+[crash-reporter]: https://www.anthropicstudios.com/2021/03/05/crash-reporter/
+[mason-remaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620?utm_campaign=tmirgd&utm_source=n21
+
+### [awesome-quads]
+
+![logo](quads.png)
+
+[awesome-quads] is a curated list of links to [miniquad]/[macroquad]-related
+code & resources: libraries & plugins, games, examples, apps, docs, etc.
+The list has more than 40 links atm:
+feel free to write a PR if something isn't mentioned yet.
+
+[awesome-quads]: https://github.com/ozkriff/awesome-quads
+
+## Library & Tooling Updates
+
+### [wgpu]-0.8
+
+![Screenshot of tree rendering](wgpu-tree.png)
+
+[wgpu] is a [WebGPU] implementation in Rust. It is safe, efficient,
+and portable: can target both native (Vulkan/D3D/Metal) and the Web.
+
+The team has rolled out gfx-hal-0.8 and wgpu-0.8 updates on crates!
+Read [gfx-release-blog] for more details.
+
+In April, the team implemented more validation on both the host and the shader
+sides. [Naga]'s coverage of SPIR-V and MSL features is also greatly improved.
+
+On the infrastructure side, [wgpu] integrated [profiling] and got the first
+[naga performance][naga perf numbers] numbers, which looked promising.
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[webgpu]: https://gpuweb.github.io/gpuweb/
+[naga]: https://github.com/gfx-rs/naga
+[profiling]: https://github.com/aclysma/profiling
+[gfx-release-blog]: https://gfx-rs.github.io/2021/04/30/release-0.8.html
+[naga perf numbers]: https://github.com/gfx-rs/wgpu-rs/discussions/879
+
+### [nalgebra]
+
+![nalgebra](https://www.nalgebra.org/img/logo_nalgebra.svg)
+
+[nalgebra] ([GitHub], [Discord]) by [Dimforge] is a general-purpose
+linear-algebra library.
+
+With its version 0.26, [nalgebra] replaced the use of [generic-arrays] by
+regular Rust arrays using const-generics. See the [blog-post] to get all
+the details! In particular, this results in significant benefits:
+
+- Simpler generic programming with statically-sized vectors/matrices.
+- Much simpler debugging: inspect the content of vectors/matrices more easily.
+- Vectors and matrices with dimensions known at compile-time can be
+  constructed in a const-fn context.
+
+_Discussions: [/r/rust], [Twitter]_
+
+[nalgebra]: http://nalgebra.org
+[GitHub]: http://github.com/dimforge/nalgebra
+[Discord]: http://discord.gg/vt9DJSW
+[Dimforge]: http://dimforge.com
+[generic-arrays]: https://docs.rs/generic-array/0.14.4/generic_array/
+[blog-post]: https://www.dimforge.com/blog/2021/04/12/integrating-const-generics-to-nalgebra/
+[/r/rust]: https://www.reddit.com/r/rust/comments/mph8jr/integrating_constgenerics_to_nalgebra_026/
+[Twitter]: https://twitter.com/dimforge/status/1381643543626842114
+
+### [opensubdiv-petite]
+
+{{ image_figure(
+    alt="Low poly car model"
+    src="opensubdiv-petite.jpg"
+    caption="Low poly car with three levels of Catmull-Clark subdivision applied.") }}
+
+[Opensubdiv-petite] is a high level, selective, oxidized wrapper around Pixar’s
+[OpenSubdiv] [sudivison surface] meshing and evaluation library. OpenSubdiv allows
+for real time updates of the subdivided mesh if the topology of the control mesh
+is stable (e.g. a deforming character in a game).
+
+The crate comes with a trait for converting into a `bevy::Mesh` and a [`bevy` example].
+
+This is an early release. None of the GPU acceleration backends are yet
+exposed on the Rust side. Contact [@virtualritz] is you want to help out with
+that.
+
+His [`tobj` fork] also has a bunch new features that help loading OBJ files for
+use with opensubdiv-petite. E.g. merging disconnected vertices during import.
+
+The car model above was borrowed from [@quaternius] low poly
+[car collection on itch.io].
+
+[OpenSubdiv]: https://graphics.pixar.com/opensubdiv/docs/intro.html
+[opensubdiv-petite]: https://crates.io/crates/opensubdiv-petite
+[sudivison surface]: https://en.wikipedia.org/wiki/Subdivision_surface
+[`bevy` example]: https://github.com/virtualritz/opensubdiv-petite/blob/master/opensubdiv-petite/examples/bevy.rs
+[`tobj` fork]: https://github.com/virtualritz/tobj
+[@virtualritz]: https://github.com/virtualritz
+[@quaternius]: https://www.patreon.com/quaternius
+[car collection on itch.io]: https://quaternius.itch.io/lowpoly-cars
+
+### [profiling]
+
+[![Screenshot of Optick Profiler](profiling.png)](profiling.png)
+
+This month, version 1.0 of [profiling] was released on crates.io. 🎉 🎉
+
+This crate provides a very thin abstraction over instrumented profiling crates
+like `puffin`, `optick`, `tracing`, `tracy`, and `superluminal-perf`.
+
+Profiling is used by multiple projects including `gfx-hal`, `rafx`, and
+`wgpu`.
+
+[profiling]: https://crates.io/crates/profiling
+
+### [simple-async-local-executor]
+
+```rust
+let executor = Executor::default();
+let events = [executor.create_event_handle(), executor.create_event_handle()];
+
+async fn wait_event(events: [EventHandle; 2], executor: Executor) {
+    executor.event(&events[0]).await;
+    executor.event(&events[1]).await;
+}
+
+executor.spawn(wait_event(events.clone(), executor.clone()));
+assert_eq!(executor.step(), true);
+assert_eq!(executor.step(), true);
+executor.notify_event(&events[0]);
+assert_eq!(executor.step(), true);
+executor.notify_event(&events[1]);
+assert_eq!(executor.step(), false);
+```
+
+[simple-async-local-executor] by [Enlightware]
+is a single-threaded polling-based executor suitable for use in games, embedded
+systems or WASM.
+
+This executor can be useful when the number of tasks is small or
+if a small percentage is blocked. Being polling-based, in the general
+case it trades off efficiency for simplicity and does not require any
+concurrency primitives such as `Arc`, etc.
+
+[simple-async-local-executor]: https://github.com/enlightware/simple-async-local-executor
+[Enlightware]: https://enlightware.ch
+
+### [wasm_plugin]
+
+[wasm_plugin][wasm_plugin] by @alec-deason is a
+low-ish level tool for easily hosting WASM based plugins for modding or scripting.
+
+The latest version now supports calling host functions from the plugin and more
+flexible serialization which allows plugins to be written in languages other
+than Rust.
+
+It consists of two crates:
+
+- [wasm_plugin_host] which wraps a wasmer instance with methods for calling
+  functions on the guest plugin.
+- [wasm_plugin_guest] which provides an attribute macro to easily import and
+- export functions to the host.
+
+[wasm_plugin]: https://github.com/alec-deason/wasm_plugin
+[wasm_plugin_host]: https://lib.rs/crates/wasm_plugin_host
+[wasm_plugin_guest]: https://lib.rs/crates/wasm_plugin_guest
+
+### [egui]
+
+[egui] by [@emilk] is an easy-to-use immediate mode GUI library in pure Rust.
+
+This month [version 0.11] of egui was released, with many improvements,
+including optimized to run almost twice as fast!
+
+You can try out egui in the [online demo].
+
+[egui]: https://github.com/emilk/egui
+[online demo]: https://emilk.github.io/egui
+[version 0.11]: https://github.com/emilk/egui/blob/master/CHANGELOG.md
+[@emilk]: https://twitter.com/ernerfeldt
+
+### [bevy_egui]
+
+[![bevy_egui multiple windows support GIF](egui.gif)][bevy_egui]
+
+[bevy_egui] provides an [Egui](https://github.com/emilk/egui) integration
+for the [Bevy](https://github.com/bevyengine/bevy) game engine.
+It supports [bevy_webgl2] and implements the full set of Egui features
+(such as clipboard and opening URLs).
+
+In April, [version 0.4] was released, providing an integration with
+Egui 0.11 and implementing multiple windows support.
+
+Try out the [online demo](https://mvlabat.github.io/bevy_egui_web_showcase/index.html).
+
+[bevy_egui]: https://github.com/mvlabat/bevy_egui
+[bevy_webgl2]: https://github.com/mrk-its/bevy_webgl2
+[version 0.4]: https://github.com/mvlabat/bevy_egui/blob/main/CHANGELOG.md
+
+### [puffin_egui]
+
+![puffin_egui](puffin_egui.gif)
+
+[puffin_egui] by [@emilk] is an easy-to-use integration
+of the [puffin] profiler for the [egui] GUI library.
+
+It has never been easier to add an in-game flamegraph profiler to your game!
+
+[puffin_egui]: https://github.com/emilk/puffin_egui
+[puffin]: https://github.com/EmbarkStudios/puffin
+[egui]: https://github.com/emilk/egui
+[@emilk]: https://twitter.com/ernerfeldt
+
+### [rafx]
+
+{{ image_figure(
+    alt="Rafx WebGL 1.0 Demo"
+    src="rafx-webgl1-demo.png"
+    caption="Rafx WebGL 1.0 support, [click for live demo](https://aclysma.github.io/rafx/demo-web/index.html)!",
+    link="[rafx-webgl-demo](https://aclysma.github.io/rafx/demo-web/index.html)") }}
+Rafx is a multi-backend renderer that optionally integrates with the
+[distill][rafx-distill] asset pipeline. This month, frustum culling
+and a new OpenGL ES 2.0/WebGL 1.0 backend were added.
+
+[@dvd] revived the `rafx-visibility` crate and implemented frustum culling.
+Frustum culling greatly reduces draw call counts, improving frame rate
+in certain scenes. The changes also improve consistency between various
+rendering feature implementations (i.e. meshes, text etc.) and avoids running
+the extract-prepare-submit pipeline on entities that are not visible.
+
+[@aclysma] implemented an OpenGL ES 2.0 backend. While ES2 cannot support all
+functionality in `rafx-api`, it provides very broad compatibility. This means
+the core functionality of rafx-api can be used with almost any mobile device
+or browser ([~98% web coverage][rafx-webgl-caniuse].)
+
+[rafx]: https://github.com/aclysma/rafx
+[rafx-webgl-demo]: https://aclysma.github.io/rafx/demo-web/index.html
+[rafx-distill]: https://github.com/amethyst/distill
+[rafx-webgl-caniuse]: https://caniuse.com/?search=webgl
+[@aclysma]: https://github.com/aclysma
+[@dvd]: https://github.com/DavidVonDerau
+
+### [RAUI v0.34.0][raui-git]
+
+{{ image_figure(
+    alt="RAUI Scroll Box"
+    src="raui-scroll-box.gif"
+    caption="RAUI Scroll Box") }}
+
+[RAUI][raui-git] by [@PsichiX][psichix-twitter] is a Renderer Agnostic User
+Interface crate that is based on declarative mode UI composition similar to
+React.js and UE4 Slate system.
+
+This month's changes include:
+
+- Moved from `widget_hooks!` and `widget_component!` to `#[pre_hooks]`and
+  `#[post_hooks]` macros.
+- Added `PropsData` and `MessageData` derive macros.
+- Improved support for Scroll Box widgets to allow frictionless usage.
+- Added use of Scroll Box in [TODO demo app][raui-todo-app] to demonstrate how
+  to use it.
+
+[raui-git]: https://github.com/PsichiX/raui
+[raui-todo-app]: https://github.com/PsichiX/raui/tree/master/demos/todo-app
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt="Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass"
+    src="graphite-ferris.png"
+    caption="Ferris drawn in Graphite using the new drawing tools - Art credit: Uriopass") }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-progress vector and
+raster graphics editor built on a nondestructive node-based workflow.
+
+The team size has doubled in the past month — thank you to the new contributors!
+Since then, systems related to editor tools and data flow were added.
+The editor now has proper input behavior on the existing Rectangle and Ellipse Tools
+plus the new Shape and Line Tools while holding modifier keys.
+Pen Tool implementation has begun, supporting polylines.
+Shapes are now drawn with live previews.
+
+Additional work has gone into improving render performance, building the color
+system in the Rust backend, and adding initial support for displaying shapes
+in the Layer Tree panel. [Try it right now in your browser.][graphite-live-demo]
+
+Graphite is making rapid progress towards becoming a nondestructive, procedural
+graphics editor suitable of replacing traditional 2D DCC applications. Please
+[join the Discord][graphite-discord] - and consider asking for a tour of the
+code and how you can help!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://github.com/GraphiteEditor/Graphite/blob/master/README.md#discord
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design/
+
+### [KindNES]
+
+![Super Mario Bros. running in KindNES](kindnes.png)
+
+[KindNES] by [@henryksloan]
+is a new NES emulator that supports sound, controllers, and
+much of the NES library.
+
+KindNES is designed to strike a balance between performance, hardware accuracy,
+and code clarity. It directly emulates the CPU, graphics, and sound of the NES
+with minimal approximation. The code is intended to pair well with the NESdev
+wiki as a resource for learning about the NES.
+
+KindNES is in a playable state, and is approaching a release version.
+Features planned before release include saving and an improved cross-platform
+GUI.
+
+[KindNES]: https://github.com/henryksloan/kind-nes/releases/tag/v0.9.1-beta
+[@henryksloan]: https://github.com/henryksloan
+
+### [chip-8-rs]
+
+{{ image_figure(
+    alt="Screenshot of Pong with debugger"
+    src="chip-8-rs.jpg"
+    caption="Debugging Pong") }}
+
+[Chip-8-rs][chip-8-rs] by @jonathanmurray is
+a CHIP-8 emulator with some basic debugging functionality.
+
+When running a game through the emulator, CHIP-8 instructions are listed
+next to the main display, with the currently executed one highlighted. By
+running at a very low clock-frequency (and pausing/resuming) you can step
+through a program one instruction at a time, to better understand how it
+works (or doesn't work!).
+
+See it in action on [YouTube][chip-8-rs-video].
+
+[chip-8-rs]: https://github.com/JonathanMurray/chip-8-rs
+[chip-8-rs-video]: https://youtu.be/nVDJ5PZpPfI?t=72
+
+## Requests for Contribution
+
+- [femtovg is looking for help with the wgpu backend][femtovg-help].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [gfx-rs's "contributor-friendly" issues][gfx-issues].
+- [wgpu's "help wanted" issues][wgpu-help-wanted].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[femtovg-help]: https://reddit.com/r/rust/comments/mfuo4m/femtovg_2d_vector_graphics_crate_is_looking_for
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[gfx-issues]: https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly
+[wgpu-help-wanted]: https://github.com/gfx-rs/wgpu-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/good%20first%20issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/n8g79b/this_month_in_rust_gamedev_21_april_2021),
+[Twitter](https://twitter.com/rust_gamedev/status/1391415309421187076),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/021/kindnes.png b/content/news/021/kindnes.png
new file mode 100644
index 000000000..41ad09337
Binary files /dev/null and b/content/news/021/kindnes.png differ
diff --git a/content/news/021/macroquad.png b/content/news/021/macroquad.png
new file mode 100644
index 000000000..a805a54ea
Binary files /dev/null and b/content/news/021/macroquad.png differ
diff --git a/content/news/021/micronaut.gif b/content/news/021/micronaut.gif
new file mode 100644
index 000000000..15969d64a
Binary files /dev/null and b/content/news/021/micronaut.gif differ
diff --git a/content/news/021/minewars.jpg b/content/news/021/minewars.jpg
new file mode 100644
index 000000000..85a0bb8e9
Binary files /dev/null and b/content/news/021/minewars.jpg differ
diff --git a/content/news/021/opensubdiv-petite.jpg b/content/news/021/opensubdiv-petite.jpg
new file mode 100644
index 000000000..6bc842c24
Binary files /dev/null and b/content/news/021/opensubdiv-petite.jpg differ
diff --git a/content/news/021/outer-wonders.gif b/content/news/021/outer-wonders.gif
new file mode 100644
index 000000000..3769d9d3f
Binary files /dev/null and b/content/news/021/outer-wonders.gif differ
diff --git a/content/news/021/oxygengine-ui-splash-screen.gif b/content/news/021/oxygengine-ui-splash-screen.gif
new file mode 100644
index 000000000..b38780445
Binary files /dev/null and b/content/news/021/oxygengine-ui-splash-screen.gif differ
diff --git a/content/news/021/pglowrpg_progress.jpg b/content/news/021/pglowrpg_progress.jpg
new file mode 100644
index 000000000..72bde64f1
Binary files /dev/null and b/content/news/021/pglowrpg_progress.jpg differ
diff --git a/content/news/021/profiling.png b/content/news/021/profiling.png
new file mode 100644
index 000000000..274ff5668
Binary files /dev/null and b/content/news/021/profiling.png differ
diff --git a/content/news/021/project_yawc_map_editor.png b/content/news/021/project_yawc_map_editor.png
new file mode 100644
index 000000000..409c78f91
Binary files /dev/null and b/content/news/021/project_yawc_map_editor.png differ
diff --git a/content/news/021/puffin_egui.gif b/content/news/021/puffin_egui.gif
new file mode 100644
index 000000000..68832d30d
Binary files /dev/null and b/content/news/021/puffin_egui.gif differ
diff --git a/content/news/021/quads.png b/content/news/021/quads.png
new file mode 100644
index 000000000..ce0255579
Binary files /dev/null and b/content/news/021/quads.png differ
diff --git a/content/news/021/rafx-webgl1-demo.png b/content/news/021/rafx-webgl1-demo.png
new file mode 100644
index 000000000..399d630ea
Binary files /dev/null and b/content/news/021/rafx-webgl1-demo.png differ
diff --git a/content/news/021/raui-scroll-box.gif b/content/news/021/raui-scroll-box.gif
new file mode 100644
index 000000000..1a470966e
Binary files /dev/null and b/content/news/021/raui-scroll-box.gif differ
diff --git a/content/news/021/rg3d_logo.png b/content/news/021/rg3d_logo.png
new file mode 100644
index 000000000..53d8a734d
Binary files /dev/null and b/content/news/021/rg3d_logo.png differ
diff --git a/content/news/021/rust-la.png b/content/news/021/rust-la.png
new file mode 100644
index 000000000..531abf5cb
Binary files /dev/null and b/content/news/021/rust-la.png differ
diff --git a/content/news/021/rust-linz.png b/content/news/021/rust-linz.png
new file mode 100644
index 000000000..3f5cba142
Binary files /dev/null and b/content/news/021/rust-linz.png differ
diff --git a/content/news/021/station-iapetus.jpg b/content/news/021/station-iapetus.jpg
new file mode 100644
index 000000000..85f255460
Binary files /dev/null and b/content/news/021/station-iapetus.jpg differ
diff --git a/content/news/021/submariner.gif b/content/news/021/submariner.gif
new file mode 100644
index 000000000..5e0e5f4d6
Binary files /dev/null and b/content/news/021/submariner.gif differ
diff --git a/content/news/021/taipo.png b/content/news/021/taipo.png
new file mode 100644
index 000000000..ee866d8ba
Binary files /dev/null and b/content/news/021/taipo.png differ
diff --git a/content/news/021/tanks.gif b/content/news/021/tanks.gif
new file mode 100644
index 000000000..aaebe4138
Binary files /dev/null and b/content/news/021/tanks.gif differ
diff --git a/content/news/021/tantan-preview.jpg b/content/news/021/tantan-preview.jpg
new file mode 100644
index 000000000..13239a2df
Binary files /dev/null and b/content/news/021/tantan-preview.jpg differ
diff --git a/content/news/021/the_process.gif b/content/news/021/the_process.gif
new file mode 100644
index 000000000..dd666e85b
Binary files /dev/null and b/content/news/021/the_process.gif differ
diff --git a/content/news/021/theta-wave.gif b/content/news/021/theta-wave.gif
new file mode 100644
index 000000000..70a71ccba
Binary files /dev/null and b/content/news/021/theta-wave.gif differ
diff --git a/content/news/021/veloren.jpg b/content/news/021/veloren.jpg
new file mode 100644
index 000000000..3565b1abd
Binary files /dev/null and b/content/news/021/veloren.jpg differ
diff --git a/content/news/021/wgpu-tree.png b/content/news/021/wgpu-tree.png
new file mode 100644
index 000000000..721b320c5
Binary files /dev/null and b/content/news/021/wgpu-tree.png differ
diff --git a/content/news/021/wor-crash-reporter.jpg b/content/news/021/wor-crash-reporter.jpg
new file mode 100644
index 000000000..faf8a6289
Binary files /dev/null and b/content/news/021/wor-crash-reporter.jpg differ
diff --git a/content/news/021/wor-ice.jpg b/content/news/021/wor-ice.jpg
new file mode 100644
index 000000000..9e4559cd3
Binary files /dev/null and b/content/news/021/wor-ice.jpg differ
diff --git a/content/news/022/1_year_of_rust_gamedev.png b/content/news/022/1_year_of_rust_gamedev.png
new file mode 100644
index 000000000..483b2ec8d
Binary files /dev/null and b/content/news/022/1_year_of_rust_gamedev.png differ
diff --git a/content/news/022/2048-bevy-reset-game-events.png b/content/news/022/2048-bevy-reset-game-events.png
new file mode 100755
index 000000000..0fa55e043
Binary files /dev/null and b/content/news/022/2048-bevy-reset-game-events.png differ
diff --git a/content/news/022/abstreet.png b/content/news/022/abstreet.png
new file mode 100644
index 000000000..28541549e
Binary files /dev/null and b/content/news/022/abstreet.png differ
diff --git a/content/news/022/bevy-retro.gif b/content/news/022/bevy-retro.gif
new file mode 100644
index 000000000..11ad32a30
Binary files /dev/null and b/content/news/022/bevy-retro.gif differ
diff --git a/content/news/022/bevy_asset_loader.png b/content/news/022/bevy_asset_loader.png
new file mode 100644
index 000000000..79bf7fb82
Binary files /dev/null and b/content/news/022/bevy_asset_loader.png differ
diff --git a/content/news/022/bounty-bros.png b/content/news/022/bounty-bros.png
new file mode 100644
index 000000000..74e2765a4
Binary files /dev/null and b/content/news/022/bounty-bros.png differ
diff --git a/content/news/022/dimforge.png b/content/news/022/dimforge.png
new file mode 100644
index 000000000..ec0305045
Binary files /dev/null and b/content/news/022/dimforge.png differ
diff --git a/content/news/022/egui.gif b/content/news/022/egui.gif
new file mode 100644
index 000000000..87ab9b54e
Binary files /dev/null and b/content/news/022/egui.gif differ
diff --git a/content/news/022/flesh.gif b/content/news/022/flesh.gif
new file mode 100644
index 000000000..fb6a262fb
Binary files /dev/null and b/content/news/022/flesh.gif differ
diff --git a/content/news/022/gamedev-meetup.png b/content/news/022/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/022/gamedev-meetup.png differ
diff --git a/content/news/022/gfx-dota2-naga.jpg b/content/news/022/gfx-dota2-naga.jpg
new file mode 100644
index 000000000..3ff4cdb3b
Binary files /dev/null and b/content/news/022/gfx-dota2-naga.jpg differ
diff --git a/content/news/022/graphite-piet.png b/content/news/022/graphite-piet.png
new file mode 100644
index 000000000..f4feb8310
Binary files /dev/null and b/content/news/022/graphite-piet.png differ
diff --git a/content/news/022/hho.gif b/content/news/022/hho.gif
new file mode 100644
index 000000000..88fcac1a2
Binary files /dev/null and b/content/news/022/hho.gif differ
diff --git a/content/news/022/index.md b/content/news/022/index.md
new file mode 100644
index 000000000..43dcab00e
--- /dev/null
+++ b/content/news/022/index.md
@@ -0,0 +1,862 @@
++++
+title = "This Month in Rust GameDev #22 - May 2021"
+date = 2021-06-09
+transparent = true
++++
+
+Welcome to the 22nd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+```
+### [Title]
+![image/GIF description](image link)
+_Optional image caption_
+A paragraph or two with a summary and [useful links].
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The fifth Rust Gamedev Meetup happened in May. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord], and can also be [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on in a future meetup, fill out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=6drrul3p_hU
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="a new enemy") }}
+
+Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- Add (internal use) level editor.
+- Add new enemy types.
+- Prepare to release a short demo next month for collecting feedback.
+
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Airship"
+    src="veloren.jpg"
+    caption="The beginning of an exciting journey") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+Veloren's 3rd birthday was at the end of May, on the 25th! During the month,
+lots of systems were overhauled. Music changes were made to only play certain
+tracks in certain areas. Econsim was optimized, and many bugs were fixed. The
+minimap was overhauled, with many quality-of-life and visual improvements.
+Terrain compression speed was worked on, with many trials of different
+compression techniques.
+
+The large physics overhaul was merged, and lots of patches are being added to
+issues that popped up from it. You can see a small flight in action
+[here][veloren-glider]. Dungeons have been balanced, and many weapons have also
+seen changes. In June, 0.10 will be released.
+
+May's full weekly devlogs: "This Week In Veloren...":
+[#118](https://veloren.net/devblog-118),
+[#119](https://veloren.net/devblog-119),
+[#120](https://veloren.net/devblog-120),
+[#121](https://veloren.net/devblog-121),
+[#122](https://veloren.net/devblog-122).
+
+[veloren]: https://veloren.net
+[veloren-glider]: https://www.reddit.com/r/Veloren/comments/nc4tvo/i_cant_believe_how_beautiful_this_game_is/
+
+### [A/B Street]
+
+![Most of West Seattle has poor access to public libraries](abstreet.png)
+
+[A/B Street] by [@dabreegster] is a traffic simulation game exploring how small
+changes to roads affect cyclists, transit users, pedestrians, and drivers, with
+support for any city with OpenStreetMap coverage. The project aims to engage
+more citizens with transportation planning, letting people advocate for real
+changes they want to see.
+
+In May, travel time stopped being the only "score" for how well road changes
+work. Risk exposure of cyclists crossing dangerous intersections or travelling
+in front of high-speed traffic is now measured, with lots of data visualization
+work by Michael. Trevor also revived the 15-minute isochrone tool, finding
+areas of a city without easy access to education, hospitals, or other
+facilities. We also moved the map import process, with over 100 supported maps,
+to the cloud from a single poor laptop. OpenStreetMap importing now handles
+multiple turn lanes, U-turns, and stop signs much better.
+
+[A/B Street]: https://github.com/a-b-street/abstreet
+[@dabreegster]: https://twitter.com/CarlinoDustin
+
+### [The Process]
+
+{{ image_figure(
+    alt="Animated image showing a small factory in the middle of the game island"
+    src="the_process.gif"
+    caption="This factory has never looked livelier!") }}
+
+[The Process] by @setzer22 is an upcoming game about factory building, process
+management and carrot production, built with Rust using the Godot game engine!
+
+This month has been focused on improving the game's UI and extending the machine
+logistics system, but there was also room for a few cosmetic improvements:
+
+- Improved visualization of connections in the [logistic
+  network](https://twitter.com/PlayTheProcess/status/1391484080798281728).
+- Implemented configurable filters for machines to build a [sorting
+  machine](https://twitter.com/PlayTheProcess/status/1392894719311613953)!
+- New materials and [terrain
+  shader](https://twitter.com/PlayTheProcess/status/1396175924652019718).
+- [Trees and dynamically updating
+  grass](https://twitter.com/PlayTheProcess/status/1399774534417498121) using
+  instanced rendering.
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/nbmfvz/better_logistics_in_the_process_made_with_godot/),
+[Twitter](https://twitter.com/PlayTheProcess/status/1391484080798281728)_
+
+[The Process]: https://twitter.com/PlayTheProcess/
+
+### [pGLOWrpg][pglowrpg-github]
+
+![Game features](pglowrpg_progress.gif)
+
+[pGLOWrpg][pglowrpg-github] by [@Roal_Yr]
+is a Procedurally Generated Living Open World RPG,
+a long-term project in development, which aims to be a narrative text-based game
+with maximum portability and accessibility.
+
+Recent updates include:
+
+- Implemented dev features test arena.
+- Implemented entity system draft.
+- Sanitized coordinate systems everywhere (ooof!)
+- Much refactoring.
+- Resumed river generation development.
+
+_Discussions: [Twitter][pglowrpg-twitter]_
+
+[@Roal_Yr]: https://twitter.com/Roal_Yr
+[pglowrpg-twitter]: https://twitter.com/pglowrpg
+[pglowrpg-github]: https://github.com/roalyr/pglowrpg
+
+### Project YAWC
+
+![A map in Project YAWC being built.](unbroken_lynx.png)
+
+Project YAWC ([Twitter](https://twitter.com/ProjectYawc)) is a turn-based
+strategy game built in GGEZ, being developed by junkmail.
+
+May saw the release of Alpha 5.4, including interface improvements,
+balance changes, new units, new maps, and netcode improvements.
+
+An [alpha access request form](https://forms.gle/w22ohPGNk58fo9bv6) is available,
+if you want to try it out.
+
+### [Bounty Bros.][bounty_bros]
+
+{{ image_figure(
+    alt="bounty-bros-title-screen"
+    src="bounty-bros.png"
+    caption="Click the image to play the game in your browser!",
+    link="https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-1/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/1") }}
+
+[Bounty Bros.][bounty_bros] is a prototype game, similar to the old Legend of
+Zelda® games, developed by [Katharos Technology][katharostech] as a testing
+ground for a future commercial game.
+
+The last two months of development was primarily focused on sound and user
+interface:
+
+- Music will play in different areas of the map and fade in when walking into
+  an area with different music.
+- In-game UI is now functional including a new start menu and a simple settings
+  menu to toggle the CRT filter and pixel aspect ratio.
+- The web player now has a simple loading icon instead of a solid black screen.
+
+The web version was re-built and published under a new link so you can [try it
+in your browser][bounty_bros_webgame].
+
+You can read the full update in the [Blog Post][bounty_bros].
+
+[bounty_bros]: https://katharostech.com/post/bounty-bros-update-3-sound-and-ui
+[bounty_bros_webgame]: https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-1/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/1
+[katharostech]: https://katharostech.com
+
+### Harvest Hero & Harvest Hero Origins
+
+![Harvest Hero Origins supports local multiplayer](./hho.gif)
+
+Harvest Hero is currently on hold for now. After
+[Gemdrop Games] was formed, it was decided
+that [Emerald] needed to be tested to ensure it can withstand cross
+publishing.
+This means creating a smaller game in the
+engine in order to figure out the publishing process for
+Steam, Itch, Nintendo Switch, and guarantee its viability.
+
+This resulted in the birth of [Harvest Hero Origins], a small wave
+defense arcade game with local co-op! Join the [Gemdrop Games Discord]
+to stay up to date with these games.
+
+Features:
+
+- Story Mode
+- Survival Mode (with local co-op)
+  - Unlockable skins
+  - 2 unlockable playable characters
+
+[Emerald]: https://github.com/Bombfuse/emerald
+[Harvest Hero Origins]: https://gemdrop-games.itch.io/harvest-hero-origins
+[Gemdrop Games]: https://twitter.com/GemdropGames
+[Gemdrop Games Discord]: https://discord.gg/CJRbxQn3d9
+
+### [Outer Wonders]
+
+![Animation showing Bibi, the main protagonist of Outer Wonders,
+starting from the top entrance of a puzzle, rolling from obstacle
+to obstacle, leaning on bushes, flowers, and trees to reach
+the bottom exit of the puzzle](outer-wonders.gif)
+
+[Outer Wonders] is a colorful, pixel art, puzzle-based adventure game
+developed by [Utopixel] where you play as Bibi, a cute round monkey who
+enjoys rolling in straight lines. Explore a whimsical nature where
+altering the environment is key to progress, and solve puzzles to protect
+its wonders.
+
+Outer Wonders can be downloaded for Linux and Windows from [itch.io][ow-itchio].
+
+May was mostly dedicated to code cleaning, small improvements, as well as
+blogging and community building. Updates of the month include:
+
+- Refactored UI code to streamline menu stacking and ease the implementation
+  of an upcoming options menu.
+- Added support for menu navigation using the D-Pad alongside the existing
+  analog stick support.
+- Published a blog post about building Outer Wonders for Linux/itch.io
+  ([english][ow-bp-english], [french][ow-bp-french]).
+- Posted weekly puzzles [#16][ow-p16], [#17][ow-p17], [#18][ow-p18] and
+  [#19][ow-p19] on social media for players wishing to give puzzles a
+  try prior to downloading the game.
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/nfgxjl),
+[Hacker News](https://news.ycombinator.com/item?id=27244017)_
+
+[Outer Wonders]: https://utopixel.itch.io/outer-wonders
+[Utopixel]: https://utopixel.games
+[ow-itchio]: https://utopixel.itch.io/outer-wonders
+[ow-bp-english]: https://utopixel.games/en/blog/building-outer-wonders-for-linux/
+[ow-bp-french]: https://utopixel.games/fr/blog/adaptation-outer-wonders-linux/
+[ow-p16]: https://twitter.com/utopixel/status/1389984537170620422
+[ow-p17]: https://twitter.com/utopixel/status/1392526232596541449
+[ow-p18]: https://twitter.com/utopixel/status/1395079712020602884
+[ow-p19]: https://twitter.com/utopixel/status/1397614237187551237
+
+### [rpg-cli]
+
+![agent stats and a fight with a spider in ~/dev/facundoolano](rpg-cli.png)
+
+[rpg-cli] by [@facundoolano] is a bare-bones JRPG-inspired terminal game.
+It can work as an alternative to cd where you randomly encounter enemies
+as you change directories.
+The game features:
+
+- Character stats and leveling system.
+- Automatic turn-based combat.
+- Item and equipment support.
+- 15+ enemy classes.
+- Permadeath with item recovering.
+- Run and bribe to escape battles.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/nktk1y/rpgcli_your_filesystem_as_a_dungeon)_
+
+[rpg-cli]: https://github.com/facundoolano/rpg-cli
+[@facundoolano]: https://github.com/facundoolano
+
+### [Theta Wave]
+
+{{ image_figure(
+    alt="Blast Repeller"
+    src="theta-wave.gif"
+    caption="The Blast Repeller item pushes blasts away from the player",
+    link="https://github.com/amethyst/theta-wave") }}
+
+[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and
+[@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In
+the past month, the ["Loot"] update was released which enhanced how loot drops
+are rolled, spawned, and how their effects are applied to the game. The Loot Update
+also added an attraction system that allows for entities to repel or attract
+other entities.
+
+Now an ["Organization"] update is in progress for Theta Wave. This update will
+divide Theta Wave into two workspaces; a library and a binary. This update will also
+add documentation comments for all of the library's features.
+
+[Theta Wave]: https://github.com/amethyst/theta-wave
+[@micah_tigley]: https://twitter.com/micah_tigley
+[@carlosupina]: https://twitter.com/carlosupina
+[Amethyst Engine]: https://amethyst.rs/
+["Loot"]: https://github.com/amethyst/theta-wave/releases/tag/v0.1.6
+["Organization"]: https://github.com/amethyst/theta-wave/projects/5
+
+## Engine Updates
+
+### [Tetra]
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, versions 0.6.4 and 0.6.5 were released, featuring:
+
+- Stencil buffers
+- Basic instanced mesh rendering
+- Methods for reading textures back to the CPU (e.g. for screenshots)
+- Support for passing slices/arrays as shader uniforms
+- More utility methods for working with high-DPI displays
+- Various bug fixes and docs improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+
+### [Rustcraft][rustcraft]
+
+![rustcraft-img](rustcraft.png)
+
+[Rustcraft][rustcraft] by @dskart
+is a simple Minecraft engine written in Rust using wgpu.
+
+It handles infinite world generation using gradient noise as well as placing
+and breaking blocks.
+
+[rustcraft]: https://github.com/dskart/rustcraft
+
+### [rg3d]
+
+![rg3d](rg3d_terrain.jpg)
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-box features. Some of
+the recent engine updates:
+
+- Initial 2D support (with lighting and physics)
+- Multi-layer terrains ([check this video][rg3d_terrain_reddit])
+- Load balancer for texture uploader
+- Customizable vertex format
+- Instanced rendering fixes
+- Menu items now can work without backing Menu widget
+- Shadows fix for spotlights
+- Selection improvements for Tree widget
+- Continuous integration
+- Basic Framework that hides engine initialization and game loop
+- Performance improvements
+- "Save" mode for FileSelector and FileBrowser widgets
+- Various bug fixes and small improvements.
+
+rusty-editor updates:
+
+- Context menu for world outliner items
+- Terrain editor
+- Grid snapping for Move interaction mode
+- Fixes for Move interaction mode in case of complex hierarchies
+- Continuous integration
+- Settings window refactoring + improvements
+- Box selection mode bug fixes
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+[rg3d_terrain_reddit]: https://www.reddit.com/r/rust/comments/nlnfdb/timelapse_of_terrain_editing_in_rustyeditor_which/
+
+### [Nestadia][nestadia]
+
+![Zelda running on Nestadia](nestadia.png)
+
+[Nestadia][nestadia] by @zer0x64, @junior-n30 and @CBenoit is a
+server-based NES emulator.
+
+Nestadia was written as a reverse engineering and memory exploitation challenge
+for NorthSec CTF 2021, a cybersecurity competition. Contestants were required to
+reverse-engineer the emulator and ultimately write a Tool Assisted Speedrun to
+run arbitrary code inside a provided ROM.
+
+After the competition, the code was open-sourced and cleaned up to remove
+references to the competition. The developers intend on fixing more bugs and
+adding more features in the near future.
+
+Some interesting features of this emulator are its server-based nature, and the
+no_std core which means that the emulator can be built and ran pretty much
+anywhere without much work.
+
+Incoming improvements include online multiplayer, sound, a WASM port, porting to
+a libretro core, and using wgpu instead of sdl for the native GUI and debugger.
+
+[nestadia]: https://github.com/zer0x64/nestadia
+
+## Learning Material Updates
+
+### [Learn WGPU Updated to wgpu 0.8 and WGSL][learn-wgpu-news]
+
+After some GLSL issues trying to update the ["Learn WGPU"][learn-wgpu] tutorial
+to version WGPU 0.8, [@sotrh] decided to migrate to WGSL.
+This update was a lot of work, but relatively painless.
+As a result, `shaderc` is no longer a dependency.
+
+Checkout more at [here][learn-wgpu-news].
+
+[@sotrh]: https://patreon.com/sotrh
+[learn-wgpu]: https://sotrh.github.io/learn-wgpu
+[learn-wgpu-news]: https://sotrh.github.io/learn-wgpu/news/#_0-8-and-wgsl
+
+### [Voxel Engine with Rust and wgpu-rs][voxel_engine_video]
+
+[![Youtube preview](voxel_engine_wgpu.jpg)][voxel_engine_video]
+
+[@TanTanDev] published a [video][voxel_engine_video] about
+how he made a voxel engine written in Rust using wgpu.
+
+Currently voxel rendering, chunk management, flying camera,
+and simple lightning is implemented.
+The source code is released on [github][voxel_engine_github].
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/nn0j5l/i_made_a_voxel_engine_with_rust_and_wgpurs)_
+
+[@TanTanDev]: https://twitter.com/TanTanDev
+[voxel_engine_video]: https://youtube.com/watch?v=96ht7rd3Y5I
+[voxel_engine_github]: https://github.com/TanTanDev/first_voxel_engine
+
+### [1 Year of Rust Game Development][video-1-year-of-rust-gamedev]
+
+[![YouTube thumbnail](1_year_of_rust_gamedev.png)][video-1-year-of-rust-gamedev]
+
+[Another video][video-1-year-of-rust-gamedev] by [@TanTanDev] is about
+the projects he made during his first year of learning Rust.
+He also talks about why he likes the Rust programming language and community.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/n4o197)_
+
+[video-1-year-of-rust-gamedev]: https://youtu.be/ZltAssmicsM
+[@TanTanDev]: https://twitter.com/TanTanDev
+
+### [LD48: Rusty MMO in 48 Hours][ld48-mmo]
+
+![A screenshot of Dig World gameplay](https://img.itch.zone/aW1nLzYwMDQyNzkucG5n/original/VNIJnu.png)
+
+@kuviman wrote a devlog about his experience writing a video game in Rust.
+
+He needed to make a game in just 48 hours for the Ludum Dare 48 (LD48)
+game jam, so he chose a simple theme: digging.
+
+20 hours later, he had a full-fledged MMO - complete with hackers!
+
+_Discussion: [r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/nhdwky/i_used_rust_to_make_an_mmo_in_48_hours_for)_
+
+[ld48-mmo]:
+https://kuviman.itch.io/dig-world/devlog/255566/so-i-made-an-mmo-in-48-hours
+
+### [State of Rust in Unreal Engine][rust_in_unreal]
+
+[This Reddit post][rust_in_unreal] discusses the current state of using Rust in
+the Unreal Engine. It concludes that although there are several ways that Rust
+could interact with the engine, all are still forced to use C++ to bootstrap
+these operations.
+
+[rust_in_unreal]: https://www.reddit.com/r/rust_gamedev/comments/n9v8m9/rust_in_unreal_engine_may_2021_summary/
+
+### [2048: Using an event system to reset the game][2048-bevy-youtube]
+
+[![YouTube Card](2048-bevy-reset-game-events.png)][2048-bevy-youtube]
+
+[@chrisbiscardi] published [a video][2048-bevy-youtube] about using Bevy's event
+readers and writers to implement a reset game button for a 2048 clone.
+
+The video walks through implementing a "reset game" UI button in Bevy 0.5 by taking
+advantage of Bevy's event system for reading and writing a ResetGameEvent. It also
+covers recursively despawning entities and sprites.
+
+_Discussion: [Twitter][2048-bevy-twitter]_
+
+[2048-bevy-youtube]: https://youtube.com/watch?v=4TJsEXupFso
+[2048-bevy-twitter]: https://twitter.com/chrisbiscardi/status/1397291221702254595
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+
+## Tooling Updates
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt="Piet Mondrian's artwork replicated in Graphite using the new color picker"
+    src="graphite-piet.png"
+    caption="Piet Mondrian's artwork replicated in Graphite using the new color picker") }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and
+raster graphics editor built on a nondestructive node-based workflow.
+
+In the past month, new frontend features have mostly closed the gap for a
+visually complete UI while a major Rust backend refactor took place.
+
+A new frontend system for floating menus was added to draw menus over the UI,
+like dropdown menu input widgets and popovers to display the new color picker.
+Also, the application menu bar was built with working buttons for the new Undo
+and Export SVG actions.
+
+A large refactor in the Rust backend created a simpler communication strategy
+between all components in the software stack and a standard method of handling
+user inputs.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making
+rapid progress towards becoming a non-destructive, procedural graphics editor
+suitable for replacing traditional 2D DCC applications. Please
+[join the Discord][graphite-discord] - and consider asking for a tour of the
+code and how you can help!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://github.com/GraphiteEditor/Graphite/blob/master/README.md#discord
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design/
+
+## Library Updates
+
+### [Dimforge][dimforge]
+
+[![Dimforge logo](dimforge.png)][dimforge]
+
+[Dimforge][dimforge] creates open-source Rust crates for numerical simulation.
+Some of the [recent updates][dimforge-update]:
+
+- [Rapier] v0.9 brings user-defined storages, colliders not attached
+  to any rigid-body, velocity-based kinematic bodies,
+  and a lot of [other improvements][rapier-v0-9].
+- bevy_rapier v0.10 was completely rewritten using
+  the new user-defined storages to become
+  significantly more ergonomic and "bevy-native" feel.
+- New exhaustive user-guides for [Rapier][guide-rapier]
+  and [bevy_rapier][guide-bevy_rapier] were written.
+  They cover all the available features of Rapier, excepted details about
+  implementing your own custom storage for colliders and rigid-bodies.
+- The [JS bindings for Rapier][rapier-js] have been updated to use Rapier 0.9.
+- nalgebra v0.26 and v0.27 got [const-generics support][na-const]
+  and macros for constructing matrices/vectors/points in a convenient way.
+
+[dimforge]: https://dimforge.com
+[dimforge-update]: https://dimforge.com/blog/2021/06/06/this-month-in-dimforge
+[Rapier]: https://rapier.rs
+[rapier-v0-9]: https://github.com/dimforge/rapier/blob/master/CHANGELOG.md#v090
+[rapier-js]: https://github.com/dimforge/rapier.js
+[guide-rapier]: https://www.rapier.rs/docs/user_guides/rust/getting_started
+[guide-bevy_rapier]: https://www.rapier.rs/docs/user_guides/rust_bevy_plugin/getting_started_bevy
+[na-const]: https://www.dimforge.com/blog/2021/04/12/integrating-const-generics-to-nalgebra
+
+### [egui]
+
+![egui](egui.gif)
+
+[egui] by [@emilk] is an easy-to-use immediate mode GUI library in pure Rust.
+
+This month [version 0.12] of egui was released, with improved plots,
+multitouch, user memory stores, window pivots, and more.
+
+You can try out egui in the [online demo].
+
+_Discussions: [/r/rust](https://www.reddit.com/r/rust/comments/n9f6vt/announcing_egui_012_the_simple_gui_library/)_
+
+[egui]: https://github.com/emilk/egui
+[online demo]: https://emilk.github.io/egui
+[version 0.12]: https://github.com/emilk/egui/blob/master/CHANGELOG.md
+[@emilk]: https://twitter.com/ernerfeldt
+
+### [naga]
+
+![Dota2 running on Naga](gfx-dota2-naga.jpg)
+
+Naga is a shader translation library in pure Rust, aiming to replace
+glsl-to-spirv and SPIRV-Cross.
+
+In April the gfx-rs team shared a glimpse of the performance difference with
+SPIRV-Cross on a single pipeline creation. In May, they did a full-fledged
+Dota2 run on [gfx-portability] without SPIRV-Cross. All shader translation was
+done by [naga], roughly 4x as fast as the C++ alternative
+(with no pipeline caching involved). Read more on [gfx-naga-blog].
+
+[naga]: https://github.com/gfx-rs/naga
+[gfx-portability]: https://github.com/gfx-rs/portability
+[gfx-naga-blog]: https://gfx-rs.github.io/2021/05/09/dota2-msl-compilation.html
+
+### [rafx]
+
+{{ image_figure(
+    alt="Rafx Wireframe Demo"
+    src="rafx-wireframe-demo.jpg"
+    caption="Demo with wireframes enabled") }}
+
+Rafx is a multi-backend renderer that optionally integrates with the
+[distill][rafx-distill] asset pipeline.
+
+This month, [@dvd] completed work on the new job system. It implements three
+steps: extract, prepare, and write. These jobs are now more structured, making
+them easier to implement while supporting concurrent execution and reducing
+dynamic allocation. They also integrate with a visibility system to ensure that
+off-screen objects are not processed.
+
+[@aclysma] continued work on OpenGL ES 2.0/3.0 backends and documented
+[implementation details][rafx-implementation-details] of currently available
+rendering backends.
+
+Additionally, some rendering features were improved and added: mesh rendering
+now uses an instance-rate vertex buffer instead of per-object uniforms,
+improving performance. Rendering features now support wireframe and untextured
+rendering modes. An egui render feature was added, and the demo now uses egui
+instead of imgui.
+
+[rafx]: https://github.com/aclysma/rafx
+[rafx-distill]: https://github.com/amethyst/distill
+[rafx-implementation-details]: https://github.com/aclysma/rafx/tree/master/docs/api/backends
+[@aclysma]: https://github.com/aclysma
+[@dvd]: https://github.com/DavidVonDerau
+
+### [Bevy Retro][bevy_retro]
+
+{{ image_figure(
+    alt="ui-example"
+    src="bevy-retro.gif"
+    caption="Bevy Retro UI example") }}
+
+[Bevy Retro][bevy_retro] is a [Bevy] plugin designed for making pixel-perfect
+games as easily as possible.
+
+This project was released under the [Katharos License][katharos_license]. This
+license has moral and ethical implications that you may or may not agree with,
+so please read it before making use of this project.
+
+In the last two months, Bevy Retro has gained a few new features, the biggest of
+which is an integration with the [RAUI]  UI library ( also featured in this
+newsletter ), allowing you to design a fully-fledged user interface for Bevy Retro
+games. Additional features added were:
+
+- A simple sound playing API
+- Text rendering for the BDF font format
+- Custom render hook support allowing you to use raw [Luminance] API calls to render
+  anything you want into the low-resolution framebuffer
+
+You can ask questions or give feedback for Bevy Retro
+[on GitHub](https://github.com/katharostech/bevy_retro/discussions).
+
+[bevy_retro]: https://github.com/katharostech/bevy_retro
+[Bevy]: https://bevyengine.org
+[katharos_license]: https://github.com/katharostech/katharos-license
+[Luminance]: https://github.com/phaazon/luminance-rs
+[RAUI]: https://raui-labs.github.io/raui/
+
+### [Texture Generator]
+
+{{ image_figure(
+    alt="A tilemap with procedural textures"
+    src="texture-generator.png"
+    caption="A preview to version 0.5 with furniture") }}
+
+[Texture Generator] by [Orchaldir] is a library to generate textures,
+and a library to use those textures to render tilemaps.
+Both libraries can generate color & depth images and
+support post-processing effects like lighting & ambient occlusion.
+For randomness, the instance id (e.g. the 145th brick) and/or the tile id are hashed.
+
+The [current release] focuses on furniture.
+
+[Texture Generator]: https://github.com/Orchaldir/texture_generator
+[Orchaldir]: https://github.com/Orchaldir
+[current release]: https://github.com/Orchaldir/texture_generator/projects/8
+
+### [bevy_asset_loader]
+
+![Configuring two asset collections](bevy_asset_loader.png)
+
+`bevy_asset_loader` by [@nikl_me] is a plugin for [Bevy][bevy] apps aiming to
+improve a common pattern for asset-loading. The boilerplate required to load
+assets during a "loading state" is reduced to a minimum. At the same time, the
+plugin brings together the internal names of assets and their filepath, making
+it easier to add new assets and to keep an overview over already existing ones.
+
+The library introduces the `AssetCollection` trait that can be derived. Any
+number of asset collections can be loaded by a single `AssetLoader` during a
+configured app state. When all assets are loaded, the collections will be
+inserted into Bevy's ECS as resources. Afterwards, the `AssetLoader` will
+switch into a second configurable app state. At this point, your app can use
+the asset collections that now contain loaded asset handles.
+
+Currently, a single file always corresponds to one asset, and more complex
+assets like e.g. `TextureAtlas` are not yet supported. There are plans to
+extend the `asset` attribute to allow loading more complex assets. Stay tuned!
+
+[bevy_asset_loader]: https://github.com/NiklasEi/bevy_asset_loader
+[bevy]: https://github.com/bevyengine/bevy
+[@nikl_me]: https://twitter.com/nikl_me
+
+### [tobj][tobj]
+
+`tobj` by [@Twinklebear] and [@virtualritz] is a simple and lightweight
+option for loading OBJ files. `tobj` was originally written inspired by
+[@syoyo]'s tinyobjloader, to provide a similar lightweight and easy to integrate
+API for loading OBJ files in Rust.
+
+While initially targeted at realtime rendering applications, `tobj` has gained
+more advanced importer functionality required for offline rendering,
+simulation, and modeling applications, through recent work by [@virtualritz].
+These features provide support for merging vertices to avoid discontinuities
+in simulation packages and reordering vertices to allow omitting the
+index buffer. These features have been added while preserving the original
+lightweight API design goal of `tobj`, making it a useful crate for a range of
+applications loading with OBJ files.
+
+[tobj]: https://github.com/Twinklebear/tobj
+[@Twinklebear]: https://github.com/Twinklebear/
+[@virtualritz]: https://github.com/virtualritz
+[@syoyo]: https://github.com/syoyo
+
+### [Libfive][libfive]
+
+![CSG difference operation with a sphere and three cylinders](libfive.png)
+
+`libfive` by [@virtualritz] is a safe, oxidized wrapper around
+[Matt Keeter][@mkeeter]'s [`libfive`][libfive-orig] – a "library and set of
+tools for solid modeling especially suited for parametric and procedural
+design".
+
+`libfive` is based on [functional representation][f-rep] (f-rep). F-reps can be
+evaluated as 3D meshes with aribitrary precision.
+
+One could e.g. use this for a compact definition of a game's levels and mesh
+them adaptively, on the fly, during loading. With a density suitable for the
+machine/GPU running the game.
+
+F-reps can also be sliced into polylines/vectors or bitmaps – e.g. for deriving
+[level sets][level-set] or for SLA/DLP 3D printing.
+
+[libfive]: https://github.com/virtualritz/libfive-rs/tree/master/libfive/
+[libfive-orig]: https://libfive.com/
+[@virtualritz]: https://github.com/virtualritz/
+[@mkeeter]: https://github.com/mkeeter/
+[f-rep]: https://en.wikipedia.org/wiki/Function_representation
+[level-set]: https://en.wikipedia.org/wiki/Level_set
+
+### [nvtx-rs]
+
+{{ image_figure(
+    alt="A screenshot of NVIDIA NSight Systems with only one sections measured"
+    src="nvtx.png"
+    caption="Watching the profile in NVIDIA NSight Systems") }}
+
+NVIDIA® Tools Extension SDK (NVTX) is a C-based API for annotating events,
+code ranges, and resources in your applications.
+[nvtx-rs] by [@simbleau] is a safe rust wrapper for it.
+
+The intent is to safely wrap the NVTX library in rusty fashion
+to provide a proper cross-platform library for GPU and CPU profiling.
+Ideally this library would be used in benchmarking rust applications
+and performing research on rust projects such as a GPU analysis
+with zero-cost abstraction.
+
+[nvtx-rs]: https://github.com/simbleau/nvtx-rs
+[@simbleau]: https://github.com/simbleau
+
+## Requests for Contribution
+
+<!-- https://www.reddit.com/r/rust_gamedev/search?q=help&restrict_sr=1 -->
+
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [gfx-rs's "contributor-friendly" issues][gfx-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[gfx-issues]: https://github.com/gfx-rs/gfx/issues?q=is%3Aissue+is%3Aopen+label%3Acontributor-friendly
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/good%20first%20issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/nwlcsp/this_month_in_rust_gamedev_22_may_2021/),
+[Twitter](https://twitter.com/rust_gamedev/status/1402736426563870720),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/022/libfive.png b/content/news/022/libfive.png
new file mode 100644
index 000000000..9ba89448e
Binary files /dev/null and b/content/news/022/libfive.png differ
diff --git a/content/news/022/nestadia.png b/content/news/022/nestadia.png
new file mode 100644
index 000000000..5503f843f
Binary files /dev/null and b/content/news/022/nestadia.png differ
diff --git a/content/news/022/nvtx.png b/content/news/022/nvtx.png
new file mode 100644
index 000000000..1576b06bd
Binary files /dev/null and b/content/news/022/nvtx.png differ
diff --git a/content/news/022/outer-wonders.gif b/content/news/022/outer-wonders.gif
new file mode 100644
index 000000000..82eb681fb
Binary files /dev/null and b/content/news/022/outer-wonders.gif differ
diff --git a/content/news/022/pglowrpg_progress.gif b/content/news/022/pglowrpg_progress.gif
new file mode 100644
index 000000000..5487c3378
Binary files /dev/null and b/content/news/022/pglowrpg_progress.gif differ
diff --git a/content/news/022/rafx-wireframe-demo.jpg b/content/news/022/rafx-wireframe-demo.jpg
new file mode 100644
index 000000000..5c45cac87
Binary files /dev/null and b/content/news/022/rafx-wireframe-demo.jpg differ
diff --git a/content/news/022/rg3d_terrain.jpg b/content/news/022/rg3d_terrain.jpg
new file mode 100644
index 000000000..7bd28c093
Binary files /dev/null and b/content/news/022/rg3d_terrain.jpg differ
diff --git a/content/news/022/rpg-cli.png b/content/news/022/rpg-cli.png
new file mode 100644
index 000000000..0d812fbed
Binary files /dev/null and b/content/news/022/rpg-cli.png differ
diff --git a/content/news/022/rustcraft.png b/content/news/022/rustcraft.png
new file mode 100644
index 000000000..822163ed9
Binary files /dev/null and b/content/news/022/rustcraft.png differ
diff --git a/content/news/022/texture-generator.png b/content/news/022/texture-generator.png
new file mode 100644
index 000000000..a43554da0
Binary files /dev/null and b/content/news/022/texture-generator.png differ
diff --git a/content/news/022/the_process.gif b/content/news/022/the_process.gif
new file mode 100644
index 000000000..a17918941
Binary files /dev/null and b/content/news/022/the_process.gif differ
diff --git a/content/news/022/theta-wave.gif b/content/news/022/theta-wave.gif
new file mode 100644
index 000000000..d0538685f
Binary files /dev/null and b/content/news/022/theta-wave.gif differ
diff --git a/content/news/022/unbroken_lynx.png b/content/news/022/unbroken_lynx.png
new file mode 100644
index 000000000..40f886582
Binary files /dev/null and b/content/news/022/unbroken_lynx.png differ
diff --git a/content/news/022/veloren.jpg b/content/news/022/veloren.jpg
new file mode 100644
index 000000000..ae793bf32
Binary files /dev/null and b/content/news/022/veloren.jpg differ
diff --git a/content/news/022/voxel_engine_wgpu.jpg b/content/news/022/voxel_engine_wgpu.jpg
new file mode 100644
index 000000000..4c1c3db2e
Binary files /dev/null and b/content/news/022/voxel_engine_wgpu.jpg differ
diff --git a/content/news/023/battleship.gif b/content/news/023/battleship.gif
new file mode 100644
index 000000000..7e5c96dcb
Binary files /dev/null and b/content/news/023/battleship.gif differ
diff --git a/content/news/023/bevy_config_cam_logo.svg b/content/news/023/bevy_config_cam_logo.svg
new file mode 100644
index 000000000..262bba605
--- /dev/null
+++ b/content/news/023/bevy_config_cam_logo.svg
@@ -0,0 +1,120 @@
+<!-- Credits goes to sindresorhus for making this stunning yet simple animation. Expanded upon by BlackPhlox -->
+<svg fill="none" viewBox="0 0 1200 200" width="1200" height="200" xmlns="http://www.w3.org/2000/svg">
+	<foreignObject width="100%" height="100%">
+		<div xmlns="http://www.w3.org/1999/xhtml">
+			<style>
+				@keyframes rotate {
+					0% {
+						transform: rotate(3deg);
+					}
+					100% {
+						transform: rotate(-3deg);
+					}
+				}
+
+				@keyframes gradientBackground {
+					0% {
+						background-position: 0% 50%;
+					}
+					50% {
+						background-position: 100% 50%;
+					}
+					100% {
+						background-position: 0% 50%;
+					}
+				}
+				
+				@keyframes rotateHandsR {
+					0% {
+						transform: rotateY(-180deg);
+					}
+					100% {
+						transform: rotateY(180deg);
+					}
+				}
+
+				@keyframes fadeIn {
+					0% {
+						opacity: 0;
+					}
+					66% {
+						opacity: 0;
+					}
+					100% {
+						opacity: 1;
+					}
+				}
+
+				.container {
+					font-family:
+						system-ui,
+						-apple-system,
+						'Segoe UI',
+						Roboto,
+						Helvetica,
+						Arial,
+						sans-serif,
+						'Apple Color Emoji',
+						'Segoe UI Emoji';
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+					margin: 0;
+					width: 100%;
+					height: 200px;
+					background: linear-gradient(-45deg, #fc5c7d, #6a82fb, #05dfd7);
+					background-size: 600% 400%;
+					animation: gradientBackground 10s ease infinite;
+					border-radius: 10px;
+					color: white;
+					text-align: center;
+				}
+				
+				
+				.right-container {
+                	animation: rotateHandsR linear 10s infinite alternate;
+					position: absolute;
+				}
+                
+                .right-container h2 {
+                	transform: translate(-475px,0px);
+                }
+
+				h1 {
+					font-size: 50px;
+					line-height: 1.3;
+					letter-spacing: 5px;
+					text-transform: uppercase;
+					text-shadow:
+						0 1px 0 #efefef,
+						0 2px 0 #efefef,
+						0 3px 0 #efefef,
+						0 4px 0 #efefef,
+						0 12px 5px rgba(0, 0, 0, 0.1);
+					animation: rotate ease-in-out 2.5s infinite alternate;
+				}
+				
+				h2 {
+					font-size: 95px;
+					line-height: 1.3;
+					letter-spacing: 5px;
+					text-transform: uppercase;
+					text-shadow:
+						0 1px 0 #efefef,
+						0 2px 0 #efefef,
+						0 3px 0 #efefef,
+						0 4px 0 #efefef,
+						0 12px 5px rgba(0, 0, 0, 0.1);
+				}
+			</style>
+			<div class="container">
+				<h1>Bevy Config Cam</h1>
+				<!--<p>Click to see the source</p>-->
+				<div class="right-container">
+					<h2>🎥</h2> 
+				</div>	
+			</div>
+		</div>
+	</foreignObject>
+</svg>
\ No newline at end of file
diff --git a/content/news/023/bevy_midi_logo.svg b/content/news/023/bevy_midi_logo.svg
new file mode 100644
index 000000000..fc6f3a4c5
--- /dev/null
+++ b/content/news/023/bevy_midi_logo.svg
@@ -0,0 +1,132 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" height="450" width="1355">
+  <filter id="dropshadow" height="130%">
+    <feGaussianBlur in="SourceAlpha" stdDeviation="8"/>
+    <feOffset dx="2" dy="2" result="offsetblur"/>
+    <feComponentTransfer>
+      <feFuncA type="linear" slope="0.8"/>
+    </feComponentTransfer>
+    <feMerge> 
+      <feMergeNode/> 
+      <feMergeNode in="SourceGraphic"/>
+    </feMerge>
+  </filter>
+  
+<g transform="translate(20 20)">
+<path style="fill:#2D2D2D;filter:url(#dropshadow)" d="M0 20C0 8.95431 8.95431 0 20 0H380C391.046 0 400 8.95431 400 20V400H0V20Z"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M184.333 260.321H179.351H166.508V240.393V55H112.482V240.393V260.321H94.6573V400H184.333V260.321Z" fill="white" fill-opacity="0.09"/>
+<path d="M0 55H46.9412V240.393V260.321H59.7836H64.7655V400H0V55Z" fill="white" fill-opacity="0.09" />
+<path fill-rule="evenodd" clip-rule="evenodd" d="M304.343 260.321H299.361H286.518V240.393V55H232.492V240.393V260.321H214.667V400H304.343V260.321ZM334.234 400H399V55H352.059V240.393V260.321H339.216H334.234V400Z" fill="white" fill-opacity="0.09"/>
+<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="400" height="400">
+<path d="M0 20C0 8.95431 8.95431 0 20 0H380C391.046 0 400 8.95431 400 20V365C400 384.33 384.33 400 365 400H35C15.67 400 0 384.33 0 365V20Z" fill="#C4C4C4"/>
+</mask>
+<g mask="url(#mask0)">
+<rect x="-78" y="-46" width="575" height="101" fill="#666666"/>
+<circle cx="32" cy="29" r="15" fill="#FF0000"/>
+<circle cx="78" cy="29" r="15" fill="#FFF500"/>
+<circle cx="124" cy="29" r="15" fill="#29AA26"/>
+</g>
+</g>
+
+<g transform="translate(20 -2127) scale(2.5)">
+ 	<g clip-path="url(#spec-left)">
+ 		<use height="100%" width="100%" xlink:href="#code-block"/>
+ 		<use height="100%" width="100%" xlink:href="#code-block" y="284"/>
+	</g>
+    
+</g>
+  <defs id="defs48">
+    <clipPath id="spec-left">
+      <rect x="0" y="881" width="305" height="138" rx="0" fill="#666666"/>
+    </clipPath>
+    <style type="text/css" id="style5503">
+      svg { --code-one: rgba(128,230,25,0.5); --code-two: rgba(229,230,25,0.5); --code-three: rgba(230,25,128,0.5); --code-four: rgba(25,195,230,0.5); } .code-block { -webkit-animation: read 5.5s infinite linear; animation: read 5.5s infinite linear; } .code-block rect { fill: var(--code-one); } .code-block rect:nth-of-type(5) { fill: var(--code-four); } .code-block rect:nth-of-type(8), .code-block rect:nth-of-type(9) { fill: var(--code-two); } .code-block rect:nth-of-type(12) { fill: var(--code-three); } @-webkit-keyframes read { to { -webkit-transform: translate(0, -283.5px); transform: translate(0, -283.5px); } } @keyframes read { to { -webkit-transform: translate(0, -283.5px); transform: translate(0, -283.5px); } }
+    </style>
+    <g class="code-block" id="code-block">
+      <rect ry="0" y="862" x="5" height="7.5" width="150" id="rect5505"/>
+      <rect ry="0" y="874" x="5" height="7.5" width="28" id="rect5507"/>
+      <rect width="54" height="7.5" x="5" y="886" ry="0" id="rect5509"/>
+      <rect ry="0" y="897" x="5" height="7.5" width="148" id="rect5511"/>
+      <rect width="56" height="7.5" x="5" y="909" ry="0" id="rect5513"/>
+      <rect ry="0" y="921" x="5" height="7.5" width="51" id="rect5515"/>
+      <rect width="51" height="7.5" x="5" y="932" ry="0" id="rect5517"/>
+      <rect ry="0" y="944" x="5" height="7.5" width="62" id="rect5519"/>
+      <rect width="74" height="7.5" x="5" y="956" ry="0" id="rect5521"/>
+      <rect ry="0" y="967" x="5" height="7.5" width="84" id="rect5523"/>
+      <rect width="64" height="7.5" x="5" y="979" ry="0" id="rect5525"/>
+      <rect ry="0" y="991" x="5" height="7.5" width="74" id="rect5527"/>
+      <rect width="41" height="7.5" x="5" y="1003" ry="0" id="rect5529"/>
+      <rect ry="0" y="1014" x="5" height="7.5" width="58" id="rect5531"/>
+      <rect width="58" height="7.5" x="5" y="1026" ry="0" id="rect5533"/>
+      <rect ry="0" y="1038" x="5" height="7.5" width="74" id="rect5535"/>
+      <rect width="46" height="7.5" x="5" y="1049" ry="0" id="rect5537"/>
+      <rect ry="0" y="1061" x="5" height="7.5" width="123" id="rect5539"/>
+      <rect width="107" height="7.5" x="5" y="1073" ry="0" id="rect5541"/>
+      <rect ry="0" y="1084" x="5" height="7.5" width="72" id="rect5543"/>
+      <rect ry="0" y="1096" x="5" height="7.5" width="134" id="rect5545"/>
+      <rect width="104" height="7.5" x="5" y="1108" ry="0" id="rect5547"/>
+      <rect ry="0" y="1120" x="5" height="7.5" width="49" id="rect5549"/>
+      <rect width="83" height="7.5" x="5" y="1131" ry="0" id="rect5551"/>
+    </g>
+        <style type="text/css" id="style5503">
+      
+      @-webkit-keyframes read { to { -webkit-transform: translate(0, -283.5px); transform: translate(0, -283.5px); } } 
+      @keyframes read { to { -webkit-transform: translate(0, -283.5px); transform: translate(0, -283.5px); } }
+      
+      h1 {
+      	font-size: 150px;
+        color: #666666;
+        line-height: 1.3;
+        letter-spacing: 5px;
+        text-transform: uppercase;
+        transform: translate(400px, 30px);
+        -webkit-transform: translate(400px, 30px);
+        text-shadow:
+          0 1px 0 #565656,
+          0 2px 0 #565656,
+          0 3px 0 #565656,
+          0 4px 0 #565656,
+          0 8px 10px rgba(0, 0, 0, 0.8);
+        animation: rotate ease-in-out 1s infinite alternate;
+      }
+      
+      @keyframes motion_left {
+        0% {
+          transform: transform: translate(50px, -20px);
+          -webkit-transform: translate(50px,-20px);
+        }
+        100% {
+          transform: transform: translate(50px, 0px);
+          -webkit-transform: translate(50px, 0px);
+        }
+      }
+      
+      @keyframes motion_right {
+        0% {
+          transform: translate(0px,0px);
+          -webkit-transform: translate(900px,-315px);
+        }
+        100% {
+          transform: translate(0px,0px);
+          -webkit-transform: translate(900px,-300px);
+        }
+      }
+      
+      .left-container {
+        position: relative;
+        transform: translate(50px, -20px);
+        -webkit-transform: translate(50px,-20px);
+        animation: motion_left ease-in-out 2s infinite alternate;
+      }
+      
+    </style>
+  </defs>
+  <foreignObject width="100%" height="100%">
+    <div xmlns="http://www.w3.org/1999/xhtml">
+      <div class="container">
+        <div class="left-container">
+          <h1>bevy_midi</h1>
+        </div>
+      </div>
+    </div>
+  </foreignObject>
+</svg>
\ No newline at end of file
diff --git a/content/news/023/blightmud.png b/content/news/023/blightmud.png
new file mode 100644
index 000000000..1c4fb4a99
Binary files /dev/null and b/content/news/023/blightmud.png differ
diff --git a/content/news/023/cakes.png b/content/news/023/cakes.png
new file mode 100644
index 000000000..2bafcd1f4
Binary files /dev/null and b/content/news/023/cakes.png differ
diff --git a/content/news/023/crystalorb.gif b/content/news/023/crystalorb.gif
new file mode 100644
index 000000000..7a7942f37
Binary files /dev/null and b/content/news/023/crystalorb.gif differ
diff --git a/content/news/023/dango.gif b/content/news/023/dango.gif
new file mode 100644
index 000000000..3f1a305e1
Binary files /dev/null and b/content/news/023/dango.gif differ
diff --git a/content/news/023/egregoria.jpg b/content/news/023/egregoria.jpg
new file mode 100644
index 000000000..d67d9524b
Binary files /dev/null and b/content/news/023/egregoria.jpg differ
diff --git a/content/news/023/egui.gif b/content/news/023/egui.gif
new file mode 100644
index 000000000..87ad694f4
Binary files /dev/null and b/content/news/023/egui.gif differ
diff --git a/content/news/023/erupt.svg b/content/news/023/erupt.svg
new file mode 100644
index 000000000..4e24614f7
--- /dev/null
+++ b/content/news/023/erupt.svg
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 512 512"
+   version="1.1"
+   id="svg46"
+   sodipodi:docname="erupt.svg"
+   inkscape:version="1.1 (c4e8f9ed74, 2021-05-24)"
+   width="128"
+   height="128"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <metadata
+     id="metadata52">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs50" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1011"
+     id="namedview48"
+     showgrid="false"
+     inkscape:zoom="4"
+     inkscape:cx="68.625001"
+     inkscape:cy="55.75"
+     inkscape:window-x="0"
+     inkscape:window-y="1112"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg46"
+     inkscape:document-rotation="0"
+     inkscape:pagecheckerboard="0"
+     scale-x="4"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <path
+     fill="#292f33"
+     d="M 170.66667,512 V 227.55556 c 0,0 -16.64,14.976 -33.47911,27.43466 -4.45156,3.28534 -28.11734,11.23556 -32.88178,14.79111 -25.05956,18.70223 -36.29511,54.62756 -39.70845,59.264 C 58.06933,337.92 0,512 0,512 Z"
+     id="path2"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#4b545d"
+     d="M 455.11111,512 376.88889,259.55556 256,179.11467 164.15289,210.51733 c -5.78845,11.10756 -21.93067,49.03823 -21.93067,49.03823 L 124.44444,312.88889 0,512 Z"
+     id="path4"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#292f33"
+     d="m 257.92,365.88089 c -2.06222,-7.296 -0.36978,-13.79556 -2.51733,-20.992 -2.10489,-7.09689 -8.04978,-14.89067 -9.856,-21.02045 -3.76889,-12.78577 -6.45689,-22.51377 -6.32889,-25.20177 0.34133,-6.67023 12.71466,-5.70311 15.67289,6.67022 4.16711,17.408 9.78489,22.67022 9.78489,22.67022 0,0 1.19466,-48.08533 -8.98845,-57.856 2.06222,-3.28533 4.11022,-6.76978 5.94489,-10.58133 8.88889,-18.37511 9.18756,-29.92356 9.18756,-29.92356 0,0 -35.85423,43.53422 -45.824,69.02045 -9.96978,25.48622 14.22222,113.77777 14.22222,113.77777 L 182.32889,512 h 63.53067 c 0,0 -6.74134,-20.89244 -6.64178,-28.00356 0.0995,-7.11111 27.008,-52.45155 28.44444,-71.552 0.58311,-7.75111 -4.05333,-26.46755 -9.74222,-46.56355 z m 223.85778,0.34133 c -7.32445,-8.33422 -26.18311,-20.19555 -44.48711,-30.63466 0,0 -33.20889,-79.58756 -51.51289,-103.296 -18.304,-23.70845 -52.15289,-42.66667 -52.15289,-42.66667 l -37.632,21.03467 c 0,0 24.24889,20.56533 37.632,43.54844 13.38311,22.98311 9.79911,50.048 10.59555,55.58044 0.95289,6.64178 0.83912,13.83823 8.36267,25.01689 14.86222,22.08711 24.54756,21.91645 31.04711,32.36978 0.69689,2.06222 1.408,4.13867 2.13334,6.144 1.99111,5.47556 9.67111,9.32978 11.264,14.52089 2.48888,8.192 12.48711,32.48356 9.69955,43.94667 -1.50755,6.21511 -3.18578,21.632 -4.36622,28.64355 C 397.51111,489.48622 413.25511,512 413.25511,512 H 512 c 0,0 -14.22222,-127.55911 -30.22222,-145.77778 z"
+     id="path6"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#ffac33"
+     d="m 371.17156,316.52978 c -10.97956,-10.72356 -16.88178,-26.99378 -17.47912,-46.848 2.46045,-23.70845 -66.304,-70.016 -66.304,-70.016 L 260.15289,204.16 c 0,0 58.48178,23.90756 66.95822,63.33156 4.224,19.64088 -1.52178,46.52088 -2.95822,58.45333 -1.93422,15.91467 9.40089,25.14489 12.44444,40.27733 1.57867,7.82222 0.0996,24.09245 -1.99111,40.93156 -1.06666,8.56178 -4.94933,16.71111 -6.00178,24.54755 -2.73066,20.25245 -1.70666,35.15734 3.25689,25.77067 6.00178,-11.32089 9.28711,-27.33511 17.96267,-51.28533 4.16711,-11.52 4.42311,-24.78934 3.39911,-39.97867 -0.44089,-6.55644 1.57867,-14.35022 0.86756,-21.632 -0.72534,-7.50933 -4.18134,-14.50667 -4.736,-22.81244 -0.15645,-2.36089 0.42666,-10.496 1.30844,-20.53689 1.05245,0.17066 2.07645,0.768 3.072,2.44622 13.34045,22.21511 10.86578,43.02222 18.14756,36.70755 5.83111,-5.06311 7.01155,-16.29866 -0.71111,-23.85066 z"
+     id="path8"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#292f33"
+     d="m 124.72889,355.51289 c 0,0 -63.104,43.904 -79.68711,64.64 C 28.45867,440.88889 0,512 0,512 h 64 c 0,0 0.59733,-26.96533 -2.21867,-38.22933 -2.816,-11.264 4.43734,-34.91556 12.88534,-40.88889 20.15289,-14.22222 33.86311,-32.85334 35.84,-30.56356 7.40977,8.59022 7.40977,17.18045 7.40977,17.18045 0,0 7.09689,-19.59823 7.40978,-36.15289 0.31289,-16.55467 -0.59733,-27.83289 -0.59733,-27.83289 z"
+     id="path10"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#ffac33"
+     d="m 256,179.11467 c 0,0 -54.67022,-15.55911 -91.84711,17.77777 -16.93867,15.17512 -15.104,29.184 -21.93067,62.66312 -6.82666,33.47911 -26.46755,43.88977 -29.32622,57.18755 -5.632,26.06933 -26.33956,45.93778 -34.37511,58.368 C 73.856,382.336 67.74044,394.112 63.75822,400.73956 55.424,414.64889 49.33689,426.41067 48.59733,432.58311 46.81956,447.40267 74.66667,415.40267 74.66667,415.40267 L 121.32978,358.016 c -1.52178,32.72533 -13.14134,67.38489 -0.44089,64.19911 10.66667,-2.67378 19.38489,-16.15644 14.44978,-30.66311 -6.45689,-19.00089 -4.80711,-35.31378 -1.33689,-49.152 0.71111,-1.26578 32.02844,-56.98844 39.63733,-101.21956 7.70845,-44.74311 76.52978,-56.54755 76.52978,-56.54755 l 31.91467,12.25955 5.93066,-15.16088 z"
+     id="path12"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#e95f28"
+     d="m 397.55378,241.77778 c -18.88711,-24.88889 -46.73422,-52.40889 -60.21689,-56.71822 -11.70489,-3.74045 -6.08711,11.59111 -6.08711,11.59111 0,0 40.29155,17.57866 60.74311,95.80089 9.75644,37.33333 39.32444,52.77866 47.55911,76.00355 27.56267,77.78133 59.24978,91.91822 41.856,67.51289 -17.39378,-24.40533 -64.96711,-169.30133 -83.85422,-194.19022 z m -141.824,21.83111 c -1.536,-2.36089 -2.91556,-4.352 -4.18134,-6.21511 17.90578,-27.07911 39.12534,-57.38667 39.12534,-57.38667 0,0 -41.41511,-4.18133 -42.66667,0.44089 -12.44444,45.78133 -23.73689,60.27378 -32.88178,89.32978 -26.68089,84.736 17.20889,140.35911 24.09245,122.66666 5.51822,-14.22222 -3.00089,-53.27644 -9.55734,-76.416 -6.55644,-23.13955 -3.78311,-28.47288 -2.40355,-37.95911 0.48355,-3.31377 8.448,-16.39822 18.53155,-31.91466 1.26578,1.00977 2.44623,2.31822 3.456,4.12444 6.34312,11.37778 9.28712,32.14222 10.70934,46.23645 1.63555,16.19911 16.128,23.50933 24.12089,17.77777 7.99289,-5.73155 -2.67378,-34.44622 -20.05334,-52.992 -4.11022,-4.40889 -5.57511,-13.51111 -8.29155,-17.69244 z"
+     id="path14"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#e95f28"
+     d="m 340.89244,186.66667 c 0,0 8.448,16.44089 -23.25333,16.14222 -8.30578,-0.0711 -12.24533,7.28178 -23.11111,8.192 -9.04533,0.75378 -21.46133,-3.456 -31.70133,-3.456 -10.24,0 -22.04445,6.98311 -31.08978,6.22933 -10.89422,-0.91022 -23.59467,-11.86133 -31.72978,-13.63911 -15.104,-3.29955 -25.48622,-4.11022 -25.48622,-9.18755 0,-5.07734 17.16622,-11.22134 32.29867,-14.52089 8.12088,-1.77778 15.04711,4.05333 25.91288,3.14311 9.04534,-0.75378 18.36089,-1.43645 28.60089,-1.43645 10.24,0 20.12445,-6.12977 29.16978,-5.36177 10.89422,0.91022 19.95378,6.144 28.14578,7.60888 9.71378,1.74934 15.47378,3.47023 18.688,4.67912 2.63111,0.98133 3.55555,1.60711 3.55555,1.60711 z"
+     id="path16"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#ffac33"
+     d="m 363.10756,98.21867 c 0,0 -49.13778,-19.41334 -96.19912,-19.41334 -47.06133,0 -105.13066,26.82311 -105.13066,26.82311 46.22222,39.31023 44.35911,81.024 44.35911,81.024 h 109.34044 c 0,0.0142 16.52623,-57.62844 47.63023,-88.43377 z"
+     id="path18"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#ffac33"
+     d="m 315.47733,186.66667 c 0,0 -0.79644,2.98666 -5.68889,4.43733 -1.29422,0.384 -4.36622,-0.68267 -6.44266,0 -2.47467,0.81067 -6.912,2.85867 -9.11645,3.11467 -2.36089,0.28444 -7.76533,-1.33689 -10.43911,-1.10934 -4.89244,0.39823 -7.38133,2.26134 -13.11289,2.44623 -3.88266,0.11377 -5.70311,-1.39378 -9.856,-1.39378 -1.55022,0 -4.84977,-1.37956 -7.46666,-1.26578 -4.30934,0.17067 -8.29156,1.84889 -10.66667,1.77778 -6.44267,-0.19911 -7.75111,-3.072 -13.11289,-3.55556 -5.19111,-0.45511 -8.88889,2.00534 -12.672,1.33689 -7.13955,-1.26578 -10.752,-5.77422 -10.752,-5.77422 0,-4.13867 24.47645,-7.49511 54.67022,-7.49511 30.19378,0 54.656,7.48089 54.656,7.48089 z"
+     id="path20"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#e95f28"
+     d="m 243.84,194.58844 c 0,0 -0.99556,-8.17777 -4.28089,-19.44177 -8.74667,-29.96623 -8.448,-51.59823 -8.448,-51.59823 l -19.85422,9.48623 c 0,0 10.368,19.85422 18.56,58.21155 0,0 2.84444,0.0711 6.10133,1.83467 3.25689,1.76355 7.92178,1.50755 7.92178,1.50755 z m 24.14933,0.896 c 0.0569,-3.24266 0.14223,-10.16888 1.05245,-17.26577 0.896,-6.99734 4.56533,-23.85067 5.93066,-32.14223 2.31823,-14.15111 1.664,-24.12088 4.736,-29.62488 l -31.70133,1.18044 c 0,0 6.69867,13.24089 8.29156,29.04178 1.25155,12.31644 0.0142,31.84355 2.77333,47.31733 0,0 0.896,0.24178 2.11911,0.34133 0.61156,0.0427 1.99111,0.0427 2.73067,0.17067 2.23289,0.36978 4.06755,0.98133 4.06755,0.98133 z M 299.44889,192.64 c 0,0 6.57067,-20.69333 8.81778,-34.78756 3.65511,-22.94044 24.37689,-56.67555 29.952,-62.29333 l -40.22045,-1.33689 c 0,0 0.98134,30.02311 -0.82489,49.64978 -1.36533,14.83378 -8.50489,28.31644 -7.38133,49.82044 0,0 1.90578,0.71112 4.42311,0.52623 2.20445,-0.17067 5.23378,-1.57867 5.23378,-1.57867 z"
+     id="path22"
+     style="stroke-width:14.2222" />
+  <path
+     fill="#ccd6dd"
+     d="m 432,28.99911 c -0.64,0 -1.25156,0.14222 -1.87733,0.18489 -2.74489,-6.34311 -9.03111,-10.80889 -16.39823,-10.80889 -3.34222,0 -6.30044,1.16622 -8.97422,2.75911 -6.37155,-10.24 -17.64978,-17.12355 -30.60622,-17.12355 -11.57689,0 -21.77422,5.54666 -28.38756,14.00889 -7.01155,-4.77867 -15.47377,-7.59467 -24.59022,-7.59467 -16.41244,0 -30.54933,9.15911 -38.03022,22.54222 -3.76889,-8.704 -12.43022,-14.80533 -22.51378,-14.80533 -7.82222,0 -14.72,3.74044 -19.21422,9.44355 C 235.86133,11.59111 220.8,0 202.89422,0 c -14.43555,0 -27.05066,7.50933 -34.33244,18.80178 -2.00534,-0.29867 -4.02489,-0.61156 -6.11556,-0.61156 -11.40622,0 -21.70311,4.69334 -29.12711,12.21689 -0.96711,-0.0711 -1.87733,-0.28444 -2.85867,-0.28444 -0.48355,0 -0.93866,0.128 -1.408,0.14222 -4.38044,-5.66045 -11.136,-9.344 -18.816,-9.344 -7.48088,0 -14.08,3.51289 -18.44622,8.90311 -2.41778,-0.71111 -4.93511,-1.19467 -7.59466,-1.19467 -15.07556,0 -27.30667,12.23111 -27.30667,27.32089 0,15.08978 12.23111,27.32089 27.32089,27.32089 0.78222,0 1.50755,-0.17067 2.27555,-0.22755 3.08623,3.85422 7.62311,6.48533 12.94223,6.48533 0.65422,0 1.20888,-0.29867 1.83466,-0.36978 6.72711,8.81778 17.23734,14.592 29.16978,14.592 2.70222,0 5.31911,-0.32711 7.85067,-0.88178 4.97777,3.95378 10.78044,6.89778 17.25155,8.192 9.15911,15.94311 26.15467,26.80889 45.85245,26.80889 18.64533,0 34.97244,-9.65689 44.44444,-24.192 7.85067,9.62845 19.65511,15.90045 33.03822,15.90045 19.79734,0 36.29511,-13.51111 41.20178,-31.75823 0.36978,0.0142 0.71111,0.11378 1.08089,0.11378 5.21956,0 10.15467,-1.06666 14.80533,-2.74489 7.33867,5.73156 16.45511,9.28711 26.496,9.28711 15.104,0 28.37334,-7.76533 36.11023,-19.48444 2.75911,1.97689 5.95911,3.38489 9.61422,3.38489 6.85511,0 12.70044,-4.13867 15.33155,-10.01245 2.67378,0.95289 5.504,1.56445 8.49067,1.56445 14.05156,0 25.44356,-11.392 25.44356,-25.44356 0,-14.05155 -11.392,-25.48622 -25.44356,-25.48622 z"
+     id="path24"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="202.66667"
+     cy="66.887115"
+     r="28.785776"
+     id="circle26"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="167.11111"
+     cy="64.52623"
+     r="28.458666"
+     id="circle28"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="139.15024"
+     cy="65.820435"
+     r="15.786667"
+     id="circle30"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="336.48355"
+     cy="52.181335"
+     r="15.786667"
+     id="circle32"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="372.73602"
+     cy="46.748444"
+     r="21.262222"
+     id="circle34"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="227.21422"
+     cy="60.629333"
+     r="23.210667"
+     id="circle36"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="363.44888"
+     cy="59.207108"
+     r="25.372444"
+     id="circle38"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="247.76532"
+     cy="68.849777"
+     r="21.788445"
+     id="circle40"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="201.99823"
+     cy="50.218658"
+     r="24.177778"
+     id="circle42"
+     style="stroke-width:14.2222" />
+  <circle
+     fill="#aab8c2"
+     cx="201.4151"
+     cy="75.007996"
+     r="40.675552"
+     id="circle44"
+     style="stroke-width:14.2222" />
+  <g
+     aria-label="erupt"
+     transform="matrix(13.200728,0,0,13.200728,18.18506,8.13505)"
+     id="text56"
+     style="font-size:10.6667px;line-height:1.25;font-family:Hack;-inkscape-font-specification:Hack;text-align:center;text-anchor:middle;white-space:pre;inline-size:35.9937">
+    <path
+       d="m 5.4794526,35.928226 q -1.3489626,0 -2.1197983,-0.807295 -0.7656275,-0.812502 -0.7656275,-2.213548 0,-0.869795 0.3020843,-1.572922 0.3072927,-0.703127 0.9062529,-1.114587 0.6041686,-0.416668 1.489588,-0.416668 1.1666704,0 1.8072974,0.750003 0.6458354,0.744794 0.6458354,2.067715 v 0.468751 H 3.59403 v 0.03125 q 0,0.911461 0.4791682,1.45313 0.4791682,0.541668 1.4166711,0.541668 0.5416684,0 1.0468783,-0.171875 0.5104183,-0.171876 0.9843781,-0.416668 v 0.953128 q -0.4947932,0.203125 -1.0052115,0.322917 -0.5052099,0.125001 -1.0364616,0.125001 z m 1.3072958,-3.588553 q 0,-0.484377 -0.1458338,-0.875003 -0.1458338,-0.390626 -0.4687515,-0.619794 -0.3177093,-0.229167 -0.8437526,-0.229167 -0.5312517,0 -0.8906278,0.234376 -0.3541678,0.229167 -0.5572935,0.619793 -0.1979173,0.390626 -0.2500007,0.869795 z"
+       style="font-size:10.6667px;fill:#ffffff"
+       id="path33" />
+    <path
+       d="m 9.9430086,29.943832 h 0.8697944 l 0.09375,1.140628 q 0.244793,-0.619793 0.734378,-0.947919 0.494793,-0.333335 1.182295,-0.333335 0.718752,0 1.250004,0.364585 v 0.97917 q -0.562502,-0.458335 -1.333338,-0.458335 -0.885419,0 -1.359379,0.56771 -0.47396,0.562502 -0.47396,1.619797 v 2.901051 H 9.9430086 Z"
+       style="font-size:10.6667px;fill:#ffffff"
+       id="path35" />
+    <path
+       d="m 17.583658,35.928226 q -1.776047,0 -1.776047,-2.359383 v -3.614595 h 0.958336 v 3.614595 q 0,1.526047 1.140629,1.526047 0.666668,0 1.031253,-0.479168 0.364584,-0.484377 0.364584,-1.364588 v -3.296886 h 0.963545 v 5.822936 h -0.869794 l -0.09375,-0.875003 q -0.520835,1.026045 -1.718755,1.026045 z"
+       style="font-size:10.6667px;fill:#ffffff"
+       id="path37" />
+    <path
+       d="m 22.203464,29.943832 h 0.869794 l 0.09375,0.744794 q 0.500001,-0.88542 1.567713,-0.88542 1.046878,0 1.645838,0.817711 0.604169,0.817711 0.604169,2.234382 0,1.427088 -0.609377,2.250007 -0.604168,0.82292 -1.64063,0.82292 -1.093753,0 -1.567713,-0.88542 v 2.953135 h -0.963545 z m 2.406258,5.171891 q 1.369796,0 1.369796,-2.250007 0,-2.250007 -1.369796,-2.250007 -0.703128,0 -1.07292,0.583335 -0.369793,0.583335 -0.369793,1.661464 0,1.083336 0.369793,1.67188 0.375001,0.583335 1.07292,0.583335 z"
+       style="font-size:10.6667px;fill:#ffffff"
+       id="path39" />
+    <path
+       d="m 31.838912,35.798017 q -1.07292,0 -1.520838,-0.432293 -0.44271,-0.437501 -0.44271,-1.489588 v -3.18751 h -1.557297 v -0.744794 h 1.557297 V 28.417785 L 30.8337,28.001117 v 1.942715 h 2.17709 v 0.744794 H 30.8337 v 3.18751 q 0,0.640627 0.244793,0.901044 0.244792,0.25521 0.854169,0.25521 h 1.078128 v 0.765627 z"
+       style="font-size:10.6667px;fill:#ffffff"
+       id="path41" />
+  </g>
+</svg>
diff --git a/content/news/023/fish.gif b/content/news/023/fish.gif
new file mode 100644
index 000000000..188db29a8
Binary files /dev/null and b/content/news/023/fish.gif differ
diff --git a/content/news/023/flesh.gif b/content/news/023/flesh.gif
new file mode 100644
index 000000000..d02b6ca90
Binary files /dev/null and b/content/news/023/flesh.gif differ
diff --git a/content/news/023/gamedev-meetup.png b/content/news/023/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/023/gamedev-meetup.png differ
diff --git a/content/news/023/graphite-cherry-tree.png b/content/news/023/graphite-cherry-tree.png
new file mode 100644
index 000000000..a23f94976
Binary files /dev/null and b/content/news/023/graphite-cherry-tree.png differ
diff --git a/content/news/023/hatchooseswizard.jpg b/content/news/023/hatchooseswizard.jpg
new file mode 100644
index 000000000..53030ccf4
Binary files /dev/null and b/content/news/023/hatchooseswizard.jpg differ
diff --git a/content/news/023/hyperfarmer.png b/content/news/023/hyperfarmer.png
new file mode 100644
index 000000000..40e04d2d4
Binary files /dev/null and b/content/news/023/hyperfarmer.png differ
diff --git a/content/news/023/index.md b/content/news/023/index.md
new file mode 100644
index 000000000..075f3fee4
--- /dev/null
+++ b/content/news/023/index.md
@@ -0,0 +1,1120 @@
++++
+title = "This Month in Rust GameDev #23 - June 2021"
+date = 2021-07-08
+transparent = true
+draft = false
++++
+
+Welcome to the 23rd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+<!-- no toc -->
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The sixth Rust Gamedev Meetup happened in June. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord], and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on in a future meetup, fill out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=Wuwxh958P6I
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### taileater
+
+![logo of a pixellated snake attempting to eat it's own tail](taileater.gif)
+
+taileater ([itch.io](https://szunami.itch.io/taileater),
+[GitHub](https://github.com/szunami/taileater/)) is a open source puzzle game
+in which you eat your own tail to win.
+
+The game is programmed in Rust using the Bevy engine.
+
+### [Egregoria]
+
+![Egregoria in 3D](egregoria.jpg)
+
+[Egregoria] ([GitHub][Egregoria], [Discord][egregoria-discord])
+by [@Uriopass]
+is a simulation oriented city builder that tries
+to replicate modern society as well as possible.
+
+It recently upgraded from a 2D top-down view to a
+3D third-person camera as seen in the screenshot above.
+
+Elevated roads and bridges are now possible, allowing to build
+[complex highway interchanges][highway-screenshot].
+
+Some technical details around the renderer with more screenshots,
+along with an architectural overview of the project can be read in the
+[9th devlog][egregoria-blog-post].
+
+[Egregoria]: https://github.com/Uriopass/Egregoria
+[@Uriopass]: https://github.com/Uriopass
+[egregoria-blog-post]: https://douady.paris/blog/egregoria_9.html
+[egregoria-discord]: https://discord.gg/CAaZhUJ
+[highway-screenshot]: http://douady.paris/blog/img/blog_9/interchange.jpg
+
+### [Open Combat][opencombat]
+
+![Open Combat logo](open_combat.jpg)
+
+[Open Combat][opencombat]
+([/r/OpenCombatGame](https://reddit.com/r/OpenCombatGame),
+[Discord](https://discord.gg/YD2V7XsBQZ),
+[Forum](https://discourse.opencombat.bux.fr/))
+is a real time tactical game directly inspired by
+[Close Combat Series](https://en.wikipedia.org/wiki/Close_Combat_(series)).
+The player takes control of soldier units and orders them to win the battles
+from a top down 2D view.
+
+The project recently started with Rust language after a Python language proof of
+concept in 2017. More info is available at [opencombat.bux.fr][opencombat],
+and you can find a
+[presentation](https://youtube.com/watch?v=pxVgjBKXlIw) video and a game
+making of [video](https://youtube.com/watch?v=3TOEZ7krhvI) on YouTube.
+
+[opencombat]: https://opencombat.bux.fr
+
+### [Battleship.rs](https://github.com/deepu105/battleship-rs)
+
+![Battleship gameplay](battleship.gif)
+
+[Battleship.rs](https://github.com/deepu105/battleship-rs) by
+[Deepu](https://twitter.com/deepu105) is an open source Battleship game for
+the terminal built in Rust using the [tui-rs](https://github.com/fdehau/tui-rs)
+crate.
+
+The game uses different ship shapes, unlike the traditional vertical/horizontal
+shapes, and has multiple game rules to choose from. There are two difficulty
+levels as well. The game is supported in Linux, Mac and Docker.
+
+If you have docker installed, you can play the game instantly by running
+
+```bash
+docker run --rm -it deepu105/battleship:main
+```
+
+The next iteration would be to support a WebAssembly version of the same.
+
+### [Blightmud][blightmud]
+
+![Blightmud logo](blightmud.png)
+
+[Blightmud][blightmud] ([Discord](https://discord.gg/qnxgUC5)) is a mud client
+for the terminal inspired by [tintin++][tintin] and [tinyfugue][tinyfugue]
+allowing users to connect and get immersed in the worlds offered by text based
+online multi user dungeons known as muds.
+
+The project was birthed in April of 2020 and has come a long way since.  It now
+offers granular scripting access using [lua][lua], plugin handling, built in
+text-to-speech (via [Speech dispatcher][speechd]), split view scrolling, modern
+telnet protocols, and TLS connections to name a few.
+
+[blightmud]: https://github.com/Blightmud/Blightmud
+[tintin]: https://tintin.mudhalla.net/
+[tinyfugue]: http://tinyfugue.sourceforge.net/
+[lua]: https://www.lua.org/
+[speechd]: https://freebsoft.org/speechd
+
+### [The Hat Chooses the Wizard][hatchooseswizard]
+
+{{ image_figure(
+    alt='Level 1-4 of the game "The Hat Chooses the Wizard" running on a Game Boy
+Advance'
+    src="hatchooseswizard.jpg"
+    caption="Runs on real hardware!") }}
+
+The Hat Chooses the Wizard is a 2D platformer for the Game Boy Advance.
+
+It was made for this year's Game Maker's Toolkit (GMTK) game jam with the theme
+joined together and came in the top 25% of over 5800 entries. The game plays
+over 12 levels with the core mechanic being to throw your hat and then
+accelerate towards it. You can play it on a web-based emulator embedded on the
+[itch][hatchooseswizard] page.
+
+The game is written in pure Rust and uses [agb][agblibrary] to
+interface with the hardware. The library is designed to allow you to write games
+without needing a detailed understanding of the hardware while still giving full
+access to all of its capabilities. It is under active development with
+plenty more features on the way.
+
+You can find the source code for the game [here][hatchooseswizardsource] and all
+feedback is welcome.
+
+[hatchooseswizard]: https://lostimmortal.itch.io/the-hat-chooses-the-wizard
+[hatchooseswizardsource]: https://github.com/corwinkuiper/joinedtogether
+[agblibrary]: https://github.com/corwinkuiper/agb
+
+### [Themengi]
+
+{{ image_figure(
+    alt='User highlighting objects in the game world and parsing the phrase
+"dang puru rupuu kythengi" into the action "open", object "door", and mods
+"red" and "left".'
+    src="themengi.gif"
+    caption="Demonstration of natural language parser with temporary words and grammar.") }}
+
+[Themengi] ([Discord][themengi-discord], [Twitter][themengi-twitter])
+is a puzzle adventure game where you learn an alien language,
+with completely unknown words and grammar, to navigate the world
+and find your way home.
+
+This month the [first devlog][themengi-video] for
+Themengi was published, discussing its natural language parser using
+Head-Driven Phrase Structure Grammar, the choice to use Bevy, a texture
+upscaling technique for faithful pixel art rendering, and implementing an
+outline shader in the Bevy render pipeline.
+
+[Themengi]: https://vgel.me/themengi
+[themengi-discord]: https://discord.gg/GpparbnXPC
+[themengi-twitter]: https://twitter.com/voooooogel
+[themengi-video]: https://youtube.com/watch?v=gtIphiK7tMs
+
+### [Dango]
+
+{{ image_figure(
+    alt="Dango bouncing and jumping around"
+    src="dango.gif"
+    caption="Cute rice dumplings",
+    link="http://ernestwong.nz/dango-tribute/server/") }}
+
+[Dango] ([GitHub][dango-github]) is a little multiplayer blob physics sandbox
+made by [@ErnWong] as a tribute to the [Dango Daikazoku][dango-daikazoku] from
+[Clannad]. It was made using various libraries from the Rust community,
+including the [Bevy] game engine, the [NPhysics] physics engine, and the
+[CrystalOrb] networking library. To avoid the costs of running a server, Dango
+currently runs the server in the browser and generates a unique URL that lets
+other players to join using WebRTC.
+
+[Dango]: http://ernestwong.nz/dango-tribute/server/
+[dango-github]: https://github.com/ErnWong/dango-tribute
+[@ErnWong]: https://github.com/ErnWong
+[dango-daikazoku]: https://www.youtube.com/watch?v=XXDxZ0YGWG8
+[Clannad]: https://en.wikipedia.org/wiki/List_of_Clannad_episodes
+[Bevy]: https://bevyengine.org/
+[NPhysics]: https://nphysics.org/
+[CrystalOrb]: https://github.com/ErnWong/crystalorb
+
+### [FishGame][fishgame-itch]
+
+![FishGame](fish.gif)
+
+[FishGame][fishgame-itch] is a multiplayer brawler game made in [macroquad].
+
+FishGame started as a [nakama-rs] showcase, but now it's getting more life as
+an independent game. To make a transition from a tech demo to a real game,
+lots of playtesting and fine-tuning happened this month. Most noticeable
+improvements: a new physics system with throwable everything and a new
+zoom-to-fit camera system.
+
+[fishgame-itch]: https://fedorgames.itch.io/fish-game
+[macroquad]: https://github.com/not-fl3/macroquad
+[nakama-rs]: https://github.com/heroiclabs/nakama-rs
+
+### [Hyper Farmer][hyperfarmer-itch]
+
+![Hyper Farmer logo](hyperfarmer.png)
+
+The dubiously named [Hyper Farmer][hyperfarmer-itch] was made for the GMTK Game Jam
+using the Bevy engine. For some reason, the player has to pick up all the hay from
+their fields using a giant laser slung between two tractors. Apart from the
+[bevy_game_template][bevy_game_template], all the artwork, music, and code was
+made over about 24 hours. The game can be played in the
+[browser][hyperfarmer-itch], and native builds are available
+on [github releases][hyperfarmer].
+
+[bevy_game_template]: https://github.com/NiklasEi/bevy_game_template
+[hyperfarmer]: https://github.com/will-hart/cloud-surfer
+[hyperfarmer-itch]: https://wilsk.itch.io/hyper-farmer
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea on Steam](wor-dialogue.jpg)][wor]
+
+[Way of Rhea][wor] is a picturesque puzzle platformer-without the platforming.
+Solve mind-bending color puzzles, unlock new areas of a vibrant hub world, and
+talk to NPCs to unravel the mysteries of a world you left behind!
+
+Way of Rhea is being produced by [@masonremaley][mason-remaley]. Latest Way of
+Rhea developments:
+
+- Most biomes now have narrative arcs, experienced in part through the
+  [new dialogue system][wor-speech-bubble].
+- [@masonremaley][mason-remaley] published
+  [a blog post, *When to Rewrite*][wor-when-to-rewrite] outlining how he views the
+  rewrite vs improve tradeoff in the Way of Rhea engine.
+- Controller support was added, controls glyphs shown in game automatically
+  reflect the most recently used input device.
+- Fixes a player reported bug where undo/redo resulted in a temporary slowdown
+  due to a lack of communication with the sleep system.
+- More puzzles!
+
+[wor]: https://store.steampowered.com/app/1110620
+[wor-when-to-rewrite]: https://www.anthropicstudios.com/2021/06/25/when-to-rewrite/
+[wor-speech-bubble]: https://twitter.com/masonremaley/status/1400189924889042944
+[mason-remaley]: https://twitter.com/masonremaley
+
+### [Weegames][weegames-itch]
+
+![Weegames menu](weegames.jpg)
+
+[Weegames][weegames-itch] is a fast-paced minigame collection.
+The web version now has a counter which tells you how many
+of the 41 minigames you've played. Also, the game shows
+a newly-added loading screen while downloading the
+initial assets.
+
+Note: These updates have not yet been rolled out to the
+downloadable Windows version.
+
+[weegames-itch]: https://yeahross.itch.io/weegames
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="demo build") }}
+
+Flesh by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+organic/fleshy theme. It is implemented using [Tetra]. This month, an internal
+demo build was released, with a development journal available on
+[Google Drive][flesh-gdrive].
+
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[flesh-gdrive]: https://drive.google.com/drive/folders/1CppHsiteHDNofsVo2wHNNz_3E9YuK4Ay
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Cave run"
+    src="veloren.png"
+    caption="Turns out the cave wasn't empty") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In June, Veloren released 0.10. During the release party, some of the developers
+joined a voice call to stream the game and answer some questions about
+development. You can watch that stream [here][veloren-stream]. A lot of metrics
+were recorded during the launch, and you can read about them in
+[blog #124][veloren-124]. At peak, 118 players were playing at the same
+time during the launch.
+
+The plugins system received a tutorial about how to get started. Caves were
+overhauled with lots of new content. Veloren has officially moved fully over to
+wgpu, which you can read all about in [blog #125][veloren-125]. Work has been
+done on hot reloading for easier access of assets in game. Lots of new models
+were added to the game, and bosses in dungeons are being overhauled with more
+skills to diversify combat.
+
+June's full weekly devlogs: "This Week In Veloren...":
+[#123][veloren-123],
+[#124][veloren-124],
+[#125][veloren-125],
+[#126][veloren-126].
+
+[veloren]: https://veloren.net
+[veloren-stream]: https://www.youtube.com/watch?v=NMvEhymkqUw
+[veloren-123]: https://veloren.net/devblog-123
+[veloren-124]: https://veloren.net/devblog-124
+[veloren-125]: https://veloren.net/devblog-125
+[veloren-126]: https://veloren.net/devblog-126
+
+### [Projectris][projectris]
+
+![projectris](projectris.png)
+
+[Projectris][projectris] is like Tetris, but in 2D and 3D at the same time.
+As the 3D piece falls, you can manipulate it, but all that matters
+are the shadows it casts on the 2D game boards on either side,
+each of which is played independently.
+
+While the full concept is already prototyped, there are still many features to
+implement before this is a real game:
+scoreboard, increasing fall speed, game over, JUICE.
+
+[@bonsairobo] is not actively working on this, but is
+[happy to accept PRs][projectris].
+
+[projectris]: https://github.com/bonsairobo/projectris
+
+### [The Process]
+
+{{ image_figure(
+    alt="The new terrain editor in The Process"
+    src="the_process.gif"
+    caption="Building the world, one voxel at a time") }}
+
+[The Process] by @setzer22 is an upcoming game about factory building,
+process management, and carrot production,
+built with Rust using the Godot game engine!
+
+In this month, the main focus has been towards the addition of a new terrain
+editor to speed up the creation of game levels. Terrain meshes are built using
+smooth voxels using the implementation in the [building
+blocks](https://docs.rs/building_blocks_core) crate.
+
+This month has seen the following changes and improvements:
+
+- The new [terrain
+  editor](https://twitter.com/PlayTheProcess/status/1406707803637551107), with a
+  minimalistic GUI built in Godot itself.
+- A new [island](https://gfycat.com/talkativeneatcatfish), fully made and
+  procedurally textured with the new editor
+- Implemented random factory maintenance
+  [events](https://twitter.com/PlayTheProcess/status/1403986026402619393).
+- Migration of several old GDScript code into Rust, using the ECS pattern, like
+  the system for character
+  [movement](https://twitter.com/PlayTheProcess/status/1411410261651738635).
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/o3o8d0/experimenting_with_the_building_blocks_crate)_
+
+[The Process]: https://twitter.com/PlayTheProcess
+
+### [Not Snake][not-snake]
+
+![cube map, low poly dog and giant snake](notsnake.png)
+
+[Not Snake][not-snake] is a snake game in 3D with a twist:
+you're the snake's food!
+
+Check out the web version on the [game's itch.io page][not-snake].
+
+[not-snake]: https://ramirezmike2.itch.io/not-snake
+
+### [Space:CAKES][cakes]
+
+![screenshot](cakes.png)
+
+[Space:CAKES][cakes] is a sliding, repeating and funky puzzler
+about reaching the delicious cupcake across your spaceship.
+Made for the GMTK Game Jam.
+
+> You play as a cute alien, who has a limited amount of steps.
+> He turns green when he can walk freely, but once he runs out of steps,
+> he becomes red and can only push on crates.
+> Luckily, some crates contain +1 or +2 steps for him,
+> as long as he can push one into a laser.
+
+[cakes]: https://noxim.itch.io/spacecakes
+
+### [sokoban-sokoban]
+
+![screenshot](sokoban-sokoban.png)
+
+[sokoban-sokoban] ([source code][sokoban-sokoban-src]) by [@trouv]
+is a sokoban-like puzzle game made in 48 hours for the GMTK 2021 game jam.
+
+> Somebody messed up the graveyard! You can fix it, but your movements
+> are joined together.
+> More specifically, the location of the gravestones in the level's movement
+> table determines which movements are joined to which.
+> When two movements are "joined", the associated input performs BOTH movements!
+
+[sokoban-sokoban]: https://trouv.itch.io/sokoban-sokoban
+[sokoban-sokoban-src]: https://github.com/Trouv/sokoban-sokoban
+[@trouv]: https://trouv.itch.io
+
+## Engine Updates
+
+### thRustEngine - with simple shooter game demo
+
+![thRustEngine screenshot](thrustengine_screenshot.jpg)
+
+This is a simple descent/quake style shooter written to demo
+[thRustEngine]. The current repo is a placeholder.
+
+It loads wavefront.OBJ, and Quake1/Quake3 BSP worlds, converted to
+an internal format for collision and rendering. It uses clustered
+forward+ dynamic lighting and normal maps, and loads textures
+asynchronously.
+
+The future direction depends on community feedback (a public shared
+crate is planned). The current intention is to find a few close
+collaborators.
+
+Demo videos: [free quake map demo], [custom map demo].
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/obj38y/rust_shooter_another_little_update)_
+
+[thrustEngine]: https://github.com/experiment9123/thrustengine
+[free quake map demo]: https://vimeo.com/569777592
+[custom map demo]: https://vimeo.com/572436649
+
+### [rg3d]
+
+![rg3d](rg3d_logo.png)
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-box features. Some of
+the recent engine updates:
+
+- Initial support for custom rendering techniques.
+- Word-based wrapping for FormattedText.
+- Ability to specify material search options when loading a model.
+- Render sky box in a single draw call.
+- Fix for resource management issues.
+- Fix for FBX loader in case of invalid mappings.
+- Fix for triangulator.
+- Physics for terrains.
+- Heightfield visualization.
+- Ability to pause sound contexts.
+- `editable` flag for text boxes.
+- Various bug fixes and small improvements.
+
+rusty-editor updates:
+
+- Ability to add/remove/edit sound sources
+- Model import dialog window.
+- Embed and fonts icons in the binary, which makes package distribution
+  easier.
+- `.deb` and `.rpm` packages for Linux
+- Camera fix + ability to preview scene cameras
+- Icons for "shapeless" (lights, sound sources) objects in the scene.
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+
+## Learning Material Updates
+
+### [A Trig-less Line of Sight Algorithm for 2D Games][lineofsight]
+
+![2D Sight Example](lineofsight.png)
+
+[@basstabs] published a tutorial that explains how to write a
+line of sight algorithm for 2D games in Rust without using trigonometry or
+square roots. It includes vector diagrams and typeset math to explain the ideas
+behind each stage of the algorithm, source code for each step, tests to verify
+the accuracy of the methods, and suggestions for further improvements.
+Additionally, the
+[repository](https://github.com/basstabs/2d-line-of-sight) contains benchmarks
+and a sample application written in [ggez](https://crates.io/crates/ggez).
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/nx79kq/)_
+
+[lineofsight]: https://basstabs.github.io/2d-line-of-sight/
+[@basstabs]: https://github.com/basstabs
+
+### [When to Rewrite][when-to-rewrite]
+
+[![when-to-rewrite](when-to-rewrite.jpg)][when-to-rewrite]
+
+[@masonremaley][mason-remaley] wrote [a blog post][when-to-rewrite] offering an
+opinion on rewrites vs incremental migrations informed by his work on the
+[Way of Rhea][wor] engine.
+
+> A working system is a valuable asset. It works. It lets you test new ideas
+> cheaply. Don't take that for granted.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/o8dy0r/when_to_rewrite)_
+
+[when-to-rewrite]: https://www.anthropicstudios.com/2021/06/25/when-to-rewrite/
+[mason-remaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620
+
+### [Writing the Bevy Retro Renderer][bevy_retro_renderer]
+
+[@katharostech] published an article about their experiences writing the render
+for [Bevy Retro][bevy_retro]. They walk through the different strategies and APIs
+they tried and explain why they wrote their own renderer in the first place.
+
+[bevy_retro_renderer]: https://katharostech.com/post/writing-bevy-retros-renderer
+[bevy_retro]: https://github.com/katharostech/bevy_retrograde
+[@katharostech]: https://github.com/katharostech
+
+### [Game Development with Rust][medium_rust_gamedev]
+
+[@thebracket] published an article on the current state of Rust Game
+Development. It covers a few games and engines made in Rust, links to some
+resources for integrating Rust into major game engines (Unity and Unreal).
+The article then links to some tutorials and resources for learning Rust
+game development at different skill and experience levels.
+
+[medium_rust_gamedev]: https://medium.com/pragmatic-programmers/game-development-with-rust-31147f7b6096
+[@thebracket]: https://github.com/thebracket/
+
+### [How to make plugins system with Rust and WebAssembly][devblog.arcana.rs]
+
+[@zakarumych] published an article about their experience creating
+a fully safe plugins system using plugins compiled to WebAssembly.
+It provides reasoning for choosing WASM in specific scenario
+and contains strategies for interacting with WASM modules embedded
+into an application,
+including dealing with dynamic memory of the module,
+string and array operations, function pointers, etc.
+
+[devblog.arcana.rs]: https://devblog.arcana.rs/how-to-make-plugins-system-with-rust-and-webassembly
+[@zakarumych]: https://github.com/zakarumych/
+
+### [Getting Started with ECS using Planck ECS][planck-tutorial]
+
+![planck logo](planck_ecs.png)
+
+[planck_ecs] by [@jojolepro] is a minimalist and safe ECS library.
+
+This month [@jojolepro] released a [tutorial][planck-tutorial]
+that describes how to use ECSes in general and [planck_ecs] specifically.
+
+[planck-tutorial]: https://jojolepro.com/blog/2021-06-01_getting_started_with_ecs
+[planck_ecs]: https://github.com/jojolepro/planck_ecs
+[@jojolepro]: https://patreon.com/jojolepro
+
+## Tooling Updates
+
+### [Sugarcubes]
+
+![Sugarcubes Example](sugarcubes.png)
+
+[Sugarcubes] by [@henryksloan] is a tool for designing and testing automata.
+
+Sugarcubes allows for easy creation of models used in the theory of computing.
+It is designed to be a more intuitive and useful alternative to JFLAP,
+the most popular tool for designing automata and formal languages.
+It uses macroquad for the editor, and egui for the toolbars. Sugarcubes
+currently features a fully functional finite automaton editor and simulator,
+and many other models, editing features and simulations are planned.
+
+You can check out a [live WASM demo here][Sugarcubes],
+or the [source code on GitHub][Sugarcubes source].
+
+[Sugarcubes]: https://henryksloan.github.io/sugarcubes/
+[Sugarcubes source]: https://github.com/henryksloan/sugarcubes
+[@henryksloan]: https://github.com/henryksloan
+
+### [Rusty Slider]
+
+{{ image_figure(
+    alt="Rusty Slider code block example"
+    src="rustyslider.png"
+    caption="Supports syntax highlighting of code blocks") }}
+
+[Rusty Slider] by [@ollej] is a markdown slideshow viewer
+written with macroquad.
+
+The game engine Macroquad can be used for more than just games. It’s also a
+great way to quickly build multi-platform tools with graphics.
+
+It’s possible to write presentations in plain text using Markdown. The
+application runs natively on all major platforms, and can also be used within
+a browser.
+
+- Supports headers, bold/italic, blockquotes, lists, and code blocks with
+  syntax highlighting.
+- Automatically change slides.
+- Themes separated from content.
+- Toggle a CRT shader.
+
+The latest feature added was to execute bash code blocks. The output of the
+execution will be shown below the code block. This is meant to be used for
+demo purposes, to show actual results of commands.
+
+[Rusty Slider]: https://ollej.github.io/rusty-slider
+[@ollej]: https://twitter.com/ollej
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt="Geometric cherry tree"
+    src="graphite-cherry-tree.png"
+    caption="Geometric cherry tree artwork by BillyDM, winner of last month's first
+Graphite art contest") }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and
+raster graphics editor built on a non-destructive node-based workflow.
+
+Since last newsletter, the editor has received the ability to select layers via
+the layer panel and by clicking or dragging a box selection in the
+viewport. Selected layers can be deleted, duplicated, and copy/pasted.
+
+It is now possible to create, edit, and close multiple documents in their own
+editor tabs. Additional frontend cleanup and polish has also improved many
+parts of the editor experience.
+
+Lastly, support for transforms was added to the layers and document, paving
+the way for moving/scaling/rotating layers and the whole document within the
+viewport.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making
+rapid progress towards becoming a non-destructive, procedural graphics editor
+suitable of replacing traditional 2D DCC applications. Please
+[join the Discord][graphite-discord] - and consider asking for a tour of the
+code and how you can help!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.design
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design
+
+### [texture_generator] v0.5
+
+{{ image_figure(
+    alt="A black&white top-down image of some building"
+    src="texture_generator.png"
+    caption="An depth image example") }}
+
+[texture_generator] by [Orchaldir] is a library to generate textures,
+and a library to use those textures to render tilemaps.
+
+This month the v0.5 version was released. Some of the updates:
+
+- The editor was switched to [Iced].
+- Layered textures.
+- Door handles.
+- More options for depth calculation: depth gradient along X or Y
+  and barrel shape.
+- Furniture can now have a fixed size or fill the selected area
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/nz5ban/i_switched_my_tilemap_editor_to_iced)_
+
+[texture_generator]: https://github.com/Orchaldir/texture_generator
+[Orchaldir]: https://github.com/Orchaldir
+[texgen-v0-5]: https://github.com/Orchaldir/texture_generator/releases/tag/v0.5.0
+[Iced]: https://github.com/hecrj/iced
+
+## Library Updates
+
+### [backroll-rs] and [GGRS]
+
+[backroll-rs] ([Discord](https://discord.gg/VuZhs9V),
+[crates.io](https://crates.io/crates/backroll)) by [@james7132] and
+[GGRS]([crates.io](https://crates.io/crates/ggrs)) by [@g_schup] are pure
+Rust implementations of the [GGPO] rollback networking library.
+
+{{ image_figure(
+    alt="Evo Moment 37"
+    src="rollback.jpg"
+    caption="[Evo Moment 37](https://www.youtube.com/watch?v=JzS96auqau0):
+Only offline or with rollback!") }}
+
+Rollback networking is a peer-to-peer network technique designed to hide
+network latency in fast-paced games with precise inputs. Traditional techniques
+account for network transmission time by delaying the game execution, resulting
+in a sluggish game-feel. Rollback uses input prediction and speculative
+execution instead. Upon receiving inputs from remote clients, resimulation of
+incorrect game states occurs. This allows for gameplay that "feels just
+like offline". The open source standard for rollback netcode [GGPO] is used
+in successful games like Skullgirls, Guilty Gear XX Accent Core +R or
+Fightcade. For further explanation about rollback,
+[click here](https://ki.infil.net/w02-netcode.html).
+
+Two projects in Rust were independently created to provide a working
+implementation as well as helpful resources for developers.
+backroll-rs features an added abstraction for the transportation layer and
+also provides a bevy plugin, [bevy-backroll]. GGRS replaces the
+C-style callback API of GGPO with a simpler, more understandable control flow.
+The authors of both libraries recommend backroll-rs for development,
+as it is currently more actively collaborated on.
+GGRS is recommended as a learning resource and entry point,
+with a plethora of internal documentation and explanation.
+
+The main requirement to make use of both presented libraries is determinism
+in your game execution. Resimulation requires that the result of progressing
+the game state depending on the given inputs yield the exact same results
+every time. Additionally, you need to be able to load, save and progress
+your gamestate without rendering the outcome.
+
+If you are interested in integrating rollback networking into your game or
+just want to chat with other rollback developers (not limited to Rust),
+check out the [GGPO Developers Discord]!
+
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs
+[bevy-backroll]: https://github.com/HouraiTeahouse/backroll-rs/tree/main/bevy_backroll
+[GGPO Developers Discord]: https://discord.gg/8FKKhCRCCE
+[GGRS]: https://github.com/gschup/ggrs
+[GGPO]: https://www.ggpo.net/
+[@g_schup]: https://twitter.com/g_schup
+[@james7132]: https://twitter.com/james7132
+
+### [CrystalOrb]
+
+{{ image_figure(
+    alt="CrystalOrb demo animation"
+    src="crystalorb.gif"
+    caption="Interactive [demo](https://ernestwong.nz/crystalorb/demo) that uses the [Rapier](https://rapier.rs) physics engine.",
+    link="https://ernestwong.nz/crystalorb/demo") }}
+
+[CrystalOrb] by [@ErnWong] is a new networking library that aims to help
+fast-paced client-server games synchronize their game state across multiple
+clients. Just like [backroll-rs] and [GGRS], each CrystalOrb client predicts
+the next game state without waiting for other remote players' inputs to arrive.
+Unlike backroll-rs's and GGRS's peer-to-peer approach which only send input
+data between its peers, CrystalOrb relies on having a server to send
+authoritative snapshots of the entire game state to each client. In response,
+each client unconditionally rolls-back to that snapshot. Although this may lead
+to higher network and memory usage, it means that CrystalOrb clients can join
+and leave at any time, and games that cannot guarantee full-determinism can
+still work with CrystalOrb.
+
+This library was written as a learning exercise for the author, and as such,
+the author warns that this library may not be suitable for serious games.
+
+There is an [interactive demo][crystalorb-demo] of CrystalOrb that features the
+[Rapier] physics engine.
+
+[CrystalOrb]: https://github.com/ErnWong/crystalorb
+[@ErnWong]: https://github.com/ErnWong
+[crystalorb-demo]: https://ernestwong.nz/crystalorb/demo
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs
+[GGRS]: https://github.com/gschup/ggrs
+[Rapier]: https://rapier.rs
+
+### [glutin] (and [winit])
+
+{{ image_figure(
+    alt="Animated image showing a window that is opened with a spinning cursor on top"
+    src="winit-bug-1.gif"
+    caption="This cursor may be waiting [in vain], but your patience shall be rewarded.") }}
+
+[glutin] is a low-level library for OpenGL context creation, written in pure Rust.
+[glutin] uses and re-exports [winit], which handles window creation and management,
+as well as various input devices.
+
+This month, glutin 0.27.0 was released, which makes glutin use the latest version
+of winit (0.25.0), which was released around a month prior to glutin 0.27.0. Usually,
+we try to keep glutin synced with winit, but we couldn't quite manage to do it this
+time since the person who'd usually take responsibility for releasing a new version
+of glutin was unavailable, and no-one had the role of "back-up releaser".
+[@maroider] has offered to fill this role for now.
+
+The upgrade to winit 0.25.0 brings with it a slew of bugfixes, a couple of new
+features, and a single breaking change to
+[WindowBuilderExtMacOS::with_activation_policy], which has been replaced by
+[EventLoopExtMacOS::set_activation_policy]. For a full list of changes, refer
+to [winit's changelog].
+
+The departure and disappearance of a couple of maintainers has left winit in need
+of someone knowledgeable with X11 in order to review pull requests and address
+various issues. Other backends also need some more love, but X11 is the most
+pressing.
+
+The project could also use more helping hands in general, in anything from
+mapping out platform differences and triaging bugs to reviewing PRs
+and tackling outstanding issues.
+The current maintainers would also be happy to have you even if
+all you do is answer platform-specific questions for them.
+If you're interested, come say hi in their [matrix] channel or on
+any of the [other services] bridged with matrix.
+
+[in vain]: https://github.com/rust-windowing/winit/issues/1682
+[glutin]: https://github.com/rust-windowing/glutin
+[winit]: https://github.com/rust-windowing/winit
+[@maroider]: https://github.com/maroider
+[WindowBuilderExtMacOS::with_activation_policy]: https://docs.rs/winit/0.24.0/x86_64-apple-darwin/winit/platform/macos/trait.WindowBuilderExtMacOS.html#tymethod.with_activation_policy
+[EventLoopExtMacOS::set_activation_policy]: https://docs.rs/winit/0.25.0/x86_64-apple-darwin/winit/platform/macos/trait.EventLoopExtMacOS.html#tymethod.set_activation_policy
+[winit's changelog]: https://github.com/rust-windowing/winit/blob/master/CHANGELOG.md#0250-2021-05-15
+[matrix]: https://matrix.to/#/#Glutin:matrix.org
+[other services]: https://github.com/rust-windowing/winit#contact-us
+
+### [egui]
+
+![egui](egui.gif)
+
+[egui] by [@emilk] is an easy-to-use immediate mode GUI library in pure Rust.
+
+This month [version 0.13] of egui was released, with a new visual style,
+resizable panels, more powerful plots, and more.
+
+You can try out egui in the [online demo].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/o76y9x/announcing_egui_013)_
+
+[egui]: https://github.com/emilk/egui
+[online demo]: https://emilk.github.io/egui
+[version 0.13]: https://github.com/emilk/egui/blob/master/CHANGELOG.md
+[@emilk]: https://twitter.com/ernerfeldt
+
+### [erupt]
+
+![erupt logo](erupt.svg)
+
+[erupt] by [@Friz64] provides bindings to the Vulkan API.
+
+Since being last mentioned in the newsletter shortly after its release, erupt
+has undergone significant development. The generator, erupt's heart, has been
+rewritten from scratch with the aim to improve maintainability. On top of that,
+many bugs were fixed, the function loader was rewritten and usability was
+improved while always keeping up to date with the latest Vulkan Headers as best
+as possible.
+
+The ecosystem has gained traction, with many people using the crate for their
+projects. Pure Rust Vulkan allocators with support for erupt have been released.
+
+[erupt]: https://gitlab.com/Friz64/erupt
+[@Friz64]: https://blog.friz64.de/about
+
+### [smooth-bevy-cameras]
+
+[smooth-bevy-cameras] by [@bonsairobo] is a small plugin for Bevy Engine that
+makes it simple to have [exponentially smoothed] camera transforms in your game.
+Just add a new bundle to your camera entity,
+and rather than updating a `Transform` directly, you can just update the `eye`
+and `target` values of a `LookTransform`, which will be automatically
+synchronized to the `Transform`.
+
+Several example controllers are provided as well:
+
+- First Person
+- Orbit
+- Unreal Engine Viewport
+
+[smooth-bevy-cameras]: https://github.com/bonsairobo/smooth-bevy-cameras
+[@bonsairobo]: https://github.com/bonsairobo
+[exponentially smoothed]: https://en.wikipedia.org/wiki/Exponential_smoothing
+
+### [wgpu] family re-union
+
+![wgpu family reunion](wgpu-family-reunion.jpg)
+
+[wgpu] is a [WebGPU] implementation in Rust. It is safe, efficient,
+and portable: it can target both native and the Web.
+
+[Family reunion] is by far the biggest change in wgpu project since
+the inception. First, the Rust API of [wgpu-rs] was moved to the main
+[wgpu] repository. Second, the whole base was relicensed under MIT/Apache2.
+
+[gfx-hal] - the Vulkan Portability-like graphics API abstraction -
+was detached from the project. Instead, wgpu got its own in-house unsafe
+abstraction called "wgpu-hal" developed within the [wgpu] repository.
+
+The team released [wgpu-0.9] right before this transition, to give the new
+graphics infrastructure more time to take shape. At the time of writing,
+supported backends on the new HAL include Vulkan, Metal, and OpenGL ES3.
+
+Finally, the testing infrastructure received a major upgrade. It started
+rendering the examples on the available adapters and comparing the results
+with reference images.
+This includes automatic testing using software adapters on CI.
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[wgpu-rs]: https://github.com/gfx-rs/wgpu-rs
+[gfx-hal]: https://github.com/gfx-rs/gfx
+[wgpu-0.9]: https://crates.io/crates/wgpu/0.9.0
+[Family reunion]: https://github.com/gfx-rs/wgpu/milestone/9?closed=1
+[WebGPU]: https://www.w3.org/TR/webgpu/
+
+### [rafx]
+
+{{ image_figure(
+    alt="Rafx Flythrough Demo"
+    src="rafx-flythrough-demo.jpg"
+    caption="A scene exported via blender with animated camera motion, [watch the demo on youtube](https://www.youtube.com/watch?v=HlJsgbGyl0I)!",
+    link="https://www.youtube.com/watch?v=HlJsgbGyl0I") }}
+
+[Rafx][rafx] is a multi-backend renderer that optionally integrates with the
+[distill][rafx-distill] asset pipeline.
+
+This month, the asset pipeline received almost all the attention. A custom
+blender add-on was prototyped, and several project layouts were tested to
+decide on "best practices" to recommend for anyone that wants to use `rafx`
+with 3d assets.
+
+Using a custom add-on will enable a workflow that supports large scenes with
+many assets. The add-on currently exports textures, materials, meshes, models
+(a collection of meshes of varying LOD levels), and prefabs (a list of lights,
+meshes, etc. to place in the world).
+
+Some commercial art packs with varying art styles and complexity have been
+ported to this pipeline, and one of them was loaded into the demo. A
+fly-through camera was animated and exported out as json to demonstrate the
+scene.
+
+After prototyping is complete, details and lessons learned will be
+shared in hopes that it will be helpful to other projects in the rust
+community, even if they do not use rafx directly.
+
+[rafx]: https://github.com/aclysma/rafx
+[rafx-youtube-video]: https://www.youtube.com/watch?v=HlJsgbGyl0I
+[rafx-distill]: https://github.com/amethyst/distill
+
+### [egui-tetra]
+
+[egui-tetra] ([GitHub][egui-github]) by [@tesselode] is a library
+that integrates [egui], an immediate mode GUI library,
+with [Tetra], a 2D game framework.
+
+egui-tetra provides helpers for integrating egui with Tetra's event loop and
+rendering the GUI.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/o8jbmg/eguitetra_v010_egui_integration)_
+
+[egui-tetra]: https://crates.io/crates/egui-tetra
+[egui-github]: https://github.com/tesselode/egui-tetra
+[@tesselode]: https://twitter.com/tesselode
+[egui]: https://crates.io/crates/egui
+[Tetra]: https://crates.io/crates/tetra
+
+### [bevy_midi]
+
+![bevy_midi logo](bevy_midi_logo.svg)
+
+[bevy_midi] by [@BlackPhlox] is a new bevy plugin that uses
+[midir] to interact with the bevy game engine.
+
+It started out with [bevy_osc] as a
+proof-of-concept interfacing with [nannou_osc]
+and using other osc software to communicate with bevy.
+Soon, realizing that nannou_osc is not that different
+from how you interface with midi, bevy_midi was born.
+
+Here is one of the examples which you can use a midi controller
+to play piano with [demo_audio].
+
+The plugin is still in its infancy.
+So it still has some performance issues, so
+any feedback and contributions are highly appreciated.
+
+[bevy_midi]: https://github.com/BlackPhlox/bevy_midi
+[bevy_osc]: https://github.com/BlackPhlox/bevy_osc
+[nannou_osc]: https://github.com/nannou-org/nannou_osc
+[midir]: https://github.com/Boddlnagg/midir
+[demo_audio]: https://discord.com/channels/691052431525675048/692648638823923732/857177113923682304
+[@BlackPhlox]: https://github.com/BlackPhlox
+
+### [bevy_config_cam]
+
+![bevy_config_cam logo](bevy_config_cam_logo.svg)
+
+[bevy_config_cam] by [@BlackPhlox]
+is an all-in-one purpose camera/player controller for bevy.
+
+With focus on plug-and-play, flexibility and ease of use, this bevy plugin is
+for anyone who is prototyping in 3D and doesn't want the hassle of programming
+a player-controller from scratch. Instantly switch between camera modes such as
+Tracking to Topdown, Follow Behind, FPS and Free and more.
+
+The plugin is very new.
+So any feedback and contributions are highly appreciated.
+
+[bevy_config_cam]: https://github.com/BlackPhlox/bevy_config_cam
+[@BlackPhlox]: https://github.com/BlackPhlox
+
+### [assets_manager]
+
+[assets_manager] provides easy file loading and caching, with a focus on
+hot-reloading.
+
+In June was released version 0.5.0, which came with many new features.
+`assets_manager` has now built-in support for loading sounds and images, and
+Zip archive were added as a new source to load assets from. Additionally, the
+API around directories was reworked to be more powerful, and performances were
+improved a bit.
+
+[assets_manager]: https://github.com/a1phyr/assets_manager
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu-rs's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/good%20first%20issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/ogc8qy/this_month_in_rust_gamedev_23_june_2021),
+[Twitter](https://twitter.com/rust_gamedev/status/1413193117176565765),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/023/lineofsight.png b/content/news/023/lineofsight.png
new file mode 100644
index 000000000..e10ccf7e2
Binary files /dev/null and b/content/news/023/lineofsight.png differ
diff --git a/content/news/023/notsnake.png b/content/news/023/notsnake.png
new file mode 100644
index 000000000..6bddc5a28
Binary files /dev/null and b/content/news/023/notsnake.png differ
diff --git a/content/news/023/open_combat.jpg b/content/news/023/open_combat.jpg
new file mode 100644
index 000000000..aeb51edf7
Binary files /dev/null and b/content/news/023/open_combat.jpg differ
diff --git a/content/news/023/planck_ecs.png b/content/news/023/planck_ecs.png
new file mode 100644
index 000000000..432792eaa
Binary files /dev/null and b/content/news/023/planck_ecs.png differ
diff --git a/content/news/023/projectris.png b/content/news/023/projectris.png
new file mode 100644
index 000000000..311ce4bc2
Binary files /dev/null and b/content/news/023/projectris.png differ
diff --git a/content/news/023/rafx-flythrough-demo.jpg b/content/news/023/rafx-flythrough-demo.jpg
new file mode 100644
index 000000000..8d69a2c11
Binary files /dev/null and b/content/news/023/rafx-flythrough-demo.jpg differ
diff --git a/content/news/023/rg3d_logo.png b/content/news/023/rg3d_logo.png
new file mode 100644
index 000000000..53d8a734d
Binary files /dev/null and b/content/news/023/rg3d_logo.png differ
diff --git a/content/news/023/rollback.jpg b/content/news/023/rollback.jpg
new file mode 100644
index 000000000..7bd7c4978
Binary files /dev/null and b/content/news/023/rollback.jpg differ
diff --git a/content/news/023/rustyslider.png b/content/news/023/rustyslider.png
new file mode 100644
index 000000000..3c33628ba
Binary files /dev/null and b/content/news/023/rustyslider.png differ
diff --git a/content/news/023/sokoban-sokoban.png b/content/news/023/sokoban-sokoban.png
new file mode 100644
index 000000000..87a9be504
Binary files /dev/null and b/content/news/023/sokoban-sokoban.png differ
diff --git a/content/news/023/sugarcubes.png b/content/news/023/sugarcubes.png
new file mode 100644
index 000000000..8c13823a9
Binary files /dev/null and b/content/news/023/sugarcubes.png differ
diff --git a/content/news/023/taileater.gif b/content/news/023/taileater.gif
new file mode 100644
index 000000000..e4edb793a
Binary files /dev/null and b/content/news/023/taileater.gif differ
diff --git a/content/news/023/texture_generator.png b/content/news/023/texture_generator.png
new file mode 100644
index 000000000..f75de24b1
Binary files /dev/null and b/content/news/023/texture_generator.png differ
diff --git a/content/news/023/the_process.gif b/content/news/023/the_process.gif
new file mode 100644
index 000000000..220a763e9
Binary files /dev/null and b/content/news/023/the_process.gif differ
diff --git a/content/news/023/themengi.gif b/content/news/023/themengi.gif
new file mode 100644
index 000000000..40190d548
Binary files /dev/null and b/content/news/023/themengi.gif differ
diff --git a/content/news/023/thrustengine_screenshot.jpg b/content/news/023/thrustengine_screenshot.jpg
new file mode 100644
index 000000000..29c2a7392
Binary files /dev/null and b/content/news/023/thrustengine_screenshot.jpg differ
diff --git a/content/news/023/veloren.png b/content/news/023/veloren.png
new file mode 100644
index 000000000..34d399629
Binary files /dev/null and b/content/news/023/veloren.png differ
diff --git a/content/news/023/weegames.jpg b/content/news/023/weegames.jpg
new file mode 100644
index 000000000..2c6b327ab
Binary files /dev/null and b/content/news/023/weegames.jpg differ
diff --git a/content/news/023/wgpu-family-reunion.jpg b/content/news/023/wgpu-family-reunion.jpg
new file mode 100644
index 000000000..22506ddfd
Binary files /dev/null and b/content/news/023/wgpu-family-reunion.jpg differ
diff --git a/content/news/023/when-to-rewrite.jpg b/content/news/023/when-to-rewrite.jpg
new file mode 100644
index 000000000..ff6048ed0
Binary files /dev/null and b/content/news/023/when-to-rewrite.jpg differ
diff --git a/content/news/023/winit-bug-1.gif b/content/news/023/winit-bug-1.gif
new file mode 100644
index 000000000..ce7bea118
Binary files /dev/null and b/content/news/023/winit-bug-1.gif differ
diff --git a/content/news/023/wor-dialogue.jpg b/content/news/023/wor-dialogue.jpg
new file mode 100644
index 000000000..d0dd3f194
Binary files /dev/null and b/content/news/023/wor-dialogue.jpg differ
diff --git a/content/news/024/Throne.png b/content/news/024/Throne.png
new file mode 100644
index 000000000..8d5ef802b
Binary files /dev/null and b/content/news/024/Throne.png differ
diff --git a/content/news/024/bevy-retrograde.gif b/content/news/024/bevy-retrograde.gif
new file mode 100644
index 000000000..62eabd285
Binary files /dev/null and b/content/news/024/bevy-retrograde.gif differ
diff --git a/content/news/024/bounty-bros.jpg b/content/news/024/bounty-bros.jpg
new file mode 100644
index 000000000..6cb1c01d7
Binary files /dev/null and b/content/news/024/bounty-bros.jpg differ
diff --git a/content/news/024/em_logo.svg b/content/news/024/em_logo.svg
new file mode 100644
index 000000000..53c075226
--- /dev/null
+++ b/content/news/024/em_logo.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="100%" height="100%" viewBox="0 0 1500 1500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
+    <g transform="matrix(1.65375,0,0,1.65375,-427.665,-244.944)">
+        <g transform="matrix(-1,1.22465e-16,-1.77341e-16,-1.4481,1110.98,1718.55)">
+            <path d="M400.105,467.654L518.375,750L400.105,558.157L281.835,750L400.105,467.654Z"/>
+        </g>
+        <g transform="matrix(-1,-1.22465e-16,-1.77341e-16,1.4481,1110.98,-515.296)">
+            <path d="M400.105,467.654L518.375,750L400.105,558.157L281.835,750L400.105,467.654Z"/>
+        </g>
+        <g transform="matrix(1,0,0,1,309.515,-142.176)">
+            <path d="M340.97,608.827L401.363,558.097L459.24,608.827L514.352,728.233L401.363,740.448L518.375,750L401.363,992.378L342.838,873.7L401.363,836.928L333.167,854.09L281.835,750L317.341,665.237L401.363,690.617L328.394,638.849L340.97,608.827Z" style="fill:rgb(32,180,84);"/>
+        </g>
+        <g transform="matrix(0.943718,-0.330752,0.330752,0.943718,-172.4,33.3769)">
+            <path d="M541.752,608.827L670.616,541.992L596.833,608.827L521.678,750.825L481.113,725.862L398.176,750.825L487.576,662.407L525.02,657.376L499.691,650.426L541.752,608.827Z" style="fill:rgb(0,1,0);"/>
+        </g>
+        <g transform="matrix(-0.929073,-0.369895,-0.369895,0.929073,1620.19,82.0448)">
+            <path d="M541.752,608.827L672.969,541.992L600.859,608.827L547.119,705.2L521.147,708.45L538.353,720.921L521.678,750.825L483.169,721.836L398.176,750.825L517.104,633.336L527.64,646.408L528.824,621.613L541.752,608.827Z" style="fill:rgb(0,1,0);"/>
+        </g>
+        <g transform="matrix(-0.968494,0.249038,-0.249038,-0.968494,1545.15,1294.07)">
+            <path d="M541.752,608.827L612.35,557.46L600.859,608.827L547.119,705.2L525.657,701.364L538.353,720.921L521.678,750.825L483.169,721.836L398.176,750.825L517.104,633.336L539.235,633.886L528.824,621.613L541.752,608.827Z" style="fill:rgb(0,1,0);"/>
+        </g>
+        <g transform="matrix(0.976038,0.2176,0.2176,-0.976038,-100.312,1278.52)">
+            <path d="M541.752,608.827L612.35,557.46L600.859,608.827L547.119,705.2L525.657,701.364L538.353,720.921L521.678,750.825L483.169,721.836L398.176,750.825L517.104,633.336L539.235,633.886L528.824,621.613L541.752,608.827Z" style="fill:rgb(0,1,0);"/>
+        </g>
+    </g>
+</svg>
diff --git a/content/news/024/fishfight_weapons.png b/content/news/024/fishfight_weapons.png
new file mode 100644
index 000000000..18b86fd18
Binary files /dev/null and b/content/news/024/fishfight_weapons.png differ
diff --git a/content/news/024/flesh.jpg b/content/news/024/flesh.jpg
new file mode 100644
index 000000000..394d03d2e
Binary files /dev/null and b/content/news/024/flesh.jpg differ
diff --git a/content/news/024/franzplot_scene.gif b/content/news/024/franzplot_scene.gif
new file mode 100644
index 000000000..d4210eebb
Binary files /dev/null and b/content/news/024/franzplot_scene.gif differ
diff --git a/content/news/024/gamedev-meetup.png b/content/news/024/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/024/gamedev-meetup.png differ
diff --git a/content/news/024/ggrs_logo.png b/content/news/024/ggrs_logo.png
new file mode 100644
index 000000000..d1105994b
Binary files /dev/null and b/content/news/024/ggrs_logo.png differ
diff --git a/content/news/024/godot_egui.gif b/content/news/024/godot_egui.gif
new file mode 100644
index 000000000..a0b88284b
Binary files /dev/null and b/content/news/024/godot_egui.gif differ
diff --git a/content/news/024/graphite_scream.png b/content/news/024/graphite_scream.png
new file mode 100644
index 000000000..04369cdf9
Binary files /dev/null and b/content/news/024/graphite_scream.png differ
diff --git a/content/news/024/hands-on-rust-live.jpg b/content/news/024/hands-on-rust-live.jpg
new file mode 100644
index 000000000..59c626192
Binary files /dev/null and b/content/news/024/hands-on-rust-live.jpg differ
diff --git a/content/news/024/hho_header.png b/content/news/024/hho_header.png
new file mode 100644
index 000000000..18f26ceeb
Binary files /dev/null and b/content/news/024/hho_header.png differ
diff --git a/content/news/024/index.md b/content/news/024/index.md
new file mode 100644
index 000000000..fb22ab7d5
--- /dev/null
+++ b/content/news/024/index.md
@@ -0,0 +1,794 @@
++++
+title = "This Month in Rust GameDev #24 - July 2021"
+date = 2021-08-08
+transparent = true
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 24th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The seventh Rust Gamedev Meetup happened in July. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord], and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [August 14th][rust-meetup-august-time], fill
+out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=0cefGQyZXH4
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-august-time]: https://everytimezone.com/s/391b6160
+
+## Game Updates
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Llama ride"
+    src="veloren.png"
+    caption="Out for a llama ride") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In July, work focused on larger tasks that tend to come up between versions.
+Optimizations were made for networking with compression, and message queue
+improvements ([devblog #127][veloren-127]). Modular weapons are in the works, which
+will allow for much more dynamic ways to choose what you fight with. The project
+also hit 300k lines of code.
+
+Many contributors are working on the art and asset front, with lots of new SFX,
+models, and UI elements making their way into the game. Caves are also getting a
+lot of love, and a bloom feature is being integrated. Some members broke down
+what they plan to have done by the 0.11 release at the beginning of September,
+and you can read about that in [devblog #130][veloren-130].
+
+July's full weekly devlogs: "This Week In Veloren...":
+[#127][veloren-127],
+[#128][veloren-128],
+[#129][veloren-129],
+[#130][veloren-130].
+
+[veloren]: https://veloren.net
+[veloren-127]: https://veloren.net/devblog-127
+[veloren-128]: https://veloren.net/devblog-128
+[veloren-129]: https://veloren.net/devblog-129
+[veloren-130]: https://veloren.net/devblog-130
+
+### [Zemeroth]
+
+![Zemeroth on Google Play](zemeroth.jpg)
+
+[Zemeroth] is a turn-based hexagonal tactics game, developed by [@ozkriff].
+
+This month, an early access version of the game was released as a free
+download on [Google Play][zemeroth-google] - if you have an Android
+device, give it a try!
+
+[zemeroth]: https://github.com/ozkriff/zemeroth/
+[@ozkriff]: https://twitter.com/ozkriff
+[zemeroth-google]: https://play.google.com/store/apps/details?id=rust.zemeroth
+
+### [Harvest Hero Origins](https://store.steampowered.com/app/1651500/Harvest_Hero_Origins/)
+
+![hho_header](./hho_header.png)
+
+Harvest Hero Origins is an arcade wave defense game by [Gemdrop Games][gemdrop],
+built in Rust on top of [Emerald]. A [Steam][hho-steam] page has recently been
+made and the game is set to release sometime at the end of this summer.
+
+Battle the oncoming waves of enemies with a friend in local co-op, unlock
+new playable characters and skins, and make your way to the top of the
+leaderboard!
+
+Additionally, HHO will be at [PAXWest](https://west.paxsite.com/)
+this year, so come check out their booth
+if you'll be there!
+
+[gemdrop]: https://twitter.com/GemdropGames
+[hho-steam]: https://store.steampowered.com/app/1651500/Harvest_Hero_Origins/
+[Emerald]: https://github.com/Bombfuse/emerald
+
+### [Shroom Kingdom][shroom-kingdom]
+
+{{ image_figure(
+    alt="Shroom Kingdom Asset Extractor"
+    src="shroom-kingdom.gif"
+    caption="Extracting the game assets") }}
+
+Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord], [Twitter][shrm-twitter])
+is an upcoming play-to-earn video game built with web technologies
+running on the [NEAR Blockchain][near-blockchain].
+In a recent [blog post][shrm-blog] you can read the motivation behind this.
+
+You can play with your favorite plumber brothers.
+Build your own levels or play levels from others.
+Every level built on Shroom Kingdom is stored
+on the blockchain as an NFT.
+
+By playing the game you can either actively earn SHRM tokens via participating
+in game activities or earn them passively, if other people play or like your levels.
+The SHRM token will be used to acquire in-game purchases such as unlocking new
+building blocks or increasing level upload limits.
+
+You can either extract existing assets from Super Mario Maker 2 or use
+compatible game mod files from e.g. [Gamebanana][gamebanana].
+The asset extractor is already working, but support for more file types
+needs to be added.
+
+The game will likely be built with [Bevy][bevy]
+and [Rapier][rapier] compiled to WebAssembly.
+Next steps include developing a Proof of Concept.
+
+[shroom-kingdom]: https://shroomkingdom.net/
+[shrm-github]: https://github.com/Shroom-Kingdom
+[shrm-discord]: https://discord.gg/SPZsgSe
+[shrm-twitter]: https://twitter.com/shrm_kingdom
+[shrm-blog]: https://net64-mod.github.io/blog/shroom-kingdom/
+[near-blockchain]: https://near.org
+[gamebanana]: https://gamebanana.com/
+[bevy]: https://bevyengine.org/
+[rapier]: https://rapier.rs/
+
+### [Wicked Potions][wicked_potions]
+
+{{ image_figure(
+    alt="Screenshot of the game"
+    src="wicked_potions.png"
+    caption="Match ingredients to brew wicked potions") }}
+
+[Wicked Potions][wicked_potions] is a match-three game developed by
+[@nikl_me] and [jennifervphan] for the [Bored Pixels Jam 8][bored-pixels-jam-8].
+They wrote the game using the [Bevy game engine][bevy] and created all of the
+textures and audio.
+
+The main focus of the game during the one-week jam period were the assets.
+After the voting period, the developers plan to extend the game mechanics
+and story a bit more.
+
+[The code for the game is available on GitHub][wicked_potions_repo].
+
+[jennifervphan]: https://itch.io/profile/jennifervphan
+[bored-pixels-jam-8]: https://itch.io/jam/bored-pixels-jam-8
+[wicked_potions]: https://niklme.itch.io/wicked-potions
+[bevy]: https://github.com/bevyengine/bevy
+[@nikl_me]: https://twitter.com/nikl_me
+[wicked_potions_repo]: https://github.com/NiklasEi/wicked_potions
+
+### [The Process]
+
+{{ image_figure(
+    alt="Showcase image for the new inventory UI in The Process"
+    src="the_process.gif"
+    caption="The godot_egui backend powering a new inventory UI for The Process") }}
+
+[The Process] by @setzer22 is an upcoming game about factory building,
+process management, and carrot production,
+built with Rust using the Godot game engine!
+
+Continuing with last month's migration of old GDScript code to ECS in Rust, this
+month's main focus has been on porting the GUI code. This has resulted in
+the birth of a Godot integration for [egui](https://docs.rs/egui/) that now
+powers the game's interface.
+
+This month has seen the following changes and improvements:
+
+- Finished migration of character controller code to ECS style. Now with [300%
+  more jumps!](https://twitter.com/PlayTheProcess/status/1413081233396011012)
+- Implemented [better ambient
+  lighting](https://twitter.com/PlayTheProcess/status/1413943539160031246) and
+  enable using different skies for radiance and display. This required a [forked
+  godot version](https://github.com/setzer22/godot/tree/feature/cosmetic_sky).
+- Implement a [new inventory and
+  toolbar](https://twitter.com/PlayTheProcess/status/1417774452012724226)
+  interface using egui.
+- Integrated the [puffin
+  profiler](https://twitter.com/PlayTheProcess/status/1420277428199559174) into
+  the game using the godot_egui integration.
+
+[The Process]: https://twitter.com/PlayTheProcess
+
+### [Robo Instructus: 2 Years Old][robo-year]
+
+![game logo + OS logos](robo-os.jpg)
+
+Two years ago [Alex Butler] released the "[Robo Instructus][robo-site]" puzzle game
+on [Steam][robo-steam] & [itch.io][robo-itch].
+
+This month Alex released a devlog post ["Robo Instructus: 2 Years Old"][robo-year]
+about how well the game did in the last year:
+Sales by platform/country/OS, player feedback & reviews, etc.
+
+The game also continues to receive updates, the latest [1.33 version][robo-1-33]
+includes full 简体中文 & Español language support.
+
+[Alex Butler]: https://twitter.com/bigabgames
+[robo-site]: https://www.roboinstruct.us
+[robo-steam]: https://store.steampowered.com/app/1032170/Robo_Instructus
+[robo-itch]: https://bigabgames.itch.io/robo-instructus
+[robo-year]: https://blog.roboinstruct.us/2021/07/16/2-years-later.html
+[robo-1-33]: https://store.steampowered.com/news/app/1032170/view/2998819983294763294
+
+### [Fish Fight][fish-fight]
+
+![New weapons](fishfight_weapons.png)
+
+Fish Fight ([Twitter][fish-fight]) is a continuation of the demo project
+known as Fish Game - made by the same team of people ([@fedor_games] and
+[@erlend_sh]), now operating as independents. Their goal is to make a
+published game, written entirely in Rust and developed as openly as
+possible. They are hoping to go public with the open source repo
+within a month or so.
+
+Changes and improvements from the last month:
+
+- [Pre-alpha trailer released!][twitter-trailer]
+- Loads of new weapons added:
+  - Mind-controlled Jellyfish
+  - Kick-bombs (bomberman-style)
+  - Cursed Skull
+  - Handcannon
+  - Gatling gun
+  - Sproingers
+  - Pirate Boots
+  - ..and more!
+- Whole new Environmentals system added for map-wide events (mass-shark attack
+  incoming!)
+- Physics doc & improvements
+
+[fish-fight]: https://twitter.com/fishfightgame
+[@fedor_games]: https://twitter.com/fedor_games
+[@erlend_sh]: https://twitter.com/erlend_sh
+[twitter-trailer]: https://twitter.com/fishfightgame/status/1424084016467226624
+
+### [Theta Wave]
+
+{{ image_figure(
+    alt="Amethyst to Bevy"
+    src="theta-wave.gif"
+    caption="Left: Theta Wave with Amethyst, Right: Theta Wave with Bevy (so far)",
+    link="https://github.com/thetawavegame/thetawave") }}
+
+[Theta Wave] is an open-source space shooter game by developers [@micah_tigley] and
+[@carlosupina]. It is one of the showcase games for the [Amethyst Engine]. In
+the past month, they finished the ["Organization"] update and
+made the decision to start working on porting the game to the Bevy engine. You can
+find the Bevy version of Theta Wave [here][Bevy Theta Wave].
+
+Progress on this port is going strong - you can find the GitHub issue for
+the port [here][Bevy Port Issue].
+
+[Bevy Port Issue]: https://github.com/thetawavegame/thetawave/issues/2
+[Bevy Theta Wave]: https://github.com/thetawavegame/thetawave
+[Theta Wave]: https://github.com/amethyst/theta-wave
+[@micah_tigley]: https://twitter.com/micah_tigley
+[@carlosupina]: https://twitter.com/carlosupina
+[Amethyst Engine]: https://amethyst.rs/
+["Organization"]: https://github.com/amethyst/theta-wave/projects/5
+
+### [Bounty Bros.][bounty_bros]
+
+{{ image_figure(
+    alt="bounty-bros-title-screen"
+    src="bounty-bros.jpg"
+    caption="Click the image to play the game in your browser!",
+    link="https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-2/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/2") }}
+
+[Bounty Bros.][bounty_bros] is a prototype, top-down adventure game, developed
+by [Katharos Technology][katharostech] as a testing ground for a future
+commercial game.
+
+The last two months of development added lots of new features:
+
+- Integrated a new physics system and character controller that allows for smoother
+  character movement.
+- Added a new damage system and made cactuses hurt the player.
+- Added a life bar and a game over screen.
+- Added a pause menu and a fullscreen button.
+- Started work on enemy pathfinding.
+
+All the new features can be tested in the latest [web demo][bounty_bros_webgame],
+and the [blog post][bounty_bros] has the full details of what's new and what's
+coming next!
+
+[bounty_bros]: https://katharostech.com/post/bounty-bros-update-4-physics-damage-pathfinding
+[bounty_bros_webgame]: https://katharostech.github.io/skipngo_pre-releases/refs/tags/pre-release-2/?asset_url=https://katharostech.github.io/bounty-bros_pre-releases/2
+[katharostech]: https://katharostech.com
+
+### [Flesh]
+
+![Flesh screenshot](flesh.jpg)
+
+[Flesh] is a 2D horizontal SHMUP by [@Im_Oab], with a hand-drawn animation style
+and an organic/fleshy theme.
+
+This month, a [Steam page][flesh] was published for the game - it can now be
+wishlisted, ahead of a planned release later this year!
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@Im_Oab]: https://twitter.com/Im_Oab/
+
+## Engine Updates
+
+### [ggez]
+
+![ggez logo](../005/ggez-logo-maroon-full.svg)
+
+`ggez` 0.6 has been released!  `ggez` is a lightweight cross-platform
+game framework for making 2D games with minimum friction, with an API
+inspired by Love2D.
+
+This release includes many additions, improvements, and bug fixes,
+including a `MeshBatch` type for drawing many instances of the same
+geometry, improvements to canvas drawing, updated `winit` dependencies
+that function more smoothly on Linux under Wayland, better error
+handling, and more.  The whole changelog is available
+[here](https://github.com/ggez/ggez/blob/0.6.0/CHANGELOG.md).
+
+More importantly, `ggez` is now maintained by a group of volunteers,
+with the original maintainer stepping down from active development after
+over four years.  The new maintainers are mostly responsible for the 0.6
+release, and will hopefully be bringing good ideas and tech to the
+library for years to come.  For details, see [this github
+issue](https://github.com/ggez/ggez/issues/875).
+
+[ggez]: https://github.com/ggez
+
+### [Macroquad]
+
+{{ image_figure(
+    alt="Zemeroth running on Android"
+    src="macroquad.jpg"
+    caption="A Macroquad game ([Zemeroth](#zemeroth)) running on Android!") }}
+
+[Macroquad] is a cross-platform game framework, inspired heavily by Raylib.
+
+This month, a [new tutorial][macroquad-android] was published on the
+Macroquad website, showing how a game written with the framework can be
+ported to Android. It details all of the steps, from building to packaging
+for a release on Google Play.
+
+In other news, Macroquad used to depend on rodio+cpal for audio on
+native platforms and a custom WebAudio implementation for web, with a custom
+abstraction on top of both. This month, Macroquad's audio system was
+reimplemented on top of raw OS APIs - ALSA, OpenSLES, CoreAudio and WASAPI.
+This functionality has now been extracted into a crate: [quad-snd].
+
+[macroquad]: https://github.com/not-fl3/macroquad
+[macroquad-android]: https://macroquad.rs/tutorials/android/
+[quad-snd]: https://github.com/not-fl3/quad-snd
+
+### [Emerald]
+
+![Emerald logo](./em_logo.svg)
+
+[Emerald] is a 2D portable game engine aiming to export to every
+possible target: Windows, Linux, macOS, Android, iOS, Xbox,
+Playstation, Nintendo Switch.
+
+In addition to being portable, [Emerald] aims to be easy to use
+while providing quality features like built-in physics and
+Aseprite integration.
+
+If any of this sounds good to you, and you'd like to be a part of it,
+[Emerald] welcomes all contributors to help make an extremely portable
+game engine! Join them on their [Discord server][emerald-discord].
+
+[Emerald]: https://github.com/Bombfuse/emerald
+[emerald-discord]: https://discord.gg/NHsz38AhkD
+
+### [Starframe]
+
+![Demonstration of Starframe's new rope physics](starframe.gif)
+
+[Starframe] by [@molentum] is a work-in-progress game engine for physics-y
+sidescrolling 2D games.
+
+This month's noteworthy development was [particle-based ropes][sf-ropes-tweet]
+capable of full two-way coupling with rigid bodies, demonstrated above.
+Capsule-shaped colliders were also added.
+
+[starframe]: https://github.com/m0lentum/starframe/
+[@molentum]: https://twitter.com/molentum_
+[sf-ropes-tweet]: https://twitter.com/molentum_/status/1421204030441889792
+
+## Learning Material Updates
+
+### [Hands-on Rust][hands-on-rust]
+
+[![Hands-On Rust](hands-on-rust-live.jpg)][hands-on-rust]
+
+["Hands-on Rust: Effective Learning through 2D Game Development and Play"][hands-on-rust]
+by Herbert Wolverson is now in print, as a full color paperback and ebook.
+The book teaches Rust through game development examples, and is targeted at
+readers who have some experience with writing code in other languages. It
+teaches beginner to intermediate-level Rust. Hands-on Rust also teaches
+high-level game development concepts, notably Entity-Component System (ECS)
+theory.
+
+After walking you through installing Rust, a few simple examples teach the
+language basics. Then you put these together to make "Flappy Dragon" - a
+simple Flappy Bird clone. The book then changes gear and begins to build a
+dungeon crawler (roguelike) with tile graphics.
+
+Outside of the USA, Hands-on Rust is available through [Amazon][hands-on-amazon].
+
+Herbert also published the first ["Hands-on Rust bonus content"][hands-on-flappy].
+The bonus content extends Flappy Dragon to include smooth movement and
+animated sprites.
+
+[hands-on-rust]: https://pragprog.com/titles/hwrust/hands-on-rust/
+[hands-on-amazon]: https://www.amazon.com/dp/1680508164
+[hands-on-flappy]: https://medium.com/pragmatic-programmers/flappy-dragon-rust-647e91a34dd4
+
+### [Writing an RPG using rg3d][writing-an-rpg-using-rg3d]
+
+{{ image_figure(
+    alt="rg3d RPG screenshot"
+    src="rg3d.jpg"
+    caption="[Click here](https://www.youtube.com/watch?v=l2ZbDpoIdqk) to see a video of the character controller in action!",
+    link="https://www.youtube.com/watch?v=l2ZbDpoIdqk") }}
+
+Dimitry Stepanov (aka @mrDIMAS) published a
+[tutorial series][writing-an-rpg-using-rg3d] about
+making an RPG in Rust using the rg3d game engine. In part one of the series,
+he builds a character controller from scratch. While that may not sound very exciting,
+it's still a great way to learn the basics of rg3d and Rust gamedev in general!
+
+[writing-an-rpg-using-rg3d]: https://rg3d.rs/tutorials/2021/07/09/rpg-tutorial1.html
+[rg3d-video]: https://www.youtube.com/watch?v=l2ZbDpoIdqk
+
+## Tooling Updates
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt="Graphite logo"
+    src="graphite_scream.png"
+    caption="A recreation of "The Scream" in Graphite by Norgate") }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and
+raster graphics editor built on a non-destructive node-based workflow.
+
+In the past month, the editor has gained numerous vector editing features,
+including moving layers with the keyboard or mouse, filling and copying colors,
+flipping and aligning selected layers, and setting blend modes and layer
+opacity.
+
+Scrollbars, rulers, and thumbnails are now functional. Full screen support has
+been added, along with a hotkey to center the artwork. An options bar with
+tool-specific settings and actions has been implemented, currently allowing
+the number of sides of a polygon to be selected. The order of layers can now be
+changed using hotkeys.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making
+rapid progress towards becoming a non-destructive, procedural graphics editor
+suitable of replacing traditional 2D DCC applications. The release of Graphite
+0.1 is anticipated in the coming month; come
+[join the Discord][graphite-discord] to help make it happen!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.design
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design
+
+## Library Updates
+
+### [discord-sdk]
+
+[discord-sdk] is an open source implementation of the [Discord Game SDK] by
+[Embark Studios](https://embark.dev).
+
+This month saw the release of the initial [`0.1.0`](https://github.com/EmbarkStudios/discord-sdk/blob/main/CHANGELOG.md#010---2021-07-21)
+(and [`0.1.1`](https://github.com/EmbarkStudios/discord-sdk/blob/main/CHANGELOG.md#011---2021-07-28))
+version of the crate, which implements initial support for:
+
+- [Activities](https://discord.com/developers/docs/game-sdk/activities)
+- [Lobbies](https://discord.com/developers/docs/game-sdk/lobbies)
+- [Overlay](https://discord.com/developers/docs/game-sdk/overlay)
+- [Relationships](https://discord.com/developers/docs/game-sdk/relationships)
+- [Users](https://discord.com/developers/docs/game-sdk/users)
+- Application registration (so your game can be launched by Discord)
+
+The API is still rough, but should be in a good enough state to try out!
+
+[discord-sdk]: https://github.com/EmbarkStudios/discord-sdk
+[Discord Game SDK]: https://discord.com/developers/docs/game-sdk/sdk-starter-guide
+
+### [rkyv]
+
+[rkyv] is a zero-copy deserialization framework for Rust. It's an alternative
+to serde that makes it easy to quickly and safely load data into memory.
+
+This month, rkyv 0.7 was released with many new features:
+
+- [Endian-agnostic serialization][rkyv_rend]
+- [Greatly improved performance][rust_serde_bench]
+- Enhanced `no_std` support
+- [Wrapper types][rkyv_wrapper_types]
+- [A new `BTreeMap` implementation][rkyv_btree_map]
+- Reduced dependencies
+- Support for some common external crates
+
+The full changelog can be found on the [release page][rkyv_0.7].
+
+[rkyv]: https://github.com/rkyv/rkyv
+[rkyv_rend]: https://github.com/rkyv/rend
+[rust_serde_bench]: https://github.com/djkoloski/rust_serialization_benchmark
+[rkyv_wrapper_types]: https://docs.rs/rkyv/0.7.4/rkyv/with/index.html
+[rkyv_btree_map]: https://docs.rs/rkyv/0.7.4/rkyv/collections/btree_map/index.html
+[rkyv_0.7]: https://github.com/rkyv/rkyv/releases/tag/v0.7.0
+
+### [Throne]
+
+![Throne](Throne.png)
+
+[Throne] is a new scripting language for game prototyping and story logic. The
+language is rule-based, which allows certain types of logic to be expressed more
+concisely than using an object-based language, while remaining fast to execute
+and easy to embed in an existing engine. Throne can be experimented with in the
+web [playground].
+
+[Throne]: https://github.com/t-mw/throne
+[playground]: https://t-mw.github.io/throne-playground/
+
+### [godot_egui]
+
+![godot_egui](godot_egui.gif)
+
+[godot_egui] is an integration of the [egui](https://github.com/emilk/egui)
+crate for the Godot engine using Rust, enabling highly dynamic and performant
+user interfaces in an immediate-mode style in Godot.
+
+Godot has a great GUI system, so why use `godot_egui` instead? A more in-depth
+rationale can be found in the crate's README, but the main reason is to provide
+a GUI system for godot-rust games that is closer to Rust's data driven
+philosophy.
+
+Unlike other egui integrations, `godot_egui` has the special feature of being
+embedded as a custom Godot scene tree node. This effectively allows combining
+Godot's retained mode UI and container-based placement with the simplicity of
+immediate-mode style GUI code of `egui`, getting the best of both worlds.
+
+The [github repository](https://github.com/setzer22/godot-egui) has an example
+project and usage instructions to get you started with immediate-mode GUI
+programming with Godot and Rust!
+
+[godot_egui]: https://docs.rs/godot_egui/
+
+### [wgpu]
+
+![Franzplot on wgpu](./franzplot_scene.gif)
+
+Following the [Family Reunion] initiative, [wgpu] team has been busy rebuilding
+the graphics infrastructure. The new D3D12 backend has been merged, which
+concludes the trip of moving (or rewriting?) all of the implementation into
+Rust. In addition to a "lean and mean" implementation of the host API side,
+which turned out to match the WebGPU API very well, the new backend works with
+[naga] exclusively for generation of HLSL shaders.
+This is in contrast with gfx-backend-dx12, which only supported SPIRV-Cross.
+
+The team also wrote the blog post [Release of v0.9 and the Future of wgpu].
+One of the interesting bits is `gfx` repository switching to
+maintenance mode.
+
+Last but not the least, Francesco Cattoglio described their adventure
+with rewriting [Franzplot] on a new blog hosted by the wgpu team. This blog will
+accumulate stories of wgpu users and their interesting projects.
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[naga]: https://github.com/gfx-rs/naga
+[Family Reunion]: https://gamedev.rs/news/023/#wgpu-family-re-union
+[Release of v0.9 and the Future of wgpu]: https://gfx-rs.github.io/2021/07/16/release-0.9-future.html
+[Franzplot]: https://gfx-rs.github.io/stories/franzplot.html
+
+### [GGRS]
+
+![GGRS](./ggrs_logo.png)
+
+[GGRS] by [@g_schup] is a reimagination of the [GGPO] P2P rollback network SDK
+written in 100% safe Rust.
+
+The freshly released version 0.4 comes with tons of fixes for P2P sessions with
+up to four players and any number of spectators. More importantly, the repository
+now features a [tutorial] and full game [examples] for every type of session.
+
+[GGRS]: https://github.com/gschup/ggrs
+[GGPO]: https://www.ggpo.net/
+[@g_schup]: https://twitter.com/g_schup
+[tutorial]: https://gschup.github.io/ggrs/docs/getting-started/quick-start/
+[examples]: https://github.com/gschup/ggrs/tree/main/examples
+
+### [Bevy Retrograde][bevy_retrograde]
+
+{{ image_figure(
+    alt="physics example"
+    src="bevy-retrograde.gif"
+    caption="Bevy Retrograde Physics Map example") }}
+
+[Bevy Retrograde][bevy_retrograde] (formerly Bevy Retro) is a [Bevy] plugin
+designed for making pixel-perfect games as easily as possible.
+
+This project was released under the [Katharos License][katharos_license]. This
+license has moral and ethical implications that you may or may not agree with,
+so please read it before making use of this project.
+
+In the last two months, Bevy Retrograde has gotten a major update and is also on
+crates.io for the first time!
+
+- The transform system was migrated to use Bevy's own transform system.
+- The pixel-perfect alignment restriction can now be optionally disabled on a
+  per-sprite basis. This makes it possible to do smooth character and projectile
+  movement if desired.
+- The [Heron] physics engine ( which is powered by Rapier ) was integrated, with
+  a custom extension for automatically creating collision shapes from sprite
+  outlines.
+- It was decided to start work on migrating Bevy Retrograde to use Bevy's own
+  rendering abstraction, making it compatible with the larger Bevy rendering
+  ecosystem. This will hopefully be finished in the next release.
+
+More information can be found in the Bevy Retrograde
+[release notes][bevy_retrograde_release_notes].
+
+You can ask questions or give feedback for Bevy Retrograde
+[on GitHub][bevy_retrograde_discussions].
+
+[Heron]: https://github.com/jcornaz/heron
+[bounty_bros_blog_post]: https://katharostech.com/post/bounty-bros-update-4-physics-damage-pathfinding
+[bevy_retrograde_release_notes]: https://github.com/katharostech/bevy_retrograde/releases/tag/v0.2.0
+[bevy_retrograde]: https://github.com/katharostech/bevy_retro
+[Bevy]: https://bevyengine.org
+[katharos_license]: https://github.com/katharostech/katharos-license
+[bevy_retrograde_discussions]: https://github.com/katharostech/bevy_retro/discussions
+
+### [Quilkin]
+
+![Quilkin](quilkin.png)
+
+[Quilkin] is a non-transparent UDP proxy specifically designed for use with
+large scale multiplayer dedicated game server deployments, to ensure security,
+access control, telemetry data, metrics and more.
+
+This month saw the initial
+[0.1.0](https://github.com/googleforgames/quilkin/releases/tag/v0.1.0)
+release of the project, as well as announcement blog posts from project
+co-founders [Embark Studios] and [Google Cloud]:
+
+- [Embark Studios: Say hi to Quilkin, an open-source UDP proxy][embark-announce]
+- [Google Cloud: Introducing Quilkin: open-source UDP proxies built for game server communication][gcp-announce]
+
+Quilkin is being actively developed and would love contributors and feedback.
+Please join the [Discord](https://discord.gg/mfBNZjBDnc),
+[mailing list](https://groups.google.com/forum/#!forum/quilkin-discuss) or
+follow the project on [Twitter](https://twitter.com/quilkindev).
+
+[Quilkin]: https://github.com/googleforgames/quilkin
+[Google Cloud]: http://cloud.google.com/gaming
+[Embark Studios]:(https://embark.dev)
+[embark-announce]: https://medium.com/embarkstudios/say-hi-to-quilkin-an-open-source-udp-proxy-88577c795204
+[gcp-announce]: https://cloud.google.com/blog/products/gaming/introducing-quilkin
+
+### [bevy_asset_loader]
+
+[@nikl_me] wrote a [blog post][asset_handling_post] about creating
+[bevy_asset_loader], a plugin to simplify asset handling in [Bevy][bevy]
+applications. The post outlines how bevy_asset_loader can be used and
+discusses future improvements to the crate.
+
+[asset_handling_post]: https://www.nikl.me/blog/2021/asset-handling-in-bevy-apps/
+[bevy_asset_loader]: https://github.com/NiklasEi/bevy_asset_loader
+[bevy]: https://github.com/bevyengine/bevy
+[@nikl_me]: https://twitter.com/nikl_me
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+<!--
+TODO: Add real links and un-comment once this post is published
+-->
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/p0hgsy/this_month_in_rust_gamedev_24_july_2021/),
+[Twitter](https://twitter.com/rust_gamedev/status/1424398304700420102),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/024/macroquad.jpg b/content/news/024/macroquad.jpg
new file mode 100644
index 000000000..732be7d71
Binary files /dev/null and b/content/news/024/macroquad.jpg differ
diff --git a/content/news/024/quilkin.png b/content/news/024/quilkin.png
new file mode 100644
index 000000000..5dfe8d89b
Binary files /dev/null and b/content/news/024/quilkin.png differ
diff --git a/content/news/024/rg3d.jpg b/content/news/024/rg3d.jpg
new file mode 100644
index 000000000..bf1a7b5ad
Binary files /dev/null and b/content/news/024/rg3d.jpg differ
diff --git a/content/news/024/robo-os.jpg b/content/news/024/robo-os.jpg
new file mode 100644
index 000000000..bd760bafc
Binary files /dev/null and b/content/news/024/robo-os.jpg differ
diff --git a/content/news/024/shroom-kingdom.gif b/content/news/024/shroom-kingdom.gif
new file mode 100644
index 000000000..09376fcc7
Binary files /dev/null and b/content/news/024/shroom-kingdom.gif differ
diff --git a/content/news/024/starframe.gif b/content/news/024/starframe.gif
new file mode 100755
index 000000000..ff2dd28a8
Binary files /dev/null and b/content/news/024/starframe.gif differ
diff --git a/content/news/024/the_process.gif b/content/news/024/the_process.gif
new file mode 100644
index 000000000..e12175bce
Binary files /dev/null and b/content/news/024/the_process.gif differ
diff --git a/content/news/024/theta-wave.gif b/content/news/024/theta-wave.gif
new file mode 100644
index 000000000..839620b6f
Binary files /dev/null and b/content/news/024/theta-wave.gif differ
diff --git a/content/news/024/veloren.png b/content/news/024/veloren.png
new file mode 100644
index 000000000..263d2e556
Binary files /dev/null and b/content/news/024/veloren.png differ
diff --git a/content/news/024/wicked_potions.png b/content/news/024/wicked_potions.png
new file mode 100644
index 000000000..58294e881
Binary files /dev/null and b/content/news/024/wicked_potions.png differ
diff --git a/content/news/024/zemeroth.jpg b/content/news/024/zemeroth.jpg
new file mode 100644
index 000000000..ed7a8b861
Binary files /dev/null and b/content/news/024/zemeroth.jpg differ
diff --git a/content/news/025/TO_BE_DIRE.png b/content/news/025/TO_BE_DIRE.png
new file mode 100644
index 000000000..9e2d6e3db
Binary files /dev/null and b/content/news/025/TO_BE_DIRE.png differ
diff --git a/content/news/025/adayatthemovies.png b/content/news/025/adayatthemovies.png
new file mode 100644
index 000000000..bee9fe715
Binary files /dev/null and b/content/news/025/adayatthemovies.png differ
diff --git a/content/news/025/dimforge.png b/content/news/025/dimforge.png
new file mode 100644
index 000000000..ec0305045
Binary files /dev/null and b/content/news/025/dimforge.png differ
diff --git a/content/news/025/fishfight-website.png b/content/news/025/fishfight-website.png
new file mode 100644
index 000000000..cc4eb1d20
Binary files /dev/null and b/content/news/025/fishfight-website.png differ
diff --git a/content/news/025/gamedev-meetup.png b/content/news/025/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/025/gamedev-meetup.png differ
diff --git a/content/news/025/ggrs_logo.png b/content/news/025/ggrs_logo.png
new file mode 100644
index 000000000..d1105994b
Binary files /dev/null and b/content/news/025/ggrs_logo.png differ
diff --git a/content/news/025/godot_egui.gif b/content/news/025/godot_egui.gif
new file mode 100644
index 000000000..fd28b9afd
Binary files /dev/null and b/content/news/025/godot_egui.gif differ
diff --git a/content/news/025/graphite_alpha.png b/content/news/025/graphite_alpha.png
new file mode 100644
index 000000000..770715aec
Binary files /dev/null and b/content/news/025/graphite_alpha.png differ
diff --git a/content/news/025/humankind-wiki.jpeg b/content/news/025/humankind-wiki.jpeg
new file mode 100644
index 000000000..76aa6c2ef
Binary files /dev/null and b/content/news/025/humankind-wiki.jpeg differ
diff --git a/content/news/025/index.md b/content/news/025/index.md
new file mode 100644
index 000000000..a6ca90674
--- /dev/null
+++ b/content/news/025/index.md
@@ -0,0 +1,920 @@
++++
+title = "This Month in Rust GameDev #25 - August 2021"
+date = 2021-09-08
+transparent = true
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 25th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rusty Jam
+
+![Rusty Jam Site](rusty-jam.png)
+
+The first (unofficial) Rust Game Jam just completed! The [Rusty
+Jam][rusty-jam-homepage] is a game jam to work on games made completely in Rust.
+19 games were completed and submitted over the one-week jam. The games were
+rated by the community, and the top three games were:
+
+- First place: [Winter][rusty-jam-first-place] by MrRafael
+- Second place: [Murder User Dungeon][rusty-jam-second-place] by Sheepyhead,
+  cdsupina, and Nightlyside
+- Third place: [To be Dire][rusty-jam-third-place] by mdaffin, TimeLark and
+  septum
+
+The Rusty Jam will be back, so stay tuned on the [Rusty Jam Discord
+Server][rusty-jam-server] for more updates!
+
+[rusty-jam-homepage]: https://itch.io/jam/rusty-jam
+[rusty-jam-entries]: https://itch.io/jam/rusty-jam/entries
+[rusty-jam-first-place]: https://mrrafael.itch.io/winter
+[rusty-jam-second-place]: https://sheepyhead.itch.io/murder-user-dungeon
+[rusty-jam-third-place]: https://septum.itch.io/to-be-dire
+[rusty-jam-server]: https://discord.gg/jZtz6y9gCJ
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The eighth Rust Gamedev Meetup happened in August. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [September 11th][rust-meetup-sept-time], fill
+out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=g-QZAVipiuU
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-sept-time]: https://everytimezone.com/s/c603b7e6
+
+## Game Updates
+
+### [Pixie Wrangler]
+
+{{ image_figure(
+    alt="Screenshot of Pixie Wrangler showing pixies traveling along paths drawn by
+the player."
+    src="pixie_wrangler.png"
+    caption="Click the image to play the game in your desktop browser!",
+    link="https://euclidean-whale.itch.io/pixie-wrangler") }}
+Pixie Wrangler ([itch.io][pw-itch], [GitHub][pw-github]) by [@rparrett] is a
+puzzle game reminiscent of old school printed circuit board design software.
+
+Help the Pixies get from their outputs to their inputs while doing battle with
+the intentionally less-than-ergonomic circuit design software. Pixie Wrangler is
+currently a prototype, but includes 9 complete levels.
+
+Pixie Wrangler was built with [Bevy 0.5] with support from these other great
+projects: [bevy_webgl2], [bevy_prototype_lyon], [bevy_asset_ron],
+[bevy_easings].
+
+[Pixie Wrangler]: https://euclidean-whale.itch.io/pixie-wrangler
+[pw-itch]: https://euclidean-whale.itch.io/pixie-wrangler
+[pw-github]: https://github.com/rparrett/pixie_wrangler
+[Bevy 0.5]: https://bevyengine.org/
+[bevy_webgl2]: https://github.com/mrk-its/bevy_webgl2
+[bevy_prototype_lyon]: https://github.com/Nilirad/bevy_prototype_lyon
+[bevy_asset_ron]: https://github.com/inodentry/bevy_asset_ron
+[bevy_easings]: https://github.com/mockersf/bevy_extra/tree/master/bevy_easings
+[@rparrett]: https://github.com/rparrett
+
+### [vange-rs]
+
+{{ image_figure(
+    alt="Vange-rs on wgpu-0.10"
+    src="vangers-wgpu0.10.png"
+    caption="vange-rs on wgpu-0.10") }}
+
+Vange-rs is a rewrite of the iconic Vangers game from 1998 in Rust, heavily
+utilizing GPU for rendering.
+
+The rendering engine has seen a major upgrade. Essential shaders were rewritten
+into [WGSL], which streamlined the shader pipelines and culled out the
+dependency tree. Code was ported on the latest [wgpu]-0.10 release and helped
+identify a few issues. Most importantly, this change made the game able to
+finally be distributed, and maybe even compiled for the Web in the future. Read
+more on the [WGSL-related blog post].
+
+In order to take advantage of the new superpowers, the [Rusty Vangers] game (the
+new working title) was published on Itch.io.
+
+[vange-rs]: https://github.com/kvark/vange-rs
+[WGSL-related blog post]: https://vange.rs/2021/08/25/pure-rust.html
+[Rusty Vangers]: https://kvark.itch.io/vangers
+
+### [RecWars]
+
+{{ image_figure(
+    alt="RecWars screenshot"
+    src="rec-wars.png"
+    caption="Click the image to play in your browser"
+    link="https://martin-t.gitlab.io/gitlab-pages/rec-wars/macroquad.html") }}
+
+[RecWars] by @martin-t is a free and open source Rust clone of [RecWar], a top
+down vehicle shooter.
+
+The game is a work-in-progress, this month it gained split-screen for 2 players
+and an in-game console to change cvars - you can edit any of the configuration
+variables that define its gameplay balance while playing.
+
+RecWars uses the [macroquad] engine so it can be played on the desktop as well
+as [in the browser][rec-wars-web].
+
+[RecWars]: https://github.com/martin-t/rec-wars
+[RecWar]: https://github.com/martin-t/rec-wars#the-original-game
+[rec-wars-web]: https://martin-t.gitlab.io/gitlab-pages/rec-wars/macroquad.html
+[macroquad]: https://github.com/not-fl3/macroquad
+
+### [Vehicle Evolver Deluxe]
+
+{{ image_figure(
+    alt="Vehicle Evolver Deluxe in action, showing multiple vehicles attempting to complete an obstacle course"
+    src="vehicle_evolver_deluxe.gif"
+    caption="Vehicle Evolver Deluxe in action!") }}
+
+[Vehicle Evolver Deluxe]
+([GitHub](https://github.com/Bauxitedev/vehicle_evolver_deluxe),
+[Twitter](https://twitter.com/bauxitedev/status/1423916614651678722)) by
+[@bauxitedev] is a simulation that runs in your browser, using AI (to be
+specific: [genetic algorithms](https://en.wikipedia.org/wiki/Genetic_algorithm))
+to try to build better and better vehicles. The vehicles have to overcome an
+obstacle course, starting with some slight hills, followed by steeper hills, and
+finally some jumps. The vehicles are made out of panels and wheels, connected
+together, similar to the game
+[Besiege](https://store.steampowered.com/app/346010/Besiege/), except in 2D. It
+was built using Rust and the Bevy game engine.
+
+[Try the live web demo
+here.](https://bauxitedev.github.io/vehicle_evolver_deluxe/index.html) (It needs
+a relatively fast computer, on mobile browsers, it'll run really slow.)
+
+[There is also an in-depth explanation available on how it works internally, in
+the form of an educational video.](https://www.youtube.com/watch?v=DlRNdCCSSyo)
+
+_Discussions:
+[/r/rust](http://redd.it/ozpa6q),
+[Twitter](https://twitter.com/bauxitedev/status/1423916614651678722)_
+
+[Vehicle Evolver Deluxe]:
+https://bauxitedev.github.io/vehicle_evolver_deluxe/index.html
+[@bauxitedev]:
+https://twitter.com/bauxitedev
+
+### Liminal Lab 000
+
+{{ image_figure(
+    alt="Screenshot of Liminal Lab 000 showing a white-walled laboratory test chamber
+         with buttons on the floor, lights on the wall, and a dark cube levitating
+         overhead."
+    src="liminal_lab_000.png"
+    caption="Click the image to play the game in your desktop browser!",
+    link="https://pebazium.web.app/") }}
+
+Liminal Lab 000 ([live version][ll000-live]) by [@pebaz] is a tiny, minimalistic
+puzzle game with 1 puzzle designed around the concept of [Liminal
+Spaces][liminality]. Liminal Spaces are usually abandoned, transitional places
+where life once thrived. These spaces are somehow familiar to the viewer but the
+viewer has never been there. The unsettling feeling of being alone comes from
+the realization that the viewer does not belong in that space but is merely
+passing through it.
+
+Liminal Lab 000 was built using [Macroquad][macroquad], utilizes voxel rendering
+with 8x8x8 chunks, and is hosted on Google Firebase Hosting.
+
+_Discussions: [/r/rust_gamedev][liminal-reddit]_
+
+[ll000-live]: https://pebazium.web.app/
+[@pebaz]: https://github.com/Pebaz
+[liminality]: https://aesthetics.fandom.com/wiki/Liminal_Space
+[macroquad]: https://github.com/not-fl3/macroquad
+[liminal-reddit]: https://www.reddit.com/r/rust_gamedev/comments/ouu7xk/liminal_lab_000_my_first_ever_3d_game/
+
+### [Not Snake][not-snake]
+
+![Level example from Not Snake](notsnake.png)
+
+Not Snake ([GitHub][notsnakegit], [Itch][not-snake]) by [Michael Ramirez] is a
+3D snake game where you don't play as the snake.
+
+Not Snake was developed using the [Bevy game engine][bevy-notsnake]. It was
+completed and [released for free][not-snake] in August and can be played on
+Windows, Linux, MacOS, and in browser (Chrome recommended) although there are
+fewer audio/performance issues running the executables versus the browser
+version.
+
+There have been several large changes since the last update in June including
+adding new levels, new music, and adding a narrator who does an OK job of keeping
+score.
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/p8fdfn),
+[/r/indiegames](https://www.reddit.com/p9cx15)_
+
+[not-snake]: https://ramirezmike2.itch.io/not-snake
+[Michael Ramirez]: https://github.com/ramirezmike
+[bevy-notsnake]: https://bevyengine.org
+[notsnakegit]: https://github.com/ramirezmike/not_snake_game
+
+### [A Day at the Movies][dayatmovies]
+
+{{ image_figure(
+    alt='Screenshot of "A Day at the Movies"'
+    src="adayatthemovies.png"
+    caption="The kids getting ready to sneak into a movie") }}
+
+"A Day at the Movies" ([GitHub][dayatmoviesgit], [Itch][dayatmovies]) by
+[Michael Ramirez] is a short game about stealth, movies, and friendship.
+
+"A Day at the Movies" was made using the [Bevy game engine][bevy-movieday] in 7
+days as part of the Rusty Jam. Despite the placeholder art and lack of audio, it
+can be played from start-to-finish and is literally guaranteed to bring a smile
+to all who play it. Just make sure to follow the instructions on how to get into
+the "Ferris the Crab" movie room.
+
+It's playable in-browser on [itch][dayatmovies] and the code can be viewed on
+[GitHub][dayatmoviesgit].
+
+[dayatmovies]: https://ramirezmike2.itch.io/a-day-at-the-movies
+[dayatmoviesgit]: https://github.com/ramirezmike/rust_gamejam_0821
+[bevy-movieday]: https://bevyengine.org
+
+### [Sombervale]
+
+![Screenshot of Sombervale depicting the starting location](./sombervale.png)
+
+Sombervale ([GitHub][sv-gh], [itch.io][sv-itch], [Twitch][sv-twitch]) by
+[@blipjoy] is a game built in seven days for Rusty Jam. It is styled like an old
+handheld game with a 160x128 screen resolution and 16-color palette.
+
+The top 3 things that went well for this project were the art, tilemap support,
+and ECS. On the art side, the silhouettes in the background turned out better
+than expected. The backlighting (or at least the impression of backlighting)
+looks quite nice, even in motion. Tilemap support was added near the end of the
+jam built on [tiled]. It catapulted development progress from seeing major
+changes every day to making major changes every hour. [shipyard] is the Entity
+Component System crate used in Sombervale. This had a tricky learning curve, but
+simplified complex interactions between entities.
+
+Something that went poorly was choosing a scope that couldn't possibly be
+completed on time. As usual, everything turned into a stretch goal! Secondly, a
+lot of time was allocated to features that didn't make the cut. Much of this was
+a result of trying to be perfect instead of efficient. It's a good game jam
+lesson that often has to be relearned the hard way.
+
+[Sombervale]: https://blipjoy.itch.io/sombervale
+[sv-gh]: https://github.com/blipjoy/sombervale
+[sv-itch]: https://blipjoy.itch.io/sombervale
+[sv-twitch]: https://www.twitch.tv/blipjoy
+[@blipjoy]: https://github.com/blipjoy
+[tiled]: https://crates.io/crates/tiled
+[shipyard]: https://crates.io/crates/shipyard
+
+### Shattersong Online
+
+![Screenshot of Shattersong Online showing a portal leading between two
+shards](shattersong.png)
+
+Shattersong Online is an online sandbox game written in Rust, with the goal of
+supporting thousands of players in a shared universe, with hundreds of players
+per shard. In-game portals let players travel between shards hosted on separate
+physical servers.
+
+Since the initial announcement in July, we have worked on restructuring large
+parts of the codebase to make adding new content more ergonomic. We tested out
+the new organization by adding a new monster type from scratch (pictured above).
+
+Read the [dev blog][triplehex-blog] for more info, follow
+[@triplehex][triplehex-twitter] on twitter for updates, and join the
+[shattersong discord][shattersong-discord] for questions!
+
+[triplehex-blog]: https://triplehex.dev/shattersong-online/
+[triplehex-twitter]: https://twitter.com/triplehexdev
+[shattersong-discord]: https://discord.gg/K5RHxVEK6F
+
+### [The Process]
+
+{{ image_figure(
+    alt="An animated gif showing a machine setup to smelt iron ore"
+    src="the_process.gif"
+    caption="A smelter factory setup in The Process") }}
+
+[The Process] by @setzer22 is an upcoming game about factory building, process
+management, and carrot production, built with Rust using the Godot game engine!
+
+This month has seen a lot of activity: More improvements to the level editor,
+in-game assets, and general gameplay improvements. But the main focus has been on
+a new building system with improved ergonomics. The game is now approaching a
+point where all the core mechanics for the factory simulation are in place, but
+more in-game content and assets are still required to reach the first playable
+demo.
+
+This month the game has seen the following changes and improvements:
+
+- New assets like
+  [wooden planks](https://twitter.com/PlayTheProcess/status/1423712530267054086),
+  [machine parts](https://twitter.com/PlayTheProcess/status/1433160712231297027)
+  and
+  [mashed carrot cans](https://twitter.com/PlayTheProcess/status/1434466387787923456),
+  with their in-game recipes.
+- A new machine, the
+  [centrifuge](https://twitter.com/PlayTheProcess/status/1430923976574910466)
+- A new system to tweak properties with
+  [OSD sliders](https://twitter.com/PlayTheProcess/status/1424638751041536001)
+  to speed up iteration times. Short explanation
+  [here](https://twitter.com/PlayTheProcess/status/1424638756246675459).
+- A new egui-powered
+  [main menu](https://twitter.com/PlayTheProcess/status/1425785805453373444)
+  for the main game screen.
+- Improvements to the building system:
+  [ghost markers](https://twitter.com/PlayTheProcess/status/1427560636289069059),
+  [ramps](https://twitter.com/PlayTheProcess/status/1428300028712558595),
+  [walls](https://twitter.com/PlayTheProcess/status/1429391914130882564),
+  [machines](https://twitter.com/PlayTheProcess/status/1430229400923119621)
+  and
+  [conveyor belts](https://twitter.com/PlayTheProcess/status/1430479444213485574)!
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/p7ccad/a_3d_building_system_overhaul_for_the_process/)_
+
+[The Process]: https://twitter.com/PlayTheProcess
+
+### [Murder-User Dungeon][murder-user-dungeon]
+
+![Murder-User Dungeon gameplay screenshots](mud_screenshots.png)
+
+Murder-User Dungeon (MUD) ([GitHub][mud-github], [Itch][mud-itch]) by
+[@Nightlyside][nightlyside], [@cdsupina][cdsupina], [@Shippyhead][sheepyhead] is
+a 2D game made for the [Rusty Jam 21][rusty-jam-21] in just one week with the
+theme "*Illusion of Security*".
+
+> Tony is a young man. Finally having his own apartment is a good thing! He will
+> learn how to live by himself and how to enjoy the small things in life like
+> playing on his old retro computer: the Astaria 3600 running SafeOS 3.1.
+>
+> However, you will quickly realize that the internet is not so friendly. You
+> will meet new people in the Labyrinth(TM) game, and not being friendly to them
+> can have a serious impact on your real life!
+>
+> In Murder-User Dungeon you will juggle between exploring the Labyrinth(TM)
+> game in your console, hiding from vengeful gamers and making sure you fulfill
+> your human needs.
+>
+> To win the game, you must reach the end of the Labyrinth(TM)!
+
+The developers aimed to make the player feel that they were safe in their
+apartment at first - however as the game goes on and the player makes enemies of
+other gamers in the Labyrinth, they risk them coming to their apartment to get
+revenge.
+
+The team split development of the game, so that each member could work
+independently on separate features. While [@cdsupina][cdsupina] worked on the
+needs system and the graphics, [@Sheepyhead][sheepyhead] worked on the UI and
+menus, and [@Nightlyside][nightlyside] worked on the console and Labyrinth
+gameplay.
+
+MUD was developed using the [Bevy game engine][bevy-engine], Rapier2D for
+collisions, Aseprite for the graphics, and a lot of free assets from the
+internet (which are credited at the end of the game's description).
+
+Linux and Windows builds are available on the Itch page, and feedback is
+welcomed!
+
+_Discussions:
+[r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/pddreu/rusty_jam_submission_murderuser_dungeon/),
+[r/rust](https://www.reddit.com/r/rust/comments/pddyv5/rusty_jam_submission_murderuser_dungeon/),
+[Rusty Jam Discord](https://discord.gg/KkeMUu5kxH)_
+
+[murder-user-dungeon]: https://sheepyhead.itch.io/murder-user-dungeon
+[bevy-engine]: https://bevyengine.org/
+[rusty-jam-21]: https://itch.io/jam/rusty-jam
+[mud-itch]: https://sheepyhead.itch.io/murder-user-dungeon
+[mud-github]: https://github.com/TheRealTeamFReSh/MurderUserDungeon
+[nightlyside]: https://nightlyside.github.io/
+[cdsupina]: https://github.com/cdsupina
+[sheepyhead]: https://github.com/Sheepyhead
+
+### [Theta Wave]
+
+{{ image_figure(
+    alt="Theta Wave Mobs"
+    src="theta-wave.gif"
+    caption="All mobs ported to Bevy Theta Wave",
+    link="https://github.com/thetawavegame/thetawave") }}
+
+[Theta Wave] is an open-source space shooter game by developers [@micah_tigley]
+and [@carlosupina]. In the past month, they have been working towards porting
+Theta Wave to the Bevy Engine. Most of the work this month has been focused on
+implementing all of the existing mobs in Bevy and Rapier.
+
+Progress on this port is going strong - you can find the GitHub issue for the
+port [here][Bevy Port Issue].
+
+_Discussions:
+[Twitter](https://twitter.com/carlosupina/status/1432039838463705090)_  
+
+[Bevy Port Issue]: https://github.com/thetawavegame/thetawave/issues/2
+[Theta Wave]: https://github.com/thetawavegame/thetawave
+[@micah_tigley]: https://twitter.com/micah_tigley
+[@carlosupina]: https://twitter.com/carlosupina
+
+### [Shroom Kingdom][shroom-kingdom]
+
+{{ image_figure(
+    alt="SHRM token distribution"
+    src="shroom-kingdom.png"
+    caption="SHRM token distribution") }}
+
+Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord],
+[Twitter][shrm-twitter]) is an upcoming play-to-earn video game built with web
+technologies running on the [NEAR Blockchain][near-blockchain].
+
+This month the [whitepaper draft][shrm-whitepaper] has been published and a lot
+of thoughts have been put into the token economics and how to integrate the game
+with the blockchain. The Shroom Kingdom DAO (Decentralised Autonomous
+Organization) is looking for self-motivated people, who want to help build the
+project. DAO members will be rewarded with the $SHRM token, which will soon be
+launched on the NEAR mainnet after the final feedback round from NEAR core team
+members.
+
+A Proof of Concept has also been published for the app, which will be built with
+Bevy and Rapier compiled to WebAssembly and which uses React for the GUI.
+
+To incentivise early adoption of the project, an [NFT airdrop][shrm-nft-airdrop]
+has been announced. The NFT will only be acquirable for a limited amount of
+time.
+
+[shroom-kingdom]: https://shroomkingdom.net/
+[shrm-github]: https://github.com/Shroom-Kingdom
+[shrm-discord]: https://discord.gg/SPZsgSe
+[shrm-twitter]: https://twitter.com/shrm_kingdom
+[shrm-whitepaper]: https://whitepaper.shroomkingdom.net/
+[shrm-nft-airdrop]: https://shroomkingdom.net/blog/nft-airdrop/
+[near-blockchain]: https://near.org
+
+### [Fish Fight][fish-website]
+
+![Screenshot of fishfight.org website](fishfight-website.png)
+
+[Fish Fight][fish-website] ([GitHub][fish-github], [Discord][fish-discord],
+[website][fish-website]) is a love letter to its spiritual
+predecessor [Duck Game][duck-game].
+
+[As promised][fish-reloaded],
+after months of private prototyping of early invitees, the Fish Fight devs are
+finally ready to make their code and community channels available to the general
+public. They also launched their website! You can read the [announcement
+post][fish-announce] and the [design doc][fish-designdoc].
+
+[fish-announce]: https://fishfight.itch.io/ff/devlog/291737/fish-fight-is-open-source
+[fish-github]: https://github.com/fishfight/FishFight
+[fish-discord]: https://discord.gg/4smxjcheE5
+[fish-designdoc]: https://www.notion.so/erlendsh/Fish-Fight-1647ed74217e4e38a59bd28f4f5bc81a
+[fish-website]: https://fishfight.org/
+[duck-game]: https://store.steampowered.com/app/312530/Duck_Game/
+[fish-reloaded]: https://fishfight.itch.io/ff/devlog/281554/fish-fight-reloaded
+
+### [TO BE DIRE][tbd-itch]
+
+![TO BE DIRE cover art](TO_BE_DIRE.png)
+
+TO BE DIRE by [@mdaffin], [@TimeLark] and [@septum], is a prototype survival
+game made in a week with [Bevy][tbd-bevy] for the first [Rusty Jam][tbd-jam].
+
+The main idea behind the design of TO BE DIRE is venturing out of the safe zone
+in order to survive, adding elements of gameplay like gathering resources, and
+maintaining the player character health and hunger, which are common for the
+genre, finally having the implementation of the monsters and fear system as a
+way to further address the first Rusty Jam's theme "Illusion of Security". [Read
+more about TO BE DIRE's design in the issues at GitLab][tbd-issues].
+
+Download the game at [itch.io][tbd-itch] (available for Linux and Windows)
+and/or get the source code at [GitLab][tbd-gitlab].
+
+[tbd-itch]: https://septum.itch.io/to-be-dire
+[tbd-gitlab]: https://gitlab.com/mdaffin/tbd
+[tbd-issues]: https://gitlab.com/mdaffin/tbd/-/issues?scope=all&state=closed
+[tbd-jam]: https://itch.io/jam/rusty-jam
+[tbd-bevy]: https://bevyengine.org
+[@mdaffin]: https://mdaffin.itch.io
+[@TimeLark]: https://timelark.itch.io
+[@septum]: https://septum.itch.io
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Exploring dungeons"
+    src="veloren.jpg"
+    caption="Exploring the caves") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In August, lots of preparation was done to get Veloren ready for the 0.11
+release coming in September. Work was done on refactoring parts of the codebase,
+and making server administration more ergonomic. Towers were added, which allow
+for above-ground dungeons. Skill trees were tweaked for better progression.
+Modular weapons had a heavy amount of work put into them and were recently
+merged. Work was done to prevent the camera from clipping through walls as much.
+
+Improvements were made to the physics system, as well as other optimizations to
+the real-time simulation system. Terrain persistence was completed and is now
+being tested on the main server. Balancing was done to loot tables, and more
+animations were added to characters. In September, 0.11 will be released. Come
+out to the [release party on the 11th at 18:00 UTC][veloren-release-event]!
+
+August's full weekly devlogs: "This Week In Veloren...":
+[#131][veloren-131],
+[#132][veloren-132],
+[#133][veloren-133],
+[#134][veloren-134],
+[#135][veloren-135].
+
+[veloren]: https://veloren.net
+[veloren-131]: https://veloren.net/devblog-131
+[veloren-132]: https://veloren.net/devblog-132
+[veloren-133]: https://veloren.net/devblog-133
+[veloren-134]: https://veloren.net/devblog-134
+[veloren-135]: https://veloren.net/devblog-135
+[veloren-release-event]: https://opencollective.com/veloren/events/veloren-0-11-release-party-05c1a306
+
+### [What's the word][whats-the-word]
+
+![What's the word](whats-the-word.gif)
+
+A UI-based game in which you tap (or miss) buttons. Created with [Bevy
+engine][whats-the-word-bevy] and [egui][whats-the-word-egui], it demonstrates
+how _small_ you can scope your project for a [(Rusty) game
+jam][whats-the-word-results]!
+
+[whats-the-word]: https://vrixyz.itch.io/whats-the-word
+[whats-the-word-bevy]: https://bevyengine.org/
+[whats-the-word-egui]: https://github.com/mvlabat/bevy_egui
+[whats-the-word-results]: https://itch.io/jam/rusty-jam/results
+
+## [Humankind's Encyclopedia][humankind-twi]
+
+![Humankind's logo](humankind-wiki.jpeg)
+
+[Humankind] is a Civilization-like game from [Amplitude Studios],
+out of Early Access a few weeks ago.
+While the game itself isn't written in Rust,
+its [gorgeous encyclopedia][humankind-wiki] and persona sharing service
+[are written using rocket.rs][humankind-twi].
+
+Since the encyclopedia has a big constraint of being used inside an embedded
+in-game browser that has a bit of performance issues with full JS frameworks
+the team opted for server-side rendering with the [Tera] template framework.
+
+> I had people working on that without any prior rust experience,
+> and they were ready to code in no time thanks to good language documentation
+> & useful compiler messages.
+>
+> We didn't do anything particularly complex, but the safety of Rust combined
+> with performance enabled us to make this run for way less $$.
+> You don't have to do complex system programming to profit from Rust's benefits.
+
+[Humankind]: https://store.steampowered.com/app/1124300/HUMANKIND
+[humankind-twi]: https://twitter.com/SobertKaos/status/1429812457820786694
+[humankind-wiki]: https://humankind-encyclopedia.games2gether.com/en-us
+[Amplitude Studios]: https://www.amplitude-studios.com
+[Tera]: https://github.com/Keats/tera
+
+## Engine Updates
+
+### [rg3d]
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-the-box features. [A
+video][rg3d_fh] was released with updates from version 0.22. [Another
+video][rg3d_gfs] about the engine made by [@GameFromScratch][gfs_channel], with
+the accompanying article that can be found [here][gfs_article].
+
+[![rg3d feature highlights](rg3d-feature-highlights.png)][rg3d_fh]
+
+Lots has been happening with recent rg3d engine development.  Physically-based
+rendering (PBR) was added. High dynamic range rendering is now supported, along
+with tone mapping, color grading, and gamma correction. Manual and auto-exposure
+functionality was added for cameras. There is now a widget for editing curves,
+and it supports custom curves. Lots of usability improvements were made, such as
+begin able to change the path of resources, UI performance gains, and better
+ways to manage assets.
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+[rg3d_fh]: https://www.youtube.com/watch?v=N8kmZ9aBtZs
+[rg3d_gfs]: https://www.youtube.com/watch?v=mzshg_0ZvLk
+[gfs_channel]: https://www.youtube.com/channel/UCr-5TdGkKszdbboXXsFZJTQ
+[gfs_article]: https://gamefromscratch.com/rg3d-open-source-rust-3d-game-engine/
+
+## Learning Material Updates
+
+### [Rewriting my mobile game in Rust targeting WASM][panda-doodle-blog-post]
+
+![Panda Doodle logo](panda-doodle.png)
+
+[@lucamoller][@lucamoller] published [a blog post][panda-doodle-blog-post]
+describing his experience trying to learn Rust by working on a hobby project to
+migrate his mobile game from a native C++ implementation to a Rust-based one
+targetting WASM.
+
+The post is written in a storytelling manner going through the author's
+motivations to work on this project and the main challenges they faced while
+learning Rust and implementing a game using WASM.
+
+The resulting game, [Panda Doodle][panda-doodle-game], runs smoothly on mobile
+device browsers, and the [source code][panda-doodle-source-code] was open
+sourced to help inspire other developers that wish to venture into implementing
+WASM-based games in Rust.
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/oxqofv/show_rrust_rewriting_my_mobile_game_in_rust/)_
+
+[panda-doodle-blog-post]: https://lucamoller.medium.com/rewriting-my-mobile-game-in-rust-targeting-wasm-1f9f82751830
+[panda-doodle-game]: https://pandadoodle.lucamoller.com/
+[panda-doodle-source-code]: https://github.com/lucamoller/pandadoodle-rust-wasm
+[@lucamoller]: https://github.com/lucamoller
+
+## Tooling Updates
+
+### [Graphite][graphite-repo]
+
+{{ image_figure(
+    alt="Graphite alpha teaser"
+    src="graphite_alpha.png"
+    caption="Graphite Alpha - Coming very soon") }}
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter](https://twitter.com/GraphiteEditor)) is an in-development vector and
+raster graphics editor built on a non-destructive node-based workflow.
+
+Work has progressed on features for the imminent Alpha release. A project
+website has been designed and will launch this month. Crucial user-facing
+features have been added: saving/opening documents; a bug report dialog for
+panics; an auto-generated list of dependency license notices; and a new
+undo/redo system.
+
+The new Path Tool shows Bézier anchor/control points (soon to be draggable).
+Rendering performance is much better and scrollbars now work with the infinite
+canvas. There's a new bounding box around selected shapes that are transformable
+with Blender-inspired [G]/[R]/[S] keys.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making rapid
+progress towards becoming a non-destructive, procedural graphics editor suitable
+for replacing traditional 2D DCC applications. The public alpha release is coming
+very soon. [Join the Discord][graphite-discord] and get involved!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.design
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design
+
+### [rx]
+
+![rx](rx_logo.png)
+
+[rx] ([website][rx-website], [code][rx-code], [community][rx-discord]) by
+[@cloudhead][cloudhead] is a modern and minimalist pixel editor written in Rust.
+
+Rx is a pixel art editor/animator written in Rust in about 12K LOC, which
+combines a vim-like modal interface with a cursor-based editor.
+
+Release v0.5 was just published. There are several new commands that help with
+color palettes. A flood fill tool has been added. You can now move between
+frames with the `h` and `l` keys. The command key `:` has been fixed to help
+with non-ANSI layouts. Compatability was added for non x86_64 systems. Support
+was added for pasting from the clipboard into the command line. Animation
+rendering is now a lot smoother.
+
+[rx]: https://rx.cloudhead.io
+[rx-website]: https://rx.cloudhead.io
+[rx-code]: https://github.com/cloudhead/rx
+[rx-discord]: https://discord.gg/xHggPjfsS9
+[cloudhead]: https://twitter.com/cloudhead
+
+## Library Updates
+
+### [GGRS]
+
+![GGRS](./ggrs_logo.png)
+
+[GGRS] by [@g_schup] is a reimagination of the [GGPO] P2P rollback network SDK
+written in 100% safe Rust.
+
+Since the last update, GGRS has released version 0.4.4 and received performance
+updates and fixes, such as a [sparse saving
+feature](https://gschup.github.io/ggrs/blog/sparse-saving/). The authors also
+proudly present [bevy_GGRS]!
+
+bevy_GGRS is a plugin to integrate GGRS easily into the popular game engine
+[bevy]. It features automatic saving and loading of components and resources
+defined by the user through bevy's reflection tools. The plugin is currently in
+development and uses features that have not been released in bevy 0.5. With bevy
+0.6 on the horizon, bevy_GGRS is planning to publish to
+[crates.io](https://crates.io), as well.
+
+If you are interested in developing with GGRS, check the following resources:
+
+- [quick start guide](https://gschup.github.io/ggrs/docs/getting-started/quick-start/)
+- [GGRS examples](https://github.com/gschup/ggrs/tree/main/examples)
+- [bevy_GGRS examples](https://github.com/gschup/bevy_ggrs/tree/main/examples)
+
+[GGRS]: https://github.com/gschup/ggrs
+[bevy_ggrs]: https://github.com/gschup/bevy_ggrs
+[bevy]: https://bevyengine.org/
+[GGPO]: https://www.ggpo.net/
+[@g_schup]: https://twitter.com/g_schup
+
+### [wgpu]-0.10
+
+{{ image_figure(
+    alt="Rend3 on wgpu-0.10"
+    src="rend3-wgpu0.10.jpg"
+    caption="unannounced engine on wgpu-0.10") }}
+
+The team has released wgpu-0.10 with a fully rewritten graphics abstraction
+("wgpu-hal" instead of "gfx-hal"), as well as [naga] version 0.6. Read more in
+[Release of a Pure-Rust v0.10 and a Call For Testing].
+
+There were a few issues spotted, but overall it went smooth for such a big
+change. User libraries were quick to update: [iced#1000], [kas#241],
+[pixels#187], and others.
+
+On the shader side, in addition to improved validation, hundreds of fixes to the
+produced outputs, the atomic operations are now supported when using [WGSL]
+sources.
+
+The release comes at a cost of DX11 backend, which isn't there comparing to
+wgpu-0.9. On the plus side, the new GL backend performs much better. It runs
+most of the examples, and has been successfully tested on Raspberry Pi-3. Still,
+more work ahead to make it solid, and to support WebGL2 properly.
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[naga]: https://github.com/gfx-rs/naga
+[Release of a Pure-Rust v0.10 and a Call For Testing]: https://gfx-rs.github.io/2021/08/18/release-0.10.html
+[iced#1000]: https://github.com/hecrj/iced/pull/1000
+[kas#241]: https://github.com/kas-gui/kas/pull/241
+[pixels#187]: https://github.com/parasyte/pixels/pull/187
+[WGSL]: https://gpuweb.github.io/gpuweb/wgsl/
+
+### [godot-egui]-0.1.8
+
+{{ image_figure(
+    alt="An animation showing godot-egui running as a plugin inside the editor"
+    src="godot_egui.gif"
+    caption="You can now use egui to make Godot editor extensions!") }}
+
+The [egui](https://github.com/emilk/egui) backend for
+[godot-rust](https://github.com/godot-rust/godot-rust) is improving fast. Some
+bugs have been ironed out during this past month, and the integration has got
+several features:
+
+- The repository now includes an example of how to setup egui to create
+  [Godot editor plugins](https://twitter.com/PlayTheProcess/status/1431660162587275267).
+  Contribution by @jacobsky.
+- Custom font support by drag & dropping font files right from Godot editor.
+- Updated crate to match latest egui 0.14.2
+- Configurable texture filtering.
+- Several bugfixes and improvements.
+
+Additionally, a new [theme
+editor](https://github.com/setzer22/godot-egui/issues/5) is in the works, which
+hopefully will be helpful to other egui backends as well!
+
+[godot-egui]: https://github.com/setzer22/godot-egui
+
+## [Dimforge][dimforge]
+
+[![Dimforge logo](dimforge.png)][dimforge]
+
+[Dimforge][dimforge] creates open-source Rust crates for numerical simulation.
+Some of the [recent updates][dimforge-update]:
+
+- [New user-guide for Rapier’s JS bindings][rapier-js-docs].
+- [nalgebra] v0.29 brings better soundness and non-Copy types support.
+- [Rapier] 0.11 brings a full set of joint limits.
+- The work on unbreakable reduced-coordinates joints for Rapier
+  is also in progress.
+
+[dimforge]: https://dimforge.com
+[dimforge-update]: https://dimforge.com/blog/2021/08/15/the-last-two-months-in-dimforge
+[Rapier]: https://rapier.rs
+[rapier-js-docs]: https://rapier.rs/docs/user_guides/javascript/getting_started_js
+[nalgebra]: https://nalgebra.org
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+- [Site fails to build #758][site-fails-to-build]
+- [Better solution for hosting images #636][better-solution-for-hosting-images]
+- [Netlify preview for PRs #174][netlify-preview-for-prs]
+
+[site-fails-to-build]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/758
+[better-solution-for-hosting-images]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/636
+[netlify-preview-for-prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues/174
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all the news for last month, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or the [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh
+news and updates about the ecosystem every day!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/pki6iw/this_month_in_rust_gamedev_25_august_2021/),
+[Twitter](https://twitter.com/rust_gamedev/status/1435700216510943234),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/025/liminal_lab_000.png b/content/news/025/liminal_lab_000.png
new file mode 100644
index 000000000..40e68cac9
Binary files /dev/null and b/content/news/025/liminal_lab_000.png differ
diff --git a/content/news/025/mud_screenshots.png b/content/news/025/mud_screenshots.png
new file mode 100644
index 000000000..411b84077
Binary files /dev/null and b/content/news/025/mud_screenshots.png differ
diff --git a/content/news/025/notsnake.png b/content/news/025/notsnake.png
new file mode 100644
index 000000000..10fb8c528
Binary files /dev/null and b/content/news/025/notsnake.png differ
diff --git a/content/news/025/panda-doodle.png b/content/news/025/panda-doodle.png
new file mode 100644
index 000000000..568ba8e24
Binary files /dev/null and b/content/news/025/panda-doodle.png differ
diff --git a/content/news/025/pixie_wrangler.png b/content/news/025/pixie_wrangler.png
new file mode 100644
index 000000000..6688152e3
Binary files /dev/null and b/content/news/025/pixie_wrangler.png differ
diff --git a/content/news/025/rec-wars.png b/content/news/025/rec-wars.png
new file mode 100644
index 000000000..c68c0d0bd
Binary files /dev/null and b/content/news/025/rec-wars.png differ
diff --git a/content/news/025/rend3-wgpu0.10.jpg b/content/news/025/rend3-wgpu0.10.jpg
new file mode 100644
index 000000000..c31dfc682
Binary files /dev/null and b/content/news/025/rend3-wgpu0.10.jpg differ
diff --git a/content/news/025/rg3d-feature-highlights.png b/content/news/025/rg3d-feature-highlights.png
new file mode 100644
index 000000000..73307b966
Binary files /dev/null and b/content/news/025/rg3d-feature-highlights.png differ
diff --git a/content/news/025/rg3d-gfs.png b/content/news/025/rg3d-gfs.png
new file mode 100644
index 000000000..52aa6e971
Binary files /dev/null and b/content/news/025/rg3d-gfs.png differ
diff --git a/content/news/025/rg3d_logo.png b/content/news/025/rg3d_logo.png
new file mode 100644
index 000000000..53d8a734d
Binary files /dev/null and b/content/news/025/rg3d_logo.png differ
diff --git a/content/news/025/rusty-jam.png b/content/news/025/rusty-jam.png
new file mode 100644
index 000000000..8eb6ca918
Binary files /dev/null and b/content/news/025/rusty-jam.png differ
diff --git a/content/news/025/rx_logo.png b/content/news/025/rx_logo.png
new file mode 100644
index 000000000..325819637
Binary files /dev/null and b/content/news/025/rx_logo.png differ
diff --git a/content/news/025/shattersong.png b/content/news/025/shattersong.png
new file mode 100644
index 000000000..eab0ab948
Binary files /dev/null and b/content/news/025/shattersong.png differ
diff --git a/content/news/025/shroom-kingdom.png b/content/news/025/shroom-kingdom.png
new file mode 100644
index 000000000..af22dbd5a
Binary files /dev/null and b/content/news/025/shroom-kingdom.png differ
diff --git a/content/news/025/sombervale.png b/content/news/025/sombervale.png
new file mode 100644
index 000000000..17b65d592
Binary files /dev/null and b/content/news/025/sombervale.png differ
diff --git a/content/news/025/the_process.gif b/content/news/025/the_process.gif
new file mode 100644
index 000000000..7fbf2d0dc
Binary files /dev/null and b/content/news/025/the_process.gif differ
diff --git a/content/news/025/theta-wave.gif b/content/news/025/theta-wave.gif
new file mode 100644
index 000000000..f682d9835
Binary files /dev/null and b/content/news/025/theta-wave.gif differ
diff --git a/content/news/025/vangers-wgpu0.10.png b/content/news/025/vangers-wgpu0.10.png
new file mode 100644
index 000000000..4e3369dbd
Binary files /dev/null and b/content/news/025/vangers-wgpu0.10.png differ
diff --git a/content/news/025/vehicle_evolver_deluxe.gif b/content/news/025/vehicle_evolver_deluxe.gif
new file mode 100644
index 000000000..d90c328aa
Binary files /dev/null and b/content/news/025/vehicle_evolver_deluxe.gif differ
diff --git a/content/news/025/veloren.jpg b/content/news/025/veloren.jpg
new file mode 100644
index 000000000..8dcadeb1a
Binary files /dev/null and b/content/news/025/veloren.jpg differ
diff --git a/content/news/025/whats-the-word.gif b/content/news/025/whats-the-word.gif
new file mode 100644
index 000000000..623aedcce
Binary files /dev/null and b/content/news/025/whats-the-word.gif differ
diff --git a/content/news/026/antorum.jpg b/content/news/026/antorum.jpg
new file mode 100644
index 000000000..5b91fba83
Binary files /dev/null and b/content/news/026/antorum.jpg differ
diff --git a/content/news/026/arcana-tanks-multiplayer.gif b/content/news/026/arcana-tanks-multiplayer.gif
new file mode 100644
index 000000000..787c334e7
Binary files /dev/null and b/content/news/026/arcana-tanks-multiplayer.gif differ
diff --git a/content/news/026/bevy_verlet.gif b/content/news/026/bevy_verlet.gif
new file mode 100644
index 000000000..aa14d77a4
Binary files /dev/null and b/content/news/026/bevy_verlet.gif differ
diff --git a/content/news/026/bitgun.jpeg b/content/news/026/bitgun.jpeg
new file mode 100644
index 000000000..8f40ff4e7
Binary files /dev/null and b/content/news/026/bitgun.jpeg differ
diff --git a/content/news/026/borderlands-save.png b/content/news/026/borderlands-save.png
new file mode 100644
index 000000000..78be810df
Binary files /dev/null and b/content/news/026/borderlands-save.png differ
diff --git a/content/news/026/capstone.png b/content/news/026/capstone.png
new file mode 100644
index 000000000..1b340a6ce
Binary files /dev/null and b/content/news/026/capstone.png differ
diff --git a/content/news/026/circle-race.jpg b/content/news/026/circle-race.jpg
new file mode 100644
index 000000000..2ee53cf9c
Binary files /dev/null and b/content/news/026/circle-race.jpg differ
diff --git a/content/news/026/deno-wgpu.png b/content/news/026/deno-wgpu.png
new file mode 100644
index 000000000..67083e3f5
Binary files /dev/null and b/content/news/026/deno-wgpu.png differ
diff --git a/content/news/026/emd_texture_hotreload.gif b/content/news/026/emd_texture_hotreload.gif
new file mode 100644
index 000000000..db8aca348
Binary files /dev/null and b/content/news/026/emd_texture_hotreload.gif differ
diff --git a/content/news/026/emergent-ai.gif b/content/news/026/emergent-ai.gif
new file mode 100644
index 000000000..5757c5d80
Binary files /dev/null and b/content/news/026/emergent-ai.gif differ
diff --git a/content/news/026/gamedev-meetup.png b/content/news/026/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/026/gamedev-meetup.png differ
diff --git a/content/news/026/gdc-talk.jpg b/content/news/026/gdc-talk.jpg
new file mode 100644
index 000000000..c6cab0419
Binary files /dev/null and b/content/news/026/gdc-talk.jpg differ
diff --git a/content/news/026/godot-rust.png b/content/news/026/godot-rust.png
new file mode 100644
index 000000000..01e8c5edb
Binary files /dev/null and b/content/news/026/godot-rust.png differ
diff --git a/content/news/026/graphics-meetup.png b/content/news/026/graphics-meetup.png
new file mode 100644
index 000000000..419fa74a4
Binary files /dev/null and b/content/news/026/graphics-meetup.png differ
diff --git a/content/news/026/hho_pax.jpg b/content/news/026/hho_pax.jpg
new file mode 100644
index 000000000..c52ea7f52
Binary files /dev/null and b/content/news/026/hho_pax.jpg differ
diff --git a/content/news/026/idu.jpg b/content/news/026/idu.jpg
new file mode 100644
index 000000000..6d3c93062
Binary files /dev/null and b/content/news/026/idu.jpg differ
diff --git a/content/news/026/index.md b/content/news/026/index.md
new file mode 100644
index 000000000..6d2d73dca
--- /dev/null
+++ b/content/news/026/index.md
@@ -0,0 +1,993 @@
++++
+title = "This Month in Rust GameDev #26 - September 2021"
+transparent = true
+date = 2021-10-10
++++
+
+<!-- no toc -->
+
+Welcome to the 26th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Rust Graphics Meetup \#1](#rust-graphics-meetup-1)
+- [Rust GameDev Podcast \#6](#rust-gamedev-podcast-6)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Requests for Contribution](#requests-for-contribution)
+- [Discussions](#discussions)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The ninth Rust Gamedev Meetup happened in September. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/TH3AErcNcTY
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Rust Graphics Meetup \#1
+
+![logo](graphics-meetup.png)
+
+The Rust Graphics Meetup is an online gathering where rustaceans share
+technical details of their work related to graphics and compute,
+not affiliated to any particular stack.
+The pilot edition has happened on Oct 2nd! Check out the talks:
+
+- [gfx-rs Lessons Learned][rgm1-video] - [@kvark], [slides][rgm1-slides].
+- [rend3 Architecture: Efficient, Customizable Rendering][rgm2-video] -
+  [@cwfitzgerald], [slides][rgm2-slides].
+- [Blub - Interactive GPU Fluid Solver][rgm3-video] - [@wumpf], [slides][rgm3-slides].
+
+Learn more at the [gfx meetup repo].
+Thanks everyone for tuning in and helping to make this happen!
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/q08byh/videos_from_rust_graphics_meetup_1),
+[Twitter](https://twitter.com/rust_gamedev/status/1444326130035666953)_
+
+[rgm1-video]: https://youtube.com/watch?v=m0JgF5Wb-dA
+[rgm1-slides]: https://github.com/gfx-rs/meetup/blob/main/Meeting01/GfxLessonsLearned.pdf
+[rgm2-video]: https://youtube.com/watch?v=F0wGz5UJTrY
+[rgm2-slides]: https://github.com/gfx-rs/meetup/blob/main/Meeting01/rend3s_Architecture_-_Efficient_Customizable_Rendering.pdf
+[rgm3-video]: https://youtube.com/watch?v=Yzr9va5UtiE
+[rgm3-slides]: https://github.com/gfx-rs/meetup/blob/main/Meeting01/Blub_-_Quick_tour_through_a_GPU_fluid_solver.pdf
+[gfx meetup repo]: https://github.com/gfx-rs/meetup
+[@kvark]: https://github.com/kvark
+[@cwfitzgerald]: https://github.com/cwfitzgerald
+[@wumpf]: https://github.com/wumpf
+
+## [Rust GameDev Podcast #6][podcast-6]
+
+![text logo](podcast.jpeg)
+
+[The sixth episode][podcast-6] is an interview with Remco and Basz, creators of
+[Mun][mun]. Programming language creation is discussed, along with challenges
+and what future developments are incoming from the [Mun project][mun].
+
+Listen and Subscribe from the following platforms:
+[Rust GameDev Podcast (simplecast)][gamedev-podcast-site],
+[Apple Podcasts][gamedev-podcast-apple],
+[Spotify][gamedev-podcast-spotify],
+[RSS Feed][gamedev-podcast-rss],
+[Google Podcasts][gamedev-podcast-google].
+
+[podcast-6]: https://rustgamedev.com/episodes/interview-with-remco-and-basz
+[mun]: https://mun-lang.org/
+[gamedev-podcast-site]: https://rustgamedev.com/
+[gamedev-podcast-apple]: https://podcasts.apple.com/gb/podcast/rust-game-dev/id1526304768
+[gamedev-podcast-spotify]: https://open.spotify.com/show/7HRfGnTcXkLkQd9fxJbDGj
+[gamedev-podcast-rss]: https://feeds.simplecast.com/C6NQglnL
+[gamedev-podcast-google]: https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9DNk5RZ2xuTA
+
+## Game Updates
+
+### [BITGUN][bitgun-steam]
+
+[![Gameplay screenshot with lots of zombies and a zombie boss](bitgun.jpeg)][bitgun-steam]
+
+BITGUN ([Steam][bitgun-steam], [Twitter][bitgun-twitter],
+[Discord][bitgun-discord]) by [@LogLogGames][bitgun-twitter] is an action
+roguelike zombie shooter with lots of blood and guns, similar to games like
+Hotline Miami, Nuclear Throne, and Heat Signature. The game is built using Godot
+and Rust (via [godot-rust][bitgun-godot-rust]).
+
+They recently re-worked the in-game UI using [egui][bitgun-egui] with
+[godot-egui][bitgun-godot-egui], allowing much easier custom widgets such as
+[drag & drop on items between inventory slots][bitgun-inventory].
+
+_Discussions: [Twitter][bitgun-inventory]_
+
+[bitgun-steam]: https://store.steampowered.com/app/1673940/BITGUN/
+[bitgun-twitter]: https://twitter.com/logloggames
+[bitgun-discord]: https://discord.gg/XrGZQkq
+[bitgun-godot-rust]: https://godot-rust.github.io/
+[bitgun-egui]: https://github.com/emilk/egui
+[bitgun-godot-egui]: https://github.com/setzer22/godot-egui
+[bitgun-inventory]: https://twitter.com/LogLogGames/status/1444072221681635333
+
+### [Weegames][weegames-itch]
+
+![Handful of minigames including hedgehogs and raspberries](weegames.jpg)
+
+[Weegames][weegames-itch] is a fast-paced minigame collection.
+The Windows version of the game has been rewritten to use Macroquad,
+so now the web and downloadable versions of the game share the same codebase.
+Development for the web version has moved to the
+[Weegames GitHub][weegames-github] repository.
+
+[weegames-itch]: https://yeahross.itch.io/weegames
+[weegames-github]: https://github.com/yeahross0/weegames
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="An odd structure in the woods"
+    src="veloren.jpg"
+    caption="An odd structure in the woods") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In September, Veloren hosted its largest release party ever! At peak, 181 players
+were playing on the server together. You can read about all the changes to 0.11
+in [the release blog][veloren-011-release-blog], and be sure to watch the
+[release trailer][veloren-011-trailer]! During the release party, several devs
+spoke about the changes, which you can watch [here][veloren-011-dev-chats]. This
+release party was the first one to handle the high player load with no issues,
+and give hope for much larger servers in the future.
+
+Shaderc was replaced with Naga early on in the month. This was the result of
+over a year of work. Hitboxes are in the process of being overhauled to handle
+non-cylindrical targets better. Improvements were made to how the cursor selects
+objects in game. As always, lots of experimental work is being done to the
+economic system. Cultist raiders were added, which means that raiding parties
+will now attack nearby settlements. This is a great example of how the realtime
+simulation is starting to become more visible to players.
+
+September's full weekly devlogs: "This Week In Veloren...":
+[#136][veloren-136],
+[#137][veloren-137],
+[#138][veloren-138],
+[#139][veloren-139].
+
+[veloren]: https://veloren.net
+[veloren-136]: https://veloren.net/devblog-136
+[veloren-137]: https://veloren.net/devblog-137
+[veloren-138]: https://veloren.net/devblog-138
+[veloren-139]: https://veloren.net/devblog-139
+[veloren-011-trailer]: https://www.youtube.com/watch?v=l1oOjvaWJlw
+[veloren-011-dev-chats]:https://www.youtube.com/watch?v=J5Xz-vbE27Q
+[veloren-011-release-blog]: https://veloren.net/release-0-11/
+
+### [Harvest Hero Origins][hho] @ PAX West 2021
+
+{{ image_figure(
+    alt="hho @ pax"
+    src="hho_pax.jpg"
+    caption="Gemdrop Games booth at PAX West 2021") }}
+
+[Harvest Hero Origins][hho]
+([Discord](https://discord.gg/CJRbxQn3d9),
+[Twitter](https://twitter.com/GemdropGames))
+is an arcade wave defense game by [Gemdrop Games][gemdrop],
+built in Rust on top of [Emerald].
+
+Gemdrop Games recently took Harvest Hero Origins to [PAX West 2021][hho_pax]
+and had a very positive response from most of the players!
+Being able to watch people play the game was extremely valuable,
+the developers were able to see pain points in UI/UX design
+and can now fix them without worry.
+They were also able to see what players find fun about controlling each hero,
+which helps with the next hero planning in the full release of the game.
+
+Harvest Hero Origins is still planned to release by the end of 2021,
+please wishlist it on [Steam][hho]!
+
+[Emerald]: https://github.com/Bombfuse/emerald
+[gemdrop]: https://twitter.com/GemdropGames
+[hho]: https://store.steampowered.com/app/1651500/Harvest_Hero_Origins
+[hho_pax]: https://twitter.com/GemdropGames/status/1433819047481659394
+
+### Molecoole
+
+![Connecting to different atoms](molecoole_first.gif)
+
+Molecoole is a topdown action roguelite where you connect with different atoms
+to create the strongest Molecoole to defeat the baddies! Molecoole was created
+by two brothers: [Márton] and [Dániel].
+
+In Molecoole the strongest focus is about making different combos by connecting
+atoms. The original version was made in Unity for a game jam, but they decided
+to make an actual game out of it using the Bevy engine. It currently includes
+their own implementation for 2D animation, collision detection, and particles.
+In September, one of the main development areas was making the game nicer to
+play, so they introduced the [ezing] crate and also implemented slowing the
+[game time]. They are using the [LDtk] editor to make the level sections for the
+procedural generation.
+
+[Márton]: https://twitter.com/kiss_mrton
+[Dániel]: https://twitter.com/FrenetiqDan
+[ezing]: https://github.com/michaelfairley/ezing
+[game time]: https://twitter.com/kiss_mrton/status/1434189320865341444
+[LDtk]: https://ldtk.io
+
+### [Circle Race]
+
+![circle race](circle-race.jpg)
+
+Circle Race was made by [@kuviman] for [TriJam 135], where you needed to create
+a game in three hours. The theme was "Circles". You are a circle, connected with
+two other "thruster" circles. You play inside a circle, consisting of "tire"
+circles. Circle around it to find your best circle time!
+
+Made using [@kuviman]'s own engine [geng].
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/phyn7z/circle_race_game_made_in_3_hours_for_trijam/)_
+
+[Circle Race]: https://kuviman.itch.io/circle-race
+[@kuviman]: https://github.com/kuviman
+[TriJam 135]: https://itch.io/jam/trijam-135
+[geng]: https://github.com/kuviman/geng/
+
+### [Monke Pizza]
+
+![monke pizza](monke-pizza.jpg)
+
+Game made by [@kuviman] for [VimJam 2]. The theme for this jam was "Boss" and
+the limitation was "On The Edge".
+
+Monke Pizza is an online multiplayer monke pizza restaurant simulator. You are
+always on the edge of being fired. That is *if* you work here. Otherwise, you are
+on the edge of being hired. Because that is how BOSS is bossing.
+
+Made using [@kuviman]'s own engine [geng].
+
+[Monke Pizza]: https://kuviman.itch.io/monke-pizza
+[VimJam 2]: https://itch.io/jam/vimjam2
+
+### Idu
+
+![idu's titlescreen](idu.jpg)
+
+Idu ([Discord][idu-discord]) by [@logicsoup] and [@epcc10]
+is an upcoming game centered around growing realistic plants.
+
+In September, the project previously codenamed "garden" has been renamed to
+"idu"! In Idu, every plant is continuously formed by the simulation. There are
+unique responses from a plant's surroundings and your care. Simulated leaves and
+shoots grow into plants with a mind of their own. Here is the changelog of Demo Version
+4:
+
+- Fixed freezing when help menu was displayed
+- Added support for all older Ubuntu versions from 16.04
+- Fixed crashing when roots extended over the world border
+- Pressing ESC in menus acts as a back button
+- Fixed the issue where pruning didn't work on the first day after loading the game
+- Fixed the game choosing integrated GPU even when a discrete one was available
+
+A playable alpha demo has been released and is freely available
+at [Idu's Discord server's #demo-download channel][idu-discord]!
+
+[@logicsoup]: https://twitter.com/logicsoup
+[@epcc10]: https://twitter.com/epcc10
+[idu-discord]: https://discord.gg/PR3GgYYkym
+
+### [Antorum Online]
+
+{{ image_figure(
+    alt="Some players fishing at the beach"
+    src="antorum.jpg"
+    caption="It's a good day for fishing...") }}
+
+[Antorum Online] is a micro-multiplayer online role-playing game by [@dooskington].
+The game server is written in Rust, and the official client is being developed
+in Unity.
+
+A few new features and lots of fixes were released to players this month, including
+item enchantments and the mining skill! Crafting has been expanded as well, and
+there are a ton of new monsters to fight and gear pieces to create.
+
+- [#36: Item Enchantments](https://ratwizard.dev/dev-log/antorum/36)
+- [#37: Audio Sources And Other Stuff](https://ratwizard.dev/dev-log/antorum/37)
+- [#38: Mining](https://ratwizard.dev/dev-log/antorum/38)
+
+[Antorum Online]: https://ratwizard.dev/dev-log/antorum
+[@dooskington]: https://twitter.com/dooskington
+
+### [rpg-cli] v1.0
+
+![agent stats and a fight with a spider in ~/dev/facundoolano](rpg-cli.png)
+
+[rpg-cli] by [@facundoolano] is a minimalist computer RPG written in Rust.
+Its command-line interface can be used as a cd replacement
+where you randomly encounter enemies as you change directories.
+
+This month, the v1.0 version was released.
+Some of the [updates][rpg-cli-releases]:
+
+- New magic rings.
+- A bunch of new quests including ring-related ones.
+- Stat increasing stones.
+- Sorcerer enemy class.
+
+[rpg-cli]: https://github.com/facundoolano/rpg-cli
+[rpg-cli-releases]: https://github.com/facundoolano/rpg-cli/releases
+[@facundoolano]: https://github.com/facundoolano
+
+## Engine Updates
+
+### [good-web-game]
+
+![supported platforms](supported_platforms.svg)
+
+[good-web-game] has been released on crates.io, together with [ggez] 0.6.1!
+ggez is a lightweight cross-platform game framework for making 2D games
+with minimum friction, with an API inspired by Love2D. good-web-game is a
+subset of ggez, which is based upon [miniquad] and can therefore run natively
+on the web, mobile and of course desktop as well.
+
+good-web-game was originally created to run [Zemeroth] on the web. However,
+as Zemeroth switched from using ggez to [macroquad] the project was
+discontinued, until recently. In search of [a new graphics backend for ggez]
+the ggez team now picked up development again and released a massive update,
+updating good-web-game for compatability to ggez 0.6, expanding its
+functionality.
+
+With only [a single change in boilerplate code] many ggez 0.6 games can now be
+directly ported to good-web-game. Yet, it's no drop in replacement for ggez
+as [several key differences remain].
+
+[good-web-game]: https://github.com/ggez/good-web-game
+[ggez]: https://github.com/ggez/ggez
+[miniquad]: https://github.com/not-fl3/miniquad
+[Zemeroth]: https://ozkriff.itch.io/zemeroth
+[macroquad]: https://github.com/not-fl3/macroquad/
+[a new graphics backend for ggez]: https://github.com/ggez/ggez/issues/962
+[a single change in boilerplate code]: https://github.com/PSteinhaus/PSteinhaus.github.io/blob/main/ggez/web-examples/README.md#ggez-animation-example
+[several key differences remain]: https://github.com/ggez/good-web-game#differences
+
+### [godot-rust](https://github.com/godot-rust/godot-rust)
+
+![godot-rust logo](godot-rust.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+In the last month, a lot of documentation has been added to the book. The new
+entries in [FAQ][gd-faq], [Recipes][gd-recipes] and [Game Architecture][gd-arch]
+don't focus on specific APIs, but put them into a bigger context and highlight
+typical challenges encountered in practice.
+
+Besides smaller bugfixes, the library itself added support for `serde`
+serialization of core types ([#743][gd-743], thanks to Waridley).
+
+In terms of automation and tooling, September was a very productive month:
+
+- Translation of Godot's documentation based on `[bbcode]` to RustDoc with
+  intra-doc links, making Godot APIs much more readable and discoverable.
+
+- Refactoring of GitHub Actions CI, allowing quick and precise feedback for
+  contributors.
+
+- Automation of latest documentation, now hosted under
+  [godot-rust.github.io/docs][gd-docs].
+
+As the godot-rust community keeps growing, the project can now be found
+[on Twitter][gd-twitter] with the GodotRust handle.
+
+[gd-faq]: https://godot-rust.github.io/book/faq.html
+[gd-recipes]: https://godot-rust.github.io/book/recipes.html
+[gd-arch]: https://godot-rust.github.io/book/gdnative-overview/architecture.html
+[gd-743]: https://github.com/godot-rust/godot-rust/pull/743
+[gd-docs]: https://godot-rust.github.io/docs
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+
+### [Emerald]
+
+{{ image_figure(
+    alt="hotreload"
+    src="emd_texture_hotreload.gif"
+    caption="Built in texture hot reloading, just call `emd.loader().hotreload()`") }}
+
+[Emerald] by [@bombfuse][bombfuse_twi]
+is a 2D game engine focused on being super portable and easy-to-use.
+
+Currently supported platforms are:
+Windows, Linux (WIP gamepad support), macOS (WIP gamepad support),
+Web, Android (WIP audio, gamepad Support),
+[GameShell](http://imgur.com/a/8cWxOPs),
+and even [WearOS](https://twitter.com/bombfuse_dev/status/1444100458260299778)!
+
+Recently added features include:
+
+- Texture hot reloading (sound hot reloading is coming soon!).
+- Cross-platform file saving/loading.
+  This is essential for games, basically allows the user to save
+  their files to the platform specific save directory.
+
+[Emerald] has slowly been growing, both in contributor size and feature sets
+recently. If any of this interests you and you'd like to contribute,
+[feel free to grab a task](https://github.com/Bombfuse/emerald/issues),
+fork and PR!
+
+[Emerald]: https://github.com/Bombfuse/emerald
+[bombfuse_twi]: https://twitter.com/bombfuse_dev
+
+### [Starframe]
+
+{{ image_figure(
+    alt="physically-connected groups of primitives are framed with rectangles"
+    src="starframe-islands.jpeg"
+    caption='Grouping bodies into disjoint "islands"') }}
+
+[Starframe] by [@molentum] is a work-in-progress game engine for physics-y
+sidescrolling 2D games.
+
+This month, a lot of work was done on optimizing the physics engine.
+Most importantly, [spatial partitioning was added][sf-grid-tweet] to speed up
+collision detection. Also notably, [a graph algorithm was
+implemented][sf-island-tweet] to divide the world into disjoint islands,
+enabling some parallelism and skipping of computations.
+
+Starframe's physics is now very close to game-ready, and it no longer makes
+sense to work on the engine without a concrete project to use it.
+Thus, work has begun on a platformer based around connecting things with ropes.
+More details to be shown soonish!
+
+[Starframe]: https://github.com/m0lentum/starframe/
+[@molentum]: https://twitter.com/molentum_
+[sf-grid-tweet]: https://twitter.com/molentum_/status/1432441648890449920
+[sf-island-tweet]: https://twitter.com/molentum_/status/1438877808412008450
+
+### [Arcana]
+
+{{ image_figure(
+    alt="two synchronized views on tanks players-controlled tanks shooting each other
+"
+    src="arcana-tanks-multiplayer.gif"
+    caption="Two clients connected to the same server") }}
+
+[Arcana] is ECS based game engine focused on simplicity and performance.
+
+It recently got huge progress towards multiplayer support.
+Traditional client-server systems were added and used in the ["Tanks" example][arcana-tanks].
+
+Clients send only command queue to the server and server sends game world updates
+to the clients. Engine supports multiple players per client.
+For example, players may be added for each active input device.
+
+To allow wide variety of genres player is not attached to one specific entity
+and may control many.
+In RTS player may control all their units and will send commands for each one.
+
+Gameplay system that consumes commands doesn't even need to be aware of netcode.
+Either way, it just drains command queue of an entity and utilizes them.
+That system must not be run on clients at all.
+
+[Arcana] is very early work-in-progress and may not always work
+out-of-the-box atm, but stability improvements are expected next month.
+
+[Arcana]: https://github.com/zakarumych/arcana
+[arcana-tanks]: https://github.com/zakarumych/arcana/tree/master/examples/tanks
+
+### [rg3d] v0.23
+
+{{ image_figure(
+    alt="rg3d 0.23 feature highlights video"
+    src="rg3d_video.jpg"
+    caption="A feature highlights [video](https://youtube.com/watch?v=3tOdwmRWLKw)",
+    link="https://youtube.com/watch?v=3tOdwmRWLKw") }}
+
+[rg3d] ([Discord][rg3d_discord], [Twitter][rg3d_twitter], [Patreon][rg3d_patreon])
+is a game engine that aims to be easy to use and provide a large
+set of out-of-the-box features.
+This month [v0.23 was released][rg3d_0_23_post]. Some of the updates:
+
+- Physically based rendering (PBR) with metallic workflow.
+- High dynamic range (HDR) rendering pipeline & textures.
+- Custom shaders and materials.
+- Emission maps - allows you to define glowing parts using emission map.
+- Gamma correction, manual/auto exposure, and color grading.
+- Lots of the editor's improvements: material editor,
+  unified material pipeline for terrains, improved inspector, etc.
+
+Check out the [blog post][rg3d_0_23_post] or
+the [feature highlights video][rg3d_0_23_video] for more info.
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryNStepanov
+[rg3d_patreon]: https://www.patreon.com/mrdimas
+[rg3d_0_23_post]: https://rg3d.rs/general/2021/09/13/0.23-feature-highlights.html
+[rg3d_0_23_video]: https://youtube.com/watch?v=3tOdwmRWLKw
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/pnhbe4/media_rg3d_023)_
+
+### [Rust RPG Toolkit][rpg_rk]
+
+{{ image_figure(
+    alt="A dialogue window"
+    src="capstone.png"
+    caption="[Capstone](https://www.reddit.com/r/rust_gamedev/comments/paz35s/capstone) - a WIP game that uses Rust RPG Toolkit") }}
+
+[Rust RPG Toolkit][rpg_rk] by [@olefasting] is an engine for creating
+highly customizable and user modable action 2D action RPG's using Rust amd JSON.
+
+The project started out as a part of the [Capstone] game but was separated
+as it grew in scope.
+It uses JSON files for most of its game data and resources specification
+so that games can be created with very little interaction with the Rust code.
+This has the benefit of making the end product very easy to modify,
+both for non-developers involved in the development process, and by end users.
+Modification can be done either by modifying a game's data files directly,
+or by creating user modules, which are supported out-of-the-box.
+
+Note that this is in early and very heavy development: the API is subject to
+constant change, as it has newly transitioned from being a game project
+to a library.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/pcrddz/rpg_toolkit)_
+
+[rpg_rk]: https://github.com/olefasting/rust_rpg_toolkit
+[@olefasting]: https://github.com/olefasting
+[Capstone]: https://www.reddit.com/r/rust_gamedev/comments/paz35s/capstone
+
+## Learning Material Updates
+
+### GDC: Rust for Game Tooling by [Dan Olson][dan-olson-twitter]
+
+![Title card](gdc-talk.jpg)
+
+[Dan Olson][dan-olson-twitter] gave a talk at the Game Developers Conference in
+July about using Rust for game tooling. The talk describes how Rust is being
+integrated at Treyarch. Dan gives a "sales pitch" about several Rust benefits,
+and goes over several case studies about where it is used. It makes appearances
+in the Treyarch image packer, and is used in 3 major tools, and around 20
+smaller one-off tools. Around 120k lines of Rust code have been written for the
+projects.
+
+If you have a GDC Vault account, you can watch [the video][gdc-vault-video].
+If you don't, you can still read [the slides][dan-olson-slides].
+
+[dan-olson-twitter]: https://twitter.com/olson_dan/status/1438600242962698256
+[gdc-vault-video]: https://gdcvault.com/play/1027315
+[dan-olson-slides]: https://research.activision.com/publications/2021/09/the-rust-programming-language-for-game-tooling
+
+### [Learn Wgpu][learn-wgpu] Updated: No More Swap Chains!
+
+As part of the update to 0.10, the wgpu team removed the `SwapChain` from the
+API. The `Surface` will now be used to retrieve textures to render to wrapped
+in `SurfaceTexture`s. You configure the `Surface` in a similar way to how you
+would configure the `SwapChain`, except the struct is now called
+`SurfaceConfiguration` instead of `SwapChainDescriptor`.
+
+If you want to know more, you can check [the tutorial's news page][learn-wgpu-news].
+
+[learn-wgpu]: https://sotrh.github.io/learn-wgpu
+[learn-wgpu-news]: https://sotrh.github.io/learn-wgpu/news
+
+## Tooling Updates
+
+### [Borderlands 3 Save Editor][borderlands-save-github]
+
+![borderlands save editor](borderlands-save.png)
+
+The [Borderlands 3 Save Editor][borderlands-save-github] by [ZakisM]
+is a tool to help you modify your Borderlands 3 Saves and Profiles
+written using [Iced]. Currently, it runs on Windows, Mac OS and Linux.
+It supports modifying PC saves as well as decrypted PS4 saves
+(and converting between them).
+
+[ZakisM]: https://github.com/ZakisM
+[borderlands-save-github]: https://github.com/ZakisM/bl3_save_edit
+[Iced]: https://github.com/iced-rs/iced
+
+## Library Updates
+
+### [wgpu]
+
+{{ image_figure(
+    alt="Deno with wgpu crown"
+    src="deno-wgpu.png"
+    caption="deno-wgpu") }}
+
+[wgpu] is a cross-platform, safe, pure-rust graphics API that runs natively
+on Vulkan, Metal, D3D12, D3D11, and OpenGLES; and on top of WebGPU on wasm.
+
+wgpu has set up the infrastructure to run WebGPU proper tests on its CI,
+via [Deno]. This will ensure correctness down the road when we reach a
+decent level of coverage. Read more on [gfx-rs blog].
+
+Aside from that, wgpu team has been pumping out patches. In fact, wgpu-0.10 is
+easily the most patched release of all!
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ppgb2l/wgpu_alliance_with_deno),
+[Twitter](https://twitter.com/deno_land/status/1438573126670028801)_
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[Deno]: https://github.com/denoland/deno
+[gfx-rs blog]: https://gfx-rs.github.io/2021/09/16/deno-webgpu.html
+
+### [Matchbox]
+
+![matchbox demo screenshot: Waiting for 3 more players](matchbox.png)
+
+Matchbox by [@jkhelsing] is a new peer-to-peer networking project for
+establishing unreliable, unordered connections between peers on the internet.
+The goal is to enable low-latency multiplayer games written in Rust WASM.
+
+Matchbox consists of:
+
+- A tiny signaling server, [`matchbox_server`], which acts as a rendezvous
+  point. It helps peers discover each other and deal with NAT traversal in order
+  to establish more direct ways of communication.
+- A crate, [`matchbox_socket`], which handles connecting to a signalling server
+  and establishing a WebRTC data channel between each connected peer.
+- A [demo/template project][matchbox_demo] using [Bevy](https://bevyengine.org)
+  and [GGRS] to implement a web game with peer-to-peer rollback netcode. A live
+  version is hosted [here][helsing_box_game].
+
+More info is available in the [repository][Matchbox] and
+[introductory blog post][matchbox_intro].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/pmsynh/introducing_matchbox_painless_peertopeer_webrtc),
+[twitter](https://twitter.com/jkhelsing/status/1437044006068830215)_
+
+[Matchbox]: https://github.com/johanhelsing/matchbox
+[matchbox_intro]: https://johanhelsing.studio/posts/introducing-matchbox
+[`matchbox_socket`]: https://crates.io/crates/matchbox_socket
+[`matchbox_server`]: https://crates.io/crates/matchbox_server
+[matchbox_demo]: https://github.com/johanhelsing/matchbox/tree/main/matchbox_demo
+[helsing_box_game]: https://helsing.studio/box_game
+[@jkhelsing]: https://twitter.com/jkhelsing
+[GGRS]: https://gschup.github.io/ggrs
+
+### [Sparsey]
+
+[Sparsey] by [@LechintanTudor] is a new sparse set-based Entity Component System
+(ECS) with component storage grouping, granular component change detection,
+fallible systems and beautiful syntax.
+
+The goal of [Sparsey] is to provide a sparse set-based ECS which fully takes
+advantage of its core data structure. An example of this is component storage
+grouping, a feature which allows getting the best performance possible when
+iterating over queries that match certain patterns described by the user, at
+the cost of a performance penalty when inserting or removing components from
+these storages.
+
+To get started with [Sparsey], check out the [Sparsey Cheat Sheet] and the
+[examples on GitHub]!
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+[Sparsey Cheat Sheet]: https://github.com/LechintanTudor/sparsey/blob/master/guides/cheat_sheet.md
+[examples on GitHub]: https://github.com/LechintanTudor/sparsey/tree/master/examples
+
+### [bevy_verlet]
+
+![bevy_verlet](bevy_verlet.gif)
+
+[bevy_verlet] is a lib for projects using [Bevy Engine][bv_bevy]
+providing a plugin to use [verlet Integration][bv_wikipedia]
+physics. Very useful for Cloth simulation and joints, and less expensive than
+complex physics engine, it is a nice addition to 2D or 3D projects. Making good
+use of the Entity-Component-System architecture of the bevy engine, any entity
+can become a `VerletPoint` and have physics applied to it.
+
+The crate also provides *sticks* which constrains the points in order to create
+strings or cloth. With its modularity, you may customize the physics precision
+(iterations), the gravity, and the physics time step to use.
+
+Not yet available on crates.io, the lib will be released after a few missing
+features are provided:
+
+- Primitive collision
+- Object batching (optimization)
+- Global documentation
+
+You may contact the author on Twitter [@ManevilleF][ManevilleF] or join the
+[discussion][bv_discussion].
+
+[bevy_verlet]: https://github.com/ManevilleF/bevy_verlet
+[bv_discussion]: https://twitter.com/ManevilleF/status/1437350669858611202?s=20
+[ManevilleF]: https://twitter.com/ManevilleF
+[bv_bevy]: https://bevyengine.org/
+[bv_wikipedia]: https://en.wikipedia.org/wiki/Verlet_integration
+
+### [hecs]
+
+[hecs] is a fast, lightweight, and unopinionated archetypal ECS library.
+
+Version 0.6 introduces `PreparedQuery`, allowing query set-up cost to be
+amortized across multiple invocations. `EntityRef`'s API was expanded to include
+a single-entity `query` method, and now exposes the referenced entity's
+handle. Finally, `World::spawn_batch` and `reserve` were optimized for better
+performance when called repeatedly.
+
+[hecs]: https://github.com/Ralith/hecs
+
+### [ktx2][ktx2-github]
+
+A revamped and refactored version of @F3kilo's ktx2-reader,
+this serves as a parsing library for the texture container format
+of ktx2. This format allows you to store textures in formats that
+GPU apis directly accept, without decoding costs. For more information,
+[read the docs][ktx2-docs].
+
+ktx2 writing support will come a future release.
+
+[ktx2-github]: https://github.com/BVE-Reborn/ktx2
+[ktx2-docs]: https://docs.rs/ktx2
+
+### [rend3][rend3-github]
+
+{{ image_figure(
+    alt="rend3 sci-fi base scene"
+    src="rend3-scifi.jpg"
+    caption="rend3 rendering a complex scene") }}
+
+rend3 is a new 3D rendering library that focuses on having an easy
+to user interface without sacrificing performance or customizability.
+It comes with PBR materials and render routine out of the box and utilizes
+GPU culling to enable incredible performance with such a simple API.
+
+There're many fun things in the pipeline including a full custom shader
+system, both cpu and gpu side optimization, and more rendering features.
+
+The [v0.1 version][rend3-crates] was published on crates.io
+([docs][rend3-docs] and [examples][rend3-examples]) and v0.2 is going
+to be coming out very soon.
+
+[rend3-docs]: https://docs.rs/rend3
+[rend3-examples]: https://github.com/BVE-Reborn/rend3/tree/v0.1.2/examples
+[rend3-github]: https://github.com/BVE-Reborn/rend3
+[rend3-crates]: https://crates.io/crates/rend3
+
+### [imgui-rs][imgui-rs] v0.8
+
+[imgui-rs][imgui-rs] is the Rust bindings for the Dear ImGui framework,
+allowing users to easily build up complex debug widgets and tools.
+
+In [v0.8.0][v0.8.0], the library's API continued its overhaul to both be more
+similar to the C++ API while feeling like native Rust. Specifically,
+the odious `im_str!` macro was deprecated -- using inline strings directly
+(and anything `AsRef<str>`) simply works. Most functions also make extensive
+use of RAII-style drop tokens to track `begin`/`end` calls.
+Lastly, it was updated to use current Dear ImGui v1.84, and bound to
+the new APIs, including the new Tables API.
+
+[imgui-rs]: https://github.com/imgui-rs/imgui-rs
+[v0.8.0]: https://github.com/imgui-rs/imgui-rs/releases/tag/v0.8.0
+
+### [Emergent AI][emergent-git]
+
+{{ image_figure(
+    alt="Utility AI"
+    src="emergent-ai.gif"
+    caption="Example of game behavior using Utility AI") }}
+
+[Emergent AI][emergent-git] by [@PsichiX][psichix-twitter] is a new crate designed
+to provide modern AI solutions for games written in Rust. Its highly modularized
+and hierarchical architecture allows users to express a wide range of AI behaviors
+complexity, from small scale, to big scale, allowing user to pick proper solution
+to each AI problem using smaller building blocks.
+
+Along with the library, there is an
+["Emergent AI - Smart agents and events for games"][emergent-book] book being
+written with goal to explain in-depth to readers how modern AI systems works and
+showing step by step process of how one could build them on their own.
+
+[psichix-twitter]: https://twitter.com/psichix
+[emergent-git]: https://github.com/PsichiX/emergent/
+[emergent-book]: https://psichix.github.io/emergent/
+
+### [hexagonal_pathfinding_astar]
+
+```txt
+                                        _______
+                                       /   E   \
+                               _______/  (4,3)  \
+                              /       \   W:3   /
+                      _______/  (3,2)  \_______/
+                     /       \   W:1   /
+                    /  (2,2)  \_______/
+                    \   W:3   /
+                     \_______/
+                     /       \
+             _______/  (2,1)  \
+            /       \   W:3   /
+    _______/  (1,0)  \_______/
+   /   S   \   W:4   /
+  /  (0,0)  \_______/
+  \   W:6   /
+   \_______/
+```
+
+[hexagonal_pathfinding_astar] is an implementation of the A-Star pathfinding algorithm
+tailored for traversing a bespoke collection of weighted hexagons.
+It's intended to calculate the most optimal path to a target hexagon where you're
+traversing from the centre of one hexagon to the next along a line orthogonal
+to a hexagon edge.
+Check out the project's [README][hexagonal_pathfinding_astar] for more info.
+
+[hexagonal_pathfinding_astar]: https://github.com/BlondeBurrito/hexagonal_pathfinding_astar
+
+### [pixels] v0.6
+
+![Pixels logo](pixels.png)
+
+[pixels] by [@parasyte] is a tiny hardware-accelerated pixel frame buffer
+based on wgpu. It gives you a pixel buffer and you can poke colors into it
+(on the CPU side). The buffer is uploaded to the GPU as a texture,
+and all scaling and clipping is handled by a default shader.
+For additional control, you can add your own custom shaders for pre- and post-processing.
+
+The v0.6 release adds support for wgpu 0.10 which is a huge improvement.
+The only breaking changes are reexports and an error variant name change.
+In most cases, this upgrade is a drop-in replacement.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/pganne/pixels_060_release_announcement)_
+
+[pixels]: https://github.com/parasyte/pixels
+[@parasyte]: https://github.com/parasyte
+
+### [KAS] GUI v0.10
+
+{{ image_figure(
+    alt="a window with many widgets and tabs"
+    src="kas-demo.gif"
+    caption="Widget gallery demo") }}
+
+[KAS] by [@dhardy] is a general-purpose retained UI toolkit.
+This month v0.10 was released:
+
+- KAS now supports dynamic linking, allowing faster builds.
+  Additionally using a faster linker (lld or mold) allows 6x improvement
+  on re-build speed for the Gallery example.
+- Keyboard navigation has been revised to match standard desktop GUIs.
+- Themes have been improved, with (better) shadows under pop-up menus
+  and (on one theme) under buttons.
+- Crates have been reshuffled so that now (most) users only depend on kas.
+- OpenGL on Linux is supported (mostly thanks to WGPU improvements).
+- KAS-text now exposes its `fontdb::Database`, allowing text in SVGs.
+
+Also, the author notes that this may be the last release of [KAS]
+because of the lack of interest to the project.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/pjlb92/kas_gui_v010)_
+
+[KAS]: https://github.com/kas-gui/kas
+[@dhardy]: https://github.com/dhardy
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+- [rust-gamedev/rust-gamedev.github.io](https://github.com/rust-gamedev/rust-gamedev.github.io):
+  - [#636 "Better solution for hosting images (or the site as a whole)?"](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/636);
+  - [#785 "Discussions section"](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/785).
+- [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
+  - [#90 "Rust on Consoles"](https://github.com/rust-gamedev/wg/issues/90);
+  - [#113 "Rust GameDev Community Assets Store"](https://github.com/rust-gamedev/wg/discussions/113);
+  - [#115 "Official WG meeting"](https://github.com/rust-gamedev/wg/discussions/115).
+
+## Discussions
+
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev):
+  - ["Is WGSL a good choice?"](https://reddit.com/r/rust_gamedev/comments/pvbv50/is_wgsl_a_good_choice).
+  - ["Unity files patent for ECS in game engines that would probably affect
+    many Rust ECS crates, including Bevy's"](https://reddit.com/r/rust/comments/pjtpkj/unity_files_patent_for_ecs).
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [Graphite is looking for contributors][graphite-contribute] to help reach
+  the 0.1 Alpha release and are participating as a [Hacktoberfest] project.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[Hacktoberfest]: https://hacktoberfest.digitalocean.com/
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/q5fjyk/this_month_in_rust_gamedev_26),
+[Twitter](https://twitter.com/rust_gamedev/status/1447294414607556613),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/026/kas-demo.gif b/content/news/026/kas-demo.gif
new file mode 100644
index 000000000..ce4d1ca73
Binary files /dev/null and b/content/news/026/kas-demo.gif differ
diff --git a/content/news/026/matchbox.png b/content/news/026/matchbox.png
new file mode 100644
index 000000000..7b39a0029
Binary files /dev/null and b/content/news/026/matchbox.png differ
diff --git a/content/news/026/molecoole_first.gif b/content/news/026/molecoole_first.gif
new file mode 100644
index 000000000..fbedc8047
Binary files /dev/null and b/content/news/026/molecoole_first.gif differ
diff --git a/content/news/026/monke-pizza.jpg b/content/news/026/monke-pizza.jpg
new file mode 100644
index 000000000..230dece38
Binary files /dev/null and b/content/news/026/monke-pizza.jpg differ
diff --git a/content/news/026/pixels.png b/content/news/026/pixels.png
new file mode 100644
index 000000000..dbd851908
Binary files /dev/null and b/content/news/026/pixels.png differ
diff --git a/content/news/026/podcast.jpeg b/content/news/026/podcast.jpeg
new file mode 100644
index 000000000..0e3134937
Binary files /dev/null and b/content/news/026/podcast.jpeg differ
diff --git a/content/news/026/rend3-scifi.jpg b/content/news/026/rend3-scifi.jpg
new file mode 100644
index 000000000..0f662319e
Binary files /dev/null and b/content/news/026/rend3-scifi.jpg differ
diff --git a/content/news/026/rg3d_video.jpg b/content/news/026/rg3d_video.jpg
new file mode 100644
index 000000000..aab941b02
Binary files /dev/null and b/content/news/026/rg3d_video.jpg differ
diff --git a/content/news/026/rpg-cli.png b/content/news/026/rpg-cli.png
new file mode 100644
index 000000000..0d812fbed
Binary files /dev/null and b/content/news/026/rpg-cli.png differ
diff --git a/content/news/026/starframe-islands.jpeg b/content/news/026/starframe-islands.jpeg
new file mode 100644
index 000000000..ec5d5deb5
Binary files /dev/null and b/content/news/026/starframe-islands.jpeg differ
diff --git a/content/news/026/supported_platforms.svg b/content/news/026/supported_platforms.svg
new file mode 100644
index 000000000..d4b22fb8e
--- /dev/null
+++ b/content/news/026/supported_platforms.svg
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="161.33586mm"
+   height="71.258186mm"
+   viewBox="0 0 161.33585 71.258186"
+   version="1.1"
+   id="svg8"
+   inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)"
+   sodipodi:docname="supported_platforms.svg">
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient1582">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop1578" />
+      <stop
+         style="stop-color:#dbd4d6;stop-opacity:1"
+         offset="1"
+         id="stop1580" />
+    </linearGradient>
+    <inkscape:path-effect
+       effect="fillet_chamfer"
+       id="path-effect1576"
+       is_visible="true"
+       lpeversion="1"
+       satellites_param="F,0,0,1,0,13.49375,0,1 @ F,0,0,1,0,13.49375,0,1 @ F,0,0,1,0,13.49375,0,1 @ F,0,0,1,0,13.49375,0,1"
+       unit="px"
+       method="auto"
+       mode="F"
+       radius="51"
+       chamfer_steps="1"
+       flexible="false"
+       use_knot_distance="true"
+       apply_no_radius="true"
+       apply_with_radius="true"
+       only_selected="false"
+       hide_knots="false" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient979">
+      <stop
+         style="stop-color:#fff2f2;stop-opacity:0.63921571"
+         offset="0"
+         id="stop975" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop977" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient979"
+       id="radialGradient2024"
+       cx="215.31351"
+       cy="351.99017"
+       fx="215.31351"
+       fy="351.99017"
+       r="67.870117"
+       gradientTransform="matrix(5.1674115,0,0,1.200564,-897.3,-60.889673)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient1582"
+       id="linearGradient1584"
+       x1="116.57099"
+       y1="131.5011"
+       x2="122.50213"
+       y2="57.706669"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.82024693"
+     inkscape:cx="370.18759"
+     inkscape:cy="-30.635251"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     inkscape:document-rotation="0"
+     showgrid="false"
+     inkscape:window-width="2560"
+     inkscape:window-height="1361"
+     inkscape:window-x="-9"
+     inkscape:window-y="-9"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     lock-margins="true" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-25.130714,-67.5616)">
+    <path
+       style="fill:url(#linearGradient1584);fill-opacity:1;stroke:none;stroke-width:0.740273;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.862661;paint-order:markers stroke fill"
+       id="rect1574"
+       width="161.33586"
+       height="71.258186"
+       x="25.130714"
+       y="67.5616"
+       sodipodi:type="rect"
+       d="M 38.624464,67.5616 H 172.97283 a 13.49375,13.49375 45 0 1 13.49375,13.49375 l 0,44.27069 a 13.49375,13.49375 135 0 1 -13.49375,13.49375 H 38.624464 a 13.49375,13.49375 45 0 1 -13.49375,-13.49375 l 0,-44.27069 A 13.49375,13.49375 135 0 1 38.624464,67.5616 Z"
+       inkscape:path-effect="#path-effect1576" />
+    <g
+       inkscape:label="Ebene 1"
+       id="layer1-5"
+       transform="translate(4.5369409,-18.701034)"
+       style="stroke:none;stroke-width:0.493889;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+      <flowRoot
+         style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.246308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+         id="flowRoot38"
+         xml:space="preserve"
+         transform="matrix(2.0051674,0,0,2.0051674,42.142186,-378.70454)"><flowRegion
+           id="flowRegion40"
+           style="stroke:none;stroke-width:0.246308;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"><rect
+             y="51.42857"
+             x="261.42856"
+             height="40"
+             width="2.1428571"
+             id="rect42"
+             style="stroke:none;stroke-opacity:1;paint-order:markers stroke fill;stroke-width:0.24630806;stroke-miterlimit:4;stroke-dasharray:none" /></flowRegion><flowPara
+           id="flowPara44" /></flowRoot>
+      <g
+         id="g881-8-1"
+         transform="matrix(0.42949307,0,0,0.42949307,7.9827898,84.125175)"
+         style="stroke:none;stroke-width:1.14993;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+        <g
+           id="g887-1-5"
+           transform="matrix(0.13663542,0,0,0.13663542,72.026645,26.294406)"
+           style="stroke:none;stroke-width:8.41608;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+          <path
+             id="path873-4"
+             style="fill:#322931;fill-opacity:1;stroke:none;stroke-width:2.86488;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.748927;paint-order:markers stroke fill"
+             d="M 147.08984,360.63672 V 496.37695 H 282.83008 V 360.63672 h -43.55274 a 24.385474,25.346212 0 0 1 -24.38281,24.98047 24.385474,25.346212 0 0 1 -24.38281,-24.98047 z"
+             transform="matrix(4.5086137,0,0,4.5086137,-663.17492,-1625.9712)" />
+        </g>
+        <path
+           id="path4634-0-8"
+           style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:192px;line-height:25px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';letter-spacing:0px;word-spacing:0px;mix-blend-mode:normal;fill:url(#radialGradient2024);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.86667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+           d="m 147.08984,360.63672 39.06641,76.1914 h -4.94922 l -0.31641,2.47852 c -1.67041,-2.0045 -3.99131,-3.00586 -6.96289,-3.00586 -2.35616,0 -4.42135,0.60511 -6.19726,1.81836 -1.77592,1.19566 -3.1384,2.90169 -4.08789,5.11719 -0.9495,2.2155 -1.42578,4.76477 -1.42578,7.64844 v 0.3164 c 0,4.46616 1.07358,8.03632 3.21875,10.70899 2.14516,2.65508 4.95795,3.98242 8.43945,3.98242 2.60233,0 4.75731,-0.94086 6.46289,-2.82227 v 0.89649 c 0,4.04415 -1.96954,6.0664 -5.9082,6.0664 -2.70783,0 -4.88819,-0.97599 -6.54102,-2.92773 l -3.71875,5.22265 c 1.03742,1.26601 2.53068,2.29469 4.48242,3.08594 1.96933,0.79125 4.00134,1.1875 6.09375,1.1875 2.91883,0 5.48568,-0.50165 7.70118,-1.5039 2.21549,-0.98467 3.90395,-2.40962 5.06445,-4.27344 1.17808,-1.84626 1.76562,-4.02661 1.76562,-6.54102 v -21.36718 l 12.35743,24.10156 h 7.98437 l 6.21484,-13.41797 h 0.1504 l 5.80664,13.41797 h 7.83789 l 10.55273,-21.09961 c -0.36326,1.52801 -0.54687,3.18316 -0.54687,4.9668 v 0.3164 c 0,4.46616 1.07358,8.03632 3.21875,10.70899 2.14515,2.65508 4.95794,3.98242 8.43945,3.98242 2.60232,0 4.75536,-0.94086 6.46094,-2.82227 v 0.89649 c 0,4.04415 -1.96759,6.0664 -5.90625,6.0664 -2.70783,0 -4.88819,-0.97599 -6.54102,-2.92773 l -3.71875,5.22265 c 1.03742,1.26601 2.53068,2.29469 4.48242,3.08594 1.96933,0.79125 4.00133,1.1875 6.09375,1.1875 2.91883,0 5.48568,-0.50165 7.70117,-1.5039 2.2155,-0.98467 3.90396,-2.40962 5.06446,-4.27344 1.17808,-1.84626 1.76562,-4.02661 1.76562,-6.54102 V 436.82812 H 258.625 l -0.31641,2.47852 c -1.67041,-2.0045 -3.9913,-3.00586 -6.96289,-3.00586 -2.35616,0 -4.42135,0.60511 -6.19726,1.81836 -0.68941,0.46415 -1.316,1.00717 -1.88086,1.625 l 39.5625,-79.10742 H 239.2793 a 24.385474,25.346212 0 0 1 -24.38282,24.97851 24.385474,25.346212 0 0 1 -24.38281,-24.97851 z m 29.10547,82.52148 c 1.899,0 3.281,0.65 4.14258,1.95118 v 12 c -0.87917,1.28358 -2.27873,1.92578 -4.19531,1.92578 -1.5825,0 -2.81224,-0.67734 -3.69141,-2.03125 -0.87916,-1.3715 -1.31836,-3.22588 -1.31836,-5.56446 0,-2.69024 0.447,-4.73982 1.34375,-6.14648 0.89675,-1.42425 2.13625,-2.13477 3.71875,-2.13477 z m 77.41797,0 c 1.89899,0 3.27904,0.65 4.14063,1.95118 v 12 c -0.87916,1.28358 -2.27678,1.92578 -4.19336,1.92578 -1.58251,0 -2.81225,-0.67734 -3.69141,-2.03125 -0.87917,-1.3715 -1.31836,-3.22588 -1.31836,-5.56446 0,-2.69024 0.447,-4.73982 1.34375,-6.14648 0.89674,-1.42425 2.13625,-2.13477 3.71875,-2.13477 z"
+           transform="matrix(0.61603633,0,0,0.61603633,-18.586539,-195.87086)" />
+      </g>
+      <g
+         id="g881-4-0-3"
+         transform="matrix(0.42949307,0,0,0.42949307,7.9826398,84.125174)"
+         style="stroke:none;stroke-width:1.14993;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+        <g
+           id="g887-6-0-6"
+           transform="matrix(0.13663542,0,0,0.13663542,72.026645,26.294406)"
+           style="stroke:none;stroke-width:8.41608;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+      </g>
+      <g
+         id="g881-4-0-3-6"
+         transform="matrix(0.42949307,0,0,0.42949307,61.359942,84.125148)"
+         style="stroke:none;stroke-width:1.14993;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+        <g
+           id="g887-6-0-6-3"
+           transform="matrix(0.13663542,0,0,0.13663542,72.026645,26.294406)"
+           style="stroke:none;stroke-width:8.41608;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+      </g>
+    </g>
+    <g
+       id="g1103"
+       transform="matrix(0.80782299,0,0,0.80782299,114.42047,83.510966)"
+       style="stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+      <g
+         transform="translate(4.9638004,1.1055788)"
+         id="layer2"
+         style="stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+        <rect
+           ry="6.7657094"
+           y="-1.1055788"
+           x="-4.9638004"
+           height="29.104166"
+           width="77.535233"
+           id="rect4647"
+           style="fill:#322931;fill-opacity:1;stroke:none;stroke-width:0.938324;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.748927;paint-order:markers stroke fill" />
+      </g>
+      <g
+         transform="translate(4.9638004,-269.43601)"
+         id="layer1-53"
+         style="stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+        <g
+           id="flowRoot10"
+           style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:0.941176;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+           transform="matrix(0.10303608,0,0,0.10303608,-6.2835754,268.62714)"
+           aria-label="ggez">
+          <path
+             id="path4632"
+             style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:192px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';fill:#ffffff;fill-opacity:0.941176;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 64.441406,132.60352 q 0,-15.375 5.0625,-27.1875 5.0625,-11.812505 14.53125,-18.187505 9.46875,-6.46875 22.031254,-6.46875 15.84375,0 24.75,10.6875 l 1.125,-8.8125 h 28.6875 v 97.593755 q 0,13.40625 -6.28125,23.25 -6.1875,9.9375 -18,15.1875 -11.8125,5.34375 -27.375,5.34375 -11.156254,0 -21.656254,-4.21875 -10.40625,-4.21875 -15.9375,-10.96875 l 13.21875,-18.5625 q 8.8125,10.40625 23.250004,10.40625 21,0 21,-21.5625 v -3.1875 q -9.09375,10.03125 -22.96875,10.03125 -18.562504,0 -30.000004,-14.15625 -11.4375,-14.25 -11.4375,-38.0625 z m 31.6875,1.96875 q 0,12.46875 4.687504,19.78125 4.6875,7.21875 13.125,7.21875 10.21875,0 14.90625,-6.84375 v -42.65625 q -4.59375,-6.9375 -14.71875,-6.9375 -8.4375,0 -13.21875,7.59375 -4.781254,7.5 -4.781254,21.84375 z" />
+          <path
+             id="path4634"
+             style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:192px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';fill:#ffffff;fill-opacity:0.941176;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 175.06641,132.60352 q 0,-15.375 5.0625,-27.1875 5.0625,-11.812505 14.53125,-18.187505 9.46875,-6.46875 22.03125,-6.46875 15.84375,0 24.75,10.6875 l 1.125,-8.8125 h 28.6875 v 97.593755 q 0,13.40625 -6.28125,23.25 -6.1875,9.9375 -18,15.1875 -11.8125,5.34375 -27.375,5.34375 -11.15625,0 -21.65625,-4.21875 -10.40625,-4.21875 -15.9375,-10.96875 l 13.21875,-18.5625 q 8.8125,10.40625 23.25,10.40625 21,0 21,-21.5625 v -3.1875 q -9.09375,10.03125 -22.96875,10.03125 -18.5625,0 -30,-14.15625 -11.4375,-14.25 -11.4375,-38.0625 z m 31.6875,1.96875 q 0,12.46875 4.6875,19.78125 4.6875,7.21875 13.125,7.21875 10.21875,0 14.90625,-6.84375 v -42.65625 q -4.59375,-6.9375 -14.71875,-6.9375 -8.4375,0 -13.21875,7.59375 -4.78125,7.5 -4.78125,21.84375 z" />
+          <path
+             id="path4636"
+             style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:192px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';fill:#ffffff;fill-opacity:0.941176;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 338.47266,185.94727 q -23.34375,0 -37.78125,-13.875 -14.4375,-13.96875 -14.4375,-36.28125 v -2.625 q 0,-15.5625 5.71875,-27.46875 5.8125,-11.906255 16.875,-18.375005 11.0625,-6.5625 26.25,-6.5625 21.375,0 33.75,13.3125 12.375,13.218755 12.375,36.937505 v 12.28125 h -62.8125 q 1.6875,8.53125 7.40625,13.40625 5.71875,4.875 14.8125,4.875 15,0 23.4375,-10.5 l 14.4375,17.0625 q -5.90625,8.15625 -16.78125,13.03125 -10.78125,4.78125 -23.25,4.78125 z m -3.5625,-80.8125 q -13.875,0 -16.5,18.375 h 31.875 v -2.4375 q 0.1875,-7.59375 -3.84375,-11.71875 -4.03125,-4.21875 -11.53125,-4.21875 z" />
+          <path
+             id="path4638"
+             style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:192px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';fill:#ffffff;fill-opacity:0.941176;fill-rule:nonzero;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 431.28516,159.69727 h 46.21875 v 24.375 h -86.15625 v -17.625 l 45,-59.4375 H 393.31641 V 82.634765 h 83.15625 v 17.0625 z" />
+        </g>
+        <flowRoot
+           style="font-style:normal;font-weight:normal;font-size:40px;line-height:25px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+           id="flowRoot38-8"
+           xml:space="preserve"><flowRegion
+             id="flowRegion40-4"
+             style="stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"><rect
+               y="51.42857"
+               x="261.42856"
+               height="40"
+               width="2.1428571"
+               id="rect42-7"
+               style="stroke:none;stroke-opacity:1;paint-order:markers stroke fill;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none" /></flowRegion><flowPara
+             id="flowPara44-9" /></flowRoot>
+        <g
+           transform="matrix(-0.20974254,0.24833364,-0.24833364,-0.20974254,134.95744,329.29254)"
+           id="g4594"
+           style="stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill">
+          <path
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 33.639881,297 c -0.377976,-4.20499 1.196811,-40.90625 3.401785,-43.27827 0.968852,-0.70158 19.153631,-0.50113 19.654761,0 1.670435,1.9377 5.291668,39.21503 4.724704,43.27827 -4.009043,2.37202 -25.910363,1.63703 -27.78125,0 z"
+             id="path46" />
+          <g
+             id="text50"
+             style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:6.61458px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#322931;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             aria-label="S">
+            <path
+               id="path4623"
+               style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-size:22.5778px;font-family:Roboto;-inkscape-font-specification:'Roboto Heavy';fill:#322931;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+               d="m 50.029872,280.35487 q 0,-0.84887 -0.606337,-1.32292 -0.595312,-0.47404 -2.105642,-0.98116 -1.51033,-0.50712 -2.469445,-0.98116 -3.119878,-1.53238 -3.119878,-4.21129 0,-1.33394 0.771701,-2.34817 0.782726,-1.02526 2.204861,-1.5875 1.422136,-0.57327 3.197049,-0.57327 1.730816,0 3.09783,0.61736 1.378038,0.61736 2.138715,1.76389 0.760677,1.13551 0.760677,2.60174 h -3.858507 q 0,-0.98117 -0.606337,-1.52136 -0.595312,-0.54019 -1.620573,-0.54019 -1.036284,0 -1.642621,0.46302 -0.595313,0.452 -0.595313,1.15756 0,0.61736 0.661459,1.12447 0.661458,0.4961 2.326128,1.03629 1.66467,0.52917 2.734028,1.14653 2.601736,1.4993 2.601736,4.13411 0,2.10564 -1.5875,3.30729 -1.5875,1.20165 -4.354601,1.20165 -1.951302,0 -3.538802,-0.69453 -1.576475,-0.70555 -2.38125,-1.91823 -0.79375,-1.2237 -0.79375,-2.8112 h 3.880556 q 0,1.28985 0.661458,1.90721 0.672483,0.60634 2.171788,0.60634 0.959115,0 1.51033,-0.4079 0.56224,-0.41893 0.56224,-1.16858 z" />
+          </g>
+          <path
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+             d="m 37.280768,251.56507 c 2.755353,-0.48581 16.061123,-0.65453 18.919568,0.007 -1.427772,-3.55131 -5.808811,-6.41101 -9.744701,-6.3311 -3.699161,0.0751 -7.784561,2.81715 -9.174867,6.3241 z"
+             id="path52" />
+          <path
+             id="path4543"
+             d="m 42.583118,243.33908 a 1.0512463,1.0512463 0 0 1 -1.051246,1.05125 1.0512463,1.0512463 0 0 1 -1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,1.05125 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+          <path
+             id="path4543-2"
+             d="m 48.357956,235.06029 a 1.0512463,1.0512463 0 0 1 -1.051247,1.05124 1.0512463,1.0512463 0 0 1 -1.051246,-1.05124 1.0512463,1.0512463 0 0 1 1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051247,1.05125 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+          <path
+             id="path4543-7"
+             d="m 53.636528,243.81337 a 1.0512463,1.0512463 0 0 1 -1.051247,1.05125 1.0512463,1.0512463 0 0 1 -1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051247,1.05125 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+          <path
+             id="path4543-27"
+             d="m 47.890228,241.14067 a 1.0512463,1.0512463 0 0 1 -1.051246,1.05125 1.0512463,1.0512463 0 0 1 -1.051247,-1.05125 1.0512463,1.0512463 0 0 1 1.051247,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,1.05125 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+          <path
+             id="path4543-79"
+             d="m 51.899273,238.73524 a 1.0512463,1.0512463 0 0 1 -1.051247,1.05125 1.0512463,1.0512463 0 0 1 -1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,-1.05124 1.0512463,1.0512463 0 0 1 1.051247,1.05124 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+          <path
+             id="path4543-9"
+             d="m 43.07938,238.40115 a 1.0512463,1.0512463 0 0 1 -1.051247,1.05125 1.0512463,1.0512463 0 0 1 -1.051246,-1.05125 1.0512463,1.0512463 0 0 1 1.051246,-1.05124 1.0512463,1.0512463 0 0 1 1.051247,1.05124 z"
+             style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+        </g>
+      </g>
+    </g>
+    <path
+       d="m 142.14982,113.93696 c -0.0691,0 -0.14055,0.003 -0.21373,0.0101 -1.88609,0.14858 -1.3859,2.14491 -1.41446,2.81019 -0.0344,0.4877 -0.13386,0.87189 -0.46896,1.34798 -0.39489,0.46896 -0.94907,1.22706 -1.21189,2.01728 -0.12403,0.37124 -0.18293,0.75142 -0.12806,1.11059 -0.0173,0.0152 -0.0339,0.0303 -0.0495,0.0603 -0.116,0.11957 -0.20035,0.26818 -0.29539,0.37438 -0.0888,0.0887 -0.2164,0.11906 -0.35561,0.17848 -0.13966,0.0608 -0.29361,0.12006 -0.38553,0.30385 -0.0401,0.0839 -0.0608,0.17538 -0.0588,0.26818 0,0.0887 0.012,0.17894 0.0245,0.23917 0.0259,0.17802 0.0517,0.32529 0.0173,0.43281 -0.11066,0.30342 -0.12449,0.51135 -0.0468,0.66262 0.0777,0.14907 0.23871,0.20927 0.41899,0.26817 0.36186,0.0892 0.85223,0.0603 1.2382,0.26727 0.41318,0.20837 0.83261,0.29939 1.16726,0.2097 0.2347,-0.0513 0.43283,-0.20658 0.53902,-0.42166 0.26192,-8.7e-4 0.54882,-0.12007 1.00841,-0.14907 0.3119,-0.0258 0.70233,0.11906 1.15032,0.0887 0.0111,0.0603 0.0281,0.0887 0.051,0.14909 l 0.002,8.7e-4 c 0.17446,0.34713 0.49662,0.50508 0.84065,0.47787 0.34402,-0.0268 0.71035,-0.23915 1.00708,-0.58273 0.28156,-0.34135 0.75096,-0.48369 1.06106,-0.67065 0.15527,-0.0887 0.28068,-0.20927 0.28959,-0.38061 0.0103,-0.17847 -0.0888,-0.36231 -0.31859,-0.61441 v -0.0433 l -0.002,-8.8e-4 c -0.0758,-0.0892 -0.11156,-0.23873 -0.15081,-0.41319 -0.0379,-0.17894 -0.0812,-0.35072 -0.21954,-0.46673 h -8.7e-4 c -0.0264,-0.024 -0.0549,-0.0298 -0.0839,-0.0603 -0.0249,-0.017 -0.0541,-0.0277 -0.0847,-0.0285 0.19232,-0.57026 0.1178,-1.13783 -0.0772,-1.64828 -0.23783,-0.62916 -0.65369,-1.17709 -0.97051,-1.55413 -0.35517,-0.44843 -0.70321,-0.87322 -0.69652,-1.50326 0.0119,-0.96022 0.10576,-2.73657 -1.58133,-2.73922 z m 0.23604,1.51933 h 0.006 c 0.0951,0 0.1767,0.0277 0.26059,0.0883 0.0852,0.0603 0.14724,0.14808 0.19589,0.23781 0.0468,0.11554 0.0705,0.20484 0.0741,0.32307 0,-0.008 0.003,-0.0178 0.003,-0.0263 v 0.0463 c -8.8e-4,-0.003 -0.002,-0.007 -0.002,-0.0101 l -0.002,-0.0101 c -8.7e-4,0.10844 -0.0236,0.21551 -0.067,0.31503 -0.021,0.0559 -0.0531,0.1071 -0.0951,0.14942 -0.013,-0.007 -0.0254,-0.0135 -0.0393,-0.0189 -0.0468,-0.02 -0.0888,-0.0285 -0.12717,-0.0593 -0.0317,-0.0118 -0.0647,-0.0227 -0.0978,-0.0296 0.022,-0.0263 0.0647,-0.0593 0.0812,-0.0883 0.0236,-0.0572 0.0366,-0.11787 0.0393,-0.17938 v -0.008 c 8.7e-4,-0.0602 -0.008,-0.1209 -0.0272,-0.17845 -0.0201,-0.0603 -0.0451,-0.0898 -0.0817,-0.1491 -0.0375,-0.0295 -0.0745,-0.0588 -0.11913,-0.0588 h -0.007 c -0.0415,0 -0.0785,0.0135 -0.1169,0.0588 -0.0424,0.042 -0.0741,0.0924 -0.0915,0.1491 -0.0236,0.0566 -0.0374,0.11787 -0.0402,0.17845 v 0.008 c 8.9e-4,0.0398 0.004,0.0798 0.009,0.11906 -0.0861,-0.0299 -0.19544,-0.0603 -0.27084,-0.0901 -0.004,-0.029 -0.007,-0.0588 -0.008,-0.0887 v -0.008 c -0.004,-0.11786 0.0193,-0.23469 0.067,-0.34311 0.0366,-0.0977 0.10352,-0.18116 0.19186,-0.23783 0.0762,-0.0575 0.16912,-0.0887 0.26506,-0.0887 z m -1.32165,0.0263 h 0.016 c 0.0633,0 0.12048,0.0215 0.17804,0.0603 0.0652,0.0576 0.1178,0.12851 0.15349,0.2075 0.0402,0.0887 0.0629,0.1789 0.0683,0.29761 v 0.002 c 0.004,0.0597 0.003,0.0898 -8.8e-4,0.11874 v 0.0357 c -0.0134,0.003 -0.025,0.008 -0.0371,0.0101 -0.0678,0.0246 -0.12226,0.0603 -0.17535,0.0892 0.005,-0.0398 0.006,-0.08 0.002,-0.11907 v -0.007 c -0.005,-0.0593 -0.0173,-0.0887 -0.0366,-0.14858 -0.0138,-0.0456 -0.0393,-0.0861 -0.0741,-0.11905 -0.0219,-0.02 -0.0513,-0.0303 -0.0817,-0.0285 h -0.009 c -0.0318,0.003 -0.058,0.0184 -0.0831,0.0588 -0.0286,0.0345 -0.0468,0.0762 -0.0535,0.12042 -0.0119,0.0482 -0.0157,0.0977 -0.0103,0.14773 v 0.007 c 0.005,0.0603 0.0165,0.0897 0.0361,0.14909 0.0201,0.0596 0.0433,0.0892 0.0737,0.11955 0.004,0.003 0.009,0.008 0.0152,0.0101 -0.0313,0.0255 -0.0522,0.0312 -0.0785,0.0608 -0.0165,0.0118 -0.0356,0.0268 -0.0585,0.0303 -0.0464,-0.0559 -0.0875,-0.11601 -0.12271,-0.17937 -0.0427,-0.0938 -0.0652,-0.19543 -0.0691,-0.29761 -0.008,-0.10086 0.004,-0.20169 0.0356,-0.29806 0.0246,-0.0878 0.0679,-0.16912 0.12628,-0.23874 0.057,-0.0593 0.11602,-0.0892 0.18651,-0.0892 z m 0.61175,0.76122 c 0.1477,0 0.32662,0.029 0.54213,0.17804 0.13073,0.0892 0.23337,0.12007 0.46986,0.2088 h 8.8e-4 c 0.11377,0.0608 0.18071,0.11874 0.21329,0.17804 v -0.0585 c 0.0326,0.0656 0.0348,0.14184 0.007,0.20974 -0.0549,0.1388 -0.23024,0.28735 -0.47476,0.37615 v 8.7e-4 c -0.11956,0.0602 -0.22355,0.14858 -0.34581,0.20747 -0.12315,0.0603 -0.26237,0.13039 -0.45155,0.11908 -0.0678,0.003 -0.1361,-0.007 -0.1999,-0.0298 -0.0491,-0.0268 -0.0973,-0.0562 -0.14368,-0.0884 -0.087,-0.0603 -0.16197,-0.14806 -0.27308,-0.20748 v -0.002 h -0.002 c -0.17848,-0.10978 -0.27486,-0.22846 -0.3061,-0.31725 -0.0307,-0.11957 -0.002,-0.20927 0.0861,-0.26771 0.0999,-0.0603 0.16956,-0.12093 0.21551,-0.14994 0.0463,-0.033 0.0639,-0.0456 0.0785,-0.0586 h 8.8e-4 v -8.7e-4 c 0.0754,-0.09 0.19455,-0.20926 0.37436,-0.26814 0.062,-0.0169 0.13118,-0.029 0.20793,-0.029 z m 1.24891,0.95621 c 0.16021,0.63228 0.53412,1.55056 0.77463,1.99586 0.12761,0.23828 0.38148,0.74027 0.49171,1.34932 0.0695,-0.002 0.1468,0.008 0.2289,0.0285 0.28824,-0.74561 -0.24363,-1.54698 -0.48593,-1.76963 -0.0986,-0.0898 -0.1035,-0.14942 -0.0549,-0.14942 0.26282,0.23826 0.60907,0.70143 0.73445,1.23017 0.0576,0.2387 0.0709,0.4926 0.009,0.74517 0.0298,0.0118 0.0603,0.0272 0.0915,0.0298 0.46048,0.23825 0.63048,0.41853 0.54883,0.6858 v -0.0193 c -0.0272,-8.8e-4 -0.0534,0 -0.0808,0 h -0.007 c 0.0674,-0.20838 -0.0812,-0.36812 -0.4752,-0.54616 -0.40827,-0.17847 -0.73446,-0.14993 -0.79023,0.20748 -0.004,0.0193 -0.005,0.0295 -0.008,0.0603 -0.0303,0.0101 -0.062,0.0236 -0.0933,0.0285 -0.19187,0.11957 -0.29539,0.29852 -0.35384,0.52964 -0.058,0.23783 -0.0758,0.51581 -0.0915,0.83397 v 8.6e-4 c -0.009,0.1491 -0.0762,0.37394 -0.14234,0.60284 -0.6693,0.47833 -1.5974,0.68627 -2.38673,0.14908 -0.0495,-0.0861 -0.10977,-0.16695 -0.17937,-0.23781 -0.033,-0.0558 -0.0749,-0.10574 -0.12272,-0.14909 0.0812,0 0.15083,-0.0135 0.20749,-0.0299 0.0647,-0.0298 0.11468,-0.0839 0.14011,-0.14906 0.0482,-0.11924 0,-0.31102 -0.15394,-0.51895 -0.15393,-0.20838 -0.4154,-0.44398 -0.79782,-0.67867 -0.2811,-0.17805 -0.43994,-0.38822 -0.51312,-0.6229 -0.0737,-0.23827 -0.0638,-0.48413 -0.007,-0.73402 0.10932,-0.47741 0.38954,-0.94148 0.56846,-1.23285 0.0478,-0.029 0.0165,0.0603 -0.18204,0.43461 -0.1767,0.33511 -0.50911,1.11416 -0.0545,1.71967 0.0169,-0.4413 0.11513,-0.87679 0.28869,-1.28328 0.25167,-0.57024 0.77774,-1.56349 0.81923,-2.35061 0.0215,0.0169 0.0969,0.0603 0.12894,0.09 0.0973,0.0593 0.16956,0.14858 0.26327,0.2075 0.0942,0.0898 0.21284,0.14941 0.39088,0.14941 0.0173,8.8e-4 0.0334,0.003 0.0495,0.003 0.18338,0 0.32528,-0.0597 0.44442,-0.11958 0.12939,-0.0597 0.23246,-0.14908 0.33018,-0.17847 h 0.003 c 0.20838,-0.0602 0.37302,-0.17937 0.46629,-0.31234 z m 0.97541,3.99708 c 0.0165,0.26815 0.15305,0.55554 0.39355,0.61442 0.26236,0.0597 0.63985,-0.14857 0.79915,-0.34136 l 0.0942,-0.003 c 0.14053,-0.003 0.25745,0.005 0.37793,0.11907 l 0.002,8.8e-4 c 0.0928,0.0887 0.1361,0.23692 0.17447,0.39086 0.038,0.17894 0.0687,0.34805 0.18249,0.47566 0.21687,0.23513 0.28781,0.40427 0.28379,0.50866 l 8.9e-4,-0.003 v 0.008 l -8.9e-4,-0.005 c -0.007,0.11687 -0.0825,0.17672 -0.2222,0.26551 -0.28112,0.17892 -0.77907,0.31769 -1.09633,0.70052 -0.27576,0.32885 -0.61175,0.50822 -0.90846,0.53142 -0.29628,0.0236 -0.55196,-0.0892 -0.70233,-0.40067 l -0.003,-8.7e-4 c -0.0937,-0.17895 -0.0534,-0.45737 0.0249,-0.75409 0.0785,-0.29807 0.19097,-0.60014 0.20659,-0.84688 0.0165,-0.3186 0.0339,-0.59568 0.087,-0.80943 0.0535,-0.20748 0.13742,-0.35562 0.28601,-0.43906 l 0.0201,-0.0101 z m -4.82569,0.022 h 0.004 c 0.0236,0 0.0468,0.002 0.07,0.007 0.16778,0.0247 0.31502,0.14857 0.45647,0.33552 l 0.40605,0.74249 8.8e-4,8.9e-4 c 0.10842,0.23781 0.33643,0.47474 0.53052,0.73086 0.19365,0.26682 0.34358,0.50466 0.32529,0.70055 v 0.003 c -0.0255,0.33198 -0.21373,0.51225 -0.50199,0.57739 -0.2878,0.0603 -0.67822,8.7e-4 -1.06865,-0.20703 -0.43193,-0.23917 -0.94506,-0.20928 -1.27481,-0.26863 -0.16465,-0.0295 -0.27263,-0.0897 -0.3226,-0.17892 -0.0495,-0.0889 -0.0505,-0.26817 0.0549,-0.54882 v -8.9e-4 l 8.8e-4,-8.6e-4 c 0.0522,-0.14909 0.0133,-0.336 -0.0119,-0.49932 -0.0246,-0.17892 -0.037,-0.31635 0.0192,-0.41941 0.0715,-0.14909 0.17669,-0.17805 0.30743,-0.23784 0.13162,-0.0603 0.28602,-0.09 0.40872,-0.20926 h 8.8e-4 v -8.8e-4 c 0.11421,-0.11957 0.19857,-0.26819 0.29806,-0.37393 0.0847,-0.0897 0.16955,-0.14992 0.29583,-0.14992 z m 3.19437,-4.04886 c -0.1941,0.0898 -0.42166,0.23872 -0.66394,0.23872 -0.24186,0 -0.43281,-0.11906 -0.5707,-0.20792 -0.0691,-0.0597 -0.12493,-0.11956 -0.16688,-0.14942 -0.0732,-0.0597 -0.0642,-0.14908 -0.033,-0.14908 0.0486,0.007 0.0576,0.0603 0.0888,0.0898 0.0428,0.0295 0.0959,0.0887 0.16107,0.14858 0.12984,0.0892 0.30342,0.20836 0.52028,0.20836 0.2164,0 0.46984,-0.11905 0.62378,-0.20793 0.087,-0.0603 0.19857,-0.14908 0.28915,-0.20838 0.0695,-0.0611 0.0665,-0.11956 0.12449,-0.11956 0.0576,0.007 0.0152,0.0597 -0.0656,0.14857 -0.0808,0.0602 -0.20569,0.14942 -0.30785,0.20882 v -4.3e-4 z m -0.48279,-0.70678 v -0.0101 c -0.003,-0.008 0.006,-0.0188 0.013,-0.0222 0.033,-0.0193 0.0803,-0.0118 0.11601,0.002 0.0281,0 0.0714,0.0299 0.067,0.0603 -0.003,0.022 -0.0379,0.0295 -0.0603,0.0295 -0.0246,0 -0.041,-0.0193 -0.0629,-0.0303 -0.0232,-0.008 -0.0652,-0.003 -0.0727,-0.029 z m -0.24586,0 c -0.009,0.026 -0.0504,0.022 -0.0741,0.0295 -0.0211,0.0118 -0.0384,0.0303 -0.062,0.0303 -0.0227,0 -0.0585,-0.008 -0.0612,-0.0303 -0.004,-0.0295 0.0393,-0.0593 0.067,-0.0593 0.0361,-0.0135 0.082,-0.0209 0.11556,-0.002 0.009,0.003 0.016,0.0135 0.0134,0.0222 v 0.0101 h 8.7e-4 z"
+       id="path1119"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 120.33963,115.47621 4.11678,-0.56959 v 3.99052 h -4.11678 m 4.62303,-4.05428 5.51057,-0.82294 v 4.81346 h -5.51057 m -4.62303,0.50668 h 4.11678 v 3.99053 l -4.11678,-0.57086 m 4.62303,-3.41967 h 5.51057 v 4.81346 l -5.44681,-0.76043"
+       id="path1144"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 152.05926,121.12709 h 0.71874 v -1.87338 c 0,-0.36947 0.24246,-0.63791 0.58885,-0.63791 0.33483,0 0.54266,0.21071 0.54266,0.55131 v 1.95991 h 0.69854 v -1.89066 c 0,-0.36659 0.23669,-0.6206 0.58307,-0.6206 0.35215,0 0.54844,0.2136 0.54844,0.58886 v 1.92243 h 0.71874 v -2.09845 c 0,-0.61194 -0.39545,-1.01894 -0.99876,-1.01894 -0.44164,0 -0.8053,0.2367 -0.95257,0.61482 h -0.0173 c -0.11257,-0.39256 -0.42143,-0.61482 -0.85437,-0.61482 -0.41566,0 -0.73895,0.23381 -0.87174,0.58885 h -0.0144 v -0.53112 h -0.68987 v 3.05969 z m 5.9723,-0.49359 c -0.31175,0 -0.51957,-0.15876 -0.51957,-0.40989 0,-0.24247 0.19917,-0.39834 0.54555,-0.42143 l 0.70719,-0.0433 v 0.23381 c 0,0.36946 -0.32618,0.6408 -0.73317,0.6408 z m -0.21649,0.54266 c 0.39256,0 0.77648,-0.20494 0.95257,-0.53688 h 0.0144 v 0.48782 h 0.69276 v -2.10718 c 0,-0.61483 -0.49359,-1.01605 -1.25273,-1.01605 -0.77936,0 -1.26714,0.40988 -1.29892,0.98139 h 0.66678 c 0.0462,-0.25401 0.26268,-0.41855 0.60328,-0.41855 0.35505,0 0.57153,0.18474 0.57153,0.50514 v 0.21938 l -0.80825,0.0462 c -0.74471,0.0461 -1.16325,0.37236 -1.16325,0.91503 0,0.55132 0.43009,0.92368 1.02181,0.92368 z m 4.81482,-2.01769 c -0.0491,-0.64369 -0.54844,-1.1546 -1.35663,-1.1546 -0.88903,0 -1.46636,0.61483 -1.46636,1.59331 0,0.993 0.5773,1.59044 1.47212,1.59044 0.76784,0 1.29604,-0.4503 1.35375,-1.13443 h -0.67833 c -0.0664,0.34638 -0.30308,0.5542 -0.66678,0.5542 -0.45607,0 -0.75047,-0.36947 -0.75047,-1.01028 0,-0.62926 0.29153,-1.01029 0.74471,-1.01029 0.3839,0 0.61193,0.24536 0.66967,0.57153 h 0.67833 z m 2.21986,-2.2659 c -1.21519,0 -1.97727,0.82843 -1.97727,2.15336 0,1.32493 0.762,2.15047 1.97727,2.15047 1.21232,0 1.97439,-0.82554 1.97439,-2.15047 0,-1.32493 -0.762,-2.15336 -1.97439,-2.15336 z m 0,0.63503 c 0.74183,0 1.2152,0.58885 1.2152,1.51831 0,0.92657 -0.47338,1.51544 -1.2152,1.51544 -0.7447,0 -1.21519,-0.58886 -1.21519,-1.51544 0,-0.92944 0.4705,-1.51831 1.21519,-1.51831 z m 2.27758,2.42759 c 0.0317,0.76783 0.66101,1.2412 1.61933,1.2412 1.0074,0 1.64245,-0.49648 1.64245,-1.28739 0,-0.6206 -0.35793,-0.96986 -1.20367,-1.16324 l -0.47916,-0.10969 c -0.51091,-0.12124 -0.72162,-0.28288 -0.72162,-0.55998 0,-0.34639 0.31751,-0.5773 0.78801,-0.5773 0.47627,0 0.80242,0.2338 0.83707,0.62348 h 0.71009 c -0.0173,-0.73318 -0.62349,-1.22968 -1.54137,-1.22968 -0.90639,0 -1.55009,0.49936 -1.55009,1.23832 0,0.59463 0.36371,0.96411 1.13148,1.1402 l 0.53977,0.127 c 0.52535,0.12413 0.73895,0.29732 0.73895,0.59752 0,0.34637 -0.34927,0.59462 -0.85149,0.59462 -0.50802,0 -0.8919,-0.25113 -0.93809,-0.63505 h -0.72162 z"
+       id="path1165"
+       style="stroke:none;stroke-width:1.02306;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 86.000254,120.10633 c 0,0.0173 0,0.0352 0,0.0532 0,0.62778 -0.50885,1.13664 -1.13666,1.13664 -0.62779,0 -1.13663,-0.50886 -1.13663,-1.13664 0,-0.0186 0,-0.0359 0,-0.0532 h -3.81679 v 9.91265 h 9.91265 v -9.91265 z m -1.35928,8.85158 -0.48282,-2.38853 h -0.007 l -0.52206,2.38853 h -0.66538 l -0.75337,-3.50948 h 0.65671 l 0.44937,2.38854 h 0.007 l 0.54148,-2.38854 h 0.61419 l 0.48612,2.41786 h 0.007 l 0.51298,-2.41786 h 0.64473 l -0.8372,3.50948 z m 3.61605,0 -0.22386,-0.78103 h -1.18167 l -0.17224,0.78103 h -0.6567 l 0.84919,-3.50948 h 1.03628 l 1.03258,3.50948 z m -0.99003,-2.6446 -0.28663,1.28782 h 0.89172 l -0.32877,-1.28782 z"
+       id="path1224"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 77.038539,129.76736 h -8.953845 a 5.0738432,5.0738432 0 0 1 0.824484,-2.26459 4.1784591,4.1784591 0 0 1 1.365466,-1.31694 l 0.152969,-0.0859 -0.753621,-1.2722 a 0.19026912,0.19026912 0 0 1 0.0635,-0.26115 0.18653836,0.18653836 0 0 1 0.257417,0.0671 l 0.776015,1.30576 a 4.7082281,4.7082281 0 0 1 1.805682,-0.33575 4.5515359,4.5515359 0 0 1 1.772108,0.33575 l 0.772271,-1.30576 a 0.18653836,0.18653836 0 0 1 0.26115,-0.0635 0.19026912,0.19026912 0 0 1 0.0597,0.26115 l -0.753622,1.27591 0.186544,0.10454 a 4.245613,4.245613 0 0 1 1.354264,1.35054 5.4021508,5.4021508 0 0 1 0.80959,2.20488 z m -2.798082,-1.67139 a 0.37307671,0.37307671 0 0 0 0.373067,0.37308 0.37307671,0.37307671 0 0 0 0.373087,-0.37308 0.37307671,0.37307671 0 0 0 -0.373087,-0.37307 0.37307671,0.37307671 0 0 0 -0.373067,0.37307 z m -4.103856,0 a 0.37307671,0.37307671 0 0 0 0.373087,0.37308 0.37307671,0.37307671 0 0 0 0.373077,-0.37308 0.37307671,0.37307671 0 0 0 -0.373077,-0.37307 0.37307671,0.37307671 0 0 0 -0.373087,0.37307 z"
+       id="path1347"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 33.748542,121.23429 4.11678,-0.56959 v 3.99052 h -4.11678 m 4.62303,-4.05428 5.51057,-0.82294 v 4.81346 h -5.51057 m -4.62303,0.50668 h 4.11678 v 3.99053 l -4.11678,-0.57086 m 4.62303,-3.41967 h 5.51057 v 4.81346 l -5.44681,-0.76043"
+       id="path1144-6"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 51.369473,119.69504 c -0.0691,0 -0.14055,0.003 -0.21373,0.0101 -1.88609,0.14858 -1.3859,2.14491 -1.41446,2.81019 -0.0344,0.4877 -0.13386,0.87189 -0.46896,1.34798 -0.39489,0.46896 -0.94907,1.22706 -1.21189,2.01728 -0.12403,0.37124 -0.18293,0.75142 -0.12806,1.11059 -0.0173,0.0152 -0.0339,0.0303 -0.0495,0.0603 -0.116,0.11957 -0.20035,0.26818 -0.29539,0.37438 -0.0888,0.0887 -0.2164,0.11906 -0.35561,0.17848 -0.13966,0.0608 -0.29361,0.12006 -0.38553,0.30385 -0.0401,0.0839 -0.0608,0.17538 -0.0588,0.26818 0,0.0887 0.012,0.17894 0.0245,0.23917 0.0259,0.17802 0.0517,0.32529 0.0173,0.43281 -0.11066,0.30342 -0.12449,0.51135 -0.0468,0.66262 0.0777,0.14907 0.23871,0.20927 0.41899,0.26817 0.36186,0.0892 0.85223,0.0603 1.2382,0.26727 0.41318,0.20837 0.83261,0.29939 1.16726,0.2097 0.2347,-0.0513 0.43283,-0.20658 0.53902,-0.42166 0.26192,-8.7e-4 0.54882,-0.12007 1.00841,-0.14907 0.3119,-0.0258 0.70233,0.11906 1.15032,0.0887 0.0111,0.0603 0.0281,0.0887 0.051,0.14909 l 0.002,8.8e-4 c 0.17446,0.34713 0.49662,0.50508 0.84065,0.47787 0.34402,-0.0268 0.71035,-0.23915 1.00708,-0.58273 0.28156,-0.34135 0.75096,-0.48369 1.06106,-0.67065 0.15527,-0.0887 0.28068,-0.20927 0.28959,-0.38061 0.0103,-0.17847 -0.0888,-0.36231 -0.31859,-0.61441 v -0.0433 l -0.002,-8.8e-4 c -0.0758,-0.0892 -0.11156,-0.23874 -0.15081,-0.4132 -0.0379,-0.17894 -0.0812,-0.35072 -0.21954,-0.46673 h -8.8e-4 c -0.0264,-0.024 -0.0549,-0.0298 -0.0839,-0.0603 -0.0249,-0.017 -0.0541,-0.0277 -0.0847,-0.0285 0.19232,-0.57026 0.1178,-1.13783 -0.0772,-1.64828 -0.23782,-0.62916 -0.65368,-1.17709 -0.9705,-1.55413 -0.35517,-0.44843 -0.70321,-0.87322 -0.69652,-1.50326 0.0119,-0.96022 0.10576,-2.73657 -1.58133,-2.73922 z m 0.23604,1.51933 h 0.006 c 0.0951,0 0.1767,0.0277 0.26059,0.0883 0.0852,0.0603 0.14724,0.14808 0.19589,0.23781 0.0468,0.11554 0.0705,0.20484 0.0741,0.32307 0,-0.008 0.003,-0.0178 0.003,-0.0263 v 0.0463 c -8.8e-4,-0.003 -0.002,-0.007 -0.002,-0.0101 l -0.002,-0.0101 c -8.8e-4,0.10844 -0.0236,0.21551 -0.067,0.31503 -0.021,0.0559 -0.0531,0.1071 -0.0951,0.14942 -0.013,-0.007 -0.0254,-0.0135 -0.0393,-0.0189 -0.0468,-0.02 -0.0888,-0.0285 -0.12717,-0.0593 -0.0317,-0.0118 -0.0647,-0.0227 -0.0978,-0.0296 0.022,-0.0263 0.0647,-0.0593 0.0812,-0.0883 0.0236,-0.0572 0.0366,-0.11787 0.0393,-0.17938 v -0.008 c 8.9e-4,-0.0602 -0.008,-0.1209 -0.0272,-0.17845 -0.0201,-0.0603 -0.0451,-0.0898 -0.0817,-0.1491 -0.0375,-0.0295 -0.0745,-0.0588 -0.11913,-0.0588 h -0.007 c -0.0415,0 -0.0785,0.0135 -0.1169,0.0588 -0.0424,0.042 -0.0741,0.0924 -0.0915,0.1491 -0.0236,0.0566 -0.0374,0.11787 -0.0402,0.17845 v 0.008 c 9e-4,0.0398 0.004,0.0798 0.009,0.11906 -0.0861,-0.0299 -0.19544,-0.0603 -0.27084,-0.0901 -0.004,-0.029 -0.007,-0.0588 -0.008,-0.0887 v -0.008 c -0.004,-0.11786 0.0193,-0.23469 0.067,-0.34311 0.0366,-0.0977 0.10352,-0.18116 0.19186,-0.23783 0.0762,-0.0575 0.16912,-0.0887 0.26506,-0.0887 z m -1.32165,0.0263 h 0.016 c 0.0633,0 0.12048,0.0215 0.17804,0.0603 0.0652,0.0576 0.1178,0.12851 0.15349,0.2075 0.0402,0.0887 0.0629,0.1789 0.0683,0.29761 v 0.002 c 0.004,0.0597 0.003,0.0898 -8.8e-4,0.11874 v 0.0357 c -0.0134,0.003 -0.025,0.008 -0.0371,0.0101 -0.0678,0.0246 -0.12226,0.0603 -0.17535,0.0892 0.005,-0.0398 0.006,-0.08 0.002,-0.11907 v -0.007 c -0.005,-0.0593 -0.0173,-0.0887 -0.0366,-0.14858 -0.0138,-0.0456 -0.0393,-0.0861 -0.0741,-0.11905 -0.0219,-0.02 -0.0513,-0.0303 -0.0817,-0.0285 h -0.009 c -0.0318,0.003 -0.058,0.0184 -0.0831,0.0588 -0.0286,0.0345 -0.0468,0.0762 -0.0535,0.12042 -0.0119,0.0482 -0.0157,0.0977 -0.0103,0.14773 v 0.007 c 0.005,0.0603 0.0165,0.0897 0.0361,0.14909 0.0201,0.0596 0.0433,0.0892 0.0737,0.11955 0.004,0.003 0.009,0.008 0.0152,0.0101 -0.0313,0.0255 -0.0522,0.0312 -0.0785,0.0608 -0.0165,0.0118 -0.0356,0.0268 -0.0585,0.0303 -0.0464,-0.0559 -0.0875,-0.11601 -0.12272,-0.17937 -0.0427,-0.0938 -0.0652,-0.19543 -0.0691,-0.29761 -0.008,-0.10086 0.004,-0.20169 0.0356,-0.29806 0.0246,-0.0878 0.0679,-0.16912 0.12628,-0.23874 0.057,-0.0593 0.11602,-0.0892 0.18651,-0.0892 z m 0.61175,0.76122 c 0.1477,0 0.32662,0.029 0.54213,0.17804 0.13073,0.0892 0.23337,0.12007 0.46986,0.2088 h 8.7e-4 c 0.11377,0.0608 0.18071,0.11874 0.21329,0.17804 v -0.0585 c 0.0326,0.0656 0.0348,0.14184 0.007,0.20974 -0.0549,0.1388 -0.23024,0.28735 -0.47476,0.37615 v 8.8e-4 c -0.11956,0.0602 -0.22355,0.14858 -0.34581,0.20747 -0.12315,0.0603 -0.26237,0.13039 -0.45155,0.11908 -0.0678,0.003 -0.1361,-0.007 -0.1999,-0.0298 -0.0491,-0.0268 -0.0973,-0.0562 -0.14368,-0.0884 -0.087,-0.0603 -0.16197,-0.14806 -0.27308,-0.20748 v -0.002 h -0.002 c -0.17848,-0.10978 -0.27486,-0.22846 -0.3061,-0.31725 -0.0307,-0.11957 -0.002,-0.20927 0.0861,-0.26771 0.0999,-0.0603 0.16956,-0.12093 0.21551,-0.14994 0.0463,-0.033 0.0639,-0.0456 0.0785,-0.0586 h 8.7e-4 v -8.7e-4 c 0.0754,-0.09 0.19458,-0.20926 0.37439,-0.26814 0.062,-0.0169 0.13118,-0.029 0.20793,-0.029 z m 1.24891,0.95621 c 0.16021,0.63228 0.53412,1.55056 0.77463,1.99586 0.12761,0.23828 0.38148,0.74027 0.49171,1.34932 0.0695,-0.002 0.1468,0.008 0.2289,0.0285 0.28824,-0.74561 -0.24363,-1.54698 -0.48593,-1.76963 -0.0986,-0.0898 -0.1035,-0.14942 -0.0549,-0.14942 0.26282,0.23826 0.60907,0.70143 0.73445,1.23017 0.0576,0.2387 0.0709,0.4926 0.009,0.74517 0.0298,0.0118 0.0603,0.0272 0.0915,0.0298 0.46048,0.23825 0.63048,0.41853 0.54883,0.6858 v -0.0193 c -0.0272,-8.7e-4 -0.0534,0 -0.0808,0 h -0.007 c 0.0674,-0.20838 -0.0812,-0.36812 -0.4752,-0.54616 -0.40827,-0.17847 -0.73446,-0.14993 -0.79023,0.20748 -0.004,0.0193 -0.005,0.0295 -0.008,0.0603 -0.0303,0.0101 -0.062,0.0236 -0.0933,0.0285 -0.19187,0.11957 -0.29539,0.29852 -0.35384,0.52964 -0.058,0.23783 -0.0758,0.51581 -0.0915,0.83397 v 8.8e-4 c -0.009,0.1491 -0.0762,0.37394 -0.14234,0.60284 -0.6693,0.47833 -1.5974,0.68627 -2.38673,0.14908 -0.0495,-0.0861 -0.10977,-0.16695 -0.17937,-0.23781 -0.033,-0.0558 -0.0749,-0.10574 -0.12272,-0.14909 0.0812,0 0.15083,-0.0135 0.20749,-0.0299 0.0647,-0.0298 0.11468,-0.0839 0.14011,-0.14906 0.0482,-0.11924 0,-0.31102 -0.15394,-0.51895 -0.15393,-0.2084 -0.4154,-0.444 -0.79782,-0.67869 -0.2811,-0.17805 -0.43994,-0.38822 -0.51312,-0.6229 -0.0737,-0.23827 -0.0638,-0.48413 -0.007,-0.73402 0.10932,-0.47741 0.38954,-0.94148 0.56846,-1.23285 0.0478,-0.029 0.0165,0.0603 -0.18204,0.43461 -0.1767,0.33511 -0.50911,1.11416 -0.0545,1.71967 0.0169,-0.4413 0.11513,-0.87679 0.28869,-1.28328 0.25167,-0.57024 0.77774,-1.56349 0.81923,-2.35061 0.0215,0.0169 0.0969,0.0603 0.12894,0.09 0.0973,0.0593 0.16956,0.14858 0.26327,0.2075 0.0942,0.0898 0.21284,0.14941 0.39088,0.14941 0.0173,8.8e-4 0.0334,0.003 0.0495,0.003 0.18338,0 0.32528,-0.0597 0.44442,-0.11958 0.12939,-0.0597 0.23246,-0.14908 0.33018,-0.17847 h 0.003 c 0.20838,-0.0602 0.37302,-0.17937 0.46629,-0.31234 z m 0.97541,3.99708 c 0.0165,0.26815 0.15305,0.55554 0.39355,0.61442 0.26236,0.0597 0.63985,-0.14857 0.79915,-0.34136 l 0.0942,-0.003 c 0.14053,-0.003 0.25745,0.005 0.37793,0.11907 l 0.002,8.8e-4 c 0.0928,0.0887 0.1361,0.23692 0.17447,0.39086 0.038,0.17894 0.0687,0.34805 0.18249,0.47566 0.21687,0.23513 0.28781,0.40427 0.28379,0.50866 l 9e-4,-0.003 v 0.008 l -9e-4,-0.005 c -0.007,0.11687 -0.0825,0.17672 -0.2222,0.26551 -0.28112,0.17892 -0.77907,0.31769 -1.09633,0.70052 -0.27576,0.32885 -0.61175,0.50822 -0.90846,0.53142 -0.29628,0.0236 -0.55196,-0.0892 -0.70233,-0.40067 l -0.003,-8.8e-4 c -0.0937,-0.17895 -0.0534,-0.45737 0.0249,-0.75409 0.0785,-0.29807 0.19097,-0.60014 0.20659,-0.84688 0.0165,-0.3186 0.0339,-0.59568 0.087,-0.80943 0.0535,-0.20748 0.13742,-0.35562 0.28601,-0.43906 l 0.0201,-0.0101 z m -4.82569,0.022 h 0.004 c 0.0236,0 0.0468,0.002 0.07,0.007 0.16778,0.0247 0.31502,0.14857 0.45647,0.33552 l 0.40605,0.74249 8.8e-4,9e-4 c 0.10842,0.23781 0.33643,0.47474 0.53052,0.73086 0.19365,0.26682 0.34358,0.50466 0.32529,0.70055 v 0.003 c -0.0255,0.33199 -0.21373,0.51226 -0.50199,0.5774 -0.2878,0.0603 -0.67822,8.5e-4 -1.06865,-0.20705 -0.43193,-0.23917 -0.94506,-0.20928 -1.27481,-0.26863 -0.16465,-0.0295 -0.27263,-0.0897 -0.3226,-0.17892 -0.0495,-0.0889 -0.0505,-0.26817 0.0549,-0.54882 v -9e-4 l 8.8e-4,-8.4e-4 c 0.0522,-0.1491 0.0133,-0.33601 -0.0119,-0.49933 -0.0246,-0.17892 -0.037,-0.31635 0.0192,-0.41941 0.0715,-0.14909 0.17669,-0.17805 0.30743,-0.23784 0.13162,-0.0603 0.28602,-0.09 0.40872,-0.20926 h 8.8e-4 v -8.7e-4 c 0.11421,-0.11958 0.19857,-0.2682 0.29806,-0.37394 0.0847,-0.0897 0.16955,-0.14992 0.29583,-0.14992 z m 3.19437,-4.04886 c -0.1941,0.0898 -0.42166,0.23872 -0.66394,0.23872 -0.24186,0 -0.43281,-0.11906 -0.5707,-0.20792 -0.0691,-0.0597 -0.12493,-0.11956 -0.16688,-0.14942 -0.0732,-0.0597 -0.0642,-0.14908 -0.033,-0.14908 0.0486,0.007 0.0576,0.0603 0.0888,0.0898 0.0428,0.0295 0.0959,0.0887 0.16107,0.14858 0.12984,0.0892 0.30342,0.20836 0.52028,0.20836 0.2164,0 0.46984,-0.11905 0.62378,-0.20793 0.087,-0.0603 0.19857,-0.14908 0.28915,-0.20838 0.0695,-0.0611 0.0665,-0.11956 0.12449,-0.11956 0.0576,0.007 0.0152,0.0597 -0.0656,0.14857 -0.0808,0.0602 -0.20569,0.14942 -0.30785,0.20882 v -4.2e-4 z m -0.48279,-0.70678 v -0.0101 c -0.003,-0.008 0.006,-0.0188 0.013,-0.0222 0.033,-0.0193 0.0803,-0.0118 0.11601,0.002 0.0281,0 0.0714,0.0299 0.067,0.0603 -0.003,0.022 -0.0379,0.0295 -0.0603,0.0295 -0.0246,0 -0.041,-0.0193 -0.0629,-0.0303 -0.0232,-0.008 -0.0652,-0.003 -0.0727,-0.029 z m -0.24586,0 c -0.009,0.026 -0.0504,0.022 -0.0741,0.0295 -0.0211,0.0118 -0.0384,0.0303 -0.062,0.0303 -0.0227,0 -0.0585,-0.008 -0.0612,-0.0303 -0.004,-0.0295 0.0393,-0.0593 0.067,-0.0593 0.0361,-0.0135 0.082,-0.0209 0.11556,-0.002 0.009,0.003 0.016,0.0135 0.0134,0.0222 v 0.0101 h 8.7e-4 z"
+       id="path1119-4"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" />
+    <path
+       d="m 59.313879,129.56935 c -0.188292,-0.12577 -0.355467,-0.27983 -0.495185,-0.45777 -0.152463,-0.18429 -0.293788,-0.37815 -0.42355,-0.57877 -0.304904,-0.44582 -0.543353,-0.93346 -0.70855,-1.44735 -0.199025,-0.59789 -0.295745,-1.17029 -0.295745,-1.73037 0,-0.62496 0.1354,-1.1703 0.398848,-1.62807 0.195057,-0.35824 0.485632,-0.65798 0.835918,-0.86857 0.338361,-0.21097 0.732443,-0.32641 1.130504,-0.33437 0.139314,0 0.290585,0.0199 0.449803,0.0598 0.115401,0.0319 0.254758,0.0836 0.425922,0.14729 0.21895,0.0836 0.338361,0.13525 0.378168,0.14728 0.127421,0.0477 0.234843,0.0677 0.318446,0.0677 0.06361,0 0.15524,-0.0199 0.256747,-0.0518 0.05776,-0.0199 0.167186,-0.0556 0.322425,-0.12337 0.153644,-0.0556 0.275469,-0.1035 0.372189,-0.13931 0.147293,-0.0437 0.289788,-0.0836 0.417954,-0.10351 0.15525,-0.0239 0.309298,-0.0319 0.456974,-0.0199 0.282628,0.0199 0.541375,0.0796 0.77225,0.16719 0.406018,0.16319 0.733616,0.41797 0.978026,0.7802 -0.1035,0.0636 -0.19903,0.13766 -0.2886,0.21893 -0.193848,0.17117 -0.358246,0.37418 -0.489603,0.59909 -0.171165,0.3065 -0.258736,0.6528 -0.256364,1.0031 0.0064,0.4311 0.1154,0.81005 0.334371,1.13846 0.154059,0.23883 0.35986,0.44343 0.610636,0.61142 0.12337,0.0836 0.23166,0.14127 0.33438,0.17912 -0.0479,0.14925 -0.10033,0.29456 -0.16122,0.43787 -0.13812,0.32123 -0.30253,0.62893 -0.497582,0.91952 -0.171962,0.25077 -0.307309,0.43787 -0.409996,0.56126 -0.160016,0.19107 -0.314468,0.33437 -0.469718,0.43667 -0.171165,0.11345 -0.372179,0.17356 -0.577981,0.17356 -0.139314,0.006 -0.278639,-0.012 -0.411592,-0.0505 -0.115389,-0.0378 -0.229279,-0.0803 -0.340743,-0.12863 -0.116603,-0.0533 -0.237248,-0.0987 -0.360233,-0.1354 -0.151282,-0.0397 -0.30651,-0.0588 -0.463356,-0.0585 -0.159218,0 -0.314468,0.0199 -0.46175,0.0578 -0.123368,0.0351 -0.242811,0.0781 -0.36103,0.12939 -0.167197,0.0697 -0.276661,0.11539 -0.34034,0.13525 -0.128942,0.0382 -0.26114,0.0614 -0.394092,0.0697 -0.235126,-0.005 -0.43576,-0.10774 -0.586331,-0.18441 z m 2.728289,-7.34817 c -0.270672,0.1354 -0.527812,0.19264 -0.785367,0.17353 -0.03989,-0.25714 0,-0.52145 0.107422,-0.81083 0.09553,-0.2468 0.222907,-0.46972 0.39805,-0.66874 0.183111,-0.20701 0.40205,-0.37817 0.64884,-0.50157 0.262725,-0.1354 0.513493,-0.20698 0.752335,-0.21893 0.03191,0.27068 0,0.53739 -0.09946,0.82399 -0.09074,0.25475 -0.226088,0.48961 -0.39805,0.70059 -0.173165,0.20699 -0.388115,0.37815 -0.63133,0.50154 z"
+       id="path1446-5"
+       style="stroke:#e4dfe0;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill"
+       sodipodi:nodetypes="ccccsccccccsccccccccccccccccccccccccccccccccccccc" />
+    <path
+       style="fill:#322931;fill-opacity:1;stroke:none;stroke-width:1.10243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.862661;paint-order:markers stroke fill"
+       d="m 85.595402,93.829691 h 23.177868 l -7.39696,-4.506799 v 2.297886 L 85.595402,92.23147 Z"
+       id="path1502"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       style="fill:#322931;fill-opacity:1;stroke:none;stroke-width:1.10243;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.862661;paint-order:markers stroke fill"
+       d="M 108.77327,96.972349 H 85.595403 l 7.396962,4.506801 v -2.297888 l 15.780905,-0.699144 z"
+       id="path1502-5"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/content/news/026/veloren.jpg b/content/news/026/veloren.jpg
new file mode 100644
index 000000000..492a2342c
Binary files /dev/null and b/content/news/026/veloren.jpg differ
diff --git a/content/news/026/weegames.jpg b/content/news/026/weegames.jpg
new file mode 100644
index 000000000..8a046aac0
Binary files /dev/null and b/content/news/026/weegames.jpg differ
diff --git a/content/news/027/all-is-cubes.jpg b/content/news/027/all-is-cubes.jpg
new file mode 100644
index 000000000..7475460ff
Binary files /dev/null and b/content/news/027/all-is-cubes.jpg differ
diff --git a/content/news/027/berrycover.png b/content/news/027/berrycover.png
new file mode 100644
index 000000000..411e343f5
Binary files /dev/null and b/content/news/027/berrycover.png differ
diff --git a/content/news/027/bevy-webgl2.png b/content/news/027/bevy-webgl2.png
new file mode 100644
index 000000000..2d78ef7d4
Binary files /dev/null and b/content/news/027/bevy-webgl2.png differ
diff --git a/content/news/027/bevy_atmosphere.png b/content/news/027/bevy_atmosphere.png
new file mode 100644
index 000000000..a3e9e9ebc
Binary files /dev/null and b/content/news/027/bevy_atmosphere.png differ
diff --git a/content/news/027/bevy_pen_tool2.gif b/content/news/027/bevy_pen_tool2.gif
new file mode 100644
index 000000000..697b11a1c
Binary files /dev/null and b/content/news/027/bevy_pen_tool2.gif differ
diff --git a/content/news/027/bevy_verlet.gif b/content/news/027/bevy_verlet.gif
new file mode 100644
index 000000000..13577371c
Binary files /dev/null and b/content/news/027/bevy_verlet.gif differ
diff --git a/content/news/027/chaos-theory.gif b/content/news/027/chaos-theory.gif
new file mode 100644
index 000000000..8f3304cbe
Binary files /dev/null and b/content/news/027/chaos-theory.gif differ
diff --git a/content/news/027/crunda.gif b/content/news/027/crunda.gif
new file mode 100644
index 000000000..cfc216f31
Binary files /dev/null and b/content/news/027/crunda.gif differ
diff --git a/content/news/027/gamedev-meetup.png b/content/news/027/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/027/gamedev-meetup.png differ
diff --git a/content/news/027/gms-talk.png b/content/news/027/gms-talk.png
new file mode 100644
index 000000000..22522318c
Binary files /dev/null and b/content/news/027/gms-talk.png differ
diff --git a/content/news/027/godot-rust.png b/content/news/027/godot-rust.png
new file mode 100644
index 000000000..01e8c5edb
Binary files /dev/null and b/content/news/027/godot-rust.png differ
diff --git a/content/news/027/graph_game.gif b/content/news/027/graph_game.gif
new file mode 100644
index 000000000..a254cb3d7
Binary files /dev/null and b/content/news/027/graph_game.gif differ
diff --git a/content/news/027/hydrofoil1_1024.png b/content/news/027/hydrofoil1_1024.png
new file mode 100644
index 000000000..9705d8cb6
Binary files /dev/null and b/content/news/027/hydrofoil1_1024.png differ
diff --git a/content/news/027/index.md b/content/news/027/index.md
new file mode 100644
index 000000000..cc6efb8a0
--- /dev/null
+++ b/content/news/027/index.md
@@ -0,0 +1,847 @@
++++
+title = "This Month in Rust GameDev #27 - October 2021"
+transparent = true
+date = 2021-11-07
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 27th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Meeting Minutes](#meeting-minutes)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The tenth Rust Gamedev Meetup happened in October. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [November 13th][rust-meetup-oct-time], fill
+out [this form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/ta2HY4lD3iM
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[rust-meetup-oct-time]: https://everytimezone.com/s/1f02d66b
+
+## Game Updates
+
+### [Hydrofoil Generation Sailing]
+
+![hgs_screen](hydrofoil1_1024.png)
+
+[Hydrofoil Generation Sailing] ([Facebook](https://www.facebook.com/HydrofoilGenerationSailing),
+[Discord](https://discord.gg/DtKgt2duAy)) is a realistic sailing/foiling
+inshore simulator in development for PC/Steam that will put you in the
+driving seat of modern competitive sailing.
+
+The game is the brain child of industry veteran Stefano Casillo
+(of Assetto Corsa fame) and features a custom made 3D engine based on DirectX11
+via winapi-rs.
+
+An engine conversion to WGPU is currently under evaluation in order to
+guarantee an easier port to platform such as Steam Deck or even mobile in the
+future.
+
+Early Access release on Steam is expected in mid 2022.
+
+[Hydrofoil Generation Sailing]: https://www.facebook.com/HydrofoilGenerationSailing/
+
+### [The Process]
+
+{{ image_figure(
+    alt="An animated gif showing an engineer shooting rockets"
+    src="the_process.gif"
+    caption="Firing Carrockets™!") }}
+
+[The Process] by @setzer22 is an upcoming game about factory building, process
+management, and carrot production, built with Rust using the Godot game engine!
+
+For the past two months the project has seen some slow but steady progress. Work
+has started towards a simple combat system that will have the engineers fighting
+hordes of robots to defend their factories.
+
+This month the game has seen the following changes and improvements:
+
+- New assets like
+  [a robot enemy](https://twitter.com/PlayTheProcess/status/1436722776186966023)
+  (concept by @Kath_Art_ic, modelling by @mkdirsrc),
+  [a shoulder mounted gun](https://twitter.com/PlayTheProcess/status/1439970905220960259)
+  and
+  [new machine icons](https://twitter.com/PlayTheProcess/status/1455232744573788162).
+- A new system to attach armor-like models to in-game characters.
+- Foundations of a combat system.
+- Carrockets™! 🥕🚀 [(1)](https://twitter.com/PlayTheProcess/status/1445098719326658562)
+  and
+  [(2)](https://twitter.com/PlayTheProcess/status/1454787650657951745)
+
+[The Process]: https://twitter.com/PlayTheProcess
+
+### [LibraCity] - city planning on a needle!
+
+![LibraCity screenshot](libracity.png)
+
+[LibraCity] is a puzzle city planning game by [@djeedai] where you need to build
+a city while balancing it on a needle (the center of the board). It was built for
+[Ludum Dare 49] using the [Bevy Engine], and is a first-time use of the engine.
+
+Post-jam, a webassembly version was added and published, which now allows
+[playing the game online](https://djeedai.github.io/libracity/).
+
+The code source is freely [available on GitHub](https://github.com/djeedai/libracity).
+
+[LibraCity]: https://djeedai.github.io/libracity/
+[Ludum Dare 49]: https://ldjam.com/events/ludum-dare/49/libra-city
+[@djeedai]: https://twitter.com/djeedai
+[Bevy Engine]: https://bevyengine.org/
+
+### [Chaos Theory] - gamified double pendulum simulator
+
+![Chaos Theory Gif](chaos-theory.gif)
+
+[Chaos Theory] is a tiny HTML5 game by [@necauqua] where you can draw and
+simulate pendulums with a few goals and restrictions per level.
+It was done for [Ludum Dare 49][Chaos Theory] with a help of a small custom
+engine with Rust being compiled to WASM and drawing shapes to an HTML5 canvas.
+
+You can play the game [online][chaos-theory-online], and the source code
+is available [here][chaos-theory-src] and
+[here][chaos-theory-engine-src].
+
+[Chaos Theory]: https://ldjam.com/events/ludum-dare/49/chaos-theory-1
+[@necauqua]: https://twitter.com/necauqua
+[chaos-theory-online]: https://ld49.necauqua.dev
+[chaos-theory-src]: https://github.com/necauqua/chaos-theory
+[chaos-theory-engine-src]: https://github.com/necauqua/ld-game-engine
+
+### [Me And My Unicycle]
+
+{{ image_figure(
+    alt="Me And My Unicycle screenshot"
+    src="me_and_my_unicycle_cover.png"
+    caption="Can you handle this unstable ride?") }}
+
+[Me And My Unicycle] is a 2D physics game by [@nikl_me] submitted to Ludum
+Dare 49. It is build with [Bevy] and [the code can be found on GitHub][mamu-source].
+
+Following the LD49 theme "unstable", the game is about riding a unicycle
+with challenging controls. Try making it through each level without falling.
+
+All assets are self-made. The developer had a lot of fun recording audio and
+sound effects!
+
+[Me And My Unicycle]: https://niklme.itch.io/me-and-my-unicycle
+[Bevy]: https://github.com/bevyengine/bevy
+[@nikl_me]: https://twitter.com/nikl_me
+[mamu-source]: https://github.com/NiklasEi/me_and_my_unicycle
+
+### [Crunda][crunda page]
+
+![image/crunda gameplay](crunda.gif)
+
+[Crunda][crunda page] is a game created in 48 hours for Ludum Dare 49.
+
+Its unique wobbly planets are controlled by a Rust library.
+
+Crunda was created by [Dan Slocombe], came third, and was rated the
+most fun competition game! The [sources can be found here][crunda source].
+
+[crunda page]: https://ldjam.com/events/ludum-dare/49/crunda
+[crunda source]: https://github.com/danslocombe/crunda_ludum_dare_49
+[Dan Slocombe]: https://twitter.com/SLCMB/
+
+### [Berry Run]
+
+![berry](berrycover.png)
+
+[Berry Run] is a community stream meme game by [@bombfuse_dev] built on top of
+[Emerald Engine]. It's centered around the Twitch streamer [@berrybebopboy] and
+was built in about 2 days.
+
+Help Berry run as far as they can without tripping and falling!
+
+> Dodge the babies (no kids, no babies), evade the grannies
+> (they're heading to the grand canyon),
+> and don't touch belf (belf is sacred).
+> Also a bunch of dunces left their logs and rocks lying around,
+> better not to touch those, it would be rude to touch someone's logs and rocks.
+
+[Berry Run]: https://bombfuse.itch.io/berry-run/
+[Emerald Engine]: https://github.com/Bombfuse/emerald
+[@bombfuse_dev]: https://twitter.com/bombfuse_dev
+[@berrybebopboy]: https://twitter.com/berrybebopboy
+
+### [Lonely Star]
+
+![Lonely Star screenshot](lonely-star.png)
+
+[Lonely Star] is a 2D 'endless runner' game by [@17cupsofcoffee], featuring
+simple generative music. It was built with [Tetra] back in February 2020,
+for Weekly Game Jam 135.
+
+This month, it was made [open-source][lonely-star-source], and received a
+small update to improve the UI and fix a few bugs.
+
+[Lonely Star]: https://17cupsofcoffee.itch.io/lonely-star
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[@17cupsofcoffee]: https://twitter.com/17cupsofcoffee
+[lonely-star-source]: https://github.com/17cupsofcoffee/lonely-star
+
+### [Soldank]
+
+![Soldank](https://raw.githubusercontent.com/smokku/soldank/master/sshot.png)
+
+[Soldank] ([GitHub](https://github.com/smokku/soldank),
+[Discord](https://discord.gg/cTaC4UtqE6)) by [@smokku](https://twitter.com/smokkku)
+is an open source clone of [Soldat] engine. It aims for full compatibility
+with original game files, mods and gameplay with modernized
+graphics engine and multiplayer networking code.
+
+Recent developments include:
+
+- Engine/game code split
+- Command Line Interface
+- [Rhai] scripting
+- `hecs_rapier` integration
+- Key/mouse-binding support
+- Soldat's `.cfg` files support
+- Custom debug shapes rendering
+- Performance degradation fix
+- Refactored code to build on `hecs` ECS
+- ECS entities debug UI
+
+The developer have also written a blog post:
+'_[Engine and scripting](https://abadcafe.wordpress.com/2021/11/01/engine-and-scripting/)_'
+
+[Soldank]: https://github.com/smokku/soldank
+[Soldat]: http://soldat.pl/
+[Rhai]: http://rhai.rs/
+
+### [Graph Game]
+
+{{ image_figure(
+    alt="image/gameplay of the game: circle and triangles"
+    src="graph_game.gif"
+    caption="Navigating the graph map can be stressful") }}
+
+[Graph Game] ([GitHub][graph-game-github])
+uses [Bevy](https://bevyengine.org/) as its engine. You can play it from your
+[browser](https://vrixyz.github.io/graph_nav/) - click on colored triangles,
+guess the rules and survive as long as possible!
+
+Development has just begun, and the future of the project is not clear -
+the developer welcomes you to come and discuss next steps on the game's
+[Discord server][graph-game-discord].
+
+[Graph Game]: https://vrixyz.github.io/graph_nav/
+[graph-game-github]: https://github.com/Vrixyz/graph_nav
+[graph-game-discord]: https://discord.gg/ZeRkj8pD4n
+
+### [Way of Rhea][wor]
+
+![way of rhea capsule image](wor-capsule.jpg)
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics. It is being produced by [@masonremaley][wor-mason-remaley].
+
+Latest developments:
+
+- Way of Rhea now has a [free demo available on Steam][wor]
+- Way of Rhea was shown at [PAX West][wor-pax-west] this year (as were a couple
+ other Rust games!), and will also be showcased at [MAGWest][wor-magwest]
+- A new trailer showing off new level art [was published][wor-trailer]
+- Additional animation work, [visuals][wor-wildlife], and puzzles have been
+added to the game
+- Improvements were made to the undo system, the tutorial level, and the
+dialogue system in response to user feedback
+- Some Proton compatibility problems were fixed, some visual glitches were
+fixed, and support was added for adaptvie vsync
+
+You can stay up to date on the latest developments of Way of Rhea by
+[following it on Steam][wor], or signing up for
+[the mailing list.][wor-newsletter]
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n27
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-pax-west]: https://west.paxsite.com/
+[wor-magwest]: https://www.magwest.org/
+[wor-trailer]: https://www.youtube.com/watch?v=46ELQYaH0uw
+[wor-wildlife]: https://twitter.com/AnthropicSt/status/1448056148138119169
+[wor-newsletter]: https://www.anthropicstudios.com/newsletter/signup
+
+### [PaddlePunks][paddlepunks-itch]
+
+{{ image_figure(
+    alt="Animated gameplay that looks like pong mixed with an anime fighting game"
+    src="paddlepunks-gameplay.gif"
+    caption="A round between a player and the AI set to Hard") }}
+
+PaddlePunks is a versus tennis game by [Felix Windström][paddlepunks-twitter]
+with a diverse cast of characters and playstyles and online play with rollback
+netcode. The game takes cues from both fighting games and arcade classics, and
+besides netplay supports local play against another human or several levels of
+AI.
+
+You can download and play the game now on [itch.io][paddlepunks-itch], or
+join the [Discord][paddlepunks-discord] to chat with the developer and other
+players. Updates are also posted to [Twitter][paddlepunks-twitter].
+
+[paddlepunks-twitter]: https://twitter.com/sov_gott_games
+[paddlepunks-itch]: https://sovgott.itch.io/paddlepunks
+[paddlepunks-discord]: https://discord.gg/cpPDeVcWxc
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="An early-morning sunrise"
+    src="veloren.jpg"
+    caption="An early-morning sunrise") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In October, Veloren hit 10,000 commits, as well as 10,000 members on the Discord
+server! Shrubs got added, along with improvements to rivers, and the
+addition of waterfalls. There have been efforts to diagnose some network issues
+that have been causing downloads to not work for some people. Crafting is going
+through overhauls on the backend. [New aurora shaders][veloren-aurora-video]
+were added as well.
+
+Initial ideas are being discussed to try and improve the
+amount of asset files that have to be downloaded with each update of the game,
+which will help improve the 200MB that has to be downloaded after each nightly
+update. New jewelery has been added, and sneaking is being improved to make
+agents in the game react better to it. Ongoing worldgen improvemnts are also
+being made as we head into November.
+
+October's full weekly devlogs: "This Week In Veloren...":
+[#140][veloren-140],
+[#141][veloren-141],
+[#142][veloren-142],
+[#143][veloren-143].
+
+[veloren]: https://veloren.net
+[veloren-140]: https://veloren.net/devblog-140
+[veloren-141]: https://veloren.net/devblog-141
+[veloren-142]: https://veloren.net/devblog-142
+[veloren-143]: https://veloren.net/devblog-143
+[veloren-aurora-video]: https://www.youtube.com/watch?v=60kt915avjI
+
+## Engine Updates
+
+### [Amethyst - Starting Fresh][amethyst]
+
+![amethyst logo](/amethyst-logo.png)
+
+This month, the developers of the Amethyst game engine
+[announced that they would be winding down development][amethyst].
+
+The Amethyst Foundation, however, lives on! It will be shifting focus
+to support the wider Rust game development ecosystem, through
+engine-agnostic libraries, curated guides/lists, and more inititives yet
+to be announced.
+
+[amethyst]: https://amethyst.rs/posts/amethyst--starting-fresh
+
+### [All is Cubes][All is Cubes] 0.3.0
+
+[![Screenshot of All is Cubes][all-is-cubes-screen]][all-is-cubes-screen]
+
+All is Cubes ([GitHub][All is Cubes], [Crates.io][all-is-cubes-cr]) by [kpreid]
+is a game/engine for worlds made of blocks made of voxels. It is intended to be
+usable both as an engine or rendering library, or as a game with built-in
+editor/programming functionality (genre(s) to be determined). While the project
+is still highly incomplete and API-unstable, the 0.3.0 release marks a lot of
+now-usable functionality ([changelog][all-is-cubes-changelog]):
+
+- UI: mouselook, multiple example scenes, inventory with stacks, and rendering
+  to image files.
+- Simulation/mechanics: character collision against arbitrary voxel shapes,
+  much-improved light propagation, transactional state updates (all-or-nothing,
+  internally order-independent), and “behaviors” attached to game objects for
+  scripting/animation.
+- Rendering: high-voxel-count blocks (incomplete, but usable for text as seen in
+  the above screenshot), “smooth lighting” (interpolated across faces), frustum
+  culling, and correct sRGB-versus-linear color handling.
+
+The next planned milestone is saving/loading.
+
+[All is Cubes]: https://github.com/kpreid/all-is-cubes/
+[all-is-cubes-cr]: https://crates.io/crates/all-is-cubes
+[all-is-cubes-screen]: all-is-cubes.jpg
+[all-is-cubes-changelog]: https://github.com/kpreid/all-is-cubes/blob/main/CHANGELOG.md#030-2021-10-09
+[kpreid]: https://github.com/kpreid
+
+### [Tetra] 0.6.6
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. After
+a few quiet months, version 0.6.6 has been released, featuring:
+
+- A big overhaul of the keyboard API, with better support for international
+  layouts
+- Lots of new functions for manipulating the game window
+- A long-requested [ECS example][tetra-ecs]
+- Bugfixes and docs improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[tetra-ecs]: https://github.com/17cupsofcoffee/tetra/blob/main/examples/ecs.rs
+
+## Learning Material Updates
+
+### [GameDev Mini Symposium][gms-talk]
+
+{{ image_figure(
+    alt="An early-morning sunrise"
+    src="gms-talk.png"
+    caption="Click the image to watch the talk",
+    link="https://www.youtube.com/watch?v=OzUsPi4kHes") }}
+
+Back in September, the University of Glasgow's GameLab held a 'GameDev Mini
+Symposium' online. One of the featured speakers was
+[Herbert Wolverson][the-bracket], writer of '[Hands-on Rust][hands-on-rust]',
+who gave a talk on using Rust for game development.
+
+This talk is now available to [view on Herbert's YouTube channel][gms-talk].
+
+[the-bracket]: https://twitter.com/herberticus
+[hands-on-rust]: https://pragprog.com/titles/hwrust/hands-on-rust/
+[gms-talk]: https://www.youtube.com/watch?v=OzUsPi4kHes
+
+## Tooling Updates
+
+### [SPV]
+
+![SPV-0.1.0 screenshot](spv-0.1.0.png)
+
+[SPV] by [Albin Sjögren]
+is a calculator utility for working with astronomical position and velocity data.
+
+What was added for the first alpha release:
+
+- A new UI
+- Corrected vector normalizing
+- JSON and TXT exporting
+
+The primary features that are being worked on:
+
+- A crate version
+- Output file structure
+- Batch processing
+
+For any feature requests, reach out to the developer on [Discord][spv-discord]
+or [GitHub][spv].
+
+[SPV]: https://github.com/AlbinSjoegren/SPV
+[spv-discord]: https://discordapp.com/users/258254056185659392
+[Albin Sjögren]: https://github.com/AlbinSjoegren
+
+## Library Updates
+
+### [wgpu]-0.11 release
+
+{{ image_figure(
+    alt="bevy webgl2 via wgpu"
+    src="bevy-webgl2.png"
+    caption="experimental Bevy branch running on WebGL2 via wgpu") }}
+
+The team is happy to announce the release of wgpu-0.11 and naga-0.7.
+Details can be found on the [gfx-rs blog]. The most exciting feature
+is WebGL2 support. With some caveats, users no longer need to wait for
+WebGPU in the browsers in order to deploy on the Web. Support is still
+a bit rough, and patches come out regularly, but most examples work.
+
+@kvark also visited [Rust LA Meetup] to [talk about Naga]
+and the history of processing shaders with Rust.
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[gfx-rs blog]: https://gfx-rs.github.io/2021/10/07/release-0.11.html
+[Rust LA Meetup]: https://rustlang.la/
+[talk about Naga]: https://vimeo.com/632377558
+
+### [rend3]-0.2 Release
+
+{{ image_figure(
+    alt="rend3-scifi"
+    src="rend3-scifi.jpg"
+    caption="Improved shadows and rendering with rend3 0.2") }}
+
+rend3 is a 3D rendering library that focuses on having an easy to use interface
+without sacrificing performance or customizability.
+
+As part of their monthly release schedule, the developers are excited to
+announce the release of rend3-0.2. The most prominent change is the ability
+to use fully customizable materials. Any combination of data and textures can
+now be used as a material for custom render routines. This unties the user
+from PBR-based materials.
+
+Along with the customizability that comes with this change, the CPU time
+required to render a complex scene is 7x less due to highly optimal data
+structures. For more information see [this talk][rend3-perf-talk] at the Rust
+graphics meetup.
+
+The [v0.2 version][rend3-crates] was published on crates.io
+([docs][rend3-docs] and [examples][rend3-examples]). The 0.3 release is
+just a week away and further improves customizability.
+
+[rend3]: https://github.com/BVE-Reborn/rend3
+[rend3-perf-talk]: https://www.youtube.com/watch?v=F0wGz5UJTrY
+[rend3-docs]: https://docs.rs/rend3
+[rend3-examples]: https://github.com/BVE-Reborn/rend3/tree/v0.2/examples
+[rend3-crates]: https://crates.io/crates/rend3
+
+### [hecs_rapier] 0.11.0
+
+[hecs_rapier] is a physics engine for hecs ECS.
+It is a direct port of [bevy_rapier2d].
+
+Recent development added joints and physics_hooks support.
+This makes `hecs_rapier` feature complete, with `bevy_rapier2d` feature parity.
+
+[hecs_rapier]: https://github.com/smokku/hecs_rapier
+[bevy_rapier2d]: https://github.com/dimforge/bevy_rapier
+
+### [bevy_atmosphere] 0.1.1
+
+![dawn in bevy_atmosphere](bevy_atmosphere.png)
+
+[bevy_atmosphere] ([GitHub][bevy_atmosphere]) by @JonahPlusPlus
+is a procedural sky plugin for Bevy.
+
+By adding the `AtmospherePlugin`, users get a skybox around the camera in their scene.
+Users can also set the appearance of the sky adding a `AtmosphereMat` resource.
+
+0.1.0 and 0.1.1 have been released on [crates.io](https://crates.io/crates/bevy_atmosphere).
+
+0.1.1 changes the default position of the sun to be in the sky,
+so only the plugin is needed to get a Unity-like sky.
+
+[bevy_atmosphere]: https://github.com/JonahPlusPlus/bevy_atmosphere
+
+### [bevy_kira_audio]
+
+[bevy_kira_audio] is a [Bevy] plugin that integrates the audio library [Kira]
+into [Bevy] applications.
+
+In the latest version `0.6.0`, you can load files with custom semantic
+durations and play looped audio with an intro. The plugin now also cleans up
+old sound instances. Following Bevy, [bevy_kira_audio] is now licensed under
+dual MIT + Apache 2.0, and the library will no longer crash on systems without
+an audio device.
+
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio
+[Bevy]: https://github.com/bevyengine/bevy
+[Kira]: https://github.com/tesselode/kira
+
+### [bevy_verlet]
+
+![bevy_verlet](bevy_verlet.gif)
+
+[bevy_verlet] is a lib for projects using [Bevy Engine][bv_bevy]
+providing a plugin to use [verlet integration][bv_wikipedia]
+physics. Very useful for cloth simulation and joints, and less expensive than
+complex physics engine, it is a nice addition to 2D or 3D projects. Making good
+use of the Entity-Component-System architecture of the bevy engine, any entity
+can become a `VerletPoint` and have physics applied to it.
+
+The crate also provides *sticks* which constrains the points in order to create
+strings or cloth. With its modularity, you may customize the physics precision
+(iterations), the gravity, and the physics time step to use.
+
+New features:
+
+- Query parallel batching and custom batching size
+- Global documentation
+- Fixed issues with timesteps
+- Improved examples
+
+You may contact the author on Twitter at [@ManevilleF][ManevilleF] or join the
+[discussion][bv_discussion].
+
+[bevy_verlet]: https://github.com/ManevilleF/bevy_verlet
+[bv_discussion]: https://twitter.com/ManevilleF/status/1437350669858611202?s=20
+[ManevilleF]: https://twitter.com/ManevilleF
+[bv_bevy]: https://bevyengine.org/
+[bv_wikipedia]: https://en.wikipedia.org/wiki/Verlet_integration
+
+### [Bevy Pen Tool][bevy-pen-tool]
+
+![bevy_pen_tool2](bevy_pen_tool2.gif)
+
+Bevy Pen Tool is a plugin that helps developers make 2D paths using
+Bezier curves. Its user interface provides functionality for:
+
+- spawning Bezier curves,
+- moving end points and control points of Bezier curves,
+- linking individual Bezier curves to each other,
+- grouping curves,
+- saving and loading paths as look-up tables
+    (typically for animations and agent movement),
+- generating arbitrary 2D meshes that fill the interior of a path
+    using the Lyon crate,
+- generating a mesh that follows a path like a road,
+- saving meshes and roads in ".obj" format,
+
+A stable version of Bevy Pen Tool should come out as a crate shortly
+after Bevy 0.6 shows up. Here is a link to the [repo for more
+information][bevy-pen-tool].
+
+[bevy-pen-tool]: https://github.com/eliotbo/bevy_pen_tool
+
+### [Sparsey]
+
+[Sparsey] by [@LechintanTudor] is a sparse set-based Entity Component System
+(ECS) with component storage grouping, granular component change detection,
+fallible systems and beautiful syntax.
+
+The latest release (0.4) adds support for optional system parameters, which
+allows `Option<Res<T>>` and `Option<ResMut<T>>` to be used in system functions.
+
+This release also features a refactored `ComponentStorage` which makes adding,
+removing and swapping components faster, swapping being especially important
+since it enables component grouping, a features that makes certain queries
+specified by the user extremely fast.
+
+Finally, some implementation details were hidden from the public API and the
+`#[must_use]` attribute was added to functions whose results should not be
+discarded.
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+
+### [godot-rust](https://github.com/godot-rust/godot-rust)
+
+![godot-rust logo](godot-rust.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+Recent developments have added [foundational support to async][gd-async]
+that enables users to make use of the Rust async runtimes with the Godot Engine
+(thanks to chitoyuu for the PR).
+
+In addition to the foundational support, lyonbeckers was kind enough to
+include a [new recipe in the User Guide][gd-async-recipe] that covers
+how to configure async with `tokio`.
+
+The team also merged several smaller bug fixes in [#791][gd-791], [#795][gd-795],
+and [#800][gd-800] and is making steady progress towards version 0.10.0.
+
+Finally, the team has recently added a [third party project][gd-book-projects]
+section in the book to help promote games, applications, and libraries/tools
+that are working with godot-rust. If you have a project that you would like to
+be included, please feel free to reach out to the godot-rust team.
+
+[gd-async]: https://github.com/godot-rust/godot-rust/pull/804
+[gd-async-recipe]: https://github.com/godot-rust/book/pull/44
+
+[gd-800]: https://github.com/godot-rust/godot-rust/pull/800
+[gd-795]: https://github.com/godot-rust/godot-rust/pull/795
+[gd-791]: https://github.com/godot-rust/godot-rust/pull/791
+[gd-788]: https://github.com/godot-rust/godot-rust/pull/788
+
+[gd-book-projects]: https://godot-rust.github.io/book/projects.html
+
+[gd-docs]: https://godot-rust.github.io/docs
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - LD49 [Unbalanced Brawl](https://ldjam.com/events/ludum-dare/49/unbalanced-brawl)
+    ([GitHub](https://github.com/yopox/LD49))
+    is an autochess with ever-changing rules in the shop.
+  - LD49 [Chevalchemy](https://ldjam.com/events/ludum-dare/49/chevalchemy-a-hoof-of-concept)
+    ([GitHub](https://github.com/xlambein/ldjam49)) is a game where you play
+    as a horse alchemist working for the great Neighcolas Flamel.
+  - LD49 [Proc Spider](https://ldjam.com/events/ludum-dare/49/procedural-spider)
+    ([GitHub](https://github.com/darthdeus/procedural-spider))
+    is a small game where you play a big spider chasing small spiders.
+  - [mk48.io] ([GitHub](https://github.com/SoftbearStudios/mk48)) is
+    an online multiplayer naval combat game, in which you take command
+    of a ship and sail your way to victory.
+  - Tweets about [Bitgun] progress:
+    [new inventory and weapon systems](https://twitter.com/LogLogGames/status/1449485172114591749),
+    [new item pickup](https://twitter.com/LogLogGames/status/1449742242734772225),
+    [jumping zombies](https://twitter.com/LogLogGames/status/1450922044065992708),
+    [death animation](https://twitter.com/LogLogGames/status/1451088866052489218).
+  - [An update about the progress of Rust version of Nox Futura][noxfutura-devlog].
+  - [A Recall Singularity][recall] shared a [YouTube video](https://youtube.com/watch?v=nsjnCZslNdg)
+    that shows new shooting sounds, camera movement, and asteroid dragging.
+- Other learning material updates:
+  - [A video by TanTan](https://youtube.com/watch?v=G-IuH6R-yD8)
+    about rewriting a voxel game three times: in Unity, Rust (no engine) and Bevy.
+- Other engine updates:
+  - [A recording of the first rg3d live-coding stream](https://reddit.com/r/rust/comments/qena0b/media_rg3d_game_engine_live_coding).
+  - The first prototype of [VNgine] - Visual Novel Engine -
+    [was announced on /r/rust](https://reddit.com/r/rust/comments/pyvcen/first_prototype_of_vngine).
+  - Also, a general purpose graphics engine [Blue Engine][blue-engine]
+    [was announced on /r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/q4rana/blue_engine).
+- Other tooling updates:
+  - [Fearless-NES] is a NES emulator written using egui, macroquad, and GilRs.
+  - [FishSteam] is a tool for deploying SteamWorks-enabled steam builds
+    for Windows/macOS/Linux without SteamWorks SDK on a CI.
+- Other library updates:
+  - [Crevice v0.8](https://github.com/LPGhatguy/crevice/blob/main/CHANGELOG.md#080---2021-10-26)
+    brings a direct support for many math libraries
+    and allows to generate GLSL source from structs.
+  - [SPV] 0.0.6 is the second pre-alpha release of a celestial object position
+    and velocity calculator.
+  - [Thunderdome] generational arena library released
+    [0.4..0.5 versions](https://github.com/LPGhatguy/thunderdome/blob/main/CHANGELOG.md).
+  - [egui 0.15](https://reddit.com/r/rust/comments/qeue67/announcing_egui_015) brings:
+    syntax highlighting, horizontal scrolling, new monospace font,
+    and a new opt-in glow backend for eframe.
+  - [New puffin-egui/puffin-viewer](https://twitter.com/ernerfeldt/status/1447961523696066564)
+    allows selection and manipulation of multiple frames.
+  - [Shalrath] is a fully-safe Rust representation and nom parser for Quake map files.
+
+[Bitgun]: https://store.steampowered.com/app/1673940/BITGUN
+[@LogLogGames]: https://twitter.com/LogLogGames
+[noxfutura-devlog]: https://reddit.com/r/roguelikedev/comments/pqbvv1/sharing_saturday_380/hdbx5xt
+[mk48.io]: https://mk48.io
+[recall]: https://twitter.com/RecallSingular1
+[Fearless-NES]: https://github.com/TomasKralCZ/Fearless-NES
+[FishSteam]: https://github.com/not-fl3/FishFight-The-Prequel/tree/main/fishsteam
+[VNgine]: https://gitlab.com/porky11/vngine-rs
+[blue-engine]: https://github.com/ElhamAryanpur/BlueEngine
+[Crevice]: https://github.com/LPGhatguy/crevice
+[SPV]: https://github.com/AlbinSjoegren/SPV
+[Thunderdome]: https://github.com/LPGhatguy/thunderdome/blob/main/CHANGELOG.md
+[Shalrath]: https://github.com/QodotPlugin/shalrath
+
+## Meeting Minutes
+
+There is currently discussion ongoing around bringing back the
+Rust GameDev Working Group's regular meetings.
+
+If you are interested in getting involved, please join the
+[discussion thread](https://github.com/rust-gamedev/wg/discussions/115)
+on the working group's issue tracker!
+
+## Discussions
+
+### [Async Game Server Design][async-game-server]
+
+On the Rust user forum, there was [a post][async-game-server]
+asking how to use async/await (more specifically, `tokio` and
+`tokio_tungstenite`) to develop a multiplayer game server.
+The responses contain some useful ideas and advice which
+may be helpful for other people's projects!
+
+[async-game-server]: https://users.rust-lang.org/t/tokio-tungstenite-async-game-server-design/65996
+
+## Requests for Contribution
+
+- [Graphite is looking for contributors][graphite-contribute] to help reach
+  the 0.1 Alpha release.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust/comments/qoy5rv/this_month_in_rust_gamedev_27_october_2021/),
+[Twitter](https://twitter.com/rust_gamedev/status/1457461009833238528),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/027/libracity.png b/content/news/027/libracity.png
new file mode 100644
index 000000000..3519558a1
Binary files /dev/null and b/content/news/027/libracity.png differ
diff --git a/content/news/027/lonely-star.png b/content/news/027/lonely-star.png
new file mode 100644
index 000000000..d1e45d51f
Binary files /dev/null and b/content/news/027/lonely-star.png differ
diff --git a/content/news/027/me_and_my_unicycle_cover.png b/content/news/027/me_and_my_unicycle_cover.png
new file mode 100644
index 000000000..b324b04f0
Binary files /dev/null and b/content/news/027/me_and_my_unicycle_cover.png differ
diff --git a/content/news/027/paddlepunks-gameplay.gif b/content/news/027/paddlepunks-gameplay.gif
new file mode 100644
index 000000000..5387e51bf
Binary files /dev/null and b/content/news/027/paddlepunks-gameplay.gif differ
diff --git a/content/news/027/rend3-scifi.jpg b/content/news/027/rend3-scifi.jpg
new file mode 100644
index 000000000..6d8b5ce54
Binary files /dev/null and b/content/news/027/rend3-scifi.jpg differ
diff --git a/content/news/027/spv-0.1.0.png b/content/news/027/spv-0.1.0.png
new file mode 100644
index 000000000..4c5dc690d
Binary files /dev/null and b/content/news/027/spv-0.1.0.png differ
diff --git a/content/news/027/the_process.gif b/content/news/027/the_process.gif
new file mode 100644
index 000000000..c66737079
Binary files /dev/null and b/content/news/027/the_process.gif differ
diff --git a/content/news/027/veloren.jpg b/content/news/027/veloren.jpg
new file mode 100644
index 000000000..0453d1f0c
Binary files /dev/null and b/content/news/027/veloren.jpg differ
diff --git a/content/news/027/wor-capsule.jpg b/content/news/027/wor-capsule.jpg
new file mode 100644
index 000000000..ef169ea75
Binary files /dev/null and b/content/news/027/wor-capsule.jpg differ
diff --git a/content/news/028/bendyworm.gif b/content/news/028/bendyworm.gif
new file mode 100644
index 000000000..5b56b46c7
Binary files /dev/null and b/content/news/028/bendyworm.gif differ
diff --git a/content/news/028/bitgun-zombies.jpeg b/content/news/028/bitgun-zombies.jpeg
new file mode 100644
index 000000000..edaa8e453
Binary files /dev/null and b/content/news/028/bitgun-zombies.jpeg differ
diff --git a/content/news/028/cac-crossing.png b/content/news/028/cac-crossing.png
new file mode 100644
index 000000000..b67c5e4e3
Binary files /dev/null and b/content/news/028/cac-crossing.png differ
diff --git a/content/news/028/country_slice_gif.gif b/content/news/028/country_slice_gif.gif
new file mode 100644
index 000000000..fed88f2b7
Binary files /dev/null and b/content/news/028/country_slice_gif.gif differ
diff --git a/content/news/028/fishfight.gif b/content/news/028/fishfight.gif
new file mode 100644
index 000000000..4692d05a3
Binary files /dev/null and b/content/news/028/fishfight.gif differ
diff --git a/content/news/028/flesh.gif b/content/news/028/flesh.gif
new file mode 100644
index 000000000..4331fded6
Binary files /dev/null and b/content/news/028/flesh.gif differ
diff --git a/content/news/028/gamedev-meetup.png b/content/news/028/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/028/gamedev-meetup.png differ
diff --git a/content/news/028/godot-rust-modules.png b/content/news/028/godot-rust-modules.png
new file mode 100644
index 000000000..ae370493d
Binary files /dev/null and b/content/news/028/godot-rust-modules.png differ
diff --git a/content/news/028/graphite_splash.png b/content/news/028/graphite_splash.png
new file mode 100644
index 000000000..726e67a94
Binary files /dev/null and b/content/news/028/graphite_splash.png differ
diff --git a/content/news/028/hgs5.jpg b/content/news/028/hgs5.jpg
new file mode 100644
index 000000000..4720b86fe
Binary files /dev/null and b/content/news/028/hgs5.jpg differ
diff --git a/content/news/028/hgs5.png b/content/news/028/hgs5.png
new file mode 100644
index 000000000..1522ba27c
Binary files /dev/null and b/content/news/028/hgs5.png differ
diff --git a/content/news/028/hor-bonus.jpg b/content/news/028/hor-bonus.jpg
new file mode 100644
index 000000000..69f1a46d8
Binary files /dev/null and b/content/news/028/hor-bonus.jpg differ
diff --git a/content/news/028/idu.gif b/content/news/028/idu.gif
new file mode 100644
index 000000000..20f66c4f6
Binary files /dev/null and b/content/news/028/idu.gif differ
diff --git a/content/news/028/index.md b/content/news/028/index.md
new file mode 100644
index 000000000..f7ad574d6
--- /dev/null
+++ b/content/news/028/index.md
@@ -0,0 +1,920 @@
++++
+title = "This Month in Rust GameDev #28 - November 2021"
+transparent = true
+date = 2021-12-09
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 28th issue of the Rust GameDev Workgroup's monthly newsletter.
+[Rust] is a systems language pursuing the trifecta: safety, concurrency, and
+speed. These goals are well-aligned with game development. We hope to build an
+inviting ecosystem for anyone wishing to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process by watching [the coordination
+issues][coordination]. Want something mentioned in the next newsletter? [Send us
+a pull request][pr]. Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The eleventh Rust Gamedev Meetup happened in November. You can watch the
+recording of the meetup [here on Youtube][gamedev-meetup-video]. The meetups
+take place on the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [December 11th][rust-meetup-dec-time], fill out
+[this form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/nLyiLnC5mn4
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[rust-meetup-dec-time]: https://everytimezone.com/s/bb9cdaec
+
+## Game Updates
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="The melee weapon in action") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+an organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- Support different types of ships that players can choose.
+- Add a melee weapon.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### [One-Click Ninja]
+
+{{ image_figure(
+    alt="Screenshot of One-Click Ninja"
+    src="one-click-ninja.png"
+    caption="Screenshot of One-Click Ninja") }}
+
+One-Click Ninja is a rhythm game made in 10 days for [1-Button Jam 2021],
+written in Rust using the [Bevy] engine.
+
+The source is available MIT licensed on [GitHub][One-Click Ninja], and you can
+[play in your browser on itch.io][One-Click Ninja itch.io].
+
+[One-Click Ninja]: https://github.com/fluffysquirrels/one-click-ninja
+[One-Click Ninja itch.io]: https://fluffysquirrels.itch.io/one-click-ninja
+[1-Button Jam 2021]: https://itch.io/jam/1-button-jam-2021
+[Bevy]: https://bevyengine.org
+
+### [Fish Fight: The Prequel][fishfight-steam]
+
+[![fishfight](fishfight.gif)][fishfight-steam]
+
+Fish Fight is a fast-paced 2D brawler game, played by 1-4 players online or on a
+shared screen, built with [macroquad] game engine.
+
+This month it got a trailer, and the game is now available to wishlist on
+[Steam][fishfight-steam]!
+
+[macroquad]: https://github.com/not-fl3/macroquad
+[fishfight-github]: https://github.com/FishFight/FishFightThePrequel
+[fishfight-steam]: https://store.steampowered.com/app/1771640/Fish_Fight_The_Prequel/
+
+### [BITGUN][bitgun-steam]
+
+[![Gameplay screenshot with lots of zombies in a tunnel](bitgun-zombies.jpeg)][bitgun-steam]
+
+BITGUN ([Steam][bitgun-steam], [Twitter][bitgun-twitter],
+[Discord][bitgun-discord]) by [@LogLogGames][bitgun-twitter] is an action
+roguelike zombie shooter with lots of blood. The game is built using Godot and
+Rust (via [godot-rust][bitgun-godot-rust]).
+
+They recently implemented a mission system, where you can select one of [three
+types of missions][bitgun-missions] to go to from the central camp. One is to
+defend supplies from a horde of zombies, the second is to search a facility for some
+object or clear all the zombies and the last one is to fight your way through a
+tunnel full of spiders and other enemies! They also worked on a
+[tutorial][bitgun-tutorial].
+
+[bitgun-steam]: https://store.steampowered.com/app/1673940/BITGUN/
+[bitgun-twitter]: https://twitter.com/logloggames
+[bitgun-discord]: https://discord.gg/XrGZQkq
+[bitgun-godot-rust]: https://godot-rust.github.io/
+[bitgun-missions]: https://twitter.com/LogLogGames/status/1464009563976392713?s=20
+[bitgun-tutorial]: https://twitter.com/LogLogGames/status/1461898845810348033?s=20
+
+### [Halloween Mahjong Solitaire][mahjong-github]
+
+{{ image_figure(
+    alt="Halloween Mahjong Solitaire screenshot"
+    src="mahjong-screenshot.png"
+    caption="Screenshot of Halloween Mahjong Solitaire") }}
+
+Halloween Mahjong Solitaire ([GitHub][mahjong-github]) by
+[@Syn-Nine][synnine-twitter] is a game created for the [Game Developers
+Refuge 4x4x4 Challenge] in October 2021.
+
+The challenge was to create a Halloween-themed game based on four emojis. In
+this case the chosen emoji combination was: skull_and_crossbones, bat, game_die,
+and shinto_shrine (☠️ 🦇 🎲 ⛩️).
+
+The game is part of an open source repository of several mini-games that use
+Syn9's [Rust Mini Game Framework][mgfw].
+
+[mahjong-github]: https://github.com/Syn-Nine/rust-mini-games/tree/main/2d-games/mahjong
+[synnine-twitter]: https://twitter.com/Syn9Dev
+[Game Developers Refuge 4x4x4 Challenge]: http://noop.rocks/gdr/viewtopic.php?f=2&t=70
+[mgfw]: https://github.com/Syn-Nine/mgfw
+
+### Country Slice
+
+![country-slice-gif](country_slice_gif.gif)
+
+[Country Slice][country-slice-github] is
+[@anastasiaopara][country-slice-twitter]'s hobby project, where users can draw a
+small scene, and their input is amplified with real-time procedural geometry
+generation.
+
+Country Slice uses [Bevy Engine][bevy-link] for entity management, and has
+recently [been ported to OpenGL][country-slice-twitter-opengl] (using
+[gl-rs][gl-rs-link] and [glutin][glutin-link]). It is being developed openly on
+[GitHub][country-slice-github].
+
+You can follow the development of Country Slice on
+[Twitter][country-slice-twitter].
+
+[country-slice-github]: https://github.com/anopara/country-slice
+[country-slice-twitter]: https://twitter.com/anastasiaopara/
+[country-slice-twitter-opengl]: https://twitter.com/anastasiaopara/status/1464304076074672144?s=20
+[bevy-link]: https://github.com/bevyengine/bevy
+[gl-rs-link]: https://github.com/brendanzab/gl-rs/tree/master/gl
+[glutin-link]: https://github.com/rust-windowing/glutin
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Travelling merchant"
+    src="veloren.jpg"
+    caption="A merchant paused in their travels") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In November, Veloren started a new initiative to help new developers learn more
+about the codebase; the Veloren Reading Club. You can watch the
+[first][veloren-reading-club-1] and [second][veloren-reading-club-2] sessions
+now. Hats were merged, and a major rewrite of the server-hosting section of the
+book happened. New textures were made for item drops. Some concept art was
+created for what massive cities could look like. Dynamic weather was added, and
+you can [watch that in action][veloren-rain-storm].
+
+Experience sharing went through a large overhaul to evenly distribute EXP gained
+across groups. The difficulty of dungeons was adjusted to be more balanced for
+new players. Persistence was added to skills, and measures were put in place to
+help with future migrations to new skill trees. Work was done on site2, the
+system that is used to generate structures procedurally. This will help
+make the variance more dynamic by adding more parameters that can be adjusted.
+In December, Veloren will release 0.12, hopefully with some holiday spirit!
+
+November's full weekly devlogs: "This Week In Veloren...":
+[#144][veloren-144],
+[#145][veloren-145],
+[#146][veloren-146],
+[#147][veloren-147],
+[#148][veloren-148].
+
+[veloren]: https://veloren.net
+[veloren-144]: https://veloren.net/devblog-144
+[veloren-145]: https://veloren.net/devblog-145
+[veloren-146]: https://veloren.net/devblog-146
+[veloren-147]: https://veloren.net/devblog-147
+[veloren-148]: https://veloren.net/devblog-148
+[veloren-reading-club-1]: https://www.youtube.com/watch?v=DpXwYEe_LWo
+[veloren-reading-club-2]: https://www.youtube.com/watch?v=n8XayRvVBEs
+[veloren-rain-storm]: https://www.youtube.com/watch?v=MZwfaohynvc
+
+### [BENDYWORM]
+
+{{ image_figure(
+    alt="An animation of a platformer where the entire world bends around
+you"
+    src="bendyworm.gif"
+    caption="Watch out! The entire world bends around you!") }}
+
+BENDYWORM ([GitHub][BENDYWORM-github], [Twitter][BENDYWORM-twitter]) by
+[@bauxitedev][BENDYWORM-bauxitedev] is a platformer with a twist: the entire
+world bends and twists around you as your progress through the level. Why?
+Because you're inside of a gigantic worm, and worms are bendy.
+
+The game was made for GitHub Game Off 2021, and uses `godot-rust` behind the
+scenes.
+
+The game is available for free on [itch.io][BENDYWORM-itch.io], and the source
+code is available on [GitHub][BENDYWORM-github].  (Windows only for now, Linux
+build available soon)
+
+_Discussions:
+[/r/rust/][BENDYWORM-reddit],
+[Twitter][BENDYWORM-twitter]_
+
+[BENDYWORM]: https://bauxite.itch.io/bendyworm
+[BENDYWORM-bauxitedev]: https://twitter.com/bauxitedev
+[BENDYWORM-twitter]: https://twitter.com/bauxitedev/status/1466034866122891266
+[BENDYWORM-itch.io]: https://bauxite.itch.io/bendyworm
+[BENDYWORM-github]: https://github.com/Bauxitedev/bendyworm
+[BENDYWORM-reddit]: https://www.reddit.com/r/rust/comments/r742z1/
+
+### [Molecoole][molecoole-steam]
+
+[![A molecoole and some enemies](molecoole.png)][molecoole-steam]
+
+Molecoole is a top-down shooter roguelike where you build your character from
+different atoms. Each atom has a unique ability to provide tons of variety
+between playthroughs. It's made using the [Bevy
+Engine](https://github.com/bevyengine/bevy).
+
+This month Molecoole launched its [Steam page][molecoole-steam]! They also added
+[new weapons][weapon-twitter] and new [bosses][boss-twitter].
+
+In December their main focus will be on audio and polishing the game.
+
+[molecoole-steam]: https://store.steampowered.com/app/1792170/Molecoole/
+[weapon-twitter]: https://twitter.com/kiss_mrton/status/1459567092995403776
+[boss-twitter]: https://twitter.com/kiss_mrton/status/1457022034949689351
+
+### [Hydrofoil Generation]
+
+![hgs_screen](hgs5.jpg)
+
+[Hydrofoil Generation] ([Facebook][hgs_facebook], [Discord][hgs_discord]) is a
+realistic sailing/foiling inshore simulator in development for PC/Steam that
+will put you in the driving seat of modern competitive sailing.
+
+November was dedicated to the launch of the [Steam Store][hgs_steam] page and
+associated [trailer][hgs_trailer] showcasing Hydrofoil Generation's custom Rust
+engine in motion for the first time. Constant tweaks to the boat behavior and
+addition of gameplay features are ongoing as the planned Q2 2022 Steam Early
+Access release gets closer and closer.
+
+December 2021 will see an attempt to port the rendering backend of the game from
+DirectX 11 to WGPU to widen the number of platforms reachable with a
+particular interest in the Steam Deck that seems to offer the perfect controller
+layout for such a demanding simulation as Hydrofoil Generation.
+
+You will be able to follow the progress of the port Mondays and Fridays on
+[Twitch][hgs_twitch].
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://www.facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+[hgs_trailer]: https://youtu.be/CfmCLr19Hbs
+[hgs_twitch]: https://www.twitch.tv/kunosstefano
+
+### Idu
+
+![idu's new sprinkler in action](idu.gif)
+
+Idu ([Discord][idu-discord]) by [@logicsoup] and [@epcc10] is an upcoming game
+centered around growing realistic plants.
+
+In November, a new major update was released that overhauled the automatic
+watering system. In addition, an automatic stair builder and a grass-cutting
+tool was added to reduce the tediousness of these common tasks.
+
+A free playable alpha demo is available at [Idu's Discord server's
+demo-download channel][idu-discord]! Updates are posted to their
+[Youtube][idu-youtube] as well.
+
+[@logicsoup]: https://twitter.com/logicsoup
+[@epcc10]: https://twitter.com/epcc10
+[idu-discord]: https://discord.gg/PR3GgYYkym
+[idu-youtube]: https://www.youtube.com/channel/UC1JmPXgbR5R2dCsM_QJGe1w
+
+### [Combine&Conquer][cnc-logs]
+
+![items moving through the belt](cac-crossing.png)
+
+Combine&Conquer by [Martin Buck][@I3ck] is a WIP strategy game about automation
+similar to Satisfactory or Factorio.
+
+This month Martin finished [writing a detailed devlog][cnc-logs] for the project
+from the first commit up until now. A few dozen short posts cover various topics
+including simulation of arms and conveyor belts with moving items, blueprints,
+testing, rendering, save and load, tech tree and research, and multiplayer.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/qj03ji/cnc)_
+
+[cnc-logs]: https://buckmartin.de/combine-and-conquer.html
+[@I3ck]: https://github.com/I3ck
+
+### [PaddlePunks][paddlepunks-itch]
+
+{{ image_figure(
+    alt="Pong, but one of the characters rewinds time to figure out which of the other
+         player's ballusions is actually real"
+    src="paddlepunks-rewind.gif"
+    caption="One of the
+             characters can spend super meter to rewind time, this is strong but pretty
+             situational.") }}
+
+PaddlePunks is a versus tennis game by [Felix Windström][paddlepunks-twitter]
+with a diverse cast of characters and playstyles and online play with rollback
+netcode.
+
+Latest developments:
+
+- Some engine work to improve performance on laptops with integrated GPUs
+- Balance updates to make the skeleton less overbearing
+- Presented the game at [Rustfest][paddlepunks-rustfest] in an interactive
+  session.
+
+You can download and play the game now on [itch.io][paddlepunks-itch], or join
+the [Discord][paddlepunks-discord] to chat with the developer and other players.
+
+[paddlepunks-twitter]: https://twitter.com/sov_gott_games
+[paddlepunks-itch]: https://sovgott.itch.io/paddlepunks
+[paddlepunks-discord]: https://discord.gg/cpPDeVcWxc
+[paddlepunks-rustfest]: https://watch.rustfest.global/
+
+### [Shroom Kingdom][shroom-kingdom]
+
+Shroom Kingdom ([GitHub][shrm-github], [Discord][shrm-discord],
+[Twitter][shrm-twitter]) is an upcoming play-to-earn video game built with web
+technologies running on the [NEAR Blockchain][near-blockchain]. It is a 2D
+platformer, where players can also build their own levels and share them with
+others.
+
+Currently, a prototype of the game is in development. The game is written with
+the [Bevy game engine][bevy] and the [Rapier physics engine][rapier] and is
+compiled to WebAssembly. The prototype is still very basic, but you can already
+place and remove blocks and have a feeling about the physics recreation of the
+original games.
+
+In the past months, there also has been the SHRM token launch and a [token
+airdrop][shrm-airdrop] for NEAR early adopters. The [Shroom Kingdom
+DAO][shrm-dao] is looking for people, who want to become involved and get paid
+with their very own token.
+
+To onboard new users to blockchain gaming, a [linkdrop campaign][shrm-linkdrop]
+is currently in development, where people can claim a small amount of NEAR token
+to create their own wallet.
+
+[shroom-kingdom]: https://shroomkingdom.net/
+[shrm-github]: https://github.com/Shroom-Kingdom
+[shrm-discord]: https://discord.gg/SPZsgSe
+[shrm-twitter]: https://twitter.com/shrm_kingdom
+[near-blockchain]: https://near.org
+[bevy]: https://bevyengine.org/
+[rapier]: https://rapier.rs/
+[shrm-airdrop]: https://twitter.com/shrm_kingdom/status/1450362543608901634?s=20
+[shrm-dao]: https://whitepaper.shroomkingdom.net/8_DAO.html
+[shrm-linkdrop]: https://linkdrop.shroomkingdom.net/
+
+## Engine Updates
+
+### [Tetra] 0.6.7
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, version 0.6.7 was released, featuring:
+
+- Updates to the gamepad backend, adding rumble support for a much wider variety
+  of controllers (including DualShock 4s)
+- Various bugfixes and docs improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+Additionally, development has begun on version 0.7 - check out [the planned
+features and changes][tetra-07], and feel free to suggest more!
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[tetra-07]: https://github.com/17cupsofcoffee/tetra/issues/297
+
+### [Oxygengine] v0.24.0
+
+![Oxygengine RPG game template](oxygengine-overworld.gif)
+
+The hottest HTML5 + WASM game engine for games written in Rust with web-sys.
+
+[@PsichiX], the creator of [Oxygengine], spent the last two months on making:
+
+- First few chapters of the book explaining how Oxygengine works in: [Oxygengine
+  Essentials Book][oxygengine-book].
+- New hardware-accelerated renderer based on Material Graphs (to allow making
+  faster and better quality game visuals - more about that in [Material Graph
+  based rendering][oxygengine-material-graph] chapter).
+- New Overworld game module (which aims to provide all essential features needed
+  by RPG game developers, to let them focus on making an actual game).
+- New AI feature module (WIP) that integrates [Emergent AI][emergent] crate with
+  the engine.
+- Plugin-based asset pipeline as well as support for LDtk software projects.
+
+All of these changes mark the beginning of stabilizing phase of the engine. The
+API more or less won't change much - now the focus is put entirely on the
+features that will push progress towards the Ignite visual game editor for
+artists and game designers to use.
+
+[Oxygengine]: https://github.com/PsichiX/Oxygengine
+[@PsichiX]: https://twitter.com/PsichiX
+[oxygengine-book]: https://psichix.github.io/Oxygengine/
+[oxygengine-material-graph]: https://psichix.github.io/Oxygengine/concepts/ha-renderer/introduction.html#material-graph-based-rendering
+[emergent]: https://github.com/PsichiX/emergent
+
+## Learning Material Updates
+
+### [The Raytracer Challenge][raytracer-challenge-github]
+
+[![The Raytracer Challenge](the-raytracer-challenge.jpg)][raytracer-challenge-playlist]
+
+[The Raytracer Challenge][raytracer-challenge-github] is a project with the goal
+to write a raytracer from scratch in Rust, while showing each step of the way
+[as a weekly live coding session][raytracer-challenge-playlist]. Everything is
+documented, starting with implementing [Vectors][raytracer-challenge-vector] and
+[Matrices][raytracer-challenge-matrix] all the way to creating [Phong
+Lighting][raytracer-challenge-phong].
+
+November has been a busy month for the project with lots of visual changes in
+the raytraced results:
+
+- A [camera][raytracer-challenge-camera] was added to allow arbitrary views on
+  the [World][raytracer-challenge-world].
+
+- [Basic animation support][raytracer-challenge-animation] came along allowing
+  the easy creation of video sequences.
+
+- More realistic and life-like scenes due to [Shadow
+  Casting][raytracer-challenge-shadows].
+
+- As a new basic body type [Planes][raytracer-challenge-planes] came to life.
+
+[raytracer-challenge-github]: https://github.com/jakobwesthoff/the_ray_tracer_challenge_in_rust
+[raytracer-challenge-playlist]: https://www.youtube.com/playlist?list=PLy68GuC77sUTyOUvDhVboQoOlHoa4XrSO
+[raytracer-challenge-vector]: https://youtu.be/xGEDQXBMdV4
+[raytracer-challenge-matrix]: https://youtu.be/RYALPW0pJr4
+[raytracer-challenge-phong]: https://youtu.be/HSgS_NQob2I
+[raytracer-challenge-camera]: https://youtu.be/izzp4xZfcHI
+[raytracer-challenge-world]: https://youtu.be/1l54RUGigtk
+[raytracer-challenge-animation]: https://youtu.be/3LinpB7ns60
+[raytracer-challenge-shadows]: https://youtu.be/agqAUa1qgGo
+[raytracer-challenge-planes]: https://youtu.be/4y1aRPiH9Ko
+
+### [Rustacean Station 48][rustacean-station-48]
+
+![Rustacean Station Logo](rustacean-station.jpeg)
+
+The [Rustacean Station][rustacean-station] is a podcast about the Rust language.
+
+In November, [Herbert Wolverson][herbert-wolverson] [was
+interviewed][rustacean-station-48] about game development in Rust. In this
+episode, lots is discussed about existing game development engines, and how Rust
+is breaking into this space with engines like Bevy, Amethyst, and RG3D. There is
+also a discussion on the Entity Component System paradigm in comparison to
+Object Oriented Programming.
+
+[herbert-wolverson]: https://twitter.com/herberticus
+[rustacean-station]: https://rustacean-station.org/
+[rustacean-station-48]: https://rustacean-station.org/episode/048-herbert-wolverson/
+
+### [Rust on the GPU][raph-blog-post]
+
+In [this blog post][raph-blog-post], [Raph Levien] describes the current state
+of coding on a graphics card. The post describes how going about writing custom
+code still induces many issues in this day and age, and what modern technologies
+can be used to help make this easier. [Rust-gpu] is mentioned as a possible way
+to write compute shaders in a "real language".
+
+[Rust-gpu]: https://github.com/EmbarkStudios/rust-gpu
+[Raph Levien]: https://levien.com/
+[raph-blog-post]: https://raphlinus.github.io/gpu/2021/11/17/prefix-sum-portable.html
+
+### [Rust Roguelike Tutorial][rl-tut]
+
+{{ image_figure(
+    alt="ascii map and ui"
+    src="rl-tut.jpg"
+    caption="A nasty demon monster at the exit to Abyss") }}
+
+[The Roguelike Tutorial][rl-tut] by [@herberticus] got a [new 75th (!)
+chapter][rl-tut-new] that shows how to generate a chaotic Voronoi-based city
+plaza inhabited by dark elves and adds a new big demon enemy to guard the Abyss
+portal.
+
+> You can battle your way down to the Dark Elf Plaza,
+> and find the gateway to Abyss - but only if you can evade a hulking demon
+> and a horde of elves---with very little in the way of help offered.
+> Next up, we'll begin to build the Abyss.
+
+[@herberticus]: https://twitter.com/herberticus
+[rl-tut]: http://bfnightly.bracketproductions.com/rustbook
+[rl-tut-new]: http://bfnightly.bracketproductions.com/rustbook/chapter_75.html
+
+### [Hands-on Rust][hor]
+
+{{ image_figure(
+    alt="A screenshot of a game in a browser"
+    src="hor-bonus.jpg"
+    caption="A Dungeon Crawler running in a browser") }}
+
+Another update from [@herberticus] is a bonus article for the [Hands-on
+Rust][hor] book: ["Run Your Rust Games in a Browser"][hor-bonus] that guides the
+reader through the basics of building and publishing [bracket-lib] games in
+WebAssembly.
+
+[hor-bonus]: https://hands-on-rust.com/2021/11/06/run-your-rust-games-in-a-browser-hands-on-rust-bonus-content/
+[hor]: https://hands-on-rust.com
+[bracket-lib]: https://github.com/amethyst/bracket-lib
+
+## Tooling Updates
+
+### [SPV]
+
+![SPV-0.3.5 screenshot](spv-0.3.5.png)
+
+[SPV] by [Albin Sjögren] is a calculator utility for working with astronomical
+position and velocity data.
+
+In the last month, a relative position and velocity calculation system has been
+added. This is due to the inaccuracy of astronomic data. With this new method
+that relies on the orbital elements of two body systems getting data for
+multibody simulation is now possible.
+
+Apart from this new equation set, [SPV] now also has a more standard color
+scheme based on the one GitHub uses. This month also came with numerous bug
+fixes and a more concrete plan for future development.
+
+For any feature requests, reach out to the developer on [Discord][spv-discord]
+or [GitHub][spv].
+
+[SPV]: https://github.com/AlbinSjoegren/SPV
+[spv-discord]: https://discordapp.com/users/258254056185659392
+[Albin Sjögren]: https://github.com/AlbinSjoegren
+
+### [PickPicPack] 0.1.6
+
+![PickPicPack 0.1.6](pickpicpack_0.1.6.gif)
+
+[PickPicPack] ([GitHub][PPP_github], [Gumroad][PPP_gumroad]) by
+[@p4ymak][p4ymak_www] is a tiny yet powerful utility for packing images into
+rectangles with arbitrary aspect ratio.
+
+It is useful for creating mood boards, daily art reports, presentations and
+other collages.
+
+Features so far:
+
+- Interactive loading
+- Scaling images to equal size
+- Optional margin between images
+- Custom aspect ratio; now you can set aspect ratio by text in any form
+- CLI; you can use it without GUI and embed it into your project manager tool
+
+[PickPicPack]: http://www.p43d.com/pickpicpack
+[PPP_github]: https://github.com/p4ymak/pickpicpack
+[PPP_gumroad]: https://p4ymak.gumroad.com/l/pickpicpack
+[p4ymak_www]: http://www.p43d.com/p4ymak
+
+### [Graphite][graphite-repo]
+
+![Graphite](graphite_splash.png)
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter][graphite-twitter]) is an in-development vector and raster graphics
+editor built on a non-destructive node-based workflow.
+
+The previously announced Alpha release was delayed as core devs returned to
+school - January is the new goal. Development now continues to pick up speed.
+Design of the project website has continued for its launch soon, alongside the
+Alpha release.
+
+The project upgraded to the Rust 2021 edition and made big improvements to the
+frontend TypeScript and web infrastructure. The editor UI is now fully
+responsive at small window sizes. Unsaved document tabs display an `*` and warn
+before closing the window. Ruler measurements now move and scale with the
+document. And the new snapping system helps draw/move shapes aligned with
+others.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making
+steady progress towards becoming a non-destructive, procedural graphics editor
+suitable for replacing traditional 2D DCC applications. [Join the
+Discord][graphite-discord] and get involved!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.design
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design
+
+### [Solid Editor][solid]
+
+{{ image_figure(
+    alt="youtube preview: modelling tree's branches using ball as a cursor"
+    src="solid-editor.jpg"
+    caption="A [demo video][solid-video] of using the editor",
+    link="https://youtube.com/watch?v=GuVM3W9Pfdg") }}
+
+[Solid Editor][solid] is [Solid Engine][solid-engine]'s custom-built voxel
+graphics editor. It is designed to be a key part of the engine's asset pipeline,
+enabling the creation of game-ready voxel graphics assets. Since the engine part
+is pretty far from being done, the author decided to release this editor as a
+standalone application.
+
+> Besides being natively compatible with Solid Engine, the editor sports some
+> generally interesting and unique features.
+>
+> - True WYSIWYG editing. The editor scene is rendered using Solid Engine's path
+>   tracer in real-time, yielding realistic lighting while editing.
+> - The possibility to edit voxels directly in 3D, by using any brightly colored
+>   ball as a 3D pointing device. Read more about the [Ball
+>   Pointer][solid-ball].
+> - A novel approach to editor tools. Instead of many different tools with
+>   overlapping functionality (e.g. "draw square" vs. "select square", or
+>   "bucket fill" vs. "magic wand") there is only one, a versatile Selection
+>   tool. Different effects can be applied to the selected voxels, producing the
+>   same results as regular editor tools. Combined with real-time effect
+>   preview, the user experience is very similar to that of classic graphics
+>   editors, with the added benefit of being able to tweak every edit before
+>   applying it.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/qrsu1n/solid_editor_a_voxel_editor)_
+
+[solid]: https://solidengine.org/solid-editor
+[solid-engine]: https://solidengine.org
+[solid-video]: https://youtube.com/watch?v=GuVM3W9Pfdg
+[solid-ball]: https://solidengine.org/ball-pointer
+
+## Library Updates
+
+### [Pixels] 0.8.0 👾
+
+[Pixels] is a tiny hardware-accelerated pixel framebuffer. Its goals include
+pixel-perfect rendering and custom shader pipelines for textures with direct
+pixel access. It's perfect for making 2D animations, games, and emulators.
+
+Version 0.8.0 was released this month, bringing highly-anticipated support for
+WASM targets, as well as support for Raspberry Pi 4. A [minimal example for web
+browsers][pixels-web] is included to get you started. Full details are available
+in the [release notes][pixels-changelog].
+
+[pixels]: https://github.com/parasyte/pixels
+[pixels-changelog]: https://github.com/parasyte/pixels/releases/tag/0.8.0
+[pixels-web]: https://github.com/parasyte/pixels/tree/0.8.0/examples/minimal-web
+
+### [Quinn]
+
+[Quinn] is an async-enabled implementation of the state-of-the-art IETF QUIC
+transport protocol, a robust foundation for real-time networking.
+
+[Quinn 0.8][quinn_release] introduces support for the final QUIC 1 specification
+defined in [RFC 9000][RFC9000]. Other highlights include an improved CUBIC
+congestion controller, a more ergonomic configuration API, and numerous
+performance and robustness improvements.
+
+[Quinn]: https://github.com/quinn-rs/quinn
+[RFC9000]: https://www.rfc-editor.org/rfc/rfc9000.html
+[quinn_release]: https://github.com/quinn-rs/quinn/releases/tag/0.8.0
+
+### [hecs]
+
+[hecs] is a fast, lightweight, and unopinionated archetypal ECS library.
+
+[Version 0.7][hecs-changelog] introduces several new features, including two new
+query combinators, a `CommandBuffer` for recording operations to be applied to a
+`World` at a future time, accessors for efficient random access within columns,
+and a variant of `EntityBuilder` that clones its components and can therefore be
+spawned from repeatedly. Other improvements include compatibility with 32-bit
+MIPS and PPC, and introduction of a niche to `Entity` so that e.g.
+`Option<Entity>` will not consume additional space.
+
+[hecs]: https://github.com/Ralith/hecs
+[hecs-changelog]: https://github.com/Ralith/hecs/blob/master/CHANGELOG.md#071
+
+### [godot-rust](https://github.com/godot-rust/godot-rust)
+
+![module before/after](godot-rust-modules.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+November has been a month of refactoring for godot-rust. The API was cleaned up
+across different locations, reducing confusion and making the library more
+accessible:
+
+- The module simplification ([#811][gd-811]) continued initial efforts on the
+  module structure, such as shorter paths and avoidance of redundant re-exports.
+  Some differences between v0.9.3 and now can be seen in the above picture.
+- Several core symbols were renamed for consistency ([#815][gd-815]):
+  `RefInstance` -> `TInstance` and `TypedArray` -> `PoolArray`, among others.
+- Another refactoring affects the `Variant` conversion methods ([#819][gd-819]).
+  Instead of `Variant::to_i64()` which may silently fail and return a default
+  value (Godot behavior), the recommended method is now `Variant::to<T>()`. This
+  enables genericity and is more idiomatic in Rust, returning an `Option` to
+  indicate success or failure.
+
+As a binding to a C++ library, one topic godot-rust has to deal with is the use
+of `unsafe`, which sometimes boils down to a trade-off between safety and
+ease-of-use. Even though Rust provides basic guidelines, there are different
+philosophies on their execution, see [The CXX Debate][gd-cxx] for an example. To
+discuss how APIs interacting with Godot can be as ergonomic as possible while
+preserving safety, [issue #808][gd-808] was opened.
+
+[gd-808]: https://github.com/godot-rust/godot-rust/pull/808
+[gd-811]: https://github.com/godot-rust/godot-rust/pull/811
+[gd-815]: https://github.com/godot-rust/godot-rust/pull/815
+[gd-819]: https://github.com/godot-rust/godot-rust/pull/819
+
+[gd-cxx]: https://steveklabnik.com/writing/the-cxx-debate
+
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+
+### [NavMesh] v0.12.1
+
+NavMesh crate is a pathfinding library for 2D and 3D games.
+
+This month changes by [@PsichiX]:
+
+- Added NavGrid structure to find paths on grids.
+- Added NavFreeGrid structure to find paths on cells put in free layout manner
+  (used for example on clusters of cells rather than the condensed grid).
+- Added NavIslands structure to allow hierarchical pathfinding (used for
+  example with streamed navigation islands, such as other pathfinding
+  structures).
+
+[NavMesh]: https://github.com/PsichiX/navmesh
+
+### [Rust CUDA][rust-cuda-github]
+
+[Rust CUDA][rust-cuda-github] by [Riccardo D'Ambrosio] is a [newly-released
+project][rust-cuda-announcement] with the goal of making Rust a Tier-1 language
+for fast GPU computing. There are still many bugs, and it's in an early stage.
+
+With this release comes a few crates. [rustc_codegen_nvvm] for compiling Rust to
+CUDA PTX code using rustc's custom codegen mechanisms and the libnvvm CUDA
+library. [cust] for actually executing the PTX is a high-level wrapper for the
+CUDA Driver API. [cuda_builder] for easily building GPU crates. [cuda_std] is
+the GPU-side standard library which complements rustc_codegen_nvvm. [gpu_rand]
+is a GPU-friendly random number generation. [nvvm] is high-level bindings to
+libnvvm, and [ptx_compiler] is high-level bindings to the PTX compiler APIs,
+which are currently incomplete. [find_cuda_helper] is for finding CUDA on the
+system. There are many other works in progress.
+
+[rustc_codegen_nvvm]: https://crates.io/crates/rustc_codegen_nvvm
+[cust]: https://crates.io/crates/cust
+[cuda_builder]: https://crates.io/crates/cuda_builder
+[cuda_std]: https://crates.io/crates/cuda_std
+[gpu_rand]: https://crates.io/crates/gpu_rand
+[nvvm]: https://crates.io/crates/nvvm
+[ptx_compiler]: https://crates.io/crates/ptx_compiler
+[find_cuda_helper]: https://crates.io/crates/find_cuda_helper
+[Riccardo D'Ambrosio]: https://github.com/RDambrosio016
+[rust-cuda-github]: https://github.com/Rust-GPU/Rust-CUDA
+[rust-cuda-announcement]: https://www.reddit.com/r/rust/comments/qzv428/announcing_the_rust_cuda_project_an_ecosystem_of/
+
+## Other News
+
+- Other game updates:
+  - [Rust Shooter progress report][rust-shooter]:
+    GLTF import, more character animations and weapons, and underwater effects.
+  - [A video of the new record for speedrunning the Way of Rhea demo][war-speedrun]
+    (spoilers!)
+  - [Necrophaser] is a recently alpha-released Top-Down Shooter made with Bevy.
+  - [A new spaceship for Stellary 2][stellary].
+  - [Endless Trial] is a 2D bullet-hell game made in Tetra.
+- Other learning material updates:
+  - [GBA From Scratch] is a tutorial on how to code for the Game Boy Advance
+    using Rust.
+  - [Ping Pong Tutorial] is a walkthrough on creating a ping pong game in Rust.
+- Other engine updates:
+  - [rg3d now has a cheat/guide book][rg3d-book].
+  - [miniquad got a GL2 backend][miniquad-gl2] for even better support
+    of old and/or virtual systems.
+- Other library updates:
+  - [natura] is a simple and efficient spring animation library.
+
+[rust-shooter]: https://reddit.com/r/rust_gamedev/comments/r06n8o/rust_shooter_another_update
+[war-speedrun]: https://www.youtube.com/watch?v=Z0lKsABSwME
+[Necrophaser]: https://reddit.com/r/rust_gamedev/comments/ql65sw/alpha_release_of_necrophaser
+[stellary]: https://twitter.com/CoffeJunkStudio/status/1459493244648280071
+[Endless Trial]: https://reddit.com/r/rust_gamedev/comments/qw5e36/endless_trial_simple_2d_bullethell_game
+[GBA From Scratch]: https://lokathor.github.io/gba-from-scratch/introduction.html
+[Ping Pong Tutorial]: https://phychic-owl.medium.com/rust-project-ping-pong-game-665766cc45ed
+[rg3d-book]: https://rg3d-book.github.io
+[miniquad-gl2]: https://twitter.com/fedor_games/status/1462804219719831552
+[natura]: https://github.com/ziyasal/natura
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev):
+  - ["Using an ECS as a general-purpose storage container?"](
+    https://reddit.com/r/rust_gamedev/comments/qkb77k/ecs_as_general_container)
+  - ["Where to start?"](https://reddit.com/r/rust_gamedev/comments/qmdw2a/where_to_start)
+  - ["status of wasm32 support in existing game frameworks/engines"](
+    https://reddit.com/r/rust_gamedev/comments/qzhx8u/status_of_wasm32_support)
+  - ["Can Rust do what any C++ game server can at a similar speed?"](
+    https://reddit.com/r/rust_gamedev/comments/qze1v0/can_rust_do_what_c_server_can)
+  - ["Developing a cross-platform game for browser, Ios, and Android using rust?"](
+    https://reddit.com/r/rust_gamedev/comments/r0yia7/crossplatform_game_browser_ios)
+
+## Requests for Contribution
+
+- [Graphite is looking for contributors][graphite-contribute] to help reach
+  the 0.1 Alpha release.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/rcmz17/this_month_in_rust_gamedev_28_november_2021/),
+[Twitter](https://twitter.com/rust_gamedev/status/1469009470420398082),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/028/mahjong-screenshot.png b/content/news/028/mahjong-screenshot.png
new file mode 100644
index 000000000..ba46f65e7
Binary files /dev/null and b/content/news/028/mahjong-screenshot.png differ
diff --git a/content/news/028/molecoole.png b/content/news/028/molecoole.png
new file mode 100644
index 000000000..3855bfd4f
Binary files /dev/null and b/content/news/028/molecoole.png differ
diff --git a/content/news/028/one-click-ninja.png b/content/news/028/one-click-ninja.png
new file mode 100644
index 000000000..391069c4f
Binary files /dev/null and b/content/news/028/one-click-ninja.png differ
diff --git a/content/news/028/oxygengine-overworld.gif b/content/news/028/oxygengine-overworld.gif
new file mode 100644
index 000000000..4bce5f59e
Binary files /dev/null and b/content/news/028/oxygengine-overworld.gif differ
diff --git a/content/news/028/paddlepunks-rewind.gif b/content/news/028/paddlepunks-rewind.gif
new file mode 100644
index 000000000..ee627e2e3
Binary files /dev/null and b/content/news/028/paddlepunks-rewind.gif differ
diff --git a/content/news/028/pickpicpack_0.1.6.gif b/content/news/028/pickpicpack_0.1.6.gif
new file mode 100644
index 000000000..8f30de5ee
Binary files /dev/null and b/content/news/028/pickpicpack_0.1.6.gif differ
diff --git a/content/news/028/rl-tut.jpg b/content/news/028/rl-tut.jpg
new file mode 100644
index 000000000..dcc35b46d
Binary files /dev/null and b/content/news/028/rl-tut.jpg differ
diff --git a/content/news/028/rustacean-station.jpeg b/content/news/028/rustacean-station.jpeg
new file mode 100644
index 000000000..4900c38db
Binary files /dev/null and b/content/news/028/rustacean-station.jpeg differ
diff --git a/content/news/028/solid-editor.jpg b/content/news/028/solid-editor.jpg
new file mode 100644
index 000000000..12856c84d
Binary files /dev/null and b/content/news/028/solid-editor.jpg differ
diff --git a/content/news/028/spv-0.3.5.png b/content/news/028/spv-0.3.5.png
new file mode 100644
index 000000000..79f5f5a6d
Binary files /dev/null and b/content/news/028/spv-0.3.5.png differ
diff --git a/content/news/028/the-raytracer-challenge.jpg b/content/news/028/the-raytracer-challenge.jpg
new file mode 100644
index 000000000..ba1da3758
Binary files /dev/null and b/content/news/028/the-raytracer-challenge.jpg differ
diff --git a/content/news/028/veloren.jpg b/content/news/028/veloren.jpg
new file mode 100644
index 000000000..515aefa80
Binary files /dev/null and b/content/news/028/veloren.jpg differ
diff --git a/content/news/029/10xsprintmaster.png b/content/news/029/10xsprintmaster.png
new file mode 100644
index 000000000..2d4d3886f
Binary files /dev/null and b/content/news/029/10xsprintmaster.png differ
diff --git a/content/news/029/antorum.jpg b/content/news/029/antorum.jpg
new file mode 100644
index 000000000..38e5c471e
Binary files /dev/null and b/content/news/029/antorum.jpg differ
diff --git a/content/news/029/bevy-combat.gif b/content/news/029/bevy-combat.gif
new file mode 100644
index 000000000..0a375d7c0
Binary files /dev/null and b/content/news/029/bevy-combat.gif differ
diff --git a/content/news/029/bevy-remote-devtools.gif b/content/news/029/bevy-remote-devtools.gif
new file mode 100644
index 000000000..d70361f1e
Binary files /dev/null and b/content/news/029/bevy-remote-devtools.gif differ
diff --git a/content/news/029/bevy_proto.png b/content/news/029/bevy_proto.png
new file mode 100644
index 000000000..bf8971de4
Binary files /dev/null and b/content/news/029/bevy_proto.png differ
diff --git a/content/news/029/bitgun-cutscene.jpg b/content/news/029/bitgun-cutscene.jpg
new file mode 100644
index 000000000..a53bd7ba9
Binary files /dev/null and b/content/news/029/bitgun-cutscene.jpg differ
diff --git a/content/news/029/blackjack.gif b/content/news/029/blackjack.gif
new file mode 100644
index 000000000..6e70fb8a5
Binary files /dev/null and b/content/news/029/blackjack.gif differ
diff --git a/content/news/029/bomc-shots.png b/content/news/029/bomc-shots.png
new file mode 100644
index 000000000..ca5b7d76b
Binary files /dev/null and b/content/news/029/bomc-shots.png differ
diff --git a/content/news/029/country_slice.gif b/content/news/029/country_slice.gif
new file mode 100644
index 000000000..2def53eb6
Binary files /dev/null and b/content/news/029/country_slice.gif differ
diff --git a/content/news/029/fishfight-poster.jpg b/content/news/029/fishfight-poster.jpg
new file mode 100644
index 000000000..b2077e98c
Binary files /dev/null and b/content/news/029/fishfight-poster.jpg differ
diff --git a/content/news/029/fun-notation.gif b/content/news/029/fun-notation.gif
new file mode 100644
index 000000000..c1b09d7c8
Binary files /dev/null and b/content/news/029/fun-notation.gif differ
diff --git a/content/news/029/gamedev-meetup.png b/content/news/029/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/029/gamedev-meetup.png differ
diff --git a/content/news/029/graphite_splash.png b/content/news/029/graphite_splash.png
new file mode 100644
index 000000000..726e67a94
Binary files /dev/null and b/content/news/029/graphite_splash.png differ
diff --git a/content/news/029/index.md b/content/news/029/index.md
new file mode 100644
index 000000000..23e9dd691
--- /dev/null
+++ b/content/news/029/index.md
@@ -0,0 +1,817 @@
++++
+title = "This Month in Rust GameDev #29 - December 2021"
+transparent = true
+date = 2022-01-19
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 29th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The thirteenth Rust Gamedev Meetup happened in December. You can watch the
+recording of the meetup [here on Youtube][gamedev-meetup-video]. The meetups
+take place on the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/S7aoi_4a2uE
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### [Tet-Rust][tetrust-github]
+
+{{ image_figure(
+    alt="Tet-Rust screenshot"
+    src="tet-rust-1-sm.gif"
+    caption="Screenshot of Tet-Rust") }}
+
+Tet-Rust ([GitHub][tetrust-github]) by
+[@Syn-Nine][synnine-twitter] is a mini game based on the famous falling puzzle
+block game.
+
+The game was created to exercise Syn9's [Rust Mini Game Framework][mgfw] and is
+part of an open source [repository][s9-minigame-repo] of several mini-games
+that use this framework.
+
+[tetrust-github]: https://github.com/Syn-Nine/rust-mini-games/tree/main/2d-games/tet-rust
+[synnine-twitter]: https://twitter.com/Syn9Dev
+[mgfw]: https://github.com/Syn-Nine/mgfw
+[s9-minigame-repo]: https://github.com/Syn-Nine/rust-mini-games/
+
+### The Beast of Monte Carlo
+
+{{ image_figure(
+    alt="The Beast of Monte Carlo Screenshot"
+    src="bomc-shots.png"
+    caption="Screenshot of The Beast of Monte Carlo") }}
+
+The Beast of Monte Carlo by [@Syn-Nine][synnine-twitter] is a mini role-playing
+game in development to help work out new features for Syn9's
+[Rust Mini Game Framework][mgfw].
+
+This month's progress included:
+
+- prototyping tilemap and frame-based animation to make a simple walkaround
+engine
+- creating a general purpose maze generation algorithm and porting random world
+map generation from C++ to Rust
+- creating new sprite artwork and animation, as well as mocking up the battle
+system
+
+The gameplay and art are influenced by games such as Final Fantasy VI and Lufia
+II with a heavy focus on procedural content generation.
+
+### [10x Sprint Master]
+
+![In-game screenshot of 10x Sprint Master,
+depicting a project workboard and two team members.](10xsprintmaster.png)
+
+[10x Sprint Master] ([GitHub][10xsprintmaster-github]) by [@E_net4]
+is a simulation game where you play the role of
+a software development lead engineer.
+Write tasks, coordinate a team of developers,
+fix bugs and manage feature delivery,
+while trying to mitigate the torments of technical debt.
+
+The game was submitted to GitHub Game Off 2021,
+and was written using [Yew] with graphics done in pure HTML and CSS.
+
+The author also published a [blog post on Dev.to][10xsprintmaster-dev]
+about the game's technical and social dimensions.
+
+[10xsprintmaster-github]: https://github.com/Enet4/10xSprintMaster
+[10x Sprint Master]: https://e-net4.itch.io/10x-sprint-master
+[Yew]: https://yew.rs
+[@E_net4]: https://twitter.com/E_net4
+[10xsprintmaster-dev]: https://dev.to/e_net4/10x-sprint-master-a-technical-and-social-experiment-ahp
+
+### [Molecoole][molecoole-steam]
+
+[![A molecoole with tons of cannons](molecoole1.png)][molecoole-steam]
+
+Molecoole is a top-down shooter roguelike where you build your character
+from different atoms. Each atom has a unique ability providing
+tons of variety between playthroughs.
+It's made using the [Bevy Engine][bevy].
+
+This month Molecoole devs focused on
+adding more [variety][variety-twitter]: different enemies, atoms etc...
+
+They also launched their first teaser [video][teaser-twitter],
+it gives us a glimpse into 3 different bioms, bosses, enemies and more.
+
+[molecoole-steam]: https://store.steampowered.com/app/1792170/Molecoole/
+[variety-twitter]: https://twitter.com/kiss_mrton/status/1473725282918014977
+[teaser-twitter]: https://twitter.com/kiss_mrton/status/1467242884927614976
+[bevy]: https://github.com/bevyengine/bevy
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Winter in a town"
+    src="veloren.jpg"
+    caption="A peaceful winter night") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In December, Veloren ran a Christmas week. From the 20th to the 30th of
+December, there were several winter-themed changes on the main server. Snow was
+everywhere, decorations were added to locations, and NPC wore Christmas hats!
+The 150th Veloren blog was also released in December. An experimental new
+section of the newsletter gives video recaps of the last week's blog post.
+
+The ability to edit the appearance of characters was added to the game. Work was
+done on armor tooltips to make them more clear. Skiing is in the works, with
+some work to still be done on animations and physics. New images were created
+for item displays, which are now stored as .vox files.
+
+December's full weekly devlogs: "This Week In Veloren...":
+[#149][veloren-149],
+[#150][veloren-150],
+[#151][veloren-151],
+[#152][veloren-152].
+
+[veloren]: https://veloren.net
+[veloren-149]: https://veloren.net/devblog-149
+[veloren-150]: https://veloren.net/devblog-150
+[veloren-151]: https://veloren.net/devblog-151
+[veloren-152]: https://veloren.net/devblog-152
+
+### Country Slice
+
+![Country Slice](country_slice.gif)
+
+[Country Slice][country-slice-github] is
+[@anastasiaopara][country-slice-twitter]'s hobby project, where users can draw a
+small scene, and their input is amplified with real-time procedural
+generation.
+
+This month's biggest update was adding an ability to draw
+paths that, if intersected with walls, automatically generate arches. You can
+read a Twitter thread that briefly covers how it
+[was optimized to run in 1-2ms][country-slice-twitter-opt].
+
+[country-slice-github]: https://github.com/anopara/country-slice
+[country-slice-twitter]: https://twitter.com/anastasiaopara/
+[country-slice-twitter-opt]: https://twitter.com/anastasiaopara/status/1472627194409230343
+
+### Fish Fight
+
+![Fish demo scene](fishfight-poster.jpg)
+
+Fish Fight ([GitHub][fish-github], [Discord][fish-discord],
+[website][fish-website])
+
+Fish Fight is a tactical 2D shooter, played by up to 4 players.
+It is also a 2D-pixels-platformer game engine optimized for modding.
+
+In-game level editor was [released][fish-editor], along with an [editor tutorial][fish-tutorial].
+A retrospective devlog was posted: [Fish Fight's past, present, and future][fish-announce].
+
+[fish-github]: https://github.com/fishfight/FishFight
+[fish-discord]: https://discord.gg/4smxjcheE5
+[fish-website]: https://fishfight.org/
+[duck-game]: https://store.steampowered.com/app/312530/Duck_Game/
+[fish-editor]: https://github.com/fishfight/FishFight/releases/tag/v0.3
+[fish-tutorial]: https://fishfight.github.io/FishFight/editor.html
+[fish-announce]: https://spicylobster.itch.io/fishfight/devlog/332434/fish-fights-past-present-and-future
+
+### [BITGUN][bitgun-steam]
+
+[![survivors talking in a cutscene: "You! Don't move! Are you infected?"](
+bitgun-cutscene.jpg)][bitgun-steam]
+
+BITGUN ([Steam][bitgun-steam], [Twitter][bitgun-twitter],
+[Discord][bitgun-discord]) by [@LogLogGames][bitgun-twitter] is an action
+roguelike zombie shooter with lots of blood. The game is built using Godot
+and Rust (via [godot-rust][bitgun-godot-rust]).
+
+They are now heading to a public playtest via Steam and you can signup
+[here][bitgun-signup] to play the game for free in exchange for a short feedback.
+They recently added [cutscenes][bitgun-cutscenes], which are telling a bit more
+story about this post-apocalyptic zombie world where people are scared of getting
+infected and supplies are rare. They also launched a project [Name your zombie][bitgun-name]
+where you can get your Twitter or TikTok username as a name of a random zombie
+and a tombstone in the game!
+
+[bitgun-steam]: https://store.steampowered.com/app/1673940/BITGUN/
+[bitgun-twitter]: https://twitter.com/logloggames
+[bitgun-discord]: https://discord.gg/XrGZQkq
+[bitgun-godot-rust]: https://godot-rust.github.io/
+[bitgun-signup]: https://airtable.com/shrMUw2Xz98tdj8gW
+[bitgun-cutscenes]: https://twitter.com/LogLogGames/status/1479752293306273792
+[bitgun-name]: https://loglog.games/pages/name-your-zombie/
+
+### [vange-rs WebAssembly Port][vangers-wasm-post]
+
+![Cars, some terrain with roads and lava](vangers.jpeg)
+
+[vange.rs] is the project of re-implementing the [Vangers] game (from 1998)
+in Rust using modern development practices, parallel computations, and GPU.
+
+This month [@caiiiycuk] ported it to the "wasm32-unknown-emscripten" target
+via wgpu's GLES3 backend and [posted an article][vangers-wasm-post]
+about the process and observations.
+
+The web version of vange-rs can be [played online here][vangers-wasm-play].
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/rdbl7u/vangers_running_on_webgl)_
+
+[Vangers]: https://en.wikipedia.org/wiki/Vangers
+[vangers-wasm-post]: https://caiiiycuk.medium.com/vange-rs-webassembly-in-rust-498e2f960a04
+[vangers-wasm-play]: https://caiiiycuk.github.io/vangers-web/vange-rs/
+[@caiiiycuk]: https://twitter.com/caiiiycuk
+[vange.rs]: https://vange.rs
+
+### [Bevy Combat][bevy_combat]
+
+![planes shooting each other](bevy-combat.gif)
+
+[Bevy Combat][bevy_combat] by [@ElliotB256] is
+a WIP sci-fi battle simulation written using Bevy.
+
+Some of the current features:
+
+- Combat and targetting AI;
+- Simple weapons (instant hit), damage, health, shields, and mortality;
+- Death animations and explosions;
+
+Check out the [web demo here][bevy-combat-web].
+
+[bevy_combat]: https://github.com/ElliotB256/bevy_combat
+[@ElliotB256]: https://github.com/ElliotB256
+[bevy-combat-web]: https://elliotb256.github.io/bevy_combat
+
+### Rust City
+
+![road, buildings with various utilities and some GUI](rust-city.jpg)
+
+[@oliviff] is working on a city building game.
+Some of [this month's updates][rust-city-updates]:
+
+- Basic zoning placeholders when building roads.
+- Advanced zoning for residential, commercial, and industry.
+- Populating zoned areas based on demand.
+- Buildings don't function unless they have utilities.
+- Finances and transactions
+- Population tracker.
+- pipes required for a house to receive water.
+- cables required for a house to receive electricity.
+- build mode for pipes and cables.
+- UI to toggle different layers visibility.
+
+[@oliviff]: https://twitter.com/oliviff
+[rust-city-updates]: https://twitter.com/oliviff/status/1473266319881654274
+
+### Antorum Isles (pka Antorum Online)
+
+![isles!](antorum.jpg)
+
+[Antorum Isles][antorum-play] is a micro-multiplayer online role-playing game
+by [@dooskington].
+The game server is written in Rust, and the client is Unity-based.
+
+Main highlights of the latest [@dooskington's devlog][antorum-post]:
+
+- [Now you can download the client and play the game][antorum-play]!
+- The project is mostly finished, it won't receive more major new features
+  or updates.
+- The editor and the dedicated server binaries should be released soon.
+
+[@dooskington]: https://twitter.com/dooskington
+[antorum-play]: https://antorum.ratwizard.dev
+[antorum-post]: https://ratwizard.dev/dev-log/antorum/39
+
+## Engine Updates
+
+### [Rusty Engine 3.0]
+
+{{ image_figure(
+    alt="An example Rusty Engine game"
+    src="rusty_engine3.png"
+    caption="The "Road Race" game prototype running under Rusty Engine 3.0") }}
+
+[Rusty Engine] by [Nathan Stocks] is a game engine built on top of Bevy
+for people who are learning Rust.
+
+Version 3.0 is a large release with many breaking changes. Notable new features
+include: [a full tutorial], custom asset loading (sprites, sounds, fonts),
+customizable game state, an interactive collider creator, and much more.
+See [the changelog for 3.0] for the full details.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/rwyrqx/rusty_engine_30),
+[twitter](https://twitter.com/nathanstocks/status/1476724623903367168)_
+
+[Rusty Engine 3.0]: https://github.com/CleanCut/rusty_engine/blob/main/CHANGELOG.md#300---2021-12-30
+[Rusty Engine]: https://github.com/CleanCut/rusty_engine
+[a full tutorial]: https://cleancut.github.io/rusty_engine/
+[the changelog for 3.0]: https://github.com/CleanCut/rusty_engine/blob/main/CHANGELOG.md#300---2021-12-30
+[Nathan Stocks]: https://github.com/CleanCut
+
+### [Pyxel]
+
+![Examples: drawing methods, sound, tilemap and music editors](pyxel.png)
+
+[Pyxel] ([Discord][pyxel-discord]) by [@kitao] is a retro game engine
+(inspired by [PICO-8] and [TIC-80]) that uses Python for scripting:
+
+- 16 color palette,
+- 256x256 sized 3 image banks,
+- 256x256 sized 8 tilemaps,
+- 4 channels with 64 definable sounds,
+- 8 peces of music which can combine arbitrary sounds,
+- Image and sound editor,
+- Keyboard, mouse, and gamepad inputs.
+
+Check out the [official][pyxel-examples1]
+and [user-provided][pyxel-examples2] examples.
+
+[Pyxel]: https://github.com/kitao/pyxel
+[@kitao]: https://twitter.com/kitao
+[PICO-8]: https://lexaloffle.com/pico-8.php
+[TIC-80]: https://tic80.com
+[pyxel-discord]: https://discord.gg/FC7kUZJ
+[pyxel-examples1]: https://github.com/kitao/pyxel#try-pyxel-examples
+[pyxel-examples2]: https://github.com/kitao/pyxel/wiki/Pyxel-User-Examples
+
+## Learning Material Updates
+
+### [Rust SFML Windows Setup][sfml-video]
+
+[![youtube preview: ping pong window and some dev windows in background](youtube-sfml-win.jpg)][sfml-video]
+
+[@TheFern2] published a [video tutorial][sfml-video] on how to
+set up Rust with [SFML bindings][sfml] for Windows users (using MSVC C++).
+
+rust-sfml's [wiki page with instructions for Windows][sfml-wiki-win] was also updated.
+
+[sfml-video]: https://youtube.com/watch?v=nnojR-8PT4M
+[@TheFern2]: https://github.com/TheFern2
+[sfml]: https://lib.rs/sfml
+[sfml-wiki-win]: https://github.com/jeremyletang/rust-sfml/wiki/Windows
+
+### [Rust and Unity Game Development][runity-video]
+
+[![Silly Youtube preview: TanTan's photo, Rust&Unity logos](youtube-runity.jpg)][runity-video]
+
+[@TanTanDev] published a [video][runity-video] about the process of adding Rust
+support for the Unity game engine.
+
+> Is it really possible? YES it is! I managed to make a game 100% coded in Rust,
+> but using Unity as editor and runtime.
+> This has to be one of my craziest projects yet!
+>
+> I utilized a library called Bevy game framework/engine,
+> to handle the gameplay programming. Utilizing Bevy systems I was able
+> to hide the FFI code from the gameplay code.
+
+The resulting source code [can be found here][runity-source].
+
+[runity-video]: https://youtu.be/L7M_vbo1N2g
+[runity-source]: https://github.com/TanTanDev/runity
+[@TanTanDev]: https://twitter.com/TanTanDev
+
+### [Tetris Livecoding][tetris-playlist]
+
+[![YouTube preview slide: title "TETRIS 1", author's face, ferris](youtube-tetris.jpg)][tetris-playlist]
+
+["Tetris in Rust from scratch"][tetris-playlist] is a series of livestreams
+by [Over Developed] that showcases beginner/intermediate Rust concepts
+using Tetris as an example.
+Episodes:
+
+> - [In the first episode](https://youtube.com/watch?v=74UYWFNfR64),
+>   we lay the groundwork for the project, creating the overall structure
+>   and some of the primitives that will be used by the game engine.
+> - [In the second episode](https://youtube.com/watch?v=ZBO99zuD3HQ),
+>   we flesh out some more behavior in the game engine, and fix some bugs
+>   that were introduced in the previous session.
+> - [In the third episode](https://youtube.com/watch?v=Ro-aPSb96RM),
+>   we start writing the interface code for rendering the GUI.
+> - [In this episode](https://youtube.com/watch?v=QLA0LqfhaoE),
+>   we connect the game logic to the GUI and finally see some interactivity.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/rk8zv5/livecoding_tetris_clone)_
+
+[tetris-playlist]: https://youtube.com/playlist?list=PLBNbqulT6FWw9C39_WIT_dcCIj1AdxiAy
+
+[Over Developed]: https://youtube.com/channel/UCROob9baB-fRBDSyNq_8i4g
+
+## Tooling Updates
+
+### [Blackjack]
+
+![Blackjack demo: Connecting visual nodes and tweaking various parameters to
+procedurally generate a beveled box in real-time](blackjack.gif)
+
+[Blackjack] by @setzer22 is a new procedural modeling application made in Rust,
+using rend3, wgpu and egui. It follows the steps of applications like
+Houdini, or Blender's geometry nodes project and provides a node-based
+environment to compose procedural recipes to create 3d models.
+
+The project was recently announced, and an official open-source release is
+planned during the following month. Here's a highlight of the upcoming features:
+
+- A node-based editor to compose operations like 3d math, vertex/edge/face
+  selections and mesh edit operations.
+- Several polygon edit operations like bevel, chamfer and extrude.
+- Viewport display with support for displaying primitive ids and triangle
+  half-edge winding.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/rufvlc/meet_blackjack),
+[/r/rust](https://reddit.com/r/rust/comments/rug24x/media_meet_blackjack)_
+
+[Blackjack]: https://github.com/setzer22/blackjack
+
+### [Graphite][graphite-repo]
+
+![Graphite](graphite_splash.png)
+
+Graphite ([GitHub][graphite-repo], [Discord][graphite-discord],
+[Twitter][graphite-twitter]) is an in-development vector and raster graphics
+editor built on a non-destructive node-based workflow.
+
+The completion of [Sprint 10][graphite-sprint-10] wraps up a productive month
+of features and stability improvements. Documents persist page reloads via
+IndexedDB browser storage. The layer panel got some love. Vector anchor points
+can be dragged (beginnings of the Path/Pen Tools). Per-tool footer bar hints
+teach possible user input actions. And a big code cleanup/refactor took place
+behind the scenes.
+
+Additional new features and QoL improvements: artboards, panel resizing, the
+Navigate Tool, outline view mode, support for touch input and non-Latin
+keyboards, an *About Graphite* dialog with version info, plus dozens of bugs
+and crashes were resolved.
+
+[Try it right now in your browser.][graphite-live-demo] Graphite is making
+steady progress towards becoming a non-destructive, procedural graphics editor
+suitable for replacing traditional 2D DCC applications. [Join the
+Discord][graphite-discord] and get involved!
+
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.design
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.design
+[graphite-sprint-10]: https://github.com/GraphiteEditor/Graphite/milestone/10?closed=1
+
+### [Fun Notation][notation-fun]
+
+![Demo that shows colored chords, notes, and tabs](fun-notation.gif)
+
+[Fun Notation][notation-fun] ([GitHub][notation-fun-github]) is [@yjpark]'s
+experimentation on musical notations built on top of Bevy.
+The idea is to help with music visualization, practicing,
+and provide a nicer way to show scores or tabs.
+
+Some of current ideas tried in the app:
+
+- colors for notes (based on the relative notation),
+- color and shapes for chords,
+- guitar tabs to show both pitch and durations for notes.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/r9erd2/guitar_tab_viewer_bevy)_
+
+[notation-fun]: https://notation.fun
+[notation-fun-github]: https://github.com/notation-fun/notation
+[@yjpark]: https://github.com/yjpark
+
+## Library Updates
+
+### [assets_manager]
+
+[assets_manager] provides a high-level API to load and cache external resources
+with a focus on performance and hot-reloading.
+
+In addition to built-in support for new formats like WebP, glTF and fonts,
+[version 0.7] brings a few quality of life improvements. Additionally,
+hot-reloading is now supported for custom asset sources.
+
+These features led to a new crate: [ggez-assets_manager], whose goal is to ease
+use of assets_manager with ggez engine!
+
+[assets_manager]: https://github.com/a1phyr/assets_manager/
+[version 0.7]: https://github.com/a1phyr/assets_manager/releases/tag/0.7.0
+[ggez-assets_manager]: https://github.com/a1phyr/ggez-assets_manager/
+
+### [wgpu]-0.12 release
+
+{{ image_figure(
+    alt="albedo pathtracer"
+    src="wgpu-pathtracer.png"
+    caption="experimental pathtracer on wgpu from @llamajestic") }}
+
+The team concluded 2021 with the release of wgpu-0.12 and naga-0.8.
+Details can be found on the [gfx-rs blog] and [wgpu reddit discussion].
+Lots of fixes are shipped alongside one much-awaited improvement:
+the error messages from validating shaders were finally made readable:
+
+```rust
+   ┌─ interpolate.wgsl:21:25
+   │
+21 │    out.linear_centroid = vec2<f32>(64.0, 125.0, 1.0);
+   │                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ naga::Expression [16]
+
+Entry point vert_main at Vertex is invalid: 
+        Expression [16] is invalid
+        Composing expects 2 components but 3 were given
+```
+
+[wgpu]: https://github.com/gfx-rs/wgpu
+[gfx-rs blog]: https://gfx-rs.github.io/2021/12/25/this-year.html
+[wgpu reddit discussion]: https://reddit.com/r/rust_gamedev/comments/rjci2n/wgpu012_is_released/
+
+### [Pixels] 0.9.0 👾
+
+[Pixels] is a tiny hardware-accelerated pixel frame buffer. It is popularly
+used for emulators, software renderers, 2D pixel art games, and desktop
+utilities.
+
+Version 0.9.0 brings a few breaking changes. Notably, wgpu was updated to
+0.12 and it now requires Edition 2021. Full details are available in the
+[release notes][pixels-changelog].
+
+[pixels]: https://github.com/parasyte/pixels
+[pixels-changelog]: https://github.com/parasyte/pixels/releases/tag/0.9.0
+
+### [bevy_proto]
+
+![YAML configuration files for bevy_proto](bevy_proto.png)
+
+[bevy_proto] is a small plugin for the [Bevy] game engine, allowing entities to
+be defined in their own config files (called "Prototypes"). These config files
+are then read into a resource that you can use to spawn their pre-defined
+entities from within any Bevy system.
+
+The recently released 0.2 version, adds a templating feature (as suggested
+by [@chrisburnor](https://github.com/chrisburnor)). This new feature allows any
+entity prototype to define one or more templates, from which it will inherit
+additional component definitions (including those from a template's templates).
+
+This makes defining many entities with common functionality (such as enemy types
+or weapons) much easier and reduces code duplication for an overall better
+experience.
+
+For more info, check out
+the [original PR](https://github.com/MrGVSV/bevy_proto/pull/2), or explore
+the [assets](https://github.com/MrGVSV/bevy_proto/tree/main/assets)
+and [examples](https://github.com/MrGVSV/bevy_proto/tree/main/examples) folders.
+
+[bevy_proto]: https://github.com/MrGVSV/bevy_proto
+[Bevy]: https://github.com/bevyengine/bevy
+
+### [bevy-remote-devtools]
+
+![Demo of the Tauri based development app](bevy-remote-devtools.gif)
+
+[bevy-remote-devtools] is a plugin and UI application for the [Bevy] game
+engine allowing to view entities and their components, asset resources
+like meshes, events from the [tracing] crate and system timings using a
+very basic profiler. It also supports all of that over network so
+debugging can be done from any remote machine and vice versa.
+
+The first release of the 0.1 version comes with basic support for the
+aforementioned features. It contains a plugin for [Bevy] that will extend
+you application with a small REST HTTP API that can be consumed by the
+included [Tauri] based UI application.
+
+[bevy-remote-devtools]: https://github.com/reneeichhorn/bevy-remote-devtools
+[Bevy]: https://github.com/bevyengine/bevy
+[tracing]: https://github.com/tokio-rs/tracing
+[Tauri]: https://tauri.studio/en/
+
+### [kajiya]
+
+![A rendering of a warmly-lit ruins environment](kajiya.jpg)
+
+[kajiya] ([Discord][kajiya_discord])
+by [@h3r2tic] is an experimental real-time global illumination
+renderer made with Vulkan, and utilizing [rust-gpu][rust-gpu].
+
+Last month the project was released into open source along with
+a tiny sample: [Cornell McRay t'Racing][cornell-mcray].
+
+The renderer is permissively licensed, and includes several cutting-edge
+algorithms, including ray-traced effects.
+It isn’t built to ship games (yet), but serves as a convenient
+platform for learning and research.
+
+_Discussions:
+[medium](https://medium.com/embarkstudios/homegrown-rendering-with-rust-1e39068e56a7),
+[/r/rust](https://reddit.com/r/rust/comments/rkqmk3/homegrown_rendering_with_rust),
+[twitter (kajiya)](https://twitter.com/h3r2tic/status/1472957370972127233),
+[twitter (cornell-mcray)](https://twitter.com/h3r2tic/status/1473856011941425155)._
+
+[kajiya_discord]: https://discord.gg/dAuKfZS
+[cornell-mcray]: https://github.com/h3r2tic/cornell-mcray/
+[kajiya]: https://github.com/EmbarkStudios/kajiya/
+[rust-gpu]: https://github.com/EmbarkStudios/rust-gpu
+[@h3r2tic]: https://github.com/h3r2tic
+
+### [Shard]
+
+[Shard] by @HindrikStegenga is an Archetype-based Entity Component System.
+
+Version 0.2 is a complete rewrite of the ECS, with the main new feature
+that it supports no_std environments.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/r6mn0g/shard_020)_
+
+[Shard]: https://github.com/HindrikStegenga/Shard
+
+### [rapid-qoi]
+
+[rapid-qoi] by @zakarumych is an implementation of QOI format written in Rust.
+
+QOI format can fit nicely as a replacement for PNG
+and other common loseless image formats
+for game engines given its simplicity and blazing fast encoding and decoding.
+
+[rapid-qoi] has a simple API, zero unsafe, zero dependencies,
+fast build times and high performance.
+It is compatible with finalized QOI spec published in December.
+
+[rapid-qoi]: https://github.com/zakarumych/rapid-qoi
+
+### [ash] v0.34
+
+[ash] is lightweight wrapper around Vulkan.
+
+This month [v0.34 was released][ash-0-3-4]. Highlights include:
+
+- Now ash defaults to linking Vulkan directly, which saves the libloading dep
+  and is more idiomatic for apps that don't have a fallback.
+- Debug impls can be disabled for a faster build.
+- More extensions and lots of miscellaneous API cleanup.
+
+[ash]: https://github.com/MaikKlein/ash
+[ash-0-3-4]: https://github.com/MaikKlein/ash/releases/tag/0.34.0
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [BENDYWORM] now [runs on Linux natively](
+    https://twitter.com/bauxitedev/status/1467817606111498240).
+  - [Rust Shooter progress report][rust-shooter]:
+    enemies are proper player entities with rudimentry AI now,
+    new indoor environment.
+  - [aous] is a Game Off'21 game about the survival of a mutating ant colony.
+  - [Embark's Arc Raiders game is using some Rust on the server side](
+    https://twitter.com/repi/status/1469324284619337728).
+- Other engine updates:
+  - [@DmitryNStepanov] did a few more [rg3d] live-coding streams, here're
+    the recordings: [second](https://youtube.com/watch?v=TQaCyC_tGko),
+    [third](https://youtube.com/watch?v=OsZCusri1Nw),
+    [fourth](https://youtube.com/watch?v=FGi8evJFdnw).
+  - [godot-rust was upgraded][godo-rust-dec] to support Godot 3.4 out of the box,
+    so the manual api.json is not needed.
+  - [Oxygengine] v0.26 brings: different image types (2D, 2D Array, 3D),
+    samplers instead of textures, render target fixes,
+    and also an [RPG template][oxygengine-rpg].
+- Other library updates:
+  - [bevy_midi] v0.2 is now using crossbeam-channels meaning
+    it is more responsive.
+  - [egui 0.16](https://reddit.com/r/rust/comments/rrantt/egui_016) brings:
+    context menus, rich text (colors, underline, etc) in all widgets,
+    bar charts and box plots.
+
+[bevy_midi]: https://github.com/BlackPhlox/bevy_midi
+[godo-rust-dec]: https://twitter.com/GodotRust/status/1472269798641971200
+[Oxygengine]: https://github.com/PsichiX/Oxygengine
+[oxygengine-rpg]: https://reddit.com/r/rust_gamedev/comments/r5xobe/oxygengine_rpg_game_template
+[@DmitryNStepanov]: https://twitter.com/DmitryNStepanov
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[BENDYWORM]: https://bauxite.itch.io/bendyworm
+[rust-shooter]: https://reddit.com/r/rust_gamedev/comments/rj5lut/rust_shooter_another_update
+[aous]: https://vleue.itch.io/aous
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev):
+  - ["Should I use a sync/await, threads, or both to make a game server?"](
+    https://reddit.com/r/rust_gamedev/comments/r8jh5z/should_i_use_a_syncawait_threads_or_both_to_make_server)
+  - ["Rust server for Unreal Engine Client? Is this a bad idea for any reason?"](
+    https://reddit.com/r/rust_gamedev/comments/rhd8ou/rust_server_for_unreal_engine_client)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [Graphite is looking for contributors][graphite-contribute] to help reach
+  the 0.1 Alpha release.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/s82gcd/this_month_in_rust_gamedev_29_december_2021),
+[Twitter](https://twitter.com/rust_gamedev/status/1483927872532271107),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/029/kajiya.jpg b/content/news/029/kajiya.jpg
new file mode 100644
index 000000000..0d3471fbe
Binary files /dev/null and b/content/news/029/kajiya.jpg differ
diff --git a/content/news/029/molecoole1.png b/content/news/029/molecoole1.png
new file mode 100644
index 000000000..c54fccfd4
Binary files /dev/null and b/content/news/029/molecoole1.png differ
diff --git a/content/news/029/pyxel.png b/content/news/029/pyxel.png
new file mode 100644
index 000000000..8ae7d21d6
Binary files /dev/null and b/content/news/029/pyxel.png differ
diff --git a/content/news/029/rust-city.jpg b/content/news/029/rust-city.jpg
new file mode 100644
index 000000000..8e5731fb6
Binary files /dev/null and b/content/news/029/rust-city.jpg differ
diff --git a/content/news/029/rusty_engine3.png b/content/news/029/rusty_engine3.png
new file mode 100644
index 000000000..5d33cf3b3
Binary files /dev/null and b/content/news/029/rusty_engine3.png differ
diff --git a/content/news/029/tet-rust-1-sm.gif b/content/news/029/tet-rust-1-sm.gif
new file mode 100644
index 000000000..578b26d69
Binary files /dev/null and b/content/news/029/tet-rust-1-sm.gif differ
diff --git a/content/news/029/vangers.jpeg b/content/news/029/vangers.jpeg
new file mode 100644
index 000000000..3b64fd6a6
Binary files /dev/null and b/content/news/029/vangers.jpeg differ
diff --git a/content/news/029/veloren.jpg b/content/news/029/veloren.jpg
new file mode 100644
index 000000000..656dd8f84
Binary files /dev/null and b/content/news/029/veloren.jpg differ
diff --git a/content/news/029/wgpu-pathtracer.png b/content/news/029/wgpu-pathtracer.png
new file mode 100644
index 000000000..a5f0f7843
Binary files /dev/null and b/content/news/029/wgpu-pathtracer.png differ
diff --git a/content/news/029/youtube-runity.jpg b/content/news/029/youtube-runity.jpg
new file mode 100644
index 000000000..3e0b8e3b2
Binary files /dev/null and b/content/news/029/youtube-runity.jpg differ
diff --git a/content/news/029/youtube-sfml-win.jpg b/content/news/029/youtube-sfml-win.jpg
new file mode 100644
index 000000000..0b2653e7a
Binary files /dev/null and b/content/news/029/youtube-sfml-win.jpg differ
diff --git a/content/news/029/youtube-tetris.jpg b/content/news/029/youtube-tetris.jpg
new file mode 100644
index 000000000..0a8b80af2
Binary files /dev/null and b/content/news/029/youtube-tetris.jpg differ
diff --git a/content/news/030/ah-scanner.png b/content/news/030/ah-scanner.png
new file mode 100644
index 000000000..fa9a66513
Binary files /dev/null and b/content/news/030/ah-scanner.png differ
diff --git a/content/news/030/awn-header.jpg b/content/news/030/awn-header.jpg
new file mode 100644
index 000000000..7b9cce236
Binary files /dev/null and b/content/news/030/awn-header.jpg differ
diff --git a/content/news/030/bevy-smud.png b/content/news/030/bevy-smud.png
new file mode 100644
index 000000000..d7082438e
Binary files /dev/null and b/content/news/030/bevy-smud.png differ
diff --git a/content/news/030/bevy_bistro_night.jpg b/content/news/030/bevy_bistro_night.jpg
new file mode 100644
index 000000000..29d9e0a63
Binary files /dev/null and b/content/news/030/bevy_bistro_night.jpg differ
diff --git a/content/news/030/centaur-screenshot.png b/content/news/030/centaur-screenshot.png
new file mode 100644
index 000000000..beb64e761
Binary files /dev/null and b/content/news/030/centaur-screenshot.png differ
diff --git a/content/news/030/country_slice_7_delete_brush.gif b/content/news/030/country_slice_7_delete_brush.gif
new file mode 100644
index 000000000..777c8339d
Binary files /dev/null and b/content/news/030/country_slice_7_delete_brush.gif differ
diff --git a/content/news/030/erupt-bootstrap.svg b/content/news/030/erupt-bootstrap.svg
new file mode 100644
index 000000000..6f5d59193
--- /dev/null
+++ b/content/news/030/erupt-bootstrap.svg
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   viewBox="0 0 512 512"
+   version="1.1"
+   id="svg46"
+   sodipodi:docname="logo.svg"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
+   width="200"
+   height="200"
+   inkscape:export-filename="/mnt/hdd1/Documents/rust/erupt/erupt-bootstrap/logo.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <metadata
+     id="metadata52">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs50" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1011"
+     id="namedview48"
+     showgrid="false"
+     inkscape:zoom="1.4142136"
+     inkscape:cx="283.19626"
+     inkscape:cy="253.85133"
+     inkscape:window-x="0"
+     inkscape:window-y="1112"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="layer3"
+     inkscape:document-rotation="0"
+     inkscape:pagecheckerboard="0" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="erupt"
+     style="display:inline">
+    <g
+       id="g2457"
+       transform="matrix(0.64200742,0,0,0.64200742,91.646101,183.2922)">
+      <path
+         fill="#292f33"
+         d="M 170.66667,512 V 227.55556 c 0,0 -16.64,14.976 -33.47911,27.43466 -4.45156,3.28534 -28.11734,11.23556 -32.88178,14.79111 -25.05956,18.70223 -36.29511,54.62756 -39.70845,59.264 C 58.06933,337.92 0,512 0,512 Z"
+         id="path2"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#4b545d"
+         d="M 455.11111,512 376.88889,259.55556 256,179.11467 164.15289,210.51733 c -5.78845,11.10756 -21.93067,49.03823 -21.93067,49.03823 L 124.44444,312.88889 0,512 Z"
+         id="path4"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#292f33"
+         d="m 257.92,365.88089 c -2.06222,-7.296 -0.36978,-13.79556 -2.51733,-20.992 -2.10489,-7.09689 -8.04978,-14.89067 -9.856,-21.02045 -3.76889,-12.78577 -6.45689,-22.51377 -6.32889,-25.20177 0.34133,-6.67023 12.71466,-5.70311 15.67289,6.67022 4.16711,17.408 9.78489,22.67022 9.78489,22.67022 0,0 1.19466,-48.08533 -8.98845,-57.856 2.06222,-3.28533 4.11022,-6.76978 5.94489,-10.58133 8.88889,-18.37511 9.18756,-29.92356 9.18756,-29.92356 0,0 -35.85423,43.53422 -45.824,69.02045 -9.96978,25.48622 14.22222,113.77777 14.22222,113.77777 L 182.32889,512 h 63.53067 c 0,0 -6.74134,-20.89244 -6.64178,-28.00356 0.0995,-7.11111 27.008,-52.45155 28.44444,-71.552 0.58311,-7.75111 -4.05333,-26.46755 -9.74222,-46.56355 z m 223.85778,0.34133 c -7.32445,-8.33422 -26.18311,-20.19555 -44.48711,-30.63466 0,0 -33.20889,-79.58756 -51.51289,-103.296 -18.304,-23.70845 -52.15289,-42.66667 -52.15289,-42.66667 l -37.632,21.03467 c 0,0 24.24889,20.56533 37.632,43.54844 13.38311,22.98311 9.79911,50.048 10.59555,55.58044 0.95289,6.64178 0.83912,13.83823 8.36267,25.01689 14.86222,22.08711 24.54756,21.91645 31.04711,32.36978 0.69689,2.06222 1.408,4.13867 2.13334,6.144 1.99111,5.47556 9.67111,9.32978 11.264,14.52089 2.48888,8.192 12.48711,32.48356 9.69955,43.94667 -1.50755,6.21511 -3.18578,21.632 -4.36622,28.64355 C 397.51111,489.48622 413.25511,512 413.25511,512 H 512 c 0,0 -14.22222,-127.55911 -30.22222,-145.77778 z"
+         id="path6"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#ffac33"
+         d="m 371.17156,316.52978 c -10.97956,-10.72356 -16.88178,-26.99378 -17.47912,-46.848 2.46045,-23.70845 -66.304,-70.016 -66.304,-70.016 L 260.15289,204.16 c 0,0 58.48178,23.90756 66.95822,63.33156 4.224,19.64088 -1.52178,46.52088 -2.95822,58.45333 -1.93422,15.91467 9.40089,25.14489 12.44444,40.27733 1.57867,7.82222 0.0996,24.09245 -1.99111,40.93156 -1.06666,8.56178 -4.94933,16.71111 -6.00178,24.54755 -2.73066,20.25245 -1.70666,35.15734 3.25689,25.77067 6.00178,-11.32089 9.28711,-27.33511 17.96267,-51.28533 4.16711,-11.52 4.42311,-24.78934 3.39911,-39.97867 -0.44089,-6.55644 1.57867,-14.35022 0.86756,-21.632 -0.72534,-7.50933 -4.18134,-14.50667 -4.736,-22.81244 -0.15645,-2.36089 0.42666,-10.496 1.30844,-20.53689 1.05245,0.17066 2.07645,0.768 3.072,2.44622 13.34045,22.21511 10.86578,43.02222 18.14756,36.70755 5.83111,-5.06311 7.01155,-16.29866 -0.71111,-23.85066 z"
+         id="path8"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#292f33"
+         d="m 124.72889,355.51289 c 0,0 -63.104,43.904 -79.68711,64.64 C 28.45867,440.88889 0,512 0,512 h 64 c 0,0 0.59733,-26.96533 -2.21867,-38.22933 -2.816,-11.264 4.43734,-34.91556 12.88534,-40.88889 20.15289,-14.22222 33.86311,-32.85334 35.84,-30.56356 7.40977,8.59022 7.40977,17.18045 7.40977,17.18045 0,0 7.09689,-19.59823 7.40978,-36.15289 0.31289,-16.55467 -0.59733,-27.83289 -0.59733,-27.83289 z"
+         id="path10"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#ffac33"
+         d="m 256,179.11467 c 0,0 -54.67022,-15.55911 -91.84711,17.77777 -16.93867,15.17512 -15.104,29.184 -21.93067,62.66312 -6.82666,33.47911 -26.46755,43.88977 -29.32622,57.18755 -5.632,26.06933 -26.33956,45.93778 -34.37511,58.368 C 73.856,382.336 67.74044,394.112 63.75822,400.73956 55.424,414.64889 49.33689,426.41067 48.59733,432.58311 46.81956,447.40267 74.66667,415.40267 74.66667,415.40267 L 121.32978,358.016 c -1.52178,32.72533 -13.14134,67.38489 -0.44089,64.19911 10.66667,-2.67378 19.38489,-16.15644 14.44978,-30.66311 -6.45689,-19.00089 -4.80711,-35.31378 -1.33689,-49.152 0.71111,-1.26578 32.02844,-56.98844 39.63733,-101.21956 7.70845,-44.74311 76.52978,-56.54755 76.52978,-56.54755 l 31.91467,12.25955 5.93066,-15.16088 z"
+         id="path12"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#e95f28"
+         d="m 397.55378,241.77778 c -18.88711,-24.88889 -46.73422,-52.40889 -60.21689,-56.71822 -11.70489,-3.74045 -6.08711,11.59111 -6.08711,11.59111 0,0 40.29155,17.57866 60.74311,95.80089 9.75644,37.33333 39.32444,52.77866 47.55911,76.00355 27.56267,77.78133 59.24978,91.91822 41.856,67.51289 -17.39378,-24.40533 -64.96711,-169.30133 -83.85422,-194.19022 z m -141.824,21.83111 c -1.536,-2.36089 -2.91556,-4.352 -4.18134,-6.21511 17.90578,-27.07911 39.12534,-57.38667 39.12534,-57.38667 0,0 -41.41511,-4.18133 -42.66667,0.44089 -12.44444,45.78133 -23.73689,60.27378 -32.88178,89.32978 -26.68089,84.736 17.20889,140.35911 24.09245,122.66666 5.51822,-14.22222 -3.00089,-53.27644 -9.55734,-76.416 -6.55644,-23.13955 -3.78311,-28.47288 -2.40355,-37.95911 0.48355,-3.31377 8.448,-16.39822 18.53155,-31.91466 1.26578,1.00977 2.44623,2.31822 3.456,4.12444 6.34312,11.37778 9.28712,32.14222 10.70934,46.23645 1.63555,16.19911 16.128,23.50933 24.12089,17.77777 7.99289,-5.73155 -2.67378,-34.44622 -20.05334,-52.992 -4.11022,-4.40889 -5.57511,-13.51111 -8.29155,-17.69244 z"
+         id="path14"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#e95f28"
+         d="m 340.89244,186.66667 c 0,0 8.448,16.44089 -23.25333,16.14222 -8.30578,-0.0711 -12.24533,7.28178 -23.11111,8.192 -9.04533,0.75378 -21.46133,-3.456 -31.70133,-3.456 -10.24,0 -22.04445,6.98311 -31.08978,6.22933 -10.89422,-0.91022 -23.59467,-11.86133 -31.72978,-13.63911 -15.104,-3.29955 -25.48622,-4.11022 -25.48622,-9.18755 0,-5.07734 17.16622,-11.22134 32.29867,-14.52089 8.12088,-1.77778 15.04711,4.05333 25.91288,3.14311 9.04534,-0.75378 18.36089,-1.43645 28.60089,-1.43645 10.24,0 20.12445,-6.12977 29.16978,-5.36177 10.89422,0.91022 19.95378,6.144 28.14578,7.60888 9.71378,1.74934 15.47378,3.47023 18.688,4.67912 2.63111,0.98133 3.55555,1.60711 3.55555,1.60711 z"
+         id="path16"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#ffac33"
+         d="m 363.10756,98.21867 c 0,0 -49.13778,-19.41334 -96.19912,-19.41334 -47.06133,0 -105.13066,26.82311 -105.13066,26.82311 46.22222,39.31023 44.35911,81.024 44.35911,81.024 h 109.34044 c 0,0.0142 16.52623,-57.62844 47.63023,-88.43377 z"
+         id="path18"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#ffac33"
+         d="m 315.47733,186.66667 c 0,0 -0.79644,2.98666 -5.68889,4.43733 -1.29422,0.384 -4.36622,-0.68267 -6.44266,0 -2.47467,0.81067 -6.912,2.85867 -9.11645,3.11467 -2.36089,0.28444 -7.76533,-1.33689 -10.43911,-1.10934 -4.89244,0.39823 -7.38133,2.26134 -13.11289,2.44623 -3.88266,0.11377 -5.70311,-1.39378 -9.856,-1.39378 -1.55022,0 -4.84977,-1.37956 -7.46666,-1.26578 -4.30934,0.17067 -8.29156,1.84889 -10.66667,1.77778 -6.44267,-0.19911 -7.75111,-3.072 -13.11289,-3.55556 -5.19111,-0.45511 -8.88889,2.00534 -12.672,1.33689 -7.13955,-1.26578 -10.752,-5.77422 -10.752,-5.77422 0,-4.13867 24.47645,-7.49511 54.67022,-7.49511 30.19378,0 54.656,7.48089 54.656,7.48089 z"
+         id="path20"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#e95f28"
+         d="m 243.84,194.58844 c 0,0 -0.99556,-8.17777 -4.28089,-19.44177 -8.74667,-29.96623 -8.448,-51.59823 -8.448,-51.59823 l -19.85422,9.48623 c 0,0 10.368,19.85422 18.56,58.21155 0,0 2.84444,0.0711 6.10133,1.83467 3.25689,1.76355 7.92178,1.50755 7.92178,1.50755 z m 24.14933,0.896 c 0.0569,-3.24266 0.14223,-10.16888 1.05245,-17.26577 0.896,-6.99734 4.56533,-23.85067 5.93066,-32.14223 2.31823,-14.15111 1.664,-24.12088 4.736,-29.62488 l -31.70133,1.18044 c 0,0 6.69867,13.24089 8.29156,29.04178 1.25155,12.31644 0.0142,31.84355 2.77333,47.31733 0,0 0.896,0.24178 2.11911,0.34133 0.61156,0.0427 1.99111,0.0427 2.73067,0.17067 2.23289,0.36978 4.06755,0.98133 4.06755,0.98133 z M 299.44889,192.64 c 0,0 6.57067,-20.69333 8.81778,-34.78756 3.65511,-22.94044 24.37689,-56.67555 29.952,-62.29333 l -40.22045,-1.33689 c 0,0 0.98134,30.02311 -0.82489,49.64978 -1.36533,14.83378 -8.50489,28.31644 -7.38133,49.82044 0,0 1.90578,0.71112 4.42311,0.52623 2.20445,-0.17067 5.23378,-1.57867 5.23378,-1.57867 z"
+         id="path22"
+         style="stroke-width:14.2222" />
+      <path
+         fill="#ccd6dd"
+         d="m 432,28.99911 c -0.64,0 -1.25156,0.14222 -1.87733,0.18489 -2.74489,-6.34311 -9.03111,-10.80889 -16.39823,-10.80889 -3.34222,0 -6.30044,1.16622 -8.97422,2.75911 -6.37155,-10.24 -17.64978,-17.12355 -30.60622,-17.12355 -11.57689,0 -21.77422,5.54666 -28.38756,14.00889 -7.01155,-4.77867 -15.47377,-7.59467 -24.59022,-7.59467 -16.41244,0 -30.54933,9.15911 -38.03022,22.54222 -3.76889,-8.704 -12.43022,-14.80533 -22.51378,-14.80533 -7.82222,0 -14.72,3.74044 -19.21422,9.44355 C 235.86133,11.59111 220.8,0 202.89422,0 c -14.43555,0 -27.05066,7.50933 -34.33244,18.80178 -2.00534,-0.29867 -4.02489,-0.61156 -6.11556,-0.61156 -11.40622,0 -21.70311,4.69334 -29.12711,12.21689 -0.96711,-0.0711 -1.87733,-0.28444 -2.85867,-0.28444 -0.48355,0 -0.93866,0.128 -1.408,0.14222 -4.38044,-5.66045 -11.136,-9.344 -18.816,-9.344 -7.48088,0 -14.08,3.51289 -18.44622,8.90311 -2.41778,-0.71111 -4.93511,-1.19467 -7.59466,-1.19467 -15.07556,0 -27.30667,12.23111 -27.30667,27.32089 0,15.08978 12.23111,27.32089 27.32089,27.32089 0.78222,0 1.50755,-0.17067 2.27555,-0.22755 3.08623,3.85422 7.62311,6.48533 12.94223,6.48533 0.65422,0 1.20888,-0.29867 1.83466,-0.36978 6.72711,8.81778 17.23734,14.592 29.16978,14.592 2.70222,0 5.31911,-0.32711 7.85067,-0.88178 4.97777,3.95378 10.78044,6.89778 17.25155,8.192 9.15911,15.94311 26.15467,26.80889 45.85245,26.80889 18.64533,0 34.97244,-9.65689 44.44444,-24.192 7.85067,9.62845 19.65511,15.90045 33.03822,15.90045 19.79734,0 36.29511,-13.51111 41.20178,-31.75823 0.36978,0.0142 0.71111,0.11378 1.08089,0.11378 5.21956,0 10.15467,-1.06666 14.80533,-2.74489 7.33867,5.73156 16.45511,9.28711 26.496,9.28711 15.104,0 28.37334,-7.76533 36.11023,-19.48444 2.75911,1.97689 5.95911,3.38489 9.61422,3.38489 6.85511,0 12.70044,-4.13867 15.33155,-10.01245 2.67378,0.95289 5.504,1.56445 8.49067,1.56445 14.05156,0 25.44356,-11.392 25.44356,-25.44356 0,-14.05155 -11.392,-25.48622 -25.44356,-25.48622 z"
+         id="path24"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="202.66667"
+         cy="66.887115"
+         r="28.785776"
+         id="circle26"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="167.11111"
+         cy="64.52623"
+         r="28.458666"
+         id="circle28"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="139.15024"
+         cy="65.820435"
+         r="15.786667"
+         id="circle30"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="336.48355"
+         cy="52.181335"
+         r="15.786667"
+         id="circle32"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="372.73602"
+         cy="46.748444"
+         r="21.262222"
+         id="circle34"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="227.21422"
+         cy="60.629333"
+         r="23.210667"
+         id="circle36"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="363.44888"
+         cy="59.207108"
+         r="25.372444"
+         id="circle38"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="247.76532"
+         cy="68.849777"
+         r="21.788445"
+         id="circle40"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="201.99823"
+         cy="50.218658"
+         r="24.177778"
+         id="circle42"
+         style="stroke-width:14.2222" />
+      <circle
+         fill="#aab8c2"
+         cx="201.4151"
+         cy="75.007996"
+         r="40.675552"
+         id="circle44"
+         style="stroke-width:14.2222" />
+      <g
+         aria-label="erupt"
+         transform="matrix(13.200728,0,0,13.200728,18.18506,8.13505)"
+         id="text56"
+         style="font-size:10.6667px;line-height:1.25;font-family:Hack;-inkscape-font-specification:Hack;text-align:center;text-anchor:middle;white-space:pre;inline-size:35.9937">
+        <path
+           d="m 5.4794526,35.928226 q -1.3489626,0 -2.1197983,-0.807295 -0.7656275,-0.812502 -0.7656275,-2.213548 0,-0.869795 0.3020843,-1.572922 0.3072927,-0.703127 0.9062529,-1.114587 0.6041686,-0.416668 1.489588,-0.416668 1.1666704,0 1.8072974,0.750003 0.6458354,0.744794 0.6458354,2.067715 v 0.468751 H 3.59403 v 0.03125 q 0,0.911461 0.4791682,1.45313 0.4791682,0.541668 1.4166711,0.541668 0.5416684,0 1.0468783,-0.171875 0.5104183,-0.171876 0.9843781,-0.416668 v 0.953128 q -0.4947932,0.203125 -1.0052115,0.322917 -0.5052099,0.125001 -1.0364616,0.125001 z m 1.3072958,-3.588553 q 0,-0.484377 -0.1458338,-0.875003 -0.1458338,-0.390626 -0.4687515,-0.619794 -0.3177093,-0.229167 -0.8437526,-0.229167 -0.5312517,0 -0.8906278,0.234376 -0.3541678,0.229167 -0.5572935,0.619793 -0.1979173,0.390626 -0.2500007,0.869795 z"
+           style="font-size:10.6667px;fill:#ffffff"
+           id="path33" />
+        <path
+           d="m 9.9430086,29.943832 h 0.8697944 l 0.09375,1.140628 q 0.244793,-0.619793 0.734378,-0.947919 0.494793,-0.333335 1.182295,-0.333335 0.718752,0 1.250004,0.364585 v 0.97917 q -0.562502,-0.458335 -1.333338,-0.458335 -0.885419,0 -1.359379,0.56771 -0.47396,0.562502 -0.47396,1.619797 v 2.901051 H 9.9430086 Z"
+           style="font-size:10.6667px;fill:#ffffff"
+           id="path35" />
+        <path
+           d="m 17.583658,35.928226 q -1.776047,0 -1.776047,-2.359383 v -3.614595 h 0.958336 v 3.614595 q 0,1.526047 1.140629,1.526047 0.666668,0 1.031253,-0.479168 0.364584,-0.484377 0.364584,-1.364588 v -3.296886 h 0.963545 v 5.822936 h -0.869794 l -0.09375,-0.875003 q -0.520835,1.026045 -1.718755,1.026045 z"
+           style="font-size:10.6667px;fill:#ffffff"
+           id="path37" />
+        <path
+           d="m 22.203464,29.943832 h 0.869794 l 0.09375,0.744794 q 0.500001,-0.88542 1.567713,-0.88542 1.046878,0 1.645838,0.817711 0.604169,0.817711 0.604169,2.234382 0,1.427088 -0.609377,2.250007 -0.604168,0.82292 -1.64063,0.82292 -1.093753,0 -1.567713,-0.88542 v 2.953135 h -0.963545 z m 2.406258,5.171891 q 1.369796,0 1.369796,-2.250007 0,-2.250007 -1.369796,-2.250007 -0.703128,0 -1.07292,0.583335 -0.369793,0.583335 -0.369793,1.661464 0,1.083336 0.369793,1.67188 0.375001,0.583335 1.07292,0.583335 z"
+           style="font-size:10.6667px;fill:#ffffff"
+           id="path39" />
+        <path
+           d="m 31.838912,35.798017 q -1.07292,0 -1.520838,-0.432293 -0.44271,-0.437501 -0.44271,-1.489588 v -3.18751 h -1.557297 v -0.744794 h 1.557297 V 28.417785 L 30.8337,28.001117 v 1.942715 h 2.17709 v 0.744794 H 30.8337 v 3.18751 q 0,0.640627 0.244793,0.901044 0.244792,0.25521 0.854169,0.25521 h 1.078128 v 0.765627 z"
+           style="font-size:10.6667px;fill:#ffffff"
+           id="path41" />
+      </g>
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="boot"
+     style="display:inline">
+    <g
+       id="g2333"
+       transform="matrix(0.53206528,-0.14837119,0.14837119,0.53206528,17.656293,-78.451354)">
+      <g
+         id="layer1"
+         style="display:inline">
+        <g
+           id="g19140">
+          <path
+             d="m 138,284.36218 c -12,14 42,-18 42,-18 0,0 12,-8 40,-12 28,-4 56,2 56,2 l -10,68 -84,66 z"
+             id="path9973"
+             style="fill:#573400;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <path
+             d="m 380,510.36218 -98,-48 c 0,0 -72,-114 -72,-136 0,-22 -2,-38 16,-62 18,-24 60,-26 60,-26 0,0 20,6 6,-2 -14,-8 4,-4 4,-4 0,0 -2,-6 6,4 8,10 4,34 8,64 4,30 10,70 24,96 14,26 92,80 92,80 l 34,42 z"
+             id="path9213"
+             style="fill:#753f00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <path
+             d="m 93.851901,511.60588 2.988983,-49.15966 c 0,0 8.966946,-41.71123 13.450416,-53.62873 0.41273,-11.33595 2.65757,-16.71317 2.65757,-16.71317 0,0 1.90721,-13.47887 4.81489,-17.54962 l 0.50023,-25.5079 c 1.16307,-4.83551 -2.00093,-9.88611 1.5758,-16.82469 0,-7.44844 -5.06501,-14.27551 -5.06501,-14.27551 0,0 -7.47245,-17.87624 -2.98898,-25.32468 4.48347,-7.44843 19.42837,-14.89686 31.38431,-14.89686 11.95592,0 46.32922,14.89686 73.23006,20.85561 26.90083,5.95875 29.88982,13.40718 35.86778,25.32468 5.97796,11.91749 17.93389,65.54621 28.39533,75.97402 10.46144,10.42781 11.95593,17.87624 44.83473,50.64935 32.8788,32.77311 59.77964,37.24217 59.77964,37.24217 l 19.42839,8.93812 22.41736,-11.91749 c 0,0 -59.77964,-16.38656 -68.74659,-34.2628 -8.96695,-17.87624 -43.34024,-81.93277 -43.34024,-81.93277 0,0 -4.48347,-26.81436 -5.97796,-46.18029 -1.4945,-19.36593 4.48347,-29.79374 4.48347,-29.79374 0,0 5.97797,31.28343 7.47246,46.18029 0.91295,25.36451 6.05306,40.54019 25.40634,68.5256 5.97797,2.97937 48.07384,33.49007 68.99671,53.77212 22.41737,11.91749 23.66174,20.71221 68.49646,41.56783 34.3733,8.93812 51.64435,15.15179 51.64435,15.15179 0,0 26.15049,8.38844 18.59674,41.45631 -10.46144,20.85561 -26.90084,23.83499 -19.42838,23.83499 l -20.92288,10.4278 -82.197,25.32468 -95.64744,-2.97938 -80.7025,-37.24216 -68.7466,-19.36593 -88.174965,-13.40718 z"
+             id="path6934"
+             style="fill:#803a00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <path
+             d="m 99.442567,580.15537 -10.467638,-55.82741 5.233819,-26.75063 c 0,0 30.821382,22.67989 36.636732,23.84296 5.81536,1.16307 43.03363,22.67988 43.03363,22.67988 0,0 34.31059,1.74461 42.45209,3.48921 8.1415,1.74461 31.40292,5.81536 41.28902,11.04918 9.8861,5.23382 45.9413,30.82138 52.33819,34.31059 6.39689,3.48921 45.94131,17.44607 61.06123,16.86453 15.11992,-0.58154 76.18115,0.58154 81.41497,-2.32614 5.23381,-2.90768 4.65228,-8.1415 22.09834,-15.70146 17.44607,-7.55996 40.70749,-13.37532 52.91973,-20.35374 12.21225,-6.97843 26.1691,-18.60914 28.49524,-18.60914 2.32614,0 4.07075,-2.32614 5.23382,1.74461 1.16307,4.07075 1.16307,25.58756 -3.48921,40.70748 -4.65229,15.11993 -41.28902,25.58756 -55.24587,30.82138 -13.95685,5.23382 -90.71954,19.77221 -92.46414,20.93528 -0.10904,0.0727 -2.03708,0.32711 -2.84748,0.38163 -0.8104,0.0545 -0.24113,-2.83323 -1.33534,-2.7878 -1.09421,0.0454 -9.74889,0.44627 -11.27698,0.47353 -1.5281,0.0273 -1.35419,2.73225 -3.03235,2.75042 -1.67816,0.0182 -19.94542,0.0182 -21.77805,0 -1.83263,-0.0182 0.19183,-2.21225 -1.56797,-2.23951 -1.7598,-0.0273 -7.17612,-0.6977 -8.81851,-0.73404 -1.64238,-0.0363 -0.40491,3.62685 -1.8853,3.58142 -1.48039,-0.0454 -12.44461,-1.35296 -13.17153,-1.42565 -0.72692,-0.0727 -4.16729,-0.644 -5.14523,-0.85186 -0.97793,-0.20785 -0.22277,-2.49058 -1.30321,-2.75835 -1.08044,-0.26777 -8.30544,-3.2185 -9.54489,-3.59076 -1.23946,-0.37226 -1.74464,2.936 -3.0406,2.51916 -1.29596,-0.41685 -14.86437,-5.30311 -16.23302,-5.84716 -1.36865,-0.54406 1.22848,-2.88708 -0.12001,-3.45016 -1.34849,-0.56308 -8.17534,-3.30575 -9.48834,-3.88274 -1.313,-0.577 -1.07169,2.79987 -2.33386,2.21408 -1.26217,-0.5858 -9.34517,-4.70595 -10.36286,-5.28749 -3.48921,-13.95684 -4.07074,-16.28299 -4.07074,-16.28299 0,0 -38.96288,-28.49524 -43.03363,-27.33217 -4.07075,1.16307 -17.44607,5.23382 -17.44607,5.23382 l -9.8861,-0.58153 v 6.97842 l -11.63071,15.11992 c 0,0 -0.22489,-0.0432 -0.64897,-0.12466 -0.42409,-0.0815 -1.04736,-0.20132 -1.84414,-0.35465 -0.79677,-0.15334 -1.76703,-0.34018 -2.8851,-0.5557 -1.11806,-0.21552 -2.38393,-0.45972 -3.77189,-0.72777 -1.38796,-0.26805 -2.89802,-0.55995 -4.50448,-0.87088 -1.60647,-0.31093 -3.30933,-0.64088 -5.0829,-0.98503 -1.77357,-0.34415 -3.61784,-0.7025 -5.50712,-1.07022 -1.88929,-0.36772 -0.34557,-3.67937 -2.29917,-4.061 -1.9536,-0.38164 -9.46956,-2.18075 -11.43607,-2.56664 -1.96652,-0.38589 0.52954,3.68469 -1.3985,3.30419 -1.92804,-0.3805 -6.21512,-0.86457 -8.05329,-1.23002 -1.83817,-0.36545 -3.61855,-0.72095 -5.31545,-1.0617 -1.6969,-0.34074 -3.31032,-0.66672 -4.81456,-0.9731 -1.50424,-0.30639 0.36132,-3.20168 -0.89886,-3.46405 -1.26019,-0.26237 -6.73299,-1.26114 -7.69772,-1.46984 -0.96473,-0.20871 -0.68201,2.98114 -1.29989,2.83576 -2.47153,-0.58154 -5.81536,-1.85364 -9.44087,-3.43469 -3.62551,-1.58105 -1.86355,-0.73421 -5.4618,-2.55151 -0.89956,-0.45432 0.22393,-2.2603 -0.26124,-2.38802 -0.48518,-0.12771 -3.04037,-1.2882 -3.37448,-1.35004 -0.33411,-0.0618 -1.13439,2.53174 -1.73183,2.20917 -2.38975,-1.29028 -13.458843,-8.18637 -13.458843,-8.18637 z"
+             id="path7694"
+             style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+          <g
+             id="g15332">
+            <g
+               id="g14566"
+               transform="translate(-2)">
+              <path
+                 d="m 391.95187,522.67769 c -1.46524,-5.86096 33.70054,-48.35294 31.50268,-58.60963 -2.19787,-10.25668 -83.51872,20.51337 -90.84492,12.45455 -7.32621,-8.05882 2.19786,-24.17647 8.05882,-32.96791 5.86096,-8.79145 21.24599,-15.38503 19.78075,-24.17647 -1.46524,-8.79145 -7.32621,-9.52407 -12.45455,-10.25669 -5.12834,-0.73262 -70.33155,21.24599 -70.33155,21.24599 0,0 -35.16577,14.65241 -38.09626,0.73262 -2.93048,-13.91979 11.72193,-23.44385 11.72193,-23.44385 0,0 62.27273,-19.04813 67.40107,-27.10695 5.12834,-8.05883 7.3262,-16.11765 7.3262,-16.11765"
+                 id="path13804"
+                 style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+              <path
+                 d="m 394.14973,521.94507 c 56.41177,-33.70053 57.87701,-35.16578 57.87701,-35.16578 0,0 4.39572,-10.9893 -2.93048,-10.9893 -7.32621,0 -80.58824,27.10695 -85.71658,26.37433 -5.12834,-0.73262 -8.05882,0 -5.12834,-5.86096 2.93048,-5.86096 36.63101,-54.94652 30.03743,-58.60963 -6.59358,-3.6631 -28.57219,-7.3262 -56.41176,2.93048 -27.83958,10.25669 -45.42246,30.77006 -37.36364,13.91979 8.05882,-16.85027 38.82888,-57.87701 38.82888,-57.87701 0,0 -94.50803,-0.73261 -97.43851,-7.3262 -2.93048,-6.59358 72.52942,-54.94652 71.79679,-71.79679"
+                 id="path13806"
+                 style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.7;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+            </g>
+            <path
+               d="m 321.62032,360.7686 c -1.46524,-2.93048 -88.64706,-8.05882 -88.64706,-21.24599 0,-13.18717 69.59893,-32.96791 69.59893,-32.96791"
+               id="path14570"
+               style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+          </g>
+          <g
+             id="g13789">
+            <path
+               d="m 400.0107,521.94507 a 8.058825,9.5240658 0 1 1 -16.11765,0 8.058825,9.5240658 0 1 1 16.11765,0 z"
+               id="path13009"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 369.97328,501.4317 a 7.692515,9.524066 0 1 1 -15.38503,0 7.692515,9.524066 0 1 1 15.38503,0 z"
+               id="path13011"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 336.27273,476.88892 a 8.425135,9.1577553 0 1 1 -16.85027,0 8.425135,9.1577553 0 1 1 16.85027,0 z"
+               id="path13013"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 301.83957,453.81137 a 7.326205,8.7914458 0 1 1 -14.65241,0 7.326205,8.7914458 0 1 1 14.65241,0 z"
+               id="path13015"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 249.82353,430.73383 a 8.425135,15.751339 0 1 1 -16.85027,0 8.425135,15.751339 0 1 1 16.85027,0 z"
+               id="path13017"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 246.16042,387.50925 a 7.6925135,8.4251337 0 1 1 -15.38502,0 7.6925135,8.4251337 0 1 1 15.38502,0 z"
+               id="path13019"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 241.76471,335.49319 a 7.326205,7.6925153 0 1 1 -14.65241,0 7.326205,7.6925153 0 1 1 14.65241,0 z"
+               id="path13021"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 452.75935,479.08679 a 5.1283422,4.762032 0 1 1 -10.25668,0 5.1283422,4.762032 0 1 1 10.25668,0 z"
+               id="path13023"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 419.79144,457.47449 a 4.029415,4.3957254 0 1 1 -8.05883,0 4.029415,4.3957254 0 1 1 8.05883,0 z"
+               id="path13025"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 389.754,436.59482 a 4.395725,4.0294146 0 1 1 -8.79145,0 4.395725,4.0294146 0 1 1 8.79145,0 z"
+               id="path13027"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+            <path
+               d="m 360.4492,410.58679 a 3.6631017,3.6631017 0 1 1 -7.3262,0 3.6631017,3.6631017 0 1 1 7.3262,0 z"
+               id="path13029"
+               style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#505050;stroke-width:1.7;stroke-miterlimit:4;stroke-opacity:0.497297" />
+          </g>
+          <path
+             d="m 308.43316,305.82208 c 0,0 -19.04813,-2.19787 -26.37434,-0.73262 -7.3262,1.46524 -19.78075,13.18716 -19.78075,19.04812 0,5.86097 1.46525,13.91979 5.12835,16.11765 3.6631,2.19786 16.85026,1.46524 19.04813,-4.39572 2.19786,-5.86096 15.38502,-13.91979 19.04812,-20.51337 3.66311,-6.59358 16.11765,-19.04813 22.71123,-24.17647 6.59359,-5.12834 15.38503,-8.79144 19.78075,-2.93048 4.39572,5.86096 15.38503,6.59358 13.91979,16.85027 -1.46524,10.25668 5.12834,16.11764 -5.12834,15.38502 -10.25669,-0.73262 -8.05883,-5.12834 -17.58289,-8.79144 -9.52407,-3.6631 -19.78075,-3.6631 -25.64171,-5.12834 -5.86097,-1.46524 -12.45455,2.93048 -5.12834,-0.73262 z"
+             id="path15338"
+             style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+          <path
+             d="m 318.68984,302.89159 c -0.73262,2.93049 -7.3262,-5.86096 -7.3262,-5.86096 l 8.79144,-13.91978 13.91979,-5.86097 5.12834,-2.19786"
+             id="path15340"
+             style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+          <path
+             d="m 303.30481,307.28732 18.31551,16.11764 1.46524,18.31551"
+             id="path17622"
+             style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:8.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
+        </g>
+      </g>
+      <g
+         id="layer2"
+         style="display:none" />
+    </g>
+  </g>
+</svg>
diff --git a/content/news/030/extreme-bevy.png b/content/news/030/extreme-bevy.png
new file mode 100644
index 000000000..ae0bd8302
Binary files /dev/null and b/content/news/030/extreme-bevy.png differ
diff --git a/content/news/030/flesh.gif b/content/news/030/flesh.gif
new file mode 100644
index 000000000..5744d081d
Binary files /dev/null and b/content/news/030/flesh.gif differ
diff --git a/content/news/030/flipflop.png b/content/news/030/flipflop.png
new file mode 100644
index 000000000..7b414a529
Binary files /dev/null and b/content/news/030/flipflop.png differ
diff --git a/content/news/030/gamedev-meetup.png b/content/news/030/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/030/gamedev-meetup.png differ
diff --git a/content/news/030/godot-rust-games.jpg b/content/news/030/godot-rust-games.jpg
new file mode 100644
index 000000000..f788736df
Binary files /dev/null and b/content/news/030/godot-rust-games.jpg differ
diff --git a/content/news/030/graphite_alpha.png b/content/news/030/graphite_alpha.png
new file mode 100644
index 000000000..57aa93e18
Binary files /dev/null and b/content/news/030/graphite_alpha.png differ
diff --git a/content/news/030/hgs6.jpg b/content/news/030/hgs6.jpg
new file mode 100644
index 000000000..3330091e4
Binary files /dev/null and b/content/news/030/hgs6.jpg differ
diff --git a/content/news/030/hho.jpg b/content/news/030/hho.jpg
new file mode 100644
index 000000000..d0699d17d
Binary files /dev/null and b/content/news/030/hho.jpg differ
diff --git a/content/news/030/index.md b/content/news/030/index.md
new file mode 100644
index 000000000..653eefaa5
--- /dev/null
+++ b/content/news/030/index.md
@@ -0,0 +1,961 @@
++++
+title = "This Month in Rust GameDev #30 - January 2022"
+transparent = true
+date = 2022-02-10
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 30th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The twelfth Rust Gamedev Meetup happened in January. You can watch the
+recording of the meetup [here on Youtube][gamedev-meetup-video]. The meetups
+take place on the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/BIMsBFbPV-c
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[rust-meetup-feb-time]: https://everytimezone.com/s/48bc48be
+
+## Game Updates
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="the second level's background + new enemy") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+an organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- The completed first level, with a mid-boss and main boss.
+- The second level of the game with new enemies.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### [Rusty Vangers]
+
+{{ image_figure(
+    alt="Rust engine powering original game"
+    src="vangers-integrated.jpg"
+    caption="Rusty Vangers engine in action within the original game") }}
+
+[Rusty Vangers] by [@kvark] is a modern re-implementation of the original
+[Vangers] game from the last century.
+It's in Rust, and uses GPU and multiple threads heavily.
+
+Something incredible has been brewing within the small but dedicated community
+of the original game. They prototyped a pluggable rendering interface in order
+to support rendering the game via [Rusty Vangers] instead of the default
+CPU-based rasterizer. The plugin is made as a static library sub-crate with a
+bunch of C-exported functions.
+The approach worked for the terrain, so the mini working group transitioned
+to moving more visual features off the old path and into the Rust-based plugin.
+
+At the same time, [Rusty Vangers] engine got a number of important
+fixes and additions:
+
+- water is rendered fair as transparent surfaces
+- lighting evaluation on the second layer is fixed
+- dynamic terrain and palette modification is supported
+- custom viewport support
+- can render menu screens, not just the game levels
+
+[Rusty Vangers]: https://vange.rs
+[Vangers]: https://www.gog.com/en/game/vangers
+[@kvark]: https://github.com/kvark/
+
+### [Way of Rhea][wor]
+
+![way of rhea capsule image](wor-capsule.jpg)
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. It has a demo available [on Steam][wor].
+
+Latest developments:
+
+- [Making Your Game Go Fast by Asking Windows Nicely][wor-fast] was published,
+  discussing Windows-specific performance tweaks in Way of Rhea's engine
+- Work started on the Snowcrab + Teleporter puzzles, completing nearly all the
+  puzzles in the main game
+- Work began on art for The Professor (pictured left), Shrew, and Hermes
+- Work began on artwork for the Mushroom Biome, and continued on the Hub World
+- The narrative was reworked, and the dialogue system was improved
+- The main menu, pause menu, and option screen UIs were replaced
+
+You can stay up to date with the latest Way of Rhea developments by
+[following it on Steam][wor], signing up for [their mailing list][wor-newsletter],
+or joining [their Discord][wor-discord].
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n30
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-newsletter]: https://www.anthropicstudios.com/newsletter/signup
+[wor-fast]: https://www.anthropicstudios.com/2022/01/13/asking-windows-nicely/
+[wor-discord]: https://discord.gg/JGeVt5XwPP
+
+### [Garden of the Centaur][centaur-github]
+
+{{ image_figure(
+    alt="Garden of the Centaur screenshot"
+    src="centaur-screenshot.png"
+    caption="Screenshot of Garden of the Centaur") }}
+
+Garden of the Centaur ([GitHub][centaur-github]) by
+[@Syn-Nine][synnine-twitter] is an action-puzzle mini game where you navigate a
+garden maze and steal the Centaur's gems. Getting caught spells certain doom.
+
+The game was created using Syn9's [Rust Mini Game Framework][mgfw] and is
+part of an open source [repository][s9-minigame-repo] of several mini-games
+that use this framework.
+
+[centaur-github]: https://github.com/Syn-Nine/rust-mini-games/tree/main/2d-games/centaur
+[synnine-twitter]: https://twitter.com/Syn9Dev
+[mgfw]: https://github.com/Syn-Nine/mgfw
+[s9-minigame-repo]: https://github.com/Syn-Nine/rust-mini-games/
+
+### [Kataster]
+
+![Kataster screenshot](kataster.jpg)
+
+[Kataster] by [@Bobox214] is a single-screen space shooter mini-game,
+using [bevy] and [heron] (powered by [rapier]).
+
+Its goal is to be a simple demonstration game for [bevy], and provide newcomers
+another example to look into when they begin their journey with the engine.
+
+The latest version includes:
+
+- Support for [bevy] 0.6
+- A new shader background to showcase integration with the new renderer.
+
+[Kataster]: https://github.com/Bobox214/Kataster
+[bevy]: https://bevyengine.org/
+[rapier]: https://rapier.rs
+[heron]: https://github.com/jcornaz/heron
+[@Bobox214]: https://github.com/Bobox214
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Bright lantern"
+    src="veloren.jpg"
+    caption="A light to keep the night away") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In January, another [Veloren Reading Club was
+recorded][veloren-reading-club-4]! The `entity_sync` system was refactored to
+be parallel. This was the largest bottleneck during the last release party, and
+this fix will allow us to more easily surpass the 200 player mark on the server.
+Work has been done to improve dagger animations. Sounds for flowing rivers are
+now more bubbly sounding. Work is happening to get the OpenGL renderer to work
+with WGPU for Veloren, as the project transitioned to Vulkan, but wants to keep
+backward compatibility for older GPUs.
+
+Skiing and ice skating have gotten to a playable state. The mounts system was
+overhauled to make it more ergonomic to work with, you can [watch a video of
+that here][veloren-mounts]. Several experimental shaders have been
+added, along with a "point glow" which help lanterns look better. With these new
+shaders, swimming underwater is a whole new experience! A tracking issue was
+created for worldgen issues that will help coordinate direction for some large
+systems in the future.
+
+January's full weekly devlogs: "This Week In Veloren...":
+[#152][veloren-152],
+[#153][veloren-153],
+[#154][veloren-154],
+[#155][veloren-155],
+[#156][veloren-156].
+
+[veloren]: https://veloren.net
+[veloren-mounts]: https://www.youtube.com/watch?v=fJpeOJT78TI
+[veloren-reading-club-4]: https://www.youtube.com/watch?v=nR2WDBMjkh8
+
+[veloren-152]: https://veloren.net/devblog-152
+[veloren-153]: https://veloren.net/devblog-153
+[veloren-154]: https://veloren.net/devblog-154
+[veloren-155]: https://veloren.net/devblog-155
+[veloren-156]: https://veloren.net/devblog-156
+
+### [Not Snake][notsnake]
+
+![Editor for Not Snake](notsnake.gif)
+
+Not Snake ([GitHub][notsnakegit], [Itch][notsnake]) by [Michael Ramirez] is a
+3D snake game where you don't play as the snake.
+
+Not Snake is being developed using the [Bevy game engine][notsnakebevy]. The
+first version can be played [here][notsnake]. An updated version
+is now being worked on since the 0.6 release of [Bevy][notsnakebevy].
+
+The bulk of the work this month was spent on creating a level editor
+using the [egui][notsnakeegui] and [bevy_mod_picking][notsnakepick] crates to
+make it easier to add new features/modes to the game.
+
+Current features include:
+
+- Able to create, customize, and delete game entities
+- Multi-select entities for bulk changes
+- Can play-test levels in the editor
+- Camera controls
+- Save/Load levels
+
+More details on the initial editor work and a retrospective of the first
+version of the game can be read [here][notsnakepost] and a video of
+the save/load feature can be seen [here][notsnakeyt].
+
+[notsnake]: https://ramirezmike2.itch.io/not-snake
+[notsnakepost]: https://ramirezmike2.itch.io/not-snake/devlog/333283/retrospective-working-on-new-features
+[Michael Ramirez]: https://github.com/ramirezmike
+[notsnakebevy]: https://bevyengine.org
+[notsnakegit]: https://github.com/ramirezmike/not_snake_game
+[notsnakeyt]: https://www.youtube.com/watch?v=cwI00pXDc6Q
+[notsnakepick]: https://github.com/aevyrie/bevy_mod_picking
+[notsnakeegui]: https://github.com/emilk/egui
+
+### [Harvest Hero Origins] is now available
+
+![harvest_hero](hho.jpg)
+
+[Harvest Hero Origins] is an Arcade Wave Defense game that has been
+in development by [Gemdrop Games] for the past 10 months.
+
+It is the studio's first commercial release, developed in
+the [Emerald] game engine.
+
+The game is available now on Windows and Linux for $2.99 with
+a launch discount of 10%!
+
+The studio plans to provide free updates for a period of time,
+before moving on to focusing 100% of their efforts on the sequel,
+Harvest Hero.
+
+Features
+
+- Story Mode
+- Survival Mode
+  - Competitive Leaderboards
+  - Infinitely Replayable
+  - 3 unique heroes
+  - 3 skins per hero
+  - Local co-op (online through steam remote play)
+
+[Harvest Hero Origins]: https://store.steampowered.com/app/1651500/Harvest_Hero_Origins/
+[Emerald]: https://github.com/Bombfuse/emerald
+[Gemdrop Games]: https://twitter.com/gemdropgames
+
+### [Hydrofoil Generation]
+
+![hgs_screen](hgs6.jpg)
+
+[Hydrofoil Generation]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that will put you in the driving seat of modern competitive sailing.
+
+The last couple of months saw great disappointment for the failed port to WGPU
+due to unexpected performance losses compared to the old renderer. The game is
+now back to its original DirectX 11 renderer.
+
+February will see the beginning of the private alpha testing program, an
+exciting opportunity to gather the first feedback about boat handling and
+controls before diving into one of the most challenging tasks of the game:
+sailing rules implementation.
+
+Content-wise, Hong Kong will soon join Den Haag as a race location while the
+racecourse is becoming more and more alive with the addition of spectators
+boats. The playable foiling catamaran Jx50 is also constantly getting graphical
+updates and physics tweaks.
+
+Hydrofoil Generation is scheduled to release on Steam Early Access in Summer
+2022.
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://www.facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+[hgs_trailer]: https://youtu.be/CfmCLr19Hbs
+
+### Country Slice
+
+![country_slice](country_slice_7_delete_brush.gif)
+
+[Country Slice][country-slice-github] is
+[@anastasiaopara][country-slice-twitter]'s hobby project, where users can draw a
+small procedurally assembled scene.
+
+The newest addition is an erase brush and an ability to continue existing walls.
+
+[@anastasiaopara][country-slice-twitter] also shared [a Twitter thread][country-slice-discussion]
+about doing procedural generation in Houdini vs Rust & OpenGL.
+
+[country-slice-github]: https://github.com/anopara/country-slice
+[country-slice-twitter]: https://twitter.com/anastasiaopara/
+[country-slice-discussion]: https://twitter.com/anastasiaopara/status/1477570256180817924
+
+## Engine Updates
+
+### [godot-rust][gd-github]
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+The start of 2022 is a good opportunity to showcase a few godot-rust games in
+development. More info is available in [the book][gd-book-games].
+
+![godot-rust example games](godot-rust-games.jpg)
+
+Using custom builds of the Godot engine involved quite a bit of ceremony in the
+past: manual CLI invocations, code replacement, and re-wiring of the
+`gdnative-bindings` subcrate. The approach has been fundamentally overhauled,
+and is now as simple as specifying the crate feature `custom-godot`
+([#833][gd-833]). The library will automatically look for a `godot` executable
+in the system path (or a `GODOT_BIN` environment variable), and regenerate
+`api.json`. This makes using older or module-extended Godot versions a breeze.
+
+The latest `master` branch has now been updated to support Godot 3.4 out of the
+box ([#829][gd-829]).
+
+Upcoming godot-rust version 0.10 seems to be finally on the horizon, with only a
+handful of tasks left ([#842][gd-842]). A changelog since v0.9.3 is now
+available. The continuous stream of small improvements here and there has led to
+a sizable list! ([#845][gd-845])
+
+[gd-833]: https://github.com/godot-rust/godot-rust/pull/833
+[gd-829]: https://github.com/godot-rust/godot-rust/pull/829
+[gd-842]: https://github.com/godot-rust/godot-rust/issues/842
+[gd-845]: https://github.com/godot-rust/godot-rust/pull/845
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+[gd-book-games]: https://godot-rust.github.io/book/projects/games.html
+
+### [Rusty Engine 4.0]
+
+{{ image_figure(
+    alt="An example Rusty Engine game"
+    src="rusty_engine4.png"
+    caption="The updated collider visualization (white outlines) in Rusty Engine 4.0") }}
+
+[Rusty Engine] by [Nathan Stocks] is a game engine built on top of Bevy
+for people who are learning Rust.
+
+Notable new features in Version 4.0 include: no need for an `init!` macro, new
+collider visualization, text can now be rotated and scaled, and an updated
+[online tutorial]. See [the changelog for 4.0] for the full details. On the
+back end Bevy has been updated to 0.6 and `bevy_prototype_debug_lines` was
+replaced with `bevy_prototype_lyon`.
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust_gamedev/comments/sg2cdg/rusty_engine_40/),
+[twitter](https://twitter.com/nathanstocks/status/1487667704118988803)_
+
+[Rusty Engine 4.0]: https://github.com/CleanCut/rusty_engine/blob/main/CHANGELOG.md#400---2022-01-29
+[Rusty Engine]: https://github.com/CleanCut/rusty_engine
+[online tutorial]: https://cleancut.github.io/rusty_engine/
+[the changelog for 4.0]: https://github.com/CleanCut/rusty_engine/blob/main/CHANGELOG.md#400---2022-01-29
+[Nathan Stocks]: https://github.com/CleanCut
+
+### [Bevy v0.6][bevy-blog]
+
+{{ image_figure(
+    alt="bevy bistro night"
+    src="bevy_bistro_night.jpg"
+    caption="The Lumberyard Bistro scene rendered in the new Bevy Renderer.") }}
+
+[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It is
+[free and open source][bevy-git] forever!
+
+Bevy 0.6 was a massive community effort. You can check out the
+[full release blog post here][bevy-blog], but here are some highlights:
+
+- [A brand new modern renderer that is prettier, faster, and simpler to extend][bevy-renderer]
+- [Directional and point light shadows][bevy-shadows]
+- [Clustered forward rendering][bevy-clustered]
+- [Frustum culling][bevy-frustum-culling]
+- [Significantly faster sprite rendering with less boilerplate][bevy-sprites]
+- [Native WebGL2 support][bevy-webgl2]. You can test this out by running the
+  [Bevy Examples in your browser][bevy-web-examples]!
+- [High level custom Materials][bevy-materials]
+- [More powerful shaders: preprocessors, imports, WGSL support][bevy-shaders]
+- [Bevy ECS ergonomics and performance improvements. No more .system()!][bevy-ecs]
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/rz612l/bevy_06/),
+[Hacker News](https://news.ycombinator.com/item?id=29854416),
+[Twitter](https://twitter.com/cart_cart/status/1479879242347270145)_
+
+[bevy]: https://bevyengine.org
+[bevy-git]: https://github.com/bevyengine/bevy
+[bevy-blog]: https://bevyengine.org/news/bevy-0-6
+[bevy-renderer]: https://bevyengine.org/news/bevy-0-6/#the-new-bevy-renderer
+[bevy-shadows]: https://bevyengine.org/news/bevy-0-6/#directional-shadows
+[bevy-clustered]: https://bevyengine.org/news/bevy-0-6/#clustered-forward-rendering
+[bevy-sprites]: https://bevyengine.org/news/bevy-0-6/#sprite-batching
+[bevy-webgl2]: https://bevyengine.org/news/bevy-0-6/#webgl2-support
+[bevy-web-examples]: https://bevyengine.org/examples
+[bevy-ecs]: https://bevyengine.org/news/bevy-0-6/#bevy-ecs
+[bevy-materials]: https://bevyengine.org/news/bevy-0-6/#materials
+[bevy-frustum-culling]: https://bevyengine.org/news/bevy-0-6/#visibility-and-frustum-culling
+[bevy-shaders]: https://bevyengine.org/news/bevy-0-6/#wgsl-shaders
+
+### [`three-d` 0.10][three-d]
+
+{{ image_figure(
+    alt="three-d example of environment lighting"
+    src="three-d.jpg"
+    caption="Environment lighting example") }}
+
+[`three-d`][three-d]
+is a 2D/3D renderer targeting both desktop and web
+that aims to make rendering simple and give the user full control.
+
+`three-d` 0.10 has been released featuring:
+
+- Environment lighting (image-based lighting)
+- HDR environment map
+- Headless graphics context
+- Tangent vertex attributes
+- Texture transform
+- Cube map render targets
+- f16 and u16 texture data types
+- and more...
+
+See [this Twitter thread][three-d-twitter] for videos.
+
+[three-d]: https://github.com/asny/three-d
+[three-d-twitter]: https://twitter.com/AsgerNyman/status/1482711259673944067
+
+### [Tetra]
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, an alpha version of Tetra 0.7 was released, featuring:
+
+- Support for a wider variety of texture formats
+- A more powerful API for blending
+- Lots of bug fixes, cleanups, and improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+Alongside the release of this version, it was also [announced][tetra-twitter]
+that Tetra is no longer under active development. The developer
+has written a [retrospective blog post][tetra-retro], explaining what went well
+and what didn't go so well with the engine's development, and giving some
+rationale for why they decided to move on from the project.
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[tetra-twitter]: https://twitter.com/17cupsofcoffee/status/1479601522661109764
+[tetra-retro]: https://www.seventeencups.net/posts/three-years-of-tetra/
+
+## Learning Material Updates
+
+### [Making Your Game Go Fast by Asking Windows Nicely][awn-post]
+
+[![A speed limit sign labeled 45 FPS](awn-header.jpg)][awn-post]
+
+[Mason Remaley][awn-mason-remaley] published [a blog post][awn-post] covering
+Windows-specific performance tweaks employed in his Rust game engine:
+
+> Normally, to make your software go faster, it has to do less work. This
+> usually involves improving your algorithms, skipping work the user won't see,
+> factoring your target hardware into the design process, or modifying your
+> game's content.
+>
+> We're not talking about any of that today. This post is a list of ways to make
+> your game run faster on Windows–without making any major changes to your
+> game's content, code, or algorithms.
+
+You can read more [here][awn-post].
+
+_Discussions:
+[/r/rust_gamedev][awn-rust-gamedev]_
+
+[awn-mason-remaley]: https://twitter.com/masonremaley
+[awn-post]: https://www.anthropicstudios.com/2022/01/13/asking-windows-nicely/
+[awn-rust-gamedev]: https://www.reddit.com/r/rust_gamedev/comments/s393sx/making_your_game_go_fast_by_asking_windows_nicely/
+
+### [Refactoring from Legion to Bevy][rflb-post]
+
+[Justin Hurstwright][justin_rhw] published a [blog post][rflb-post] describing
+how to migrate from Legion ECS into Bevy ECS without giving up on
+the other frameworks one might rely on.
+
+You can read it [here][rflb-post].
+
+[justin_rhw]: https://twitter.com/justin_rhw
+[rflb-post]: https://justinryanh.github.io/post/refactoring_from_legion_to_bevy/
+
+### [Writing an AH Scanner in Rust][trimoq-post]
+
+[![AH scanner workflow](ah-scanner.png)][trimoq-post]
+
+Trimoq ([GitHub][trimoq-github], [Twitter][trimoq-twitter]) wrote [a blog
+post][trimoq-post] about writing a game client for a popular MMORPG. It
+focuses on some negative parts of Rust and its ecosystem. There are three key
+takeaways from this post:
+
+- Stay away from low-level libraries if you are not aware of how deep the rabbit
+  hole goes.
+- Evaluate the library ecosystem of Rust thoroughly before using it for a
+  project that requires somewhat exotic functionality.
+- Rust forces you to care about the details, regardless of whether you want to.
+
+The remainder of the article goes into depth on these three points.
+
+[trimoq-github]: https://github.com/trimoq
+[trimoq-twitter]: https://twitter.com/amann_dev
+[trimoq-post]: https://medium.com/digitalfrontiers/taking-rust-for-a-ride-to-azeroth-what-writing-an-ah-scanner-in-rust-taught-me-58edc936cbb
+
+### [Bevy Cheatbook]
+
+This month, [Bevy Cheatbook] focused on refactors to improve navigation,
+usefulness, and make maintenance easier going forward.
+
+- Updated for Bevy 0.6
+- Chapters reorganized to present content better and make things easy to find
+- [New page summarizing all the useful built-in types in Bevy][bevy-cb-builtins]
+- Better info about [working with WASM][bevy-cb-wasm]
+- Info about [cross-compiling for Windows from Linux][bevy-cb-cross]
+- Internal refactor for easy management of links, easier to avoid old/stale links
+- Can link everything from everywhere! All pages are now full of links!
+- All mentions of Bevy APIs now link to [docs.rs][docsrs-bevy]
+
+The next priority for the project is to provide at least some coverage of
+the areas of Bevy still not in the book: 2D, 3D, UI, scenes, rendering...
+
+If you'd like to support the project, donate to the author via
+[GitHub Sponsors][ghsponsors-inodentry]. Follow [@IyesGames on
+Twitter][twitter-iyesgames] for updates.
+
+[Bevy Cheatbook]: https://bevy-cheatbook.github.io
+[docsrs-bevy]: https://docs.rs/bevy
+[bevy-cb-builtins]: https://bevy-cheatbook.github.io/builtins.html
+[bevy-cb-wasm]: https://bevy-cheatbook.github.io/platforms/wasm.html
+[bevy-cb-cross]: https://bevy-cheatbook.github.io/setup/cross/linux-windows.html
+[ghsponsors-inodentry]: https://github.com/sponsors/inodentry
+[twitter-iyesgames]: https://twitter.com/IyesGames
+
+### [Extreme Bevy][extreme-bevy]
+
+![Screenshot of Extreme Bevy](extreme-bevy.png)
+
+Extreme Bevy is a [tutorial series][extreme-bevy] on how to create a low-latency
+P2P web game.
+
+It covers how to:
+
+- Use [Matchbox][matchbox] for setting up P2P connections using WebRTC data
+  channels.
+- Implement rollback using [GGRS][ggrs]
+- And using [Bevy][extreme-bevy-bevy] with the above
+
+The game itself is also live [here][extreme-bevy-game], and [its source is on
+GitHub][extreme-bevy-source]
+
+[ggrs]: https://github.com/gschup/ggrs
+[matchbox]: https://helsing.studio/posts/introducing-matchbox
+[extreme-bevy]: https://helsing.studio/posts/extreme-bevy
+[extreme-bevy-source]: https://github.com/johanhelsing/extreme_bevy
+[extreme-bevy-game]: https://helsing.studio/extreme
+[extreme-bevy-bevy]: https://bevyengine.org
+
+## Tooling Updates
+
+### [Nodus][nodus-github]
+
+![Demo that shows a simple circuit](flipflop.png)
+
+Nodus ([GitHub][nodus-github]) by [@r4gus] is a digital circuit simulator
+built with the Bevy game engine. The project is in an early stage of
+development but, most of the basic features are implemented. That includes:
+
+- Insert components like gates, switches, clocks, or light bulbs into
+  the world using a radial context menu.
+- Build digital circuits by connecting inputs and outputs of components
+  with each other.
+- Save projects to a .ron file and reload them later.
+
+[nodus-github]: https://github.com/r4gus/nodus
+[@r4gus]: https://github.com/r4gus
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite_alpha.png)
+
+[Graphite][graphite-website] ([GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is an in-development
+raster and vector 2D graphics editor that is free and open source. It is
+powered by a node graph compositing engine that supercharges your layer stack,
+providing a completely non-destructive editing experience.
+
+The team is proud and excited to announce Graphite alpha, the minimum viable
+product release for a web-based vector graphics editor. After one year in
+pre-alpha development by Rust Gamedev community members, this first milestone
+of alpha is here.
+
+Graphite alpha launches **Saturday, February 12** together with a new
+[project website][graphite-website].
+
+Work now commences on the second alpha milestone, focused on building the node
+graph system and vector render engine. You are invited to join the team and
+help make this exciting endeavor possible. [Join the Discord][graphite-discord]
+and get involved!
+
+[Try Graphite right now in your browser][graphite-live-demo] and please
+[star the GitHub repo](graphite-repo) to build momentum. Thank you for helping
+reach 1000⭐!
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.rs
+
+## Library Updates
+
+### leafwing-input-manager
+
+`leafwing-input-manager` ([GitHub](https://github.com/Leafwing-Studios/leafwing-input-manager),
+[crates.io](https://crates.io/crates/leafwing-input-manager)) by [@alice-i-cecile](https://twitter.com/AliceICecile)
+is an ergonomic, featureful and fully documented Bevy library
+for expressively abstracting over user input.
+
+Supports local multiplayer, enables input rebinding, integrates with `bevy_ui`,
+and handles chords!
+
+### [rafx]
+
+{{ image_figure(
+    alt="Rafx Screenshot"
+    src="rafx-screenshot.jpg"
+    caption="Sci-fi base demo scene, [watch TAA demo on youtube](https://www.youtube.com/watch?v=iWYpX7RGUSA)!",
+    link="https://www.youtube.com/watch?v=iWYpX7RGUSA") }}
+
+[Rafx][rafx] is a multi-backend renderer that optionally integrates with the
+[distill][rafx-distill] asset pipeline.
+
+Since the previous rafx update in this newsletter (6 months ago!), many new
+features have been introduced to improve performance and image quality. The
+main rendering pipeline has also been split into "modern" and "basic"
+pipelines. Unlike the basic pipeline which focuses on wide compatibility,
+the modern pipeline uses forward-clustered lighting and handles hundreds
+of shadow-casting lights. It is targeting compute shaders and will be adding
+bindless and GPU-driven rendering soon.
+
+Since the last update, the modern pipeline adds GPU-accelerated light binning,
+SSAO, shadow map atlasing/caching, TAA with sharpening, and auto-exposure/HDR.
+In addition, both modern and basic pipelines now support transparency. A
+[video demonstrating TAA][rafx-youtube-video] (temporal anti-aliasing) is
+available on youtube.
+
+With these performance improvements, `rafx` is now able to render challenging
+scenes with photorealistic style at 60FPS/1440p on modern, mid-range GPUs.
+
+[rafx]: https://github.com/aclysma/rafx
+[rafx-youtube-video]: https://www.youtube.com/watch?v=iWYpX7RGUSA
+[rafx-distill]: https://github.com/amethyst/distill
+
+### [erupt-bootstrap]
+
+![erupt-bootstrap logo](erupt-bootstrap.svg)
+
+[erupt-bootstrap] by [@Friz64] is a Vulkan Bootstrapping library for Rust.
+
+When starting a new Vulkan project, there's always the struggle of writing a
+whole bunch of boilerplate code in order to, e.g., get your first triangle on
+the screen. You have to create a `VkInstance`, with the validation layers
+set up and working for development. Then select the best suited
+`VkPhysicalDevice` for your app's requirements. Use that to create a `VkDevice`
+with the appropriate queue families chosen. Oh, and after that, you need
+to struggle with managing and resizing a Vulkan swapchain.
+
+That's no fun — and this is where [erupt-bootstrap] comes in. It aims to
+abstract over all of this to get you up and running in no time. It's inspired by
+the excellent [vk-bootstrap] library for C++.
+
+[vk-bootstrap]: https://github.com/charles-lunarg/vk-bootstrap
+[erupt-bootstrap]: https://gitlab.com/Friz64/erupt-bootstrap
+[@Friz64]: https://blog.friz64.de/about
+
+### [Edict]
+
+[Edict] is a new archetype-based ECS implementation by [@zakarumych].
+
+The novel feature of [Edict] is entity ownership implemented via reference counting.
+This optional feature allows creating owned kind of `Entity` "reference",
+that ensures the entity is alive and despawns it on drop.
+Storing owning `Entity` in the component of another entity
+creates ownership relation between those entities.
+Even though `Entity` is an owning reference,
+components of the entity are can be queried from `World` as usual.
+Shared ownership is also available.
+
+Optimized for both high density `World`s with thousands of entities
+and also for `World`s with a lower number of entities spread among many archetypes.
+[Edict] is aimed at a wide range of game genres and use cases outside of games.
+
+Built-in change detection with epochs allows systems to query for components
+that were updated since the last run of that query,
+or since any other epoch as defined by `Tracks` argument.
+This opens the possibility to have multiple POV on changes even in a single system.
+For example, server-side netcode can track changes individually
+for each client and query for changes since the last ACK.
+[Edict] optimizes iteration significantly when entities
+with modified components are queried.
+
+Although ECS abbreviation implies, [Edict] does not come
+with predefined `System` trait and systems scheduler.
+We can call it ECQ (Entity-Component-Query) as an alternative to ECS.
+
+[Edict] is added to [ecs_bench_suite]
+so anyone can compare performance in some trivial examples with other ECS.
+
+Development focus for February is making more public API, including unsafe parts,
+to allow writing custom queries, implement schedulers with parallel execution, etc.
+
+[@zakarumych]: https://github.com/zakarumych
+[Edict]: https://github.com/zakarumych/edict
+[ecs_bench_suite]: https://github.com/rust-gamedev/ecs_bench_suite
+
+### [bevy_backroll v0.3][backroll-github]
+
+[Backroll][backroll-github] is a 100% type-safe native Rust implementation of the
+[GGPO][ggpo] rollback netcode library. The core library has gone through
+superficial updates, but the [Bevy plugin][bevy-backroll-crates-io] has been
+massively overhauled. This update significantly improves the ergonomics of setting
+up rollback netcode for your game (no more ugly turbofishes! No more generic type
+parameter config type!), provides an automatic way of saving and loading Bevy
+components and resources, and fully parallelizes the saving and loading of game
+state when a rollback occurs.
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/s6uch9/bevy_backroll_v030_is_now_available/),
+[Twitter](https://twitter.com/james7132/status/1483373600115621889)_
+
+[backroll-github]: https://github.com/HouraiTeahouse/backroll-rs
+[bevy-backroll-crates-io]: https://crates.io/bevy-backroll
+[ggpo]: https://www.ggpo.net/
+
+### [Bevy Smud][bevy-smud]
+
+{{ image_figure(
+    alt="Bevy Smud screenshot"
+    src="bevy-smud.png"
+    caption="A bevy drawn with Bevy Smud") }}
+
+[Bevy Smud][bevy-smud] is a new [Bevy][bevy-smud-bevy] plugin for drawing 2D
+shapes using signed distance fields.
+
+It contains ports of all of [Inigo Quilez' 2D SDF
+primitives](https://iquilezles.org/www/articles/distfunctions2d/distfunctions2d.htm),
+and allows easily composing said primitives together.
+
+Shapes that share the same SDF and fill are automatically instanced, as shown in
+the [demo video of 100k birds][bevy-smud-birds]
+
+[bevy-smud]: https://github.com/johanhelsing/bevy_smud
+[bevy-smud-bevy]: https://bevyengine.org
+[bevy-smud-birds]: https://twitter.com/jkhelsing/status/1486794339682508809
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Molecoole] has some new gameplay footage from #screenshotsaturday.
+  - [Wordlet] is a command-line clone of Wordle, written in Rust.
+  - [BITGUN] is looking for beta testers.
+  - [System Fault] is now in early access.
+  - [Lantern] is a cute adventure game about a cat taking a nap.
+  - [Fish Fight] has a new devlog about their past, present and future.
+  - [Starframe] has a new devlog about rope physics.
+  - [Cake Thieves] is a strategy game about protecting cake from ants...
+    with cannons!
+  - [Idu] has released a new demo.
+  - [Sugarcane] is a minigame-focused Minecraft server written in Rust.
+- Other learning material updates:
+  - '[How Bevy Uses Traits For Labelling]' explains a cool usage of traits
+    in the Bevy game engine.
+  - '[Writing a Tiny Rust Game Engine For Web]' shows how to write a game
+    engine with zero Rust dependencies.
+  - '[Extending States in Bevy]' shows how to make Bevy's `State` system more powerful.
+  - 'Mastering Plugin Loadings in Bevy' ([part 1][bevyplugin1] and
+    [part 2][bevyplugin2]) is an overview of how Bevy plugins work, and how
+    to write your own.
+  - '[Bevy Stages or The Frames Lifecycle]' is an overview of the Bevy
+    engine's game loop lifecycle.
+- Other engine updates:
+  - [Fyrox 0.24] (formerly known as rg3d) has been released.
+- Other tooling updates:
+  - [Fun Notation] is a Bevy-based guitar tab viewer.
+  - [gbrs] is a Rust Game Boy emulator.
+- Other library updates:
+  - [Dimforge] posted a retrospective on their 2021, and goals for 2022.
+  - [poll-promise] is a crate for polling asynchronous operations.
+  - [ezinput 0.2] was released, providing easier input handling for Bevy.
+  - [bevy_asset_loader] had several new releases.
+  - [bevy_game_template] was published.
+  - [big-brain 0.10] (a library for Utility AI in Bevy) was released.
+
+[Molecoole]: https://twitter.com/kiss_mrton/status/1477330931199496201
+[Wordlet]: https://www.reddit.com/r/rust/comments/s9kjoh/wordlet_a_commandline_clone_of_wordle_written_in/
+[BITGUN]: https://twitter.com/LogLogGames/status/1481358714170970115
+[System Fault]: https://www.lightsout.games/news/system-fault-early-access
+[Lantern]: https://qatoqat.itch.io/lantern
+[Fish Fight]: https://spicylobster.itch.io/fishfight/devlog/332434/fish-fights-past-present-and-future
+[Starframe]: https://molentum.me/blog/starframe-ropes/
+[Cake Thieves]: https://play.google.com/store/apps/details?id=com.GeTech.CakeThieves
+[Idu]: https://twitter.com/logicsoup/status/1487924659693703169
+[Sugarcane]: https://gitlab.com/macmv/sugarcane
+[How Bevy Uses Traits For Labelling]: https://deterministic.space/bevy-labels.html
+[Writing a Tiny Rust Game Engine For Web]: https://ianjk.com/game-engine-in-rust/
+[Extending States in Bevy]: https://vaporsoft.net/extending-states-in-bevy/
+[bevyplugin1]: https://maz.digital/mastering-plugin-loadings-bevy-part-12
+[bevyplugin2]: https://maz.digital/mastering-plugin-loadings-bevy-part-22
+[Bevy Stages or The Frames Lifecycle]: https://maz.digital/bevy-stages-or-the-frames-lifecycle
+[Fyrox 0.24]: https://rg3d.rs/general/2022/01/07/0.24-feature-highlights.html
+[Fun Notation]: https://www.reddit.com/r/rust_gamedev/comments/sfdl5s/fun_notation_guitar_tab_viewer
+[gbrs]: https://github.com/adamsoutar/gbrs
+[Dimforge]: https://dimforge.com/blog/2022/01/02/the-year-2021-in-dimforge/
+[poll-promise]: https://github.com/EmbarkStudios/poll-promise
+[ezinput 0.2]: https://twitter.com/eexsty/status/1485942270981464065
+[bevy_asset_loader]: https://crates.io/crates/bevy_asset_loader
+[bevy_game_template]: https://github.com/NiklasEi/bevy_game_template
+[big-brain 0.10]: https://github.com/zkat/big-brain/releases/tag/v0.10.0
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- [/r/rust](https://www.reddit.com/r/rust/):
+  - ["Rust alternative for PyGame?"](https://reddit.com/r/rust/comments/ru86vu/rust_alternative_for_pygame)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+<!-- An optional section for new jobs related to Rust gamedev -->
+
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote) - Various roles
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/spg3l1/this_month_in_rust_gamedev_30_january_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1491871330198818821),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/030/kataster.jpg b/content/news/030/kataster.jpg
new file mode 100644
index 000000000..235fc5a9e
Binary files /dev/null and b/content/news/030/kataster.jpg differ
diff --git a/content/news/030/notsnake.gif b/content/news/030/notsnake.gif
new file mode 100644
index 000000000..ef3971e3b
Binary files /dev/null and b/content/news/030/notsnake.gif differ
diff --git a/content/news/030/rafx-screenshot.jpg b/content/news/030/rafx-screenshot.jpg
new file mode 100644
index 000000000..de897a125
Binary files /dev/null and b/content/news/030/rafx-screenshot.jpg differ
diff --git a/content/news/030/rusty_engine4.png b/content/news/030/rusty_engine4.png
new file mode 100644
index 000000000..496bf4724
Binary files /dev/null and b/content/news/030/rusty_engine4.png differ
diff --git a/content/news/030/three-d.jpg b/content/news/030/three-d.jpg
new file mode 100644
index 000000000..53edc77e4
Binary files /dev/null and b/content/news/030/three-d.jpg differ
diff --git a/content/news/030/vangers-integrated.jpg b/content/news/030/vangers-integrated.jpg
new file mode 100644
index 000000000..1b6c2256c
Binary files /dev/null and b/content/news/030/vangers-integrated.jpg differ
diff --git a/content/news/030/veloren.jpg b/content/news/030/veloren.jpg
new file mode 100644
index 000000000..16aaebd9b
Binary files /dev/null and b/content/news/030/veloren.jpg differ
diff --git a/content/news/030/wor-capsule.jpg b/content/news/030/wor-capsule.jpg
new file mode 100644
index 000000000..16c7d49eb
Binary files /dev/null and b/content/news/030/wor-capsule.jpg differ
diff --git a/content/news/031/bevy-jam.png b/content/news/031/bevy-jam.png
new file mode 100644
index 000000000..ce606ff29
Binary files /dev/null and b/content/news/031/bevy-jam.png differ
diff --git a/content/news/031/bevy_minesweeper.png b/content/news/031/bevy_minesweeper.png
new file mode 100644
index 000000000..e1fa96c9b
Binary files /dev/null and b/content/news/031/bevy_minesweeper.png differ
diff --git a/content/news/031/blackjack.gif b/content/news/031/blackjack.gif
new file mode 100644
index 000000000..a9b2996ba
Binary files /dev/null and b/content/news/031/blackjack.gif differ
diff --git a/content/news/031/build-a-better-buddy.png b/content/news/031/build-a-better-buddy.png
new file mode 100644
index 000000000..34c986fa3
Binary files /dev/null and b/content/news/031/build-a-better-buddy.png differ
diff --git a/content/news/031/dims.jpg b/content/news/031/dims.jpg
new file mode 100644
index 000000000..b58102447
Binary files /dev/null and b/content/news/031/dims.jpg differ
diff --git a/content/news/031/dis-order.jpg b/content/news/031/dis-order.jpg
new file mode 100644
index 000000000..ab2bb1111
Binary files /dev/null and b/content/news/031/dis-order.jpg differ
diff --git a/content/news/031/dynamic-assets.png b/content/news/031/dynamic-assets.png
new file mode 100644
index 000000000..a26a8f02c
Binary files /dev/null and b/content/news/031/dynamic-assets.png differ
diff --git a/content/news/031/encase.svg b/content/news/031/encase.svg
new file mode 100644
index 000000000..eeec63198
--- /dev/null
+++ b/content/news/031/encase.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 320 90"><path fill="none" d="M0 0h320v90H0z"/><path fill="#e96a53" d="M10 10h149.955v70H10z"/><path fill="#6e588b" d="M162.233 10h44.532v70h-44.532z"/><path fill="#e96a53" d="M209.031 10H310v70H209.031z"/><path fill="#fff" fill-rule="nonzero" d="M46.885 68.349c-4.193 0-7.861-.952-11.006-2.855-3.144-1.903-5.585-4.482-7.323-7.737-1.737-3.255-2.606-6.84-2.606-10.757 0-3.972.827-7.571 2.482-10.798 1.655-3.228 4.027-5.793 7.116-7.696 3.09-1.903 6.73-2.855 10.923-2.855 4.248 0 7.902.952 10.964 2.855 3.062 1.903 5.42 4.468 7.075 7.696 1.655 3.227 2.482 6.826 2.482 10.798v2.482H32.321c.331 2.428 1.117 4.648 2.359 6.662 1.241 2.013 2.909 3.613 5.006 4.799 2.096 1.186 4.523 1.779 7.281 1.779 2.924 0 5.379-.648 7.365-1.945 1.986-1.296 3.531-2.965 4.634-5.006h6.785c-1.434 3.696-3.71 6.716-6.827 9.061-3.116 2.344-7.13 3.517-12.039 3.517ZM32.404 43.69h28.134c-.552-3.53-2.041-6.482-4.468-8.854-2.428-2.372-5.627-3.558-9.599-3.558-3.972 0-7.158 1.186-9.557 3.558-2.4 2.372-3.903 5.324-4.51 8.854Zm42.201 23.997V26.313h6.206v6.455c1.489-1.986 3.31-3.669 5.461-5.048 2.152-1.379 4.91-2.069 8.275-2.069 2.869 0 5.558.676 8.068 2.028 2.51 1.351 4.551 3.365 6.123 6.04 1.572 2.676 2.358 5.972 2.358 9.888v24.08h-6.206V43.773c0-3.751-1.075-6.772-3.227-9.061-2.151-2.289-4.937-3.434-8.357-3.434-2.317 0-4.413.524-6.289 1.572-1.876 1.048-3.379 2.524-4.51 4.427-1.131 1.903-1.696 4.096-1.696 6.579v23.831h-6.206Zm64.625.662c-4.137 0-7.723-.952-10.757-2.855s-5.392-4.482-7.075-7.737c-1.682-3.255-2.523-6.84-2.523-10.757 0-3.972.841-7.571 2.523-10.798 1.683-3.228 4.041-5.793 7.075-7.696 3.034-1.903 6.62-2.855 10.757-2.855 4.91 0 9.089 1.269 12.537 3.807 3.447 2.537 5.778 5.819 6.992 9.847h-6.703c-.938-2.373-2.441-4.303-4.509-5.793-2.069-1.489-4.565-2.234-7.489-2.234-3.034 0-5.682.717-7.944 2.151-2.262 1.435-3.999 3.338-5.213 5.71-1.213 2.372-1.82 4.992-1.82 7.861 0 2.813.607 5.42 1.82 7.82 1.214 2.399 2.951 4.316 5.213 5.751 2.262 1.434 4.91 2.151 7.944 2.151 2.924 0 5.42-.745 7.489-2.234 2.068-1.49 3.571-3.42 4.509-5.793h6.703c-1.214 4.028-3.545 7.31-6.992 9.847-3.448 2.538-7.627 3.807-12.537 3.807Zm44.684 0c-4.027 0-7.544-.952-10.55-2.855-3.007-1.903-5.338-4.482-6.992-7.737-1.655-3.255-2.483-6.84-2.483-10.757 0-3.972.828-7.571 2.483-10.798 1.654-3.228 3.985-5.793 6.992-7.696 3.006-1.903 6.523-2.855 10.55-2.855 3.42 0 6.358.662 8.812 1.986 2.455 1.324 4.455 3.117 6 5.379v-6.703h6.206v41.374h-6.206v-6.62c-1.545 2.207-3.545 3.972-6 5.296-2.454 1.324-5.392 1.986-8.812 1.986Zm.827-5.627c3.09 0 5.696-.717 7.82-2.151 2.124-1.435 3.737-3.352 4.841-5.751 1.103-2.4 1.655-5.007 1.655-7.82 0-2.869-.552-5.489-1.655-7.861-1.104-2.372-2.717-4.275-4.841-5.71-2.124-1.434-4.73-2.151-7.82-2.151-3.034 0-5.654.717-7.861 2.151-2.206 1.435-3.889 3.338-5.047 5.71-1.159 2.372-1.738 4.992-1.738 7.861 0 2.813.579 5.42 1.738 7.82 1.158 2.399 2.841 4.316 5.047 5.751 2.207 1.434 4.827 2.151 7.861 2.151Zm46.008 5.627c-3.807 0-7.02-.635-9.64-1.903-2.621-1.269-4.62-2.938-5.999-5.007-1.38-2.068-2.152-4.316-2.317-6.744h6.454c.165 1.38.648 2.717 1.448 4.014.8 1.296 2.027 2.344 3.682 3.144 1.655.8 3.807 1.2 6.455 1.2.827 0 1.848-.083 3.061-.248 1.214-.166 2.386-.469 3.517-.911 1.131-.441 2.082-1.103 2.855-1.985.772-.883 1.158-2.014 1.158-3.393 0-1.71-.662-3.034-1.986-3.972-1.324-.938-3.034-1.669-5.13-2.193s-4.317-1.034-6.661-1.531c-2.345-.496-4.565-1.144-6.661-1.944-2.097-.8-3.807-1.931-5.131-3.393-1.324-1.462-1.986-3.461-1.986-5.999 0-3.751 1.366-6.661 4.096-8.73 2.731-2.068 6.772-3.103 12.123-3.103 3.641 0 6.606.566 8.895 1.697 2.289 1.13 4.027 2.579 5.213 4.344 1.186 1.765 1.89 3.668 2.11 5.709h-6.289c-.22-1.765-1.089-3.282-2.606-4.551-1.517-1.269-4.013-1.903-7.489-1.903-6.564 0-9.847 1.986-9.847 5.958 0 1.655.662 2.924 1.986 3.806 1.324.883 3.034 1.586 5.131 2.11 2.096.524 4.316 1.021 6.661 1.49 2.344.469 4.565 1.117 6.661 1.944 2.096.828 3.806 2 5.13 3.517 1.324 1.517 1.986 3.572 1.986 6.165 0 4.027-1.531 7.102-4.592 9.226-3.062 2.124-7.158 3.186-12.288 3.186Zm43.194 0c-4.193 0-7.861-.952-11.006-2.855-3.144-1.903-5.585-4.482-7.323-7.737-1.737-3.255-2.606-6.84-2.606-10.757 0-3.972.827-7.571 2.482-10.798 1.655-3.228 4.027-5.793 7.116-7.696 3.09-1.903 6.73-2.855 10.923-2.855 4.248 0 7.902.952 10.964 2.855 3.062 1.903 5.42 4.468 7.075 7.696 1.655 3.227 2.482 6.826 2.482 10.798v2.482h-34.671c.331 2.428 1.117 4.648 2.359 6.662 1.241 2.013 2.909 3.613 5.006 4.799 2.096 1.186 4.523 1.779 7.281 1.779 2.924 0 5.379-.648 7.365-1.945 1.986-1.296 3.531-2.965 4.634-5.006h6.785c-1.434 3.696-3.71 6.716-6.827 9.061-3.116 2.344-7.13 3.517-12.039 3.517ZM259.462 43.69h28.134c-.552-3.53-2.041-6.482-4.468-8.854-2.428-2.372-5.627-3.558-9.599-3.558-3.972 0-7.158 1.186-9.557 3.558-2.4 2.372-3.903 5.324-4.51 8.854Z"/></svg>
\ No newline at end of file
diff --git a/content/news/031/gamedev-meetup.png b/content/news/031/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/031/gamedev-meetup.png differ
diff --git a/content/news/031/godot-rust-android-via-windows.jpg b/content/news/031/godot-rust-android-via-windows.jpg
new file mode 100644
index 000000000..ca161fd9f
Binary files /dev/null and b/content/news/031/godot-rust-android-via-windows.jpg differ
diff --git a/content/news/031/graphite.png b/content/news/031/graphite.png
new file mode 100644
index 000000000..4cbb61c39
Binary files /dev/null and b/content/news/031/graphite.png differ
diff --git a/content/news/031/index.md b/content/news/031/index.md
new file mode 100644
index 000000000..02eb8744d
--- /dev/null
+++ b/content/news/031/index.md
@@ -0,0 +1,750 @@
++++
+title = "This Month in Rust GameDev #31 - February 2022"
+transparent = true
+date = 2022-03-10
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 31st issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Bevy Jam](#bevy-jam-1)
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Rust GameDev Showcase](#rust-gamedev-showcase)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## [Bevy Jam #1][bevy-jam]
+
+![Bevy Jam](bevy-jam.png)
+
+The first-ever [Bevy Jam][bevy-jam] just finished! Bevy Jam is a week-long event,
+where the goal is to make a game in [Bevy Engine][bevy-engine], the free and open-source
+game engine built in Rust.
+
+The theme was Unfair Advantage. 431 people joined the jam and 75 teams submitted
+entries. A ten-day "voting period" has started, which will end on March 14th.
+[Anyone can play and vote on the submissions][bevy-jam-submissions].
+
+The winning team will receive any two items from the [Bevy Merch][bevy-merch] store.
+
+[bevy-jam]: https://itch.io/jam/bevy-jam-1/
+[bevy-jam-submissions]: https://itch.io/jam/bevy-jam-1/entries
+[bevy-engine]: https://bevyengine.org/
+[bevy-merch]: https://merch.bevyengine.org/
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 13th Rust Gamedev Meetup took place in February. You can watch the
+recording of the meetup [here on Youtube][gamedev-meetup-video]. The meetups
+take place on the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/adt63Gqt6yA
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[rust-meetup-feb-time]: https://everytimezone.com/s/c1b2eb7b
+
+## Rust GameDev Showcase
+
+The Rust Gamedev Working Group is working on a showcase of games made in Rust!
+If you're interested in submitting your own footage, fill out [this
+form][showcase-form]. You can also read more about the process of creating the
+showcase in the [showcase discussion on GitHub][showcase-discussion]. The
+deadline for submissions has been extended until the 19th of March 2022. Hope to
+see your game in there!
+
+[showcase-form]: https://docs.google.com/forms/d/1MpA7J9BFXAgoCJZJrxi8r4sqzhhYCzCtFo5kXGVOZj4/edit
+[showcase-discussion]: https://github.com/rust-gamedev/wg/discussions/121
+
+## Game Updates
+
+### [Name Needed][name-needed]
+
+{{ image_figure(
+    alt="The player orders a selection of blocks to be broken, and a brick wall to be built."
+    src="name-needed.gif"
+    caption="The player orders a selection of blocks to be broken, and a brick wall to be built.") }}
+
+
+[Name Needed][name-needed] by [@DomWilliams0][domwilliams-github] is a one-man
+effort to produce an open source, intuitive, and high-performance Dwarf
+Fortress-esque game with a custom engine.
+
+Recent progress has been on procedural terrain generation, the player UI, item
+stacks, and build jobs. A major refactor of the AI system integrated Rust's
+superb `async`/`await` support, which is documented in the most recent devlog.
+
+- [Devlog #5: voxel world goals][name-needed-devlog5]
+- [Devlog #6: async activities][name-needed-devlog6]
+- [Devlog #7: custom async runtime][name-needed-devlog7]
+
+[name-needed]: https://github.com/DomWilliams0/name-needed
+[domwilliams-github]: https://github.com/DomWilliams0
+[name-needed-devlog5]: https://domwillia.ms/devlog5/
+[name-needed-devlog6]: https://domwillia.ms/devlog6/
+[name-needed-devlog7]: https://domwillia.ms/devlog7/
+
+### [This is Fine Sokoban][sokoban-github]
+
+{{ image_figure(
+    alt="This is Fine Sokoban screenshot"
+    src="sokoban_screenshot.gif"
+    caption="Screenshot of This is Fine Sokoban") }}
+
+This is Fine Sokoban ([GitHub][sokoban-github]) by
+[@Syn-Nine][synnine-twitter] is a Sokoban game inspired by the This is Fine
+meme created for the [Game Developers Refuge 4x4x4 Challenge] in February
+2022. Use the arrow keys to push the TPS reports into the file folders while
+the room is burning down and you're surrounded by clocks - a metaphor for
+the developer's work life.
+
+The 4x4x4 Challenge was to create a game based on four emojis. In
+this case the chosen emoji combination was: :nerd_face: :open_file_folder:
+:clock830: :fire:
+
+The game is part of an open source repository of several mini-games that use
+Syn9's [Rust Mini Game Framework][mgfw].
+
+[sokoban-github]: https://github.com/Syn-Nine/rust-mini-games/tree/main/2d-games/sokoban
+[synnine-twitter]: https://twitter.com/Syn9Dev
+[Game Developers Refuge 4x4x4 Challenge]: https://noop.rocks/gdr/viewtopic.php?f=2&t=84
+[mgfw]: https://github.com/Syn-Nine/mgfw
+
+### [Build A Better Buddy][build-a-better-buddy]
+
+[![Build A Better Buddy Screenshot](build-a-better-buddy.png)][build-a-better-buddy]
+
+Build A Better Buddy is a cute auto-battler built by [@cart_cart][cart-cart] using
+[Bevy Engine][buddy-bevy-engine] for [Bevy Jam #1][buddy-bevy-jam-1]. The source
+code is [available here][buddy-source]. It runs on Windows, Mac, Linux, and
+the Web.
+
+[build-a-better-buddy]: https://cart.itch.io/build-a-better-buddy
+[cart-cart]: https://twitter.com/cart_cart
+[buddy-bevy-jam-1]: https://itch.io/jam/bevy-jam-1/
+[buddy-bevy-engine]: https://bevyengine.org/
+[buddy-source]: https://github.com/cart/build_a_better_buddy
+
+### [Weegames]
+
+![Grid of Weegames minigames](weegames.jpg)
+
+[Weegames] is a fast-paced minigame collection available on web and Windows.
+The latest release:
+
+- Uses [quad-storage] on WASM to save high scores
+  and a record of how games the player has played
+- Fixes bug where the game was being played at an incorrect speed
+  when the player's monitor was not 60hz
+- Adds 8 more minigames
+
+[Weegames]: https://yeahross.itch.io/weegames
+[quad-storage]: https://crates.io/crates/quad-storage
+
+### [Dis-order]
+
+![Screenshot of Dis-order](dis-order.jpg)
+
+Dis-order by [@jkhelsing] is a short sokoban-esque puzzle game made in 72 hours
+for MiniJam 100. In Dis-order you're making chaos instead of order, you win when
+there are no patterns or order in the level.
+
+It's made using [Bevy][dis-order-bevy] and uses [bevy_smud][bevy_smud] for shape
+rendering, and a compute pass for the [particle
+effects][dis-order-particle-effects]. The levels are made with ldtk and loaded
+using [bevy_ecs_ldtk][bevy_ecs_ldtk]. Read more about this in the
+[post-mortem][dis-order-post-mortem].
+
+[Download the game on itch.io][Dis-order].
+
+[Dis-order]: https://jhelsing.itch.io/dis-order
+[bevy_smud]: https://github.com/johanhelsing/bevy_smud
+[dis-order-bevy]: https://bevyengine.org
+[bevy_ecs_ldtk]: https://github.com/Trouv/bevy_ecs_ldtk
+[dis-order-post-mortem]: https://johanhelsing.studio/posts/dis-order
+[dis-order-particle-effects]: https://twitter.com/jkhelsing/status/1495604656164282374
+[@jkhelsing]: https://twitter.com/jkhelsing
+
+### [Molecoole][molecoole-steam]
+
+[![A molecoole and some enemies](molecoole.png)][molecoole-steam]
+
+Molecoole is a top-down shooter roguelike where you build your character from
+different atoms. Each atom has a unique ability to provide tons of variety
+between playthroughs. It's made using the [Bevy Engine][bevy-engine].
+
+This month Molecoole launched on [Steam][molecoole-steam], making it the first
+game made with Bevy Engine there! It's available on Windows and Linux. You can
+check out its gameplay on [youtube][youtube-molecoole], or on the Steam page.
+
+[molecoole-steam]: https://store.steampowered.com/app/1792170/Molecoole/
+[youtube-molecoole]: https://www.youtube.com/watch?v=bwbVplq03ew
+[bevy-engine]: https://github.com/bevyengine/bevy
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Gnarling looking out over a fort"
+    src="veloren.jpg"
+    caption="Looking out over the Gnarling fort") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In February, [Veloren 0.12 was released][veloren-012-release-blog]. For the
+release, a [trailer with some of the changes][veloren-012-release-trailer] was
+posted. This release was 5 months in the making, so the changelog is quite
+large. During the release party, the official server reached a cap of 195
+players online at once, which is another record for Veloren. Changes were made
+to allow server owners to handle IPv4 and IPv6 connections.
+Improvements were also made to trading price calculations to properly normalize
+loot tables.
+
+Two Veloren Reading Clubs were held in February. [The first
+one][veloren-reading-club-5] explored using Git to contribute, and how to add
+some new NPC characters. [The second one][veloren-reading-club-6] explored how
+some of Git's more intricate features worked, as well as how economy simulations
+are done. Work was done to allow species to defend others of the same species,
+to allow for more realistic combat in the wild. A [Mastodon
+page][veloren-mastodon] was also created for Veloren. Gnarlings forts were also
+added, which adds a whole new area for players to fight in.
+
+February's full weekly devlogs: "This Week In Veloren...":
+[#158][veloren-158],
+[#159][veloren-159],
+[#160][veloren-160],
+[#161][veloren-161].
+
+[veloren]: https://veloren.net
+[veloren-mastodon]: https://mastodon.technology/@veloren
+[veloren-012-release-blog]: https://veloren.net/release-0-12/
+[veloren-012-release-trailer]: https://www.youtube.com/watch?v=604JC5QdYQE
+[veloren-reading-club-5]: https://www.youtube.com/watch?v=f9PXtKEwedQ
+[veloren-reading-club-6]: https://www.youtube.com/watch?v=MbiLZvuBLzc
+
+[veloren-158]: https://veloren.net/devblog-158
+[veloren-159]: https://veloren.net/devblog-159
+[veloren-160]: https://veloren.net/devblog-160
+[veloren-161]: https://veloren.net/devblog-161
+
+## Engine Updates
+
+### [DIMS]
+
+[![dims screenshot](dims.jpg)][DIMS-first-look]
+
+@jfnoren ([Twitter][@jfnoren-twitter], [GitHub][@jfnoren-github]) posted a
+[video][DIMS-first-look] about a first look into their engine, DIMS. DIMS allows
+you to create open worlds, script gameplay, and mess around with physics. DIMS
+has been in the works for several months, but you can now sign up for early
+access on [their website][DIMS].
+
+_Discussions: [Reddit][DIMS-reddit-discussion], [Twitter][DIMS-twitter-discussion]_
+
+[@jfnoren-twitter]: https://twitter.com/jfnoren
+[@jfnoren-github]: https://github.com/FredrikNoren
+[DIMS]: https://www.dims.co/
+[DIMS-first-look]: https://www.youtube.com/watch?v=58HS-PN71Mw
+[DIMS-reddit-discussion]: https://www.reddit.com/r/rust_gamedev/comments/snhi5u/some_months_into_building_and_wed_never_have/
+[DIMS-twitter-discussion]: https://twitter.com/jfnoren/status/1491077331850776576
+
+## Learning Material Updates
+
+### [Bevy Minesweeper]
+
+{{ image_figure(
+    alt="screenshot"
+    src="bevy_minesweeper.png"
+    caption="Demo Screenshot") }}
+
+[@ManevilleF] published a 12 step [course][Bevy Minesweeper] on how to make a
+simple 2D Minesweeper using [bevy][bevy] 0.6.
+A [public repository][bevy_minesweeper_repo] is
+available, as well as a live [demo][bevy_minesweeper_demo].
+
+The tutorial showcases:
+
+- essential features of the [bevy][bevy] engine
+- important ECS notions for beginners
+- WASM build
+- and soon, android native APK build
+
+_Discussions: [Twitter][bevy_minesweeper_twitter], [dev.to][Bevy Minesweeper]_
+
+[Bevy Minesweeper]: https://dev.to/qongzi/bevy-minesweeper-introduction-4l7f
+[bevy_minesweeper_repo]: https://gitlab.com/qonfucius/minesweeper-tutorial
+[bevy_minesweeper_demo]: https://qonfucius.gitlab.io/minesweeper-tutorial/
+[bevy]: https://bevyengine.org
+[@ManevilleF]: https://github.com/ManevilleF
+[bevy_minesweeper_twitter]: https://twitter.com/ManevilleF/status/1495787155280510977?s=20&t=omNFCI2cWgDFNC0MC7NWTg
+
+### [Computing image filters with wgpu-rs]
+
+[@Redwarp] posted a [blog post][Computing image filters with wgpu-rs] that goes
+through the process of creating a simple image processing pipeline with compute
+shaders, using wgpu-rs. The post takes you through several steps in this
+process:
+
+- Wgpu basics
+- Loading a texture
+- A simple shader
+- Bind group
+- Workgroup and dispatch
+
+[Computing image filters with wgpu-rs]: https://blog.redwarp.app/image-filters/
+[@Redwarp]: https://twitter.com/redwarp
+
+### [Actor Pattern with Async Rust]
+
+@Sorokya ([Twitter][sorokya-twitter], [GitHub][sorokya-github]) [published a blog
+post][Actor Pattern with Async Rust] about how they improved their game server
+by switching over to an actor pattern approach. This method allowed the server
+to be refactored to be more modular and cleaner.
+
+[Actor Pattern with Async Rust]: https://eo-rs.dev/blog/the-actor-pattern-with-async-rust/
+[sorokya-twitter]: https://twitter.com/sorokya
+[sorokya-github]: https://github.com/sorokya
+
+### [Godot-Rust to Android without Android Studio][godot-rust-to-android]
+
+{{ image_figure(
+    alt="working godot-rust on an android phone"
+    src="godot-rust-android-via-windows.jpg"
+    caption="Proof of concept Godot app running on Android") }}
+
+[@coffeecodechem] published a [blog post][godot-rust-to-android] on how to
+export godot-rust as an Android APK on Windows without using Android Studio. It
+goes beyond the godot-rust book that specifies "steps are tested and confirmed
+to work on Linux only", and details what is needed to make it work on Windows.
+
+The post shows how to set up the JDK and Rust, set up the keystore, and how to
+build the required GDNative libraries.
+
+[@coffeecodechem]: https://twitter.com/coffeecodechem
+[godot-rust-to-android]: https://coffeecodechem.com/2022/02/exporting-godot-rust-android-apk-windows/
+
+### [Supercharging your Web with Rust and Bevy]
+
+Bruno Lipovac [released a blog post][Supercharging your Web with Rust and Bevy]
+that detailed building 3D applications for use on the web with Bevy. It walks
+through setting up a Bevy project and importing some models. It also details
+some more fine-detail items, such as lighting and sky. It then shows how to
+compile the project and serve it.
+
+[Supercharging your Web with Rust and Bevy]: https://www.barrage.net/blog/technology/how-to-supercharge-your-web-with-3d-capabilities-by
+
+## Tooling Updates
+
+### [Vismut]
+
+![Vismut](vismut.png)
+
+[Vismut] ([GitLab][Vismut GitLab], [Zulip][Vismut Zulip]) by
+[@lukors][Vismut @lukors]
+will be a procedural texturing tool.
+
+This application saw its first public release a month ago, where it added
+support for its first use case: manual channel shuffling.
+
+The latest version, [v0.4.0][Vismut v0.4.0], brings an all-new interface that's
+not only prettier but also much easier to use thanks to `bevy_egui`!
+
+Upcoming versions will turn it into a fully-featured node-based procedural
+texturing tool. [Read the introduction][Vismut Introduction]
+on the author's blog for more information.
+
+[Vismut]: http://vismut.org
+[Vismut GitLab]: https://gitlab.com/vismut-org/vismut
+[Vismut Zulip]: https://vismut.zulipchat.com
+[Vismut @lukors]: https://gitlab.com/lukors
+[Vismut v0.4.0]: https://gitlab.com/vismut-org/vismut/-/releases/v0.4.0
+[Vismut Introduction]: https://orsvarn.com/introducing-vismut/
+
+### [Blackjack]
+
+![Blackjack: Showcase of the new catmull-clark subdivision](blackjack.gif)
+
+[Blackjack] by @setzer22 is a new procedural modeling application made in Rust,
+using rend3, wgpu, and egui. It follows the steps of applications like
+Houdini, or Blender's geometry nodes project and provides a node-based
+environment to compose procedural recipes to create 3d models.
+
+The last two months have been quite busy for Blackjack. After an initial open
+source release, several new features have been added:
+
+- Added a resizeable viewport system, with node graph pan and zoom.
+- Built an initial implementation for a properties inspector and geometry
+  spreadsheet panels.
+- Added a subdivision node, with a fast catmull-clark subdivision technique
+ based on
+ [this recent paper][blackjack-paper]
+- Separated the node graph functionality into
+ [its own crate][blackjack-node-graph-crate]
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/srgd41/your_rusty_procedural_3d_modeler_blackjack_just/),
+[/r/rust](https://www.reddit.com/r/rust/comments/sfqung/media_blackjacks_eguibased_node_graph_now/)_
+
+[Blackjack]: https://github.com/setzer22/blackjack
+[blackjack-paper]: https://onrendering.com/data/papers/catmark/HalfedgeCatmullClark.pdf
+[blackjack-node-graph-crate]: https://github.com/setzer22/egui_node_graph
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite.png)
+
+Graphite is an in-development raster and vector 2D graphics editor that is free
+and open source. It will be powered by a node graph compositing engine that
+supercharges your layer stack, providing a completely non-destructive editing
+experience.
+
+After officially launching the alpha version last month, work has progressed
+in designing the node graph system. Also, the team has spent this month adding
+polish to the application and continuing work on more website content.
+
+A new editor feature is the Gradient tool which makes it possible to add some
+colorful pizzazz. This means that finally all vector editing tools are
+implemented, but some can still use improvement. (Ask how you can help with
+that!) Additional work has gone into visual changes to help aid in clarity and
+discoverability for new users.
+
+Check out the [new website][graphite-website], try the
+[Graphite editor][graphite-live-demo] right now in your browser, star on
+[GitHub][graphite-repo], follow on [Twitter][graphite-twitter], and join the
+[Discord][graphite-discord] to chat or get involved!
+
+[graphite-website]: https://graphite.rs
+[graphite-live-demo]: https://editor.graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-discord]: https://discord.graphite.rs
+
+## Library Updates
+
+### [vach]
+
+[vach] is an archiving file format developed from the ground up for games and
+other real-time applications by [@zeskeertwee] and [@sokorototo]. It is
+written in pure Rust.
+
+Its primary objectives (in no particular order) are:
+
+- Have a simple, yet complete API.
+- Fine control over each individual entry in an archive, i.e. neighbouring
+  entries can have vastly different compression schemes.
+- Support compression (with multiple compression schemes), encryption,
+  and signatures for data authentication
+- Efficient fetching of data by avoiding unnecessary traversal of the file.
+  Once a file is parsed, locations of every entry are known to the loader.
+- Be as compact as possible - the smallest valid archive is only 13 bytes.
+- Each entry has some metadata attached to it - this is implemented using
+  bitflags and up to 8 bits are free to the user.
+- Has multithreaded implementations of both the loader and the writer.
+
+A [CLI][vach-cli] is allowing one to use vach as a general-purpose archive
+format. The CLI is fully multithreaded, allowing for insane un/packing speeds.
+
+Feel free to drop into the [repo][vach] and open an issue, pull request, or
+drop a star 🌟. It helps maintain momentum in the project.
+
+[vach]: https://github.com/zeskeertwee/vach
+[vach-cli]: https://crates.io/crates/vach-cli
+[@zeskeertwee]: https://github.com/zeskeertwee
+[@sokorototo]: https://github.com/sokorototo
+
+### Sparsey 0.7
+
+![Sparsey](sparsey.png)
+
+[Sparsey] by [@LechintanTudor] is a sparse set-based Entity Component System
+with a beautiful and concise syntax.
+
+The biggest change in this release was the removal of component change detection
+which had a significant impact on performance and memory usage. As a result,
+Sparsey performs much better in all benchmarks and the codebase is easier to
+maintain.
+
+The systems module received a major overhaul with an improved scheduling
+algorithm, allowing more systems to run in parallel, and an important usability
+improvement allowing systems to be added to schedules without having to call
+`.system()` on the system functions.
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+
+### [Encase]
+
+![Encase Logo](./encase.svg)
+
+[Encase] ([docs.rs], [crates.io]) by [@teoxoy] is a new library
+that provides a mechanism to layout data into GPU buffers
+according to [WGSL's memory layout] rules.
+
+Features
+
+- supports all WGSL [host-shareable types] + wrapper types
+  (`&T`, `&mut T`, `Box<T>`, ...)
+- extensible by design; most traits can be easily implemented
+  for user-defined types via macros (see [design])
+- built-in support for data types from a multitude of crates
+  (enabled via [features])
+- covers a wide area of use cases (see [examples])
+
+Example
+
+```rust
+use encase::{WgslType, UniformBuffer};
+
+#[derive(WgslType)]
+struct AffineTransform2D {
+    matrix: glam::Mat2,
+    translate: glam::Vec2
+}
+
+let transform = AffineTransform2D {
+    matrix: glam::Mat2::IDENTITY,
+    translate: glam::Vec2::ZERO,
+};
+
+let mut buffer = UniformBuffer::new(Vec::new());
+buffer.write(&transform).unwrap();
+let byte_buffer = buffer.into_inner();
+
+// write byte_buffer to GPU
+```
+
+[Encase]: https://github.com/teoxoy/encase
+[docs.rs]: https://docs.rs/encase/latest/encase
+[crates.io]: https://crates.io/crates/encase
+[@teoxoy]: https://github.com/teoxoy
+[WGSL's memory layout]: https://gpuweb.github.io/gpuweb/wgsl/#memory-layouts
+[host-shareable types]: https://gpuweb.github.io/gpuweb/wgsl/#host-shareable-types
+[design]: https://docs.rs/encase/latest/encase/#design
+[features]: https://docs.rs/crate/encase/latest/features
+[examples]: https://docs.rs/encase/latest/encase/#examples
+
+### [Notan]
+
+![Notan](notan.png)
+
+The first version of [Notan] was released.
+[Notan] aims to be a simple and portable multimedia layer, designed to make
+your own multimedia app on top of it without worrying too much about
+platform-specific code.
+
+The main goal is to provide a set of APIs and tools that can be used to create
+your project ergonomically without enforcing any structure or pattern,
+always trying to stay out of your way. The idea is that you can use it as a
+foundation layer or backend for your next app, game engine, or game.
+
+This first version comes with windowing, input, and rendering support on MacOS,
+Linux, Windows, and Web. Behind feature flags, you can use a fast 2D renderer,
+text rendering, and [egui] integration.  
+
+You can try [Notan] by adding it to your `Cargo.toml` -> `notan = "0.1.0"` or
+checking the [online demos].
+
+[Notan]: https://github.com/Nazariglez/notan
+[online demos]: https://nazariglez.github.io/notan-web/
+[egui]: https://github.com/emilk/egui
+
+### [bevy_asset_loader]
+
+![Dynamic assets](dynamic-assets.png)
+
+[bevy_asset_loader] by [@nikl_me] is a [Bevy] plugin that aims to reduce
+boilerplate for asset handling in Bevy apps.
+
+Last month saw the release of version `0.9` which added support for loading
+asset configurations from `.ron` files like the one shown above. This allows for
+resolving asset configurations like their file path or sprite sheet dimensions
+at run time. The feature is called "dynamic assets" and enables use cases like
+internationalised assets.
+
+[@nikl_me] wrote a [blog post][dynamic_assets_post] about dynamic assets in
+[bevy_asset_loader]. The post outlines the idea of the feature and describes
+current and planned functionality.
+
+[dynamic_assets_post]: https://www.nikl.me/blog/2022/dynamic-assets-in-bevy_asset_loader/
+[bevy_asset_loader]: https://github.com/NiklasEi/bevy_asset_loader
+[Bevy]: https://github.com/bevyengine/bevy
+[@nikl_me]: https://twitter.com/nikl_me
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- [/r/bevy](https://www.reddit.com/r/bevy/):
+  - ["Recommended Bevy/ECS Project Structure/Conventions"]
+- [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/):
+  - ["Which is a better game engine to start with as a beginner"]
+- [gamedev wg](https://github.com/rust-gamedev/wg)
+  - [#121 Rust Gamedev Showcase]
+  - [#122 Length of meetups]
+  - [#119 Engine benchmark repo]
+
+["Recommended Bevy/ECS Project Structure/Conventions"]: https://reddit.com/r/bevy/comments/sikrv1/recommended_bevyecs_project_structureconventions
+["Which is a better game engine to start with as a beginner"]: https://reddit.com/r/rust_gamedev/comments/stcnx0/which_is_a_better_game_engine_to_start_with
+[#121 Rust Gamedev Showcase]: https://github.com/rust-gamedev/wg/discussions/121
+[#122 Length of meetups]: https://github.com/rust-gamedev/wg/discussions/122
+[#119 Engine benchmark repo]: https://github.com/rust-gamedev/wg/discussions/119
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Fish Fight] introduced mod loading.
+  - [vange-rs] published a blog post about using Emscripten with Rust.
+  - [makiomino.fun] introduced a new level-up animation.
+  - [country-slice] added shadows and the ability to adjust wall height.
+  - [flesh] has a new animation for the mid-boss.
+  - [Rustenstein 3D: Game programming like it's 1992] is an article walking
+    through creating a Wolfenstein-like game in Rust.
+  - [Making a 3D Super Munchers Clone with Bevy] is a video walkthrough of
+    creating a 3D game in Bevy.
+  - [Vulkan with Rust by example] is the latest post in a series about using Vulkan
+    with Rust.
+  - [Fyrox] got assets to hot-reload.
+  - [Hotham] released a video demo of the engine.
+  - [godot-rust] introduced C#-style properties.
+  - [cosync] is a single-threaded executor for deferred async code for games.
+  - [SPIR-Q v0.5] was released after two years of v0.4 maintenance.
+  - [egui 0.17.0] was released, with custom text styles, any-sized fonts, and
+    much more.
+  - [sparticles-rs] is a particle system generator.
+  - [blender_bevy_toolkit] is making process in opening Blender files in Bevy.
+
+[Fish Fight]: https://reddit.com/r/rust_gamedev/comments/sokjon/fish_fight_v041_mod_loading
+[vange-rs]: https://caiiiycuk.medium.com/vangers-3d-example-of-using-emscripten-in-rust-720ee8099d72
+[makiomino.fun]: https://twitter.com/makiomino/status/1496252771909218308
+[country-slice]: https://twitter.com/anastasiaopara/status/1492429686294683653
+[flesh]: https://twitter.com/Im_Oab/status/1490576387589427200
+[Rustenstein 3D: Game programming like it's 1992]: https://tech.nextroll.com/blog/dev/2022/02/02/rustenstein.html
+[Making a 3D Super Munchers Clone with Bevy]: https://youtube.com/watch?v=oee3Z69sE-8
+[Vulkan with Rust by example]: https://nikitablack.github.io/post/vulkan_with_rust_by_example_6_fixing_depth/
+[Fyrox]: https://reddit.com/r/rust_gamedev/comments/sm34s6/media_finally_got_assets_hot_reloading_working_in
+[Hotham]: https://reddit.com/r/rust_gamedev/comments/st4vp1/media_hotham_vr_engine_demo
+[godot-rust]: https://twitter.com/GodotRust/status/1490282777039753218
+[cosync]: https://github.com/sanbox-irl/cosync
+[SPIR-Q v0.5]: https://reddit.com/r/rust_gamedev/comments/sr7nnr/spirq_v05_cleaner_api
+[egui 0.17.0]: https://twitter.com/ernerfeldt/status/1496200805212475396
+[sparticles-rs]: https://youtube.com/watch?v=dyxlfOyW90Q
+[blender_bevy_toolkit]: https://reddit.com/r/rust_gamedev/comments/sredt1/blender_bevy_pipeline_progress
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+<!-- An optional section for new jobs related to Rust gamedev -->
+
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote) - Various roles
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/Veloren/comments/tbcs3d/this_month_in_rust_gamedev_31_february_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1503474733572100096),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/031/molecoole.png b/content/news/031/molecoole.png
new file mode 100644
index 000000000..3855bfd4f
Binary files /dev/null and b/content/news/031/molecoole.png differ
diff --git a/content/news/031/name-needed.gif b/content/news/031/name-needed.gif
new file mode 100644
index 000000000..b9946df78
Binary files /dev/null and b/content/news/031/name-needed.gif differ
diff --git a/content/news/031/notan.png b/content/news/031/notan.png
new file mode 100644
index 000000000..bad75ad24
Binary files /dev/null and b/content/news/031/notan.png differ
diff --git a/content/news/031/sokoban_screenshot.gif b/content/news/031/sokoban_screenshot.gif
new file mode 100644
index 000000000..6448733c4
Binary files /dev/null and b/content/news/031/sokoban_screenshot.gif differ
diff --git a/content/news/031/sparsey.png b/content/news/031/sparsey.png
new file mode 100644
index 000000000..e562e734d
Binary files /dev/null and b/content/news/031/sparsey.png differ
diff --git a/content/news/031/veloren.jpg b/content/news/031/veloren.jpg
new file mode 100644
index 000000000..4ce2f7a96
Binary files /dev/null and b/content/news/031/veloren.jpg differ
diff --git a/content/news/031/vismut.png b/content/news/031/vismut.png
new file mode 100644
index 000000000..abdea59c8
Binary files /dev/null and b/content/news/031/vismut.png differ
diff --git a/content/news/031/weegames.jpg b/content/news/031/weegames.jpg
new file mode 100644
index 000000000..e008510a9
Binary files /dev/null and b/content/news/031/weegames.jpg differ
diff --git a/content/news/032/bevy-jam.png b/content/news/032/bevy-jam.png
new file mode 100644
index 000000000..ce606ff29
Binary files /dev/null and b/content/news/032/bevy-jam.png differ
diff --git a/content/news/032/bevy-video-series.jpg b/content/news/032/bevy-video-series.jpg
new file mode 100644
index 000000000..d492cf9cc
Binary files /dev/null and b/content/news/032/bevy-video-series.jpg differ
diff --git a/content/news/032/bevy_match3_example.gif b/content/news/032/bevy_match3_example.gif
new file mode 100644
index 000000000..8bc5ee501
Binary files /dev/null and b/content/news/032/bevy_match3_example.gif differ
diff --git a/content/news/032/bloom3d.jpg b/content/news/032/bloom3d.jpg
new file mode 100644
index 000000000..1f8594467
Binary files /dev/null and b/content/news/032/bloom3d.jpg differ
diff --git a/content/news/032/chaz.png b/content/news/032/chaz.png
new file mode 100644
index 000000000..51aef4a4f
Binary files /dev/null and b/content/news/032/chaz.png differ
diff --git a/content/news/032/cheatersneverwin.gif b/content/news/032/cheatersneverwin.gif
new file mode 100644
index 000000000..4e27d342b
Binary files /dev/null and b/content/news/032/cheatersneverwin.gif differ
diff --git a/content/news/032/doslike.png b/content/news/032/doslike.png
new file mode 100644
index 000000000..dec182b58
Binary files /dev/null and b/content/news/032/doslike.png differ
diff --git a/content/news/032/gamedev-meetup.png b/content/news/032/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/032/gamedev-meetup.png differ
diff --git a/content/news/032/godot-rust.png b/content/news/032/godot-rust.png
new file mode 100644
index 000000000..01e8c5edb
Binary files /dev/null and b/content/news/032/godot-rust.png differ
diff --git a/content/news/032/graphite-node-graph.png b/content/news/032/graphite-node-graph.png
new file mode 100644
index 000000000..704fc1aec
Binary files /dev/null and b/content/news/032/graphite-node-graph.png differ
diff --git a/content/news/032/index.md b/content/news/032/index.md
new file mode 100644
index 000000000..8c9396c8e
--- /dev/null
+++ b/content/news/032/index.md
@@ -0,0 +1,717 @@
++++
+title = "This Month in Rust GameDev #32 - March 2022"
+transparent = true
+date = 2022-04-11
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 32nd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Rust GameDev Podcast](#rust-gamedev-podcast)
+- [Rust GameDev Meetup](#rust-gamedev-meetup)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## [Rust GameDev Podcast][gamedev-podcast-site]
+
+![text logo](podcast.jpeg)
+
+The Rust Gamedev Podcast features interviews with indie game developers creating
+titles with the Rust programming language. It covers technical topics as well as
+the business of open source and commercial indie games development.
+
+In March, two episodes were released:
+
+[The seventh episode][podcast-7] is a chat with Erlend and Ole about
+[Fish Fight][fishfight], open source games development, and future game spin-offs.
+
+[In the eighth episode][podcast-8], Forest chats to Dustin about [A/B Street][abstreet].
+
+Listen and Subscribe from the following platforms:
+[Rust GameDev Podcast (simplecast)][gamedev-podcast-site],
+[Apple Podcasts][gamedev-podcast-apple],
+[Spotify][gamedev-podcast-spotify],
+[RSS Feed][gamedev-podcast-rss],
+or [Google Podcasts][gamedev-podcast-google].
+
+[podcast-7]: https://rustgamedev.com/episodes/interview-with-fish-fight
+[podcast-8]: https://rustgamedev.com/episodes/interview-with-dustin-a-b-street
+[abstreet]: https://github.com/a-b-street/abstreet
+[fishfight]: https://github.com/heroiclabs/fishgame-macroquad
+[gamedev-podcast-site]: https://rustgamedev.com/
+[gamedev-podcast-apple]: https://podcasts.apple.com/gb/podcast/rust-game-dev/id1526304768
+[gamedev-podcast-spotify]: https://open.spotify.com/show/7HRfGnTcXkLkQd9fxJbDGj
+[gamedev-podcast-rss]: https://feeds.simplecast.com/C6NQglnL
+[gamedev-podcast-google]: https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9DNk5RZ2xuTA
+
+## Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 14th Rust Gamedev Meetup took place in March. You can watch the
+recording of the meetup [here on Youtube][gamedev-meetup-video]. The meetups
+take place on the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/dQPkyjbd36Y
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### [Bevy Jam][bevy-jam-results]
+
+![Bevy Jam](bevy-jam.png)
+
+Voting on the first-ever [Bevy Jam][bevy-jam] just finished! It was a
+week-long event, where the goal was to make a game in
+[Bevy Engine][bevy-engine], the free and open-source game engine
+built in Rust. The theme was 'Unfair Advantage'.
+
+The [full results can be found on itch.io][bevy-jam-results], and you can read
+an [exploration of the entries][bevy-jam-exploration] to find out about how
+these entries used different asset formats, crates, and Bevy features.
+
+Here are the top five games:
+
+[bevy-jam]: https://itch.io/jam/bevy-jam-1/
+[bevy-jam-results]: https://itch.io/jam/bevy-jam-1/results
+[bevy-engine]: https://bevyengine.org/
+[bevy-jam-exploration]: https://techgeneral.org/bevy-jam-1-data-exploration/
+
+#### 🥇 First Place: [Petty Party][petty-party]
+
+![Petty Party logo](pettyparty.png)
+
+[Petty Party][petty-party] is a Mario Party inspired board game,
+in which you play against the world's worst opponent, who's
+actively rigging the game against you.
+
+The game was originally very hard to beat, so the devs balanced
+the jam release fairly heavily in the player's favour - however,
+if you beat the game, you can unlock the original difficulty
+as a 'hard mode'!
+
+The source for the game is available on [GitHub][petty-party-source].
+
+[petty-party]: https://jabuwu.itch.io/petty-party
+[petty-party-source]: https://github.com/jabuwu/petty-party
+
+#### 🥈 Second Place: [¿Quién es el MechaBurro?][mechaburro-itchio]
+
+![¿Quién es el MechaBurro?](mechaburro.gif)
+
+[¿Quién es el MechaBurro?][mechaburro-itchio] is a singleplayer/local
+multiplayer game (up to 4 players) with bots (8 total burros)
+inspired by twin-stick shooters and aspects of Mario Kart. Players
+choose to play as one of the burro piñatas and then attempt to be
+the last burro standing in each level of the game. At the start
+of each round, one burro is chosen randomly to be upgraded to the
+Mechaburro, giving them an unfair advantage.
+
+A postmortem devlog detailing the process of making the game during the
+jam can be found [here][mechaburro-postmortem], a trailer for the game is
+[viewable on YouTube][mechaburro-youtube] and the source code for the game
+is available [on GitHub][mechaburro-github].
+
+[mechaburro-itchio]: https://ramirezmike2.itch.io/quien-es-el-mechaburro
+[mechaburro-github]: https://github.com/ramirezmike/quien_es_el_mechaburro
+[mechaburro-youtube]: https://www.youtube.com/watch?v=YQeb2ffm_TI
+[mechaburro-postmortem]: https://ramirezmike2.itch.io/quien-es-el-mechaburro/devlog/354715/bevy-jam-1-postmortem
+
+#### 🥉 Third Place: [Chaz]
+
+![Chaz screenshot](chaz.png)
+
+[Chaz] is a platform racing game, where you have to stay close to your
+opponent in order to see where you're going. Beat them to the floating
+heart to win - but be warned, once you do, they'll steal your moves!
+
+The source code is available on [GitHub][chaz-source].
+
+[chaz]: https://luizchagasjardim.itch.io/chaz
+[chaz-source]: https://github.com/lcjgames/chaz
+
+#### Fourth Place: [Warlock's Gambit][warlocks-gambit-itchio]
+
+![Warlock's Gambit Screenshot](warlocks_gambit.jpg)
+
+[Warlock's Gambit][warlocks-gambit-itchio] is a puzzle game constructed like a
+card game, playable in the browser. You are given a static deck and have to play
+your cards carefully to beat your opponent. In keeping with the theme of the
+jam, the decks are stacked against you. In fact, it's impossible to win by
+default. But you have a trick up your sleeve, literally. You can drag a card in
+your sleeve to play it later.
+
+The jam release was limited and confusing, but a post-jam update fixed the
+most annoying bugs, clarified the game rules, enabled importing custom decks,
+and added great code documentation (including a flow diagram demonstrating the
+game state changes).
+
+The game code is licensed under MIT or Apache-2 and is [available on
+GitHub][warlocks-gambit-github].
+
+[warlocks-gambit-itchio]: https://gibonus.itch.io/warlocks-gambit
+[warlocks-gambit-github]: https://github.com/team-plover/warlocks-gambit
+
+#### Fifth Place: [Cheaters Never Win][cheaters-never-win]
+
+![Clip of Cheaters Never Win gameplay](cheatersneverwin.gif)
+
+[Cheaters Never Win][cheaters-never-win] is an unfairly difficult
+infinite runner set in a cyberpunk world.
+
+Collect keycaps in order to unlock cheat codes, which will give
+you access to forbidden powers - like jumping, and moving left!
+
+Since the jam, the team has begun work on a full release for the game.
+
+The source for this game is available on [GitHub][cnw-source].
+
+[cheaters-never-win]: https://cdsupina.itch.io/cheaters-never-win
+[cnw-source]: https://github.com/Corrosive-Games/Cheaters-Never-Win
+
+### [V-Racer][vracer-github]
+
+{{ image_figure(
+    alt="VRacer screenshot"
+    src="vracer_screenshot.gif"
+    caption="Screenshot of V-Racer") }}
+
+V-Racer ([GitHub][vracer-github]) by
+[@Syn-Nine][synnine-twitter] is a retro
+drift racing game inspired by Atari
+Battlezone and Wipeout, created using
+Syn9's [Rust Mini Game Framework][mgfw].
+The game is part of an open source
+[repository][s9-minigame-repo] of several
+mini-games that use this framework.
+
+[vracer-github]: https://github.com/Syn-Nine/rust-mini-games/tree/main/2d-games/vracer
+[synnine-twitter]: https://twitter.com/Syn9Dev
+[mgfw]: https://github.com/Syn-Nine/mgfw
+[s9-minigame-repo]: https://github.com/Syn-Nine/rust-mini-games/
+
+### [Harvest Hero Origins - Spring Fever][hho-steam]
+
+![hho screenshot](spring_update_banner.png)
+
+Harvest Hero Origins by Gemdrop Games is an Arcade Wave Defense game featuring
+a co-op survival mode.
+
+[Gemdrop Games][ggt] collaborated with [Pixadome][pd] to bring
+their featured character Blue
+from [Chenso Club][cc] to the survival roster. Please go wishlist Chenso Club
+to support the developers!
+
+Blue is an android who wields a chainsaw to rip and tear through her enemies.
+Slice and dice, then ride through enemies
+in the new [Spring Fever expansion][spring-fever]!
+
+[hho-steam]: https://store.steampowered.com/app/1651500/Harvest_Hero_Origins/
+[ggt]: https://twitter.com/GemdropGames
+[pd]: https://www.pixadome.com/
+[cc]: https://store.steampowered.com/app/1454730/Chenso_Club/
+[spring-fever]: https://store.steampowered.com/news/app/1651500/view/3112556530755817232
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Veloren on the Steam Deck"
+    src="veloren-steamdeck.jpg"
+    caption="Veloren on the Steam Deck!") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In March, Veloren was tested on the SteamDeck, which you can read about in
+detail in [the weekly devblog][veloren-steamdeck-section]. Lots of work was done
+with Airshipper, Veloren's launcher, including some bug fixes, but mainly the
+switch to GitHub Releases as the download backend. This will make game updates
+significantly faster and more reliable for players. Work is also being done to
+make use of GitHub's HTTP range requests to do partial patches where possible.
+Audio work was done to improve swimming sounds playing unevenly, and more sounds
+to gliding.
+
+Veloren was also mentioned [on Hacker News][veloren-hn], and lots of great
+discussions happened in the comment section. In 2021, Veloren spoke at Rust in
+Arts, and [the recording has recently been posted][veloren-rust-in-arts]. The
+0.13 release map is in the works, with a jungle theme. CliffTowns are being
+developed, as a new town located in the mountains. Veloren recorded another
+reading club episode, this time about [Tracy and
+optimizations][veloren-reading-club-7]. A new series was also started, and the
+first [Veloren Code Review was recorded][veloren-code-review-1].
+
+March's full weekly devlogs: "This Week In Veloren...":
+[#162][veloren-162],
+[#163][veloren-163],
+[#164][veloren-164],
+[#165][veloren-165].
+
+[veloren]: https://veloren.net
+[veloren-reading-club-7]: https://www.youtube.com/watch?v=-w0yTCjsV0k
+[veloren-code-review-1]: https://www.youtube.com/watch?v=gomKwQnEGA8
+[veloren-steamdeck-section]: https://veloren.net/devblog-162#veloren-on-steamdeck-by-angelonfira
+[veloren-hn]: https://news.ycombinator.com/item?id=30667022
+[veloren-rust-in-arts]: https://rustfest.global/session/53-directors-commentary-veloren/
+
+[veloren-162]: https://veloren.net/devblog-162
+[veloren-163]: https://veloren.net/devblog-163
+[veloren-164]: https://veloren.net/devblog-164
+[veloren-165]: https://veloren.net/devblog-165
+
+### [rust-nonogram][rust-nonogram]
+
+![rust-nonogram screenshot](rust-nonogram.png)
+
+Nonograms (AKA Picross) are logic puzzles that involve filling in cells on a
+grid. The goal of [rust-nonogram] is to be a quick and engaging time-killer.
+Featuring random puzzles and simple controls, it is a great way to have some
+fun and test your skills.
+
+[rust-nonogram]: https://github.com/henryksloan/rust-nonogram
+
+### [Terrain Generator][terrain-generator]
+
+![A screenshot looking down on mountainous terrain and an ocean](terrain_generator.jpg)
+
+"Terrain Generator" is a website made by [@kettlecorn][kettlecorn_twitter] that
+generates procedural island landscapes. It uses WebAssembly SIMD and multithreading
+via WebWorkers to speed up generation.
+
+The terrain is generated with multi-octave simplex noise using the new
+simplex-noise crate [`clatter`][clatter].
+
+Terrain Generator's code is open-sourced on [GitHub][terrain-generator-github].
+
+[terrain-generator]: https://ianjk.com/terrain_generator/
+[kettlecorn_twitter]: https://twitter.com/kettlecorn
+[clatter]: https://ianjk.com/terrain_generator/
+[terrain-generator-github]: https://github.com/kettle11/open_world_game
+
+### [Way of Rhea][wor]
+
+![way of rhea capsule image](wor-spotlight.jpg)
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. It has a demo available [on Steam][wor].
+
+Latest developments:
+
+- A [new demo][wor] was pushed to Steam for PAX East
+- The [mushroom biome][wor-mushroom] art was completed
+- All puzzles for the main game are complete
+- More secrets have been added
+- Four out of the five [characters][wor-characters] are now in the game
+- `SDL_mixer` was replaced with a custom Rust mixer built on top of
+[libsoundio][wor-libsoundio]
+- Numerous minor bug fixes and quality of life improvements, you can find
+[more details here][wor-update]
+
+You can stay up to date with the latest Way of Rhea developments by
+[following it on Steam][wor], signing up for [their mailing list][wor-newsletter],
+or joining [their Discord][wor-discord].
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n32
+[wor-update]: https://store.steampowered.com/news/app/1110620/view/3180112431320346739?utm_campaign=tmirgd&utm_source=n32&utm_content=news
+[wor-mushroom]: https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/clans/35599024/f356b295d6d71dcaebf4727eca0317269172b1d7.png
+[wor-characters]: https://cdn.cloudflare.steamstatic.com/steamcommunity/public/images/clans/35599024/4dbe4158059559176d25f4d9326280d83ec6c745.png
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-newsletter]: https://www.anthropicstudios.com/newsletter/signup
+[wor-discord]: https://discord.gg/JGeVt5XwPP
+[wor-libsoundio]: http://libsound.io/
+
+## Engine Updates
+
+### [godot-rust](https://github.com/godot-rust/godot-rust)
+
+![godot-rust logo](godot-rust.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+We are pleased to announce the release of godot-rust version 0.10.0.
+This update brings many new quality-of-life features, such as basic
+async and serde support, more flexible exporting of Rust symbols to
+Godot, better CI and doc integration, among many more features that
+have previously been exclusive to the [GitHub repo][gd-github].
+
+This release also makes the API much more user-friendly than
+previous versions with more consistent naming, flatter module structure
+and fewer redundancies.
+
+Thank you to all of the contributors who made this possible!
+
+A full list of the changes is available in the [changelog][gd-changelog].
+
+[gd-announcement]: https://godot-rust.github.io/releases/
+[gd-changelog]: https://github.com/godot-rust/godot-rust/blob/master/CHANGELOG.md
+
+[gd-docs]: https://godot-rust.github.io/docs
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+
+### [Notan v0.2.1][Notan]
+
+![notan](notan.jpg)
+
+[Notan] is a simple and portable layer designed to create your own multimedia
+apps on top of it without worrying about platform-specific code.
+
+The main goal is to provide a set of APIs and tools that can be used to create
+your project in an ergonomic manner without enforcing any structure or pattern,
+always trying to stay out of your way. The idea is that you can use it as a
+foundation layer or backend for your next app, game engine, or game.
+
+Version [v0.2.1] improves and adds features focusing on the creation of apps,
+like select mouse cursor or lazy loop among other things. The main focus was
+to improve the integration with [egui] supporting all its features.
+
+[Notan]: https://github.com/Nazariglez/notan
+[v0.2.1]: https://github.com/Nazariglez/notan/releases/tag/v0.2.0
+[egui]: https://github.com/emilk/egui
+
+### [Tetra] 0.7
+
+[Tetra] is a simple 2D game framework, inspired by XNA, Love2D, and Raylib. This
+month, Tetra 0.7 was released, featuring:
+
+- Support for a wider variety of texture formats
+- A more powerful API for blending
+- Lots of bug fixes, cleanups, and improvements
+
+For more details, see the [changelog][tetra-changelog].
+
+As mentioned in previous newsletters, this is likely to be the final release of
+Tetra, as [the developer has decided to move onto other projects][tetra-retro].
+
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[tetra-retro]: https://www.seventeencups.net/posts/three-years-of-tetra/
+
+## Learning Material Updates
+
+### [Intro to Bevy Video Tutorial Series][intro-to-bevy-playlist]
+
+![Bevy video series title](bevy-video-series.jpg)
+
+Matthew Bryant ([Youtube][matthew-bryant-youtube],
+[GitHub][matthew-bryant-github]) has been working on a video series on using
+Bevy to create a Pokemon-style RPG, and just released four episodes. The goal is
+to show and explain all the core features of Bevy while creating a real game
+over ten 10-15 minute videos, currently releasing once per week. There is also
+an accompanying [blog post][intro-to-bevy-blog] for the first video in the
+series.
+
+[intro-to-bevy-playlist]: https://www.youtube.com/watch?v=WnUzWuaMzuM&list=PLT_D88-MTFOPPl75g4WshL1Gx2bnGTUkz&index=1
+[intro-to-bevy-blog]: https://www.logicprojects.net/2022/03/
+[matthew-bryant-youtube]: https://www.youtube.com/channel/UC7v3YEDa603x_84PgCPytzA
+[matthew-bryant-github]: https://github.com/mwbryant
+
+### [Bevy Cheatbook]
+
+The [Bevy Cheatbook] by Ida Iyes is an unofficial reference-style book
+teaching the Bevy game engine. It got many improvements over the past month.
+
+There is a new [guided tutorial page][bevy-cb-tutorial], to help you navigate
+the book in an order that makes sense for learning, starting from beginner
+topics and progressing towards more advanced! There is also a new "getting
+started" page, as an alternative to Bevy's official instructions.
+
+New topics added to the book: working with Bevy Time/Timers/Stopwatches, ECS
+data storage kinds, exclusive systems, direct World access, non-Send types,
+and more…
+
+Many pages have been overhauled for correctness and the quality of various
+code examples improved.
+
+If you would like to support the project, donate to the author via
+her [GitHub Sponsors][ghsponsors-inodentry]. Follow [@IyesGames on
+Twitter][twitter-iyesgames] for updates.
+
+[Bevy Cheatbook]: https://bevy-cheatbook.github.io
+[bevy-cb-tutorial]: https://bevy-cheatbook.github.io/tutorial.html
+[ghsponsors-inodentry]: https://github.com/sponsors/inodentry
+[twitter-iyesgames]: https://twitter.com/IyesGames
+
+## Tooling Updates
+
+### [Bloom3D][bloom3d]
+
+![A screenshot of Bloom3D's interface and a simple low-polygon building.](bloom3d.jpg)
+
+[Bloom3D][bloom3d] is an extremely minimalist in-browser 3D modeling tool made
+by [@kettlecorn](kettlecorn_twitter)
+that released earlier this month.
+
+Bloom3D is built completely with Rust from the user interface to core algorithms.
+The game engine and many of the libraries powering Bloom3D are open-sourced on [GitHub][koi].
+
+[bloom3d]: https://bloom3d.com
+[koi]: https://github.com/kettle11/koi
+
+### [Noumenal][noumenal-website]
+
+![The logo for Noumenal, a colorful cube with spheres on each corner and a
+spherical hole in the center, and "Noumenal" written underneath.](noumenal.jpg)
+
+[Noumenal][noumenal-website] ([Discord][noumenal-discord],
+[Twitter][noumenal-twitter]) by [@HackerFoo][hackerfoo-website] is a beautiful
+and fast 3D modeling app for iOS.
+
+Noumenal officially went into [public beta][noumenal-beta] this week, and so was
+presented to a larger audience for the first time.
+
+The goals of Noumenal are:
+
+- Enjoyable to use on a mobile device
+- Accessible to as many people as possible
+- Real-time solid modeling with boolean operations
+- Non-destructive editing and robustness to prevent data loss
+- Intuitive manipulation by projecting from the screen glass into 3D space
+- Export to the most widely used formats, such as glTF, USDZ, and STL for 3D
+  printing
+
+These goals have led to a unique interface.
+
+[noumenal-website]: https://noumenal.app
+[noumenal-discord]: https://discord.gg/PFeZQE48gG
+[noumenal-twitter]: https://twitter.com/noumenal_app
+[hackerfoo-website]: https://hackerfoo.com
+[noumenal-beta]: https://testflight.apple.com/join/I6x5Yksx
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite-node-graph.png)
+
+Graphite is an in-development raster and vector 2D graphics editor that is free
+and open source. It will be powered by a node graph compositing engine that
+supercharges your layer stack, providing a completely non-destructive editing
+experience.
+
+With the completion of the node graph UX design, work has begun building the
+frontend and backend systems for the big leap to node-driven vector editing.
+This works by composing groups of Rust functions together at runtime and/or
+compile time. [Watch the (brief) talk][graphite-gamedev-nodes-talk] about how
+the backend implementation works around challenges imposed by Rust.
+
+New editor features this month include importing bitmap image layers and
+customizing stroke styling with dashed lines and rounded or beveled corners.
+The [project website][graphite-website] is also now mostly content-complete,
+including new node graph mockups.
+
+Check out the [new website][graphite-website], try the
+[Graphite editor][graphite-live-demo] right now in your browser, star on
+[GitHub][graphite-repo], follow on [Twitter][graphite-twitter], and join the
+[Discord][graphite-discord] to chat or get involved!
+
+[graphite-website]: https://graphite.rs
+[graphite-gamedev-nodes-talk]: https://youtu.be/okWFrfaaADs?t=4014
+[graphite-live-demo]: https://editor.graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-discord]: https://discord.graphite.rs
+
+## Library Updates
+
+### [bevy_match3]
+
+![An animated gif depicting a simple match 3 game where gems are matched in sets of 3 or more and new gems drop down to take their place](bevy_match3_example.gif)
+
+[bevy_match3] ([GitHub](https://github.com/Sheepyhead/bevy_match3))
+by [@Sheepyhead](https://twitter.com/devsheepy)
+is an event-based Bevy crate for handling the logic side of match 3 games so
+you can worry about making everything else!
+
+This was recently released in its first public version, so there are several
+parts to improve, and it could really use some battle testing.
+
+[bevy_match3]: https://crates.io/crates/bevy_match3
+
+### [dos-like-rs]
+
+![Screenshot of example "rotozoom" from dos-like-rs,
+depicting a rotating tile grid of Ferris.](doslike.png)
+
+[dos-like-rs] by [@E_net4]
+provides Rust bindings to Mattias Gustavsson's `dos-like`,
+a cross-platform framework for writing modern applications
+with the look & feel of MS-DOS programs from the early 90's.
+
+A few technical details about the conception of these bindings
+are presented in a [blog post on Dev.to][dos-like-rs-dev].
+
+[dos-like-rs]: https://github.com/Enet4/dos-like-rs
+[@E_net4]: https://twitter.com/E_net4
+[dos-like-rs-dev]: https://dev.to/e_net4/writing-bindings-to-dos-like-for-rust-some-lessons-learned-2p6k
+
+### [kira v0.6.0](https://github.com/tesselode/kira)
+
+[Kira] by [@tesselode] is a backend-agnostic library to create expressive audio
+for games. It provides parameters for smoothly adjusting properties of sounds, a
+flexible mixer for applying effects to audio, and a clock system for precisely
+timing audio events.
+
+v0.6.0 is a complete rewrite with a more elegant API, support for streaming sounds,
+swappable backends, and more flexible mixer routing. See the full [changelog] for
+more details.
+
+_Discussions: [/r/rust], [twitter]_
+
+[Kira]: https://github.com/tesselode/kira
+[@tesselode]: https://twitter.com/tesselode
+[changelog]: https://github.com/tesselode/kira/releases/tag/v0.6.0
+[/r/rust]: https://www.reddit.com/r/rust/comments/t984ss/kira_game_audio_library_v060_complete_rewrite
+[twitter]: https://twitter.com/tesselode/status/1501213862988849152
+
+### [screen-13 v0.2.1-alpha](https://github.com/attackgoat/screen-13)
+
+[Screen 13] is an easy-to-use 2D/3D rendering engine in the spirit of QBasic. The
+library provides a thin Vulkan 1.1 driver using smart pointers and a fully-generic
+render graph structure.
+
+Earlier this year [Screen 13] was updated with a dynamic graph pattern, but there
+was no good starter documentation and a few bugs. There is a [getting started][s13-getting-started]
+guide now! Also, a ton of new features have been added in the last month:
+
+- ImGui support
+- Mac support
+- Shader specialization
+
+For more details, see the [changelog][s13-change-log].
+
+[Screen 13]: https://github.com/attackgoat/screen-13
+[s13-getting-started]: https://github.com/attackgoat/screen-13/blob/master/examples/getting-started.md
+[s13-change-log]: https://github.com/attackgoat/screen-13/blob/master/CHANGELOG.md
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Space Frontiers] posted [a video][sf-video] of their Atmospherics update.
+- Other learning material updates:
+  - [Hedgein] started a 'making one game per week' YouTube series.
+
+[Space Frontiers]: https://github.com/starwolves/space
+[sf-video]: https://www.youtube.com/watch?v=EF5iUJNFz94
+[Hedgein]: https://www.youtube.com/watch?v=qufQVtlYqrQ
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+<!-- An optional section for new jobs related to Rust gamedev -->
+
+- [DIMS](https://www.dims.co/jobs)
+  (Stockholm/Remote)
+  - Tools Programmer
+  - Internship: Game Design
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote)
+  - Various roles
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/u1hfpf/this_month_in_rust_gamedev_32_march_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1513623277427728389),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/032/mechaburro.gif b/content/news/032/mechaburro.gif
new file mode 100644
index 000000000..700242bf1
Binary files /dev/null and b/content/news/032/mechaburro.gif differ
diff --git a/content/news/032/notan.jpg b/content/news/032/notan.jpg
new file mode 100644
index 000000000..a4505e790
Binary files /dev/null and b/content/news/032/notan.jpg differ
diff --git a/content/news/032/noumenal.jpg b/content/news/032/noumenal.jpg
new file mode 100644
index 000000000..9f3b980a1
Binary files /dev/null and b/content/news/032/noumenal.jpg differ
diff --git a/content/news/032/pettyparty.png b/content/news/032/pettyparty.png
new file mode 100644
index 000000000..a0bc82aa5
Binary files /dev/null and b/content/news/032/pettyparty.png differ
diff --git a/content/news/032/podcast.jpeg b/content/news/032/podcast.jpeg
new file mode 100644
index 000000000..0e3134937
Binary files /dev/null and b/content/news/032/podcast.jpeg differ
diff --git a/content/news/032/rust-nonogram.png b/content/news/032/rust-nonogram.png
new file mode 100644
index 000000000..346422dc5
Binary files /dev/null and b/content/news/032/rust-nonogram.png differ
diff --git a/content/news/032/spring_update_banner.png b/content/news/032/spring_update_banner.png
new file mode 100644
index 000000000..c3f6e57e2
Binary files /dev/null and b/content/news/032/spring_update_banner.png differ
diff --git a/content/news/032/terrain_generator.jpg b/content/news/032/terrain_generator.jpg
new file mode 100644
index 000000000..fbe565ed8
Binary files /dev/null and b/content/news/032/terrain_generator.jpg differ
diff --git a/content/news/032/veloren-steamdeck.jpg b/content/news/032/veloren-steamdeck.jpg
new file mode 100644
index 000000000..8562b700e
Binary files /dev/null and b/content/news/032/veloren-steamdeck.jpg differ
diff --git a/content/news/032/vracer_screenshot.gif b/content/news/032/vracer_screenshot.gif
new file mode 100644
index 000000000..4e83d16e1
Binary files /dev/null and b/content/news/032/vracer_screenshot.gif differ
diff --git a/content/news/032/warlocks_gambit.jpg b/content/news/032/warlocks_gambit.jpg
new file mode 100644
index 000000000..f82164706
Binary files /dev/null and b/content/news/032/warlocks_gambit.jpg differ
diff --git a/content/news/032/wor-spotlight.jpg b/content/news/032/wor-spotlight.jpg
new file mode 100644
index 000000000..c73adfaba
Binary files /dev/null and b/content/news/032/wor-spotlight.jpg differ
diff --git a/content/news/033/arcade_cabinet.gif b/content/news/033/arcade_cabinet.gif
new file mode 100644
index 000000000..304f77b00
Binary files /dev/null and b/content/news/033/arcade_cabinet.gif differ
diff --git a/content/news/033/bevy_mushroom.jpg b/content/news/033/bevy_mushroom.jpg
new file mode 100644
index 000000000..1297162d0
Binary files /dev/null and b/content/news/033/bevy_mushroom.jpg differ
diff --git a/content/news/033/bitgun-release-optimized.gif b/content/news/033/bitgun-release-optimized.gif
new file mode 100644
index 000000000..05c2726c7
Binary files /dev/null and b/content/news/033/bitgun-release-optimized.gif differ
diff --git a/content/news/033/brontefy-me.jpg b/content/news/033/brontefy-me.jpg
new file mode 100644
index 000000000..409ca8cb8
Binary files /dev/null and b/content/news/033/brontefy-me.jpg differ
diff --git a/content/news/033/dims.jpg b/content/news/033/dims.jpg
new file mode 100644
index 000000000..f2d052d6a
Binary files /dev/null and b/content/news/033/dims.jpg differ
diff --git a/content/news/033/eldiron_screen.png b/content/news/033/eldiron_screen.png
new file mode 100644
index 000000000..97a0f3f02
Binary files /dev/null and b/content/news/033/eldiron_screen.png differ
diff --git a/content/news/033/extremely-extreme-sports.gif b/content/news/033/extremely-extreme-sports.gif
new file mode 100644
index 000000000..a782ad84b
Binary files /dev/null and b/content/news/033/extremely-extreme-sports.gif differ
diff --git a/content/news/033/game-development-rust-webassembly.png b/content/news/033/game-development-rust-webassembly.png
new file mode 100644
index 000000000..7dd570978
Binary files /dev/null and b/content/news/033/game-development-rust-webassembly.png differ
diff --git a/content/news/033/gamedev-meetup.png b/content/news/033/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/033/gamedev-meetup.png differ
diff --git a/content/news/033/graphite.png b/content/news/033/graphite.png
new file mode 100644
index 000000000..4cbb61c39
Binary files /dev/null and b/content/news/033/graphite.png differ
diff --git a/content/news/033/hotham.png b/content/news/033/hotham.png
new file mode 100644
index 000000000..795286c7e
Binary files /dev/null and b/content/news/033/hotham.png differ
diff --git a/content/news/033/index.md b/content/news/033/index.md
new file mode 100644
index 000000000..8beb70774
--- /dev/null
+++ b/content/news/033/index.md
@@ -0,0 +1,646 @@
++++
+title = "This Month in Rust GameDev #33 - April 2022"
+transparent = true
+date = 2022-05-14
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 33rd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 15th Rust Gamedev Meetup took place in April. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. The meetups take place on
+the second Saturday every month via the [Rust Gamedev Discord
+server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [May 14th][rust-meetup-time], fill out [this
+form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/okWFrfaaADs
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-time]: https://everytimezone.com/s/1baaa280
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+
+### Rust Graphics Meetup 2
+
+The 2nd Rust Graphics Meetup will take place on the [21st of May, at 16:00
+UTC+0][graphics-meetup-time]. This meetup is a chance to show off what you've
+been working on in the graphics community, or see what other people have been
+doing!
+
+If you're interested in speaking, please fill out the
+[form][graphics-meetup-form]. You can also [watch one of the
+talks][rend3-graphics-meetup-talk] from the first meetup.
+
+[graphics-meetup-form]: https://forms.gle/DyvZ4WFZanTaLGGa7
+[graphics-meetup-time]: https://everytimezone.com/s/b6ec5c17
+[rend3-graphics-meetup-talk]: https://www.youtube.com/watch?v=F0wGz5UJTrY
+
+### RustConf Arcade Cabinet
+
+![arcade cabinet](arcade_cabinet.gif)
+
+[Carlo][carlosupina] is building a custom arcade cabinet that will be at
+RustConf 2022 in Portland. It is an opportunity for Rust game developers to
+share their games with the broader community. If you are interested in getting
+your game on the cabinet, read [this Twitter thread][arcade-cabinet-thread] and
+fill out the [interest form][arcade-interest-form].
+
+[carlosupina]: https://twitter.com/carlosupina
+[arcade-cabinet-thread]: https://twitter.com/carlosupina/status/1523715837726961664
+[arcade-interest-form]: https://forms.gle/onFm5fCygdbiArqJ7
+
+## Game Updates
+
+### [Way of Rhea][wor]
+
+![way of rhea capsule image](wor-capsule.jpg)
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. It has a demo available [on Steam][wor].
+
+Way of Rhea was recently [shown off at PAX East!][wor-pax] A [minor
+patch][wor-update] has been released to the demo with post-PAX fixes:
+
+- An issue that made the last puzzle in the third forest level difficult to
+navigate with a controller was worked around
+- Colliders in the Hermes puzzle were fixed (previously you could land on top of
+a gate if you held left while sliding)
+- The attract mode that was used at PAX has been merged (not in demo)
+- More jungle biome scenery has been placed (not in demo)
+- A crash at startup on CPUs that don't support the `andn` instruction was fixed
+(part of the BMI extension to x64)
+- The game can now generate mini dumps on Windows and Linux in the event that it
+crashes and if given consent, forward them to the developer for analysis
+
+You can stay up to date with the latest Way of Rhea developments by [following
+it on Steam][wor], signing up for [their mailing list][wor-newsletter], or
+joining [their Discord][wor-discord].
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n33
+[wor-pax]: https://twitter.com/AnthropicSt/status/1517129411790843905
+[wor-update]: https://steamcommunity.com/games/1110620/announcements/detail/3175611379276019942?utm_campaign=tmirgd&utm_source=n32&utm_content=news
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-newsletter]: https://www.anthropicstudios.com/newsletter/signup
+[wor-discord]: https://discord.gg/JGeVt5XwPP
+
+### BITGUN
+
+{{ image_figure(
+    alt="BITGUN gameplay"
+    src="bitgun-release-optimized.gif"
+    caption="BITGUN gameplay") }}
+
+[BITGUN] ([Discord], [Twitter]) by [@darth] and [@shosanna] is an action
+roguelite zombie shooter with difficult and satisfying combat you can learn and
+master. Guns break quickly and you lose all your gear when you die.
+
+The game was just released on Steam! It has been developed by a programming duo
+called LogLog Games. They have been working on it for the past year and it is
+their biggest game so far (they also have 2 smaller games). [BITGUN] is written
+in Godot Engine but it is using Rust language extensively (it has around 7500
+lines of Rust and 4200 lines of GDScript).
+
+The main changes from the demo version of the game:
+
+- New missions added with extra difficulty
+- Improved AI which doesn't just chase the player but behaves unpredictably
+- New zombie types - ranged zombie, big spider, zombie spawner
+- Added comic-book style story
+- Improved tutorial and new player experience
+- Reworked inventory system with simplified armor
+
+_Discussion: [/r/rust](https://www.reddit.com/r/rust/comments/uepde7/after_working_on_our_godot_rust_game_fulltime_for/)_
+
+[BITGUN]: https://store.steampowered.com/app/1673940/BITGUN/
+[Twitter]: https://twitter.com/LogLogGames
+[Discord]: https://discord.com/invite/XrGZQkq
+[@shosanna]: https://github.com/shosanna
+[@darth]: https://github.com/darthdeus
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Riding at night"
+    src="veloren.jpg"
+    caption="Out for a ride at night") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+For April Fool's day, Veloren made a post about a new direction; [Need for
+Voxels: Veloren Cart][veloren-cart]. Enjoy the read! Veloren also participated
+in Reddit's /r/place, and got a small place right below /r/rust. Several months
+of project finances were processed, and [discussed in a blog
+post][veloren-finances]. The [Veloren Reading Club saw its 8th
+episode][veloren-reading-club-8], which was on the topic of graphics and
+particles. A [second Veloren Code Review session][veloren-code-review-2] was
+held, in which two developers went through a merge request that focused on
+combat numbers.
+
+Work was done to improve how loadouts work, specifically surrounding inheritance
+from other configs. Tweaks were made to arthropods, which should make them more
+fun to fight. Work is being done to prepare for the 0.13 release, with a custom
+map being built, and a special treasure map being created for the launch party.
+Player bank storages are being developed, which will allow players to store
+excess items in towns.
+
+April's full weekly devlogs: "This Week In Veloren...":
+[#166][veloren-166],
+[#167][veloren-167],
+[#168][veloren-168],
+[#169][veloren-169].
+
+[veloren]: https://veloren.net
+
+[veloren-cart]: https://veloren.net/veloren-direction/
+[veloren-finances]: https://veloren.net/devblog-167#finances-by-angelonfira
+[veloren-reading-club-8]: https://www.youtube.com/watch?v=ff9EXhCXmFY
+[veloren-code-review-2]: https://www.youtube.com/watch?v=keI0VpjkgZg
+
+[veloren-166]: https://veloren.net/devblog-166
+[veloren-167]: https://veloren.net/devblog-167
+[veloren-168]: https://veloren.net/devblog-168
+[veloren-169]: https://veloren.net/devblog-169
+
+### Oasis of Lost Hope
+
+![Oasis of Lost Hope](oasis-of-lost-hope.jpg)
+
+Oasis of Lost Hope is a game where fertile ground is steadily consumed by dark,
+barren land called blight. Water helps defend an area from being consumed, but
+reserves are finite. The player needs to collect ore to build more irrigation
+towers and delay doom for a few more seconds. Yet one thing is certain: the days
+of fertile land are counted.
+
+The game is an entry for the Ludum Dare 50 Jam, the theme of which was "Delay
+the Inevitable". It has been developed by setzer22 and Bromeon and [open-sourced
+on GitHub][oasis-gh]. The game is built on top of godot-rust alongside GDScript.
+The Rust language is not exactly known for fast prototyping, but with a slightly
+less safety-conservative fork of godot-rust, the game jam experience was
+surprisingly smooth. When modeling mechanics such as the expanding blight or the
+water pipe network, Rust really showed its strength as a strongly typed and fast
+language.
+
+[oasis-gh]: https://github.com/Bromeon/LudumDare50
+
+### [Extremely Extreme Sports][ees-itch]
+
+![Extremely Extreme Sports](extremely-extreme-sports.gif)
+
+[Extremely Extreme Sports][ees-itch] ([GitHub][ees-github],
+[Discord][ees-discord]) is a multiplayer online downhill racing game [made for
+Ludum Dare 50 game jam][ees-ldjam], scored top 3 in fun. Explode the mountain,
+and race against the avalanche as well as your friends.
+
+Features:
+
+- Online multiplayer
+- Character customization
+- Emoting
+- A little bit of gameplay
+
+Developed by [@kuviman] using [custom engine][ees-geng]. A [postmortem blog
+post][ees-postmortem] was written about the jam experience, and it includes
+postjam updates.
+
+_Discussions: [/r/rust_gamedev][ees-reddit]_
+
+[ees-ldjam]: https://ldjam.com/events/ludum-dare/50/extremely-exteme-sports
+[ees-itch]: https://kuviman.itch.io/extremely-extreme-sports
+[ees-github]: https://github.com/kuviman/extremely-extreme-sports
+[ees-geng]: https://github.com/kuviman/geng
+[ees-postmortem]: https://kuviman.itch.io/extremely-extreme-sports/devlog/372532/extremely-extreme-sports-postmortem
+[ees-reddit]: https://www.reddit.com/r/rust_gamedev/comments/u9zqrc/scored_top_3_in_fun_with_my_ludum_dare_game/
+[ees-discord]: https://discord.gg/DZaEMPpANY
+[@kuviman]: https://github.com/kuviman
+
+## Engine Updates
+
+### [Bevy v0.7][bevy-blog]
+
+{{ image_figure(
+    alt="bevy mushroom"
+    src="bevy_mushroom.jpg"
+    caption="Creative Commons 'Stylized mushrooms' scene by QumoDone rendered in Bevy.") }}
+
+[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It
+is [free and open source][bevy-git] forever!
+
+Bevy 0.7 was a massive community effort. You can check out the [full release
+blog post here][bevy-blog], but here are some highlights:
+
+- [Skeletal animation and mesh skinning][bevy-animation]
+- [GLTF animation importing][bevy-gltf]
+- [Unlimited* point lights in a scene][bevy-unlimited]
+- [Improved clustered forward rendering: dynamic/adaptive clustering and faster,
+  more accurate cluster assignment][bevy-light-opt]
+- [Compressed texture support (KTX2 / DDS / .basis): load more textures in a
+  scene, faster][bevy-compressed]
+- [Compute shader / pipeline specialization: Bevy's flexible shader system was
+  ported to compute shaders, enabling hot-reloading, shader defs, and shader
+  imports][bevy-compute]
+- [Render to texture: cameras can now be configured to render to a texture
+  instead of a window][bevy-render-texture]
+- [Flexible mesh vertex layouts in shaders][bevy-vertex]
+- [ECS improvements: Order systems using their names, Query::many_mut, use
+  conflicting parameters in systems via ParamSets, WorldQuery derives][bevy-ecs]
+- [Documentation improvements: better examples, more doc tests, and more
+  coverage][bevy-docs]
+- [More audio control: pause, volume, speed, and looping][bevy-audio]
+- [Power usage options to enable only updating Bevy Apps when input
+  occurs][bevy-power]
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/u4e63h/bevy_07/),
+[Hacker News](https://news.ycombinator.com/item?id=31043668),
+[Twitter](https://twitter.com/cart_cart/status/1515031150313443332)_
+
+[bevy]: https://bevyengine.org
+[bevy-git]: https://github.com/bevyengine/bevy
+[bevy-blog]: https://bevyengine.org/news/bevy-0-7
+[bevy-animation]: https://bevyengine.org/news/bevy-0-7/#skeletal-animation
+[bevy-gltf]: https://bevyengine.org/news/bevy-0-7/#gltf-animation-importing
+[bevy-unlimited]: https://bevyengine.org/news/bevy-0-7/#unlimited-point-lights
+[bevy-light-opt]: https://bevyengine.org/news/bevy-0-7/#light-clustering-features-and-optimizations
+[bevy-compressed]: https://bevyengine.org/news/bevy-0-7/#compressed-gpu-textures
+[bevy-compute]: https://bevyengine.org/news/bevy-0-7/#bevy-native-compute-shaders
+[bevy-render-texture]: https://bevyengine.org/news/bevy-0-7/#render-to-texture
+[bevy-vertex]: https://bevyengine.org/news/bevy-0-7/#flexible-mesh-vertex-layouts
+[bevy-ecs]: https://bevyengine.org/news/bevy-0-7/#ergonomic-system-ordering
+[bevy-docs]: https://bevyengine.org/news/bevy-0-7/#documentation-improvements
+[bevy-audio]: https://bevyengine.org/news/bevy-0-7/#audio-control
+[bevy-power]: https://bevyengine.org/news/bevy-0-7/#eventloop-power-saving-modes
+
+### Dims
+
+{{ image_figure(
+    alt="dims foliage"
+    src="dims.jpg"
+    caption="Foliage rendering in Dims") }}
+
+Dims is an open-world creation platform.
+
+In their latest [dev log][dims-dev-log] they demonstrate a new foliage rendering
+and spawning system, which automatically spawns foliage and trees based on
+"habitat rules". This means a user can simply "paint" a world and it will get
+populated with plants and rocks automatically.
+
+They are also planning to host a screenshot competition in the next few weeks
+for anyone who would like to try out the platform and create their own
+landscapes. Sign up for the newsletter on their website to get notified when it
+starts!
+
+_Discussions:
+[Foliage rendering on reddit][dims-foliage],
+[Erosion tool on reddit][dims-erosion-tool]_
+
+[Website]: https://dims.co
+[Twitter]: https://twitter.com/DimsWorlds
+[Discord]: https://discord.gg/Z5CAVmNE57
+[dims-dev-log]: https://www.youtube.com/watch?v=jgkhsY8aZO8
+[dims-foliage]: https://www.reddit.com/r/rust_gamedev/comments/ujhr3c/the_start_of_a_tool_that_lets_you_tweak_how_and/
+[dims-erosion-tool]: https://www.reddit.com/r/rust_gamedev/comments/tuj9dg/far_from_finished_but_heres_our_terrain_tool/
+
+### [Eldiron]
+
+{{ image_figure(
+    alt="Eldiron Image"
+    src="eldiron_screen.png"
+    caption="Behavior Nodes of Eldiron") }}
+
+[Eldiron] ([GitHub][eldiron-github], [Discord][eldiron-discord],
+[Twitter][eldiron-twitter]) by [@markusmoenig] is a creator for classic role
+playing games (RPGs) written in Rust.
+
+Eldiron v0.5 features inbuild tilemaps, a node-based behavior system and region
+editors.
+
+Development Updates in April:
+
+- Support for 4 layers of tiles for game regions. This enables transparency and
+  support for top-down and isometric views.
+- Game regions can now contain named areas.
+- Areas can contain behavior nodes to spawn monsters, lay traps, or displace
+  tiles (for example to open a door).
+- New "Systems" module to create behavior for Combat and soon for Crafting,
+  Magic and more. System behavior trees can be called from any character.
+
+Eldiron v1 will be able to create any kind of RPG utilizing square tiles, like
+the classical Ultima series.
+
+[Eldiron]: https://www.eldiron.com
+[eldiron-github]: https://github.com/markusmoenig/Eldiron
+[eldiron-discord]: https://discord.gg/ZrNj6baSZU
+[eldiron-twitter]: https://twitter.com/MarkusMoenig
+[@markusmoenig]: https://github.com/markusmoenig
+
+### [Hotham][hotham]
+
+{{ image_figure(
+    alt="Hotham Image"
+    src="hotham.png"
+    caption="Screenshot from The Station, an upcoming space station simulation game, built with Hotham") }}
+
+[Hotham][hotham] is a game engine for standalone VR devices, trying to make VR
+development just a little bit less painful.
+
+0.2 has been released with some _breathtaking_ maintenance and performance
+improvements that make Hotham marginally easier to use. If you're interested in
+Rust and VR and haven't checked out the project already, now is an excellent
+time to do so.
+
+A huge thank you to our sponsors and contributors (big hat-tip to @jmgao) and
+the wonderful members of the [Hotham discord][hotham-discord].
+
+[hotham]: https://github.com/leetvr/hotham
+[hotham-discord]: https://discord.gg/SZEZUX6ZsQ
+
+## Learning Material Updates
+
+### [Game Development with Rust and WebAssembly][wasm-gamedev]
+
+![Game Development with Rust and WebAssembly Book Cover](game-development-rust-webassembly.png)
+
+[Game Development with Rust and WebAssembly][wasm-gamedev] by Eric Smith (a.k.a
+[@paytonrules][wasm-gamedev-twitter]) was published in April. It takes a
+tutorial approach to lead the reader through building an endless runner using
+Rust and WebAssembly. You can play the completed game [here][wasm-gamedev-game].
+
+From the summary: This book is an easy-to-follow reference to help you develop
+your own games, teaching you all about game development and how to create an
+endless runner from scratch. You'll begin by drawing simple graphics in the
+browser window, and then learn how to move the main character across the screen.
+You'll also create a game loop, a renderer, and more, all written entirely in
+Rust. After getting simple shapes onto the screen, you'll scale the challenge by
+adding sprites, sounds, and user input. As you advance, you'll discover how to
+implement a procedurally generated world. Finally, you'll learn how to keep your
+Rust code clean and organized so you can continue to implement new features and
+deploy your app on the web.
+
+_Discussions: [Twitter][wasm-gamedev-twitter], [Discord](https://discord.gg/EjAunSbpdV)_
+
+[wasm-gamedev]: https://subscription.packtpub.com/product/game_development/9781801070973
+[wasm-gamedev-twitter]: https://www.twitter.com/paytonrules
+[wasm-gamedev-game]: https://rust-games-webassembly.netlify.app
+
+### [Why I choose to build my game from scratch][why-article]
+
+[@HeavyRain266] published an article, '[Why I choose to build my game from
+scratch][why-article]', a short story about their implementation of the game
+'Forbidden Valley' from scratch in Rust. The author aims to show how much you
+can learn from building your dream game without the help of any game engine.
+
+_Discussions: [r/rust_gamedev][why-article]_
+
+[@HeavyRain266]: https://github.com/HeavyRain266
+[why-article]: https://www.reddit.com/r/rust_gamedev/comments/uewu9h/reasons_why_i_choose_to_build_my_game_from/
+
+### [Brontefy Me][brontefy-me-episode-1]
+
+![devlog logo](brontefy-me.jpg)
+
+@hedgein ([GitHub][hedgein-github], [Twitch][hedgein-twitch]) started a devlog
+series called Brontefy Me. This series walks through the development of games in
+the [Bevy engine][bevy]. There are two episodes released so far. The [first
+episode][brontefy-me-episode-1] focuses on getting up and running with the
+engine, and the [second episode][brontefy-me-episode-2] starts expanding into
+game mechanics.
+
+[brontefy-me-episode-1]: https://www.youtube.com/watch?v=DdD6VhmEIiU
+[brontefy-me-episode-2]: https://www.youtube.com/watch?v=tx31BKX0yIA
+[hedgein-github]: https://github.com/hedgein
+[hedgein-twitch]: https://twitch.tv/hedgein
+
+## Tooling Updates
+
+### [Vismut 0.5][vismut-0.5]
+
+![Logo](vismut.png)
+
+[Vismut] ([GitLab][Vismut], [Zulip][vismut-zulip]) by [@lukors] will be a
+procedural texturing tool.
+
+[Version 0.5][vismut-0.5] contains a brand new backend to create a better base
+for future improvements. A [blog post][vismut-blog] describes the differences
+between the old and the new architecture.
+
+[@lukors]: https://gitlab.com/lukors
+[vismut-0.5]: https://gitlab.com/vismut-org/vismut/-/releases/v0.5.0
+[Vismut]: https://gitlab.com/vismut-org/vismut
+[vismut-zulip]: https://vismut.zulipchat.com
+[vismut-blog]: https://orsvarn.com/vismut-architecture/
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free
+in-development raster and vector 2D graphics editor. It will be powered by a
+node graph compositing engine that supercharges your layer stack, providing a
+completely non-destructive editing experience.
+
+The past month's Sprint 14 has focused on further editor features and UX
+improvements:
+
+- **It's your type:** The Text tool now provides over 1400 fonts with
+bold/italic styles from the Google Fonts library.
+
+- **Oh snap!:** A refactor and polish pass on the snapping system provides
+better clarity and consistency. And shapes now have outlines on hover and
+selection for easier targeting.
+
+- **Have a dialog:** Supported by a refactor that moved dialog layouts into the
+Rust backend, users can now create new documents of specified sizes and export
+artwork as PNG/JPG with new File menu dialogs.
+
+- **Pack it up:** The web component of the stack was finally upgraded to Webpack
+5 which cleans up a mess of outdated dependencies.
+
+[Open the editor][graphite-live-demo] in your browser and give it a try.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.rs
+
+## Library Updates
+
+### [Notan v0.3.0][Notan]
+
+![notan](notan.jpeg)
+
+[Notan] is a simple and portable layer designed to create your own multimedia
+apps on top of it without worrying about platform-specific code.
+
+The main goal is to provide a set of APIs and tools that can be used to create
+your project in an ergonomic manner without enforcing any structure or pattern,
+always trying to stay out of your way. The idea is that you can use it as a
+foundation layer or backend for your next app, game engine, or game.
+
+The latest version [v0.3.0] comes with audio support for all platforms using as
+default backend [oddio] and [symphonia].
+
+[Notan]: https://github.com/Nazariglez/notan
+[v0.3.0]: https://github.com/Nazariglez/notan/releases/tag/v0.3.0
+[oddio]: https://github.com/Ralith/oddio
+[symphonia]: https://github.com/pdeljanov/Symphonia
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Last of the Sky Folk](https://ianjk.com/ld50) is a grapple-hook based
+    platformer created for LD50.
+  - [Heute Nicht] rythm game is another LD50 submission.
+- Other learning material updates
+  - PhaestusFox started a [Bevy tutorial servies][PhaestusFox-vid-1] and [0.6 to
+    0.7 Migration Guide][PhaestusFox-vid-2] YouTube series.
+  - [@TantanDev] released a ["Rust multi-threading code review"][tantan-video]
+    video.
+- Other library updates:
+  - [tween](https://github.com/sanbox-irl/tween) is an std-optional tweening
+    library, designed for use in games and animations.
+  - [cosync](https://github.com/sanbox-irl/cosync) provides a single-threaded,
+    sequential, parameterized async runtime.
+  - [SuInput](https://github.com/Sorenon/Action-System) is an input system
+    designed to give pancake and XR applications access to a huge range of input
+    devices while minimizing the amount of complexity needed to support them.
+  - [bevy_blender v0.2] with lots of new features is out.
+
+[Heute Nicht]: https://eira-hx.itch.io/heute-nicht
+[PhaestusFox-vid-1]: https://reddit.com/r/rust_gamedev/comments/tz75eb/bevy_game_engine_tutorial_series
+[PhaestusFox-vid-2]: https://reddit.com/r/rust_gamedev/comments/u4uhs2/bevy_06_to_07_migration_guide
+[@TantanDev]: https://twitter.com/TantanDev
+[tantan-video]: https://youtube.com/watch?v=jkHqrkcEHRc
+[bevy_blender v0.2]: https://reddit.com/r/rust_gamedev/comments/u7acfc/update_on_bevy_blender_releasing_v02_and_inquiry
+
+## Requests for Contribution
+
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+- [DIMS](https://www.dims.co/jobs)
+  (Stockholm/Remote)
+  - Tools Programmer
+  - Internship: Game Design
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote)
+  - Various roles
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+<!--
+TODO: Add real links and un-comment once this post is published
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
+-->
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/033/notan.jpeg b/content/news/033/notan.jpeg
new file mode 100644
index 000000000..e97d36fd6
Binary files /dev/null and b/content/news/033/notan.jpeg differ
diff --git a/content/news/033/oasis-of-lost-hope.jpg b/content/news/033/oasis-of-lost-hope.jpg
new file mode 100644
index 000000000..66ec04ad2
Binary files /dev/null and b/content/news/033/oasis-of-lost-hope.jpg differ
diff --git a/content/news/033/veloren.jpg b/content/news/033/veloren.jpg
new file mode 100644
index 000000000..c9a5ef5ae
Binary files /dev/null and b/content/news/033/veloren.jpg differ
diff --git a/content/news/033/vismut.png b/content/news/033/vismut.png
new file mode 100644
index 000000000..a9ae1b61d
Binary files /dev/null and b/content/news/033/vismut.png differ
diff --git a/content/news/033/wor-capsule.jpg b/content/news/033/wor-capsule.jpg
new file mode 100644
index 000000000..eb47a1933
Binary files /dev/null and b/content/news/033/wor-capsule.jpg differ
diff --git a/content/news/034/arcade_cabinet.png b/content/news/034/arcade_cabinet.png
new file mode 100644
index 000000000..3d32e5f34
Binary files /dev/null and b/content/news/034/arcade_cabinet.png differ
diff --git a/content/news/034/battleship.gif b/content/news/034/battleship.gif
new file mode 100644
index 000000000..e8fd0a51c
Binary files /dev/null and b/content/news/034/battleship.gif differ
diff --git a/content/news/034/bevy-material-series.png b/content/news/034/bevy-material-series.png
new file mode 100644
index 000000000..bd29f6678
Binary files /dev/null and b/content/news/034/bevy-material-series.png differ
diff --git a/content/news/034/bevy_silk.png b/content/news/034/bevy_silk.png
new file mode 100644
index 000000000..7e708db00
Binary files /dev/null and b/content/news/034/bevy_silk.png differ
diff --git a/content/news/034/bloom.jpg b/content/news/034/bloom.jpg
new file mode 100644
index 000000000..14658ac51
Binary files /dev/null and b/content/news/034/bloom.jpg differ
diff --git a/content/news/034/book-multiplayer.png b/content/news/034/book-multiplayer.png
new file mode 100644
index 000000000..bf961468b
Binary files /dev/null and b/content/news/034/book-multiplayer.png differ
diff --git a/content/news/034/cnc-preview.png b/content/news/034/cnc-preview.png
new file mode 100644
index 000000000..3a4e87065
Binary files /dev/null and b/content/news/034/cnc-preview.png differ
diff --git a/content/news/034/country_slice.gif b/content/news/034/country_slice.gif
new file mode 100644
index 000000000..bcd1f4e87
Binary files /dev/null and b/content/news/034/country_slice.gif differ
diff --git a/content/news/034/dims-video-preview.jpg b/content/news/034/dims-video-preview.jpg
new file mode 100644
index 000000000..8ed97b01d
Binary files /dev/null and b/content/news/034/dims-video-preview.jpg differ
diff --git a/content/news/034/fyrox.png b/content/news/034/fyrox.png
new file mode 100644
index 000000000..e773192dc
Binary files /dev/null and b/content/news/034/fyrox.png differ
diff --git a/content/news/034/gamedev-meetup.png b/content/news/034/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/034/gamedev-meetup.png differ
diff --git a/content/news/034/gfs-youtube-preview.jpg b/content/news/034/gfs-youtube-preview.jpg
new file mode 100644
index 000000000..cf1d6b9f2
Binary files /dev/null and b/content/news/034/gfs-youtube-preview.jpg differ
diff --git a/content/news/034/graphics-meetup.jpg b/content/news/034/graphics-meetup.jpg
new file mode 100644
index 000000000..f34595e97
Binary files /dev/null and b/content/news/034/graphics-meetup.jpg differ
diff --git a/content/news/034/graphite.png b/content/news/034/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/034/graphite.png differ
diff --git a/content/news/034/hgs34.jpg b/content/news/034/hgs34.jpg
new file mode 100644
index 000000000..544b84ee1
Binary files /dev/null and b/content/news/034/hgs34.jpg differ
diff --git a/content/news/034/hug.jpg b/content/news/034/hug.jpg
new file mode 100644
index 000000000..23fe23c12
Binary files /dev/null and b/content/news/034/hug.jpg differ
diff --git a/content/news/034/index.md b/content/news/034/index.md
new file mode 100644
index 000000000..4a8bfbc5c
--- /dev/null
+++ b/content/news/034/index.md
@@ -0,0 +1,974 @@
++++
+title = "This Month in Rust GameDev #34 - May 2022"
+transparent = true
+date = 2022-06-08
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 34th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust Graphics Meetup 2
+
+[![Graphics meetup speakers](graphics-meetup.jpg)][graphics-meetup-playlist]
+
+The 2nd Rust Graphics Meetup took place on the 21st of May. The videos of the
+talks have been released:
+
+- [Vismut][vismut-talk] - [Lukas Orsvärn]
+- [Screen-13][screen-10-talk] - [John Wells]
+- [Optimizing wgpu with Data Driven Design][wgpu-talk] - [Connor Fitzgerald]
+
+[vismut-talk]: https://youtube.com/watch?v=0IsllXP7_pY
+[screen-10-talk]: https://youtube.com/watch?v=ywZznsCXUjs
+[wgpu-talk]: https://youtube.com/watch?v=DDG4bcGs7zM
+[Lukas Orsvärn]: https://github.com/lukors
+[John Wells]: https://github.com/attackgoat/screen-13
+[Connor Fitzgerald]: https://github.com/cwfitzgerald
+[graphics-meetup-playlist]: https://youtube.com/watch?v=DDG4bcGs7zM&list=PLYiOdhpKxxXJwaocrJcOCoBhlV6foaO8F&index=4
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 16th Rust Gamedev Meetup took place in May. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule from
+the meetup:
+
+- RustConf Arcade Cabinet - [@carlosupina]
+- Puzzle platformer - [@tesselode]
+- Veloren - [@AngelOnFira]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday every month via the [Rust Gamedev
+Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [June 11th][rust-meetup-time], fill out [this
+form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/XOpZIzmFifk
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-time]: https://everytimezone.com/s/ffc60181
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+
+[@carlosupina]: https://twitter.com/carlosupina
+[@tesselode]: https://twitter.com/tesselode
+[@AngelOnFira]: https://twitter.com/AngelOnFira
+[@GraphiteEditor]: https://twitter.com/graphiteeditor
+
+### 3D Ferris
+
+![colorful render of a 3d model of Ferris with additional wireframe view](raymarch_ferris_3d.jpg)
+
+[@RayMarch][raymarch-twitter] is
+creating a game-ready 3D model of [Ferris the Rustacean][ferris]. These links
+provide a more detailed look:
+[360 overview][raymarch-twitter-360],
+[Ferris dancing][raymarch-twitter-dance].
+
+Once the model is finished, it will be published under a permissive license on
+[GitHub][raymarch-github], so you can use it in your 3D game,
+rendering demo, v-tuber avatar, you name it!
+
+If you have any feedback feel free to share on [Discord][raymarch-gamedev-discord].
+
+_Discussions: [Twitter][raymarch-twitter-dance]_
+
+[ferris]: https://rustacean.net/
+[raymarch-twitter]: https://twitter.com/Ray__March
+[raymarch-twitter-dance]: https://twitter.com/Ray__March/status/1523717266730151936
+[raymarch-twitter-360]: https://twitter.com/Ray__March/status/1512907700740444163
+[raymarch-github]: https://github.com/RayMarch
+[raymarch-gamedev-discord]: https://discord.com/channels/676678179678715904/974371568975216700
+
+### RustConf Arcade Cabinet
+
+![arcade cabinet](arcade_cabinet.png)
+
+[Carlo][carlosupina] is building a custom arcade cabinet that will be at
+RustConf 2022 in Portland. It is an opportunity for Rust game developers to
+share their games with the broader community. If you are interested in getting
+your game on the cabinet, read [this Twitter thread][arcade-cabinet-thread] and
+fill out the [interest form][arcade-interest-form].
+All of the parts for the cabinet are currently in production,
+and art for the sides is in progress.
+Check out the latest update [here][arcade-cabinet-update-thread].
+
+[carlosupina]: https://twitter.com/carlosupina
+[arcade-cabinet-thread]: https://twitter.com/carlosupina/status/1523715837726961664
+[arcade-cabinet-update-thread]: https://twitter.com/carlosupina/status/1532717151240323072
+[arcade-interest-form]: https://forms.gle/onFm5fCygdbiArqJ7
+
+## Game Updates
+
+### [Battleship]
+
+![Gameplay demo](battleship.gif)
+
+[Battleship] by [@orhun] is the [battleship game] implemented in Rust.
+
+Features:
+
+- Fully playable between 2 players on the terminal.
+- No installation required.
+- Works over TCP sockets.
+- Very lightweight to host your own server (only has 1 dependency).
+
+[Battleship]: https://github.com/orhun/battleship-rs
+[battleship game]: https://en.wikipedia.org/wiki/Battleship_(game)
+[@orhun]: https://github.com/orhun/
+
+### [ROOM4DOOM][room4doom]
+
+[![A screenshot of gameplay action in ROOM4DOOM.](room4doom.jpg)][room4doom]
+
+[ROOM4DOOM][room4doom] is a rewrite of the classic Doom engine in Rust with some
+modernisation.
+
+[@flukejones][flukejones_twitter] has been very busy in the last 4 months completing
+many parts of ROOM4DOOM; rendering, subsystems for menus, status bar, intermissions,
+and of course the actual gameplay - you can now complete Doom 1 in ROOM4DOOM.
+
+A recent Twitter thread has been cleaned up and expanded into a blog post providing
+context to the project and a walk-through of the history.
+You can view that [here][room4doom_blog].
+
+[room4doom]: https://gitlab.com/flukejones/room4doom
+[flukejones_twitter]: https://twitter.com/flukejones
+[room4doom_blog]: https://ljones.dev/blog/room4doom-20220529/
+
+### [limbo_pass]
+
+![a ghost, stuck in limbo, on a mountain pass](limbo-pass.png)
+
+[limbo_pass] by [@shnewto] is a little 3D walking sim in Bevy that uses
+scenes, meshes, and materials exported directly from Blender.
+
+Features include:
+
+- Blender assets exported to glTF
+- Collision detection with [bevy_rapier3d]
+- Looping audio with [bevy_kira_audio]
+
+For more info, see the [announcement post][limbo_pass_announce] and the
+[gameplay video][limbo_pass_gameplay].
+
+[limbo_pass_announce]: https://twitter.com/shnewto/status/1520897809968340992
+[limbo_pass_gameplay]: https://youtu.be/gxUesnuTBBI
+[limbo_pass]: https://github.com/shnewto/limbo_pass
+[@shnewto]: https://github.com/shnewto/
+[bevy_rapier3d]: https://github.com/dimforge/bevy_rapier
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio
+
+### [Hydrofoil Generation]
+
+![hgs_screen](hgs34.jpg)
+
+[Hydrofoil Generation]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that will put you in the driving seat of modern competitive sailing.
+Hydrofoil Generation is based on a custom made DirectX 11 based engine.
+
+A new [trailer][hgs_trailer] just landed showcasing new animations, the new
+Hong Kong location, and camera modes.
+
+Meanwhile, private beta-testing is well underway with good feedback regarding
+boat controls and physics, netcode, and software stability, Rust for sure
+delivered on all the promises here.
+
+The first set of Sailing rules has also been implemented and part of the
+current beta testing process with more rules to be added in the next months.
+
+Sadly the target Q2 2022 Early Access release on Steam couldn't be hit and
+now the team is aiming at a Q4 2022 release.
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+[hgs_trailer]: https://youtu.be/oFtFdmnkkSI
+
+### Country Slice
+
+![Country_slice_gif](country_slice.gif)
+
+Country Slice (WIP name) is a relaxing building game being made by [@anastasiaopara].
+
+This month, she added an animated undo system. You can find more details in this
+[Twitter thread][country-slice-twitter], and follow the [newsletter][country-slice-newsletter]
+for more updates.
+
+[country-slice-newsletter]: https://dashboard.mailerlite.com/forms/10395/51067704544593017/share
+[country-slice-twitter]: https://twitter.com/anastasiaopara/status/1530473522224582656
+[@anastasiaopara]: https://twitter.com/anastasiaopara
+
+### [Way of Rhea][wor]
+
+[![way of rhea capsule image](wor-capsule.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. You can support development by [wishlisting the game on Steam][wor], and
+[giving feedback][wor-forum] on the Steam demo.
+
+Way of Rhea was selected to be part of the Cerebral Puzzle Showcase! The event
+is over, you can still find the
+[list of games and some of the demos here][wor-cps]. Recent updates:
+
+- More work was done on the [Jungle Biome visuals][wor-jungle]
+- Dynamic gradient overlays were added to the engine to give a sense of depth
+- Fixed bug where Nvidia drivers would incorrectly trigger the crash dump writer
+- Fixed a long-running draw call sorting problem that could lead to popping
+- Fixed an audio failure when unplugging the active speaker
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n34
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-forum]: https://steamcommunity.com/app/1110620/discussions/0/3275817732933009791/
+[wor-cps]: https://store.steampowered.com/sale/CerebralPuzzleShowcase
+[wor-jungle]: https://store.steampowered.com/news/app/1110620?emclan=103582791465120432&emgid=3180116240852440293
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Flying down a mountain"
+    src="veloren.jpg"
+    caption="A glorious flight to distant lands") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In May, work was done on Wyvern models. Smoke was improved from houses, and now
+has different colours and strengths. A rib cage generator was added, so now
+there are large bone structures from ancient times around the world. Level of
+detail objects were added, so trees can now be seen on far-off mountains. This
+makes the world feel significantly more alive. A lot of work was done on the
+performance of the game server, as Veloren has been seeing over 100 concurrent
+players at peak on the server nearly every day for the past few weeks.
+
+Lots of work was done on balancing items and drop rates. Water caves have been
+worked on, which now means that you might need to enter them from underwater.
+Modular weapons were merged, which was a change several months in the making.
+NPCs are now able to pick up items that are on the ground. Work was done on
+taming and mounting various animals. Weather is still in the works, with
+improvements to the ambient SFX system for rain. A new UI concept was created
+for what Airshipper might be able to look like in the future.
+
+May's full weekly devlogs: "This Week In Veloren...":
+[#170][veloren-170],
+[#171][veloren-171],
+[#172][veloren-172],
+[#173][veloren-173],
+[#174][veloren-174].
+
+[veloren]: https://veloren.net
+
+[veloren-170]: https://veloren.net/devblog-170
+[veloren-171]: https://veloren.net/devblog-171
+[veloren-172]: https://veloren.net/devblog-172
+[veloren-173]: https://veloren.net/devblog-173
+[veloren-174]: https://veloren.net/devblog-174
+
+### [Hug With Me?][hug-web]
+
+![Screenshot: one human hugs another](hug.jpg)
+
+[The Hug Game][hug-web] by [the HIHAHEHO Studio][hihaheho]
+is an active ragdoll remote hugging simulator made with Bevy and rapier.
+
+The arms are individually controlled using a keyboard on desktop
+and touch controls on mobile to make various hugs.
+You can click "Random” to play with a random person or “Room”
+to share a link to someone you want to play with.
+
+The source code of the game is [available on GitHub][hug-src].
+
+[hug-web]: https://hug.hihaheho.com
+[hug-src]: https://github.com/Hihaheho/Hug
+[hihaheho]: https://hihaheho.com
+
+### [Combine&Conquer][cnc-logs]
+
+{{ image_figure(
+    alt="Preview: a factory"
+    src="cnc-preview.png"
+    caption="[Connect factories on different planets via spaceships](https://reddit.com/r/IndieDev/comments/uxcc7v/connect_different_planets)",
+    link="https://reddit.com/r/IndieDev/comments/uxcc7v/connect_different_planets") }}
+
+[Combine&Conquer][cnc-itch] by [Martin Buck][@I3ck] is a WIP strategy game
+about automation similar to Satisfactory or Factorio.
+This month's updates include:
+
+- [a new view to see in-flight spaceships][cnc-log-1],
+- [single render node][cnc-log-2],
+- [and the first public prototype release on itch.io][cnc-log-3].
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/uzpojz/cnc)_
+
+[@I3ck]: https://github.com/I3ck
+[cnc-logs]: https://buckmartin.de/combine-and-conquer.html
+[cnc-video]: https://reddit.com/r/IndieDev/comments/uxcc7v/connect_different_planets
+[cnc-itch]: https://martinbucksoftware.itch.io
+[cnc-log-1]: https://buckmartin.de/combine-and-conquer/2022-05-05-ship-view.html
+[cnc-log-2]: https://buckmartin.de/combine-and-conquer/2022-05-04-single-node-notification-bg.html
+[cnc-log-3]: https://buckmartin.de/combine-and-conquer/2022-05-07-itch-io-release.html
+
+## Engine Updates
+
+### [Fyrox]
+
+![Fyroxed](fyrox.png)
+
+[Fyrox] ([Discord][fyrox_discord], [Twitter][fyrox_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-the-box features. In May
+it hit version 0.25 which added a lot of new functionality:
+
+- Static plugin system.
+- User-defined scripts.
+- Play mode for the editor.
+- Animation blending state machine editor.
+- Prefab inheritance improvements.
+- Layout and render transform support for widgets.
+- Shortcuts improvements in the editor.
+- UI performance improvements.
+- Double click support in `fyrox-ui`.
+- Better serializer error recovery.
+- Tons of small improvements and fixes.
+
+Sometime after, the engine hit version 0.26 which was primarily focused on bug fixing,
+but also added some interesting features:
+
+- Project template generator.
+- Script API improvements.
+- Shader cache fixes.
+- Skybox validator.
+
+See full list of changes in respective blog posts - [0.25] and [0.26]. Everybody,
+who wants to learn how to use the engine should check the new
+[2D Platformer Tutorial][platformer_tutorial].
+
+[Fyrox]: https://github.com/FyroxEngine/Fyrox
+[0.25]: https://fyrox.rs/blog/post/feature-highlights-0-25/
+[0.26]: https://fyrox.rs/blog/post/feature-highlights-0-26/
+[fyrox_discord]: https://discord.com/invite/xENF5Uh
+[fyrox_twitter]: https://twitter.com/DmitryNStepanov
+[platformer_tutorial]: https://fyrox-book.github.io/fyrox/tutorials/platformer/part1.html
+
+### [miniquad]
+
+[![diff](miniquad_pr.png)][miniquad-pr]
+
+[miniquad] is a pure Rust, cross-platform graphics library.
+
+[The biggest PR in miniquad's history][miniquad-pr] landed this month, finishing
+the effort of removing all the `sapp` legacy.
+
+Changes include:
+
+- No more `sapp-*` crates. Now it's just one crate, miniquad!
+  No mess with individual crates anymore, no FFI for
+  miniquad - sapp communication.
+- On Linux, miniquad does not depend/statically link with lib*-dev packages.
+  Miniquad can choose between glx/egl, x11/wayland at runtime.
+- MacOS implementation does not depend on any Objective C code anymore.
+
+[miniquad]: https://github.com/not-fl3/miniquad/
+[miniquad-pr]: https://github.com/not-fl3/miniquad/pull/278
+
+### [Dims][dims-website]
+
+[![Video preview: terrain and some red barrels](dims-video-preview.jpg)][dims-video-1]
+
+[Dims][dims-website] ([Twitter][dims-twitter], [Discord][dims-discord],
+[YouTube][dims-youtube]) is a WIP open-world creation platform.
+Some highlights from the project's [latest dev log][dims-post]:
+
+- [A terrain tool](https://youtube.com/watch?v=jgkhsY8aZO8) that allows
+  quick landscape creation while still making sure that the biomes
+  are unique and diverse.
+- [A tool to let creators script gameplay events][dims-video-1]
+  without having ever done any programming.
+- The pre-alpha is now open for a limited time,
+  so [come and try building your own open world games][dims-website]!
+
+Also, a bunch of feature videos and tutorials were
+[uploaded on the YouTube channel][dims-youtube] -
+make sure to take a look if you're interested in Dims.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/v0zij3/were_super_excited),
+[/r/worldbuilding](https://reddit.com/r/worldbuilding/comments/v102hp/what_do_you_think_of_our_world_building_tool)_
+
+[dims-website]: https://dims.co
+[dims-twitter]: https://twitter.com/DimsWorlds
+[dims-discord]: https://discord.gg/Z5CAVmNE57
+[dims-youtube]: https://youtube.com/channel/UCR5gOwS7uSl0a0dl7MLQoqg
+[dims-post]: https://dims.co/post/up-next
+[dims-video-1]: https://youtube.com/watch?v=rKgv38zkey0
+
+## Learning Material Updates
+
+### [Intro to Material/Shaders in Bevy][bevy-materials-playlist]
+
+![Bevy Materials video series thumbnail](bevy-material-series.png)
+
+[Matthew Bryant][matthew-bryant-youtube] has created
+[a series about Bevy's Material abstraction][bevy-materials-playlist],
+showing how to use custom WGSL shaders in Bevy.
+
+The series walks through the documentation to understand why steps are done in
+order to build a clear theoretical understanding of Bevy's high-level abstractions.
+
+- The first of the three videos covers the bare minimum needed
+  to render a material;
+- the second introduces bind groups to use textures and generic data in
+  the shader;
+- and the final video ties into Bevy's ECS to copy game data onto the
+  graphics card every frame.
+
+He will be releasing videos about UI in Bevy and Rapier physics next month.
+
+[bevy-materials-playlist]: https://youtube.com/playlist?list=PLT_D88-MTFOMNRPAC-62Hz096aIjT4Noy
+[matthew-bryant-youtube]: https://youtube.com/channel/UC7v3YEDa603x_84PgCPytzA
+
+### [Kubecon 2022, Lightning Talk: Wasmcloud + Bevy ECS][Lightning-Talk-schedule]
+
+![A picture of speakers](./lightingtalk.jpeg)
+
+[QQparty][alanpoon-qqparty] is a serverless multiplayer game built with Bevy ECS
+and [Wasmcloud][wasmcloud_website].
+
+This month, [@rustropy_gaming][alanpoon_twitter] joined Cosmonic to give
+a series of Wasmcloud talks in Kubecon 2022 VLC. They demonstrated
+how Bevy can be added into Wasmcloud's actors as a serverless
+game server.
+
+You can check out a recording of the talk on [YouTube][Lightning-Talk-youtube],
+as well as viewing the [slides][Lightning-Talk-pdf]. For updates on QQparty,
+follow [@rustropy_gaming][alanpoon_twitter] on Twitter!
+
+[Lightning-Talk-schedule]: https://cloudnativewasmdayeu22.sched.com/event/zgbG/lightning-talk-wasmcloud-bevy-ecs-solution-to-woe-of-indie-game-developers-alan-poon-yong-quan-shopee?iframe=no&w=100%&sidebar=yes&bg=no
+[Lightning-Talk-pdf]: https://static.sched.com/hosted_files/cloudnativewasmdayeu22/3c/lightingtalk-alan_pdf.pdf
+[Lightning-Talk-youtube]: https://youtube.com/watch?v=8q2sPPX5aXY&list=PLj6h78yzYM2Ni0u-ONljTkv4uOutyjwq9&index=3
+[alanpoon-qqparty]: https://github.com/alanpoon/qq_party
+[alanpoon_twitter]: https://twitter.com/rustropy_gaming
+[wasmcloud_website]: https://wasmcloud.dev/
+
+### [Rusteroids][rusteroids-youtube-playlist]
+
+![A screenshot of the latest Rusteroids tutorial](./rusteroids-screenshot.png)
+
+[Rusteroids][rusteroids-github] is a tutorial recreating a clone of Asteroids
+in Rust, using SDL2 and the [Specs][rust-specs-crate] library.
+
+New episodes are released weekly and added to the playlist. Most recently,
+collision detection was added to reset the game state when the asteroid
+and player collide. The latest episode is [here][rusteroids-latest].
+
+You can subscribe to the [YouTube Channel][electrocat-youtube],
+to never miss an episode, or follow [@ecatstudios][ecatstudios-twitter] on
+Twitter!
+
+[rusteroids-youtube-playlist]: https://youtube.com/playlist?list=PLFOS-Gn3aXROnSfl26esPExssd-rQw6jD
+[rusteroids-github]: https://github.com/filtoid/rusteroids
+[rust-specs-crate]: https://docs.rs/specs/latest/specs/
+[rusteroids-latest]: https://youtube.com/watch?v=KTDdlWErmYU&list=PLFOS-Gn3aXROnSfl26esPExssd-rQw6jD&index=9
+[electrocat-youtube]: https://youtube.com/channel/UC1m6P72nySpB3lKWDYGVipw
+[ecatstudios-twitter]: https://twitter.com/ecatstudios
+
+### [Starting a new 2d platformer with Bevy ECS][video-platformer-bevy-ecs]
+
+[![Thumbnail: Hollow Knight screenshot with added Ferrises and Bevy logo](starting-a-new-2d-platformer-with-bevy-ecs.jpg)][video-platformer-bevy-ecs]
+
+[@chrisbiscardi] published a [video][video-platformer-bevy-ecs]
+on setting up a new 2D platformer project using Bevy. The video covers
+integrating with LDTK, Rapier, and becy_ecs_tilemap to get a working
+character controller with collisions in a sandbox. It also touches on
+staple crates such as bevy_asset_loader and iyes_loopless.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/v0keg2/starting_a_new_2d_platformer_with_bevy_ecs),
+[Twitter](https://twitter.com/chrisbiscardi/status/1524008901028421632)_
+
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+[video-platformer-bevy-ecs]: https://youtube.com/watch?v=gjeEYntkvoY
+
+### [Comparing a Voxel Game in F# and Rust][fsharp-rust-voxel]
+
+![Robocave screenshot](robocave.jpg)
+
+[This article][fsharp-rust-voxel] walks through the process of rewriting an F#
+game in Rust. It explores the similarities between the languages and talks
+about using simple code constructs where possible. It talks about the Rust
+crates used to help with the process. Finally, it goes over a conclusion
+comparing the speed of both versions of the games, and the sizes of the
+codebases.
+
+[fsharp-rust-voxel]: https://cragwind.com/blog/posts/comparing-voxel-game-fsharp-rust/
+
+### [Rustacean Station 66: Eric Smith][rustacean-station-66]
+
+![Rustacean Station Logo: rusty Ferris](rustacean-station.jpeg)
+
+In May the [Rustacean Station][rustacean-station] podcast
+[interviewed Eric Smith][rustacean-station-66], the author
+of ["Game Development with Rust and WebAssembly"][wasm-gamedev-book].
+
+In this episode, lots is discussed about
+why Rust is becoming a good language for game development,
+different game engines, is Rust web-ready,
+insights on Rust game development, and Eric's writing process.
+
+[rustacean-station]: https://rustacean-station.org
+[rustacean-station-66]: https://rustacean-station.org/episode/066-eric-smith
+[wasm-gamedev-book]: https://packtpub.com/product/game_development/9781801070973
+[@paytonrules]: https://twitter.com/paytonrules
+
+### [GamesFromScratch: Rust Game Development in 2022][gfs-video]
+
+[![YouTube preview: title](gfs-youtube-preview.jpg)][gfs-video]
+
+[GamesFromScratch shared a YouTube video][gfs-video] with an overview of
+the most popular engines, frameworks, and libraries for Rust game development,
+including: Amethyst, Piston, Bevy, Fyrox, ggez, godot-rust, raylib, SDL2, and SFML.
+
+[gfs-video]: https://youtube.com/watch?v=mLXwR88Dzkc
+
+### New Book: [Multiplayer Game Development in Rust][book-multiplayer]
+
+![Book cover with a MEAP mark](book-multiplayer.png)
+
+The ["Multiplayer Game Development in Rust"][book-multiplayer] book by
+[@Extrawurst] and [@lyonbeckers] is now available in Manning Early Access Program.
+
+> Multiplayer Game Development in Rust teaches you to construct
+> your own multiplayer game. You’ll build a simple game client,
+> but the real work happens on the backend. Chapter-by-chapter,
+> you’ll add scalability, persistence, benchmarking, and tracing
+> to support game features like real-time multiplayer scorekeeping,
+> leader boards, and server-to-client messaging. Along the way,
+> you’ll get pro tips about what makes Rust so great for game development,
+> and you’ll work with state-of-the-art technologies that
+> take full advantage of the cloud. Best of all, everything you learn
+> will apply to any application that requires real-time server technology.
+
+At the moment, 4 of 12 chapters are available:
+
+- Introducing Rust in Games
+- Building a Game Client
+- Building a Game Server
+- Making a Multiplayer Client
+
+The book is estimated to be finished in early 2023.
+
+[book-multiplayer]: https://manning.com/books/multiplayer-game-development-in-rust
+[@Extrawurst]: https://twitter.com/Extrawurst
+[@lyonbeckers]: https://twitter.com/lyonbeckers
+
+### [Audio Libraries Considered Challenging][audio-hard-article]
+
+[@tesselode] shared [an article][audio-hard-article] about
+the difficulties of making audio libraries:
+
+> I develop a game audio library called [Kira].
+> Here's some of the hard parts I've figured out.
+> If you decide to make an audio library for some reason,
+> learn from my experimentation!
+> <...>
+> Making audio libraries is hard. I don't know the best way to do it.
+> This is just what I've tried and how it went for me.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/ur93w8/audio_libraries)_
+
+[audio-hard-article]: https://tesselode.github.io/articles/audio-libraries-considered-challenging
+[Kira]: https://github.com/tesselode/kira
+[@tesselode]: https://twitter.com/tesselode
+
+## Tooling Updates
+
+### [Bloom3D][bloom3d]
+
+[![A screenshot of Bloom3D's interface. A geometric tree is next to a building.](bloom.jpg)][bloom3d]
+
+[Bloom3D](bloom3d) is a minimalist web app for 3D modeling that's built in Rust.
+
+Bloom is powered by a custom game engine called [`koi`](koi) that is open-sourced
+on GitHub.
+
+This month [@kettlecorn][kettlecorn_twitter] released a new version of
+[Bloom3D][bloom3d] that adds a variety of new features including a
+rectangle tool, move tool, and OBJ export.
+Check out the [Twitter announcement thread][bloom_update_twitter] for an overview
+and videos of all the new features.
+
+[bloom3d]: https://bloom3d.com
+[koi]: https://github.com/kettle11/koi
+[kettlecorn_twitter]: https://twitter.com/kettlecorn
+[bloom_update_twitter]: https://twitter.com/kettlecorn/status/1529193509462360065
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor. It will be powered by a
+node graph compositing engine that supercharges your layer stack, providing a
+completely non-destructive editing experience.
+
+- Spring cleaning: The past month's Sprint 15 work has focused mostly on
+  technical debt cleanup, documentation, and bug fixes around the frontend. That
+  continues with the Rust backend next month.
+
+- A radiant gradient: The Gradient tool now supports radial styles in
+  addition to linear.
+
+- New blog post: [Learn about the plans][graphite-blog-post] for
+  distributed computing across many CPUs and GPUs with Graphene, the Rust-based
+  node graph engine and renderer that will power Graphite.
+
+Open the [Graphite editor][graphite-live-demo] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-live-demo]: https://editor.graphite.rs
+[graphite-blog-post]: https://graphite.rs/blog/distributed-computing-in-the-graphene-runtime/
+
+## Library Updates
+
+### [bevy_mod_scripting]
+
+![bevy_mod_scripting logo](logo_bevy_scripting.svg)
+
+[bevy_mod_scripting] by @makspll is a brand new Bevy plugin
+enabling multi-language scripting (currently in Lua and Rhai).
+
+The plugin is in early stages but as of now supports:
+
+- Handling events at multiple points of your stage pipeline.
+- Sending events to specific, or all scripts.
+- Setting event priority to order your callbacks.
+- Defining custom state and APIs at initialization.
+- Sending run-time error events (to for example show them in an in-game console).
+- One-shot scripts.
+
+General Bevy API support is under-way so stay tuned!
+
+[bevy_mod_scripting]: https://github.com/makspll/bevy_mod_scripting
+
+### [bevy_silk]
+
+![bevy_silk logo](bevy_silk.png)
+
+[bevy_silk] by @[ManevilleF] is a cloth physics plugin for Bevy.
+
+Apply cloth physics to any mesh, by adding a single component to your entity!
+
+Features:
+
+- Collision support using [bevy_rapier](https://github.com/dimforge/bevy_rapier)
+- Global and per-entity physics customization
+- Dynamic smooth and flat normals
+- Wind forces
+- Custom cloth anchors
+
+The library is fully documented and the repository provides various usage examples.
+
+_Discussions: [Twitter](https://twitter.com/ManevilleF/status/1527313861199527937)_
+
+[bevy_silk]: https://github.com/ManevilleF/bevy_silk
+[ManevilleF]: https://twitter.com/ManevilleF
+
+### [bevy_asset_loader]
+
+[bevy_asset_loader] by [@nikl_me] is a Bevy plugin that helps with asset
+loading and asset organisation. It greatly reduces boilerplate code for
+loading states and can resolve asset configuration at run time.
+
+This month, version `0.11.0` was released. It supports loading lists of files
+as `Vec<HandleUntyped>` or `Vec<Handle<T>>`. This is an alternative to loading
+folders, which is not supported on the web. You can now track the loading
+progress of your assets with [iyes_progress] and build loading bars.
+Integrating with [iyes_loopless] gives you some benefits of stageless
+scheduling in current Bevy. Additionally, the loading of assets fields
+without attributes was improved. It now uses the `FromWorld` trait
+instead of `Default`.
+
+More improvements will likely follow for the dynamic asset story. One goal
+is to allow loading any custom values as dynamic assets.
+
+[bevy_asset_loader]: https://github.com/NiklasEi/bevy_asset_loader
+[@nikl_me]: https://twitter.com/nikl_me
+[iyes_loopless]: https://github.com/IyesGames/iyes_loopless
+[iyes_progress]: https://github.com/IyesGames/iyes_progress
+
+### [bevy_kira_audio]
+
+[bevy_kira_audio] by [@nikl_me] is an alternative audio
+plugin for Bevy. It uses [Kira] to play and control
+game audio.
+
+This month saw the release of version `0.10.0`. The plugin
+now uses the latest Kira release, which was a major rewrite.
+The audio channel API is improved by making all channels
+resources in Bevy's ECS and sounds can be directly loaded
+from asset files with settings like their volume, playback
+rate, or panning. Additionally, the audio backend can now
+be configured before creation through a settings resource.
+
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio
+[@nikl_me]: https://twitter.com/nikl_me
+[Kira]: https://github.com/tesselode/kira
+
+### [Sparsey]
+
+[Sparsey] by [@LechintanTudor] is a sparse set-based Entity Component System
+with beautiful and concise syntax.
+
+The latest release, 0.8.0, adds some convenience panicking functions for
+borrowing resources and a method for resetting a `World` to its default state
+without having to recreate it.
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+
+### [Notan v0.4][Notan]
+
+[Notan] is a simple and portable layer designed to create your own multimedia
+apps on top of it without worrying about platform-specific code.
+
+The main goal is to provide a set of APIs and tools that can be used to create
+your project in an ergonomic manner without enforcing any structure or pattern,
+always trying to stay out of your way. The idea is that you can use it as a
+foundation layer or backend for your next app, game engine, or game.
+
+The latest version [v0.4] adds [touch support] and fixes some minor bugs.
+
+[Notan]: https://github.com/Nazariglez/notan
+[touch support]: https://nazariglez.github.io/notan-web/examples/input_touches.html
+[v0.4]: https://github.com/Nazariglez/notan/releases/tag/v0.4.0
+
+### [carrier-pigeon]
+
+[carrier-pigeon] by [@MitchellMarinoDev] is a rusty networking library for games.
+It builds on the standard library's TcpStream and UdpSocket types
+and handles all the serialization, sending, receiving, and deserialization.
+This way you can worry about what to send,
+and pigeon will worry about how to send it.
+This also allows you to send and receive different types of messages independently.
+
+[bevy-pigeon] is a Bevy plugin for carrier-pigeon.
+
+[bong][pigeon-bong] is a combination of breakout and pong
+that showcases bevy-pigeon and carrier-pigeon.
+
+[carrier-pigeon]: https://github.com/MitchellMarinoDev/carrier-pigeon
+[bevy-pigeon]: https://github.com/MitchellMarinoDev/bevy-pigeon
+[pigeon-bong]: https://github.com/MitchellMarinoDev/bong
+[@MitchellMarinoDev]: https://github.com/MitchellMarinoDev
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+- [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
+  - [#124 "Wanted: a good JPEG 2000 decoder for Rust"](https://github.com/rust-gamedev/wg/issues/124).
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - After the initial release of [BITGUN], [LogLogGames] released a
+    [bunch of updates packed with various bugfixes and improvements][bitgun-news].
+  - [Gravity Well](https://github.com/thebracket/gravity_well)
+    is a simple two-player (shared keyboard) game in which
+    you collect salvage and try not to fall into a black hole
+    that can be played online [here](https://bfnightly.bracketproductions.com/gravity_well).
+  - [Flesh](https://store.steampowered.com/app/1660850/Flesh)
+    got a [new enemy type](https://twitter.com/Im_Oab/status/1523210359045206017),
+    new [UI's fade in/out](https://twitter.com/Im_Oab/status/1525249464562491393),
+    and [damage animation for enemies](https://twitter.com/Im_Oab/status/1529400914364465153).
+  - [Grocery Bagger 9000](https://reddit.com/r/rust_gamedev/comments/uxz0oz/grocery_bagger)
+    is a WIP Tetris-like puzzler built with Bevy.
+- Other tooling updates:
+  - [clymene] by [@LukeRaccoon] is a CLI atlas generation tool
+    that doesn't just outputs a packed image, but also a data set
+    about its sources, which can be either static images or animations.
+- Other learning material updates:
+  - The Unofficial Bevy Cheatbook by got
+    [a WIP chapter about rendering][bevy-book-gpu].
+  - [@scvalex] shared a [blog post](https://scvalex.net/posts/63)
+    about how the NixOS flake for Rust/egui/eframe/glutin/OpenGL
+    [looks like](https://gitlab.com/scvalex/sixty-two/-/tree/flake-blogpost).
+  - [@ychshn] shared a live-stream recording
+    ["Let's Code Snake with Rust and WASM"](https://youtu.be/iR7Q_6quwSI).
+  - PhaestusFox added a bunch of new videos
+    to their ["Bevy Basics"][bevy-basics] YouTube series.
+- Other library updates:
+  - [mmap_cache](https://crates.io/crates/mmap-cache) is a low-level API
+    for a memory-mapped cache of a read-only key-value store.
+  - [crevice v0.10](https://github.com/LPGhatguy/crevice/blob/main/CHANGELOG.md#0100---2022-05-26)
+    brings mint integration and a couple of API improvements.
+  - [glyphon](https://crates.io/crates/glyphon) provides
+    a simple way to render 2D text with wgpu.
+  - [egui 0.18](https://reddit.com/r/rust/comments/ugefgv/egui_018) was released,
+    with the ability to embed 3D inside egui, table and date picker widgets,
+    better text contrast in bright mode, and more.
+  - Following the release of egui v0.18,
+    [bevy_egui 0.14](https://twitter.com/penicillin_duck/status/1520703733755166720)
+    and [puffin_egui 0.15.0](https://twitter.com/ernerfeldt/status/1524368923931590657)
+    were published.
+  - [bevy_puffin] integrates the [puffin] instrumentation profiler with Bevy.
+  - [bevy_rosc] integrates [rosc] - an Open Sound Control library - into Bevy.
+  - [bustsuri](https://github.com/NemuiSen/bustsuri) is a Bevy asset
+    that provides 2D collision detector and kinematics.
+  - The Bevy engine [started collaborating][sprawl-reddit] with [@dioxuslabs]
+    on a flexible, high-performance, cross-platform UI layout library
+    [sprawl](https://github.com/DioxusLabs/sprawl)
+    (based on abandoned [stretch](https://github.com/vislyhq/stretch)).
+
+[BITGUN]: https://store.steampowered.com/app/1673940/BITGUN
+[bitgun-news]: https://store.steampowered.com/news/app/1673940
+[LogLogGames]: https://loglog.games
+[clymene]: https://github.com/lucas-miranda/clymene
+[@LukeRaccoon]: https://twitter.com/LukeRaccoon
+[bevy-book-gpu]: https://bevy-cheatbook.github.io/gpu/intro.html
+[@scvalex]: https://twitter.com/scvalex
+[@ychshn]: https://twitter.com/ychshn
+[bevy-basics]: https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[bevy_puffin]: https://github.com/mvlabat/bevy_puffin
+[puffin]: https://github.com/EmbarkStudios/puffin
+[bevy_rosc]: https://github.com/DrLuke/bevy_rosc
+[rosc]: https://github.com/klingtnet/rosc
+[@dioxuslabs]: https://twitter.com/dioxuslabs
+[sprawl-reddit]: https://reddit.com/r/rust/comments/umwjt4/bevy_and_dioxus_are_collaborating_on_stretch2
+
+## Discussions
+
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/):
+  - ["Choosing a networking library for my game"][r-gamedev-networking]
+
+[r-gamedev-networking]: https://reddit.com/r/rust_gamedev/comments/ujk2s6/choosing_a_networking_library_for_my_game/
+[gamedev-wg-jpeg]: https://github.com/rust-gamedev/wg/issues/124
+
+## Requests for Contribution
+
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[graphite-contribute]: https://github.com/GraphiteEditor/Graphite/issues/202
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+- [DIMS](https://dims.co/jobs)
+  (Stockholm/Remote): Various roles, open applications accepted.
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote): Various roles, open applications accepted.
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/v7xxr7/this_month_in_rust_gamedev_34),
+[Twitter](https://twitter.com/rust_gamedev/status/1534619187477467138),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/034/lightingtalk.jpeg b/content/news/034/lightingtalk.jpeg
new file mode 100644
index 000000000..efe997956
Binary files /dev/null and b/content/news/034/lightingtalk.jpeg differ
diff --git a/content/news/034/limbo-pass.png b/content/news/034/limbo-pass.png
new file mode 100644
index 000000000..4a0b6f34d
Binary files /dev/null and b/content/news/034/limbo-pass.png differ
diff --git a/content/news/034/logo_bevy_scripting.svg b/content/news/034/logo_bevy_scripting.svg
new file mode 100644
index 000000000..df6661e41
--- /dev/null
+++ b/content/news/034/logo_bevy_scripting.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg viewBox="90.444 233.801 224.023 67.153" xmlns="http://www.w3.org/2000/svg">
+  <defs>
+    <radialGradient id="a" cx="14.288" cy="68.873" r="11.69" gradientTransform="matrix(1.3993 -2.2344e-7 8.1962e-8 .51326 4.3651 4.8393)" gradientUnits="userSpaceOnUse">
+      <stop stop-opacity=".32673" offset="0"/>
+      <stop stop-opacity="0" offset="1"/>
+    </radialGradient>
+    <linearGradient id="b" x1="-34.312" x2="-23.631" y1="2.0445" y2="48.846" gradientUnits="userSpaceOnUse">
+      <stop stop-color="#184375" offset="0"/>
+      <stop stop-color="#c8bddc" offset="1"/>
+    </linearGradient>
+  </defs>
+  <g transform="matrix(0.118858, 0, 0, 0.118858, 85.877266, 193.091797)" style="">
+    <g fill="#594A42">
+      <path d="m1227.8 605.5l-447.59-258.42c-18.576-10.725-33.775-1.95-33.775 19.5v516.83c0 21.45 15.199 30.225 33.775 19.5l447.59-258.42c18.576-10.725 18.576-28.275 0-39z" style="paint-order: fill; fill: rgb(0, 1, 122);"/>
+    </g>
+  </g>
+  <g transform="matrix(1.032398, -0.046021, 0.042888, 0.962162, 168.666321, 246.232483)" style="">
+    <path transform="matrix(1.1864 0 0 1.1864 -4.5397 -7.7947)" d="m44.286 38.714a19.929 9.8372 0 1 1 -39.857 0 19.929 9.8372 0 1 1 39.857 0z" fill="url(#a)" fill-rule="evenodd"/>
+    <path d="m22.7 0.94747c-0.47318 0.03238-0.93309 0.10566-1.3978 0.15885h-0.03177l-1.1119 6.068c-1.8124 0.41274-3.5174 1.1132-5.0513 2.065l-4.9878-3.5899c-1.3483 1.0468-2.5753 2.2677-3.6535 3.5899l3.4629 5.0513c-1.0514 1.6068-1.8421 3.4415-2.2874 5.369-8e-5 0.00911-6e-5 0.03018 0 0.03177l-6.0362 0.95308c-0.11036 0.90137-0.15885 1.8329-0.15885 2.7639 0 0.76175 0.02103 1.5133 0.09531 2.2556l6.0362 1.0802c0.4293 2.0962 1.2448 4.0538 2.3827 5.782l-3.5899 4.9242c1.0281 1.2764 2.2151 2.4385 3.4946 3.4629l5.0831-3.4946c1.7765 1.1332 3.7596 1.9279 5.9091 2.3192l0.95308 6.0044c0.67725 0.06165 1.3718 0.06354 2.065 0.06354 0.97869 0 1.9135-0.03709 2.8592-0.15885l1.1437-6.1315c2.0409-0.5079 3.9582-1.389 5.6232-2.5733l4.8925 3.5582c1.2688-1.0794 2.429-2.3202 3.4311-3.6535l-3.5582-5.1466c0.96361-1.6642 1.6313-3.5004 1.9697-5.4643l6.0044-0.95308c0.05266-0.62659 0.06354-1.2343 0.06354-1.8744 0-1.1124-0.12929-2.2031-0.28592-3.2722l-6.0997-1.1119c-0.47801-1.7651-1.2623-3.4119-2.2556-4.8925l3.5899-4.9242c-1.1128-1.3608-2.3821-2.618-3.7806-3.6852l-5.1784 3.5582c-1.4883-0.88023-3.09-1.5556-4.8289-1.9379l-0.95308-6.0362c-0.86748-0.10204-1.7421-0.15885-2.6369-0.15885-0.24183 0-0.49071-0.00761-0.7307 0-0.11699 0.00371-0.23277-0.00681-0.34946 0h-0.09531zm0.826 15.44c0.11606-0.00589 0.23194 0 0.34946 0 3.7606 0 6.8304 3.0698 6.8304 6.8304s-3.0698 6.7986-6.8304 6.7986-6.7986-3.038-6.7986-6.7986c0-3.6431 2.8512-6.6478 6.4492-6.8304z" fill="url(#b)" stroke="#3f4561" stroke-linecap="round" stroke-linejoin="round"/>
+    <path transform="matrix(.6166 0 0 .6166 9.382 8.5397)" d="m36.239 23.782a12.728 12.728 0 1 1 -25.456 0 12.728 12.728 0 1 1 25.456 0z" fill="none" opacity=".64773" stroke="#fff" stroke-width="1.6218"/>
+    <path d="m21.996 2.1485-0.89278 5.8751c-1.6988 0.38687-4.8236 1.5701-6.2614 2.4622l-4.7497-3.5451c-1.2638 0.9812-1.3505 1.0477-2.3611 2.2871l3.4342 5.0932c-0.98553 1.5061-2.1693 4.19-2.5943 6.1079l-6.0178 1.0144c-0.10344 0.84488-0.05373 2.6532 0.01589 3.349l5.7482 1.0355c0.40239 1.9648 1.9082 5.1274 2.9748 6.7473l-3.635 4.8026c0.9637 1.1964 1.1566 1.3059 2.3559 2.266l4.8606-3.561c1.6651 1.0622 4.9703 2.3544 6.9851 2.7211l0.79773 5.8011c0.63481 0.05778 2.3885 0.21988 3.275 0.10575l0.89278-6.0389c1.913-0.47607 5.2185-1.8329 6.7791-2.943l4.8554 3.5082c1.1892-1.0118 1.1999-1.1642 2.1392-2.414l-3.598-5.1143c0.90322-1.5599 2.0711-4.6106 2.3883-6.4515l5.891-0.97744c0.04935-0.58732 0.05176-2.2252-0.09506-3.2273l-6.0019-1.0355c-0.44805-1.6545-1.9857-4.6358-2.9167-6.0236l3.8147-4.8026c-1.043-1.2756-1.4308-1.4506-2.7416-2.451l-5.0244 3.598c-1.395-0.82506-4.1769-2.0828-5.8069-2.4412l-0.88759-5.7482c-0.81311-0.09565-3.159-0.05317-3.6237 0z" fill="none" opacity=".34659" stroke="#fff"/>
+    <path d="m10.1029,6.29707c-1.34833,1.0468-1.93726,1.67486-3.01543,2.99713l3.40246,4.96496c-1.05142,1.5986-2.1583,4.16696-2.34754,5.72855l-6.0625,1.04419c-.06897.56336-.17364,1.8529-.17364,1.8529l.17678,1.5625c.42773.08833.84016.17051 1.28125.21875l.5-1.53125c.34404.02848.67965.0625 1.03125.0625s.71846-.03383 1.0625-.0625l.46875,1.53125c.44129-.04824.88477-.13042 1.3125-.21875v-1.5625c.68576-.15962 1.332-.38776 1.96875-.65625l.9375,1.28125c.40235-.18209.7756-.37582 1.15625-.59375l-.5-1.5c.59723-.36225 1.16175-.79535 1.6875-1.25l1.28125.9375c.32564-.29658.64111-.61186.9375-.9375l-.9375-1.25c.45485-.52575.8565-1.08988 1.21875-1.6875l1.5.46875c.21793-.38085.44329-.75409.625-1.15625l-1.28125-.9375c.26849-.63675.46499-1.28299.625-1.96875h1.59375c.08833-.42773.13946-.87121.1875-1.3125l-1.5-.46875c.02886-.34385.0625-.7111.0625-1.0625s-.03402-.68701-.0625-1.03125l1.5-.46875c-.04555-.41989-.10559-.842-.1875-1.25-1.14743.3993-2.55266,1.15312-3.56851,1.78347l-4.88036-3.52746z" fill="#fff" opacity=".5"/>
+    <path d="m37.23664,17.21775c-.38378.18138-.74664.38575-1.11341.59554l.56965,1.73484c-.69709.4223-1.35473.91969-1.96788,1.45002l-1.47591-1.08751c-.38009.3459-.74177.70758-1.08751,1.08751l1.08751,1.47591c-.53033.61331-1.02755,1.27094-1.45002,1.96788l-.54376-.18125c-.04768.70028-.23638,1.36149-.51786,1.96788l.10357.07768c-.31316.74268-.56455,1.5304-.7509,2.33038h-1.47591c-.13628.08545-.27055.18506-.41429.25893-.07837.41527-.13491.81733-.18125,1.24287l1.76073.56965c-.03339.40128-.05179.8072-.05179,1.21698s.0184.8157.05179,1.21698l-1.76073.56965c.05602.51476.12999,1.02867.23304,1.5277l1.83841-.02589c.12812.54999.30307,1.10744.49197,1.63127 .74492-.28728 1.47383-.63018 2.14913-1.03572-.41159-1.21604-.64733-2.52911-.64733-3.88397 0-5.19793 3.29238-9.63666 7.8974-11.34119l-1.08751-.18125c-.22279-.82266-.51132-1.62859-.88037-2.38217-.01085-.02216-.01492-.05558-.02589-.07768l-.05179-.05179-.69911-.67322z" fill="#fff" opacity=".5"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/content/news/034/miniquad_pr.png b/content/news/034/miniquad_pr.png
new file mode 100644
index 000000000..c463240aa
Binary files /dev/null and b/content/news/034/miniquad_pr.png differ
diff --git a/content/news/034/raymarch_ferris_3d.jpg b/content/news/034/raymarch_ferris_3d.jpg
new file mode 100644
index 000000000..7941e78c4
Binary files /dev/null and b/content/news/034/raymarch_ferris_3d.jpg differ
diff --git a/content/news/034/robocave.jpg b/content/news/034/robocave.jpg
new file mode 100644
index 000000000..3455950a0
Binary files /dev/null and b/content/news/034/robocave.jpg differ
diff --git a/content/news/034/room4doom.jpg b/content/news/034/room4doom.jpg
new file mode 100644
index 000000000..e4c3cc609
Binary files /dev/null and b/content/news/034/room4doom.jpg differ
diff --git a/content/news/034/rustacean-station.jpeg b/content/news/034/rustacean-station.jpeg
new file mode 100644
index 000000000..4900c38db
Binary files /dev/null and b/content/news/034/rustacean-station.jpeg differ
diff --git a/content/news/034/rusteroids-screenshot.png b/content/news/034/rusteroids-screenshot.png
new file mode 100644
index 000000000..613e4883a
Binary files /dev/null and b/content/news/034/rusteroids-screenshot.png differ
diff --git a/content/news/034/starting-a-new-2d-platformer-with-bevy-ecs.jpg b/content/news/034/starting-a-new-2d-platformer-with-bevy-ecs.jpg
new file mode 100644
index 000000000..d4f5ff1c0
Binary files /dev/null and b/content/news/034/starting-a-new-2d-platformer-with-bevy-ecs.jpg differ
diff --git a/content/news/034/veloren.jpg b/content/news/034/veloren.jpg
new file mode 100644
index 000000000..3ab479181
Binary files /dev/null and b/content/news/034/veloren.jpg differ
diff --git a/content/news/034/wor-capsule.jpg b/content/news/034/wor-capsule.jpg
new file mode 100644
index 000000000..446f37e6a
Binary files /dev/null and b/content/news/034/wor-capsule.jpg differ
diff --git a/content/news/035/Quoridor-screenshot.png b/content/news/035/Quoridor-screenshot.png
new file mode 100644
index 000000000..026faa907
Binary files /dev/null and b/content/news/035/Quoridor-screenshot.png differ
diff --git a/content/news/035/aaron.png b/content/news/035/aaron.png
new file mode 100644
index 000000000..e70629a1d
Binary files /dev/null and b/content/news/035/aaron.png differ
diff --git a/content/news/035/arcade_cabinet.jpg b/content/news/035/arcade_cabinet.jpg
new file mode 100644
index 000000000..abae70e40
Binary files /dev/null and b/content/news/035/arcade_cabinet.jpg differ
diff --git a/content/news/035/botnet.svg b/content/news/035/botnet.svg
new file mode 100644
index 000000000..e795fb6d0
--- /dev/null
+++ b/content/news/035/botnet.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 143.8 143.8"><defs><style>.cls-1{fill:#6552e9;}.cls-2{fill:#fff;}.cls-3{fill:#5745d7;}.cls-4{stroke-miterlimit:10;}.cls-4,.cls-5,.cls-6{fill:#333;}.cls-4,.cls-6{stroke:#333;}.cls-7{fill:#4839b6;}.cls-8{fill:#464646;}.cls-6{fill-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px;}.cls-9{fill:#7f6ef3;}.cls-10{fill:#191919;}.cls-11{fill:#545454;}</style></defs><g id="Rust"><circle class="cls-2" cx="71.89" cy="71.81" r="62.63"/><path class="cls-4" d="M71.9,6.33C35.75,6.33,6.33,35.76,6.33,71.9s29.44,65.57,65.57,65.57,65.57-29.44,65.57-65.57S108.04,6.33,71.9,6.33Zm-.22,5.82s.08,0,.13,0c2.33,.06,4.19,1.97,4.19,4.31,0,2.38-1.93,4.31-4.31,4.31s-4.31-1.93-4.31-4.31c0-2.38,1.93-4.32,4.31-4.32ZM15.93,55.51c0-2.38,1.93-4.32,4.31-4.32,.04,0,.08,0,.13,0,2.33,.07,4.19,1.98,4.19,4.31,0,2.38-1.93,4.31-4.32,4.31-2.38,0-4.31-1.93-4.31-4.31Zm23.8,65.06c-2.38,0-4.31-1.93-4.31-4.31,0-2.38,1.93-4.32,4.31-4.32,.04,0,.08,0,.13,0,2.33,.07,4.19,1.98,4.19,4.31,0,2.38-1.93,4.31-4.31,4.31Zm63.88,.19c-2.38,0-4.31-1.93-4.31-4.31,0-2.38,1.93-4.32,4.31-4.32,.04,0,.08,0,.13,0,2.33,.07,4.19,1.98,4.19,4.31,0,2.38-1.93,4.31-4.31,4.31Zm21.24-45.7c-.35,10.16-4.68,19.46-10.2,27.89-1.5,2.01-3.14,3.91-4.91,5.69l-9.11-1.96c-2.12-.46-4.22,.9-4.67,3.02l-2.16,10.1c-14.08,6.38-30.25,6.3-44.27-.21l-2.16-10.1c-.46-2.12-2.54-3.48-4.66-3.02l-8.92,1.91c-1.66-1.71-3.19-3.52-4.61-5.44-3.77-5.57-6.46-10.52-8.34-16.97-1.87-6.58-2.46-13.46-1.72-20.27l9.29-4.13c1.98-.89,2.89-3.2,2-5.19l-1.91-4.31h0c-.84-1.42-1.38-3.39-2.8-4.81,1.83-4.59,3.83-8.06,7.04-11.66,7.75-8.47,18.03-14.21,29.32-16.35l6.64,6.96c1.5,1.57,3.98,1.64,5.55,.12l7.44-7.09c15.33,2.87,28.62,12.34,36.35,25.89l-5.09,11.49c-.87,1.98,.03,4.31,2,5.2l9.79,4.34c.29,2.95,.33,5.93,.13,8.89Zm-1.75-15.05c-2.38,0-4.31-1.93-4.31-4.31,0-2.38,1.93-4.32,4.31-4.32,.04,0,.08,0,.13,0,2.33,.07,4.19,1.98,4.19,4.31,0,2.38-1.93,4.31-4.31,4.31Z"/><path class="cls-6" d="M133.81,71.9c0,34.19-27.72,61.91-61.91,61.91S9.99,106.1,9.99,71.9h0c0-34.19,27.72-61.91,61.91-61.91s61.91,27.72,61.91,61.91h0Zm-1.17-5.98l9.66,5.98-9.66,5.98,8.3,7.75-10.63,3.98,6.63,9.23-11.22,1.83,4.72,10.35-11.36-.4,2.61,11.07-11.07-2.61,.4,11.36-10.35-4.72-1.83,11.22-9.23-6.63-3.98,10.63-7.75-8.3-5.98,9.66-5.98-9.66-7.75,8.3-3.98-10.63-9.23,6.63-1.83-11.22-10.35,4.72,.4-11.36-11.07,2.61,2.61-11.07-11.36,.4,4.72-10.35-11.22-1.83,6.63-9.23-10.63-3.98,8.3-7.75-9.66-5.98,9.66-5.98-8.3-7.75,10.63-3.98-6.63-9.23,11.22-1.83-4.72-10.35,11.36,.4-2.61-11.07,11.07,2.61-.4-11.36,10.35,4.72,1.83-11.22,9.23,6.63,3.98-10.63,7.75,8.3,5.98-9.66,5.98,9.66,7.75-8.3,3.98,10.63,9.23-6.63,1.83,11.22,10.35-4.72-.4,11.36,11.07-2.61-2.61,11.07,11.36-.4-4.72,10.35,11.22,1.83-6.63,9.23,10.63,3.98-8.3,7.75Z"/></g><g id="Layer_2"><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_68_FILL"><path class="cls-11" d="M89.08,106.87l15.3,4.1c3.37,.8,6.08,.48,8.15-.95l-15.45-4.15c-2.03,1.43-4.7,1.77-8,1m27.2-3.05l.8-2.9-15.45-4.15-.8,2.9,15.45,4.15m.7-22.9c-1.07-.77-2.43-1.37-4.1-1.8l-14.7-3.95c1.3,.4,2.42,.95,3.35,1.65,1.17,.8,2.02,1.78,2.55,2.95l15.45,4.15c-.53-1.17-1.38-2.17-2.55-3m1.9,13.25l.8-2.9-15.45-4.15-.8,2.9,15.45,4.15Z"/><path class="cls-5" d="M101.53,76.82c-.93-.7-2.05-1.25-3.35-1.65l-15.55-4.2c-6.47-1.7-10.55,.63-12.25,7l-3.4,12.7c-1.7,6.4,.68,10.45,7.15,12.15l14.95,4.05c3.3,.77,5.97,.43,8-1,1.73-1.2,2.98-3.25,3.75-6.15v-.05l.8-2.9,1.8-6.75,.8-2.9v-.1c.77-2.87,.72-5.28-.15-7.25-.53-1.17-1.38-2.15-2.55-2.95m-5.25,2.95c.9,.3,1.65,.65,2.25,1.05l.05,.05c1.13,1.07,1.4,2.68,.8,4.85l-3.4,12.7c-.8,3.03-2.68,4.23-5.65,3.6l-14.95-4.05c-3.23-.87-4.42-2.88-3.55-6.05l3.4-12.7c.87-3.17,2.92-4.32,6.15-3.45l14.9,4Z"/><path class="cls-10" d="M98.53,80.82c-.6-.4-1.35-.75-2.25-1.05l-14.9-4c-3.23-.87-5.28,.28-6.15,3.45l-3.4,12.7c-.87,3.17,.32,5.18,3.55,6.05l14.95,4.05c2.97,.63,4.85-.57,5.65-3.6l3.4-12.7c.6-2.17,.33-3.78-.8-4.85l-.05-.05Z"/><path class="cls-8" d="M117.08,100.92l1.8-6.75-15.45-4.15-1.8,6.75,15.45,4.15m-.8,2.95v-.05l-15.45-4.15v.05c-.77,2.9-2.02,4.95-3.75,6.15l15.45,4.15c1.73-1.2,2.98-3.25,3.75-6.15m3.4-12.7c.77-2.87,.72-5.28-.15-7.25l-15.45-4.15c.87,1.97,.92,4.38,.15,7.25v.1l15.45,4.15v-.1Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_69_FILL"><path class="cls-1" d="M85.58,33.37c-1.57-1.9-4.02-2.9-7.35-3H34.98c-.5,0-.97,.03-1.4,.1-5.33,.63-8,3.93-8,9.9v2.5c.07-2.1,.48-3.83,1.25-5.2,.9-1.77,2.35-2.98,4.35-3.65,.4-.13,.8-.25,1.2-.35s.8-.17,1.2-.2c.43-.07,.9-.1,1.4-.1h50.6m29,9.65c-.1-4.77-1.95-7.77-5.55-9-1.27-.43-2.75-.65-4.45-.65h-19c1.27,1.6,1.93,3.8,2,6.6v44.8c-.13,6.2-3.25,9.4-9.35,9.6h26.35c6.53,0,9.87-3.2,10-9.6V43.02Z"/><path class="cls-3" d="M87.58,39.97c-.07-2.8-.73-5-2-6.6H34.98c-.5,0-.97,.03-1.4,.1-.4,.03-.8,.1-1.2,.2s-.8,.22-1.2,.35c-2,.67-3.45,1.88-4.35,3.65-.77,1.37-1.18,3.1-1.25,5.2v41.9c.13,5.7,2.8,8.87,8,9.5,.43,.07,.9,.1,1.4,.1h43.25c6.1-.2,9.22-3.4,9.35-9.6V39.97Z"/><path class="cls-9" d="M109.03,34.02c3.6,1.23,5.45,4.23,5.55,9v-2.65c0-6.67-3.33-10-10-10h-26.35c3.33,.1,5.78,1.1,7.35,3h19c1.7,0,3.18,.22,4.45,.65Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_70_FILL"><path class="cls-2" d="M111.63,57.42c-.7-.67-1.52-1-2.45-1h-.1c-.93,0-1.75,.33-2.45,1-.67,.7-1,1.53-1,2.5s.33,1.78,1,2.45c.7,.7,1.52,1.05,2.45,1.05h.1c.93,0,1.75-.35,2.45-1.05,.67-.67,1-1.48,1-2.45s-.33-1.8-1-2.5Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_71_FILL"><path class="cls-2" d="M94.08,56.42c-.93,0-1.75,.33-2.45,1-.67,.7-1,1.53-1,2.5s.33,1.78,1,2.45c.7,.7,1.52,1.05,2.45,1.05h.1c.93,0,1.75-.35,2.45-1.05,.67-.67,1-1.48,1-2.45s-.33-1.8-1-2.5c-.7-.67-1.52-1-2.45-1h-.1Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_72_FILL"><path class="cls-3" d="M106.63,70.42v-5h-9v5h9Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_73_FILL"><path class="cls-7" d="M72.63,46.42h-3v20h3v-20m-5,0h-3v20h3v-20m10,0h-3v20h3v-20Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_74_MEMBER_0_FILL"><path class="cls-11" d="M64.63,103.22l15.3-4.1c3.37-.97,5.58-2.58,6.65-4.85l-15.45,4.15c-1.07,2.23-3.23,3.83-6.5,4.8m19.45-25.9l-.8-2.9-15.45,4.15,.8,2.9,15.45-4.15m2.6,9.65l-.8-2.9-15.45,4.15,.8,2.9,15.45-4.15m-10.85-20.1c-1.3-.13-2.77,0-4.4,.4l-15.3,4.1c1.57-.37,2.98-.5,4.25-.4,1.43,.17,2.68,.63,3.75,1.4l15.45-4.15c-1.07-.77-2.32-1.22-3.75-1.35Z"/><path class="cls-8" d="M84.08,77.32l-15.45,4.15,1.8,6.75,15.45-4.15-1.8-6.75m-.8-2.9v-.1c-.77-2.87-2-4.9-3.7-6.1l-15.45,4.15c1.7,1.2,2.93,3.23,3.7,6.1v.1l15.45-4.15m3.4,12.6v-.05l-15.45,4.15v.05c.77,2.9,.73,5.32-.1,7.25l15.45-4.15c.83-1.93,.87-4.35,.1-7.25Z"/><path class="cls-5" d="M60.38,70.97c-1.27-.1-2.68,.03-4.25,.4l-25.6,6.9c-6.43,1.7-8.8,5.73-7.1,12.1l3.4,12.7c1.7,6.4,5.77,8.75,12.2,7.05l25.6-6.9c3.27-.97,5.43-2.57,6.5-4.8,.83-1.93,.87-4.35,.1-7.25v-.05l-.8-2.9-1.8-6.75-.8-2.9v-.1c-.77-2.87-2-4.9-3.7-6.1-1.07-.77-2.32-1.23-3.75-1.4m-3.05,5.25c.97-.23,1.8-.32,2.5-.25h.1c1.47,.37,2.5,1.63,3.1,3.8l3.4,12.7c.8,3.03-.23,5.02-3.1,5.95l-25.6,6.9c-.4,.1-.77,.17-1.1,.2-2.57,.27-4.22-.98-4.95-3.75l-3.4-12.7c-.73-2.73,.07-4.6,2.4-5.6,.33-.17,.7-.3,1.1-.4l25.55-6.85Z"/><path class="cls-10" d="M59.83,75.97c-.7-.07-1.53,.02-2.5,.25l-25.55,6.85c-.4,.1-.77,.23-1.1,.4-2.33,1-3.13,2.87-2.4,5.6l3.4,12.7c.73,2.77,2.38,4.02,4.95,3.75,.33-.03,.7-.1,1.1-.2l25.6-6.9c2.87-.93,3.9-2.92,3.1-5.95l-3.4-12.7c-.6-2.17-1.63-3.43-3.1-3.8h-.1Z"/></g></g><g transform="matrix( 1, 0, 0, 1, 0,0) "><g id="Layer0_74_MEMBER_1_FILL"><path class="cls-11" d="M41.63,96.52c.37-1.13,.38-2.37,.05-3.7-.37-1.33-1-2.38-1.9-3.15-.9-.73-1.82-.98-2.75-.75-.9,.27-1.6,.95-2.1,2.05-.37,1.13-.37,2.37,0,3.7,.33,1.33,.95,2.38,1.85,3.15,.97,.77,1.9,1.02,2.8,.75,.93-.23,1.62-.92,2.05-2.05m12.6-7.05c.33,1.33,.97,2.4,1.9,3.2,.93,.73,1.85,.98,2.75,.75,.93-.27,1.62-.95,2.05-2.05,.4-1.13,.43-2.37,.1-3.7-.37-1.33-1.02-2.38-1.95-3.15-.9-.77-1.82-1.02-2.75-.75-.9,.23-1.58,.92-2.05,2.05-.4,1.1-.42,2.32-.05,3.65m-9.6-1.05c-.4,1.1-.42,2.32-.05,3.65,.33,1.33,.97,2.4,1.9,3.2,.93,.73,1.85,.98,2.75,.75,.93-.27,1.62-.95,2.05-2.05,.37-1.13,.38-2.37,.05-3.7-.37-1.33-1-2.38-1.9-3.15-.9-.77-1.82-1.02-2.75-.75-.9,.23-1.58,.92-2.05,2.05Z"/></g></g><path class="cls-2" d="M30.22,38.22h2.95l2.02,10.74h.04l2.42-10.74h2.76l2.19,10.87h.04l2.3-10.87h2.9l-3.76,15.78h-2.93l-2.17-10.74h-.06l-2.32,10.74h-2.99l-3.39-15.78Zm20.95,0h4.66l4.63,15.78h-3.05l-1.01-3.51h-5.31l-.78,3.51h-2.97l3.82-15.78Zm1.77,3.89l-1.29,5.79h4.01l-1.48-5.79h-1.24Z"/></g></svg>
diff --git a/content/news/035/brontefyme.png b/content/news/035/brontefyme.png
new file mode 100644
index 000000000..201a254e9
Binary files /dev/null and b/content/news/035/brontefyme.png differ
diff --git a/content/news/035/chimera_rancher.png b/content/news/035/chimera_rancher.png
new file mode 100644
index 000000000..5d896b6d5
Binary files /dev/null and b/content/news/035/chimera_rancher.png differ
diff --git a/content/news/035/dims-recreating-rhodes.jpg b/content/news/035/dims-recreating-rhodes.jpg
new file mode 100644
index 000000000..25762bca6
Binary files /dev/null and b/content/news/035/dims-recreating-rhodes.jpg differ
diff --git a/content/news/035/fileopen.gif b/content/news/035/fileopen.gif
new file mode 100644
index 000000000..4536c87ca
Binary files /dev/null and b/content/news/035/fileopen.gif differ
diff --git a/content/news/035/gamedev-meetup.png b/content/news/035/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/035/gamedev-meetup.png differ
diff --git a/content/news/035/graphite.png b/content/news/035/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/035/graphite.png differ
diff --git a/content/news/035/hgs_35.jpg b/content/news/035/hgs_35.jpg
new file mode 100644
index 000000000..319ddd15c
Binary files /dev/null and b/content/news/035/hgs_35.jpg differ
diff --git a/content/news/035/hho_summer.png b/content/news/035/hho_summer.png
new file mode 100644
index 000000000..1cc6392d5
Binary files /dev/null and b/content/news/035/hho_summer.png differ
diff --git a/content/news/035/index.md b/content/news/035/index.md
new file mode 100644
index 000000000..e912e5e85
--- /dev/null
+++ b/content/news/035/index.md
@@ -0,0 +1,864 @@
++++
+title = "This Month in Rust GameDev #35 - June 2022"
+transparent = true
+date = 2022-07-07
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 35th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Rust GameDev Podcast][gamedev-podcast-site]
+
+![text logo](podcast.jpeg)
+
+The Rust Gamedev Podcast features interviews with indie game developers creating
+titles with the Rust programming language. It covers technical topics as well as
+the business of open source and commercial indie games development.
+
+In June, [the ninth episode][podcast-9] was released. It's a chat with Carter
+Anderson about the [Bevy engine][bevy], and a dive into its history.
+
+Listen and Subscribe from the following platforms:
+[Rust GameDev Podcast (simplecast)][gamedev-podcast-site],
+[Apple Podcasts][gamedev-podcast-apple],
+[Spotify][gamedev-podcast-spotify],
+[RSS Feed][gamedev-podcast-rss],
+or [Google Podcasts][gamedev-podcast-google].
+
+[podcast-9]: https://rustgamedev.com/episodes/interview-with-carter-anderson-bevy
+[bevy]: https://bevyengine.org/
+[gamedev-podcast-site]: https://rustgamedev.com/
+[gamedev-podcast-apple]: https://podcasts.apple.com/gb/podcast/rust-game-dev/id1526304768
+[gamedev-podcast-spotify]: https://open.spotify.com/show/7HRfGnTcXkLkQd9fxJbDGj
+[gamedev-podcast-rss]: https://feeds.simplecast.com/C6NQglnL
+[gamedev-podcast-google]: https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9DNk5RZ2xuTA
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 17th Rust Gamedev Meetup took place in June. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule from
+the meetup:
+
+- Choir - [@kvark]
+- RustConf Arcade Cabinet - [@carlosupina]
+- retime - [@Togg]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday every month via the [Rust Gamedev
+Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [July 9th][rust-meetup-time], fill out [this
+form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/drcX3dCS5MY
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-time]: https://everytimezone.com/s/92d2228b
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+
+[@kvark]: https://twitter.com/kvark
+[@carlosupina]: https://twitter.com/carlosupina
+[@Togg]: https://github.com/ZKpot
+[@GraphiteEditor]: https://twitter.com/graphiteeditor
+
+### [Rusty Jam 2][rusty-jam-ann]
+
+{{ image_figure(
+    alt="Aaron: a drawing of a humanoid fox"
+    src="aaron.png"
+    caption="Aaron, [the mascot of the jam](https://gamedev.rs/blog/rustyjam-02)") }}
+
+The [second Rusty Jam][rusty-jam-ann] just ended!
+[17 games][rusty-jam-entries] were completed and submitted
+over the one-week jam. The games were rated by the community
+and the top three games are:
+
+- 🥇 ["Chick the Dog"][rusty-jam-place-1] by Uriopass
+- 🥈 ["A walk around the block"][rusty-jam-place-2] by ramirezmike
+- 🥉 ["Fight for the Frontier"][rusty-jam-place-3] by rand0m and logicprojects
+
+The Rusty Jam will be back, so stay tuned on
+[the Rusty Jam Discord Server][rusty-jam-discord] for future updates!
+
+[rusty-jam]: https://itch.io/jam/rusty-jam-2
+[rusty-jam-entries]: https://itch.io/jam/rusty-jam-2/entries
+[rusty-jam-results]: https://itch.io/jam/rusty-jam-2/results
+[rusty-jam-ann]: https://gamedev.rs/blog/rustyjam-02
+[rusty-jam-discord]: https://discord.gg/jZtz6y9gCJ
+[rusty-jam-place-1]: https://uriopass.itch.io/chick-the-dog
+[rusty-jam-place-2]: https://ramirezmike2.itch.io/a-walk-around-the-block
+[rusty-jam-place-3]: https://logicprojects.itch.io/fight-for-the-frontier
+
+### RustConf Arcade Cabinet
+
+![arcade cabinet](arcade_cabinet.jpg)
+
+[Carlo][carlosupina] is building a custom arcade cabinet that will be at
+RustConf 2022 in Portland. It is an opportunity for Rust game developers to
+share their games with the broader community. If you are interested in getting
+your game on the cabinet, read [this Twitter thread][arcade-cabinet-thread] and
+fill out the [interest form][arcade-interest-form].
+The arcade cabinet has been assembled and painted. He is currently in the process
+of helping developers get their games playable on the machine. If you have a Bevy
+game, you can use the [bevy-rust-arcade crate][bevy-rust-arcade] to quickly get
+your game compatible. Deadline is the end of July!
+You can find the latest update [here][arcade-cabinet-update-thread].
+
+[carlosupina]: https://twitter.com/carlosupina
+[arcade-cabinet-thread]: https://twitter.com/carlosupina/status/1523715837726961664
+[arcade-cabinet-update-thread]: https://twitter.com/carlosupina/status/1539032439284240386
+[arcade-interest-form]: https://forms.gle/onFm5fCygdbiArqJ7
+[bevy-rust-arcade]: https://crates.io/crates/bevy-rust-arcade
+
+## Game Updates
+
+### [Hydrofoil Generation]
+
+![hgs_screen](hgs_35.jpg)
+
+[Hydrofoil Generation]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that will put you in the driving seat of modern competitive sailing.
+Hydrofoil Generation is based on a custom-made DirectX 11 based engine in
+Rust.
+
+June saw a lot of features added to the game, most notables being "New TV
+Overlays", "Control Assists", "Ropes Rendering" plus several physics
+improvements. Stefano Casillo, the developer went through all of them in
+a recent [devlog][hgs_devlog].
+
+Work in July will focus on the physics implementation of a new boat, a
+foiling multihull coming with her own set of new challenges.
+
+Hydrofoil Generation is targeting a Q4 2022 Early Access release on Steam.
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+[hgs_devlog]: https://youtu.be/AqwqyL9RqAk
+
+### [RuggRogue]
+
+![RuggRogue gameplay screenshot](ruggrogue.png)
+
+[RuggRogue] by [@tung] is a simple web-playable roguelike, inspired by the
+[Rust Roguelike Tutorial] and made using Rust and SDL.
+It can be played natively on Windows and Linux,
+and in the browser thanks to Emscripten.
+
+Features:
+
+- Discover new monsters and equipment the deeper you go.
+- Hunger and regeneration: stay fed and stay healed!
+- Choose between graphical tiles and ASCII display.
+- Menu-based UI with hotkeys.
+- Auto-run to quickly follow corridors and cross open space.
+- Save and load system.
+- New Game Plus mode!
+
+The source code is complemented by the
+[RuggRogue Source Code Guide][ruggrogue-book],
+a 23-chapter technical web book covering the ideas, algorithms, and structure of
+the code.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/vluy7u/ruggrogue_a_simple_webplayable_roguelike_made/),
+[/r/roguelikes](https://reddit.com/r/roguelikes/comments/vluuud/ruggrogue_a_simple_webplayable_roguelike_inspired/)_
+
+[RuggRogue]: https://tung.github.io/ruggrogue/
+[Rust Roguelike Tutorial]: https://bfnightly.bracketproductions.com/
+[ruggrogue-book]: https://tung.github.io/ruggrogue/source-code-guide/
+[@tung]: https://github.com/tung/
+
+### [Rust Game Ports]
+
+![games collage](rust_game_ports.jpg)
+
+Rust Game Ports is a port of several games to Rust/pure-Rust game engines.
+
+This month the last planned port has been completed; the games are:
+
+- Boing (Pong clone, ported to [ggez](https://github.com/ggez/ggez))
+- Cavern (Bubble Bobble clone, ported to [Macroquad](https://github.com/not-fl3/macroquad))
+- Rusty Roguelike (from the [Hands-on Rust book](https://pragprog.com/titles/hwrust/hands-on-rust);
+  ECS ported to [Bevy](https://github.com/bevyengine/bevy))
+- Soccer (Sensible Soccer clone, ported to [Fyrox](https://github.com/FyroxEngine/Fyrox))
+
+A Bevy ECS tutorial, based on Rusty Roguelike, has been published, and it's
+announced in this newsletter.
+
+[Rust Game Ports]: https://github.com/64kramsystem/rust-game-ports
+[Saverio Miroddi/@64kramsystem]: https://twitter.com/64kramsystem
+
+### vetovoima
+
+{{ image_figure(
+    alt="vetovoima gravity manipulation GIF"
+    src="vetovoima.gif"
+    caption="vetovoima gravity manipulation") }}
+
+[vetovoima][vetovoima_itch] by [@MatiasKlemola][vetovoima_twitter] is an arcade game
+where you control gravity!
+
+The world is a hollow circle with a star in the center. You're the Yellow
+Block and your goal is to navigate through shifting debris to the Tall Blue
+Block before the time runs out. The challenge is to survive the chaos that
+ensues from changes to gravity.
+
+vetovoima is built with the Bevy engine using Rapier for physics and Lyon for
+rendering (via Bevy plugins).
+
+[The alpha 1 build was recently released.](https://twitter.com/MatiasKlemola/status/1541338040521707521)
+
+Source available on [GitHub][vetovoima_github].
+
+[vetovoima_itch]: https://yourmagicisworking.itch.io/vetovoima
+[vetovoima_twitter]: https://twitter.com/MatiasKlemola
+[vetovoima_github]: https://github.com/klemola/vetovoima
+
+### [Botnet]
+
+![botnet logo](botnet.svg)
+
+[Botnet] is an upcoming programming-based multiplayer game,
+where you write scripts (compiled to WebAssembly) to control robots.
+Coordinate your bots to gather resources, build new industries,
+and expand your control of the server.
+
+This month saw the start of the project, and a majority of the foundational
+code was written. Next month we'll be adding more features, and aim to flesh out
+the game beyond [basic pathfinding and resource harvesting][botnet_example_bot].
+
+Interested in contributing? Head over to the
+[github discussion page][botnet_ideas] and suggest some ideas!
+
+[Botnet]: https://github.com/JMS55/botnet
+[botnet_example_bot]: https://github.com/JMS55/botnet/blob/master/example_bot/src/lib.rs
+[botnet_ideas]: https://github.com/JMS55/botnet/discussions/categories/ideas
+
+### [Star Machine]
+
+![Screenshot of a level in Star Machine](star_machine.png)
+
+[Star Machine] by [@Seldom_SE] is a puzzle game built in Bevy, where
+you wire together components to escape each level.
+
+Although its development is currently inactive, the developer
+recently made [a video demo][Star Machine] of the early levels.
+
+[Star Machine]: https://twitter.com/Seldom_SE/status/1532909654681849856
+[@Seldom_SE]: https://twitter.com/Seldom_SE
+
+### [Quoridor-rs]
+
+![Screenshot of a Quoridor-rs gameplay](Quoridor-screenshot.png)
+
+[Quoridor-rs] by [@baehyunsol] is a [Quoridor] game implemented in
+[Macroquad].
+
+Quoridor is a 2-4 player strategy board game. Each player has a pawn.
+They move the pawn or place a wall each round. The objective of the
+game is to move the pawn to the opposite side of the board.
+
+The game implements most of the basic Quoridor features, but it only
+supports 2 players, not 3 or 4. It also doesn't have AI players or
+network games.
+
+[Quoridor-rs]: https://github.com/baehyunsol/Quoridor-rs
+[Quoridor]: https://en.wikipedia.org/wiki/Quoridor
+[Macroquad]: https://github.com/not-fl3/macroquad
+[@baehyunsol]: https://github.com/baehyunsol
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Gliding above a forest"
+    src="veloren.jpg"
+    caption="A glider ride above the woods at night") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In June, a memory issue was found within the graphics stack. Weather is also
+getting closer to completion. There is a large write-up about it in one of [this
+month's blog posts][veloren-176].
+
+Lots of work has also gone into optimizing the Site2 system. Site2 is used to
+create many different shapes around the world, such as houses in towns, or
+citadels around the world. With these optimizations, it will be significantly
+easier to render chunks, which will have a dramatic effect on their load time.
+You can read more about these optimizations in [this blog post][veloren-178].
+
+June's full weekly devlogs: "This Week In Veloren...":
+[#175][veloren-175],
+[#176][veloren-176],
+[#177][veloren-177],
+[#178][veloren-178].
+
+[veloren]: https://veloren.net
+
+[veloren-175]: https://veloren.net/devblog-175
+[veloren-176]: https://veloren.net/devblog-176
+[veloren-177]: https://veloren.net/devblog-177
+[veloren-178]: https://veloren.net/devblog-178
+
+### [Harvest Hero Origins - Summer Heat Update!][hho_steam_spring]
+
+![hho summer banner](hho_summer.png)
+
+[Gemdrop Games] have worked with their friends at [Octosoft]
+to bring Shroomella to Harvest Hero Origins!
+
+[Renaine] is an upcoming Action Platformer game about Aine,
+an immortal Phoenix Knight.
+
+Shroomella is a Mushroom Shroom witch aiding Aine on her quest!
+In Harvest Hero Origins, she uses her variety of magical mushrooms
+to fight off the endless Grooble hordes.
+
+On top of that, they're adding:
+
+- A new map
+- Two new cards
+- Two new enemies
+- A revised story boss fight
+
+The game is built on the [Emerald Game Engine].
+
+[hho_steam_spring]: https://store.steampowered.com/app/1651500/Harvest_Hero_Origins/
+[Octosoft]: https://twitter.com/RenaineGame
+[Renaine]: https://store.steampowered.com/app/662340/Renaine/
+[Gemdrop Games]: https://twitter.com/GemdropGames
+[Emerald Game Engine]: https://github.com/Bombfuse/emerald
+
+### [Chimera Rancher][chimera-rancher]
+
+![Chimera Rancher cover art](chimera_rancher.png)
+
+[Chimera Rancher][chimera-rancher] is a game where you must defend your ranch
+from an angry hoard of villagers with the help of your chimera friends!
+
+Submitted as part of [Rusty jam #2][rusty-jam] by [cdsupina][cdsupina],
+[Nightly Side][nightlyside], [hedgein][hedgein], and [tigleym][tigleym]. This
+game was developed using the [bevy] game engine.
+
+[chimera-rancher]: https://nightlyside.itch.io/chimera-rancher
+[cdsupina]: https://cdsupina.itch.io/
+[tigleym]: https://tigleym.itch.io/
+[hedgein]: https://hedgein.itch.io/
+[nightlyside]: https://nightlyside.itch.io/
+
+## Engine Updates
+
+### [ggez] 0.8.0-rc0
+
+![ggez logo](../005/ggez-logo-maroon-full.svg)
+
+[ggez] by [@icefoxen], [@nobbele], and [@PSteinhaus] is a cross-platform game
+framework for making 2D games with minimum friction. It aims to implement an
+API based on the LÖVE game framework.
+
+This version has finally moved ggez away from pre-ll gfx and into the world
+of [wgpu]! This hopefully means fewer bugs, greater stability, and easier
+maintainability at the cost of some low-performance devices such as the
+Raspberry Pi.
+
+As for the user-facing API:
+
+- Instead of module functions, you now have methods on sub-contexts, which
+  look like `ctx.keyboard.is_key_pressed(key)`.
+- You are now required to pass around an explicit canvas to draw onto.
+- `DrawParam` now has a Z (aka layer) parameter, so you don't have to draw
+  objects in order.
+- Shaders are far easier to use, via normal Rust structs with a simple derive.
+
+As this is a rather large update and a first release candidate, there are plenty
+of bugs that are currently being fixed - please send any issues you encounter
+to their [issue tracker][ggez-issues]!
+
+_Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/v6a3kn/ggez_080rc0_is_out/)_
+
+[ggez]: https://github.com/ggez/ggez
+[@icefoxen]: https://github.com/icefoxen
+[@nobbele]: https://github.com/nobbele
+[@PSteinhaus]: https://github.com/PSteinhaus
+[wgpu]: https://github.com/gfx-rs/wgpu
+[ggez-issues]: https://github.com/ggez/ggez/issues
+
+### [Dims][dims-website]
+
+[![Video preview: Recreating Rhodes But In Our Own Game Engine](dims-recreating-rhodes.jpg)][dims-video-1]
+
+[Dims][dims-website] ([Twitter][dims-twitter], [Discord][dims-discord],
+[YouTube][dims-youtube]) is a pre-alpha collaborative open-world
+creation platform.
+Users can hop in sessions and build a game together, allowing everyone
+to bring out their inner game-maker.
+
+June brought about several developments for the platform, including:
+
+- Several development and testing streams, with the latest being
+  [a recreation of Rhodes from Red Dead Redemption 2][dims-video-1] within
+  the engine
+- A new audio engine with advanced real-time synthesis and composition
+  capabilities, including network synchronisation
+- Improved terrain manipulation tools, including new brushes, biome presets,
+  and more intuitive UI
+  - Choose between "Nordic Mountains" ⛰ and "Colorado Deserts" 🏜
+- Various improvements to the rendering engine, including decal and billboard
+  rendering, FBX loading, macOS support, and more
+- Initial work on a versatile new scripting system, with independent threads of
+  execution for every object
+
+Want to try Dims out for yourself? Come join the [Discord][dims-discord] to be
+notified of future public tests, see the latest features before everyone else,
+and to talk to the devs personally.
+
+[dims-website]: https://dims.co
+[dims-twitter]: https://twitter.com/DimsWorlds
+[dims-discord]: https://discord.gg/Z5CAVmNE57
+[dims-youtube]: https://youtube.com/channel/UCR5gOwS7uSl0a0dl7MLQoqg
+[dims-video-1]: https://www.youtube.com/watch?v=piEAGSFx-QU
+
+### [miniquad]
+
+![miniquad fileopen](fileopen.gif)
+
+[miniquad] is a safe and cross-platform rendering library
+focused on portability and low-end platform support.
+
+In versions prior to 0.3, it was virtually impossible to integrate, for
+example, a big in-app payments or advertisement SDK into a Miniquad Android
+game. 0.3 has solved this, giving the possibility to interop with any Java code.
+The developer has posted [a write-up of this functionality][miniquad-java] on
+the macroquad site.
+
+[miniquad]: https://github.com/not-fl3/miniquad/
+[miniquad-java]: https://macroquad.rs/articles/java/
+
+## Learning Material Updates
+
+### [Brontefy Me Devlog #3][hedgein-devlog-3]
+
+![Brontefy Me Devlog #3](brontefyme.png)
+
+[@hedgein][hedgein-github] continues the [Brontefy Me][hedgein-devlog-3] series!
+In this latest devlog, she gives an update on where Brontefy Me will be
+heading and why it slowed down. During a recent [stream][hedgein-stream], it
+was also mentioned that [@hedgein][hedgein-github] is leaning towards hosting
+a monthly Brontefy Me Game Jam for her community, as game jams give her
+better accountability. Further updates will be given in her [Discord server][hedgein-discord].
+
+[hedgein-stream]: https://www.twitch.tv/hedgein
+[hedgein-discord]: https://discord.gg/FnU6hxNGaP
+[hedgein-devlog-3]:https://www.youtube.com/watch?v=oNxMN47tKxs
+[hedgein-github]:https://github.com/hedgein
+
+### [Learn Bevy's ECS by ripping off someone else's project]
+
+![Learn Bevy's ECS by ripping off](learn_bevys_ecs_by_ripping_off.png)
+
+"Learn Bevy's ECS by ripping off someone else's project" is a mini-book that uses
+the game Rusty Roguelike from the book [Hands-on Rust](https://pragprog.com/titles/hwrust/hands-on-rust)
+as a base, in order to explain Bevy's ECS.
+
+The idea is for a beginner to learn ECS concepts from the base book, then apply
+them using Bevy; the structure of the game is ideal for a gentle introduction to
+ECS architecture.
+
+[Learn Bevy's ECS by ripping off someone else's project]: https://saveriomiroddi.github.io/learn_bevy_ecs_by_ripping_off
+[Saverio Miroddi/@64kramsystem]: https://twitter.com/64kramsystem
+
+### [Bevy Basics][bevy-basics]
+
+[@PhaestusFox] is close to finishing the [Bevy Basics][bevy-basics]
+[User Input][BB-input] mini-series.
+
+In this 5 part mini-series, they cover how a developer can go about collecting
+user input using the [Bevy][bevy] game engine.
+
+- [Episode 1][bb-1] is an overview of Bevy's various input structs
+- [Episode 2][bb-2] covers keyboard presses
+- [Episode 3][bb-3] covers mouse clicks and movement
+- [Episode 4][bb-4] covers gamepad buttons and joysticks
+- [Episode 5][bb-5] covers touchscreen or drawing pad strokes
+
+[@PhaestusFox]: https://www.youtube.com/c/PhaestusFox
+[bevy-basics]: https://www.youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[bb-input]: https://www.youtube.com/playlist?list=PL6uRoaCCw7GMWzJ-L2cU5ZruWkEld6a_N
+[bb-1]: https://youtu.be/pB3ERI5JtrA
+[bb-2]: https://youtu.be/G37yUGL3e1U
+[bb-3]: https://youtu.be/1q5iQsLVGJA
+[bb-4]: https://youtu.be/PjLozjlOgJ4
+[bb-5]: https://www.youtube.com/c/PhaestusFox
+[bevy]: https://bevyengine.org/
+
+## Tooling Updates
+
+### [Noumenal][noumenal-website]
+
+![Screen recording showing the construction of a heart shape using the Noumenal app.](noumenal.gif)
+
+[Noumenal][noumenal-website] ([App Store][noumenal-appstore],
+[Discord][noumenal-discord], [Twitter][noumenal-twitter])
+by [@HackerFoo][hackerfoo-website] is an elegant 3D solid modeling app for iOS.
+
+After a final stretch of performance improvements, bug fixes, and even some new
+features, Noumenal was released and is available on Apple's App Store!
+
+_Discussion: [/r/rust](https://reddit.com/r/rust/comments/vj40qq/noumenal_my_3d_modeling_app_for_ios)_
+
+[noumenal-website]: https://noumenal.app
+[noumenal-discord]: https://discord.gg/PFeZQE48gG
+[noumenal-twitter]: https://twitter.com/noumenal_app
+[noumenal-appstore]: https://apps.apple.com/us/app/noumenal/id1584884105
+[hackerfoo-website]: https://hackerfoo.com
+
+### [Graphite][graphite-website]
+
+![Graphite](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor. It will be powered by a
+node graph compositing engine that supercharges your layer stack, providing a
+completely non-destructive editing experience.
+
+June's [sprint 16][graphite-sprint] focused mainly on bug fixes and big
+under-the-hood changes:
+
+- Ahead of the curve: A long-awaited refactor replaces the underlying
+Bézier curve data structure in alignment with requirements for Pen tool
+improvements and the upcoming node system.
+- Sending mixed messages: The internal messaging system was upgraded to
+sequence the message processing in a more predictable stack-based order. A new
+subscription-based event broadcaster was integrated as well.
+- Back on the menu: The application menu bar content definitions were moved
+from the JS frontend to a permanent home in the Rust backend.
+
+Open the [Graphite editor][graphite-live-demo] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint]: https://github.com/GraphiteEditor/Graphite/milestone/16
+[graphite-live-demo]: https://editor.graphite.rs
+
+### [quad-gif]
+
+![quad-gif screenshot](quad-gif.png)
+
+[quad-gif] by [@ollej] is a tiny library that can be used in a Macroquad game
+to show a looping GIF animation. It also includes a small example binary that
+displays a GIF in the middle of a window. The library can also be used as a
+simple way to make an animation from a list of textures.
+
+[quad-gif]: https://github.com/ollej/quad-gif
+[@ollej]: https://twitter.com/ollej
+
+## Library Updates
+
+### [psf2]
+
+[psf2] is a minimal, unopinionated, no-std parser for the v2
+[PC Screen Font][psf2-format] bitmap font format.
+
+PSF2 fonts are simple, compact, and readily available due to their use as Linux
+console fonts. They are extremely fast to draw at their intended resolution,
+making them a great choice to quickly get text on the screen, especially when a
+low-resolution, fixed-width aesthetic is desired.
+
+The psf2 crate parses font data, exposing font size, glyph lookup, and iterators
+to traverse a glyph's bitmap for easy rendering. Due to its limited scope, it is
+much smaller and faster than conventional text rasterizers but cannot support
+variable-width, anti-aliased, or shaped text.
+
+[psf2]: https://github.com/Ralith/psf2
+[psf2-format]: https://www.win.tue.nl/~aeb/linux/kbd/font-formats-1.html
+
+### [ezinput]
+
+[ezinput] by [@eexsty][ezinput_creator] is a powerful input-agnostic library,
+targeting complete support for axis and button handling in the Bevy game
+engine.
+
+EZInput strives to be simple as possible using the nifty ECS features that Bevy
+offers, while still being powerful and flexible without using any unsafe code.
+This and the previous 0.3.* releases were targeted for performance and
+ergonomics improvements, including a new declarative macro to allow for
+cleaner and smaller code.
+
+[ezinput]: https://crates.io/crates/ezinput/versions
+[ezinput_creator]: https://github.com/eexsty
+
+### [glam] v0.21
+
+[glam] is a simple and fast linear algebra crate for games and graphics.
+
+This month version 0.21 of glam was released. Because glam is not a generic
+library, when support was added for `f64`, `i32`, and `u32` types back in glam
+0.12, macros were used internally to avoid a lot of code duplication. This
+unfortunately obfuscated the internals of glam for anyone who needed to view the
+source.
+
+As of the 0.21 release the majority of glam code is now generated using an
+offline tool and committed to the repo. The macros that were used to define
+glam's internal implementation are gone. This means what users see when reading
+docs or stepping through glam in the debugger is plain old Rust code. Many
+functions have also been made `const fn` removing the need for macros to create
+`const` values.
+
+[glam]: https://github.com/bitshifter/glam-rs
+
+### [kajiya]
+
+![A rendering of a fancy loft apartment](kajiya.jpg)
+
+[kajiya] by [@h3r2tic] is an experimental real-time global illumination
+renderer.
+
+In June, a long-standing branch landed, bringing with it a complete
+overhaul of indirect lighting. The new implementation uses spatiotemporal
+reservoir resampling (ReSTIR) and a novel irradiance cache, bringing forth
+larger scenes, quicker response to lighting changes, and less noise.
+
+A [detailed overview][kajiya-gi-overview] of the new global illumination
+techniques is available, complete with animated diagrams!
+
+June has also seen the addition of texture compression, automatic exposure,
+a new display rendering transform, and a simplification of the interface.
+The viewer app now supports drag-and-drop of scene files, glTF models,
+and HDRI backdrops.
+
+_Discussions:
+[twitter (0.2 release)](https://twitter.com/h3r2tic/status/1532829918194806784),
+[twitter (texture compression)](https://twitter.com/h3r2tic/status/1537212390982524929)._
+
+[kajiya]: https://github.com/EmbarkStudios/kajiya/
+[kajiya-gi-overview]: https://github.com/EmbarkStudios/kajiya/blob/main/docs/gi-overview.md
+[@h3r2tic]: https://github.com/h3r2tic
+
+### [Notan v0.5][Notan]
+
+![Notan texture to file](notan.gif)
+
+[Notan] is a simple and portable layer designed to create your own multimedia
+apps on top of it without worrying about platform-specific code.
+
+The main goal is to provide a set of APIs and tools that can be used to create
+your project in an ergonomic manner without enforcing any structure or pattern,
+always trying to stay out of your way. The idea is that you can use it as a
+foundation layer or backend for your next app, game engine, or game.
+
+The latest version [v0.5] fixes multiple bugs, improves [EGUI] support and adds
+a new feature to export texture [to png] easily.
+
+[Notan]: https://github.com/Nazariglez/notan
+[to png]: https://nazariglez.github.io/notan-web/examples/texture_to_file.html
+[v0.5]: https://github.com/Nazariglez/notan/releases/tag/v0.5.0
+[EGUI]: https://github.com/emilk/egui
+
+## Other News
+
+- Other game updates:
+  - [Fires of Eschaton] is a PvP focused turn-based fantasy game, currently under
+    development.
+  - [Idu] is testing out some new water physics.
+  - [Combine and Conquer] has a new devlog about its sound support.
+  - [Fish Folly] is a new Fyrox showcase game, inspired by Fall Guys.
+  - [Punchy] is a beat-em-up spin off of [Fish Fight], built with Bevy.
+  - [Jungle Chess] is a WASM implementation of a Chinese board game.
+  - [Croquet] is working on synchronized physics, using Rapier.
+  - [Bevy City] is a voxel city generator, built with Bevy.
+  - [Measure Once] is a game about cutting wood into the right shapes.
+  - [Galactic Mess] has added new outfits and weapons.
+- Other learning material updates:
+  - [Rustacean Station] interviewed the developer of egui.
+  - [Rusteroids] is a video tutorial series, building an asteroids
+    clone with Rust and SDL2.
+  - [NVIDIA GPU Profiling with Rust] is an introduction on how to use
+    NVIDIA's NSight tools with Rust.
+  - [Practical Programming with Dr. Xu] has continued their WGPU
+    tutorial series.
+  - [Anthropic Studios] (developers of Way of Rhea) posted a dev interview video.
+  - [Lyrapuff] posted a video showing how to render a triangle with
+    Vulkan and Rust.
+- Other engine updates:
+  - [pufferfish] is a new, opinionated 2D game framework.
+- Other tooling updates:
+  - [GBemulator] is a Game Boy emulator written from scratch.
+- Other library updates:
+  - [bevy_mod_picking] released version 0.7 of their Bevy mouse
+    picking plugin.
+  - [bevy_mod_outline] is a Bevy plugin for drawing outlines around
+    meshes.
+  - [Bevy YOLECK] is a crate that allows Bevy games to be their own
+    level editor.
+  - [bevy_mod_raycast] released version 0.5 of their raycasting plugin.
+  - [taffy] is a cross-platform UI layout library.
+
+[Fires of Eschaton]: https://twitter.com/FiresOfEschaton/status/1534119771045826567
+[Idu]: https://twitter.com/epcc10/status/1532889644165120001
+[Combine and Conquer]: https://buckmartin.de/combine-and-conquer/2022-06-16-sound.html
+[Fish Folly]: https://www.reddit.com/r/rust_gamedev/comments/vi5jok/media_fish_folly_a_fyrox_showcase_game_inspired/
+[Punchy]: https://twitter.com/spicylobsterfam/status/1540105977810255872
+[Fish Fight]: https://fishfight.org/
+[Jungle Chess]: https://www.reddit.com/r/rust_gamedev/comments/v3btkk/browser_jungle_chess_with_rust_wasm/
+[Croquet]: https://twitter.com/gocroquet/status/1531336194725797889
+[Bevy City]: https://mungbungo.itch.io/bevy-city
+[Measure Once]: https://robtfm.github.io/measure_once/
+[Galactic Mess]: https://www.youtube.com/watch?v=DO8vwehkr38
+[Rustacean Station]: https://rustacean-station.org/episode/emil-ernerfeldt/
+[Rusteroids]: https://www.youtube.com/playlist?list=PLFOS-Gn3aXROnSfl26esPExssd-rQw6jD
+[NVIDIA GPU Profiling with Rust]: https://simbleau.github.io/blog/gpu-profiling-with-rust/
+[Practical Programming with Dr. Xu]: https://www.reddit.com/r/rust/comments/vmpjcr/rust_wgpu_graphics_programming_tutorial_youtube/
+[Anthropic Studios]: https://www.youtube.com/watch?v=H0sIsrLWojs
+[Lyrapuff]: https://www.youtube.com/watch?v=_PNiRGIAfY4
+[pufferfish]: https://github.com/pufferfish-rs/pufferfish
+[GBemulator]: https://github.com/p4ddy1/gbemulator
+[bevy_mod_picking]: https://github.com/aevyrie/bevy_mod_picking/releases/tag/v0.7.0
+[bevy_mod_outline]: https://github.com/komadori/bevy_mod_outline
+[Bevy YOLECK]: https://github.com/idanarye/bevy-yoleck
+[bevy_mod_raycast]: https://github.com/aevyrie/bevy_mod_raycast/releases/tag/v0.5
+[taffy]: https://github.com/DioxusLabs/taffy
+
+## Discussions
+
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/):
+  - ["Shopping list"][r-gamedev-shopping-list] (a list of things that
+    are missing from the ecosystem)
+  - ["Hands-on Rust: Further reading"][r-gamedev-further-reading]
+  - ["How can I start developing a 3D game engine?"][r-gamedev-3d]
+  - ["Bevy or Fyrox for 3D Game Development?"][r-gamedev-bevy-fyrox]
+
+[r-gamedev-shopping-list]: https://www.reddit.com/r/rust_gamedev/comments/v8tx37/shopping_list/
+[r-gamedev-further-reading]: https://www.reddit.com/r/rust_gamedev/comments/v4q4pr/handson_rust_further_reading
+[r-gamedev-3d]: https://reddit.com/r/rust_gamedev/comments/v3z4i1/how_can_i_start_developing_a_3d_game_engine
+[r-gamedev-bevy-fyrox]: https://reddit.com/r/rust_gamedev/comments/v7svhg/bevy_or_fyrox_for_3d_game_dev
+
+## Requests for Contribution
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [Amethyst's "good first issue" issues][amethyst-issues].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[amethyst-issues]: https://github.com/amethyst/amethyst/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+- [DIMS](https://dims.co/jobs)
+  (Stockholm/Remote): Various roles, open applications accepted
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote): Various roles, open applications accepted
+- [Mutate](https://rustjobs.dev/featured-jobs/Mutate-Rust-Backend-Software-Engineer-7kfTlQFSagzwHhugw1p0)
+  (Remote): Rust Backend Software Engineer
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/vtrelw/this_month_in_rust_gamedev_35_june_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1545135032334950403),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/035/kajiya.jpg b/content/news/035/kajiya.jpg
new file mode 100644
index 000000000..0d6ecd65a
Binary files /dev/null and b/content/news/035/kajiya.jpg differ
diff --git a/content/news/035/learn_bevys_ecs_by_ripping_off.png b/content/news/035/learn_bevys_ecs_by_ripping_off.png
new file mode 100644
index 000000000..03c1f4449
Binary files /dev/null and b/content/news/035/learn_bevys_ecs_by_ripping_off.png differ
diff --git a/content/news/035/notan.gif b/content/news/035/notan.gif
new file mode 100644
index 000000000..959f63323
Binary files /dev/null and b/content/news/035/notan.gif differ
diff --git a/content/news/035/noumenal.gif b/content/news/035/noumenal.gif
new file mode 100644
index 000000000..2cd9282e9
Binary files /dev/null and b/content/news/035/noumenal.gif differ
diff --git a/content/news/035/podcast.jpeg b/content/news/035/podcast.jpeg
new file mode 100644
index 000000000..0e3134937
Binary files /dev/null and b/content/news/035/podcast.jpeg differ
diff --git a/content/news/035/quad-gif.png b/content/news/035/quad-gif.png
new file mode 100644
index 000000000..84f86a4a7
Binary files /dev/null and b/content/news/035/quad-gif.png differ
diff --git a/content/news/035/ruggrogue.png b/content/news/035/ruggrogue.png
new file mode 100644
index 000000000..82c046a95
Binary files /dev/null and b/content/news/035/ruggrogue.png differ
diff --git a/content/news/035/rust_game_ports.jpg b/content/news/035/rust_game_ports.jpg
new file mode 100644
index 000000000..4a246bd42
Binary files /dev/null and b/content/news/035/rust_game_ports.jpg differ
diff --git a/content/news/035/star_machine.png b/content/news/035/star_machine.png
new file mode 100644
index 000000000..94e226925
Binary files /dev/null and b/content/news/035/star_machine.png differ
diff --git a/content/news/035/veloren.jpg b/content/news/035/veloren.jpg
new file mode 100644
index 000000000..4f44ece79
Binary files /dev/null and b/content/news/035/veloren.jpg differ
diff --git a/content/news/035/vetovoima.gif b/content/news/035/vetovoima.gif
new file mode 100644
index 000000000..e86afb191
Binary files /dev/null and b/content/news/035/vetovoima.gif differ
diff --git a/content/news/036/agma.gif b/content/news/036/agma.gif
new file mode 100644
index 000000000..eb3871cb1
Binary files /dev/null and b/content/news/036/agma.gif differ
diff --git a/content/news/036/astar-search.png b/content/news/036/astar-search.png
new file mode 100644
index 000000000..6b1c60b2c
Binary files /dev/null and b/content/news/036/astar-search.png differ
diff --git a/content/news/036/bevy_fbx_maya_pbr.jpg b/content/news/036/bevy_fbx_maya_pbr.jpg
new file mode 100644
index 000000000..eadd4384d
Binary files /dev/null and b/content/news/036/bevy_fbx_maya_pbr.jpg differ
diff --git a/content/news/036/bevy_terrain.jpg b/content/news/036/bevy_terrain.jpg
new file mode 100644
index 000000000..d4243c744
Binary files /dev/null and b/content/news/036/bevy_terrain.jpg differ
diff --git a/content/news/036/blackjack.gif b/content/news/036/blackjack.gif
new file mode 100644
index 000000000..3d8452136
Binary files /dev/null and b/content/news/036/blackjack.gif differ
diff --git a/content/news/036/bombercrab.jpeg b/content/news/036/bombercrab.jpeg
new file mode 100644
index 000000000..63717f2bf
Binary files /dev/null and b/content/news/036/bombercrab.jpeg differ
diff --git a/content/news/036/bonsai.png b/content/news/036/bonsai.png
new file mode 100644
index 000000000..7b1285895
Binary files /dev/null and b/content/news/036/bonsai.png differ
diff --git a/content/news/036/botnet.png b/content/news/036/botnet.png
new file mode 100644
index 000000000..32c998a96
Binary files /dev/null and b/content/news/036/botnet.png differ
diff --git a/content/news/036/cnc.gif b/content/news/036/cnc.gif
new file mode 100644
index 000000000..ce16ffb73
Binary files /dev/null and b/content/news/036/cnc.gif differ
diff --git a/content/news/036/creating-mountains-from-planes-with-vertex-shaders-and-bevy.png b/content/news/036/creating-mountains-from-planes-with-vertex-shaders-and-bevy.png
new file mode 100644
index 000000000..12f7ca483
Binary files /dev/null and b/content/news/036/creating-mountains-from-planes-with-vertex-shaders-and-bevy.png differ
diff --git a/content/news/036/cybergate.jpg b/content/news/036/cybergate.jpg
new file mode 100644
index 000000000..062034d9b
Binary files /dev/null and b/content/news/036/cybergate.jpg differ
diff --git a/content/news/036/cybergate.png b/content/news/036/cybergate.png
new file mode 100644
index 000000000..5ac0408be
Binary files /dev/null and b/content/news/036/cybergate.png differ
diff --git a/content/news/036/dims-concept-art.jpg b/content/news/036/dims-concept-art.jpg
new file mode 100644
index 000000000..5dfe98a91
Binary files /dev/null and b/content/news/036/dims-concept-art.jpg differ
diff --git a/content/news/036/draw_sand.gif b/content/news/036/draw_sand.gif
new file mode 100644
index 000000000..69466fca8
Binary files /dev/null and b/content/news/036/draw_sand.gif differ
diff --git a/content/news/036/fdg.png b/content/news/036/fdg.png
new file mode 100644
index 000000000..2b3e706ee
Binary files /dev/null and b/content/news/036/fdg.png differ
diff --git a/content/news/036/flesh.gif b/content/news/036/flesh.gif
new file mode 100644
index 000000000..537160ec6
Binary files /dev/null and b/content/news/036/flesh.gif differ
diff --git a/content/news/036/gamedev-meetup.png b/content/news/036/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/036/gamedev-meetup.png differ
diff --git a/content/news/036/gamercade.gif b/content/news/036/gamercade.gif
new file mode 100644
index 000000000..25b0762fc
Binary files /dev/null and b/content/news/036/gamercade.gif differ
diff --git a/content/news/036/godot-rust.png b/content/news/036/godot-rust.png
new file mode 100644
index 000000000..01e8c5edb
Binary files /dev/null and b/content/news/036/godot-rust.png differ
diff --git a/content/news/036/graphite.png b/content/news/036/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/036/graphite.png differ
diff --git a/content/news/036/index.md b/content/news/036/index.md
new file mode 100644
index 000000000..b547b200a
--- /dev/null
+++ b/content/news/036/index.md
@@ -0,0 +1,1232 @@
++++
+title = "This Month in Rust GameDev #36 - July 2022"
+transparent = true
+date = 2022-08-11
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 36th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 18th Rust Gamedev Meetup took place in July. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule from
+the meetup:
+
+- RustConf Arcade Cabinet - [@carlosupina]
+- Blackjack - [@setzer22]
+- Dotrix - [@lowenware]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday every month via the [Rust Gamedev
+Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to show off what you've been
+working on at the next meetup on [August 13th][rust-meetup-time], fill out [this
+form][gamedev-meetup-form].
+
+[gamedev-meetup-video]: https://youtu.be/mnuchYuR_ck
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[rust-meetup-time]: https://everytimezone.com/s/17260ccd
+[gamedev-meetup-form]: https://forms.gle/BS1zCyZaiUFSUHxe6
+[@carlosupina]: https://twitter.com/carlosupina
+[@setzer22]: https://twitter.com/playtheprocess
+[@lowenware]: https://twitter.com/lowenware
+[@GraphiteEditor]: https://twitter.com/graphiteeditor
+
+### Rust Game Ports Officialization
+
+![games collage](rust_game_ports.jpg)
+
+[64kramsystem][64kramsystem]'s Rust Game Ports [project][game-ports-project] has
+been officially adopted by the Rust game development working group.
+
+The project is intended to be a reference for Rust game development, helping
+developers, especially newcomers, to understand how to use Rust game libraries,
+and design Rust games in general.
+
+Devs are invited to explore and contribute! There are ports for all the levels
+and interests 😄
+
+[64kramsystem]: https://github.com/64kramsystem
+[game-ports-project]: https://github.com/rust-gamedev/rust-game-ports
+
+### [Ferris 3D Got Released!][ferris3d-github]
+
+![colorful render of a 3d model of Ferris with additional wireframe view](raymarch_ferris_3d_release.jpg)
+
+[@RayMarch][raymarch-twitter] created a 3d model of [Ferris the Rustacean][ferris]
+for the Rust community!
+
+The model is [now available for free here on github][ferris3d-github]!
+
+It was released into the [public domain][public-domain] so you can use it
+however you like, even commercially!
+
+_Discussions: [Twitter][raymarch-twitter-release]_
+
+[ferris]: https://rustacean.net/
+[raymarch-twitter]: https://twitter.com/Ray__March
+[raymarch-twitter-release]: https://twitter.com/Ray__March/status/1554115149312790529
+[ferris3d-github]: https://github.com/RayMarch/ferris3d
+[public-domain]: https://creativecommons.org/publicdomain/zero/1.0/
+
+### [Tokyo Rust Game Hack Event][tokyo-event]: Aug 12th
+
+![pixelart ferris and bombs](bombercrab.jpeg)
+
+The team at [tonari.no](http://tonari.no) is back with the second edition
+of the Tokyo Rust Game Hack event!
+
+> For this edition of the Game Hack event, we're dragging you back
+> through the mists of time, to the earlier days of arcade games.
+> We've built a Bevy-powered, simple reimagining of classic Bomberman,
+> with a modern twist.
+> Players don't participate by taking turns on an arcade stick.
+> Instead, we will provide a crate that defines the character's
+> interaction with the world through a Player trait.
+> By simply implementing that trait and compiling to a wasm target,
+> you'll be able to upload your character to the game, live.
+> Adapt your strategy on the fly and bomb your way into the scoreboard!
+
+[The player template repository][bombercrab-player] is open sourced
+ahead of time so you can get a nice headstart.
+
+If you decide to come please sign up on [the event's page][tokyo-event].
+You can participate physically or online, see the full announcement
+for the details.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/w7bktx/2022_tokyo_rust_game_hack_event)_
+
+[tokyo-event]: https://bombercrab-rust-game-hack.peatix.com/view
+[bombercrab-player]: https://github.com/tonarino/bombercrab-player
+
+## Game Updates
+
+### [Way of Rhea][wor]
+
+[![way of rhea capsule image](wor-capsule.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle adventure with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. You can support development by
+[checking out the free demo and wishlisting on Steam][wor]!
+
+Way of Rhea was selected to be part of [PAX Rising online][wor-pax-rising]! It
+was also shown off in the June [Steam Game Festival][wor-steam-game-fest].
+Other recent updates:
+
+- Kotaku mentioned Way of Rhea in an article about
+  [fascinating upcoming indie games][wor-kotaku]
+- [Lost In Cult][wor-lic], a gaming journal, announced [preorders][wor-lic-pre] for
+  a new edition of Lock On containing a card game containing a card with a character
+  from Way of Rhea featured
+- Mason posted a video interview covering [why he became an indie dev][wor-interview],
+  among other things
+- Work has begun on puzzles for the final level of the game. This area combines the
+  puzzle elements from all previous biomes for a final set of challenging puzzles.
+- A weather system with [rain][wor-rain] and [snow][wor-snow] was added to the game
+- More progress was made on the unreleased Linux platform layer
+- More wildlife was added to the game
+- Some logging and editor improvements were made
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n36
+[wor-pax-rising]: https://store.steampowered.com/sale/PAXRisingOnline
+[wor-steam-game-fest]: https://store.steampowered.com/sale/nextfest_june2022
+[wor-kotaku]: https://kotaku.com/steam-indie-games-pc-wishlist-arctic-awakening-1849140770
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-forum]: https://steamcommunity.com/app/1110620/discussions/0/3275817732933009791/
+[wor-rain]: https://twitter.com/AnthropicSt/status/1546207348259266560
+[wor-snow]: https://twitter.com/AnthropicSt/status/1546320074923024384
+[wor-lic]: https://www.lostincult.co.uk/
+[wor-lic-pre]: https://www.lostincult.co.uk/?aff=18
+[wor-interview]: https://youtu.be/H0sIsrLWojs
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="3rd area") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+an organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- The game has BGM.
+- Support global leaderboard.
+- Integrate steam SDK using [steamworks] crate.
+- Add new enemy types for the 3rd area.
+- Add squeezing effect when the enemy gets hit.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[steamworks]: https://crates.io/crates/steamworks
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="hundreds of colliding colored balls in the air"
+    src="cybergate.jpg"
+    caption="The server and clients are able to smoothly handle over a thousand balls rained from above") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul
+is a new multiplayer project that aims at procedurally generating distinct
+universes and gameplay experiences. CyberGate is the name of the main world
+where universes can be created and accessed by quantum portals.
+
+Recent updates:
+
+- Bandwidth became 16 times smaller by implementing entity prioritization
+  \+ other techniques.
+- Interpolation and Jitter prediction makes entities way smoother.
+- Automatic and Reliable Spawn and Despawn of entities.
+- Many other features and optimizations to do with rapier 3d physics,
+  wgpu renderer, and quinn (quic) protocol.
+
+[Join the Discord server][cybergate-dis] to participate in tests.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/vy7vms/multiplayer_stress_test_1_million_balls)_
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Botnet]
+
+![A grid with dots and arrows](botnet.png)
+
+[Botnet] is an upcoming programming-based multiplayer game, where you write
+scripts (compiled to WebAssembly) to control robots. Coordinate your network
+of bots to gather resources, build new industry, and expand your control of
+the server!
+
+This month was primarily spent on BotnetReplayViewer - a visual program to
+watch matches and inspect entity data.
+
+Additionally, the antenna structure was added. Building an antenna gives you
+control over the bay (room) it's in, letting you build additional structures,
+and increasing the total number of bots you can control. Bots can also use
+antennas to store resources.
+
+Interested in contributing? Head over to the
+[GitHub discussion page][botnet_ideas] and suggest some ideas!
+
+[Botnet]: https://github.com/JMS55/botnet
+[botnet_ideas]: https://github.com/JMS55/botnet/discussions/categories/ideas
+
+### [Re-Rolling!]
+
+![Re-rolling gameplay](re-rolling_gameplay.png)
+
+[Re-Rolling!] by [@mystalice](https://twitter.com/mystalice) is a top-down 2D
+survival shooter where you fight off a horde of rats using weapons you randomly
+rolled.
+
+The game was created for [GMTK Jam 2022][rr_gmtk2022] in 48 hours and was
+heavily inspired by [20 Minutes Till Dawn][rr_20minutes].
+
+Re-Rolling! was made with Bevy using heron for physics, bevy_egui for in-game
+UI, and a handful of other helpful crates and plugins. You can browse the source
+on [GitHub][rr_github].
+
+[Re-Rolling!]: https://mystal.itch.io/re-rolling
+[rr_gmtk2022]: https://itch.io/jam/gmtk-jam-2022
+[rr_20minutes]: https://store.steampowered.com/app/1966900/20_Minutes_Till_Dawn/
+[rr_github]: https://github.com/mystal/re-rolling
+
+### [Robo Instructus: 3 Years Old][robo-3]
+
+![game logo + OS logos](robo-os.jpg)
+
+In 2019 the programming puzzler [Robo Instructus][robo-site] was released
+on [Steam][robo-steam] & [itch.io][robo-itch].
+
+This month [Alex Butler][alex-butler] wrote ["Robo Instructus: 3 Years Old"][robo-3]
+about how well the game did in the last year & to date: Sales by
+platform/country/OS, player feedback, reviews & game updates.
+
+[robo-site]: https://www.roboinstruct.us
+[robo-steam]: https://store.steampowered.com/app/1032170/Robo_Instructus
+[robo-itch]: https://bigabgames.itch.io/robo-instructus
+[alex-butler]: https://twitter.com/bigabgames
+[robo-3]: https://blog.roboinstruct.us/2022/07/16/3-years-old.html
+
+### [Simon Arcade]
+
+{{ image_figure(
+    alt="Simon arcade gameplay with arrows and buttons in different colors"
+    src="simon.gif"
+    caption="a Simon Arcade gameplay with cheats enabled") }}
+
+Based on [Simon (Original)], made with [Bevy],
+the goal of this game is to push buttons in the correct order,
+in an ever-increasing sequence.
+
+This game was made to fit with the [Rust Arcade Cabinet]
+and was showcased at [RustConf Portland] on August 5th 2022.
+
+[Simon Arcade]: https://github.com/Vrixyz/simon
+[Simon (Original)]: https://en.wikipedia.org/wiki/Simon_(game)
+[Rust Arcade Cabinet]: https://github.com/rust-arcade/bevy-rust-arcade
+[RustConf Portland]: https://rustconf.com
+[Bevy]: https://bevyengine.org
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Gliding above a forest"
+    src="veloren.jpg"
+    caption="New cave systems to explore") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In July, Veloren released 0.13! You can [read the full blog post][veloren-0.13]
+that includes a trailer for the release party, and information about the new
+features in the release. This release party set a new record for most players on
+the server at once, going from 195 to now 277! This version brings modular
+weapons, real-time weather, cliff towns, cave biomes, level of detail trees, and
+much more.
+
+Other than the release party, July saw lots of work getting done. The
+translation system is undergoing an overhaul. Work is being done on the
+Scrolling Combat Text system, which gives some visual indicator to how much
+damage or healing you're taking. Though is going into how to better handle
+server-side physics to reduce latency.
+
+July's full weekly devlogs: "This Week In Veloren...":
+[#179][veloren-179],
+[#180][veloren-180],
+[#181][veloren-181],
+[#182][veloren-182].
+
+[veloren]: https://veloren.net
+[veloren-0.13]: https://veloren.net/release-0-13
+[veloren-179]: https://veloren.net/devblog-179
+[veloren-180]: https://veloren.net/devblog-180
+[veloren-181]: https://veloren.net/devblog-181
+[veloren-182]: https://veloren.net/devblog-182
+
+### [Agma]
+
+{{ image_figure(
+    alt="an animated black-colored character runs around and attacks anoter one"
+    src="agma.gif"
+    caption="Moving around") }}
+
+[Agma] by [@TuckerBMorgan] is a 3D game built in the [Storm Engine] that is based
+on games like Lost Ark and Diablo. The author has been writing about their experience
+with changing how they approach working on personal projects [here].
+It is built using a custom UDP-based networking stack, a custom ECS,
+and a custom-skinned mesh renderer to maximize what the author could learn.
+
+[Agma]: https://github.com/TuckerBMorgan/Agma
+[@TuckerBMorgan]: https://twitter.com/T_B_Morgan
+[here]: https://medium.com/@tucker.bull.morgan/summoning-a-devil-544b130c8889
+[Storm Engine]: https://github.com/mooman219/Storm
+
+### [Combine&Conquer][cnc-logs]
+
+{{ image_figure(
+    alt="zoomin gout from individual tiles to the whole space system"
+    src="cnc.gif"
+    caption="Seamless transition between planet and space views") }}
+
+[Combine&Conquer][cnc-itch] by [Martin Buck][@I3ck] is a WIP strategy game
+about automation similar to Satisfactory or Factorio.
+This month's updates include:
+
+- [Audio support, a new space view, colonization of planets,
+  inventory overlay, and better notifications][cnc-log-0-8].
+- [New textures for structures, info box, updated overlays and modles][cnc-log-0-9].
+
+[@I3ck]: https://github.com/I3ck
+[cnc-itch]: https://martinbucksoftware.itch.io
+[cnc-logs]: https://buckmartin.de/combine-and-conquer.html
+[cnc-log-0-8]: https://buckmartin.de/combine-and-conquer/2022-07-06-v0.0.8.html
+[cnc-log-0-9]: https://buckmartin.de/combine-and-conquer/2022-07-31-v0.0.9.html
+
+### Life Code
+
+[![Youtube video preview: lowpoly raccoon, "crazy eco dong game" text
+and logos of Bevy, Rust and WebAssembly](lifecode.jpg)][lifecode-video]
+
+[Bytellation shared the first video devlog][lifecode-video] of a WIP ecosystem
+coding game "Life Code":
+
+> The game is intended to run in the browser and will be written
+> in Rust which will be compiled to WASM.
+> I'm using a very new and not yet matured game engine called Bevy.
+> I will be creating the art and models in the game using Blender.
+>
+> This will be a coding game which means players will have to use languages
+> such as Python, Javascript, Rust, C++, and hopefully many more.
+> It will be possible to play even if you don't know how to code but the game
+> will try to guide you to use real code instead of predefined behavior sets.
+> Follow my journey where I try to create an impossible solo indie game
+> with little to no game dev experience.
+
+[lifecode-video]: https://youtube.com/watch?v=a6ZnhXGp3JI
+
+## Engine Updates
+
+### [Bevy v0.8][bevy-blog]
+
+{{ image_figure(
+    alt="bevy terrain"
+    src="bevy_terrain.jpg"
+    caption="Bevy-shaped mountains in a Bevy-based Witcher 3 terrain texturing tool built by rmemr") }}
+
+[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust. It
+is [free and open source][bevy-git] forever!
+
+Bevy 0.8 was a massive community effort. You can check out the [full release
+blog post here][bevy-blog], but here are some highlights:
+
+- [New Material System][bevy-materials]
+- [Camera-driven Rendering][bevy-camera]
+- [Built-in Shader Modularization][bevy-shader-mod]
+- [Spot Lights][bevy-spotlights]
+- [Visibility Inheritance][bevy-visibility]
+- [Upgraded to wgpu 0.13][bevy-wgpu]
+- [Automatic Mesh Tangent Generation][bevy-tangent]
+- [Renderer Optimizations][bevy-render-opt]
+- [Scene Bundle][bevy-scene]
+- [Scripting / Modding Progress][bevy-scripting]
+- [ECS Query Ergonomics and Usability][bevy-ecs-ergo]
+- [ECS Internals Refactors][bevy-refactors]
+- [Reflection Improvements][bevy-reflect]
+- [Hierarchy Commands][bevy-hierarchy]
+- [Bevy UI Now Uses Taffy][bevy-taffy]
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/wc0sqc/bevy_08),
+[Hacker News](https://news.ycombinator.com/item?id=32287828),
+[Twitter](https://twitter.com/cart_cart/status/1553411157662187521)_
+
+[bevy]: https://bevyengine.org
+[bevy-git]: https://github.com/bevyengine/bevy
+[bevy-blog]: https://bevyengine.org/news/bevy-0-8
+[bevy-materials]: https://bevyengine.org/news/bevy-0-8/#new-material-system
+[bevy-camera]: https://bevyengine.org/news/bevy-0-8/#camera-driven-rendering
+[bevy-spotlights]: https://bevyengine.org/news/bevy-0-8/#spotlights
+[bevy-visibility]: https://bevyengine.org/news/bevy-0-8/#visibility-inheritance
+[bevy-shader-mod]: https://bevyengine.org/news/bevy-0-8/#built-in-shader-modularization
+[bevy-wgpu]: https://bevyengine.org/news/bevy-0-8/#wgpu-0-13-new-wgsl-shader-syntax
+[bevy-tangent]: https://bevyengine.org/news/bevy-0-8/#automatic-mesh-tangent-generation
+[bevy-render-opt]: https://bevyengine.org/news/bevy-0-8/#render-phase-sorting-optimization
+[bevy-scene]: https://bevyengine.org/news/bevy-0-8/#scene-bundle
+[bevy-scripting]: https://bevyengine.org/news/bevy-0-8/#scripting-modding-progress-untyped-ecs-apis
+[bevy-ecs-ergo]: https://bevyengine.org/news/bevy-0-8/#query-intoiter
+[bevy-refactors]: https://bevyengine.org/news/bevy-0-8/#ecs-lifetimed-pointers
+[bevy-reflect]: https://bevyengine.org/news/bevy-0-8/#bevy-reflection-improvements
+[bevy-hierarchy]: https://bevyengine.org/news/bevy-0-8/#hierarchy-commands
+[bevy-taffy]: https://bevyengine.org/news/bevy-0-8/#taffy-migration-a-refreshed-ui-layout-library
+
+### [Dims][dims-website]
+
+![Concept art of a player creating a world in Dims](dims-concept-art.jpg)
+
+[Dims][dims-website] ([Twitter][dims-twitter], [Discord][dims-discord],
+[YouTube][dims-youtube]) is a pre-alpha collaborative open-world
+creation platform.
+Users can hop in sessions and build a game together, allowing everyone
+to bring out their inner game-maker.
+
+In July, development continued to make great strides. Some of the highlights
+include:
+
+- Continued work on the audio system, including in-game graphs of attenuation
+  and other audio-related functions
+- The introduction of an intent system that allows for user actions to be
+  undone and replayed arbitrarily
+- A complete UI facelift using Material UI icons and a new design language
+- A new scripting system using WebAssembly + WASI and Rust as a guest language
+  (look forward to an article on this soon!)
+- The beginnings of a shared asset database that lets you and your team easily
+  share assets amongst each other and with other projects
+- Various infrastructural and rendering fixes, including more accurate PBR
+
+Want to try Dims out for yourself? Come join the [Discord][dims-discord] to be
+notified of future public tests, see the latest features before everyone else,
+and to talk to the devs personally.
+
+[dims-website]: https://dims.co
+[dims-twitter]: https://twitter.com/DimsWorlds
+[dims-discord]: https://discord.gg/Z5CAVmNE57
+[dims-youtube]: https://youtube.com/channel/UCR5gOwS7uSl0a0dl7MLQoqg
+
+### [godot-rust][gd-github]
+
+![godot-rust logo](godot-rust.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot game engine.
+
+The last few months have been a bit quieter around godot-rust. A lot of this
+can be attributed to developers exploring the [GDExtension API][gd-gdext], the
+successor of GDNative for Godot 4. At this point, a lot of the foundation is
+still being built, however, some more concrete plans are outlined in
+[#824][gd-824]. Further updates will be posted in that issue or on Twitter.
+
+Nevertheless, several improvements have been integrated to godot-rust since
+0.10, with [version 0.10.1 on the horizon][gd-907]. Some notable examples:
+
+- GDScript utility functions like lerp, ease or linear2db ([#901][gd-901])
+- Property support for standard collection types ([#883][gd-883])
+- Methods for Rect2 and Aabb ([#867][gd-867])
+
+[gd-824]: https://github.com/godot-rust/godot-rust/issues/824
+[gd-883]: https://github.com/godot-rust/godot-rust/issues/883
+[gd-867]: https://github.com/godot-rust/godot-rust/issues/867
+[gd-901]: https://github.com/godot-rust/godot-rust/issues/901
+[gd-907]: https://github.com/godot-rust/godot-rust/issues/907
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.com/invite/FNudpBD
+[gd-twitter]: https://twitter.com/GodotRust
+[gd-gdext]: https://godotengine.org/article/introducing-gd-extensions
+
+### [Gamercade]
+
+{{ image_figure(
+    alt="Gamercade preview"
+    src="gamercade.gif"
+    caption="WASM 3d CPU Rendering On a 2d Fantasy Console?") }}
+
+[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub])
+by @RobDavenport is a WASM-powered fantasy console focused
+on building multiplayer neo-retro games.
+
+After over half a year in development, Gamercade and related tools are ready
+for pre-alpha testing. This includes the [console][Gamercade-Console] itself,
+as well as the [editor][Gamercade-Editor].
+
+Gamercade's killer feature is the ease of developing multiplayer games.
+The console is able to simplify networked game development process
+in the best way possible: build a local multiplayer game, and get full online
+play for free!
+
+The WASM Api features powerful but simple built-in features like input,
+2d graphics, random number generation, and more. Limitations do exist, but are
+flexible, such as resolutions up to 1920 x 1080, and a maximum of 256 color
+palettes with up to 64 colors each.
+
+The community around the project is small, but is looking to expand.
+Come on over to the [subreddit][Gamercade-Subreddit], or hang out and chat
+on [Discord][Gamercade-Discord], where the developers interact with members
+and post updates daily. The project is newly [open source][Gamercade-GitHub]
+and looking for contributors, suggestions, as well as awesome game demos.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/w8idew/announcing_gamercade_a_new_wasm_powered_fantasy),
+[/r/fantasyconsoles](https://reddit.com/r/fantasyconsoles/comments/w8ics8/announcing_gamercade_a_new_wasm_powered_fantasy)_
+
+[Gamercade]: https://gamercade.io
+[Gamercade-Console]: https://github.com/gamercade-io/gamercade_console
+[Gamercade-Editor]: https://github.com/gamercade-io/gamercade_editor
+[Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j
+[Gamercade-GitHub]: https://github.com/gamercade-io
+
+## Learning Material Updates
+
+### [Sand Fall With Compute Shaders in Rust][sandfall-tutorial]
+
+{{ image_figure(
+    alt="sandfall_8k"
+    src="draw_sand.gif"
+    caption="Drawing Sand") }}
+
+[@hakolao] published a [tutorial][sandfall-tutorial] about creating
+[cellular automata][wiki-cgol] sand fall simulations with compute shaders.
+
+Typically, cellular automata sand fall is done with the CPU due to the two-way
+relationship between the cells on a grid. This article shows a way to tackle
+sand fall creation using compute shaders to achieve massive parallelism.
+
+Additional to compute shaders, this tutorial is a great introduction to the
+[Vulkano](https://github.com/vulkano-rs/vulkano) library. It also works as a
+good base for learning how to create simple graphics pipelines. You will also
+get to use Bevy and Egui.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/vmynrq/sand_fall_with_compute_shaders_in_rust)_
+
+[@hakolao]: https://github.com/hakolao
+[sandfall-tutorial]: https://okkohakola.com/posts/sandfall_tutorial
+[wiki-cgol]: https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
+
+[sand fall with compute shaders in rust]: https://www.okkohakola.com/posts/sandfall_tutorial/
+
+### [Pathfinding in Rust][pf-in-rust]
+
+![Example of the results of doing an A* search from a start node to a goal node](astar-search.png)
+
+[Pathfinding in Rust: A tutorial with examples][pf-in-rust]
+is an article with examples of how to use the [pathfinding]
+crate to do breadth-first, Dijkstra's, and A* search. It links to the
+[gregstoll/rust-pathfinding] repo which has working code for all of these.
+
+[pf-in-rust]: https://blog.logrocket.com/pathfinding-rust-tutorial-examples
+[pathfinding]: https://crates.io/crates/pathfinding
+[gregstoll/rust-pathfinding]: https://github.com/gregstoll/rust-pathfinding
+
+### [Creating Mountains From Planes with Vertex Shaders and Bevy][chrisbiscardi-vid1]
+
+{{ image_figure(
+    alt="vertex shaders example"
+    src="creating-mountains-from-planes-with-vertex-shaders-and-bevy.png"
+    caption="Creating mountains from planes with vertex shaders and Bevy",
+    link="https://youtube.com/watch?v=85uJc81SQZ4") }}
+
+[@chrisbiscardi] published a [video][chrisbiscardi-vid1]
+about using the new Material shader APIs in Bevy 0.8 to transform the
+vertex positions in a custom mesh plane using a vertex shader.
+
+_Discussions: [Twitter](https://twitter.com/chrisbiscardi/status/1549089599971938304)_
+
+[chrisbiscardi-vid1]: https://youtube.com/watch?v=85uJc81SQZ4
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+
+### [What's in a wgsl fragment shader? ft Bevy][chrisbiscardi-vid2]
+
+{{ image_figure(
+    alt="vertex shaders example"
+    src="whats-in-a-wgsl-fragment-shader-with-bevy.png"
+    caption="What's in a wgsl fragment shader? ft Bevy",
+    link="https://youtube.com/watch?v=SOOOc9-joVo") }}
+
+[@chrisbiscardi] published a [video][chrisbiscardi-vid2]
+that introduces the new Material APIs in Bevy 0.8. It covers AsBindGroup,
+uniforms, and using Perlin Noise in a fragment shader to render different
+colors onto a cube in a variety of ways.
+
+_Discussions: [Twitter](https://twitter.com/chrisbiscardi/status/1546909993726726144)_
+
+[chrisbiscardi-vid2]: https://youtube.com/watch?v=SOOOc9-joVo
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+
+### [Rusteroids][rusteroids-youtube-playlist]
+
+[![A screenshot of the latest Rusteroids tutorial](rusteroids-screenshot-tutorial15.png)][rusteroids-youtube-playlist]
+
+[Rusteroids][rusteroids-github] is a tutorial recreating a clone of Asteroids
+in Rust, using SDL2 and the [Specs][rust-specs-crate] library.
+
+New episodes are released weekly and added to the playlist. The most
+recent video shows how to safely create global state to store global values,
+such as the high score. The most recent code has been released for Windows, on
+[Itch.io][itch-io] (with other platforms coming soon).
+
+You can subscribe to the [YouTube Channel][electrocat-youtube],
+to never miss an episode, or follow [@ecatstudios][ecatstudios-twitter] on
+Twitter!
+
+[rusteroids-youtube-playlist]: https://youtube.com/playlist?list=PLFOS-Gn3aXROnSfl26esPExssd-rQw6jD
+[rusteroids-github]: https://github.com/filtoid/rusteroids
+[rust-specs-crate]: https://docs.rs/specs/latest/specs/
+[itch-io]: https://filtoid.itch.io/rusteroids
+[electrocat-youtube]: https://youtube.com/channel/UC1m6P72nySpB3lKWDYGVipw
+[ecatstudios-twitter]: https://twitter.com/ecatstudios
+
+### [RuggRogue Source Code Guide][ruggrogue-guide]
+
+![A screenshot from RuggRogue: a tiled view on a dungeon
+and a classic textual UI](ruggrogue.png)
+
+[@tung] has been working on a simple web-playable roguelike [RuggRogue][ruggrogue]
+inspired by the [Rust Roguelike Tutorial][rl-tut]
+and documented the source code structure in a guide:
+
+> If you want to learn about the [source code][ruggrogue-src], you'll also want
+> to check out the [RuggRogue Source Code Guide][ruggrogue-guide]:
+> a 23-chapter technical web book about the ideas,
+> algorithms and structure of the code.
+> It covers topics such as rendering, event handling, game states,
+> the hand-rolled field of view and pathfinding calculations,
+> game balance and more.
+
+_Discussions:
+[/r/roguelikes](https://reddit.com/r/roguelikes/comments/vluuud/ruggrogue_a_simple_webplayable_roguelike_inspired),
+[/r/rust](https://reddit.com/r/rust_gamedev/comments/vluy7u/ruggrogue_a_simple_webplayable_roguelike_made)_
+
+[@tung]: https://github.com/tung
+[ruggrogue]: https://tung.github.io/ruggrogue
+[ruggrogue-web]: https://tung.github.io/ruggrogue/play
+[ruggrogue-src]: https://github.com/tung/ruggrogue
+[ruggrogue-guide]: https://tung.github.io/ruggrogue/source-code-guide
+[rl-tut]: https://bfnightly.bracketproductions.com/
+
+## Tooling Updates
+
+### [NES Bundler][nes-bundler]
+
+{{ image_figure(
+    alt="NES Bundler running Data Man with GUI showing"
+    src="nes-bundler.png"
+    caption="NES Bundler in action") }}
+
+[NES Bundler][nes-bundler] is a NES ROM packaging tool by [@tedsteen].
+Did you make a NES-game but none of your friends own a Nintendo? Don't worry.
+Put your ROM and configuration in NES Bundler and build an executable for Mac,
+Windows or Linux. What you get is a single executable with
+
+- Simple UI for settings
+- Re-mappable Keyboard and Gamepad input (you bundle your default mappings).
+- Save/Restore state
+- Netplay!
+
+It's early days, but the key features are there, and work is ongoing
+to make it more mature!
+
+[nes-bundler]: https://github.com/tedsteen/nes-bundler
+[@tedsteen]: https://github.com/tedsteen
+
+### [Blackjack]
+
+![Blackjack: A procedural bridge being edited in real-time](blackjack.gif)
+
+[Blackjack] by @setzer22 is a new procedural modeling application made in Rust,
+using rend3, wgpu, and egui. It follows the steps of applications like
+Houdini, or Blender's geometry nodes project and provides a node-based
+environment to compose procedural recipes to create 3d models.
+
+The focus for the past few months has been on evolving Blackjack from a proof
+of concept into a usable application. Its current status is not yet production
+ready, but it can now be used to build complex procedural models editable inside
+a game engine thanks to its new engine integration system.
+
+Some of the new features include:
+
+- A better data model for meshes, based on groups and channels.
+- Game engine integration with Godot, more engines coming soon.
+- Introduce Lua as an extension language.
+- Add many new nodes: Extrude along curve, Copy to points...
+- Add experimental support for L-Systems.
+- Reworked Look & Feel
+
+A talk about Blackjack's vision and a tour of its features was shared at the
+start of July in the [Rust gamedev meetup][blackjack-talk-yt]. Interested
+developers are encouraged to [check the project out on GitHub][Blackjack] and
+post on the Discussion boards!
+
+[Blackjack]: https://github.com/setzer22/blackjack
+[blackjack-talk-yt]: https://onrendering.com/data/papers/catmark/HalfedgeCatmullClark.pdf
+
+### [bevy_shadertoy_wgsl] and [GLSL2WGSL]
+
+![Shaders courtesy of @leondenise.](shadertoy_wgsl_leon.gif)
+
+[bevy_shadertoy_wgsl] is a [Shadertoy] clone for the Bevy game engine,
+where the GLSL shader language is replaced by WGSL. It already comes
+with a dozen examples and plenty more to go. Feel free to add your own
+shaders to the list!
+
+Plus, [GLSL2WGSL] is a new translator tool that should help migrate the
+vast majority of GLSL code to WGSL.
+
+The above GIF showcases the new additions to the examples for
+[bevy_shadertoy_wgsl]: two shaders originally written in [Shadertoy] by
+[@leondenise], and translated to WGSL with the help of [GLSL2WGSL].
+The first part is a reproduction of Joe Gardner from the movie Soul,
+and the second part is a lightweight fluid shader.
+
+[bevy_shadertoy_wgsl]: https://github.com/eliotbo/bevy_shadertoy_wgsl
+[Shadertoy]: https://www.shadertoy.com
+[GLSL2WGSL]: https://eliotbo.github.io/glsl2wgsl/
+[@leondenise]: https://twitter.com/leondenise
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor that will be based around a
+Rust-powered node graph compositing engine.
+
+July's [sprint][graphite-sprint-17] focused on editor-centric
+refactors upgrading stopgap measures to more robust systems.
+
+- Making a splash: The default document is replaced by a welcome splash screen
+  following a refactor allowing for zero open documents.
+- Modifying for Macs: Input handling supports the nonstandard modifier keys on
+  Mac keyboards, including labels in the UI.
+- Setting a high bar: The menu bar cleans up actions and supports new ones like
+  "File" > "Import". Displayed hotkeys are based on the actual key mapping
+  source, varying by OS.
+- Keeping organized: The editor codebase is restructured to cut away technical
+  debt and create consistency for new contributors and better docs going forward.
+
+Open the [Graphite editor][graphite-live-demo] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-17]: https://github.com/GraphiteEditor/Graphite/milestone/17
+[graphite-live-demo]: https://editor.graphite.rs
+
+### Nintendo Switch Will Be a Tier 3 Target in Rust 1.64
+
+[The pull request by @jam1garner][switch-pr] that adds a no_std support for
+the aarch64-nintendo-switch-freestanding target was merged this month
+after a lengthy legal investigation.
+This is the first step towards working on incrementally adding support
+for the Nintendo Switch.
+Check out [this Twitter thread][switch-twi] for more details
+about the changes.
+
+And btw, speaking of Nintendo targets: the std support for the Nintendo 3DS
+(armv6k-nintendo-3ds) was [also merged this month][3ds-pr]!
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/vzr6oq/nintendo_switch_target_merged)_
+
+[@jam1garner]: https://github.com/jam1garner
+[switch-pr]: https://github.com/rust-lang/rust/pull/88991
+[switch-twi]: https://twitter.com/jam1garner/status/1547814292107378695
+[3ds-pr]: https://github.com/rust-lang/rust/pull/95897
+
+## Library Updates
+
+### [bevy_godot]
+
+[bevy_godot] is an in-development library that offers a familiar Bevy environment
+inside of the [Godot Engine][godot-engine]. [bevy_godot] currently features Scene
+Tree integration, collision detection, spawning Godot scenes from Bevy, and
+included examples to demonstrate the API. The upcoming update will feature Godot
+signal events, Bevy assets integration, and a full implementation of the Dodge
+the Creeps example game.
+
+[bevy_godot] is looking for contributors to help grow the library to fit all
+Godot Engine game development needs.
+
+[bevy_godot]: https://github.com/rand0m-cloud/bevy_godot
+[godot-engine]: https://godotengine.org
+
+### [hecs]
+
+[hecs] is a fast, lightweight, and unopinionated archetypal ECS library.
+
+[Version 0.8][hecs-changelog] marks a breaking change to most methods that
+previously took a generic type parameter `T: Component`, replacing them with
+methods taking type parameters which must be _references to_ component types
+instead. This resolves a long-standing footgun where users accustomed to writing
+`&T` in queries might write `world.get::<&T>`, interpreted by rustc as
+referencing the valid component type `&'static T`, resulting in code that
+compiles but fails to access the intended component.
+
+[hecs]: https://github.com/Ralith/hecs
+[hecs-changelog]: https://github.com/Ralith/hecs/blob/master/CHANGELOG.md#080
+
+### [bevy_mod_wanderlust]
+
+[bevy_mod_wanderlust]
+([GitHub](https://github.com/PROMETHIA-27/bevy_mod_wanderlust)) by
+[@PROMETHIA-27] is a character controller plugin for Bevy engine.
+
+Inspired by [this excellent video](https://www.youtube.com/watch?v=qdskE8PJy6Q),
+it is implemented on top of [Rapier physics](https://rapier.rs) and highly
+customizable. Wanderlust includes a variety of settings to target many different
+character controller types, including 2D/3D platformers, spacecraft, and
+first/third person games.
+
+[bevy_mod_wanderlust]: https://crates.io/crates/bevy_mod_wanderlust
+[@PROMETHIA-27]: https://github.com/PROMETHIA-27
+
+### [Lyon]
+
+![Variable width stroke in action](lyon.png)
+
+[Lyon] ([GitHub](https://github.com/nical/lyon)) by [Nical](https://github.com/nical)
+is a collection of crates providing various 2D vector graphics utilities, including
+fast tessellation algorithms, easy to integrate in typical GPU accelerated rendering
+engines.
+
+Lyon made its symbolic [1.0.0 release](https://crates.io/crates/lyon/1.0.0)
+reflecting the stability of the project. Highlights in this release include:
+
+- Initial support for variable line width in the stroke tessellator.
+- An efficient algorithm to query positions at given distances along a path.
+- Improved support for specifying custom endpoint attributes in paths and algorithms.
+- And more. You can read the [announcement blog post here](https://nical.github.io/posts/lyon-1-0.html).
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/vwdxim/announcing_lyon_100),
+[Twitter](https://twitter.com/nicalsilva/status/1546424285442473987?s=20&t=S1fXSoh2zWHbfTImCGYpPQ)_
+
+[Lyon]: https://github.com/nical/lyon
+
+### [Renet]
+
+{{ image_figure(
+    alt="3D capsles shooting red dots at each other"
+    src="renet_bevy_demo.gif"
+    caption="Demo using renet and bevy") }}
+
+[Renet] by [@lucaspoffo] is a network library to create
+games with the Server-Client architecture.
+
+Built on top of UDP, it has its own protocol to send and receive reliable messages
+more suited for fast-paced games than TCP. Some other features are:
+
+- Connection management
+- Authentication and encrypted connections
+- Communication through multiple types of channels:
+  - Reliable Ordered: guarantee ordering and delivery of all messages
+  - Unreliable Unordered: no guarantee of delivery or ordering of messages
+  - Block Reliable: for bigger messages, such as level initialization
+- Packet fragmentation and reassembly
+
+Renet comes with [bevy_renet], a plugin for the Bevy engine, and also with
+[renet_visualizer], an egui interface to visualize network metrics.
+
+[Renet]: https://github.com/lucaspoffo/renet
+[@lucaspoffo]: https://github.com/lucaspoffo
+[bevy_renet]: https://github.com/lucaspoffo/renet/tree/master/bevy_renet
+[renet_visualizer]: https://github.com/lucaspoffo/renet/tree/master/renet_visualizer
+
+### [miniquad]
+
+{{ image_figure(
+    alt="miniquad fileopen"
+    src="miniquad_gl2.gif"
+    caption="VirtualBox, gl2 as the only GPU acceleration available") }}
+
+[miniquad] is a safe and cross-platform rendering library
+focused on portability and low-end platform support.
+
+This month [OpenGl 2.1/GLESv2][gl2pr] PR got merged, adding support for old
+android phones, virtual machines, and just old computers.
+While the PR itself is quite small, it solved a very old design issue:
+[compatibilities proposal][mqcompat]. Fixing this issue opened the door for
+both lower-end backends, like gl1, and higher-level backends. Metal is the
+next in line.
+
+[miniquad]: https://github.com/not-fl3/miniquad/
+[gl2pr]: https://github.com/not-fl3/miniquad/pull/305
+[mqcompat]: https://github.com/not-fl3/miniquad/pull/176
+
+### [bevy_mod_fbx]
+
+{{ image_figure(
+    alt="A model using a PBR shader featuring roughness and metalicness texture maps"
+    src="bevy_fbx_maya_pbr.jpg"
+    caption="model courtesy of [Samuel Rosario](https://www.artstation.com/artwork/bKJ0EE), rendered in bevy") }}
+
+[bevy_mod_fbx] is a pre-alpha library to load FBX (Autodesk Filmbox) files
+into [bevy] 0.8, based on [fbxcel-dom].
+It currently:
+
+- Loads geometry and meshes
+- Loads mesh attributes such as color
+- Loads default material diffuse textures, normal maps, and emissive maps
+- Loads the custom Maya PBR materials, including all material textures
+- Load the scene tree and translate it to bevy's hierarchy
+
+Planned features include providing a basic Lambert/Phong shader
+to better handle more standard materials,
+loading animations and skinned mesh skeletons/rigs.
+
+The project is poorly tested and is looking for testers. It will soon be
+available on crates.io.
+
+[fbxcel-dom]: https://lib.rs/crates/fbxcel-dom
+[bevy]: https://bevyengine.org/
+[bevy_mod_fbx]: https://github.com/HeavyRain266/bevy_mod_fbx
+[Samuel Rosario]: https://www.artstation.com/artwork/bKJ0EE
+
+### [shame]
+
+![logo of shame - shader metaprogramming](raymarch_shame.jpg)
+
+[shame] lets you author shaders and pipeline layouts
+in a single seamless piece of rust code. It offers:
+
+- a simple and lightweight setup,
+- type checks from input assembly all the way to fragment output,
+- (re)generate different shaders/pipelines based on runtime parameters,
+- [shader hot reloading][shame-examples],
+- [examples using wgpu][shame-examples]!
+
+A Discord channel for questions/feedback is linked in the
+[GitHub readme][shame].
+
+<!-- i am unable to generate a permanent discord invite link,
+thats why i link to the project github, where i can update the
+link once it is outdated -->
+
+[raymarch-github]: https://github.com/RayMarch
+[shame]: https://github.com/RayMarch/shame
+[shame-examples]: https://github.com/RayMarch/shame/tree/main/examples
+
+### [bonsai-bt]
+
+{{ image_figure(
+    alt='A behavior tree visualization that starts with a "root" node and branches
+into leafs like "run" and "get in cover"'
+    src="bonsai.png"
+    caption="A visualization of a simple NPC behavior tree") }}
+
+[bonsai-bt] by [@Sollimann] is a Rust implementation of behavior trees.
+
+> A Behavior Tree (BT) is a data structure in which we can set the rules of how
+> certain behaviors can occur and the order in which they would execute.
+> BTs are a very efficient way of creating complex systems that
+> are both modular and reactive.
+> These properties are crucial in many applications,
+> which has led to the spread of BT from computer game programming
+> to many branches of AI and Robotics.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/vxk8h9/bonsaibt_a_behavior_tree_lib)_
+
+[bonsai-bt]: https://github.com/Sollimann/bonsai
+[@Sollimann]: https://github.com/Sollimann
+
+### [shades] and [shades-edsl]
+
+![a source code that uses shades and a running app with the result:
+a gradient from green to red](shades-edsl.png)
+
+[@phaazon] has published [a detailed article][shades-article] that introduces
+[shades] and [shades-edsl] - two Rust crates to write shaders by writing pure Rust:
+
+- The [shades] crate provides all needed types and other building blocks
+- while [shades-edsl] provides a proc-macro [EDSL][edsl-wiki]
+for transforming regular Rust code into the API from shades.
+
+> This crate provides an EDSL to build shaders, leveraging the Rust compiler (rustc)
+> and its type system to ensure soundness and typing.
+> Because shaders are written in Rust, this crate is completely language agnostic:
+> it can in theory target any shading language - the current tier-1 language
+> being GLSL. The EDSL allows to statically type shaders while still generating
+> the actual shading code at runtime.
+
+[@phaazon]: https://phaazon.net
+[shades-article]: https://phaazon.net/blog/shades-edsl
+[shades]: https://github.com/phaazon/shades
+[shades-edsl]: https://github.com/phaazon/shades-edsl
+[edsl-wiki]: https://en.wikipedia.org/wiki/Domain-specific_language#External_and_Embedded_Domain_Specific_Languages
+
+### [fdg]
+
+![black dots connected with ed lines in #d space](fdg.png)
+
+[fdg] by [@grantshandy] is a [force-directed graph][fdg-wiki] drawing framework.
+
+> The goal of this project is to provide a force-directed graph framework
+> and algorithms for Rust, as well as 2D and 3D visualizers
+> that work on the web and desktop.
+> It sits on top of [petgraph] and manages the positions of your nodes.
+
+You can view all the examples online [here][fdg-web].
+
+The project consists of three parts:
+
+- [fdg-sim] - the underlying force simulation framework that handles your
+  dataset's positions based on a physics engine of your choice (or creation).
+- [fdg-macroquad] - a visualizer that uses macroquad for rendering.
+- [fdg-img] - a SVG visualizer for your graphs.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/w92aya/fdg)_
+
+[fdg]: https://github.com/grantshandy/fdg
+[fdg-web]: https://grantshandy.github.io/fdg
+[@grantshandy]: https://grantshandy.github.io
+[petgraph]: https://crates.io/crates/petgraph
+[fdg-sim]: https://github.com/grantshandy/fdg/tree/main/fdg-sim
+[fdg-macroquad]: https://github.com/grantshandy/fdg/blob/main/fdg-macroquad
+[fdg-img]: https://github.com/grantshandy/fdg/tree/main/fdg-img
+[fdg-wiki]: https://en.wikipedia.org/wiki/Force-directed_graph_drawing
+[fdg-web-json]: https://grantshandy.github.io/fdg/json.html
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Hydrofoil Generation devs shared](https://twitter.com/HydrofoilG)
+    a bunch of screenshots and videos with a new boat.
+  - [@epcc10] shared a few videos about Idu getting a
+    [better water rendering and physics][idu-1] and [better interaction with soil][idu-2].
+  - [Felix Windström](https://twitter.com/sov_gott_games) shared a couple of
+    Paddlepunks updates: [a wizard leveling up their walls][paddlepunks-1],
+    and [increased the active time on witch's doritos][paddlepunks-2].
+  - [Legend of Worlds released their first devlog][legendofworlds-log].
+  - The [Bounce Up!][bounceup] block breaker game
+    shared a [video preview of the practice mode][bounceup-video].
+  - [Theta Wave is now is now playable in the browser on itch.io][theta-wave-itch].
+    Give it a try and let the author know what you think!
+  - [Fish Folly][fish-folly] posted a couple videos of
+    [their new AI](https://youtube.com/watch?v=YRE5g57aZEg) and
+    [the falling over mechanic](https://youtube.com/watch?v=RuoLInE34dM).
+  - [Punchy v0.0.2][punchy-2] and [v0.0.3][punchy-3] were released, featuring
+    scenes, egui UI, AI, playable web build,
+    new enemy variants, controller remapping, and throwable bottles.
+- Other tooling updates:
+  - [annelid] is a speedrun timer with autosplitter for fxpak/sd2snes written
+    using egui.
+  - [unitypacker] is a tool for creating .unitypackages from the command line.
+- Other learning material updates:
+  - [@PhaestusFox] released a bunch of Bevy tutorial videos covering:
+    gamepads, touch input, bevy 0.8 update & migration, and hierarchy.
+  - [The "Learn WGPU" tutorial was updated to wgpu v0.13][lear-wgpu-0-13].
+  - KyleMayes [has ported vulkan-tutorial.com to vulkanalia][vulkanalia-tut].
+  - [bevy_roguelike] is a project that implements reusable Bevy ECS
+    systems and components for writing roguelike games.
+- Other library updates:
+  - [wgpu v0.13 and naga v0.9][wgpu-13] bring the newest WGSL spec support,
+    improved presentation and pipelining, and lots of performance
+    and correctness improvements. The devs also decided to make the DX12 backend
+    default on Windows and are looking for testers.
+  - [bevy_pancam] is a 2d-camera plugin for Bevy that works with orthographic cameras.
+
+[@epcc10]: https://twitter.com/epcc10
+[idu-1]: https://twitter.com/epcc10/status/1545918011185549313
+[idu-2]: https://twitter.com/epcc10/status/1547723415015919622
+[paddlepunks-1]: https://twitter.com/sov_gott_games/status/1543227926052847616
+[paddlepunks-2]: https://twitter.com/sov_gott_games/status/1548340577233580035
+[legendofworlds-log]: https://reddit.com/r/rust_gamedev/comments/w2508b/legend_of_worlds_1
+[bounceup]: https://cryscan.itch.io/bounce-up
+[bounceup-video]: https://youtube.com/watch?v=ohNQgahuj6U
+[theta-wave-itch]: https://reddit.com/r/rust/comments/w4h4ad/thetawave_play_itch
+[fish-folly]: https://github.com/mrDIMAS/FishFolly
+[punchy-2]: https://reddit.com/r/rust/comments/vt44wq/media_punchy_v002
+[punchy-3]: https://reddit.com/r/rust/comments/waltwb/media_fish_fight_punchy_v003
+[annelid]: https://github.com/dagit/annelid
+[unitypacker]: https://github.com/paulfigiel/unitypacker
+[lear-wgpu-0-13]: https://sotrh.github.io/learn-wgpu/news/0.13
+[bevy-basics]: https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[@PhaestusFox]: https://youtube.com/c/PhaestusFox
+[vulkanalia-tut]: https://reddit.com/r/rust_gamedev/comments/w2g16h/another_vulkan_tutorial
+[wgpu-13]: https://reddit.com/r/rust_gamedev/comments/vp571t/release_of_wgpu_v013_and_call_for_testing
+[bevy_pancam]: https://github.com/johanhelsing/bevy_pancam
+[bevy_roguelike]: https://github.com/tomuxmon/bevy_roguelike
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- [/r/rust](https://reddit.com/r/rust):
+  - ["Are these misconceptions about rust?"](https://reddit.com/r/rust/comments/vruvxx/are_these_misconceptions_about_rust)
+- [/r/rust_gamedev](https://reddit.com/r/rust_gamedev):
+  - ["Using WGPU + crates directly or Bevy?"](https://reddit.com/r/rust_gamedev/comments/vrfjw2/using_wgpu_crates_directly_or_bevy)
+  - ["A 2D, lightweight graphics library, Rust-only?"](https://reddit.com/r/rust_gamedev/comments/w9l1um/a_2d_lightweight_graphics_library_rustonly)
+  - ["Framework or libraries for developing Android/iOS games"](https://reddit.com/r/rust_gamedev/comments/wbg7xg/framework_or_libraries_for_developing_androidios)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/wm0rl8/this_month_in_rust_gamedev_36_july_2022),
+[Twitter](https://twitter.com/rust_gamedev/status/1557819704684716035),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
diff --git a/content/news/036/lifecode.jpg b/content/news/036/lifecode.jpg
new file mode 100644
index 000000000..8a6fbcfaa
Binary files /dev/null and b/content/news/036/lifecode.jpg differ
diff --git a/content/news/036/lyon.png b/content/news/036/lyon.png
new file mode 100644
index 000000000..0165a5ad4
Binary files /dev/null and b/content/news/036/lyon.png differ
diff --git a/content/news/036/miniquad_gl2.gif b/content/news/036/miniquad_gl2.gif
new file mode 100644
index 000000000..76f5b1ebb
Binary files /dev/null and b/content/news/036/miniquad_gl2.gif differ
diff --git a/content/news/036/nes-bundler.png b/content/news/036/nes-bundler.png
new file mode 100644
index 000000000..5cca15618
Binary files /dev/null and b/content/news/036/nes-bundler.png differ
diff --git a/content/news/036/raymarch_ferris_3d_release.jpg b/content/news/036/raymarch_ferris_3d_release.jpg
new file mode 100644
index 000000000..ac4d0278b
Binary files /dev/null and b/content/news/036/raymarch_ferris_3d_release.jpg differ
diff --git a/content/news/036/raymarch_shame.jpg b/content/news/036/raymarch_shame.jpg
new file mode 100644
index 000000000..1654358f7
Binary files /dev/null and b/content/news/036/raymarch_shame.jpg differ
diff --git a/content/news/036/re-rolling_gameplay.png b/content/news/036/re-rolling_gameplay.png
new file mode 100644
index 000000000..94366afb6
Binary files /dev/null and b/content/news/036/re-rolling_gameplay.png differ
diff --git a/content/news/036/renet_bevy_demo.gif b/content/news/036/renet_bevy_demo.gif
new file mode 100644
index 000000000..c78824ea0
Binary files /dev/null and b/content/news/036/renet_bevy_demo.gif differ
diff --git a/content/news/036/robo-os.jpg b/content/news/036/robo-os.jpg
new file mode 100644
index 000000000..bd760bafc
Binary files /dev/null and b/content/news/036/robo-os.jpg differ
diff --git a/content/news/036/ruggrogue.png b/content/news/036/ruggrogue.png
new file mode 100644
index 000000000..82c046a95
Binary files /dev/null and b/content/news/036/ruggrogue.png differ
diff --git a/content/news/036/rust_game_ports.jpg b/content/news/036/rust_game_ports.jpg
new file mode 100644
index 000000000..4a246bd42
Binary files /dev/null and b/content/news/036/rust_game_ports.jpg differ
diff --git a/content/news/036/rusteroids-screenshot-tutorial15.png b/content/news/036/rusteroids-screenshot-tutorial15.png
new file mode 100644
index 000000000..1757b8d3d
Binary files /dev/null and b/content/news/036/rusteroids-screenshot-tutorial15.png differ
diff --git a/content/news/036/shadertoy_wgsl_leon.gif b/content/news/036/shadertoy_wgsl_leon.gif
new file mode 100644
index 000000000..4bff95139
Binary files /dev/null and b/content/news/036/shadertoy_wgsl_leon.gif differ
diff --git a/content/news/036/shades-edsl.png b/content/news/036/shades-edsl.png
new file mode 100644
index 000000000..58447095b
Binary files /dev/null and b/content/news/036/shades-edsl.png differ
diff --git a/content/news/036/simon.gif b/content/news/036/simon.gif
new file mode 100644
index 000000000..d5854eccb
Binary files /dev/null and b/content/news/036/simon.gif differ
diff --git a/content/news/036/veloren.jpg b/content/news/036/veloren.jpg
new file mode 100644
index 000000000..bd616ba8e
Binary files /dev/null and b/content/news/036/veloren.jpg differ
diff --git a/content/news/036/whats-in-a-wgsl-fragment-shader-with-bevy.png b/content/news/036/whats-in-a-wgsl-fragment-shader-with-bevy.png
new file mode 100644
index 000000000..589f1716e
Binary files /dev/null and b/content/news/036/whats-in-a-wgsl-fragment-shader-with-bevy.png differ
diff --git a/content/news/036/wor-capsule.jpg b/content/news/036/wor-capsule.jpg
new file mode 100644
index 000000000..66507148e
Binary files /dev/null and b/content/news/036/wor-capsule.jpg differ
diff --git a/content/news/037/android_playground.gif b/content/news/037/android_playground.gif
new file mode 100644
index 000000000..d747bf5d8
Binary files /dev/null and b/content/news/037/android_playground.gif differ
diff --git a/content/news/037/bevy_jam_2.png b/content/news/037/bevy_jam_2.png
new file mode 100644
index 000000000..a28e636c8
Binary files /dev/null and b/content/news/037/bevy_jam_2.png differ
diff --git a/content/news/037/bevy_kira_audio_settings.png b/content/news/037/bevy_kira_audio_settings.png
new file mode 100644
index 000000000..1aeec72aa
Binary files /dev/null and b/content/news/037/bevy_kira_audio_settings.png differ
diff --git a/content/news/037/bombercrab.jpg b/content/news/037/bombercrab.jpg
new file mode 100644
index 000000000..2a96fafda
Binary files /dev/null and b/content/news/037/bombercrab.jpg differ
diff --git a/content/news/037/catacomb_2.png b/content/news/037/catacomb_2.png
new file mode 100644
index 000000000..8a095f4ff
Binary files /dev/null and b/content/news/037/catacomb_2.png differ
diff --git a/content/news/037/combo_box.png b/content/news/037/combo_box.png
new file mode 100644
index 000000000..bf3afee01
Binary files /dev/null and b/content/news/037/combo_box.png differ
diff --git a/content/news/037/country_slice.gif b/content/news/037/country_slice.gif
new file mode 100644
index 000000000..aa1f362f6
Binary files /dev/null and b/content/news/037/country_slice.gif differ
diff --git a/content/news/037/cybergate.jpg b/content/news/037/cybergate.jpg
new file mode 100644
index 000000000..67c137782
Binary files /dev/null and b/content/news/037/cybergate.jpg differ
diff --git a/content/news/037/gamedev-meetup.png b/content/news/037/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/037/gamedev-meetup.png differ
diff --git a/content/news/037/gamercade.gif b/content/news/037/gamercade.gif
new file mode 100644
index 000000000..8ddd534c8
Binary files /dev/null and b/content/news/037/gamercade.gif differ
diff --git a/content/news/037/graphite.png b/content/news/037/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/037/graphite.png differ
diff --git a/content/news/037/hot-lib-reloader.png b/content/news/037/hot-lib-reloader.png
new file mode 100644
index 000000000..9ee74f0ea
Binary files /dev/null and b/content/news/037/hot-lib-reloader.png differ
diff --git a/content/news/037/index.md b/content/news/037/index.md
new file mode 100644
index 000000000..c1d5c4353
--- /dev/null
+++ b/content/news/037/index.md
@@ -0,0 +1,761 @@
++++
+title = "This Month in Rust GameDev #37 - August 2022"
+transparent = true
+date = 2022-09-24
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 37th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Bevy Jam #2][bevy-jam-results]
+
+![Bevy Jam 2](bevy_jam_2.png)
+
+Voting on [Bevy Jam #2][bevy-jam] just finished! It was a
+10 day event, where the goal was to make a game in
+[Bevy Engine][bevy-engine], the free and open-source game engine
+built in Rust. The theme was 'Combine'.
+
+The [full results can be found on itch.io][bevy-jam-results]. There were 404 participants,
+85 submissions, and 2,674 ratings, making it the biggest Bevy Jam yet!
+(And maybe the biggest Rust game jam ever?)
+
+Here are the top five games:
+
+[bevy-jam]: https://itch.io/jam/bevy-jam-2/
+[bevy-jam-results]: https://itch.io/jam/bevy-jam-2/results
+[bevy-engine]: https://bevyengine.org/
+
+#### 🥇 First Place: [USA Football League Scouting Combine XLV][usa-football]
+
+![USA Football League Scouting Combine XLV logo](usa_football.png)
+
+[USA Football League Scouting Combine XLV][usa-football] is a game where you take
+part in the historic unveiling of the "Combine Combine" event at this year's
+USA Football League Scouting Combine!
+
+USAFLSCXLV is singleplayer action game where you attempt to score as many touchdowns
+as you can while avoiding professional football players, navigating a corn maze
+and also avoiding a combine machine harvesting the maze.
+
+The source for the game is available on [GitHub][usa-football-source].
+
+[usa-football]: https://ramirezmike2.itch.io/usa-football-league-scouting-combine-xlv
+[usa-football-source]: https://github.com/ramirezmike/bevy_jam_02_entry
+
+#### 🥈 Second Place: [Loot Goblin][loot-goblin]
+
+![Loot Goblin](loot_goblin.png)
+
+[Loot Goblin][loot-goblin] is a game where you craft your way to victory in a
+unique adventurer's backpack simulation!
+
+We're going dungeon crawling, but all the hard work is done for you by the valiant
+Sir Hoardalot, and you, as his resourcesful Loot Goblin are going to keep his
+backpack in order! Craft potions and weapons to strengthen the hero, and help
+kill the evil Ogre Necromancer.
+
+The source code for the game is available [on GitHub][loot-goblin-source].
+
+[loot-goblin]: https://park-dev.itch.io/loot-goblin
+[loot-goblin-source]: https://github.com/vanGeck/bevy-jam-2
+
+#### 🥉 Third Place: [Shanty Quest: Treble at Sea][shanty-quest]
+
+![Shanty Quest Screenshot](shanty_quest.png)
+
+In [Shanty Quest: Treble at Sea][shanty-quest], you combine the magical instruments
+and become the Pirate King!
+
+The source code is available on [GitHub][shanty-quest-source].
+
+[shanty-quest]: https://jabuwu.itch.io/shanty-quest
+[shanty-quest-source]: https://github.com/jabuwu/shanty-quest
+
+#### Fourth Place: [Combobox][combobox]
+
+![Combobox Screenshot](combo_box.png)
+
+[Combobox][combobox] is a game where you navigate through space with a tiny robot
+combining boxes with unique features!
+
+The source code is available on [GitHub][combobox-source].
+
+[combobox]: https://combobox-game.itch.io/combobox
+[combobox-source]: https://github.com/ComboboxGame/Combobox
+
+#### Fifth Place: [Mole Rancher][mole-rancher]
+
+![Mole Rancher Screenshot](mole_rancher.png)
+
+[Mole Rancher][mole-rancher] is a game where you made it through university, got
+your PhD, and now you have been selected to work in an top secret experimental
+facility which promises a way to generate infinite energy through the combination
+of various strange particles.
+
+Use power to generate curious molecules, check their properties in your logbook,
+monitor their progress through your trusty E-merge device, and try not to let the
+reactor overheat!
+
+And don't worry about those armed guards on the way in, as long as you meet your
+quota then you'll have no problems...
+
+The source for this game is available on [GitHub][mole-rancher-source].
+
+[mole-rancher]: https://infinitefall.itch.io/mole-rancher
+[mole-rancher-source]: https://github.com/V4L3NC3/mole_rancher
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 19th Rust Gamedev Meetup took place in August. You can watch the recording of
+the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule from
+the meetup:
+
+- RustConf Arcade Cabinet - [@carlosupina]
+- Blue Engine - [@aryanpur_elham]
+- Veloren - [@VelorenProject]
+- Graphite - [@GraphiteEditor]
+- All is Cubes - [@switchborg]
+
+The meetups take place on the second Saturday every month via the [Rust Gamedev
+Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/s9kf9HVUKYE
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@carlosupina]: https://twitter.com/carlosupina
+[@aryanpur_elham]: https://twitter.com/aryanpur_elham
+[@VelorenProject]: https://twitter.com/VelorenProject
+[@GraphiteEditor]: https://twitter.com/GraphiteEditor
+[@switchborg]: https://twitter.com/switchborg
+
+### [Bombercrab Challenge Report][bombercrab-article]
+
+![screenshot of the game: many players, block and an explosion](bombercrab.jpg)
+
+[Pablo Mansanet shared a report][bombercrab-article] about how
+the 2022 Tokyo Rust Game Hack went.
+
+[bombercrab-article]: https://blog.tonari.no/rust-game-hack-2022
+
+## Game Updates
+
+### [Catacomb 2-64k][catacomb-2-repo]
+
+[![Catacomb 2 image](catacomb_2.png)][catacomb-2-repo]
+
+[Catacomb 2-64k][catacomb-2-repo] is a (completed) experimental
+project in porting a moderately complex project, first from C to unsafe Rust,
+then to (fully) safe Rust.
+
+The objective of the project has been to study the tooling, transformations
+and the overall process required perfom real-world, exact, ports; an article
+will follow in September on [64kramsystem's blog][64ramsystem-blog].
+
+The port uses the [Rust-SDL2 bindings][rust-sdl2-bindings]. More exact ports
+of id Software games are expected in the future, with the introduction of a
+refactoring tool based on the
+[Language Server Protocol][language-server-protocol]/[Rust Analyzer][rust-analyzer].
+
+[catacomb-2-repo]: https://github.com/64kramsystem/catacomb_ii-64k
+[64ramsystem-blog]: https://saveriomiroddi.github.io
+[rust-sdl2-bindings]: https://github.com/Rust-SDL2/rust-sdl2
+[language-server-protocol]: https://microsoft.github.io/language-server-protocol
+[rust-analyzer]: https://github.com/rust-lang/rust-analyzer
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="browser udp technology"
+    src="cybergate.jpg"
+    caption="The new browser version works exactly like the native version") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul
+is a new multiplayer project that aims at procedurally generating distinct
+universes and gameplay experiences. CyberGate is the name of the main world
+where universes can be created and accessed by quantum portals.
+
+Recent updates:
+
+- Ported to browser (wgpu with webgl backend)
+- Unreliable network protocol achieved with WebRTC
+- Dynamically spawn and synchronize ECS components using macros
+- Massively improved the events system and actions system
+- Refactored over 50% of the project
+- Small features such as grabbing objects and dash forward
+- Fixed 3 major bugs that slowed down the server
+
+[Join the Discord server][cybergate-dis] to participate in upcoming Phase 5.0!
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/x60n9y/cybergate_45_progress_browser_udp_client_with/)_
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Rusty Aquarium]
+
+{{ image_figure(
+    alt="Rusty Aquarium visualization"
+    src="rustyaquarium.gif"
+    caption="Visualize data as a fish tank with Rusty Aquarium") }}
+
+[Rusty Aquarium] by [@ollej] is a data visualization tool as a virtual fish
+tank written in Rust and Macroquad. Different data points control how many
+fishes are shown, how they move, how fast they swim, and which size they are.
+It can be used to monitor data in a visual way, while those uninitiated only
+see a serene fish tank.
+
+Since Macroquad is cross-platform, Rusty Aquarium is available for Windows,
+Mac, Linux as well as for browsers using WebAssembly.
+
+The aquarium can be controlled in various different ways:
+
+- System monitoring binary to show CPU usage, disk usage, and processes.
+- Integrate with Google Sheets to control fishes.
+- Back it with an URL that generates a JSON file.
+
+This month, a blog post with the [story behind Rusty Aquarium][RustyAquariumStory]
+was published on the [Agical] blog. The code was restructured and the packaged
+files now contain binaries for input data generation.
+
+[Rusty Aquarium]: https://github.com/ollej/rusty-aquarium
+[@ollej]: https://twitter.com/ollej
+[RustyAquariumStory]: https://blog.agical.se/en/posts/the-story-behind-rusty-aquarium/
+[Agical]: https://blog.agical.se/en/
+
+### [Infinite Bunner]
+
+{{ image_figure(
+    alt="Infinite Bunner"
+    src="infinitebunner.gif"
+    caption="Port of the Infinite Bunner game to Rust and Macroquad") }}
+
+[Infinite Bunner] is a game from the book [Code the Classics vol 1] that has
+been ported by [@ollej] to Rust and Macroquad from Python and PyGame Zero.
+It is a modern version of the classic arcade game Frogger with improved
+graphics and sound.
+
+The game has been sent in to the [Rust Game Ports][rust-game-ports] project as
+an educational example. It shows how to make a 2D game in Macroquad with
+graphics and sound.
+
+[Code the Classics vol 1] is a book from Wireframe Magazine that tells the
+history of five classic video games. It also includes code listings of modern
+versions of the games written in Python with the PyGame Zero framework.
+
+[Infinite Bunner]: https://github.com/ollej/rust-bunner-macroquad
+[rust-game-ports]: https://github.com/rust-gamedev/rust-game-ports
+[Code the Classics vol 1]: https://wireframe.raspberrypi.org/books/code-the-classics1
+
+### Tiny Building Game
+
+![Country_slice_gif](country_slice.gif)
+
+The untitled "Tiny Building Game" is a stress-free feel-good game focused on just
+building something pretty. It is being made by [@anastasiaopara] and
+[@h3r2tic], who has recently joined the project!
+
+This month, there was a large visual update, which added [trees and flowers][twitter-thread-1],
+as well as [fences and gates][twitter-thread-2].
+
+Right now, the team is actively working on setting up a Steam page. Stay
+tuned by following the [newsletter][country-slice-newsletter]!
+
+[country-slice-newsletter]: https://dashboard.mailerlite.com/forms/10395/51067704544593017/share
+[twitter-thread-1]: https://twitter.com/anastasiaopara/status/1560673892574035969
+[twitter-thread-2]: https://twitter.com/anastasiaopara/status/1565629377823395841
+[@anastasiaopara]: https://twitter.com/anastasiaopara
+[@h3r2tic]: https://twitter.com/h3r2tic
+
+### [Math It]
+
+{{ image_figure(
+    alt="Promotional image of the Math It game"
+    src="math_it.png"
+    caption="Promotional image of the Math It game") }}
+
+[Math It] was made with [Bevy] for the [Bevy Jam 2].
+
+The goal of the game is to get as close as possible
+to the target number and compete with others on a global leaderboard.
+
+[Math It]: https://vrixyz.itch.io/math-it
+[Bevy Jam 2]: https://itch.io/jam/bevy-jam-2
+[Bevy]: https://bevyengine.org/
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="A cave with lava"
+    src="veloren.jpg"
+    caption="A barrier of lava") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In August, long-awaited work on a new internationalization system with Fluent
+was merged. The real-time simulation v2 system is now in a place, which has
+allowed for blacksmiths to now sell swords and armour with only a few additional
+lines of code. Work was done to implement a spectator mode in game, as well as
+fix a bug about respawning while having a status effect on you persisting, such
+as being on fire from swimming in lava.
+
+August's full weekly devlogs: "This Week In Veloren...":
+[#183][veloren-183],
+[#184][veloren-184],
+[#185][veloren-185],
+[#186][veloren-186],
+[#187][veloren-187].
+
+[veloren]: https://veloren.net
+[veloren-183]: https://veloren.net/devblog-183
+[veloren-184]: https://veloren.net/devblog-184
+[veloren-185]: https://veloren.net/devblog-185
+[veloren-186]: https://veloren.net/devblog-186
+[veloren-187]: https://veloren.net/devblog-187
+
+## Engine Updates
+
+### [miniquad]
+
+[![diff](android_playground.gif)][quad-android-playground]
+
+[miniquad] is a pure Rust, cross-platform graphics library.
+
+This month was about polishing miniquad-android experience.
+To make it easier for regression testing, miniquad got
+[the android playground][quad-android-playground].
+
+The playground demonstrates all known android shenanigans in
+one quad-based app.
+
+It includes:
+
+- onscreen keyboard
+- java interop (with file dialog as an example)
+- dealing with big java services (with bluetooth as an example)
+- accessing permissions, both runtime and compile time
+
+[miniquad]: https://github.com/not-fl3/miniquad/
+[quad-android-playground]: https://github.com/not-fl3/quad-android-playground
+
+### [Runty8][runty8-repo]
+
+[![Runty 8 logo][runty8-logo]][runty8-repo]
+
+[Runty8][runty8-repo] is an experimental port of the [Pico8][pico8-site]
+fantasy console that supports writing games in Rust.
+
+Its current goals are to follow Pico8's APIs as closely as possible,
+to allow easily porting existing games to Rust,
+as well as developing new games in a familiar development environment.
+
+The project is in very early stages, and is currently looking for contributors.
+If you're interested, feel free to read their [contributing guide][runty8-contributing-guide]
+or browse through the [open issues][runty8-open-issues].
+
+[runty8-repo]: https://github.com/jjant/runty8
+[runty8-contributing-guide]: https://github.com/jjant/runty8/blob/master/CONTRIBUTING.md
+[runty8-open-issues]: https://github.com/jjant/runty8/issues
+[pico8-site]: https://www.lexaloffle.com/pico-8.php
+[runty8-logo]: https://user-images.githubusercontent.com/15112080/188467323-037617cf-7dbc-4988-bbd7-fbafd1524455.png
+
+### [Gamercade]
+
+{{ image_figure(
+    alt="Gamercade preview"
+    src="gamercade.gif"
+    caption="Preview of the Audio Editor in Action") }}
+
+[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub])
+by @RobDavenport is a WASM-powered fantasy console focused
+on building multiplayer neo-retro games.
+
+Gamercade is preparing for their first alpha release! This includes all the
+core features needed for a fantasy console and game library: input, graphics,
+and audio. It also has networked multiplayer, and an editor.
+
+They implemented the in-game sound engine from scratch. They also improved the
+editor to allow creation of instruments and tracks. It synthesizes sounds at
+runtime, and produces something like an 80s synth, a 90s SoundBlaster, and a
+touch of SNES. Songs and Sfx are built using a tracker interface.
+[This video][Gamercade-Video] shows a small sample of what it is capable of.
+
+"Wavetables" are great for classic sounds like 8-bit chiptunes or even more
+complicated sounds. "FM Synth" is a 4-op FM synthesizer. Masters of this
+technique can produce a huge variety of instruments, effects, and other
+otherwordly things. "Sampler" rounds out the rest of the system, providing
+pre-recorded sample playback. Samples can be pitched and played as the desired
+note.
+
+Come hang out and chat on [Discord][Gamercade-Discord], where the developers
+interact with members and post updates daily. The project is
+[open source][Gamercade-GitHub] and looking for contributors, suggestions,
+as well as awesome game demos.
+
+[Gamercade]: https://gamercade.io
+[Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j
+[Gamercade-GitHub]: https://github.com/gamercade-io/gamercade_console
+[Gamercade-Video]: https://youtube.com/watch?v=cRsOvefap_U
+
+## Tooling Updates
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor that will be based around a
+Rust-powered node graph compositing engine.
+
+August's [sprint][graphite-sprint-18] focused on Bézier shape editing and layer
+transformation improvements.
+
+- Ahead of the curve: Bézier shapes gain support for curve extension and shape
+  closing using the Pen tool and inserting points along curves with the Path
+  tool.
+- Front and center: Layer origins may be set to control the center of rotation
+  and scale using the Transform tool.
+
+Meanwhile, design and architecture work on the Graphene node-based programming
+language has been well underway. Graphene is the data graph engine that will
+replace Graphite's tree-based layer system in the next few sprints and evolve
+into a raster-and-vector render engine over time.
+
+Open the [Graphite editor][graphite-live-demo] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-18]: https://github.com/GraphiteEditor/Graphite/milestone/18
+[graphite-live-demo]: https://editor.graphite.rs
+
+## Library Updates
+
+### [hot-lib-reloader]
+
+![hot-lib-reloader thumbnail](hot-lib-reloader.png)
+
+[hot-lib-reloader] is a development tool that allows you to reload functions
+of a running Rust program. This allows to do "live programming" where you
+modify code and immediately see the effects in your running program. Gone
+are the days of edit-compile-restart loops (to some degree).
+
+hot-lib-reloader works by reloading parts of your application that are defined
+as dynamic libraries. This approach works on Linux, MacOS, and Windows but has
+some constraints - see the [documentation] for details. There are several
+[examples], showing how to create hot-reload setups with various frameworks
+and libraries, e.g. bevy, egui, and [nannou].
+
+[hot-lib-reloader]: https://github.com/rksm/hot-lib-reloader-rs
+[documentation]: https://docs.rs/hot-lib-reloader/latest/hot_lib_reloader/
+[examples]: https://github.com/rksm/hot-lib-reloader-rs/tree/master/examples
+[nannou]: https://youtu.be/hyyeLtJ7SQk
+
+### [bevy_kira_audio]
+
+{{ image_figure(
+    alt="Configuring a sound when playing it"
+    src="bevy_kira_audio_settings.png"
+    caption="Configuring a sound when playing it") }}
+
+[bevy_kira_audio] by [@nikl_me] is an alternative audio plugin for the [Bevy]
+game engine. It uses [Kira] as its audio library and aims to integrate
+well with Bevy's ECS.
+
+Last month saw the release of versions [0.11.0] and [0.12.0]. With the
+latest version, sound settings like volume, playback-rate, or panning can
+be adjusted directly when playing audio. The screenshot above shows the new API
+with multiple example settings. The plugin now also offers control
+over single sound instances via asset handles and will apply configurable
+tweens to most operations.
+
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio/
+[Kira]: https://github.com/tesselode/kira
+[0.11.0]: https://github.com/NiklasEi/bevy_kira_audio/blob/main/CHANGELOG.md#v0110
+[0.12.0]: https://github.com/NiklasEi/bevy_kira_audio/blob/main/CHANGELOG.md#v0120
+
+### [bevy_asset_loader]
+
+{{ image_figure(
+    alt="Configuration of a loading state"
+    src="loading_state.png"
+    caption="Configuration of a loading state") }}
+
+[bevy_asset_loader] by [@nikl_me] is a plugin for [Bevy] apps aiming to
+improve a common pattern for asset-loading. The boilerplate required to set up
+a loading-state is reduced to a minimum. The plugin is based on storing
+asset handles in resources, which makes it easy to use them in any system
+across your app.
+
+The screenshot above shows how a loading state can be added to the Bevy app
+in the latest version of the plugin. The update also fixed issues with
+configuring the same loading state in different places of your code and enabled
+users to define their own dynamic assets.
+
+[@nikl_me]: https://twitter.com/nikl_me
+[bevy_asset_loader]: https://github.com/NiklasEi/bevy_asset_loader/
+
+### [Notan v0.6][Notan]
+
+![notan examples](notan.gif)
+
+[Notan] is a simple and portable layer designed to create your own
+apps on top of it without worrying about platform-specific code.
+
+It provides a set of APIs and tools that can be used to create your
+project in an ergonomic manner without enforcing any structure or pattern,
+sharing the same codebase across multiple platforms.
+
+The main focus for version [v0.6] was improving how uniforms
+are set using the layout std140 for the user with a macro,
+among internal fixes and improvements.
+
+[Notan]: https://github.com/Nazariglez/notan
+[v0.6]: https://github.com/Nazariglez/notan/releases/tag/v0.6.0
+
+### [Shipyard]
+
+[Shipyard] is an Entity Component System focused on usability and speed.
+
+This monthh, 0.6 was released with big improvements to workloads and
+tracking.
+
+The new [visualizer][shipyard-visualizer] is a first step towards visual
+inspection and interaction with the library.
+For now it can only show which components are used by which systems
+and vice-versa.
+
+Learn more about this release in the [release post][shipyard-release-post].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/wi71lu/shipyard_06_release/)
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/wi72vc/shipyard_06_release/)_
+
+[Shipyard]: https://github.com/leudz/shipyard
+[shipyard-visualizer]: https://leudz.github.io/shipyard/visualizer
+[shipyard-release-post]: https://users.rust-lang.org/t/shipyard-0-6-release/79504
+
+### [Edict]
+
+[Edict] by [@zakarumych] is powerful Rust ECS crate that expands traditional ECS
+feature set. The new version 0.2 is getting [ready for release]. This ECS is based
+on archetypes for fast cache-friendly iteration. And there are quite a few novel
+features:
+
+- [Edict] allows to express relations between entities using [`Relation`] trait.
+  Relations are linked to a pair of entities - origin and target. This opens a
+  wide range of opportunities to create entity graphs with custom logic.
+- Custom hooks for components and relations to trigger actions when component is
+  dropped/replaced, or when relation target is dropped.
+- Optional [`Component`] trait. [Edict] allows using component types that do not
+  implement [`Component`] with some restrictions.
+- Change tracking with flexible queries for modified components suitable for
+  complex use cases. E.g. incremental saves can fetch all components modified
+  since previous save.
+- Type-agnostic component borrowing. Component type may define list of types
+  that can be borrowed from it. Important use case is borrowing [`dyn Traits`].
+- [Edict] supports parallel execution. Built-in scheduler uses systems that
+  implement [`System`] trait. Functions can be safely transformed into systems
+  similarly to [`bevy_ecs`].
+
+[Edict]: https://github.com/zakarumych/edict
+[@zakarumych]: https://github.com/zakarumych
+[ready for release]: https://docs.rs/edict/0.2.0-rc.3/edict/
+[`Relation`]: https://docs.rs/edict/0.2.0-rc.3/edict/relation/trait.Relation.html
+[`Component`]: https://docs.rs/edict/0.2.0-rc.3/edict/component/trait.Component.html
+[`dyn Traits`]: https://doc.rust-lang.org/book/ch17-02-trait-objects.html
+[`System`]: https://docs.rs/edict/0.2.0-rc.3/edict/system/trait.System.html
+[`bevy_ecs`]: https://crates.io/crates/bevy_ecs
+
+### [grid_pathfinding]
+
+[grid_pathfinding] is a new pathfinding crate aimed at providing a fast,
+out-of-the-box system for pathfinding on various types of grids. While the
+current 0.1.1 release is not very configurable yet, the idea is to make the
+crate more malleable working towards a 0.2.0 release so that it will support
+a range of grids (4-connected, 8-connected, weighted, etc.) as well as
+heuristics. Specifically, [grid_pathfinding] 0.1 assumes a uniform-cost
+8-grid with a Chebyshev cost metric and heuristic. More long-term goals are
+support for multi-tile and multi-agent pathfinding variants.
+
+The current implementation is based on [Jump Point Search] with
+[improved pruning rules]. On top of this, [connected components] are used to
+avoid flood-filling behaviour if no path exists - see the
+[documentation][gp-docs] and [examples][gp-examples] for information on
+how to manage these components. Especially when simulating many agents in
+real-time, using components can make a big difference.
+
+[grid_pathfinding]: https://github.com/tbvanderwoude/grid_pathfinding
+[gp-docs]: https://docs.rs/grid_pathfinding/0.1.1/grid_pathfinding/
+[gp-examples]: https://github.com/tbvanderwoude/grid_pathfinding/tree/main/examples
+[Jump Point Search]: https://en.wikipedia.org/wiki/Jump_point_search
+[connected components]: https://en.wikipedia.org/wiki/Component_(graph_theory)
+[improved pruning rules]: https://www.researchgate.net/publication/287338108_Improving_jump_point_search
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+<!-- TODO: do i need to put announcements here? oR move them to the next month? -->
+
+- Other game updates:
+  - [Caveth][caveth] is a game made with macroquad
+    where you can shoot enemies with a cannon.
+  - [Im-Oab released a free Steam demo of the shump Flesh][flesh-demo]
+    and also added [new enemy types](https://twitter.com/Im_Oab/status/1557714901434781696),
+    [boss animations](https://twitter.com/Im_Oab/status/1564581193454354432),
+    and [bullet shadows](https://twitter.com/Im_Oab/status/1562015685521604610).
+  - [Spherical Go][spherical-go] if the Go game's implementation
+    with a variety of spherical fields.
+  - [Combine and Conquer has a new devlog about 0.10 version][cnc-0-10] that brings
+    vector graphics, "merger" and "splitter" structures, new tech-tree UI,
+    overlay improvements, and new tiers for existing structures.
+  - [bevy-cheeseball] is a 3D marble game inspired by Monkey Ball
+    and made with Bevy and Rapier.
+  - [Punchy v0.04][punchy-v0-0-4] was released,
+    featuring MVP for the first boss enemy, an entirely refactored
+    fighter state model [which was written up on the wiki][punchy-wiki],
+    updates to the enemy AI targeting, camera progression boundaries,
+    updates to debug tools, a health recovery item,
+    and updates to the way attacks are defined and loaded from resources.
+- Other learning material updates:
+  - [Console #118 - Interview with Connor of rend3][console-118]
+  - PhaestusFox added a bunch of new videos
+    to their ["Bevy Basics"][bevy-basics] YouTube series.
+  - [@fronkongames shared a quick guide][unity-guide] to integrating Rust code
+    into Unity.
+  - [@samkevich published a "Learn OpenGL with Rust" series][learn_gl_with_rust].
+  - [@jack1232 released a "Rust wgpu Graphics Programming Tutorial" YouTube series][yt-wgpu].
+- Other engine updates:
+  - [Fyrox v0.27][fyrox-0-27] features a new Fish Folly game example,
+    compile-time reflection, plugin, and scripting
+    improvements, and two new book chapters about [particle systems][fyrox-book-1]
+    and [terrain][fyrox-book-2].
+  - [Pyxel v0.18][pyxel]'s main highlight is the experimental web support.
+  - [Bevy released a blog post][bevy-birthday] about the second birthday
+    of the engine with a retrospective and future plans.
+- Other tooling updates:
+  - [@HackerFoo shared a video][noumenal-vid] of a WIP meta-editor to record
+    contact movement to create interactive tutorials for Noumenal.
+  - [nbody-wasm-sim] is a WebGPU N-Body astrophysics simulation in Rust + WASM.
+  - [wgen] is a simple multi-threaded heightmap generator made with egui and three_d.
+  - [bevy-shell-template] is an opinionated, monolithic template for Bevy
+    with cross-platform CI/CD, native + WASM launchers,
+    and managed cross-platform deployment.
+- Other library updates:
+  - [bevy_streamdeck] is a Bevy plugin to interact with Stream Deck.
+  - [kira v0.7 release][kira-0-7] brings a bunch of important bug fixes
+    some of which require breaking changes.
+  - [egui v0.19][egui] brings a lot of various small API improvements and optimizations.
+  - [Alex Dixon shared a blog post][maths-rs-post] about creating another
+    linear algebra library - [maths-rs].
+  - [fundsp] is an audio digital signal processing library for audio processing
+    and synthesis.
+  - [bevy_ecs_tilemap] is an ECS-friendly tilemap rendering crate for Bevy.
+
+[flesh-demo]: https://store.steampowered.com/app/1660850/Flesh/?beta=0
+[caveth]: https://github.com/Dequog/caveth
+[spherical-go]: https://github.com/Dominux/spherical-go
+[cnc-0-10]: https://buckmartin.de/combine-and-conquer/2022-08-20-v0.0.10.html
+[bevy-cheeseball]: https://github.com/Rust-Ninja-Sabi/rust-bevy-cheeseball
+[punchy-v0-0-4]: https://reddit.com/r/rust_gamedev/comments/x1ekmg/fish_folk_punchy_v004
+[punchy-wiki]: https://github.com/fishfolks/punchy/wiki/Fighter-State-Machine
+[bevy-basics]: https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[console-118]: https://console.substack.com/p/console-118
+[unity-guide]: https://rjgameiro.medium.com/let-fun-rust-unity-f7f62609ba49
+[learn_gl_with_rust]: https://github.com/samkevich/learn_gl_with_rust
+[yt-wgpu]: https://youtube.com/playlist?list=PL_UrKDEhALdJS0VrLPn7dqC5A4W1vCAUT
+[fyrox-0-27]: https://fyrox.rs/blog/post/feature-highlights-0-27
+[fyrox-book-1]: https://fyrox-book.github.io/fyrox/scene/particle_system_node.html
+[fyrox-book-2]: https://fyrox-book.github.io/fyrox/scene/terrain_node.html
+[pyxel]: https://twitter.com/kitao/status/1564234852185960449
+[bevy-birthday]: https://bevyengine.org/news/bevys-second-birthday/
+[noumenal-vid]: https://youtube.com/watch?v=qJOPLxFfbMw
+[nbody-wasm-sim]: https://github.com/simbleau/nbody-wasm-sim
+[wgen]: https://github.com/jice-nospam/wgen
+[bevy-shell-template]: https://github.com/kurbos/bevy-shell-template
+[bevy_streamdeck]: https://github.com/vleue/bevy_streamdeck
+[kira-0-7]: https://github.com/tesselode/kira/releases/tag/v0.7.0
+[egui]: https://twitter.com/ernerfeldt/status/1561010036255739904
+[maths-rs]: https://github.com/polymonster/maths-rs
+[maths-rs-post]: https://www.polymonster.co.uk/blog/maths-rs
+[fundsp]: https://github.com/SamiPerttu/fundsp
+[bevy_ecs_tilemap]: https://github.com/StarArawn/bevy_ecs_tilemap
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/xnjeym/this_month_in_rust_gamedev_37),
+[Twitter](https://twitter.com/rust_gamedev/status/1573978074550616064),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/037/infinitebunner.gif b/content/news/037/infinitebunner.gif
new file mode 100644
index 000000000..526df6413
Binary files /dev/null and b/content/news/037/infinitebunner.gif differ
diff --git a/content/news/037/loading_state.png b/content/news/037/loading_state.png
new file mode 100644
index 000000000..75b31a371
Binary files /dev/null and b/content/news/037/loading_state.png differ
diff --git a/content/news/037/loot_goblin.png b/content/news/037/loot_goblin.png
new file mode 100644
index 000000000..0a353dcfe
Binary files /dev/null and b/content/news/037/loot_goblin.png differ
diff --git a/content/news/037/math_it.png b/content/news/037/math_it.png
new file mode 100644
index 000000000..54b5365f6
Binary files /dev/null and b/content/news/037/math_it.png differ
diff --git a/content/news/037/mole_rancher.png b/content/news/037/mole_rancher.png
new file mode 100644
index 000000000..d6a6b6b68
Binary files /dev/null and b/content/news/037/mole_rancher.png differ
diff --git a/content/news/037/notan.gif b/content/news/037/notan.gif
new file mode 100644
index 000000000..d55a7f657
Binary files /dev/null and b/content/news/037/notan.gif differ
diff --git a/content/news/037/rustyaquarium.gif b/content/news/037/rustyaquarium.gif
new file mode 100644
index 000000000..490965b5f
Binary files /dev/null and b/content/news/037/rustyaquarium.gif differ
diff --git a/content/news/037/shanty_quest.png b/content/news/037/shanty_quest.png
new file mode 100644
index 000000000..afb60ae76
Binary files /dev/null and b/content/news/037/shanty_quest.png differ
diff --git a/content/news/037/usa_football.png b/content/news/037/usa_football.png
new file mode 100644
index 000000000..95c7ec206
Binary files /dev/null and b/content/news/037/usa_football.png differ
diff --git a/content/news/037/veloren.jpg b/content/news/037/veloren.jpg
new file mode 100644
index 000000000..c4c3e43db
Binary files /dev/null and b/content/news/037/veloren.jpg differ
diff --git a/content/news/038/change_pitch_bevy_oddio_example.png b/content/news/038/change_pitch_bevy_oddio_example.png
new file mode 100644
index 000000000..d766b259b
Binary files /dev/null and b/content/news/038/change_pitch_bevy_oddio_example.png differ
diff --git a/content/news/038/chris-biscardi-videos.jpeg b/content/news/038/chris-biscardi-videos.jpeg
new file mode 100644
index 000000000..74b9fc865
Binary files /dev/null and b/content/news/038/chris-biscardi-videos.jpeg differ
diff --git a/content/news/038/cybergate.gif b/content/news/038/cybergate.gif
new file mode 100644
index 000000000..83598ffc0
Binary files /dev/null and b/content/news/038/cybergate.gif differ
diff --git a/content/news/038/dims-timecycle.gif b/content/news/038/dims-timecycle.gif
new file mode 100644
index 000000000..630c4f0e2
Binary files /dev/null and b/content/news/038/dims-timecycle.gif differ
diff --git a/content/news/038/eo-rs.PNG b/content/news/038/eo-rs.PNG
new file mode 100644
index 000000000..41a5d75db
Binary files /dev/null and b/content/news/038/eo-rs.PNG differ
diff --git a/content/news/038/feldversuch.gif b/content/news/038/feldversuch.gif
new file mode 100644
index 000000000..bdfd9b336
Binary files /dev/null and b/content/news/038/feldversuch.gif differ
diff --git a/content/news/038/flesh.gif b/content/news/038/flesh.gif
new file mode 100644
index 000000000..fb9316cd2
Binary files /dev/null and b/content/news/038/flesh.gif differ
diff --git a/content/news/038/gamedev-meetup.png b/content/news/038/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/038/gamedev-meetup.png differ
diff --git a/content/news/038/gamercade.gif b/content/news/038/gamercade.gif
new file mode 100644
index 000000000..8e5b46a7d
Binary files /dev/null and b/content/news/038/gamercade.gif differ
diff --git a/content/news/038/godot-rust-export.png b/content/news/038/godot-rust-export.png
new file mode 100644
index 000000000..f1cd10d4f
Binary files /dev/null and b/content/news/038/godot-rust-export.png differ
diff --git a/content/news/038/graviton.png b/content/news/038/graviton.png
new file mode 100644
index 000000000..c5ea81f5a
Binary files /dev/null and b/content/news/038/graviton.png differ
diff --git a/content/news/038/index.md b/content/news/038/index.md
new file mode 100644
index 000000000..bba06e2fe
--- /dev/null
+++ b/content/news/038/index.md
@@ -0,0 +1,734 @@
++++
+title = "This Month in Rust GameDev #38 - September 2022"
+transparent = true
+date = 2022-10-14
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 38th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Bonus](#bonus)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 20th Rust Gamedev Meetup took place in September. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video].
+
+The meetups take place on the second Saturday every month via the [Rust Gamedev
+Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://www.youtube.com/watch?v=QKqqDilZ448
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="building and fighting"
+    src="cybergate.gif"
+    caption="building shelter and fighting a colony of red monsters") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul
+is an attempt to use artificial intelligence to build diverse universe experiences
+with strange creatures and procedural gameplay styles.
+Currently in Phase 5.2 (analogously version 0.5.2),
+they finalized a playable game with the tech they have developed up until now.
+
+Recent updates:
+
+- In-house Transport layer with Reliability and Package aggregation, over WebRTC
+- Implemented Winit background process on all browsers
+- Introduced Grabbing and Building Mechanics
+- Created enemy AI that groups and flies in colonies. Includes a deadly night mode
+- Usernames and life points with Fontdue.rs
+- Menu and leaderboard using yakui.rs
+- Improved the Automation to push Server Updates
+- Improved wasm related performance, latency, and connection freezing bugs.
+
+[Join the Discord server][cybergate-dis] to participate in upcoming Phase 6.0!
+
+_Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/xo03s5/cybergate_release_5_webrtc_multiplayer_with/)_
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Graviton][graviton-website]
+
+{{ image_figure(
+    alt="Graviton"
+    src="graviton.png"
+    caption="Take a little break to relax and draw some sand art") }}
+
+[Graviton](https://www.gravitongame.art/) by
+[@hakolao](https://github.com/hakolao)
+is a relaxing simulation game in which you draw colored sand and watch it
+interact with gravity.
+
+The game is going to be released in early access on
+[Steam](https://store.steampowered.com/app/2137280/Graviton__A_Relaxing_Sand_Simulation/?utm_source=rust_gamedev&utm_medium=web)
+during this October.
+
+_Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/xfqd2t/graviton_relaxing_sand_art)_
+
+[graviton-website]: https://www.gravitongame.art/
+
+### Flesh
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="4th area") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+an organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- Finishing up the last area of the game.
+- Making animation of the game's intro/ending.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### Thetawave
+
+{{ image_figure(
+    alt="thetawave-boss"
+    src="thetawave.gif"
+    caption="First boss in progress") }}
+
+Thetawave is a physics based, cosmic horror themed space shooter by
+[@carlosupina].
+In the past month, work has begun on the first boss enemy in the game,
+the [Repeater].
+
+Thetawave has also joined the [@spicylobsterfam] incubator.
+Feel free to reach out to the developer
+if you are interested in contributing!
+
+[Repeater]: https://twitter.com/carlosupina/status/1572976552165474307
+[@carlosupina]: https://twitter.com/carlosupina
+[@spicylobsterfam]: https://twitter.com/spicylobsterfam
+
+### [Ultimechs]
+
+![Ultimechs - let the games begin](ultimechs.png)
+
+[Ultimechs]
+([Discord](https://discord.com/invite/srX92DRt9G),
+[Twitter](https://twitter.com/ultimechs),
+[Facebook](https://www.facebook.com/Ultimechs/),
+[Reddit](https://www.reddit.com/r/Ultimechs/),
+[YouTube](https://www.youtube.com/channel/UC6t6delBJRxnaBcqBPpC3Gg))
+by [Resolution Games](https://www.resolutiongames.com)
+is a future sports game played with mechs.
+It is VR, multiplayer, and free to play.
+
+Ultimechs is partially written in Rust.
+The Rust code is for the core of the game, including the game rules,
+networking, and physics (that use [Rapier]).
+The rest of the game, including the graphics, audio, user input,
+and everything that happens outside the arena,
+is made in [Unity](https://unity.com/).
+
+The game was released on the 15th of September
+on the [Meta Quest 2][ultimechs-quest] and [SteamVR][ultimechs-steamvr].
+
+There is [a conference talk][ultimechs-talk]
+and [a blog post][ultimechs-post]
+about the choice of Rust and how they combined Rust with the studio's
+standard tools Unity and C#.
+[Another blog post][ultimechs-post-2]
+goes into more depth about calling Rust code from C# in Unity.
+
+[Ultimechs]: https://www.resolutiongames.com/ultimechs
+[ultimechs-quest]: https://www.oculus.com/experiences/quest/5118731164870081/
+[ultimechs-steamvr]: https://store.steampowered.com/app/1657780/Ultimechs/
+[Rapier]: https://www.rapier.rs/
+[ultimechs-talk]: https://www.youtube.com/watch?v=nLCNsIs1-ZU
+[ultimechs-post]: https://www.resolutiongames.com/blog/programming-a-vr-game-using-rust
+[ultimechs-post-2]: https://www.resolutiongames.com/blog/calling-rust-from-c-in-unity
+
+### [eo.rs][eo-rs-website]
+
+{{ image_figure(
+    alt="npcs talking"
+    src="eo-rs.PNG"
+    caption="NPCs chatting in the game world") }}
+
+[eo-rs][eo-rs-website] by [@sorokya](https://github.com/sorokya)
+is a development library and game server for the MMORPG
+[Endless Online](https://www.endless-online.com).
+
+Recent updates:
+
+- Made NPCs appear and move around in the game world
+- Created a proxy tool to document interactions between the original client and server
+- Implemented player stat calculations
+- Made NPCs talk
+
+[eo-rs-website]: https://eo-rs.dev
+
+### Tiny Building Game
+
+![Tiny_building_game_gif](tiny_building_game.gif)
+
+The untitled "Tiny Building Game" is a stress-free feel-good game focused on just
+building something pretty. It is being made by [@anastasiaopara] and
+[@h3r2tic].
+
+This month, the team welcomed [Martin] (sound design) and [Oda] (music) as well as
+adding various game elements, such as fences, gates, pillars and [butterflies]. You
+can watch this short [YouTube video] to catch a glimpse of how it's all coming together.
+
+Right now, the team is working towards the game announcement. Stay
+tuned by following the [newsletter][country-slice-newsletter]!
+
+[country-slice-newsletter]: https://dashboard.mailerlite.com/forms/10395/51067704544593017/share
+[@anastasiaopara]: https://twitter.com/anastasiaopara
+[@h3r2tic]: https://twitter.com/h3r2tic
+[Oda]: https://twitter.com/OdaTilset
+[Martin]: https://twitter.com/MartinKvale
+[butterflies]: https://twitter.com/h3r2tic/status/1573747327751360512
+[YouTube video]: https://youtu.be/CizG3hv7DhQ
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Riding into the sunset"
+    src="veloren.jpg"
+    caption="Riding into the sunset") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In September the official Veloren server saw a new all time high of more than
+400 players logged in at the same time, with an average load of 200 players.
+This caused slow in-game responses and the development team quickly
+optimized to reduce the server load and introduced a new graphical
+server browser for balancing.
+
+Due to the more diverse user base, a lot of languages received translation
+updates. The most common crash dialog was improved to suggest the workaround
+of trying a different graphics backend, while the large number of players
+still using DX11 block an upgrade to a more recent WGPU version.
+
+Septembers's full weekly devlogs: "This Week In Veloren...":
+[#188][veloren-188],
+[#189][veloren-189],
+[#190][veloren-190].
+
+[veloren]: https://veloren.net
+[veloren-188]: https://veloren.net/devblog-188
+[veloren-189]: https://veloren.net/devblog-189
+[veloren-190]: https://veloren.net/devblog-190
+
+### [Subfuse][subfuse]
+
+{{ image_figure(
+    alt="Escape the hotel"
+    src="subfuse.png"
+    caption="Escape the hotel") }}
+
+[Subfuse][subfuse] is a short 1st person puzzle/escape game made for
+[Bevy Jam #2][bevy-jam-2] with an accompanying [postmortem][subfuse-postmortem]
+that goes into some detail about the process of making the game.
+
+[subfuse]: https://dgriffin.itch.io/subfuse
+[subfuse-postmortem]: https://dgriffin.itch.io/subfuse/devlog/422315/subfuse-postmortem
+[bevy-jam-2]: https://itch.io/jam/bevy-jam-2
+
+## Engine Updates
+
+### [godot-rust][gd-github]
+
+{{ image_figure(
+    alt="godot-rust new export syntax"
+    src="godot-rust-export.png"
+    caption="The new `#[method]` syntax, which replaces existing `#[export]` and allows omitting
+the base parameter.") }}
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot engine.
+In September, development was divided into three tasks:
+
+- Maintenance releases [0.10.1][gd-0.10.1] and [0.10.2][gd-0.10.2]
+- Godot 3.5 support in v0.11 ([#910][gd-910])
+- Ongoing [GDExtension][gd-gdext] efforts ([#824][gd-824])
+
+Besides support for Godot 3.5.1, a change that many users will notice is the
+new `#[method]` + `#[base]` syntax, replacing `#[export]` as illustrated above.
+
+The GDExtension/Rust binding has finally reached a state where a first
+experimental version is within reach in October. If you are fine with the
+bugs and missing features, you can give it a try very soon!
+
+[gd-0.10.1]: https://github.com/godot-rust/godot-rust/pulls?q=is%3Apr+milestone%3Av0.10.1
+[gd-0.10.2]: https://github.com/godot-rust/godot-rust/pulls?q=is%3Apr+milestone%3Av0.10.2
+[gd-824]: https://github.com/godot-rust/godot-rust/issues/824
+[gd-910]: https://github.com/godot-rust/godot-rust/issues/910
+[gd-github]: https://github.com/godot-rust/godot-rust
+[gd-discord]: https://discord.gg/aKUCJ8rJsc
+[gd-twitter]: https://twitter.com/GodotRust
+[gd-gdext]: https://godotengine.org/article/introducing-gd-extensions
+
+### [Gamercade]
+
+{{ image_figure(
+    alt="Gamercade preview"
+    src="gamercade.gif"
+    caption="Gamercade Sprite Animations") }}
+
+[Gamercade] ([Discord][Gamercade-Discord], [GitHub][Gamercade-GitHub])
+by @RobDavenport is a WASM-powered fantasy console focused
+on building multiplayer neo-retro games.
+
+Gamercade has launched their first official release! Version `0.1.0` has
+all of the functions and features need to start building awesome single-
+and multi-player games: input, graphics, audo, networking, and more.
+[The full release article][Gamercade-Release] goes into higher detail about
+the feature set of Gamercade, and includes example images and animations.
+
+Full controller support made it into the `0.1.0` release, including analog
+sticks, analog triggers, as well as emulation of those for those without
+a game pad. Additionally, they added a command line tool, called `gccl` which
+streamlines many of the pain points in developing Gamercade games. A number of
+quality-of-life and bug fixes also made it into the release.
+
+The team is already planning out their feature set for the next release, `0.2.0`,
+which is based around the theme of "two." The next release will include more
+multiplayer features like two or more local players, two or more networked instances,
+stereo sound support, and much more.
+
+Come hang out and chat on [Discord][Gamercade-Discord], where the developers
+interact with members and post updates daily. The project is
+[open source][Gamercade-GitHub] and looking for contributors, suggestions,
+as well as your awesome game creations.
+
+[Gamercade]: https://gamercade.io
+[Gamercade-Discord]: https://discord.gg/Qafv2Fpt5j
+[Gamercade-GitHub]: https://github.com/gamercade-io/gamercade_console
+[Gamercade-Release]: https://gamercade.io/blog/gamercade-0-1-0
+
+### [Dims][dims-website]
+
+![A short video of changing the speed of the day/night cycle from Dims script parameters](dims-timecycle.gif)
+
+[Dims][dims-website] ([Twitter][dims-twitter], [Discord][dims-discord],
+[YouTube][dims-youtube]) is a pre-alpha collaborative open-world
+creation platform.
+Users can hop in sessions and build a game together, allowing everyone
+to bring out their inner game-maker.
+
+In September, the platform continued to make steady progress, with new features
+and bugfixes being made on a daily basis. The highlights are:
+
+- The team's very first game of entirely scripted multiplayer Team Deathmatch 🎉
+- All player logic was moved to the Rust scripting layer, allowing for it to be
+  changed on the fly
+- The implementation of animation retargeting, so you can use any animation with
+  any model, as long as they share the same skeletal structure
+- Scripting now has greater access to the ECS, allowing it to move the sun 🌅
+- Initial work on an asset database and pipeline, so that you can import any
+  asset and use it amongst your Dims projects
+- An all-new object manipulation/placement tool suite
+  - Objects can now be consistently stacked, moved as a group, placed within
+    each other, and more!
+- Many other infrastructural changes and improvements, including macOS and
+  Linux builds
+
+Want to try Dims out for yourself? Come join the [Discord][dims-discord] to be
+notified of future public tests, see the latest features before everyone else,
+and to talk to the devs personally.
+
+[dims-website]: https://dims.co
+[dims-twitter]: https://twitter.com/DimsWorlds
+[dims-discord]: https://discord.gg/Z5CAVmNE57
+[dims-youtube]: https://youtube.com/channel/UCR5gOwS7uSl0a0dl7MLQoqg
+
+## Learning Material Updates
+
+### [Making a turn-based multiplayer game in Rust][tbs-tutrial-1]
+
+![A screenshot of the tic tac toe clone the tutorial covers](tbs-multiplayer-tutorial.png)
+
+@herluf-ba published a beginner friendly [3 part tutorial series][tbs-tutrial-1]
+about making turn-based multiplayer games using rust.
+It covers what games can be considered "turn-based",
+how to write a simple but neat game server using [renet],
+and finally how to tie it all together with a client app made with [bevy].
+
+[tbs-tutrial-1]: https://herluf-ba.github.io/making-a-turn-based-multiplayer-game-in-rust-01-whats-a-turn-based-game-anyway.html
+[renet]: https://github.com/lucaspoffo/renet
+[bevy]: https://github.com/bevyengine/bevy
+
+### [Chris Biscardi's Monthly Roundup][chris-biscardi-youtube]
+
+![monthly videos](chris-biscardi-videos.jpeg)
+
+[@chrisbiscardi] publishes a Rust video every day each
+month on [YouTube][chris-biscardi-youtube].
+
+This month started off with a [low-level WGPU series][wgpu-playlist]
+that focuses on WGPU APIs as a primitive to understand
+Bevy's renderer. Moving forward with that, he explored
+[debugging shaders with RenderDoc][debugging-with-renderdoc],
+[porting shaders][porting-shaders] from Blender to Bevy,
+[generating custom meshes][cubesphere] and interesting
+types of [noise][voronoise].
+
+At a higher level, Chris covered a comparison between
+[Bevy and Nannou][bevy-vs-nannou] for creative coding
+endeavours and the top 10 games from [Bevy Game Jam #2][bevy-game-jam-2].
+He also put (more than) [1 million particles][1-million-particles]
+inside of a Bevy app, and continued working on a
+[2D platformer implementation][2d-platformer-cb].
+
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+[chris-biscardi-youtube]: https://www.youtube.com/c/chrisbiscardi
+[wgpu-playlist]: https://www.youtube.com/playlist?list=PLWtPciJ1UMuBs_3G-jFrMJnM5ZMKgl37H
+[debugging-with-renderdoc]: https://www.youtube.com/watch?v=vblsZgBcgyw
+[porting-shaders]: https://www.youtube.com/watch?v=ynLEQVPRfZs
+[cubesphere]: https://www.youtube.com/watch?v=s0xY4muPwj8
+[voronoise]: https://www.youtube.com/watch?v=An2GMk8URMo
+[bevy-vs-nannou]: https://www.youtube.com/watch?v=Cf08TlwUNf4
+[bevy-game-jam-2]: https://www.youtube.com/watch?v=VBMzaMEOhFI
+[1-million-particles]: https://www.youtube.com/watch?v=MWIO-jP6pVo
+[2d-platformer-cb]: https://www.youtube.com/watch?v=VWzqmquIZHc&t=2s
+
+## Tooling Updates
+
+### Feldversuch
+
+![Feldversuch](feldversuch.gif)
+
+Feldversuch by [@siebencorgie](https://twitter.com/siebencorgie)
+is an experimental extension to the class of wavetable
+synthesizers based on signed distance fields.
+
+Feldversuch uses user defined fields not only to render the
+interface, but to generate sound based on them as well. The
+so-called _sampling plane_ (seen moving back and forth above)
+defines the wave shape that is played back.
+
+Further experiments include rotation (instead of the sweep
+movement) as well as different interpretations of the wave
+shape. Have a look at the [presentation video](https://www.youtube.com/watch?v=GZVdzcwSEaw)
+and the [blog post](https://siebencorgie.rs/gallery/feldversuch/)
+for further details.
+
+## Library Updates
+
+### bevy_oddio
+
+{{ image_figure(
+    alt="an example using bevy_oddio"
+    src="change_pitch_bevy_oddio_example.png"
+    caption="an example using bevy_oddio") }}
+
+[bevy_oddio] by [@harudagondi] is an audio plugin
+for the [Bevy] game engine that uses the [oddio] library.
+It aims to allow first class support of non-static audio sources
+like procedurally generated audio.
+The library also aims to have a high amount of flexibility
+in controlling custom audio sources where typical audio sink methods
+would not suffice.
+
+The previous month saw a new [0.2.0][bevy_oddio_02] release which
+irons out some bugs and added new ergonomic features to allow a
+better user experience. There is now added support for `Mono`
+and `Stereo` audio sources, support for more [oddio]
+types, a new example for controlling volume, and much more.
+A lot of the APIs have been reworked to make it more flexible
+and some public items were deleted to reduce redundancy.
+
+The above screen shows an example of controlling a custom made audio source
+([taken from here][bevy_fundsp_example]) by calling the .control() method.
+
+[bevy_oddio]: https://github.com/harudagondi/bevy_oddio
+[@harudagondi]: https://twitter.com/harudagondi
+[oddio]: https://github.com/Ralith/oddio
+[bevy_oddio_02]: https://github.com/harudagondi/bevy_oddio/releases/tag/v0.2.0
+[bevy_fundsp_example]: https://github.com/harudagondi/bevy_fundsp/blob/ca08963820c83dd723784db6c6f87df8eadd60e0/examples/oddio/controlled.rs#L40-L52
+
+### [Particular]
+
+{{ image_figure(
+    alt="showcase using the demo"
+    src="particular.gif"
+    caption="Showcase using the [demo](https://canleskis.github.io/bevy-particular-demo/)") }}
+
+[Particular] by [@Canleskis] is a library allowing for simulations of
+N-body gravitational interaction of particles. It aims to be simple
+to integrate in existing game and physics engines, such as [Bevy] or [Rapier].
+See the [demo source code] for the example of an integration (less than 50
+actual lines of code!).
+The [demo] is available on the browser (Chromium-based recommended)
+with various scenes you can interact with.
+
+Particular can be used with [rayon] to leverage multithreading on the
+CPU (`parallel` feature). Although the current algorithm performs well enough
+for most use cases, with a single frame taking around 5 ms with 5000 particles
+on an I9 9900K, future updates will introduce other implementations to allow for
+faster computation of the forces (example: [Barnes-Hut]).
+
+You can find more about Particular with
+[this video](https://www.youtube.com/watch?v=oFrq9ckHoN8&) from
+[@ChristopherBiscardi](https://github.com/ChristopherBiscardi), or
+[this post](https://www.reddit.com/r/rust/comments/x7uhoq/media_particular_a_simple_library_for_nbody/)
+on Reddit.
+
+[Particular]: https://github.com/Canleskis/particular
+[demo]: https://canleskis.github.io/bevy-particular-demo/
+[demo source code]: https://github.com/Canleskis/bevy-particular-demo/blob/main/src/nbody.rs
+[@Canleskis]: https://github.com/Canleskis
+[rayon]: https://github.com/rayon-rs/rayon
+[Barnes-Hut]: https://en.wikipedia.org/wiki/Barnes%E2%80%93Hut_simulation
+
+### [Notan v0.7][Notan]
+
+![notan examples](notan.gif)
+
+[Notan] is a simple and portable layer designed to create your own
+apps on top of it without worrying about platform-specific code.
+
+It provides a set of APIs and tools that can be used to create your
+project in an ergonomic manner without enforcing any structure or pattern,
+sharing the same codebase across multiple platforms.
+
+The focus of version [v0.7] was improvements and fixes, however the main
+improvement was how textures are created, allowing to create textures that
+depend on the backend. The main benefit of this new feature is that Notan
+can now load on browsers to the GPU `HtmlImageElement` or it could load
+other types of browser's images as well (like `HtmlCanvasElement`).
+
+[Notan]: https://github.com/Nazariglez/notan
+[v0.7]: https://github.com/Nazariglez/notan/releases
+
+### [Polyanya]
+
+{{ image_figure(
+    alt="example of pathfinding"
+    src="polyanya.gif"
+    caption="Navigating through a mesh in the online [demo](https://vleue.github.io/bevy_pathmesh/)") }}
+
+[Polyanya] by [@FrancoisMockers] is a library implementing
+[Polyanya][polyanya-paper], a Compromise-free Pathfinding algorithm on a
+Navigation Mesh. It is currently the fastest known optimal online any angle
+path planning algorithm. Unlike A*, any angle path planning techniques are not
+bound to a grid and will find a taut path.
+
+An integration with [Bevy] is on-going, with a [few examples][polyanya-demo]
+available in WASM. Next area of work will be around navigation mesh editing.
+
+[Polyanya]: https://github.com/vleue/polyanya
+[polyanya-paper]: https://www.ijcai.org/proceedings/2017/0070.pdf
+[polyanya-demo]: https://vleue.github.io/bevy_pathmesh/
+[@FrancoisMockers]: https://twitter.com/FrancoisMockers
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+- [#90: Rust on Consoles](https://github.com/rust-gamedev/wg/issues/90)
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Disk-0 Madness] is a bullet hell game, written in Rust for the WASM-4
+    fantasy console.
+  - [Combine and Conquer] released version 0.1, moving into early access.
+  - [bevy-rapier-car-sim] is a 3D car simulation in Rust.
+  - [PongRust] is an 'unbeatable' Pong game.
+  - [My Roguelite] is a browser-based 3D roguelite.
+  - [Life Code] is an ecosystem simulation game.
+  - [Klod] released a retrospective post about their Katamari-inspired platformer.
+- Other engine updates:
+  - [Rustacean Station] interviewed the developer of the Fyrox engine.
+  - [The Fyrox Book] added a new chapter on property inheritance.
+  - [Bevy's scheduling overhaul RFC] was merged.
+- Other learning material updates:
+  - [LogRocket] posted about Bevy's ECS API.
+  - [Wade Zimmerman] wrote about their native iOS game dev journey with Rust.
+  - [Rust and Tell] featured a talk on hot reloading.
+  - [Bevy Basics] continued their series of beginner Bevy tutorials.
+  - [Yishn] coded an Astroids clone with Bevy.
+- Other library updates:
+  - [big-brain] released version 0.14 of its Utility AI library, with fixes and
+    lots more observability improvements.
+  - [egui_dock] adds docking support to egui.
+  - [Valence] is a framework for building Minecraft servers in Rust.
+  - [Luminance] is a type-safe graphics framework, which is currently undergoing
+    a major rewrite.
+  - [Bevy ECSS] is a library for integrating a subset of CSS with Bevy's ECS system.
+  - [dtm] is a fast encoder/decoder for the DTM image format.
+
+[Disk-0 Madness]: https://maxcurzi.itch.io/disk-0-madness
+[Combine and Conquer]: https://buckmartin.de/combine-and-conquer/2022-09-23-v0.1.0.html
+[bevy-rapier-car-sim]: https://github.com/alexichepura/bevy-rapier-car-sim
+[PongRust]: https://larsdu.github.io/PongRust/
+[My Roguelite]: https://ostwilkens.github.io/my-roguelite/
+[Life Code]: https://www.youtube.com/watch?v=ftVkklmO1Dk
+[Klod]: https://devildahu.ch/devlog/making-of-klod-tech/
+[Rustacean Station]: https://rustacean-station.org/episode/dmitry-stepanov/
+[The Fyrox Book]: https://fyrox-book.github.io/fyrox/scene/inheritance.html
+[Bevy's scheduling overhaul RFC]: https://github.com/bevyengine/rfcs/pull/45
+[LogRocket]: https://blog.logrocket.com/rust-bevy-entity-component-system
+[Wade Zimmerman]: https://devmap.org/native-ios-game-development-w-rust-a1134887c35f
+[Rust and Tell]: https://www.youtube.com/watch?v=-UUImyqX8j0
+[Bevy Basics]: https://www.youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[Yishn]: https://www.youtube.com/watch?v=QCys49c44PU
+[big-brain]: https://github.com/zkat/big-brain/releases/tag/v0.14.0
+[egui_dock]: https://crates.io/crates/egui_dock
+[Valence]: https://github.com/valence-rs/valence
+[Luminance]: https://phaazon.net/blog/2022-luminance-redesign-part-1
+[Bevy ECSS]: https://github.com/afonsolage/bevy_ecss
+[dtm]: https://github.com/Ku95/dtm
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev
+  - ["Should I use an existing physics engine or implement it myself?"](https://reddit.com/r/rust_gamedev/comments/x8if87/rubber_duck_question_should_i_use_an_existing)
+  - ["Ecs fundamentally at odds with borrow checker?"](https://reddit.com/r/rust_gamedev/comments/xajcgd/ecs_fundamentally_at_odds_with_borrow_checker)
+  - ["Best Engine for Choice-Driven, Semi-Free-Roam, 2D Gamedev"](https://reddit.com/r/rust_gamedev/comments/xc0fes/best_engine_for_choicedriven_semifreeroam_2d)
+  - ["Turn-based game - architecture feedback/opinons"](https://reddit.com/r/rust_gamedev/comments/xe1d6p/turnbased_game_architecture_feedbackopinons)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Bonus
+
+<!-- Bonus section to make the newsletter more interesting
+and highlight events from the past. -->
+
+![Ruffle logo](ruffle.svg)
+
+[Ruffle] is an open-source Flash Player emulator, written in Rust. It aims to run
+natively on all modern operating systems and web browsers, leveraging Rust's
+memory safety guarentees to avoid the security pitfalls that Flash became
+notorious for in its later years.
+
+Many of today's game developers got their start developing
+in Flash, and Ruffle aims to help preserve this part of internet (and
+gaming!) history for future generations to look back on.
+
+For a look back at the history of Flash gaming, and the influence it has has
+on games today, check out [Flash Game History].
+
+[Ruffle]: https://ruffle.rs/
+[Flash Game History]: https://www.flashgamehistory.com/
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/y3u42s/this_month_in_rust_gamedev_38_september_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1580915833941151744),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/038/notan.gif b/content/news/038/notan.gif
new file mode 100644
index 000000000..66febdced
Binary files /dev/null and b/content/news/038/notan.gif differ
diff --git a/content/news/038/particular.gif b/content/news/038/particular.gif
new file mode 100644
index 000000000..f1d06744a
Binary files /dev/null and b/content/news/038/particular.gif differ
diff --git a/content/news/038/polyanya.gif b/content/news/038/polyanya.gif
new file mode 100644
index 000000000..b9498f917
Binary files /dev/null and b/content/news/038/polyanya.gif differ
diff --git a/content/news/038/ruffle.svg b/content/news/038/ruffle.svg
new file mode 100644
index 000000000..d15aca4f1
--- /dev/null
+++ b/content/news/038/ruffle.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="none" width="328" height="108"><defs><g id="a"><path fill="#966214" d="M37.85 61.25q-.4 0-.8.05-.5-.25-.9-.5-.3-.1-.55-.3l-.6-.6-4.25-6.45-1.5 11.25h3.45q.75-.1 1.5-.35.85-.25 1.65-.75.55-.35 1.05-.8.5-.45.95-1 .5-.5.75-1.2-.05.05-.15.1-.1.15-.25.25l-.1.2q-.15.05-.25.1m58.3 0q-.9 0-1.45-.7-.3-.3-.55-.6l-.05-.05v-.05l-4.25-6.4-1.5 11.25h3.45q.75-.1 1.5-.35.85-.25 1.6-.75.75-.5 1.4-1.1.45-.35.75-.85.35-.5.65-1.05l-.45.55q-.5.15-1.1.1m19.7 3.25h3.45q.75-.1 1.5-.35.25-.05.45-.15.35-.15.65-.3l.5-.3q.25-.15.5-.35.45-.35.9-.75.45-.35.75-.85l.1-.1q.1-.2.2-.35.2-.3.35-.6l-.3.4-.15.15q-.5.15-1.1.1-.25 0-.4-.05-.5-.15-.8-.4-.15-.1-.25-.25-.3-.3-.55-.6l-.05-.05v-.05l-4.25-6.4-1.5 11.25m52.6.2q-3.1-.25-5.7-.75-5.6-1.05-8.9-3.1-.75-.5-1.4-1-3.15-2.55-3.5-6.4l-1.5 11.25h21m33.4-5.65q-2.3-2.35-2.6-5.6l-1.5 11.25h21q-11.25-.95-16-4.85-.5-.4-.9-.8m55.15 2.5q-2.55-.25-3.25-1.8l-4.2-6.3-1.5 11.25h3.45q.6-.1 1.2-.3.4-.1.75-.2.35-.15.65-.3.7-.35 1.35-.8.75-.55 1.3-1.25.1-.15.25-.3m23.95-8.05l-1.5 11.2h21q-.3-.05-.6-.05-10.8-1-15.4-4.8-3.15-2.55-3.5-6.35z"/><path fill="#FFAD33" d="M40.65 47.25H51.8L49.75 61.7h16.5l2.3-16.25h-.05l.8-5.7q.4-2.45-1-4.2-.35-.4-.75-.8-.25-.25-.55-.5-.2-.2-.45-.35-1.95-1.4-4.5-1.4H34.3q-1.35 0-2.6.45-1.65.55-3.15 1.8Q25.8 37 25.3 40l-1.65 12h.05v.3l5.85 1.15h-9.5q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45-.5.3-.95.7-.45.35-.85.8-.35.4-.65.85-.3.45-.5.9-.15.45-.3.95L8 100.2h16.25l5-35.5 1.5-11.25L35 59.9l.6.6q.25.2.55.3.4.25.9.5.4-.05.8-.05.1-.05.25-.1l.1-.2q.15-.1.25-.25.1-.05.15-.1l.3-1.05 1.75-12.3m86.8-2h-.05l.15-1.25h-.05l1.65-11.7H112.9l-2.65 19.5h.05v.2l-.05.1h.05l5.8 1.15h-9.45q-.5.05-1 .15-.5.15-1 .35-.15.05-.3.15-.3.1-.55.25-.05 0-.1.05-.5.3-1 .65-.4.35-.7.7-.55.7-.95 1.45-.35.65-.55 1.4-.15.7-.25 1.4v.05q-.15 1.05-.35 2.05l-1.2 8.75v.1l-2.1 14.7H85.35L87.6 69.9h.05l.7-5.2 1.5-11.25 4.25 6.4v.05l.05.05q.25.3.55.6.55.7 1.45.7.6.05 1.1-.1l.45-.55.3-1.05 1.3-9.05h-.05l.7-5.05h-.05l.15-1.25H100l1.65-11.7H85.4L82.75 52h.05l-.05.3 5.85 1.15h-9.45q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45-.5.3-1 .65-.4.4-.8.85-.25.3-.55.65-.05.1-.15.2-.25.45-.4.9-.2.45-.3.95-.1.65-.2 1.25-.2 1.15-.4 2.25l-4.3 30.6q-.25 3 1.75 5.25 1.6 1.8 4 2.15.6.1 1.25.1h27.35q3.25 0 6-2.25.35-.35.7-.55l.3-.2q2-2 2.25-4.5l1.65-11.6q.05-.05.1-.05l1.65-11.35h.05l.7-5.2 1.5-11.25 4.25 6.4v.05l.05.05q.25.3.55.6.1.15.25.25.3.25.8.4.15.05.4.05.6.05 1.1-.1l.15-.15.3-.4.3-1.05 1.3-9.05h-.05l.7-5.05m61.8-35Q187 8 183.75 8H156q-3 0-5.75 2.25-1.3.95-2.05 2.1-.45.6-.7 1.2-.2.5-.35 1-.1.45-.15.95l-4.15 29.95h-.05l-.7 5.2h-.05l-.2 1.35h.05l-.05.3 5.85 1.15h-9.45q-2.1.05-3.95 1.6-1.9 1.55-2.25 3.55l-.5 3.5h-.05l-5.3 38.1h16.25l5-35.5 1.5-11.25q.35 3.85 3.5 6.4.65.5 1.4 1 3.3 2.05 8.9 3.1 2.6.5 5.7.75l1.75-11.25H158l.4-2.95h-.05l.7-5.05H159q.1-.9.3-1.9.1-.75.2-1.6.85-5.9 2.15-14.9 0-.15.05-.25l.1-.9q.2-1.55.45-3.15h11.25l-3.1 20.8h16.5L191 15.5q.15-1.7-.4-3.15-.5-1.1-1.35-2.1m50.3 0Q237.3 8 234.05 8H206.3q-2.3 0-4.45 1.35-.65.35-1.3.9-1.3.95-2.05 2.1-.45.6-.7 1.2-.4.9-.5 1.95l-4.15 29.95h-.05l-.7 5.2h-.05l-.2 1.35h.05l-.05.3 5.85 1.15h-9.45q-2.1.05-3.95 1.6-1.9 1.55-2.25 3.55l-.5 3.5h-.05l-1.2 8.75v.1l-4.1 29.25h16.25l5-35.5 1.5-11.25q.3 3.25 2.6 5.6.4.4.9.8 4.75 3.9 16 4.85l1.75-11.25h-12.2l.4-2.95h-.05l.7-5.05h-.05q.15-.9.3-1.9.1-.75.25-1.6.15-1.25.35-2.65v-.05q.95-6.7 2.35-16.5h11.25l-3.1 20.8h16.5l4.1-28.05q.15-1.7-.4-3.15-.5-1.1-1.35-2.1M259.5 45.5v-.05L264.85 8H248.6l-6.15 44.3 5.85 1.15h-9.45q-.5.05-1 .15-.5.15-1 .35-.5.2-.95.45-.5.3-1 .65-.4.4-.8.85-.35.4-.7.85-.25.45-.45.9-.15.45-.3.95l-5.85 41.6h16.25l5-35.5 1.5-11.25 4.2 6.3q.7 1.55 3.25 1.8l.05-.1q.25-.4.35-.85l.3-1.05 1.8-14.05m25.6-15.75q-.65 0-1.3.1-2.5.35-4.7 2.15-2.75 2.25-3.25 5.25l-1.95 14.7V52l-.05.3 5.85 1.15h-9.45q-1.9.05-3.6 1.35-.2.1-.35.25-1.9 1.55-2.25 3.55l-4.85 34.1q-.25 3 1.75 5.25 1.25 1.4 3 1.95 1.05.3 2.25.3h27.75q3.25 0 6-2.25 2.75-2 3.25-5l2.75-18.5h-16.5l-1.75 11h-11.25l2.1-14.75h.05l.85-6 1.5-11.2q.35 3.8 3.5 6.35 4.6 3.8 15.4 4.8.3 0 .6.05h15.75l2.75-19.25h-.05l1.15-8.2q.5-3-1.75-5.25-1.25-1.25-3-1.75-1-.5-2.25-.5H285.1m5.95 15.7h-.1l.15-.95h11.45l-1.25 8.95H290l.4-2.95h-.05l.7-5.05z"/></g></defs><use xlink:href="#a"/></svg>
\ No newline at end of file
diff --git a/content/news/038/subfuse.png b/content/news/038/subfuse.png
new file mode 100644
index 000000000..e40974802
Binary files /dev/null and b/content/news/038/subfuse.png differ
diff --git a/content/news/038/tbs-multiplayer-tutorial.png b/content/news/038/tbs-multiplayer-tutorial.png
new file mode 100644
index 000000000..003baf700
Binary files /dev/null and b/content/news/038/tbs-multiplayer-tutorial.png differ
diff --git a/content/news/038/thetawave.gif b/content/news/038/thetawave.gif
new file mode 100644
index 000000000..6c28ccd2d
Binary files /dev/null and b/content/news/038/thetawave.gif differ
diff --git a/content/news/038/tiny_building_game.gif b/content/news/038/tiny_building_game.gif
new file mode 100644
index 000000000..41852be22
Binary files /dev/null and b/content/news/038/tiny_building_game.gif differ
diff --git a/content/news/038/ultimechs.png b/content/news/038/ultimechs.png
new file mode 100644
index 000000000..12d4eefd9
Binary files /dev/null and b/content/news/038/ultimechs.png differ
diff --git a/content/news/038/veloren.jpg b/content/news/038/veloren.jpg
new file mode 100644
index 000000000..04b370c72
Binary files /dev/null and b/content/news/038/veloren.jpg differ
diff --git a/content/news/039/blackjack.gif b/content/news/039/blackjack.gif
new file mode 100644
index 000000000..c6eb6194a
Binary files /dev/null and b/content/news/039/blackjack.gif differ
diff --git a/content/news/039/cybergate.gif b/content/news/039/cybergate.gif
new file mode 100644
index 000000000..1ddc36d5d
Binary files /dev/null and b/content/news/039/cybergate.gif differ
diff --git a/content/news/039/digital-extinction.jpeg b/content/news/039/digital-extinction.jpeg
new file mode 100644
index 000000000..2b466a70f
Binary files /dev/null and b/content/news/039/digital-extinction.jpeg differ
diff --git a/content/news/039/fyroxed.gif b/content/news/039/fyroxed.gif
new file mode 100644
index 000000000..89c5c93b7
Binary files /dev/null and b/content/news/039/fyroxed.gif differ
diff --git a/content/news/039/graphite.png b/content/news/039/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/039/graphite.png differ
diff --git a/content/news/039/index.md b/content/news/039/index.md
new file mode 100644
index 000000000..716ca6c52
--- /dev/null
+++ b/content/news/039/index.md
@@ -0,0 +1,759 @@
++++
+title = "This Month in Rust GameDev #39 - October 2022"
+transparent = true
+date = 2022-11-11
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 39th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Game Development in Rust Discord][gamedev-discord]
+
+![Discord projects forum](projects.png)
+
+The ['Game Development in Rust' Discord server][gamedev-discord] now has a
+\#projects forum, where you can share updates on what you've been
+working on.
+
+[gamedev-discord]: https://discord.gg/yNtPTb2
+
+## Game Updates
+
+### miam
+
+![A screenshot of miam, the player is reproducing a burger order
+while the chef is changing the menu](miam.png)
+
+[miam] ([GitHub][miam-src]) by [yopox], [on100balec], and [hadri]
+is a cooking game made for the Ludum Dare 51.
+"miam" is the French interjection for "yum".
+
+The theme of the game jam was "Every 10 seconds".
+Here instead of having 10 seconds to make a burger,
+the chef is really indecisive and comes to change
+the menu every 10 seconds.
+
+The game was built using Bevy 0.8 with [bevy_game_template]
+to save precious time when starting the game jam.
+[bevy_tweening] was also really useful to polish the game.
+
+The game was ranked 120th overall and 94th for audio out of 1240 jam entries.
+
+_Discussions: [Submission page](https://ldjam.com/events/ludum-dare/51/miam)_
+
+[miam]: https://yopox.itch.io/miam
+[miam-src]: https://www.github.com/yopox/LD51
+[yopox]: https://mstdn.social/@yopox
+[on100balec]: https://soundcloud.com/jmen_balec
+[hadri]: https://github.com/HadrienRenaud
+[bevy_game_template]: https://github.com/NiklasEi/bevy_game_template
+[bevy_tweening]: https://github.com/djeedai/bevy_tweening
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Online Game Fish Selection Screen"
+    src="jumpy.png"
+    caption="Online Game Fish Selection Screen") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+In the last month,
+the devs started [rewriting][jumpy_rewrite] Jumpy to use the [Bevy] game engine.
+Massive progress has been made,
+establishing foundational features such as input mapping, UI, and localization,
+along with the addition of a few major features:
+
+- Network play, complete with a matchmaking server for joining public games online.
+- A scripting engine using TypeScript/JavaScript powered by [`bevy_mod_js_scripting`].
+- A revamped map editor that renders the actual game in the viewport.
+  This lets you switch back and forth between editing and playing,
+  and has the potential for multiplayer map editing in the future.
+
+The physics have been ported from the old version of the game
+with the basic gameplay and the sword item nearly finished.
+The next tasks include porting some of the old items to the new scripting system
+and finishing off the map editor's editing functionality.
+
+_Discussions: [GitHub][jumpy_discussions], [Twitter][jumpy_twitter]_
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[jumpy_rewrite]: https://github.com/fishfolks/jumpy/pull/466
+[Bevy]: https://bevyengine.org
+[jumpy_discussions]: https://github.com/fishfolks/jumpy/discussions
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]:  https://spicylobster.itch.io/
+[`bevy_mod_js_scripting`]: https://github.com/jakobhellermann/bevy_mod_js_scripting
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="State Syncronization"
+    src="cybergate.gif"
+    caption="The health bar that is closer updates more frequently") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul
+is an attempt to use artificial intelligence to build diverse universe experiences
+with strange creatures and procedural gameplay styles.
+
+Recent updates:
+
+- Constructed powerful and extremely fast synchronization for states:
+  - Able to Extract and Merge partial changes of components and global states.
+  - Restrict visibility, if the state is conditionally decided to be private.
+  - Limit the frequency of these state updates based on object priority.
+- Big improvement of the organization of the networking systems
+- Improved timers in 70 places, resulting in higher performance and flexibility
+- Better health bars
+- Several minor game content fixes
+
+[Join the Discord server][cybergate-dis] to participate in upcoming Phase 6.0!
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="selection circles & health bars in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="selection circles & health bars in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+The game repository was opened a month ago under the GPLv3 license. Here is the
+summary of the changes since the opening of the repository. It consists of
+commit range `f23d51e..ffd5987` (2022-10-09–2022-11-03). There were 50
+non-merge commits in total, with the most notable improvements below:
+
+- Object & map bounds repulsion was added.
+- Terrain got a texture.
+- Select all (CTRL+A) and select all visible (CTRL+Shift+A) functionality was
+  introduced.
+- Circle markers below selected objects are now displayed.
+- Drag selection was implemented.
+- Simple health bars were introduced.
+
+A more detailed update summary is available [here][de-newsletter].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://www.reddit.com/r/DigitalExtinction/
+[@Indy2222]: https://github.com/Indy2222/
+[de-newsletter]: https://mgn.cz/blog/de01/
+
+### [Turn-based strategy game (ThousandthStar's devlog)]
+
+![Skeleton](skeleton.png)
+
+[ThousandthStar] ([GitHub](https://github.com/ThousandthStar/multiplayer_game))
+is creating a simple turn-based strategy game using the Bevy game engine. It's a
+small side project he's been building in his spare time.
+
+The game aims to be a cross between Chess and the game [Clash Mini](https://clash.com).
+Players move their troops around the board and try to get them to their opponent's
+side. The game is far from playable, but here is some of the progress that has
+been done:
+
+- Server and client troop information exchange through packets.
+- Threads to allow for multiple games to run at the same time.
+- Tile selection appears when troops are clicked.
+
+More features are currently under development:
+
+- Troop movement.
+- Troop attacks.
+
+The game uses an extremely simple 8x pixel art style. The palette is
+[Paper Pixels](https://lospec.com/palette-list/paper-pixels) with some extra colors.
+
+_Discussions: [/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/ylksma/discussion_thread_for_thousandthstars_multiplayer)_
+
+[ThousandthStar]: https://github.com/ThousandthStar
+[Turn-based strategy game (ThousandthStar's devlog)]: https://dev.to/thousandthstar-start-of-the-game-development-blog-series-p42
+
+### vetovoima
+
+![vetovoima](vetovoima.png)
+
+[vetovoima][vetovoima_itch] by [@MatiasKlemola][vetovoima_twitter] is an arcade game
+where you control gravity.
+
+This month, the origin story of vetovoima was released
+[on the Valuemotive blog][vetovoima_blog]. In the story, an abstract idea
+turns into an arcade game, which eventually makes it to RustConf 2022!
+
+[vetovoima_itch]: https://yourmagicisworking.itch.io/vetovoima
+[vetovoima_twitter]: https://twitter.com/MatiasKlemola
+[vetovoima_blog]: https://www.valuemotive.com/post/hobby-project-spotlight-vetovoima
+
+## Engine Updates
+
+### [Fyrox]
+
+![Fyroxed](fyroxed.gif)
+
+[Fyrox] ([Discord][fyrox_discord], [Twitter][fyrox_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-the-box features. In October
+it hit version 0.28 which added new functionality and improved existing:
+
+- Asset preview during instantiation (see the gif above).
+- Improved and deterministic script processing.
+- Scripts are now compatible with saved games.
+- Major text box widget improvements.
+- Prefab property inheritance via reflection.
+- Automatic node handle mapping via reflection.
+- Sprite sheet animation support.
+- Multi-borrow context to solve borrowing issues.
+- Editor now stores list of recently used files, scene settings, and more.
+- World Viewer now allows you to change a node type.
+- Major [book] improvements.
+- See the full list of changes in the [blog post][0.28].
+
+[Fyrox]: https://github.com/FyroxEngine/Fyrox
+[0.28]: https://fyrox.rs/blog/post/feature-highlights-0-28/
+[fyrox_discord]: https://discord.com/invite/xENF5Uh
+[fyrox_twitter]: https://twitter.com/DmitryNStepanov
+[book]: https://fyrox-book.github.io/
+
+### [miniquad]
+
+{{ image_figure(
+    alt="ios-miniquad"
+    src="ios_zemeroth.png"
+    caption="[zemeroth](https://github.com/ozkriff/zemeroth/) on the iOS simulator") }}
+
+[miniquad] is a pure Rust, cross-platform graphics library.
+
+This month was about improving miniquad on mobile experience.
+
+On iOS, miniquad got [an article](https://macroquad.rs/articles/ios/)
+on setting up the developer environment, getting provisioning files,
+etc.
+
+TL;DR: even on old Macs/Xcode, mini/macroquad-based games can
+be built with  
+
+```rust
+cargo build --target aarch64-apple-ios && ios_deploy
+```
+
+No iOS-specific code required and no need to deal with Xcode projects.
+
+For Android, miniquad got
+[a writeup](https://www.patreon.com/posts/73600033)
+on Java interop, AAB bundles and other Android specific internals.
+
+[miniquad]: https://github.com/not-fl3/miniquad/
+
+## Learning Material Updates
+
+### WGPU Wiki
+
+[@wumpf](https://twitter.com/wumpf/) updated the
+[wgpu wiki](https://github.com/gfx-rs/wgpu/wiki/Learning-wgpu)
+to include an explanation of some of the fundamental
+wgpu/WebGPU concepts.
+
+It includes info diagrams on how `RenderPipeline` connects
+to other resources as well as an overview on the data structures
+involved in rendering a frame.
+
+### [Learn Wgpu] Updated
+
+The Learn Wgpu tutorial has been updated to 0.14!
+
+The API changes from 0.13 are pretty simple - check them out
+[here](https://sotrh.github.io/learn-wgpu/news/0.14/)
+
+[Learn Wgpu]: https://sotrh.github.io/learn-wgpu
+
+### [wgpu-openxr-example][wgpu-openxr-example]
+
+![A screenshot of the desktop mode of the example](wgpu-openxr-example.png)
+
+[`wgpu-openxr-example`][wgpu-openxr-example] is an example of how to wire up
+wgpu (Vulkan-only) to OpenXR by [@philpax](https://github.com/philpax)
+([Dims][dims]). It displays a triangle in the centre and a triangle per hand,
+and renders to both a window and your XR headset with both head and headset tracking.
+
+It has multiple modes of operation, including disabling XR integration
+entirely at compile-time with a Cargo feature, to make it easy to understand
+each step in the process of integrating OpenXR.
+
+[wgpu-openxr-example]: https://github.com/philpax/wgpu-openxr-example
+[dims]: https://www.dims.co/
+
+## Tooling Updates
+
+### [Blackjack]
+
+![Blackjack: A height field terrain built from a noise function being edited in
+real time](blackjack.gif)
+
+[Blackjack] by @setzer22 is a procedural modeling application made in Rust,
+using rend3, wgpu, and egui. It follows the steps of applications like Houdini,
+or Blender's geometry nodes project and provides a node-based environment to
+compose procedural recipes to create 3d models.
+
+The past couple months have been busy for Blackjack, the work continues with a
+focus of filling in all the missing bits to enable usage in more indie gamedev
+workflows.
+
+Some of the changes include:
+
+- New nodes for geometry editing, like: _Resample curve_, _Point cloud_,
+  _Polygon_, _Line from points_ or _Edit geometry_.
+- A new type of mesh, the height map with its set of nodes.
+- A way to import OBJ meshes into procedural graphs.
+- Bug fixes in extrude and bevel nodes, making them more robust and handle more
+  kinds of meshes.
+- A new DragValue widget offering more precise control when tweaking parameters.
+- Smoother camera controls and various editor UX improvements.
+
+Blackjack has no release notes yet, but make sure to check out the recently
+merged PRs ([1][blackjack-pr-1], [2][blackjack-pr-2], [3][blackjack-pr-3]) for a
+more in-depth summary of the changes and lots of animated gifs.
+
+On the social side, a first [blog post][blackjack-blog-post] in a series was
+published on Ko-fi showing a real gamedev use case using Blackjack and the Godot
+engine together to implement a racing game. Additionally, Blackjack now has a
+[Twitter account][blackjack-twitter]. Consider following both for more frequent
+updates!
+
+Currently, development is focused on implementing the next major feature:
+Gizmos. There are [some initial results][blackjack-gizmos], and the full PR for
+it is expected to land sometime during November.
+
+[Blackjack]: https://github.com/setzer22/blackjack
+[blackjack-pr-1]: https://github.com/setzer22/blackjack/pull/45
+[blackjack-pr-2]: https://github.com/setzer22/blackjack/pull/46
+[blackjack-pr-3]: https://github.com/setzer22/blackjack/pull/52
+[blackjack-gizmos]: https://twitter.com/Blackjack3dRust/status/1587900630718615552
+[blackjack-blog-post]: https://ko-fi.com/post/New-nodes-Improved-Lua-bindings-and-lots-of-QoL-i-S6S6FK40S
+[blackjack-twitter]: https://twitter.com/Blackjack3dRust
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor that will be based around a
+Rust-powered node graph compositing engine.
+
+September and October's [sprint 19][graphite-sprint-19] focused on major new
+features and improvements to make Graphite more useful and usable.
+
+- Like magic: [Stable Diffusion][graphite-stable-diffusion], the open source AI
+  image generator, is integrated into Graphite as the Imaginate tool. It
+  provides an innovative non-destructive workflow to interactively co-create
+  art with a skilled AI.
+- Right on the nodes: Graphite's node graph engine is finally up and running,
+  now integrated with a node-powered tool that desaturates the underlying
+  artwork. A graph panel will be ready shortly. Just in time for
+  [Nodevember][graphite-nodevember]!
+- With flying colors: The color picker menu gains hex/RGB/HSV controls.
+  Gradients get unlimited color transitions. The Eyedropper tool is rewritten
+  to sample pixels from the viewport. The editor UI gets a color scheme design
+  refresh for improved clarity, plus helpful new input widgets.
+
+Open the [Graphite editor][graphite-live-demo] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-19]: https://github.com/GraphiteEditor/Graphite/milestone/19
+[graphite-stable-diffusion]: https://en.wikipedia.org/wiki/Stable_Diffusion
+[graphite-nodevember]: https://nodevember.io/
+[graphite-live-demo]: https://editor.graphite.rs
+
+## Library Updates
+
+### [glutin]
+
+[glutin] ([GitHub][glutin-github], [docs.rs][glutin-docs])
+by [@kchibisov] ([rust-windowing]) is a crate that is well known for
+being an OpenGL platform initialization on top of winit.
+
+With glutin `0.30`, this is no longer the case. The crate was
+rewritten from scratch and redesigned around [raw-window-handle], so
+you don't need [winit] anymore in this equation and it could be used with
+whatever windowing library you prefer, like [smithay-client-toolkit] for
+pure Wayland clients.
+
+Given everything is based on raw-window-handle the crate is more low-level
+now and also exposes the underlying platform API like `EGL`, `GLX`, and `WGL`
+directly. There's already an interest of using glutin to handle `EGL` in
+projects like [Smithay].
+
+Previously with glutin `0.29` everything was based around the single
+[`WindowedContext`] - while this was convinient for some users and worked on
+desktop platforms, that fact was a major pain on Android where the window
+gets destroyed over time, but its context could be kept around, or when you
+fail to query configuration with supplied parameters leading to chain creating
+`WindowedContext` and causing delays on startup. For example, you can create all
+the objects and then fail on setting vsync, forcing you to start over.
+
+None of that is an issue with glutin `0.30.0`. The API is now structured around
+`Display`, `Context`, `Surface`, and `Config`, where every object is built from
+the `Display` and has its own role which is close to what you usually can find
+in OpenGL native rendering platforms specifications, like `EGL`.
+
+Unfortunatelly, the new API isn't as easy to bootstrap as it was with old
+glutin, especially when you want to use platforms like `WGL` and `GLX`.
+However, if you're using winit there will be (or is already) a special crate
+[glutin-winit] to handle platform-specific `Display` creation for you.
+
+To see the new API in action, look at the [glutin examples]. They
+should work on desktop platforms and Android (you may even notice that there's
+no special code for Android at all!).
+
+One note to add, is that iOS is **no longer** supported, but only due to
+lack of maintainers for it. If you rely on iOS support in glutin, the devs
+encourage you to help contributing to it upstream, or you'd stuck with glutin
+`0.29` which won't receive any updates anymore.
+
+For further info, check out the [winit matrix room](https://matrix.to/#/#winit:matrix.org)
+or [#winit](https://web.libera.chat/#winit) at libera.chat.
+
+[glutin]: https://crates.io/crates/glutin
+[glutin examples]: https://github.com/rust-windowing/glutin/tree/master/glutin_examples
+[glutin-winit]: https://github.com/rust-windowing/glutin/pull/1517
+[winit]: https://crates.io/crates/winit
+[Smithay]: https://github.com/smithay/smithay
+[`WindowedContext`]: https://docs.rs/glutin/0.29.1/glutin/type.WindowedContext.html
+[smithay-client-toolkit]: https://crates.io/crates/smithay-client-toolkit
+[glutin-github]:  https://github.com/rust-windowing/glutin
+[raw-window-handle]: https://crates.io/crates/raw-window-handle
+[glutin-docs]: https://docs.rs/glutin
+[@kchibisov]: https://github.com/kchibisov
+[rust-windowing]: https://github.com/rust-windowing
+
+### [presser]
+
+[presser] ([GitHub][presser-github], [docs.rs][presser-docs])
+by [@fu5ha] ([Embark Studios][embark])
+is a crate to help you copy things into raw buffers without
+invoking spooky action at a distance (undefined behavior).
+
+Ever done something like this?
+
+```rust
+#[derive(Clone, Copy)]
+#[repr(C)]
+struct MyDataStruct {
+    a: u8,
+    b: u32,
+}
+
+let my_data = MyDataStruct { a: 0, b: 42 };
+
+// 🚨 MyDataStruct contains 3 padding bytes after `a`, which are
+// uninit, therefore getting a slice that includes them is UB!
+let my_data_bytes: &[u8] = transmute(&my_data);
+
+// allocate an uninit buffer of some size
+let my_buffer: MyBufferType = some_api.alloc_buffer_size(2048);
+
+// 🚨 this is UB for the same reason, these bytes are uninit!*
+let buffer_as_bytes: &mut [u8] =
+    slice::from_raw_parts(my_buffer.ptr(), my_buffer.size());
+
+// 🚨 this is UB because not only are both slices invalid,
+// this is not ensuring proper alignment!
+buffer_as_bytes.copy_from_slice(my_data_bytes);
+```
+
+[presser] can help.
+
+```rust
+// borrow our raw allocation as a presser::Slab, asserting we have
+// unique access to it. see the docs for more.
+let slab = unsafe { raw_allocation.borrow_as_slab(); }
+
+// now we may safely copy `my_data` into `my_buffer`,
+// starting at a minimum offset of 0 into the buffer
+let copy_record = presser::copy_to_offset(&my_data, &mut slab, 0)?;
+```
+
+If you're not convinced this is actually an issue, read more in the
+[crate readme][presser-readme]. If you're intrigued and want to know more,
+see the [docs][presser-docs].
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/y5mq3w/presser),
+[Twitter](https://twitter.com/fu5ha/status/1581705656218062848)_
+
+[presser]: https://crates.io/crates/presser
+[presser-github]: https://github.com/embarkstudios/presser
+[presser-docs]: https://docs.rs/presser
+[@fu5ha]: https://github.com/fu5ha
+[embark]: https://github.com/embarkstudios
+[presser-readme]: https://crates.io/crates/presser
+
+### [Hanabi]
+
+The [Hanabi] library ([GitHub][hanabi-github], [docs.rs][hanabi-docs]) is a
+modern VFX library for the [Bevy Game Engine][bevy]. It focuses on scale to produce
+stunning visual effects (VFX) in real time, offloading most of the work to
+the GPU (compute shaders), with minimal CPU intervention. The design is inspired
+by modern particle systems found in other industry-leading game engines.
+
+This month, [Hanabi] v0.4.0 was released, adding a 3D cone emitter and some
+more testing, followed by v0.4.1 providing several bug fixes and support for custom
+MSAA settings. Both versions target the latest Bevy 0.8 release.
+
+The internal architecture was also updated to decouple particle spawning and update,
+allowing to update over [6 millions particles][hanabi-6m] in real time with close
+to zero CPU usage. This new architecture will be available in the upcoming v0.5.0
+release as part of the upgrade to the imminent Bevy 0.9 release.
+
+[Hanabi]: https://crates.io/crates/bevy_hanabi
+[hanabi-github]: https://github.com/djeedai/bevy_hanabi
+[hanabi-docs]: https://github.com/djeedai/bevy_hanabi
+[hanabi-6m]: https://twitter.com/djeedai/status/1586812459737923586
+
+### [`seldom_state`]
+
+`seldom_state` by [Seldom] ([GitHub][seldom-github]) is a component-based
+state machine plugin for Bevy. It's useful for AI, player state, animation,
+and other entities that occupy varying states.
+
+In October, `seldom_state` recieved its 0.2 and 0.2.1 updates. 0.2 gave `Done`
+and `DoneTrigger` success and failure variants, and changed states to be
+bundles instead of components. 0.2.1 added `insert_on_enter`
+and `remove_on_exit` methods to the state machine, which let you automatically
+add and remove bundles upon state change.
+
+_Discussions:
+[0.2](https://twitter.com/Seldom_SE/status/1581696118064177152),
+[0.2.1](https://twitter.com/Seldom_SE/status/1586647959201906688)_
+
+[`seldom_state`]: https://github.com/Seldom-SE/seldom_state
+[Seldom]: https://twitter.com/Seldom_SE
+[seldom-github]: https://github.com/Seldom-SE
+
+### MarpII
+
+MarpII ([GitLab](https://gitlab.com/tendsinmende/marpii),
+[Twitter](https://twitter.com/siebencorgie),
+[Mastodon](https://mastodon.social/@siebencorgie)) by
+[Siebencorgie](https://github.com/siebencorgie)
+is a highlevel-ish helper for Vulkan using
+[Ash](https://crates.io/crates/ash).
+
+MarpII is the successor to [Marp](https://gitlab.com/tendsinmende/marp), which
+was a Rust-y abstraction layer over low-level Vulkan bindings.
+
+The new crate does not focus on wrapping Vulkan into one safe wrapper, but
+instead provides multiple levels of helpers that should make using it easier.
+This includes handling resource lifetimes and providing simplifications for
+common operations.
+
+The main crate provides utilities for robust Vulkan context (instances, devices,
+etc.) and resource (images, buffers, descriptors etc.) creation. Lately,
+higher level helpers like a
+[resource managing frame graph](https://siebencorgie.rs/posts/marpii-rmg/) and
+helpers for descriptor creation and command buffer recording joined the project.
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Yomi Hustle](https://twitter.com/ivy_sly_/status/1589988615123193856) is an
+    online turn-based TAS fighter, which is going into open beta on November 10th.
+  - [TheGrimsey](https://thegrimsey.net/2022/10/13/Bevy.html) is writing a devlog
+   of their experiences with Bevy.
+  - [Tiny Building Game](https://twitter.com/h3r2tic/status/1578125088280530946)
+    introduced a shader refactoring dev tool.
+  - [Embark](https://medium.com/embarkstudios/embarks-creative-playground-call-for-early-players-2e1d56d21ede)
+    is looking for early players for their creative platform.
+  - [R:Vust](https://sethmaddev.itch.io/rvust) is a side-scrolling SHMUP.
+  - [Tomb Explorer](https://www.youtube.com/watch?v=z8DCqoxHtDs) has a new
+  devlog video.
+  - [Tantan](https://www.youtube.com/watch?v=2-pXntcUWfM) is working on a voxel game.
+  - [Punchy](https://github.com/fishfolk/punchy/releases/tag/v0.1.0)
+    released the first MVP of their scripting engine.
+  - [Bungo Drifter](https://mungbungo.itch.io/bungo-drifter) is an infinite
+    voxel city generator.
+  - [Vange-rs](https://www.reddit.com/r/rust_gamedev/comments/yicr23/driving_through_the_voxel_grid_in_vangers/)
+    added a new style of rendering.
+  - [RainyCloud](https://store.steampowered.com/app/1343230/RainyCloud/) is an
+    experimental game where you control a cloud.
+  - [Life Code](https://www.youtube.com/watch?v=S2jxKva4n1U) released another
+    devlog for their ecosystem sim.
+- Other engine updates:
+  - [GGEZ](https://www.reddit.com/r/rust_gamedev/comments/xvm9eb/ggez_080rc1)
+    published a new release candidate for v0.8.
+  - [Pyxel](https://twitter.com/kitao/status/1578669120416993280) has a new
+    tutorial of how to use their web version.
+- Other learning material updates:
+  - [Rustacean Station](https://rustacean-station.org/episode/forest-anderson/)
+  interviewed Forest Anderson about Veloren, a multiplayer voxel RPG.
+  - [Rukai](https://www.youtube.com/watch?v=g4Xqf2MFXpk) gave a talk about how
+    they built a frame data website in Rust.
+  - [LittleB0xes](http://www.littleboxesgames.fr/posts/psycho-pong-part-one/)
+    started a tutorial series for Macroquad.
+  - [Dan Olson from Treyarch](https://www.youtube.com/watch?v=GtRo-eF8-TE) gave
+    a talk on using Rust for game tooling.
+  - [Larry Du](https://dublog.net/blog/rust-2/) made a web game using Bevy.
+  - [Ryosuke](https://dev.to/whoisryosuke/primitive-geometry-in-wgpu-and-rust-1da1)
+    wrote about rendering primitive geometry with WGPU.
+  - [PhaestusFox](https://www.youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6)
+    has posted more episodes of their 'Bevy Basics' tutorial series.
+- Other tooling updates:
+  - [Modmapper](https://www.hallada.net/2022/10/05/modmapper-putting-every-skyrim-mod-on-a-map-with-rust.html)
+    is an interactive map of every Skyrim mod on Nexus Mods.
+  - [LelsersLasers](https://lelserslasers.itch.io/3d-cellular-automata-wgpu-rust)
+    is building 3D cellular automata with WGPU.
+  - [Vismut](https://orsvarn.com/vismut-0-6/) released version 0.6 of their
+    procedural texturing tool.
+- Other library updates:
+  - [psx-sdk-rs](https://github.com/ayrtonm/psx-sdk-rs) is a basic Rust SDK for
+    the PlayStation 1.
+  - [WGPU 0.14](https://github.com/gfx-rs/wgpu/releases/tag/v0.14.0) was released.
+  - [gba](https://github.com/rust-console/gba/blob/main/CHANGELOG.md) is a crate
+    for Game Boy Advance development.
+  - [quinn](https://github.com/quinn-rs/quinn/releases/tag/0.9.0) released
+    version 0.9 of their pure-Rust QUIC implementation.
+  - [iyes_loopless 0.8](https://twitter.com/IyesGames/status/1585975134170468352)
+    provides usability improvements for Bevy game loops.
+  - [leafwing_abilities](https://twitter.com/AliceICecile/status/1582169655460114433)
+    is a library for managing game character abilities.
+  - [dualquat](https://github.com/knickish/dualquat) is a library for use in
+    dual quaternion-based physics simulations.
+  - [seed_creator](https://www.reddit.com/r/rust_gamedev/comments/yaw82r/random_seed_creation_showcase_for_wasm4_fantasy)
+    creates random seeds for the WASM4 fantasy console.
+  - [bevy-hikari](https://github.com/cryscan/bevy-hikari) implements global
+    illumination for Bevy.
+  - [bevy_ecs_tilemap](https://github.com/StarArawn/bevy_ecs_tilemap/releases/tag/v0.8.0)
+    added many new features.
+  - [bevy_mod_mesh_tools](https://github.com/DGriffin91/bevy_mod_mesh_tools)
+    provides helper code for working with meshes.
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - [SDL2 vs Winit/Pixels/CPAL/etc. Is going "native" really worth it?](https://www.reddit.com/r/rust_gamedev/comments/xyjdy5/sdl2_vs_winitpixelscpaletc_is_going_native_really/)
+  - [What's the best 2D engine like pygame, but for Rust?](https://www.reddit.com/r/rust_gamedev/comments/y72as6/whats_the_best_2d_engine_like_pygame_but_for_rust)
+  - [Best way to draw massive amount of individual pixels every frame](https://www.reddit.com/r/rust_gamedev/comments/xz642j/falling_sand_simulation_best_way_to_draw_pixels)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/yslo3f/this_month_in_rust_gamedev_39_october_2022/),
+[Twitter](https://twitter.com/rust_gamedev/status/1591162878190649345),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/039/ios_zemeroth.png b/content/news/039/ios_zemeroth.png
new file mode 100644
index 000000000..47a6bd268
Binary files /dev/null and b/content/news/039/ios_zemeroth.png differ
diff --git a/content/news/039/jumpy.png b/content/news/039/jumpy.png
new file mode 100644
index 000000000..b96ed8bc2
Binary files /dev/null and b/content/news/039/jumpy.png differ
diff --git a/content/news/039/miam.png b/content/news/039/miam.png
new file mode 100644
index 000000000..7149da71e
Binary files /dev/null and b/content/news/039/miam.png differ
diff --git a/content/news/039/projects.png b/content/news/039/projects.png
new file mode 100644
index 000000000..f878fadb9
Binary files /dev/null and b/content/news/039/projects.png differ
diff --git a/content/news/039/skeleton.png b/content/news/039/skeleton.png
new file mode 100644
index 000000000..9203d6c69
Binary files /dev/null and b/content/news/039/skeleton.png differ
diff --git a/content/news/039/vetovoima.png b/content/news/039/vetovoima.png
new file mode 100755
index 000000000..1fdcb5f92
Binary files /dev/null and b/content/news/039/vetovoima.png differ
diff --git a/content/news/039/wgpu-openxr-example.png b/content/news/039/wgpu-openxr-example.png
new file mode 100644
index 000000000..bd31779f0
Binary files /dev/null and b/content/news/039/wgpu-openxr-example.png differ
diff --git a/content/news/040/8bd-ui-prev.png b/content/news/040/8bd-ui-prev.png
new file mode 100644
index 000000000..f31304eb8
Binary files /dev/null and b/content/news/040/8bd-ui-prev.png differ
diff --git a/content/news/040/animation_editor.png b/content/news/040/animation_editor.png
new file mode 100644
index 000000000..bda11834c
Binary files /dev/null and b/content/news/040/animation_editor.png differ
diff --git a/content/news/040/bevy-hikari-n40.jpeg b/content/news/040/bevy-hikari-n40.jpeg
new file mode 100644
index 000000000..cdda060cb
Binary files /dev/null and b/content/news/040/bevy-hikari-n40.jpeg differ
diff --git a/content/news/040/bevy_atmosphere.png b/content/news/040/bevy_atmosphere.png
new file mode 100644
index 000000000..568583dce
Binary files /dev/null and b/content/news/040/bevy_atmosphere.png differ
diff --git a/content/news/040/bevy_bloom_lion.jpeg b/content/news/040/bevy_bloom_lion.jpeg
new file mode 100644
index 000000000..cbe826951
Binary files /dev/null and b/content/news/040/bevy_bloom_lion.jpeg differ
diff --git a/content/news/040/bevy_quickmenu.gif b/content/news/040/bevy_quickmenu.gif
new file mode 100644
index 000000000..497f49680
Binary files /dev/null and b/content/news/040/bevy_quickmenu.gif differ
diff --git a/content/news/040/cnc.jpg b/content/news/040/cnc.jpg
new file mode 100644
index 000000000..58b8e5c57
Binary files /dev/null and b/content/news/040/cnc.jpg differ
diff --git a/content/news/040/cybergate.png b/content/news/040/cybergate.png
new file mode 100644
index 000000000..3f8d6c5e7
Binary files /dev/null and b/content/news/040/cybergate.png differ
diff --git a/content/news/040/defold.png b/content/news/040/defold.png
new file mode 100644
index 000000000..a6163364b
Binary files /dev/null and b/content/news/040/defold.png differ
diff --git a/content/news/040/digital-extinction.jpeg b/content/news/040/digital-extinction.jpeg
new file mode 100644
index 000000000..908cc30aa
Binary files /dev/null and b/content/news/040/digital-extinction.jpeg differ
diff --git a/content/news/040/eldiron.png b/content/news/040/eldiron.png
new file mode 100644
index 000000000..113110ef2
Binary files /dev/null and b/content/news/040/eldiron.png differ
diff --git a/content/news/040/embark-logo.jpg b/content/news/040/embark-logo.jpg
new file mode 100644
index 000000000..7d030a707
Binary files /dev/null and b/content/news/040/embark-logo.jpg differ
diff --git a/content/news/040/gamedev-meetup.png b/content/news/040/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/040/gamedev-meetup.png differ
diff --git a/content/news/040/godot-rust-gdextension.png b/content/news/040/godot-rust-gdextension.png
new file mode 100644
index 000000000..3c3110bee
Binary files /dev/null and b/content/news/040/godot-rust-gdextension.png differ
diff --git a/content/news/040/graphite.png b/content/news/040/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/040/graphite.png differ
diff --git a/content/news/040/iced-cosmic.png b/content/news/040/iced-cosmic.png
new file mode 100644
index 000000000..cf588ae0b
Binary files /dev/null and b/content/news/040/iced-cosmic.png differ
diff --git a/content/news/040/index.md b/content/news/040/index.md
new file mode 100644
index 000000000..689252d97
--- /dev/null
+++ b/content/news/040/index.md
@@ -0,0 +1,1174 @@
++++
+title = "This Month in Rust GameDev #40 - November 2022"
+transparent = true
+date = 2022-12-19
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 40th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 21st Rust Gamedev Meetup took place in November. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video].
+
+The meetups take place on the second Saturday of every month via the
+[Rust Gamedev Discord server][rust-gamedev-discord] and are also
+[streamed on Twitch][rust-gamedev-twitch].
+If you would like to speak at the next meetup, please
+[respond to the monthly GitHub issue that will be created][gamedev-meetup-speakers].
+
+[gamedev-meetup-video]: https://youtube.com/watch?v=BS_446HI12I
+[gamedev-meetup-speakers]: https://github.com/rust-gamedev/meetup#how-to-sign-up-to-speak
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+## Game Updates
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Swords, Crates, Grenades, & Mines"
+    src="jumpy.png"
+    caption="Jumpy Items: Swords, Crates, Grenades, & Mines") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+In the last month, Jumpy migrated from a client-server networking model to a P2P
+Rollback model using [GGRS]. This was to address shortcomings with the server
+model that had been implemented, and to take advantage of the excellent
+user experience that rollback networking can offer.
+
+The rollback model did come with the new requirement to run up to 8 simulation
+frames per 16ms screen refresh, though, and unfortunately the JavaScript
+bindings used to implement the game items were not performant enough to keep up.
+For now, scripting has been temporarily disabled.
+
+This sparked a quick migration of the TypeScript files to Rust, and also
+[a discussion][jumpy_wasm_discussion] about future possibilities for using WASM to
+get better determinism and rollback performance, along with lower-overhead WASM
+scripts.
+
+With promising ideas for future improvements, the rest of the month was spent
+focusing on getting the initial items completed, with Grenades, Swords, Crates,
+and Mines all landing recently.
+
+With just one more item planned and minimal clean up work, an MVP release is
+just around the corner!
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[Bevy]: https://bevyengine.org
+[GGRS]: https://github.com/gschup/ggrs
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]:  https://spicylobster.itch.io
+[jumpy_wasm_discussion]: https://github.com/fishfolk/jumpy/discussions/489
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="At the Abyss"
+    src="cybergate.png"
+    caption="The abyss is the deepest, hardest level, filled with monsters of all sizes and strength") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) by CyberSoul is an
+ambitious endeavor to create an immersive universe experience with the power of
+artificial intelligence and procedurally generated gameplay styles. Explore a
+world filled with strange creatures and thrilling adventures!
+
+The latest updates include:
+
+- A new islands map featuring a safe zone and progressively more challenging
+  levels.
+- Collectible Cubic Orbs that provide health, points, and bullets.
+- An intuitive interface for day cycle, inventory (bullets), and cooldowns.
+- Upgrade your stats as you level up.
+- And an Emergency Recall feature for when you’re stranded.
+
+Be among the first to experience the wonders of AI-driven universe with
+CyberGate! [Join the Discord server][cybergate-dis] to participate in
+the upcoming Phase 7.0!
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### Rusty Vangers
+
+![Vange-rs rendered with a voxel tree](voxel-3rd-person.jpg)
+
+[Rusty Vangers] ([GitHub][vangers-src], [Itch-io][vangers-itch]) is an
+experimental re-implementation of the [Vangers] game,
+using GPUs and multi-threading in Rust.
+
+The project has started with a strong focus on rendering,
+since efficient GPU implementation of a Voxel world as large as
+2048x16384x256 (that's about 8 giga-voxels!) turned into a tough challenge,
+even though the original game from 1998 easily does it on CPU.
+
+Finally, after years of experiments, a method has been implemented
+that is fast and universal when it comes to viewing angles. It's based
+on an acceleration structure in the form of a voxel octree.
+This work has landed at the start of November, and now it's possible
+to [ride through][vangers-video] the strange worlds
+while looking from behind the car, or even from inside it.
+
+This method runs on all APIs (including OpenGL!), thanks to wgpu/naga
+portability. It's suitably fast, regardless of perspective, even on
+an old macBook with an integrated GPU. It concludes the rendering story
+of the project, and the devs can shift focus on other areas.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/ypf38k/voxel_tracing_vange_rs)_
+
+[Rusty Vangers]: https://vange.rs
+[vangers-src]: https://github.com/kvark/vange-rs
+[vangers-itch]: https://kvark.itch.io/vangers
+[Vangers]: https://store.steampowered.com/app/264080/Vangers
+[vangers-video]: https://vimeo.com/manage/videos/765602608
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="laser trail in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Laser trail in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+Here is the summary of the changes since the last update. It consists of commit
+range ffd5987..494096b (2022-11-03-2022-11-27). There were 75 non-merge commits
+in total.
+
+The most notable updates are:
+
+- trails after laser fires are briefly visible,
+- flying drones no longer slide on terrain but fly in height,
+- simple main menu and map selection were added,
+- a game design document was kicked off,
+- both Rust API, and other technical documentation are automatically published
+  at [docs.de-game.org][de-docs],
+- many community-related improvements have been made,
+- the game was migrated to the new Bevy v0.9,
+- there were some code quality and performance improvements,
+- de_tools crate was fixed.
+
+A more detailed update summary is available [here][de-update-02].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[@Indy2222]: https://github.com/Indy2222
+[de-docs]: https://docs.de-game.org
+[de-update-02]: https://mgn.cz/blog/de02
+
+### [Space Frontiers]
+
+![In-game screenshot of a player pointing a laser gun.](space_frontiers_ingame_screenshot.png)
+
+[Space Frontiers] ([GitHub], [Discord], [Twitter], [Reddit], [Steam Group])
+by [Star Wolves] is an online sci-fi action community RPG game simulating
+space (and spaceships) in 3D.
+
+The game has been in-development for over two years.
+The server and client were successfully prototyped with Godot several
+years ago. After that, the server, with all its features, was
+successfully ported to [Bevy]. The client is now getting the same
+porting treatment!
+
+The project is commercial, [open-source] and has a proprietary license.
+There is a milestone for a license change to free open-source.
+
+Space Frontiers seeks to deliver customized community gameplay experiences.
+Read more about plugins and content customization in the [development journal].
+
+The official StarWolves.io forum and discussion board were launched a week ago.
+The first 50 registrants will receive a permanent unique forum group/title.
+
+[Star Wolves]: https://starwolves.io
+[development journal]: https://starwolves.io/showthread.php?tid=1
+[Space Frontiers]: https://github.com/starwolves/space
+[GitHub]: https://github.com/starwolves/space
+[open-source]: https://github.com/starwolves/space
+[Steam Group]: https://steamcommunity.com/groups/starwolvescommunity
+[Discord]: https://discord.gg/yYpMun9CTT
+[Twitter]: https://twitter.com/starwolvesstar
+[Reddit]: https://reddit.com/u/StarwolvesStar
+
+### [Timely Defuse]
+
+![Screenshot of Timely Defuse, featuring a chubby hero disarming a bomb.
+Dynamites are scattered about.
+"WAVE 5" and a score of 199 appear at the top.](timely-defuse.png)
+
+[Timely Defuse] ([GitHub][timely-defuse-github]) by [@E_net4]
+is a mobile Web game using Bevy, submitted to GitHub Game Off 2022.
+In this game, explosives are coming out of nowhere
+and it's the hero's job to stop as many of them from exploding as possible.
+
+Some remarks about the experience of creating Timely Defuse
+were shared on [Dev.to][timely-defuse-dev].
+
+[Timely Defuse]: https://e-net4.itch.io/timely-defuse
+[timely-defuse-github]: https://github.com/Enet4/timely-defuse
+[@E_net4]: https://hachyderm.io/@E_net4
+[timely-defuse-dev]: https://dev.to/e_net4/timely-wrap-up-quick-notes-on-timely-defuse-441o
+
+### [Spaceviata]
+
+![Screenshot of Spaceviata, showing the galaxy with some stars discovered and the game UI.](spaceviata.png)
+
+[Spaceviata] ([GitHub][spaceviata-github]) by [@FrancoisMockers]
+is a strategy game made with [Bevy], submitted to GitHub Game Off 2022.
+
+Starting with one star, your goal in this turn-by-turn game is to conquer the
+galaxy, fighting against AI players, and balancing exploration with
+colonization to avoid stretching your resources too thin.
+
+[Spaceviata]: https://vleue.itch.io/spaceviata
+[spaceviata-github]: https://github.com/mockersf/spaceviata
+[@FrancoisMockers]: https://hachyderm.io/@FrancoisMockers
+
+### [Scummstreets]
+
+[Scummstreets] is a new multiplayer online role-playing game by [@dooskington].
+The game is a fork/sequel to [Antorum Isles], so the game server is written in Rust,
+and the official client is made with Unity. It's still in a pre-alpha state.
+
+There was one dev log published this month:
+
+- [2: Character And Combat Work](https://ratwizard.dev/dev-log/scummstreets/2)
+
+[Scummstreets]: https://ratwizard.dev/dev-log/scummstreets
+[Antorum Isles]: https://antorum.ratwizard.dev
+[@dooskington]: https://twitter.com/dooskington
+
+### [8bit Duels]
+
+{{ image_figure(
+    alt="UI preview"
+    src="8bd-ui-prev.png"
+    caption="UI preview") }}
+
+[@ThousandthStar] is creating an 8bit themed multiplayer game. It's a turn-based
+strategy game and is currently under development. This month, the
+[blog][8bit-blog] got moved from [dev.to][8bit-dev.to] to ThousandthStar's own
+blog on GitHub.
+
+The game is soon getting a UI, and more packets need to be implemented before
+the game is ready to play. ThousandthStar is excited for the game to be
+playable, but it will probably take some time, since he is doing it as a side
+project when he has some time. The game is lacking troop spawns, a turn system,
+and some more troops! Any and all ideas posted to the
+[r/rust_gamedev][8bit-r/rust_gamedev] thread are greatly appreciated.
+
+If possible, ThousandthStar would like the art to be made up of voxel models
+instead of just pixel art, but he doesn't know if he'll reach that point yet.
+
+_Discussion: [r/rust_gamedev][8bit-r/rust_gamedev]_
+
+[8bit Duels]: https://thousandthstar.github.io
+[@ThousandthStar]: https://github.com/ThousandthStar
+[8bit-blog]: https://thousandthstar.github.io
+[8bit-dev.to]: https://dev.to/thousandthstar
+[8bit-r/rust_gamedev]: https://reddit.com/r/rust_gamedev/comments/ylksma/thousandthstars_multiplayer
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="A riverside"
+    src="veloren.jpeg"
+    caption="Reflections on the river") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+Doors were worked on, and now they open more consistently in a single direction.
+There is ongoing work to add train tracks to the world, as well as train
+stations in villages. A talk about Veloren was given at the Rust and Cpp Cardiff
+Meetup, which [you can watch here][rust-and-cpp-cardiff-meetup].
+
+Work was done on minotaurs to improve their attacks. A new dungeon type, adlet,
+is being worked on. Bird animations are also having some work done. Houses are
+seeing an uplift with some tests being done. In December, Veloren will be
+hosting a Christmas event in the second half of the month.
+
+November's full weekly devlogs: "This Week In Veloren...":
+[#197][veloren-197],
+[#198][veloren-198],
+[#199][veloren-199].
+
+[veloren]: https://veloren.net
+[veloren-197]: https://veloren.net/devblog-197
+[veloren-198]: https://veloren.net/devblog-198
+[veloren-199]: https://veloren.net/devblog-199
+[rust-and-cpp-cardiff-meetup]: https://youtube.com/watch?v=bT2SeYXpQm8
+
+### [Combine&Conquer][cnc-logs]
+
+![top view on lots of machinery and belts](cnc.jpg)
+
+[Combine&Conquer][cnc-itch] ([Steam][cnc-steam]) by [Martin Buck][@I3ck]
+is a WIP multi-planetary automation game similar to Satisfactory or Factorio.
+[This month's updates][cnc-log-0-3] include:
+
+- Reworked belts/arms/assemblers,
+- modules improvements,
+- structure tiers additions,
+- color palettes,
+- UI and planet visuals improvements.
+
+Also, [check out a cool video][cnc-vid] with the progress of the project
+over two years of development.
+
+[@I3ck]: https://github.com/I3ck
+[cnc-itch]: https://martinbucksoftware.itch.io
+[cnc-steam]: https://store.steampowered.com/app/2220850/Combine_And_Conquer
+[cnc-logs]: https://buckmartin.de/combine-and-conquer.html
+[cnc-log-0-3]: https://buckmartin.de/combine-and-conquer/2022-11-22-v0.3.0.html
+[cnc-vid]: https://reddit.com/r/rust_gamedev/comments/yk9onb/the_two_year_development_progress_of_my
+
+## Engine Updates
+
+### [Pixel Engine][pixel_engine]
+
+[pixel_engine] by [@Maix0] is a 2D game engine that started as a Rust-version
+of olcPixelGameEngine (written in C++). It was used as a learning project
+for Maix0, where he worked on it for over 3 years.
+
+This engine has a very straightforward API and is mostly CPU based
+(the exception is Decals which are GPU-sprites) but it can achieve some things.
+Use it as a way to learn new algorithms or to make a simple game.
+
+It uses [wgpu] underneath so there is support for all desktop targets and WASM
+(even though there is a bug in the WASM builds
+where the keyboard layout is only QWERTY).
+
+The most recent addition is the [SpriteRef], a way to create a view
+inside a sprite where it is possible to draw in it.
+You can have multiple non-overlapping views at the same time.
+
+[pixel_engine]: https://github.com/Maix0/pixel_engine
+[@Maix0]: https://github.com/Maix0
+[SpriteRef]: https://docs.rs/pixel_engine/0.6.0/pixel_engine/graphics/struct.SpriteMutRef.html
+[wgpu]: https://wgpu.rs
+
+### [Fyrox]
+
+![Animation Editor](animation_editor.png)
+
+[Fyrox] ([Discord][fyrox_discord], [Twitter][fyrox_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-the-box features. In November
+it got a lot of new functionality and improved existing:
+
+- Major animation system rework
+- New animation editor
+- Reworked animation blending state machine editor
+- Major improvements to the curve editor widget
+- Curve-based animation system
+- Smart placement mode for move gizmo
+- Node and property selectors
+- Better WebAssembly support - asynchronous scene loading and WASM project template
+- Various improvements for project template generator
+- Lots of bug fixes
+
+[Fyrox]: https://github.com/FyroxEngine/Fyrox
+[fyrox_discord]: https://discord.com/invite/xENF5Uh
+[fyrox_twitter]: https://twitter.com/DmitryNStepanov
+
+### [Bevy v0.9][bevy_news]
+
+![bevy bloom lion](bevy_bloom_lion.jpeg)
+
+[Bevy][bevy_engine] is a refreshingly simple data-driven game engine built in Rust.
+It is [free and open source][bevy_repo] forever!
+
+Bevy 0.9 brought many incredible new features.
+You can check out the [full release blog post here][bevy_news],
+but here are some highlights:
+
+- [HDR Post Processing, Tonemapping, and Bloom](https://bevyengine.org/news/bevy-0-9/#hdr-post-processing-tonemapping-and-bloom)
+- [FXAA](https://bevyengine.org/news/bevy-0-9/#fxaa-fast-approximate-anti-aliasing)
+- [Deband Dithering](https://bevyengine.org/news/bevy-0-9/#deband-dithering)
+- [Other Post Processing Improvements](https://bevyengine.org/news/bevy-0-9/#post-processing-view-target-double-buffering)
+- [New Scene Format](https://bevyengine.org/news/bevy-0-9/#new-scene-format)
+- [Code Driven Scene Construction](https://bevyengine.org/news/bevy-0-9/#dynamic-scene-builder)
+- [Improved Entity/Component APIs](https://bevyengine.org/news/bevy-0-9/#improved-entity-component-apis)
+- [Exclusive System Rework](https://bevyengine.org/news/bevy-0-9/#exclusive-system-rework)
+- [Enum Reflection](https://bevyengine.org/news/bevy-0-9/#enum-reflection)
+- [Time Shader Globals](https://bevyengine.org/news/bevy-0-9/#time-shader-globals)
+- [Plugin Settings](https://bevyengine.org/news/bevy-0-9/#plugin-settings)
+- [Bevy UI Z-Indices](https://bevyengine.org/news/bevy-0-9/#bevy-ui-z-indices)
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ytiv2a/bevy_09),
+[Hacker News](https://news.ycombinator.com/item?id=33577284),
+[Twitter](https://twitter.com/cart_cart/status/1591543728233385984)_
+
+[bevy_engine]: https://bevyengine.org
+[bevy_news]: https://bevyengine.org/news/bevy-0-9
+[bevy_repo]: https://github.com/bevyengine/bevy
+
+### [godot-rust][gd-github]
+
+![godot-rust GDExtension](godot-rust-gdextension.png)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Twitter][gd-twitter])
+is a Rust library that provides bindings for the Godot engine. Just this month,
+a [Mastodon account][gd-mastodon] was opened to share development info.
+
+November brings the long-awaited GDExtension binding, enabling access to Godot 4
+features from Rust. Still in an early experimental phase, it is already possible
+to run smaller examples like Godot's famous Dodge-the-Creeps tutorial game.
+
+Compared to the GDNative binding, APIs are a bit simpler now:
+
+- One central `Gd<T>` pointer combining `Ref`/`Instance` and their type-states
+- Self-registering classes: `#[derive(GodotClass)]` and you're good-to-go
+- Less `unsafe`, less `unwrap()`, more runtime checks
+
+The repository is available at [godot-rust/gdextension][gd-github], while the
+current development status is tracked in [#24][gd-24]. The [book][gd-book] as
+well as documentation are still under construction.
+
+[gd-24]: https://github.com/godot-rust/gdextension/issues/24
+[gd-book]: https://github.com/godot-rust/book
+[gd-github]: https://github.com/godot-rust/gdextension
+[gd-discord]: https://discord.gg/aKUCJ8rJsc
+[gd-twitter]: https://twitter.com/GodotRust
+[gd-mastodon]: https://mastodon.gamedev.place/@GodotRust
+
+### [defold-rs]
+
+![Defold logo](defold.png)
+
+[@JustAPotota] is working on rusty bindings for the [Defold][defold] engine
+and [has started a thread about this on Defold's forum][defold-rs-thread]
+where you can fond all more info and updates.
+
+The project is split up into a few different parts:
+
+- [defold-rs] - Rust bindings to dmSDK and test project for new bindings
+- [defold-rs-extender] - Custom build server
+- [defold-rs-template] - Rust port of the native extension template
+
+> It works the same way as regular C/C++ extensions: everything is done
+> on the build server and you only need the standard Defold editor
+> to build games. <...>
+>
+> These extensions are full Cargo projects. The main benefit being that
+> you can use any of the Rust libraries on crates.io in your Defold game
+> just by listing them in your Cargo.toml.
+> Theoretically, you could even write a game with the Bevy game engine
+> and embed it into a Defold project!
+
+Note that the project is in an early stage:
+only bundling for Windows and Linux is currently supported,
+you must host your own build server and it provides
+no sandboxing or security against malicious extensions.
+
+[@JustAPotota]: https://github.com/JustAPotota
+[defold-rs]: https://github.com/JustAPotota/defold-rs
+[defold-rs-extender]: https://github.com/JustAPotota/defold-rs-extender
+[defold-rs-template]: https://github.com/JustAPotota/defold-rs-template
+[defold-rs-thread]: https://forum.defold.com/t/writing-native-extensions-in-rust/71980
+[defold]: https://defold.com
+
+## Learning Material Updates
+
+### [Render Pipelines in wgpu][render-pipelines-post]
+
+![Floating bananas and cubes with stony texture](render-pipelines.jpg)
+
+[@whoisryosuke] wrote [a blog post][render-pipelines-post]
+on how to parse #GLTF files in Rust, render them using WebGPU,
+and play animations imported from Blender!
+
+[@whoisryosuke]: https://mastodon.gamedev.place/@whoisryosuke
+[render-pipelines-post]: https://dev.to/whoisryosuke/render-pipelines-in-wgpu-and-rust-2dh3
+
+### [Rapier Physics Engine Showcase][rapier-tut-video]
+
+![Youtube preview: bevy logo, rapier logo and a piece of Rust code](rapier-bevy-yt.jpg)
+
+[Matthew Bryant][matthew-bryant] released [a video][rapier-tut-video]
+with a broad overview of some of the core features and organization
+of the [Rapier][rapier] physics engine's [Bevy plugin][rapier-bevy].
+
+[rapier-tut-video]: https://youtube.com/watch?v=GwlZ5EPu8l0
+[matthew-bryant]: https://youtube.com/@logicprojects
+[rapier]: https://rapier.rs
+[rapier-bevy]: https://github.com/dimforge/bevy_rapier
+
+### [Evaluating Health & Quality of Crates at Embark][embark-guide]
+
+![Embark's logo: title and a person in space helmet](embark-logo.jpg)
+
+[@repi] shared [some internal guidelines][embark-guide] about how they
+look into and evaluate health & quality of Rust crates
+at [Embark Studios][embark].
+
+> note: I wrote this for our internal documentation & guidelines at Embark
+> so not all of it is likely relevant for other companies,
+> but sharing here as others expressed interest in seeing it
+>
+> these are not exact rules but things to consider, esp. for adding dependencies
+> for long term use in large Rust project in production.
+>
+> our project is ~500k LoC and uses ~700 crates, so some care and
+> active gardening is in needed. which is why we (read: @ca1ne)
+> also built `cargo-deny` and `cargo-about` early on and use it heavily.
+
+[@jntrnr] made a [video overview of the guide][jntrnr-video].
+
+[@repi]: https://mastodon.gamedev.place/@repi
+[embark]: https://embark.dev
+[embark-guide]: https://gist.github.com/repi/d98bf9c202ec567fd67ef9e31152f43f
+[@jntrnr]: https://jntrnr.com
+[jntrnr-video]: https://youtube.com/watch?v=4sZTcBg50wc
+
+## Tooling Updates
+
+### [Boytacean][boytacean]
+
+Boytacean ([GitHub][boytacean], [Working Emulator][boytacean-web])
+by [@joamag] is a Game Boy emulator written in Rust
+with both Native (using SDL) and Web (using WebAssembly) frontends that has been
+created as a learning experiment to better understand both Rust capabilities and
+Game Boy hardware.
+The Web frontend is especially interesting making use of Web standards like
+[Gamepad API][gamepad-api] to provide a rich and joyful experience for both
+desktop and mobile devices.
+Performance wise the web version runs smoothly with little to no significant
+hardware requirements.
+
+Even though Boytacean supports most Game Boy games and passes most well-known
+test ROMs there are still some features lacking like support for Game Boy Color
+and APU (sound) support.
+
+You can check this [Reddit post][boytacean-red-ann] for more information.
+
+[boytacean]: https://github.com/joamag/boytacean
+[boytacean-web]: https://boytacean.joao.me
+[@joamag]: https://github.com/joamag
+[gamepad-api]: https://developer.mozilla.org/docs/Web/API/Gamepad_API/Using_the_Gamepad_API
+[boytacean-red-ann]: https://reddit.com/r/rust/comments/ywxugc/game_boy_emulator_using_rust
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+November's [sprint 20][graphite-sprint-20] introduces:
+
+- Filling in the blanks: The Imaginate tool gains Inpaint/Outpaint, letting
+  users [replace content][graphite-inpaint-demo] in masked areas and even
+  ["uncrop"][graphite-outpaint-demo] entire images, powered by
+  [Stable Diffusion][graphite-stable-diffusion].
+- Going native: Graphite is now available as a desktop app, thanks to Tauri.
+  The app now has access to system resources like rustc and the GPU, which lets
+  it compile and run node graph effects as SPIR-V compute shaders in Vulkan for
+  hardware-accelerated rendering.
+- Connecting the dots: The node graph compositor now
+  [supports interactive editing][graphite-nodes-demo], so users can drag nodes
+  and chain together effects. Nodes can be set in the Properties panel or
+  exposed as inputs in the graph.
+
+It's easy to get involved with the project by developing new nodes. Join the
+project [Discord][graphite-discord] and ask how to begin.
+
+Stay tuned for the imminent Alpha Milestone 2 release and progress converting
+existing features into nodes.
+
+Open the [Graphite editor][graphite-editor] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-20]: https://github.com/GraphiteEditor/Graphite/milestone/20
+[graphite-inpaint-demo]: https://youtube.com/watch?v=Ck2R0yqTLcU&t=3269
+[graphite-outpaint-demo]: https://youtube.com/watch?v=Ck2R0yqTLcU&t=3862s
+[graphite-nodes-demo]: https://youtube.com/watch?v=Ck2R0yqTLcU&t=4332
+[graphite-stable-diffusion]: https://en.wikipedia.org/wiki/Stable_Diffusion
+[graphite-editor]: https://editor.graphite.rs
+
+## Library Updates
+
+### [bevy_atmosphere v0.5][bevy_atmosphere]
+
+![bevy_atmosphere collage: colored skies](bevy_atmosphere.png)
+
+bevy_atmosphere ([crates.io][bevy_atmosphere],
+[docs.rs](https://docs.rs/bevy_atmosphere/latest/bevy_atmosphere/),
+[GitHub](https://github.com/JonahPlusPlus/bevy_atmosphere))
+is now compatible with Bevy 0.9.
+
+The focus of this update was decoupling the atmospheric model from the
+compute pipeline. What this means is that users can choose a different model
+or create their own using the `Atmospheric` trait. This sets the groundwork for
+having a variety of models to choose from, each for a different type of game.
+
+With the removal of the `Atmosphere` resource, comes the addition of the
+`AtmosphereModel` resource and the `Nishita` and `Gradient` models. `Nishita`
+is the same model that was used in the previous version of bevy_atmosphere.
+`Gradient` is a new model that provides a simple gradient of three colors,
+making it ideal for stylized games.
+
+There is also the `Atmosphere<T>` and `AtmosphereMut<T>` system params,
+which can be used to work with a particular model
+without having to cast it from `AtmosphereModel`.
+
+If you want to read more about the technical changes, check out the developer's
+[blog post](https://jonahplusplus.dev/2022/12/01/bevy_atmosphere_0.5.html)!
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/za948o/bevy_atmosphere_05_is_now_released),
+[/r/bevy](https://reddit.com/r/bevy/comments/za93oo/bevy_atmosphere_05_is_now_released),
+[/r/rust](https://reddit.com/r/rust/comments/za93zb/bevy_atmosphere_05_is_now_released)_
+
+[bevy_atmosphere]: https://crates.io/crates/bevy_atmosphere
+
+### [Bevy Sequential Actions]
+
+{{ image_figure(
+    alt="Bevy sequential actions simple demo"
+    src="sequential_actions.gif"
+    caption="An entity with a queue of repeating actions.") }}
+
+`bevy-sequential-actions` ([GitHub][seq-actions-gh], [docs.rs][seq-actions-docs])
+is a simple helper library for the [Bevy][bevy] game engine.
+It aims to execute a queue of various actions in a sequential manner.
+
+An action is anything that implements the `Action` trait,
+and can be added to any `Entity` that contains the `ActionsBundle`.
+In the image above, the following actions have been added:
+
+```rust
+commands
+    .actions(entity)
+    .config(AddConfig {
+        order: AddOrder::Back,
+        start: true,
+        repeat: Repeat::Forever,
+    })
+    .add(WaitAction::new(1.0))
+    .add(MoveAction::new(Vec3::X * 2.0))
+    .add(WaitAction::new(1.0))
+    .add(MoveAction::new(Vec3::X * -2.0));
+```
+
+With version `0.6` comes the ability to
+add a collection of actions that run in parallel.
+This means that all actions will start and stop at the same time,
+as the whole collection is treated as "one action".
+In other words, the action queue will only advance
+when all actions in the collection are finished.
+
+```rust
+commands
+    .actions(agent)
+    .add_many(
+        ExecutionMode::Parallel,
+        actions![
+            action_a,
+            action_b,
+            action_c,
+        ]
+    );
+```
+
+[Bevy Sequential Actions]: https://crates.io/crates/bevy-sequential-actions
+[seq-actions-gh]: https://github.com/hikikones/bevy-sequential-actions
+[seq-actions-docs]: https://docs.rs/bevy-sequential-actions
+
+### [Sparsey] v0.10
+
+[Sparsey] by [@LechintanTudor] is an Entity Component System focused on
+flexibility, conciseness and providing features exclusive to its sparse
+set-based implementation.
+
+The latest release takes advantage of the newly added Generic Associated Types
+to provide a uniform interface for running systems, functions and closures that
+borrow data from World and Resources, via the "run", "run_locally" and
+"run_exclusive" functions.
+
+Example:
+
+```rust
+let heaviest = sparsey::run(&world, &resources, |weights: Comp<Weight>| {
+    (&weights)
+        .iter()
+        .with_entity()
+        .max_by_key(|(_entity, &weight)| weight)
+        .map(|(entity, _weight)| entity)
+});
+```
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+
+### [Bevy Quickmenu][bevy_quickmenu_crates]
+
+![Bevy Quickmenu simple menu demo](bevy_quickmenu.gif)
+
+bevy_quickmenu ([crates.io][bevy_quickmenu_crates],
+[docs.rs][bevy_quickmenu_docs], [GitHub][bevy_quickmenu_github]) allows quickly
+creating nested game menus that can be navigated with keyboard, gamepad or
+mouse.
+
+Bevy Quickmenu builds on BevyUI and allows defining nested menu structures in a
+super simple way. Its also very extensible and customisable. If you game needs
+menus and you would like to support multiple input methods, give it a try.
+
+For example, a simple vertical menu can be defined like this:
+
+```rust
+fn root_menu(state: &CustomState) -> Menu<Actions, Screens, CustomState> {
+    Menu::new(
+        "root",
+        vec![
+            MenuItem::image(state.logo.clone()),
+            MenuItem::headline("Menu"),
+            MenuItem::action("Start", Actions::Close),
+            MenuItem::screen("Sound", Screens::Sound)
+                .with_icon(MenuIcon::Sound),
+            MenuItem::screen("Controls", Screens::Controls)
+                .with_icon(MenuIcon::Controls),
+        ],
+    )
+}
+```
+
+For a more involved example, check out [this definition of a settings screen
+with control device selection and a sound menu][bevy_quickmenu_settings].
+[Version `0.1.5`][bevy_quickmenu_0.1.5] was just released which simplifies
+generics and makes it easier to create dynamic menus.
+
+_Discussion:
+[/r/rust_gamedev][bevy_quickmenu_reddit]_
+
+[bevy_quickmenu_crates]: https://crates.io/crates/bevy_quickmenu
+[bevy_quickmenu_docs]: https://docs.rs/bevy_quickmenu
+[bevy_quickmenu_github]: https://github.com/terhechte/bevy_quickmenu
+[bevy_quickmenu_settings]: https://github.com/terhechte/bevy_quickmenu/blob/main/examples/settings.rs
+[bevy_quickmenu_0.1.5]: https://github.com/terhechte/bevy_quickmenu/releases/tag/0.1.5
+[bevy_quickmenu_reddit]: https://reddit.com/r/bevy/comments/yyl73c/new_plugin_bevy_quickmenu
+
+### [Notan v0.8][Notan]
+
+![notan examples](notan.gif)
+
+[Notan] is a simple abstraction layer that provides cross-platform windowing,
+input, audio, graphics and other features, in an ergonomic manner without
+enforcing any structure or pattern and treating WebAssembly as a first-class citizen.
+
+The version [v0.8] is one of the biggest releases, adding several improvements
+in the drawing APIs and fixes and improvements in some other features like the
+clipboard support.
+
+You can check the [demos] online and read more about the changes on the [changelog].
+
+[Notan]: https://github.com/Nazariglez/notan
+[v0.8]: https://github.com/Nazariglez/notan/releases/tag/v0.8.0
+[changelog]: https://github.com/Nazariglez/notan/blob/main/CHANGELOG.md
+[demos]: https://nazariglez.github.io/notan-web
+
+### [Bevy Hikari] v0.3
+
+{{ image_figure(
+    alt="bevy-hikari screenshot"
+    src="bevy-hikari-n40.jpeg"
+    caption="Direct lighting, emissive lighting and indirect global illumination under 4x
+temporal upscaling.") }}
+
+`bevy-hikari` ([crates.io][hikari-crates], [docs.rs][hikari-docs],
+[GitHub][hikari-github]), a path tracing renderer for [Bevy], is now compatible
+with the 0.9 version of the engine.
+
+In recent updates, the renderer implements light BVH, which allows faster and
+more accurate multiple emissive sampling. It also features a spatial upscaler
+based on FSR 1.0 and a temporal upscaler based on SMAA Tu4x, making it more
+affordable for median end devices.
+
+[Bevy Hikari]: https://github.com/cryscan/bevy-hikari
+[hikari-crates]: https://crates.io/crates/bevy-hikari
+[hikari-docs]: https://docs.rs/bevy-hikari
+[hikari-github]: https://github.com/cryscan/bevy-hikari
+
+### [Bevy Vfx Bag]
+
+{{ image_figure(
+    alt="Bevy vfx bag gif"
+    src="underwater.gif"
+    caption="A composite effect applied to Bevy's 3D shapes example.") }}
+
+`bevy-vfx-bag` ([GitHub][bevy-vfx-bag-gh], [docs.rs][bevy-vfx-bag-docs])
+is a visual effects library for the [Bevy][bevy] game engine.
+
+It had its initial 0.1.0 release aligned with Bevy's recent 0.9.0 release.
+Each effect has a plugin and effects are applied in order:
+
+```rust
+// Shows an example of adding three post processing effects:
+app
+    .add_plugin(BevyVfxBagPlugin)           // Always needed
+    .add_plugin(RaindropsPlugin)            // Shows rain on-screen
+    .add_plugin(ChromaticAberrationPlugin)  // Skews color channels
+    .add_plugin(LutPlugin)                  // Allows using a look-up table to remap colors for
+                                            // having a specific "feel" to your game
+    .run();
+```
+
+The camera which receives these effects is marked as such:
+
+```rust
+commands
+    .spawn(Camera3dBundle { ... })
+    .insert(PostProcessingInput)            // Marks this camera for post processing usage
+```
+
+Effect settings can be changed at runtime:
+
+```rust
+fn update(time: Res<Time>, mut ca: ResMut<ChromaticAberration>) {
+    // Make the red color channel skew in a sinusoidal fashion
+    ca.magnitude_r = time.elapsed_seconds().sin();
+}
+```
+
+The GitHub repository has examples and videos for all effects.
+
+A complete rework of the plugin is underway for version 0.2.0, where the
+main goal is to align with and use Bevy's render graph features,
+including the new post processing double buffering feature which arrived
+in 0.9.0.
+
+[Bevy Vfx Bag]: https://crates.io/crates/bevy-vfx-bag
+[bevy-vfx-bag-gh]: https://github.com/torsteingrindvik/bevy-vfx-bag
+[bevy-vfx-bag-docs]: https://docs.rs/bevy-vfx-bag/0.1.0/bevy_vfx_bag
+
+### [`seldom_pixel`][seldom_pixel-github]
+
+![Eight animated sprites with various configurations](seldom_pixel.gif)
+
+`seldom_pixel` ([GitHub][seldom_pixel-github], [Video Demo][seldom_pixel-demo])
+by [Seldom] is a Bevy plugin for limited color palette pixel art games,
+with features for filters, animations, typefaces, particle emitters,
+`bevy_ecs_tilemap` integration, and much more.
+
+In November, `seldom_pixel` received its 0.1 and 0.1.1 releases for Bevy 0.8.
+Its `main` branch supports Bevy 0.9, but depends on a particular
+`bevy_ecs_tilemap` commit.
+
+_Discussions:
+[Twitter](https://twitter.com/Seldom_SE/status/1587619563276902400)_
+
+[seldom_pixel-github]: https://github.com/Seldom-SE/seldom_pixel
+[seldom_pixel-demo]: https://youtu.be/pmTPdGxYVYw
+[Seldom]: https://github.com/Seldom-SE
+
+### [kayak_ui]
+
+![example app: a manu with hayak's logo, title and 3 buttons: play, options, quit](kayak.png)
+
+[Kayak UI][kayak_ui] is a WIP declarative UI that features:
+
+- Easy to use declarative syntax using a custom proc macro.
+- Fast and accurate layouts using [morphorm].
+- Style system built to kind of mimic CSS styles.
+- Image and Nine patch rendering.
+
+There's also [a book][kayak-book] that covers the basic concepts;
+
+[kayak_ui]: https://github.com/StarArawn/kayak_ui
+[morphorm]: https://github.com/geom3trik/morphorm
+[kayak-book]: https://github.com/StarArawn/kayak_ui/blob/main/book/src/SUMMARY.md
+
+### [Iced] v0.5
+
+{{ image_figure(
+    alt="A design demo application showcasing widgets and theming capabilities"
+    src="iced-cosmic.png"
+    caption="System76's COSMIC desktop software") }}
+
+[Iced] is an experimental cross-platform GUI library focused on simplicity and
+type-safety, inspired by Elm.
+
+This month's [v0.5 release][iced-v0-5] features include:
+
+- Stabilization of stateless widgets: the old widget API has been completely
+  replaced by stateless widgets. Alongside the new API, there are a bunch
+  of new helper functions and macros for easily describing view logic
+  (like `row!` and `column!`).
+- First-class theming: a complete overhaul of the styling primitives,
+  introducing a Theme as a first-class concept of the library.
+- Widget operations: an abstraction that can be used to traverse
+  (and operate on) the widget tree of an application in order
+  to query or update some widget state.
+- Lazy widget that can call some view logic only when some data has changed.
+- The Canvas widget can draw linear gradients now.
+- Touch support for Canvas.
+- iced_glow now is capable of rendering both the Image and Svg widgets.
+
+> Finally, and deserving a special mention, [System76 has decided to use iced][iced-sys76]
+> instead of GTK for Pop!_OS' desktop environment! This is one of the most important
+> adoption events since the inception of the library. The engineers at [System76]
+> are already contributing a bunch of great improvements to iced,
+> as well as breaking ground in long-standing issues that could benefit
+> the whole GUI ecosystem in Rust (like proper text rendering!).
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/yr0oe8/iced_0_5)_
+
+[Iced]: https://github.com/hecrj/iced
+[iced-v0-5]: https://github.com/iced-rs/iced/pull/1520
+[iced-sys76]: https://www.phoronix.com/news/COSMIC-Desktop-Iced-Toolkit
+[System76]: https://system76.com
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - A free open beta on [Yomi Hustle] - an online turn-based fighting game
+    and superpowered fight scene simulator by [Ivy Sly] - has begun!
+  - [@johann] shared a couple of Idu screenshots with
+    [dynamic global illumination][idu-1] and
+    [a video of stress-testing the framerate][idu-2] with the whole map
+    full of vegetation.
+  - [@crispy_dev posed a video](https://youtube.com/watch?v=QvBinznAYqY)
+    about making a roguelike from scratch in Rust.
+  - [@devildahu] posted [two][gssa-1] [gssa-2] about rewriting
+    ["Generic Space Shooter Advance"][gssa] GBA game in Rust.
+  - [@Kane_rogers] shared [a video of the latest iteration of The Station][station-vid]
+    VR survival game being build with the [Hotham][hotham] engine.
+  - @Tantan shared video devlogs about [improving combat feel][tantan-1]
+    and working on [a multiplayer networking architecture][tantan-2]
+    of his voxel game.
+- Other engine updates:
+  - [Anthony Utt] has recently converted the WIP [Alkahest] engine
+    from C++ to Rust and [released a vlog][alkahest-vid] about it
+    and its UI render specifically.
+  - [@markusmoenig] has published [the first public pre-release build][eldiron-pre-release]
+    of [Eldiron] - a cross-platform RPG engine that draws heavily
+    on the earlier Ultima games for inspiration.
+- Other tooling updates:
+  - [@Setzer22] shared a couple of posts with feature previews
+    for the next [Blackjack] release:
+    [copy&paste](https://mastodon.gamedev.place/@Setzer22/109352818515866403),
+    [an examples folder with annotated graphs](https://mastodon.gamedev.place/@Setzer22/109360242068079618),
+    [gizmos](https://mastodon.gamedev.place/@Setzer22/109377500780164246),
+    and [face selection](https://mastodon.gamedev.place/@Setzer22/109381333034474452).
+  - [@eurigilberto shared a video][vr-terrain-video] of a cool little
+    VR terrain generation app made using Rust and WebGL.
+- Other library updates:
+  - [Taffy UI v0.2](https://tech.lgbt/@alice_i_cecile/109399333226449807)
+    brings improved flexbox and significant performance improvements
+  - [kopi] by [@hasenbanck] is a small abstraction to easily and safely
+    embed an ECMAScript runtime inside a Rust based application.
+  - [dynec] by [@SOF3] is a statically archetyped opinionated ECS-like framework.
+  - [guiedit] by [@aleokdev] is a WIP library for easily adding
+    a developer GUI to any graphical application.
+  - [bevy_tweening v0.6][bevy-tweening-v0-6] features Bevy v0.9 support,
+    new Duration-based elapsed API,
+    better looping control with RepeatCount/RepeatStrategy,
+    and fixed change detection
+  - [dungeon-generator] by [@MoutonSanglant] is a naive dungeon generator
+    for rogue-like games, mostly done for education purposes.
+  - [leafwing_input_playback] by [@alice-i-cecile] is an input recording and
+    playback library for the [Bevy] game engine.
+
+[Yomi Hustle]: https://ivysly.itch.io/your-only-move-is-hustle
+[Ivy Sly]: https://twitter.com/ivy_sly_
+[@johann]: https://mastodon.gamedev.place/@johann
+[idu-1]: https://mastodon.gamedev.place/@johann/109355219994971392
+[idu-2]: https://youtube.com/watch?v=yyicR63hZ0o
+[@devildahu]: https://devildahu.ch
+[gssa]: https://github.com/devildahu/gssa-rs
+[gssa-1]: https://devildahu.ch/devlog/gba-c-to-rust
+[gssa-2]: https://devildahu.ch/devlog/gba-c-to-rust-2
+[@Kane_rogers]: https://twitter.com/Kane_rogers
+[station-vid]: https://youtube.com/watch?v=C8XzNnhELtk
+[hotham]: https://github.com/leetvr/hotham
+[tantan-1]: https://youtube.com/watch?v=54D6hgui2Kc
+[tantan-2]: https://youtube.com/watch?v=EFzFHrzIiz8
+[Anthony Utt]: https://twitter.com/alkimia_studios
+[alkahest-vid]: https://youtube.com/watch?v=OtX_8MD--fc
+[Alkahest]: https://github.com/AlkimiaStudios/alkahest-rs
+[@markusmoenig]: https://github.com/markusmoenig
+[eldiron-pre-release]: https://eldiron.com/blog/prerelease
+[Eldiron]: https://eldiron.com
+[@Setzer22]: https://mastodon.gamedev.place/@Setzer22
+[Blackjack]: https://github.com/setzer22/blackjack
+[vr-terrain-video]: https://mastodon.gamedev.place/@EuriHerasme/109368645008002886
+[kopi]: https://github.com/hasenbanck/kopi
+[@hasenbanck]: https://github.com/hasenbanck
+[dynec]: https://github.com/SOF3/dynec
+[@SOF3]: https://github.com/SOF3
+[guiedit]: https://github.com/aleokdev/guiedit
+[@aleokdev]: https://github.com/aleokdev
+[@MoutonSanglant]: https://github.com/MoutonSanglant
+[bevy-tweening-v0-6]: https://github.com/djeedai/bevy_tweening/blob/main/CHANGELOG.md#060---2022-11-15
+[dungeon-generator]: https://github.com/MoutonSanglant/dungeon-generator
+[@alice-i-cecile]: https://github.com/alice-i-cecile
+[leafwing_input_playback]: https://github.com/Leafwing-Studios/leafwing_input_playback
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+- [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
+  - [#130 "Status of the project "ECS Bench Suite"](https://github.com/rust-gamedev/wg/issues/130).
+  - [#131 "Official Mastodon Account"](https://github.com/rust-gamedev/wg/issues/131).
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["Which graphics crate do you use?"](https://reddit.com/r/rust_gamedev/comments/z1xy53/which_graphics_crate)
+  - ["WASM For Core Game Loop & Mods"](https://reddit.com/r/rust_gamedev/comments/z5cl93/wasm_core_game_loop_mods))
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+- [DIMS][dims] (Stockholm, Sweden) is building a Rust game engine and creation
+  platform dedicated to creating large multiplayer open-world games and
+  [has a lot of open positions][dims-career], including Game Engine Programmer:
+
+  > Come build a game engine and creation platform from scratch in Rust!
+  > It’s got everything: game-like collaborative building, networking by default,
+  > procedural worldbuilding, WebAssembly for scripting, WebGPU for graphics,
+  > and community-driven co-creation.
+
+  You can find all of the details in [their job offer page][dims-job].
+
+- Ultimate Games (London, UK) [is looking for Mid-to-Senior level Rust Graphics engineer][ultimate-games-job].
+
+[dims]: https://dims.co
+[dims-career]: https://dims.co/career
+[dims-job]: https://linkedin.com/jobs/view/3378931463
+[ultimate-games-job]: https://linkedin.com/jobs/view/senior-graphics-engineer-at-ultimate-games-3399850617
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/zqeq8i/rust_gamedev_40),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/109544178943651668),
+[Twitter](https://twitter.com/rust_gamedev/status/1605061212911403008),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/040/jumpy.png b/content/news/040/jumpy.png
new file mode 100644
index 000000000..f347f8a6f
Binary files /dev/null and b/content/news/040/jumpy.png differ
diff --git a/content/news/040/kayak.png b/content/news/040/kayak.png
new file mode 100644
index 000000000..e600bac16
Binary files /dev/null and b/content/news/040/kayak.png differ
diff --git a/content/news/040/notan.gif b/content/news/040/notan.gif
new file mode 100644
index 000000000..66febdced
Binary files /dev/null and b/content/news/040/notan.gif differ
diff --git a/content/news/040/rapier-bevy-yt.jpg b/content/news/040/rapier-bevy-yt.jpg
new file mode 100644
index 000000000..6b1c17515
Binary files /dev/null and b/content/news/040/rapier-bevy-yt.jpg differ
diff --git a/content/news/040/render-pipelines.jpg b/content/news/040/render-pipelines.jpg
new file mode 100644
index 000000000..0dcbbbdc2
Binary files /dev/null and b/content/news/040/render-pipelines.jpg differ
diff --git a/content/news/040/seldom_pixel.gif b/content/news/040/seldom_pixel.gif
new file mode 100644
index 000000000..316d084b9
Binary files /dev/null and b/content/news/040/seldom_pixel.gif differ
diff --git a/content/news/040/sequential_actions.gif b/content/news/040/sequential_actions.gif
new file mode 100644
index 000000000..0bd2b357f
Binary files /dev/null and b/content/news/040/sequential_actions.gif differ
diff --git a/content/news/040/space_frontiers_ingame_screenshot.png b/content/news/040/space_frontiers_ingame_screenshot.png
new file mode 100644
index 000000000..7ad1b8da5
Binary files /dev/null and b/content/news/040/space_frontiers_ingame_screenshot.png differ
diff --git a/content/news/040/spaceviata.png b/content/news/040/spaceviata.png
new file mode 100644
index 000000000..adcd7ef2b
Binary files /dev/null and b/content/news/040/spaceviata.png differ
diff --git a/content/news/040/timely-defuse.png b/content/news/040/timely-defuse.png
new file mode 100644
index 000000000..2ba47f20d
Binary files /dev/null and b/content/news/040/timely-defuse.png differ
diff --git a/content/news/040/underwater.gif b/content/news/040/underwater.gif
new file mode 100644
index 000000000..17e4bb3b0
Binary files /dev/null and b/content/news/040/underwater.gif differ
diff --git a/content/news/040/vangers-voxel-debug.png b/content/news/040/vangers-voxel-debug.png
new file mode 100644
index 000000000..2c8fe4431
Binary files /dev/null and b/content/news/040/vangers-voxel-debug.png differ
diff --git a/content/news/040/veloren.jpeg b/content/news/040/veloren.jpeg
new file mode 100644
index 000000000..67a3ee41f
Binary files /dev/null and b/content/news/040/veloren.jpeg differ
diff --git a/content/news/040/voxel-3rd-person.jpg b/content/news/040/voxel-3rd-person.jpg
new file mode 100644
index 000000000..994721c63
Binary files /dev/null and b/content/news/040/voxel-3rd-person.jpg differ
diff --git a/content/news/041/8bd_kraken.png b/content/news/041/8bd_kraken.png
new file mode 100644
index 000000000..07835b74d
Binary files /dev/null and b/content/news/041/8bd_kraken.png differ
diff --git a/content/news/041/absm_editor.gif b/content/news/041/absm_editor.gif
new file mode 100644
index 000000000..708a24115
Binary files /dev/null and b/content/news/041/absm_editor.gif differ
diff --git a/content/news/041/bevy-rpg.png b/content/news/041/bevy-rpg.png
new file mode 100644
index 000000000..649f3685a
Binary files /dev/null and b/content/news/041/bevy-rpg.png differ
diff --git a/content/news/041/brcg.png b/content/news/041/brcg.png
new file mode 100644
index 000000000..7532ef881
Binary files /dev/null and b/content/news/041/brcg.png differ
diff --git a/content/news/041/cargo_space.png b/content/news/041/cargo_space.png
new file mode 100644
index 000000000..b4deec191
Binary files /dev/null and b/content/news/041/cargo_space.png differ
diff --git a/content/news/041/clicker.png b/content/news/041/clicker.png
new file mode 100644
index 000000000..64ac43c00
Binary files /dev/null and b/content/news/041/clicker.png differ
diff --git a/content/news/041/cnc.png b/content/news/041/cnc.png
new file mode 100644
index 000000000..7bce0fab5
Binary files /dev/null and b/content/news/041/cnc.png differ
diff --git a/content/news/041/digital-extinction.jpeg b/content/news/041/digital-extinction.jpeg
new file mode 100644
index 000000000..908cc30aa
Binary files /dev/null and b/content/news/041/digital-extinction.jpeg differ
diff --git a/content/news/041/doome.gif b/content/news/041/doome.gif
new file mode 100644
index 000000000..9d4ab2850
Binary files /dev/null and b/content/news/041/doome.gif differ
diff --git a/content/news/041/egui.gif b/content/news/041/egui.gif
new file mode 100644
index 000000000..65cbe8702
Binary files /dev/null and b/content/news/041/egui.gif differ
diff --git a/content/news/041/egui_dnd.gif b/content/news/041/egui_dnd.gif
new file mode 100644
index 000000000..1d628ddbc
Binary files /dev/null and b/content/news/041/egui_dnd.gif differ
diff --git a/content/news/041/flesh.gif b/content/news/041/flesh.gif
new file mode 100644
index 000000000..4b531c84b
Binary files /dev/null and b/content/news/041/flesh.gif differ
diff --git a/content/news/041/gamedev-meetup.png b/content/news/041/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/041/gamedev-meetup.png differ
diff --git a/content/news/041/google-forma.png b/content/news/041/google-forma.png
new file mode 100644
index 000000000..a1d8f1703
Binary files /dev/null and b/content/news/041/google-forma.png differ
diff --git a/content/news/041/graphics-meetup-logo.jpg b/content/news/041/graphics-meetup-logo.jpg
new file mode 100644
index 000000000..8ada80f34
Binary files /dev/null and b/content/news/041/graphics-meetup-logo.jpg differ
diff --git a/content/news/041/graphite-vector-demo.png b/content/news/041/graphite-vector-demo.png
new file mode 100644
index 000000000..255dc504b
Binary files /dev/null and b/content/news/041/graphite-vector-demo.png differ
diff --git a/content/news/041/hydrofoil_41.jpg b/content/news/041/hydrofoil_41.jpg
new file mode 100644
index 000000000..1d92b5484
Binary files /dev/null and b/content/news/041/hydrofoil_41.jpg differ
diff --git a/content/news/041/index.md b/content/news/041/index.md
new file mode 100644
index 000000000..88a0c2284
--- /dev/null
+++ b/content/news/041/index.md
@@ -0,0 +1,1133 @@
++++
+title = "This Month in Rust GameDev #41 - December 2022"
+transparent = true
+date = 2023-01-28
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 41st issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust Graphics Meetup 3
+
+![Graphics meetup logo](graphics-meetup-logo.jpg)
+
+The 3rd Rust Graphics Meetup will take place on the [28th of January 2023 at
+16:00 GMT][graphics-meetup-time]. This meetup is a chance to show off what
+you've been working on in the graphics community, or see what other people have
+been doing!
+
+If you're interested in speaking, please add a comment to [this
+issue][graphics-meetup-issue]. You can also [read about the previous graphics
+meetup][graphics-meetup-2].
+
+[graphics-meetup-issue]: https://github.com/gfx-rs/meetup/issues/3
+[graphics-meetup-time]: https://everytimezone.com/s/feafb968
+[graphics-meetup-2]: https://gamedev.rs/blog/graphics-meetup-02/
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 22nd Rust Gamedev Meetup took place in December. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule
+from the meetup:
+
+- Fyrox Engine - [@dmitrynstepanov]
+- Rusty Vangers - [@kvark]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch]. If you would like to speak at the next meetup on
+January 14th, please [respond to the monthly GitHub
+issue][gamedev-meetup-speakers].
+
+[gamedev-meetup-video]: https://youtube.com/watch?v=Ck2R0yqTLcU
+[gamedev-meetup-speakers]: https://github.com/rust-gamedev/meetup/issues/2
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@dmitrynstepanov]: https://twitter.com/dmitrynstepanov
+[@GraphiteEditor]: https://twitter.com/GraphiteEditor
+[@kvark]: http://kvark.github.io
+
+### [@rust_gamedev Mastodon Feed][masto]
+
+![a screenshot of the account's header: gamepad-in-gear logo,
+description and verified links](mastodon.png)
+
+As you may know, we have [a @rust_gamedev Twitter account][twi] for
+making announcements and collecting all the cool rust gamedev stuff there
+into one feed.
+
+In the last couple of months a significant portion of rust game developers
+has either migrated from Twitter to [Mastodon] or started cross-posting there,
+so [we've decided][masto-issue] to create a similar "official"
+[@rust_gamedev account on the mastodon.gamedev.place server][masto].
+
+Please follow us there and post your own relevant updates on [Fediverse]
+using either the #RustGameDev tag or #RustLang #GameDev combo.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/zplfyi/rust_gamedev_mastodon)_
+
+[twi]: https://twitter.com/rust_gamedev
+[masto]: https://mastodon.gamedev.place/@rust_gamedev
+[Mastodon]: https://en.wikipedia.org/wiki/Mastodon_(social_network)
+[masto-issue]: https://github.com/rust-gamedev/wg/issues/131
+[Fediverse]: https://en.wikipedia.org/wiki/Fediverse
+
+## Game Updates
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="laser trail in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Laser trail in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+This month's update is somewhat smaller but there has been some important
+progress in multiplayer.
+
+The most notable updates are:
+
+- game configuration is loaded from a file ([docs][de-docs]),
+- a simple game lobby server has been created ([docs][de-docs]),
+- a Bevy plugin with the lobby client has been implemented,
+- several minor community, infrastructure, and other improvements have been
+  done.
+
+A more detailed update summary is available [here][de-update-03].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[@Indy2222]: https://github.com/Indy2222
+[Bevy]: https://bevyengine.org
+[de-docs]: https://docs.de-game.org
+[de-update-03]: https://mgn.cz/blog/de03
+
+### [Open Combat][OpenCombat_website]
+
+{{ image_figure(
+    alt="Real time tactical 2nd world war game"
+    src="open_combat.png"
+    caption="Game now includes vehicle (T-26) and shelling FX") }}
+
+Open Combat
+([Website][OpenCombat_website],
+[GitHub][OpenCombat_github],
+[Discord][OpenCombat_discord])
+by [bux][bux] is a real time tactical game
+which takes place during the 2nd world war.
+
+Since the last news about this game,
+the game engine has been rewritten to permit multiplayer.
+Most of the basic game engine features have been rewritten with
+the new engine (soldier moves, visibilities, map, etc.).
+Vehicle concept has been introduced to a T-26 tank.
+Basic fight features like gunfire and shelling have been introduced.
+
+[OpenCombat_website]: https://opencombat.bux.fr/
+[OpenCombat_github]: https://github.com/buxx/OpenCombat
+[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px
+[bux]: https://github.com/buxx/
+
+### [Tiny Glade]
+
+![Cute buildings, title, road, and sheep](tiny_glade_key_art_small.png)
+
+[@anopara]'s and [@h3r2tic]'s tiny building game
+now finally has a name! It's [Tiny Glade]!
+
+Tiny Glade is a small relaxing game about doodling
+castles. Explore gridless building chemistry, and
+watch the game carefully assemble every brick, pebble,
+and plank. There's no management, combat, or wrong
+answers - just kick back and turn forgotten meadows
+into lovable dioramas. Wishlist on [Steam][Tiny Glade]!
+
+[@anopara]: https://twitter.com/anastasiaopara
+[@h3r2tic]: https://twitter.com/h3r2tic
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade/
+
+### [Temple Knight]
+
+{{ image_figure(
+    alt="Shooting automatons in Temple Knight"
+    src="temple-knight.jpg"
+    caption="Shooting automatons in Temple Knight") }}
+
+Temple Knight ([Itch.io][tk-itch], [Twitter][tk-twitter])
+by [@nilaysavant] is a 3D FPS game developed using [Bevy].
+You play the role of a knight and protect the temple from raiding automatons.
+
+What began as an experiment to learn game dev in Rust using [Bevy].
+Initially motivated by the visual appeal of a [scene running in the browser via WASM].
+It quickly started taking the shape of a game:
+
+- From adding [Rapier] for [basic physics] to developing mechanics for other entities.
+- Path finding for Automaton's using [control systems].
+- Which was later switched to a deterministic [A-start navmesh approach].
+- Developed mechanics for the player controller including the first-person-camera.
+- Implemented weapon + projectiles systems.
+- Finally, [custom shaders for projectiles] were added as a finishing touch.
+
+An experiment that became the first game published by [@nilaysavant].
+Play [Temple Knight] in your browser.
+
+[Temple Knight]: https://nilaysavant.itch.io/temple-knight
+[tk-itch]: https://nilaysavant.itch.io/temple-knight
+[tk-twitter]: https://twitter.com/nilay_savant/status/1607789552621727744
+[@nilaysavant]: https://github.com/nilaysavant
+[scene running in the browser via WASM]: https://twitter.com/nilay_savant/status/1568307034390675456
+[Rapier]: https://rapier.rs/
+[basic physics]: https://twitter.com/nilay_savant/status/1569665425046384641
+[control systems]: https://twitter.com/nilay_savant/status/1573783227911012352
+[A-start navmesh approach]: https://twitter.com/nilay_savant/status/1574735050809413633
+[custom shaders for projectiles]: https://twitter.com/nilay_savant/status/1607115041253519361
+
+### [Cargo Space][cargospace]
+
+![cargo space screenshot: two instances of the game running in parallel](cargo_space.png)
+
+[Cargo Space][cargospace] ([Discord][cargospace_discord]) by
+[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build a
+ship and fly it through space looking for new parts, fighting pirates and the
+environment.
+
+Johan wrote [an introductory post][cargospace_devlog_0] about the design idea,
+and a tentative plan for its development.
+
+The first step was to make an initial offline single-player prototype. This is
+covered in the [first devlog][cargospace_devlog_1] along with topics such as
+procedural generation, 2d platforming, bloom, and various community Bevy crates,
+such as [bevy_ecs_tilemap], [bevy_ecs_ldtk] and [bevy_particle_systems].
+
+The procedural generation needs for the game also resulted in a new crate being born.
+[noisy_bevy] is a CPU and GPU noise plugin for Bevy.
+
+After this, p2p rollback networking was added using [bevy_ggrs] and [Matchbox].
+The [second devlog][cargospace_devlog_2] goes through this in detail, and in
+particular how integration between [bevy_ggrs] and [leafwing_input_manager] was
+implemented.
+
+[cargospace]: https://helsing.studio/cargospace
+[cargospace_discord]: https://discord.gg/ye9UDNvqQD
+[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing
+[cargospace_devlog_0]: https://johanhelsing.studio/posts/cargo-space-devlog-0
+[cargospace_devlog_1]: https://johanhelsing.studio/posts/cargo-space-devlog-1
+[cargospace_devlog_2]: https://johanhelsing.studio/posts/cargo-space-devlog-2
+[noisy_bevy]: https://github.com/johanhelsing/noisy_bevy
+[Matchbox]: https://github.com/johanhelsing/matchbox
+[bevy_ggrs]: https://github.com/gschup/bevy_ggrs
+[leafwing_input_manager]: https://github.com/Leafwing-Studios/leafwing-input-manager
+[bevy_ecs_ldtk]: https://github.com/Trouv/bevy_ecs_ldtk
+[bevy_ecs_tilemap]: https://github.com/StarArawn/bevy_ecs_tilemap
+[bevy_particle_systems]: https://github.com/abnormalbrain/bevy_particle_systems
+
+### [8bit Duels]
+
+{{ image_figure(
+    alt="Kraken"
+    src="8bd_kraken.png"
+    caption="The newly added Kraken") }}
+
+[@ThousandthStar] is creating 8bit Duels
+([Discord][8bit-discord], [GitHub][8bit-github]),
+an 8bit style turn-based multiplayer strategy game.
+
+Last month, an artist joined ThousandthStar to create art for the game.
+A testing server has now been set up
+(more information is in the [Discord][8bit-discord] server).
+
+Furthermore, these three new troops have been added to the game:
+Reaper, Kraken, and Spider.
+The game now also includes new abilities for the various troops to come.
+
+The full devlog for this month can be found [here][8bit-log5].
+
+[8bit Duels]: https://thousandthstar.github.io/posts/8bd-intro/
+[@ThousandthStar]: https://github.com/ThousandthStar
+[8bit-discord]: https://discord.gg/NbBcF4bGU5
+[8bit-github]: https://github.com/ThousandthStar/8bit-duels
+[8bit-log5]: https://thousandthstar.github.io/posts/8bd-part5
+
+### [Flesh]
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="more blood") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation and
+an organic/fleshy theme. It is implemented using [Tetra]. This month's updates
+include:
+
+- Change player bullet color and add trail particle.
+- Add SFX when special weapon ready.
+- Increase blood splash particles.
+- Postpone release date to Q1, 2023.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### Pirate Annihilation
+
+{{ image_figure(
+    alt="Pirate annihilation game view"
+    src="pirate_annihilation_n41.png"
+    caption="Pirate annihilation game view, asset pack by [Kenney](https://twitter.com/KenneyNL)") }}
+
+Pirate Annihilation ([GitHub][pirate_annihilation_repo], [Twitter][indiedevcasts_twitter])
+by [indiedevcasts][indiedevcasts_www] ([@theredfish]) is a last-man-standing game
+where pirate ships battle against each other in stormy seas.
+
+The very [first devlog](https://youtu.be/lT1QmAHPRoo) is available on Youtube.
+It describes the implementation of a smooth damping effect to follow the player
+with the camera, jitter and stuttering issues, and the core game mechanics are
+now defined.
+
+[pirate_annihilation_repo]: https://github.com/indiedevcasts/pirate-annihilation
+[indiedevcasts_twitter]: https://twitter.com/indiedevcasts
+[indiedevcasts_www]: https://indiedevcasts.com
+[@theredfish]: https://twitter.com/theredfi_sh
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="A wendigo at night"
+    src="veloren.jpg"
+    caption="A fearsome wendigo encounter") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In December, work has been done to create a website to better assist moderation
+in the game. Several months of project finances were done, and all of the data
+is [publically visible][veloren-finances]. Work on Wyverns has continued, and
+lots of effort is being put into their wings. Some UI elements have changed
+location, both the bag and spellbook buttons were merged with other button bars.
+
+Frost Gigas are another big item in the works. These creatures will be Veloren's
+world boss. Gigas will hopefully be the first of a numerous elemental giants to
+roam the open world of Veloren and will need a large group of players to be able
+to take it down and collect it's new uncraftable and legendary loot!
+
+December's full weekly devlogs: "This Week In Veloren...":
+[#201][veloren-201],
+[#202][veloren-202],
+[#203][veloren-203].
+
+[veloren]: https://veloren.net
+[veloren-201]: https://veloren.net/devblog-201
+[veloren-202]: https://veloren.net/devblog-202
+[veloren-203]: https://veloren.net/devblog-203
+[veloren-finances]: https://docs.google.com/spreadsheets/d/1Fk6kDsCdZLhVszXdsWUjoG4Cgc3cLbTqJgZ-gY3Ndq0/edit#gid=0
+
+### [Thetawave]
+
+{{ image_figure(
+    alt="repeater boss"
+    src="repeater_boss.gif"
+    caption="First boss enemy in Thetawave") }}
+
+Thetawave is an open-source, roguelite, physics-based, space shooter game made
+with [Bevy] and [Rapier].
+
+This month, the first boss enemy was added to the
+game. Unlike other enemies, it is composed of a single "mob" entity and 7
+"mob segment" entities. It also uses behavior sequences to regularly change
+its active set of behaviors. You can follow [@carlosupina] on Twitter for
+regular updates about the game.
+
+[Thetawave]: https://github.com/thetawavegame/thetawave
+[@carlosupina]: https://twitter.com/carlosupina
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Swords, Crates, Grenades, & Mines"
+    src="jumpy.png"
+    caption="Jumpy Items: Swords, Crates, Grenades, & Mines") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+In the last month, work started on a new architecture for the core Jumpy game loop.
+
+Determinism and snapshot/restore functionality has been a challenge for
+networking support in jumpy. To address this, Jumpy has started migrating the core
+game loop to a custom, micro Entity Component System that is deterministic and can
+be trivially snapshot and restored.
+
+By being simple and planning to eventually support a pure C API, it's also
+intended for the micro-ECS approach to make it vastly easier to create a
+performant modding interface to Jumpy in the future.
+
+Work has almost been finished on the new Bones ECS and the surrounding [Bones]
+framework, which is still built on Bevy for rendering and otherwise talking to
+the hardware. The hope is that Bones can become a framework for making other
+games similar in scope to Jumpy, without those games have to re-invent everything
+that was needed to get features like UI, networking, localization, asset loading,
+etc.
+
+As soon as the ECS migration is finished, the plan is to get the final game juicing
+and polish done and to make a proper MVP release.
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]: https://spicylobster.itch.io
+[Bones]: https://github.com/fishfolk/bones
+
+### [Hydrofoil Generation]
+
+![hgs_screen](hydrofoil_41.jpg)
+
+[Hydrofoil Generation]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that will put you in the driving seat of modern competitive sailing.
+
+The game is written completely in Rust, using a custom engine based on
+DirectX 11, physics powered by Rapier-3D.
+
+Jaxx Vane Studio army of 2, Stefano Casillo and Chax Duero is pushing
+through the final steps to get the game ready for Steam Early Access release.
+
+As final QA approaches the team is at work to add the last level of polish
+and more details as possible to every aspect of the game.
+
+A new Tutorial System has been added to introduce people with different
+backgrounds to the game as gently as possible making the learning curve
+of this complex simulator less steep.
+
+Stefano is also back on [Twitch][hgs_twitch] streaming coding sessions live.
+
+Hydrofoil Generation should be available on Steam in the first months of 2023.
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+[hgs_twitch]: https://twitch.tv/kunosstefano
+
+### [Doomé][doome]
+
+![shooting 2.5D enemies through a doorway](doome.gif)
+
+[Doomé][doome] by [Patryk Wychowaniec] and [Jakub Trąd]
+is a GameOff'22 FPS game:
+
+> <...> the topic was cliché and our game is Doom meets Portal meets
+> The Stanley Parable, with real-time raytraced graphics
+> (that work plenty fast even on a CPU) and a 10-minute storyline!
+
+The source code [is available on GitHub][doome-src].
+The game is written with a custom [rust-gpu]-based raytracer:
+[strolle].
+[Watch a talk from a recent Rust Wrocław's meeting][doome-talk]
+to learn more about the implementation details.
+
+You can play the game online and/or get binaries [at itch.io][doome].
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/zbd8w2/doome)_
+
+[doome]: https://dzejkop.itch.io/doome
+[doome-src]: https://github.com/Patryk27/doome
+[doome-talk]: https://youtu.be/S85Tw0dVtmw?t=5306
+[Patryk Wychowaniec]: https://pwy.io
+[Jakub Trąd]: https://github.com/Dzejkop
+[strolle]: https://reddit.com/r/rust/comments/zsrvss/strolle_raytracing
+
+### [Combine&Conquer][cnc-steam]
+
+![Steam page: a screenshot with some factory and short description](cnc.png)
+
+[Combine&Conquer][cnc-steam] ([itch.io][cnc-itch], [devlog][cnc-logs],
+[Discord][cnc-discord]) by [Martin Buck][@I3ck]
+is a WIP relaxing multi-planetary 2D factory automation game.
+This month's updates include:
+
+- [Early Access release on Steam][cnc-steam].
+- [A bunch of minor v0.3.* versions][cnc-logs] with loads of bugfixes
+  and small improvements in UX, rendering, etc.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/zd96f1/cnc_steam)_
+
+[@I3ck]: https://github.com/I3ck
+[cnc-itch]: https://martinbucksoftware.itch.io
+[cnc-steam]: https://store.steampowered.com/app/2220850/Combine_And_Conquer
+[cnc-logs]: https://buckmartin.de/combine-and-conquer.html
+[cnc-discord]: https://discord.gg/peBD6Z5PvN
+
+### [triverse]
+
+![lots of small red ships are attacking a large blue ship in close range](triverse.png)
+
+[triverse] by [@cragwind] is a WIP smart-pause RTS with custom unit creation
+on a triangle grid canvas.
+
+> In a distant star system, AI collectives vie for power.
+> Assemble and control a self-replicating fleet to harvest resources,
+> salvage wreckage, and defend your territory.
+> Using modular parts, design ships to counter threats
+> while balancing mobility, defense, and firepower.
+
+You can find [the detailed guide to playing here][triverse-guide]
+and [play the web version on itch.io][triverse].
+
+This month's [updates][triverse-logs] include:
+
+- [Salvaging parts][triverse-log-1] from wreckage using workers
+  for building your own units.
+- [Torpedo launchers][triverse-log-2] for taking out large
+  or stationary targets.
+
+[@cragwind]: https://cragwind.com
+[triverse]: https://cragwind.itch.io/triverse
+[triverse-guide]: https://cragwind.com/triverse/
+[triverse-logs]: https://cragwind.itch.io/triverse/devlog
+[triverse-log-1]: https://cragwind.itch.io/triverse/devlog/458561/salvaging-parts
+[triverse-log-2]: https://cragwind.itch.io/triverse/devlog/464791/torpedo-launcher
+
+## Engine Updates
+
+### [Fyrox]
+
+![ABSM Editor](absm_editor.gif)
+
+[Fyrox] ([Discord][fyrox_discord], [Twitter][fyrox_twitter]) is a game engine that
+aims to be easy to use and provide a large set of out-of-the-box features. In December
+it got a lot of new functionality and improved existing:
+
+- Animation system rework is completed
+- Animation and ABSM editors are now fully usable
+- Reflection improvements
+- `Copy Value as String` for Inspector
+- Ability to enable/disable scene nodes
+- Customizable graph update pipeline
+- UI Widgets improvements
+- Curve editor improvements
+- Lots of bug fixes
+
+[Fyrox]: https://github.com/FyroxEngine/Fyrox
+[fyrox_discord]: https://discord.com/invite/xENF5Uh
+[fyrox_twitter]: https://twitter.com/DmitryNStepanov
+
+### [Runty8][runty8-repo]
+
+[![Runty 8 logo](runty8.png)][runty8-repo]
+
+[Runty8][runty8-repo] is an experimental port of the [Pico8][pico8-site]
+fantasy console that supports writing games in Rust.
+
+Runty8 has recently added support for WebAssembly,
+which means that you can now run your games in the browser!
+
+Feel free to [follow their template][runty8-template] to start making your own games.
+
+The project is in very early stages, and is currently looking for contributors.
+If you're interested, feel free to read their [contributing guide][runty8-contributing-guide]
+or browse through the [open issues][runty8-open-issues].
+
+[runty8-repo]: https://github.com/jjant/runty8
+[runty8-contributing-guide]: https://github.com/jjant/runty8/blob/master/CONTRIBUTING.md
+[runty8-open-issues]: https://github.com/jjant/runty8/issues
+[pico8-site]: https://www.lexaloffle.com/pico-8.php
+[runty8-template]: https://github.com/jjant/runty8#making-your-own-games
+
+## Learning Material Updates
+
+### [Rustacean Station: Presser with Gray Olson][rustacean-station-gray]
+
+![Rustacean Station's logo: rusty Ferris](rustacean-station.jpeg)
+
+The [Rustacean Station][rustacean-station] podcast
+[interviewed Gray Olson][rustacean-station-gray],
+the developer of [Presser][presser] - a library that aims to make
+it easier to safely work with byte buffers.
+
+In this episode, [Gray][gray] talks about
+art and graphic designing work for Embark Studio,
+computer graphics and ray tracing,
+memory allocation in Rust's virtual machine,
+and Embark's vision of Rust gamedev.
+
+[rustacean-station-gray]: https://rustacean-station.org/episode/gray-olson
+[rustacean-station]: https://rustacean-station.org
+[presser]: https://gamedev.rs/news/039#presser
+[gray]: https://grayolson.me
+
+### [GLTF Animations in wgpu][tut-gltf-wgpu]
+
+![Same title but as an image](tut-gltf-anim-in-wgpu.jpg)
+
+[@whoisryosuke] released [a blog post][tut-gltf-wgpu] on how to
+parse GLTF files in Rust, render them using wgpu,
+and play animations imported from Blender.
+
+[tut-gltf-wgpu]: https://whoisryosuke.com/blog/2022/importing-gltf-with-wgpu-and-rust
+[@whoisryosuke]: https://mastodon.gamedev.place/@whoisryosuke
+
+### [Create a Clicker Game with Macroquad][clicker-tut-1]
+
+![a window that shows a circle button, title, and a click counter](clicker.png)
+
+[@Paper010] released a short two-part tutorial
+aimed at beginners who want to get started with game development
+with Rust and [macroquad]:
+
+- [The first part][clicker-tut-1] covers the minimal version of a clicker game.
+- [The second part][clicker-tut-2] explains how to play sounds and change colors.
+
+The final source code [is available on GitHub][clicker-src].
+
+[clicker-tut-1]: https://dev.to/paper010/rust-create-a-clicker-game-with-macroquad-1820
+[clicker-tut-2]: https://dev.to/paper010/part-2-create-a-clicker-game-with-rust-4nne
+[clicker-src]: https://github.com/Paper010/rust-clicker-game
+[@Paper010]: https://github.com/Paper010
+
+## Tooling Updates
+
+### [Graphite][graphite-website]
+
+[
+{{ image_figure(
+    alt="Graphite logo"
+    src="graphite-vector-demo.png"
+    caption="Video: 3-minute timelapse of a vector art piece illustrated in Graphite") }}
+][graphite-vector-demo]
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+December's [sprint 21][graphite-sprint-21] introduces:
+
+- Chain reaction: The Imaginate feature, an AI image generation workflow
+  powered by [Stable Diffusion][graphite-stable-diffusion], becomes a node.
+  Chain together a sequence of fine-tuned generation steps. And explore ideas
+  by branching the graph into new creative directions.
+- Node nurturing: New features provide polish to the node graph. Nodes can be
+  copy/pasted, hidden, previewed, and linked more easily.
+- Bugs, begone!: A major effort to improve editor usability fixes dozens of
+  bugs and paper cuts. Boolean shape operations now crash less frequently, the
+  UI no longer slows down badly over time, and undo history is finally fixed.
+
+Stay tuned for the imminent Alpha Milestone 2 release and progress converting
+existing features into nodes.
+
+Open the [Graphite editor][graphite-editor] in your browser to give it a try
+and share your creations with #MadeWithGraphite on Twitter.
+
+[graphite-vector-demo]: https://youtube.com/watch?v=JgJvAHQLnXA
+  "Graphite Vector Editing: \"Commander Basstronaut\" Artwork (25x Timelapse)"
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-21]: https://github.com/GraphiteEditor/Graphite/milestone/21
+[graphite-stable-diffusion]: https://en.wikipedia.org/wiki/Stable_Diffusion
+[graphite-editor]: https://editor.graphite.rs
+
+## Library Updates
+
+### [Inox2d][inox2d]
+
+![The Japanese character for "inochi" set into a sprocket](inox2d_logo.svg)
+
+[Inox2d][inox2d] ([Discord][inox2d-discord]) by the Inox2d Workgroup
+is an experimental official Rust implementation
+of the [Inochi2D] puppet animation technology.
+Inochi2d is notably used by the popular vtuber [@AsahiLina].
+
+Currently, Inox2d is still not on par with the [reference implementation][Inochi2D-src].
+Basic features like [animations][inox2d-animations] and
+a proper [camera API][inox2d-camera] have yet to be worked on.
+
+Users who really want to use it should instead go with the reference implementation.
+If using Rust, through the official [inochi2d-rs] bindings.
+
+Currently, Inox2d contributors are working on a [WGPU renderer backend][inox2d-wgpu].
+They are also looking forward towards an [official Bevy integration][inox2d-bevy]!
+
+[inox2d]: https://github.com/Inochi2D/inox2d
+[inox2d-discord]: https://discord.com/invite/abnxwN6r9v
+[Inochi2D]: https://inochi2d.com
+[Inochi2D-src]: https://github.com/Inochi2D/inochi2d
+[@AsahiLina]: https://youtube.com/@AsahiLina
+[inox2d-animations]: https://github.com/Inochi2D/inox2d/issues/5
+[inox2d-camera]: https://github.com/Inochi2D/inox2d/issues/7
+[inox2d-wgpu]: https://github.com/Inochi2D/inox2d/pull/6
+[inochi2d-rs]: https://github.com/Inochi2D/inochi2d-rs
+[inox2d-bevy]: https://github.com/Inochi2D/inox2d/issues/1
+
+### [bevy_rpg]
+
+![an UI showing the currently running dialog in the bottom
+and some control buttons in the top-right corner](bevy-rpg.png)
+
+[bevy_rpg] ([Discord channel][bevy-rpg-discord]) by [@fianathedevgirl]
+is a plugin allowing RPG or visual novel dialogs
+to be made with the Bevy game engine.
+
+At the moment, it can be used for very basic dialogs.
+"Choose dialog" or text input dialog are still not implemented
+and the dialog controller buttons doesn't work yet.
+
+If you are interested in seeing how it should be used in production,
+checkout ["Project Flara"][project-flara]. It's a prototype/demo game
+made by the same author showcasing a JRPG-ish indie game written in Rust.
+The author also made a basic example [here][bevy-rpg-example].
+
+[bevy_rpg]: https://github.com/project-flara/bevy-rpg
+[bevy-rpg-discord]: https://discord.com/channels/676678179678715904/1054506073240899684
+[@fianathedevgirl]: https://github.com/fianathedevgirl
+[project-flara]: https://github.com/project-flara/project-flara
+[bevy-rpg-example]: https://github.com/project-flara/bevy-rpg/blob/main/examples/basic.rs
+
+### [lpcg][lpcg_crate]
+
+{{ image_figure(
+    alt="character sprite generator"
+    src="lpcg.png"
+    caption="A new library which generates character sprites") }}
+
+lpcg ([Crates.io][lpcg_crate], [GitHub][lpcg_github]) by
+[bux][bux] is a library which generates character sprites,
+based on assets from the [Liberated Pixel Cup][lpc].
+
+[lpcg_crate]: https://crates.io/crates/lpcg
+[lpcg_github]: https://github.com/buxx/lpcg/
+[lpc]: https://lpc.opengameart.org/
+
+### [egui_dnd]
+
+{{ image_figure(
+    alt="egui_dnd in action"
+    src="egui_dnd.gif"
+    caption="A [showcase](https://lucasmerlin.github.io/egui_dnd/) of egui_dnd") }}
+
+[egui_dnd] ([github][egui_dnd_github], [crates.io][egui_dnd_crates_io]) by [@lucasmerlin]
+is a new drag and drop sorting crate for egui. While egui itself includes some drag
+and drop support, it's not intuitive to use. This crate provides a simple
+abstraction over egui's drag and drop features.
+
+The first release contains initial support for vertical sorting. If there
+is interest, more features could be added.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/zpo4w9/egui_dnd)_
+
+[egui_dnd]: https://lucasmerlin.github.io/egui_dnd/
+[egui_dnd_github]: https://github.com/lucasmerlin/egui_dnd
+[egui_dnd_crates_io]: https://crates.io/crates/egui_dnd
+[@lucasmerlin]: https://github.com/lucasmerlin
+
+### [bevy_rapier_collider_gen][brcg-repo]
+
+![scene displaying generated colliders](brcg.png)
+
+[bevy_rapier_collider_gen][brcg-repo] by [@shnewto] is a library
+for generating bevy_rapier2d colliders for bevy apps, from images with
+transparency.
+
+Features include out of box support for generating:
+
+- Convex polyline colliders
+- Polyline colliders
+- Convex hull colliders
+- Heightfield colliders
+- Other colliders or geometries by getting edge coordinates in "drawing order"
+- Multiple colliders from a single image
+
+For more, in pictures, see the picture book retrospective
+["misadventures in collider generation"][brcg-retro].
+
+[brcg-repo]: https://github.com/shnewto/bevy_rapier_collider_gen
+[brcg-retro]: https://drinkspiller.com/bevy-rapier-collider-gen
+[@shnewto]: https://github.com/shnewto
+
+### [Mun v0.4.0][mun-release]
+
+[![Mun logo](mun-logo.svg)][Mun]
+
+[Mun] is a scripting language for gamedev focused on quick iteration times
+that is written in Rust.
+
+The previous Mun release dates back over one and a half years. Since then -
+slowly but steadily - the Mun Community and Core Team have been working towards
+Mun v0.4.0 and it’s finally here!
+
+Mun v0.4 does not only bring array support to Mun, but it also lays the
+groundwork for a plethora of language features that require indirect types and
+recursion. For a full list have a look at the [changelog][mun-changelog], but
+the main improvements are:
+
+- Dynamically-sized arrays
+- Simplified function invocations from Rust
+- Simplified struct API for Rust
+- Apple M1 & experimental iOS support
+- Upgrade to LLVM 13
+- Support for runtime usage in entity component systems (ECS)
+
+[Mun]: https://mun-lang.org
+[mun-release]: https://mun-lang.org/blog/2022/12/12/release-mun-v0-4-0/
+[mun-changelog]: https://github.com/mun-lang/mun/releases/tag/v0.4.0
+
+### [rust-gpu v0.4.0][rust-gpu-release]
+
+{{ image_figure(
+    alt="a screenshot: spherical characters doing stuff"
+    src="rust-gpu.jpg"
+    caption="Embark's [Creative Playground](https://twitter.com/createplayremix), which uses rust-gpu and raytracing") }}
+
+[Rust-gpu][rust-gpu] ([Discord][rust-gpu-discord]) allows you
+to write your GPU shaders in the Rust language.
+It consists of a Rust compiler backend for generating SPIR-V shader
+modules and an API to address GPU resources.
+
+Release v0.4.0 brings a lot of upgrades, bug fixes, maturity, and now also
+supports raytracing shaders! Furthermore, all dependent crates have been
+published to crates.io, so pointing to rust-gpu's GitHub in your Cargo.toml
+is no longer required.
+
+Eager to get started? Check out the [Dev Guide][rust-gpu-dev-guide], or
+chat with the devs and the community on the public [Discord server][rust-gpu-discord].
+
+[rust-gpu]: https://github.com/EmbarkStudios/rust-gpu
+[rust-gpu-release]: https://github.com/EmbarkStudios/rust-gpu/releases/tag/v0.4.0
+[embark-creative-playground]: https://twitter.com/createplayremix
+[rust-gpu-dev-guide]: https://embarkstudios.github.io/rust-gpu/book/introduction.html
+[rust-gpu-discord]: https://discord.com/channels/750717012564770887/750717499737243679
+
+### [assets_manager]
+
+assets_manager ([GitHub][assets_manager], [crates.io][assets_manager_crates])
+is a library to easily load and cache assets. It comes with support for multiple
+file formats and out-of-the-box hot-reloading.
+
+The last release includes internals performance improvements and more flexibility
+in the way to load assets.
+
+[Ggez bindings][ggez-assets_manager] were also updated to latest ggez version.
+
+[assets_manager]: https://github.com/a1phyr/assets_manager
+[assets_manager_crates]: https://crates.io/crates/assets_manager
+[ggez-assets_manager]: https://github.com/a1phyr/ggez-assets_manager
+
+### [egui v0.20][egui-twi]
+
+![Demo of improved tables shows smooth column resizing](egui.gif)
+
+[egui] is an easy-to-use immediate mode GUI library in pure Rust.
+
+This month [egui v0.20][egui-twi] was released. Highlights:
+
+- Support for [AccessKit] vastly improves the accessibility of [eframe] apps
+  on Windows and Mac.
+- Vastly improved tables (see above) for [rerun.io]'s needs.
+- Improved wgpu renderer that now allows using  egui-wgpu on the web,
+  with a WebGL backend.
+- egui now expects integrations to do all color blending in gamma space.
+- Interactive widgets can now be on top of other interactive widgets.
+  Great for putting floating widgets on top of 3D content, for instance.
+- [ecolor] helper lib for all the color conversions needs.
+- Helper functions for animating panels that collapse/expand.
+
+For full details see the [changelog][egui-changelog].
+
+[egui]: https://egui.rs
+[egui-twi]: https://twitter.com/ernerfeldt/status/1600869756491673600
+[egui-changelog]: https://github.com/emilk/egui/blob/master/CHANGELOG.md#0200---2022-12-08---accesskit-prettier-text-overlapping-widgets
+[AccessKit]: https://github.com/AccessKit/accesskit
+[eframe]: https://lib.rs/eframe
+[rerun.io]: https://rerun.io
+[ecolor]: https://docs.rs/ecolor
+
+### [google/forma][forma]
+
+[![two screenshots of an asteroids-like game: left is normal,
+right shows only tiles that changed from the last frame](google-forma.png)
+][forma-demo]
+
+[forma] by google is a (thoroughly) parallelized experimental
+Rust vector-graphics renderer with both a software (CPU) and hardware (GPU)
+back-end having the [goals][forma-goals] of portability, performance, simplicity,
+and minimal size.
+Forma relies on Rust's SIMD auto-vectorization/intrinsics and [Rayon]
+to have good performance on the CPU,
+while using [WebGPU] ([wgpu]) to take advantage of the GPU.
+
+A few implementation highlights that make the library stand out
+from commonly used vector renderers:
+
+> - Curvature-aware flattening.
+>   All higher cubic Béziers are approximated by quadratic ones, then,
+>   in parallel, flattened to line segments according to their curvature.
+>   This [technique] was developed by Raph Levien.
+> - Cheap translations and rotations.
+>   Translations and rotations can be rendered without having
+>   to re-flatten the curves, all the while maintaining full quality.
+> - Parallel pixel grid intersection.
+>   Line segments are transformed into pixel segments by intersecting them
+>   with the pixel grid. We developed a simple method that performs this computation
+>   in O(1) and which is run in parallel.
+> - Efficient sorting.
+>   We ported [crumsort] to Rust and parallelized it with Rayon, delivering
+>   improved performance over its pdqsort implementation for 64-bit random data.
+>   Scattering pixel segments with a sort was inspired from Allan MacKinnon's work
+>   on [Spinel].
+> - Update only the tiles that change (currently CPU-only).
+>   We implemented a fail-fast per-tile optimizer that tries to skip
+>   the painting step entirely. A similar approach could also be tested on the GPU.
+
+While Forma is a general-purpose library it can be an interesting building block
+for vector-based games and engines (see the [spaceship demo][forma-demo]
+from the above image).
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/znhus1/google_forma)_
+
+[forma]: https://github.com/google/forma
+[Rayon]: https://github.com/rayon-rs/rayon
+[WebGPU]: https://github.com/gpuweb/gpuweb
+[wgpu]: https://wgpu.rs/
+[forma-goals]: https://github.com/google/forma#readme
+[technique]: https://raphlinus.github.io/graphics/curves/2019/12/23/flatten-quadbez.html
+[crumsort]: https://github.com/google/crumsort-rs
+[Spinel]: https://cs.opensource.google/fuchsia/fuchsia/+/main:src/graphics/lib/compute/spinel
+[forma-demo]: https://github.com/google/forma/blob/681e8bfd3/demo/src/demos/spaceship.rs
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Ivy Sly renamed][yomi-rename] their online turn-based fighting game
+    (and superpowered fight scene simulator) Yomi Hustle
+    to "Your Only Move Is HUSTLE" due to a trademark infringement;
+    The game also [got a Steam page][yomi-steam] in preparation
+    for the upcoming release in February.
+  - Orlando Valverde published [a new version Pushin' Boxes][pushin-boxes]
+    that features a level editor.
+  - [Dustin Carlino shared][ab-street] a retrospective of 2022
+    and 2023 plans for the A/B Street project.
+  - [Paddlepunks got a new parry variation][paddlepunks] to homura that "pauses"
+    the ball for a bit before reflecting it back harder than the regular parry
+  - [@ollej released a web playable version][bunner] of the macroquad port
+    of the Infinite Bunner game.
+  - [@kuviman released Flashdark][flashdark] -  a small first-person horror game
+    where you see the dark world using your flashdark and solve puzzles
+    while avoiding the ghost.
+  - [Fish Folk: Punchy v0.2 was released][punchy]:
+    Big Bass Boss has a new bomb toss attack,
+    hitstop on damage application has changed,
+    the beginnings of support for multiple attacks per fighter and attack chains
+    are implemented, and players can now wear special hats.
+  - [Red Life][red-life] is a small game about an astronaut who is trying
+    to survive in the hostile environment of Mars.
+  - [@Tantan shared a vlog][tantan-vid] about a bug he had encountered
+    during adding multiplayer to his voxel game.
+  - [Life Code shared a vlog][life-code] about making a user interface
+    using egui with AI assistance.
+  - [@enigmanark shared a bunch of updates][retrosic2]
+    about the RetrosicII shmup game.
+- Other engine updates:
+  - [square_wheel] is a pretty advanced FPS-oriented software renderer
+    for modern CPUs.
+  - [Anthony Utt] released new vlogs about the [Alkahest] engine progress:
+    [orthograthic cameras](https://youtube.com/watch?v=eCVLRpJFOTQ),
+    [transforms, textures, and scenes](https://youtube.com/watch?v=WMIfFA2m9TA),
+    and [2D render batching](https://youtube.com/watch?v=HEqvKx4ihRU).
+- Other learning material updates:
+  - [Raph gave a talk](https://youtube.com/watch?v=zVUTZlNCb8U)
+    about the vision for high performance UI implemented in Rust,
+    and status of the current Xilem effort to build it.
+    Includes sections on the piet-gpu 2D rendering engine,
+    integration with AccessKit, and some details of the reactive architecture.
+  - [PhaestusFox](https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6)
+    has posted more episodes of their 'Bevy Basics' tutorial series.
+  - [Maciej Główka released a blog post][tut-bevy-load-toml] on nuances of
+    loading game data from TOML or JSON assets into Bevy-based games.
+  - Matthew Bryant released another [Bevy Intro Tutorials][bevy-intro-playlist]
+    YouTube video: ["Compute Shaders in Bevy"](https://youtube.com/watch?v=neyIpnII-WQ).
+- Other tooling updates:
+  - [uCrowds shared a video][ucrowds-sim] of a Rusty crowd simulation engine
+    compiled to WASM and running a simulation of 150.000 agents in real-time
+    in a browser.
+- Other library updates:
+  - [devices] is a cross-platform library for retrieving information about
+    connected devices, supports Linux and Windows.
+  - [quad-svg] is a small library for rendering
+    .svg files to [macroquad]'s Texture2D using [resvg].
+  - [@MatanLurey] released [mythoji] - a minimal Rust crate that helps to
+    identify and display fantasy appropriate emojis.
+  - [durian] is a general purpose client/server networking library that
+    provides a "thin" abstraction layer on top of the QUIC protocol (using [quinn])
+    to make writing netcode extremely simple, automatically taking care of
+    connection/streams management, byte details,
+    packet framing/fragmentation/reassembly, parallel sender/receivers, etc.
+  - [faer] is a collection of crates that implement a low-level API
+    for linear algebra routines that is somewhat similar to BLAS/Lapack,
+    but gives more control to users by allowing parallelism
+    to be specified on a per-call basis.
+  - [bevy_adventure] is a framework for building adventure games in Bevy
+    that features GLTF support, multuple scenes with dynamic objects, inventory,
+    and automatic camera animation.
+
+[yomi-rename]: https://twitter.com/ivy_sly_/status/1603289612574937092
+[yomi-steam]: https://store.steampowered.com/app/2212330/Your_Only_Move_Is_HUSTLE
+[pushin-boxes]: https://twitter.com/septum___/status/1606176677540683776
+[ab-street]: https://a-b-street.github.io/docs/project/history/vision_and_validate
+[paddlepunks]: https://twitter.com/sov_gott_games/status/1600958840220299266
+[bunner]: https://hachyderm.io/@ollej/109506591357987042
+[flashdark]: https://twitter.com/kuviman/status/1598410936460738560
+[punchy]: https://twitter.com/spicylobsterfam/status/1600122907572654080
+[red-life]: https://reddit.com/r/rust/comments/zgv101/red_life_surviving_on_mars
+[tantan-vid]: https://youtube.com/watch?v=PnwhUeyrQ54
+[life-code]: https://youtube.com/watch?v=miUD9Ni7LnQ
+[retrosic2]: https://twitter.com/hashtag/RetrosicII?f=live
+[square_wheel]: https://reddit.com/r/rust/comments/zd31kv/squarewheel_software_renderer_video
+[Anthony Utt]: https://twitter.com/alkimia_studios
+[Alkahest]: https://github.com/AlkimiaStudios/alkahest-rs
+[tut-bevy-load-toml]: https://maciejglowka.com/blog/text-based-json-toml-resources-in-bevy-engine
+[bevy-intro-playlist]: https://youtube.com/playlist?list=PLT_D88-MTFOPPl75g4WshL1Gx2bnGTUkz
+[ucrowds-sim]: https://reddit.com/r/rust_gamedev/comments/zvud5j/ucrowds_150k_agents
+[devices]: https://github.com/hankjordan/devices
+[quad-svg]: https://github.com/macnelly/quad-svg
+[macroquad]: https://github.com/not-fl3/macroquad
+[resvg]: https://github.com/RazrFalcon/resvg
+[@MatanLurey]: https://twitter.com/MatanLurey
+[mythoji]: https://github.com/matanlurey/mythoji
+[durian]: https://github.com/spoorn/durian
+[quinn]: https://github.com/quinn-rs/quinn
+[faer]: https://github.com/sarah-ek/faer-rs
+[bevy_adventure]: https://github.com/hankjordan/bevy_adventure
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["Can a 2D game be made with rust without a game engine?"](https://reddit.com/r/rust_gamedev/comments/zrdsts/can_a_2d_game_be_made_with_rust_without_engine)
+  - ["DataFrames instead of ECS?"](https://reddit.com/r/rust_gamedev/comments/zoea0b/what_if_we_use_dataframes)
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/10naebl/this_month_in_rust_gamedev_41_december_2022),
+[Twitter](https://twitter.com/rust_gamedev/status/1619290431761817600),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/109765982808236944),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/041/inox2d_logo.svg b/content/news/041/inox2d_logo.svg
new file mode 100644
index 000000000..99369000b
--- /dev/null
+++ b/content/news/041/inox2d_logo.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg width="521.81561" height="521.81561" viewBox="0 0 521.81561 521.81561" version="1.1" id="svg484" sodipodi:docname="inox_logo.svg" inkscape:version="1.2.1 (9c6d41e410, 2022-07-14, custom)" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview id="namedview486" pagecolor="#ffffff" bordercolor="#000000" borderopacity="0.25" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="0.87327688" inkscape:cx="268.52881" inkscape:cy="170.62172" inkscape:window-width="1920" inkscape:window-height="1036" inkscape:window-x="0" inkscape:window-y="44" inkscape:window-maximized="1" inkscape:current-layer="svg484"/>
+  <defs id="defs466">
+    <linearGradient id="linearGradient4079" x1="249.7468" x2="170.72848" y1="235.15024" y2="136.38463" gradientTransform="scale(1.0860849,0.92073835)" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#565FE3" id="stop4073" style="stop-color:#3c41a2;stop-opacity:1;"/>
+      <stop offset="0.56032002" stop-color="#B972ED" id="stop4075" style="stop-color:#9c61c7;stop-opacity:1;"/>
+      <stop offset="0.78016001" stop-color="#B972ED" id="stop4083" style="stop-color:#f35db7;stop-opacity:1;"/>
+      <stop offset="1" stop-color="#F45DBA" id="stop4077" style="stop-color:#f49d5d;stop-opacity:1;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4071" x1="10.651626" x2="167.62296" y1="74.073204" y2="86.238485" gradientTransform="scale(1.7837652,0.56061191)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#F49D5D" id="stop4065"/>
+      <stop offset="0.37016466" stop-color="#F45DBA" id="stop4067"/>
+      <stop offset="100%" stop-color="#886DDB" id="stop4069"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-a" x1="10.651626" x2="167.62296" y1="74.073204" y2="86.238485" gradientTransform="scale(1.7837652,0.56061191)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#F49D5D" id="stop427"/>
+      <stop offset="43.379%" stop-color="#F45DBA" id="stop429"/>
+      <stop offset="100%" stop-color="#886DDB" id="stop431"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-b" x1="115.2352" x2="53.726025" y1="139.4274" y2="139.75211" gradientTransform="scale(1.9364917,0.51639778)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#3A32EC" id="stop434"/>
+      <stop offset="100%" stop-color="#9361FF" id="stop436"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-c" x1="61.425645" x2="61.425645" y1="89.378629" y2="169.88794" gradientTransform="scale(0.73227559,1.3656061)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#3932EC" id="stop439"/>
+      <stop offset="100%" stop-color="#8446FF" id="stop441"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-d" x1="251.7021" x2="251.7021" y1="83.545556" y2="167.65406" gradientTransform="scale(0.72264991,1.3837959)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#3932EC" id="stop444"/>
+      <stop offset="100%" stop-color="#8446FF" id="stop446"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-e" x1="249.7468" x2="170.72848" y1="235.15024" y2="136.38463" gradientTransform="scale(1.0860849,0.92073835)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#565FE3" id="stop449"/>
+      <stop offset="56.032%" stop-color="#B972ED" id="stop451"/>
+      <stop offset="100%" stop-color="#F45DBA" id="stop453"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-f" x1="-2.9807136" x2="136.62838" y1="156.7421" y2="156.7421" gradientTransform="scale(1.1060147,0.90414711)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#F4936B" id="stop456"/>
+      <stop offset="100%" stop-color="#E25DF4" id="stop458"/>
+    </linearGradient>
+    <linearGradient id="logo_transparent-g" x1="0" x2="64.387735" y1="379.32572" y2="378.9741" gradientTransform="scale(2.0615528,0.48507125)" gradientUnits="userSpaceOnUse">
+      <stop offset="0%" stop-color="#BF48FF" id="stop461"/>
+      <stop offset="100%" stop-color="#8145FE" id="stop463"/>
+    </linearGradient>
+    <mask id="holes">
+      <rect x="-60" y="-60" width="120" height="120" fill="#ffffff" id="rect80"/>
+      <circle id="hole" cy="-40" r="3" cx="0"/>
+      <use xlink:href="#hole" transform="rotate(72)" id="use83"/>
+      <use xlink:href="#hole" transform="rotate(144)" id="use85"/>
+      <use xlink:href="#hole" transform="rotate(-144)" id="use87"/>
+      <use xlink:href="#hole" transform="rotate(-72)" id="use89"/>
+    </mask>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4079" id="linearGradient4063" x1="-52.501049" y1="-1.5450848e-08" x2="52.501049" y2="-1.5450848e-08" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient4079" id="linearGradient4209" gradientUnits="userSpaceOnUse" x1="-49.74382" y1="-14.218941" x2="49.816833" y2="14.152352"/>
+  </defs>
+  <g fill="none" transform="translate(101.70974,138.22992)" id="g482" inkscape:label="logo">
+    <polygon fill="url(#logo_transparent-a)" points="19,88 51,56 63.84,56 124.764,0 235.858,0 270.934,56 299,56 267,88 253.219,88 218.142,32 137.235,32 76.313,88 " id="polygon468" style="fill:url(#logo_transparent-a)"/>
+    <polygon fill="url(#logo_transparent-b)" points="187,88 99,88 131,56 219,56 " id="polygon470" style="fill:url(#logo_transparent-b)"/>
+    <polygon fill="url(#logo_transparent-c)" points="48.352,232 15.503,232 41.973,122.056 74.458,123.567 " id="polygon472" style="fill:url(#logo_transparent-c)"/>
+    <polygon fill="url(#logo_transparent-d)" points="184.353,231.999 151.502,231.999 179.525,115.61 212.283,115.91 " id="polygon474" style="fill:url(#logo_transparent-d)"/>
+    <polygon fill="url(#logo_transparent-e)" points="187,104 287.113,104 266.898,191.598 236.963,215.997 192.538,216 224.538,184 235.81,184 246.886,136 155,136 " id="polygon476" style="fill:url(#logo_transparent-e)"/>
+    <polygon fill="url(#logo_transparent-f)" points="110.886,136 19,136 51,104 151.113,104 126.189,212 93.348,212 " id="polygon478" style="fill:url(#logo_transparent-f)"/>
+    <polygon fill="url(#logo_transparent-g)" points="104,200 0,200 32,168 136,168 " id="polygon480" style="fill:url(#logo_transparent-g)"/>
+  </g>
+  <g id="gear" mask="url(#holes)" transform="matrix(4.9696861,0,0,4.9696861,260.90782,260.90782)" style="stroke:none;fill-opacity:1.0;fill:url(#linearGradient4063)">
+    <path id="path4044" style="color:#000000;fill:url(#linearGradient4209);stroke-linejoin:round;-inkscape-stroke:none;stroke:none;fill-opacity:1" d="m -7,-45 a 3.0003,3.0003 0 0 0 -2.1210938,5.121094 l 7,7 a 3.0003,3.0003 0 0 0 4.2421876,0 l 7,-7 A 3.0003,3.0003 0 0 0 7,-45 Z m 7,10 7,-7 H -7 Z m -44.960662,27.7516309 a 3.0003,3.0003 0 0 0 4.214996,3.5997851 l 8.820514,-4.4942766 a 3.0003,3.0003 0 0 0 1.310908,-4.0345604 l -4.494276,-8.820514 a 3.0003,3.0003 0 0 0 -5.525904,0.434775 z m 11.673684,-3.5672259 -4.494277,-8.820514 -4.326238,13.3147909 z m 12.499761,51.335857 a 3.0003,3.0003 0 0 0 4.726104,-2.896305 l -1.548622,-9.777616 a 3.0003,3.0003 0 0 0 -3.432002,-2.493495 l -9.777616,1.548622 a 3.0003,3.0003 0 0 0 -1.294102,5.3898 z m 0.214733,-12.204667 -9.777616,1.548622 11.326238,8.228994 z m 52.685939,3.975673 a 3.0003,3.0003 45 0 0 -1.294102,-5.3898 l -9.777616,-1.548622 a 3.0003,3.0003 45 0 0 -3.432002,2.493495 l -1.548622,9.777616 a 3.0003,3.0003 45 0 0 4.726104,2.896305 z M 20.572484,28.315595 19.023862,38.093211 30.3501,29.864217 Z m 20.06194,-48.878755 a 3.0003,3.0003 0 0 0 -5.525904,-0.434775 l -4.494276,8.820514 a 3.0003,3.0003 0 0 0 1.310908,4.0345604 l 8.820514,4.4942766 a 3.0003,3.0003 0 0 0 4.214996,-3.5997851 z m 1.473069,14.2418419 -4.326238,-13.3147909 -4.494277,8.820514 z M 25.87166,37.387307 a 1.50015,1.50015 45 0 0 -1.510527,-0.0271 l -5.234976,2.931727 a 1.50015,1.50015 45 0 0 -0.0131,2.61077 l 5.060594,2.896616 a 1.50015,1.50015 45 0 0 2.245996,-1.257818 L 26.594026,38.71316 A 1.50015,1.50015 45 0 0 25.87166,37.387307 Z m -2.357118,3.885427 -0.01969,0.68035 -0.59038,-0.338697 z m 1.405141,3.224562 0.174382,-5.828343 -5.234976,2.931727 z M 32.668445,31.62161 a 1.50015,1.50015 0 0 0 -1.486789,0.268111 L 26.61922,35.78641 a 1.50015,1.50015 0 0 0 0.496485,2.56316 l 5.528459,1.853686 a 1.50015,1.50015 0 0 0 1.957451,-1.671821 L 33.635593,32.781061 A 1.50015,1.50015 0 0 0 32.668445,31.62161 Z m -1.553818,4.27062 0.113423,0.671118 -0.645113,-0.217012 z m 2.007223,2.888474 -0.966022,-5.750374 -4.562436,3.896689 z M 38.2098,24.640712 a 1.50015,1.50015 0 0 0 -1.405915,0.553018 l -3.714563,4.711902 a 1.50015,1.50015 0 0 0 0.986993,2.41705 l 5.783866,0.739519 a 1.50015,1.50015 0 0 0 1.593684,-2.021577 L 39.384562,25.589203 A 1.50015,1.50015 0 0 0 38.2098,24.640712 Z m -0.690805,4.491696 0.242172,0.636096 -0.675054,-0.08699 z m 2.532168,2.441383 -2.069302,-5.45142 -3.714564,4.711901 z m 2.231611,-14.860905 a 1.50015,1.50015 0 0 0 -1.271012,0.816672 l -2.723943,5.346039 a 1.50015,1.50015 0 0 0 1.439571,2.178055 l 5.817005,-0.403067 a 1.50015,1.50015 0 0 0 1.16867,-2.293646 l -3.093061,-4.942972 a 1.50015,1.50015 0 0 0 -1.33723,-0.701081 z m 0.198755,4.540158 0.361614,0.576628 -0.679052,0.04638 z m 2.959804,1.900471 -3.093061,-4.942972 -2.723943,5.34604 z M 44.730845,8.1427923 a 1.50015,1.50015 45 0 0 -1.087266,1.048942 l -1.628642,5.7747317 a 1.50015,1.50015 45 0 0 1.836828,1.855358 l 5.626597,-1.530164 a 1.50015,1.50015 45 0 0 0.698747,-2.47757 L 46.179155,8.5695218 a 1.50015,1.50015 45 0 0 -1.44831,-0.4267295 z m 1.080677,4.4141457 0.46716,0.495 -0.656956,0.177967 z m 3.273695,1.286525 -3.997955,-4.244568 -1.628642,5.774731 z M 45.459934,-0.74022404 a 1.50015,1.50015 0 0 0 -0.861735,1.2409018 L 44.127444,6.4821818 A 1.50015,1.50015 0 0 0 46.29094,7.943542 l 5.219964,-2.5984565 a 1.50015,1.50015 0 0 0 0.201971,-2.5662834 l -4.749209,-3.38304743 a 1.50015,1.50015 0 0 0 -1.503732,-0.13597871 z m 1.921069,4.11849944 0.554754,0.3943505 -0.609614,0.3027128 z M 50.842784,4.0014139 46.093575,0.6183664 45.62282,6.5998704 Z M 44.442024,-9.594794 a 1.50015,1.50015 0 0 0 -0.60309,1.3851744 l 0.705225,5.9584108 a 1.50015,1.50015 0 0 0 2.407022,1.0112034 l 4.61273,-3.5668923 A 1.50015,1.50015 0 0 0 51.261344,-7.3632732 L 45.94339,-9.7547916 a 1.50015,1.50015 0 0 0 -1.501366,0.1599976 z m 2.687636,3.6645816 0.621028,0.2785461 -0.538844,0.415826 z m 3.516831,-0.064195 -5.317954,-2.3915184 0.705224,5.9584108 z m -8.93026,-12.0862337 a 1.50015,1.50015 0 0 0 -0.321267,1.476215 l 1.854102,5.706339 a 1.50015,1.50015 0 0 0 2.558048,0.522187 l 3.828232,-4.398255 a 1.50015,1.50015 0 0 0 -0.795477,-2.448227 l -5.682334,-1.308085 a 1.50015,1.50015 0 0 0 -1.441304,0.449826 z m 3.350918,3.069835 0.663437,0.152038 -0.447366,0.512959 z m 3.436733,-0.749061 -5.682333,-1.308084 1.854102,5.706339 z M 37.387307,-25.87166 a 1.50015,1.50015 0 0 0 -0.0271,1.510527 l 2.931727,5.234976 a 1.50015,1.50015 0 0 0 2.61077,0.0131 l 2.896616,-5.060594 a 1.50015,1.50015 0 0 0 -1.257818,-2.245996 l -5.828344,-0.174381 a 1.50015,1.50015 0 0 0 -1.325853,0.722366 z m 3.885427,2.357118 0.68035,0.01969 -0.338697,0.59038 z m 3.224562,-1.405141 -5.828343,-0.174382 2.931727,5.234976 z M 31.62161,-32.668445 a 1.50015,1.50015 45 0 0 0.268111,1.486789 l 3.896689,4.562436 a 1.50015,1.50015 45 0 0 2.56316,-0.496485 l 1.853686,-5.528459 a 1.50015,1.50015 45 0 0 -1.671821,-1.957451 l -5.750374,0.966022 a 1.50015,1.50015 45 0 0 -1.159451,0.967148 z m 4.27062,1.553818 0.671118,-0.113423 -0.217012,0.645113 z m 2.888474,-2.007223 -5.750374,0.966022 3.896689,4.562436 z M 24.640712,-38.2098 a 1.50015,1.50015 0 0 0 0.553018,1.405915 l 4.711902,3.714563 a 1.50015,1.50015 0 0 0 2.41705,-0.986993 l 0.739519,-5.783866 a 1.50015,1.50015 0 0 0 -2.021577,-1.593684 l -5.451421,2.069303 a 1.50015,1.50015 0 0 0 -0.948491,1.174762 z m 4.491696,0.690805 0.636096,-0.242172 -0.08699,0.675054 z m 2.441383,-2.532168 -5.45142,2.069302 4.711901,3.714564 z m -14.860905,-2.231611 a 1.50015,1.50015 0 0 0 0.816672,1.271012 l 5.346039,2.723943 a 1.50015,1.50015 0 0 0 2.178055,-1.439571 l -0.403067,-5.817005 a 1.50015,1.50015 0 0 0 -2.293646,-1.16867 l -4.942972,3.093061 a 1.50015,1.50015 0 0 0 -0.701081,1.33723 z m 4.540158,-0.198755 0.576628,-0.361614 0.04638,0.679052 z m 1.900471,-2.959804 -4.942972,3.093061 5.34604,2.723943 z m -15.0107227,0.710488 a 1.50015,1.50015 0 0 0 1.048942,1.087266 l 5.7747317,1.628642 a 1.50015,1.50015 0 0 0 1.855358,-1.836828 l -1.530164,-5.626597 a 1.50015,1.50015 0 0 0 -2.47757,-0.698747 l -4.2445682,3.997954 a 1.50015,1.50015 0 0 0 -0.4267295,1.44831 z m 4.4141457,-1.080677 0.495,-0.46716 0.177967,0.656956 z m 1.286525,-3.273695 -4.244568,3.997955 5.774731,1.628642 z m -14.58368704,3.625283 a 1.50015,1.50015 0 0 0 1.2409018,0.861735 l 5.98150404,0.470755 A 1.50015,1.50015 0 0 0 7.943542,-46.29094 l -2.5984565,-5.219964 a 1.50015,1.50015 0 0 0 -2.5662834,-0.201971 l -3.38304743,4.749209 a 1.50015,1.50015 0 0 0 -0.13597871,1.503732 z m 4.11849944,-1.921069 0.3943505,-0.554754 0.3027128,0.609614 z m 0.6231385,-3.461781 -3.3830475,4.749209 5.981504,0.470755 z m -13.5962079,6.40076 a 1.50015,1.50015 0 0 0 1.3851744,0.60309 l 5.9584108,-0.705225 a 1.50015,1.50015 0 0 0 1.0112034,-2.407022 l -3.5668923,-4.61273 a 1.50015,1.50015 0 0 0 -2.5563755,0.302567 l -2.3915184,5.317954 a 1.50015,1.50015 0 0 0 0.1599976,1.501366 z m 3.6645816,-2.687636 0.2785461,-0.621028 0.415826,0.538844 z m -0.064195,-3.516831 -2.3915184,5.317954 5.9584108,-0.705224 z m -12.0862337,8.93026 a 1.50015,1.50015 0 0 0 1.476215,0.321267 l 5.706339,-1.854102 a 1.50015,1.50015 0 0 0 0.522187,-2.558048 l -4.398255,-3.828232 a 1.50015,1.50015 0 0 0 -2.448227,0.795477 l -1.308085,5.682334 a 1.50015,1.50015 0 0 0 0.449826,1.441304 z m 3.069835,-3.350918 0.152038,-0.663437 0.512959,0.447366 z m -0.749061,-3.436733 -1.308084,5.682333 5.706339,-1.854102 z m -10.111793,11.116575 a 1.50015,1.50015 0 0 0 1.510527,0.0271 l 5.234976,-2.931727 a 1.50015,1.50015 0 0 0 0.0131,-2.61077 l -5.060594,-2.896616 a 1.50015,1.50015 0 0 0 -2.245996,1.257818 l -0.174381,5.828344 a 1.50015,1.50015 0 0 0 0.722366,1.325853 z m 2.357118,-3.885427 0.01969,-0.68035 0.59038,0.338697 z m -1.405141,-3.224562 -0.174382,5.828343 5.234976,-2.931727 z m -7.748762,12.875686 a 1.50015,1.50015 45 0 0 1.486789,-0.268111 l 4.562436,-3.896689 a 1.50015,1.50015 45 0 0 -0.496485,-2.56316 l -5.528459,-1.853686 a 1.50015,1.50015 45 0 0 -1.957451,1.671821 l 0.966022,5.750374 a 1.50015,1.50015 45 0 0 0.967148,1.159451 z m 1.553818,-4.27062 -0.113423,-0.671118 0.645113,0.217012 z m -2.007223,-2.888474 0.966022,5.750374 4.562436,-3.896689 z m -5.08795,14.139992 a 1.50015,1.50015 0 0 0 1.405915,-0.553018 l 3.714563,-4.711902 a 1.50015,1.50015 0 0 0 -0.986993,-2.41705 l -5.783866,-0.739519 a 1.50015,1.50015 0 0 0 -1.593684,2.021577 l 2.069303,5.451421 a 1.50015,1.50015 0 0 0 1.174762,0.948491 z m 0.690805,-4.491696 -0.242172,-0.636096 0.675054,0.08699 z m -2.532168,-2.441383 2.069302,5.45142 3.714564,-4.711901 z m -2.231611,14.860905 a 1.50015,1.50015 0 0 0 1.271012,-0.816672 l 2.723943,-5.346039 a 1.50015,1.50015 0 0 0 -1.439571,-2.178055 l -5.817005,0.403067 a 1.50015,1.50015 0 0 0 -1.16867,2.293646 l 3.093061,4.942972 a 1.50015,1.50015 0 0 0 1.33723,0.701081 z m -0.198755,-4.540158 -0.361614,-0.576628 0.679052,-0.04638 z m -2.959804,-1.900471 3.093061,4.942972 2.723943,-5.34604 z m 0.710488,15.0107227 a 1.50015,1.50015 0 0 0 1.087266,-1.048942 l 1.628642,-5.7747317 a 1.50015,1.50015 0 0 0 -1.836828,-1.855358 l -5.626597,1.530164 a 1.50015,1.50015 0 0 0 -0.698747,2.47757 l 3.997954,4.2445682 a 1.50015,1.50015 0 0 0 1.44831,0.4267295 z m -1.080677,-4.4141457 -0.46716,-0.495 0.656956,-0.177967 z m -3.273695,-1.286525 3.997955,4.244568 1.628642,-5.774731 z m 3.625283,14.58368704 a 1.50015,1.50015 0 0 0 0.861735,-1.2409018 l 0.470755,-5.98150404 A 1.50015,1.50015 0 0 0 -46.29094,-7.943542 l -5.219964,2.5984565 a 1.50015,1.50015 0 0 0 -0.201971,2.5662834 l 4.749209,3.38304743 a 1.50015,1.50015 0 0 0 1.503732,0.13597871 z m -1.921069,-4.11849944 -0.554754,-0.3943505 0.609614,-0.3027128 z m -3.461781,-0.6231385 4.749209,3.3830475 0.470755,-5.981504 z m 6.40076,13.5962079 a 1.50015,1.50015 0 0 0 0.60309,-1.3851744 l -0.705225,-5.9584108 a 1.50015,1.50015 0 0 0 -2.407022,-1.0112034 l -4.61273,3.5668923 a 1.50015,1.50015 0 0 0 0.302567,2.5563755 l 5.317954,2.3915184 a 1.50015,1.50015 0 0 0 1.501366,-0.1599976 z m -2.687636,-3.6645816 -0.621028,-0.2785461 0.538844,-0.415826 z m -3.516831,0.064195 5.317954,2.3915184 -0.705224,-5.9584108 z m 8.93026,12.0862337 a 1.50015,1.50015 0 0 0 0.321267,-1.476215 l -1.854102,-5.706339 A 1.50015,1.50015 0 0 0 -45.807114,10.3759 l -3.828232,4.398255 a 1.50015,1.50015 0 0 0 0.795477,2.448227 l 5.682334,1.308085 a 1.50015,1.50015 0 0 0 1.441304,-0.449826 z m -3.350918,-3.069835 -0.663437,-0.152038 0.447366,-0.512959 z m -3.436733,0.749061 5.682333,1.308084 -1.854102,-5.706339 z m 11.116575,10.111793 a 1.50015,1.50015 45 0 0 0.0271,-1.510527 l -2.931727,-5.234976 a 1.50015,1.50015 45 0 0 -2.61077,-0.0131 l -2.896616,5.060594 a 1.50015,1.50015 45 0 0 1.257818,2.245996 l 5.828344,0.174381 a 1.50015,1.50015 45 0 0 1.325853,-0.722366 z m -3.885427,-2.357118 -0.68035,-0.01969 0.338697,-0.59038 z m -3.224562,1.405141 5.828343,0.174382 -2.931727,-5.234976 z m 12.875686,7.748762 a 1.50015,1.50015 0 0 0 -0.268111,-1.486789 L -35.78641,26.61922 a 1.50015,1.50015 0 0 0 -2.56316,0.496485 l -1.853686,5.528459 a 1.50015,1.50015 0 0 0 1.671821,1.957451 l 5.750374,-0.966022 a 1.50015,1.50015 0 0 0 1.159451,-0.967148 z m -4.27062,-1.553818 -0.671118,0.113423 0.217012,-0.645113 z m -2.888474,2.007223 5.750374,-0.966022 -3.896689,-4.562436 z m 14.139992,5.08795 a 1.50015,1.50015 0 0 0 -0.553018,-1.405915 l -4.711902,-3.714563 a 1.50015,1.50015 0 0 0 -2.41705,0.986993 l -0.739519,5.783866 a 1.50015,1.50015 0 0 0 2.021577,1.593684 l 5.451421,-2.069303 a 1.50015,1.50015 0 0 0 0.948491,-1.174762 z m -4.491696,-0.690805 -0.636096,0.242172 0.08699,-0.675054 z m -2.441383,2.532168 5.45142,-2.069302 -4.711901,-3.714564 z m 14.860905,2.231611 a 1.50015,1.50015 0 0 0 -0.816672,-1.271012 l -5.346039,-2.723943 a 1.50015,1.50015 0 0 0 -2.178055,1.439571 l 0.403067,5.817005 a 1.50015,1.50015 0 0 0 2.293646,1.16867 l 4.942972,-3.093061 a 1.50015,1.50015 0 0 0 0.701081,-1.33723 z m -4.540158,0.198755 -0.576628,0.361614 -0.04638,-0.679052 z m -1.900471,2.959804 4.942972,-3.093061 -5.34604,-2.723943 z m 15.0107227,-0.710488 a 1.50015,1.50015 0 0 0 -1.048942,-1.087266 l -5.7747317,-1.628642 a 1.50015,1.50015 0 0 0 -1.855358,1.836828 l 1.530164,5.626597 a 1.50015,1.50015 0 0 0 2.47757,0.698747 l 4.2445682,-3.997954 a 1.50015,1.50015 0 0 0 0.4267295,-1.44831 z m -4.4141457,1.080677 -0.495,0.46716 -0.177967,-0.656956 z m -1.286525,3.273695 4.244568,-3.997955 -5.774731,-1.628642 z M 0.74022404,45.459934 a 1.50015,1.50015 0 0 0 -1.2409018,-0.861735 L -6.4821818,44.127444 A 1.50015,1.50015 0 0 0 -7.943542,46.29094 l 2.5984565,5.219964 a 1.50015,1.50015 0 0 0 2.5662834,0.201971 l 3.38304743,-4.749209 a 1.50015,1.50015 0 0 0 0.13597871,-1.503732 z m -4.11849944,1.921069 -0.3943505,0.554754 -0.3027128,-0.609614 z m -0.6231385,3.461781 3.3830475,-4.749209 -5.981504,-0.470755 z M 9.594794,44.442024 a 1.50015,1.50015 0 0 0 -1.3851744,-0.60309 l -5.9584108,0.705225 a 1.50015,1.50015 0 0 0 -1.0112034,2.407022 l 3.5668923,4.61273 A 1.50015,1.50015 0 0 0 7.3632732,51.261344 L 9.7547916,45.94339 A 1.50015,1.50015 0 0 0 9.594794,44.442024 Z M 5.9302124,47.12966 5.6516663,47.750688 5.2358403,47.211844 Z m 0.064195,3.516831 2.3915184,-5.317954 -5.9584108,0.705224 z m 12.0862337,-8.93026 a 1.50015,1.50015 0 0 0 -1.476215,-0.321267 l -5.706339,1.854102 A 1.50015,1.50015 0 0 0 10.3759,45.807114 l 4.398255,3.828232 a 1.50015,1.50015 0 0 0 2.448227,-0.795477 l 1.308085,-5.682334 a 1.50015,1.50015 0 0 0 -0.449826,-1.441304 z m -3.069835,3.350918 -0.152038,0.663437 -0.512959,-0.447366 z m 2.057145,-2.2456 -5.706339,1.854102 4.398255,3.828231 z m 28.107234,-57.499856 c -8.090127,-24.898849 -34.954643,-38.587004 -59.853492,-30.496878 -24.898849,8.090127 -38.587004,34.954643 -30.496878,59.853492 8.090127,24.898849 34.954643,38.587004 59.853492,30.496878 24.898849,-8.090127 38.587004,-34.954643 30.496878,-59.853492 z m -8.559509,2.781153 c 6.587081,20.2729506 -4.445571,41.925749 -24.718522,48.51283 -20.2729506,6.587081 -41.925749,-4.445571 -48.51283,-24.718522 -6.587081,-20.2729506 4.445571,-41.925749 24.718522,-48.51283 20.2729506,-6.587081 41.925749,4.445571 48.51283,24.718522 z" transform="rotate(-71.999999)"/>
+  </g>
+</svg>
\ No newline at end of file
diff --git a/content/news/041/jumpy.png b/content/news/041/jumpy.png
new file mode 100644
index 000000000..d5bd46620
Binary files /dev/null and b/content/news/041/jumpy.png differ
diff --git a/content/news/041/lpcg.png b/content/news/041/lpcg.png
new file mode 100644
index 000000000..4a22177c0
Binary files /dev/null and b/content/news/041/lpcg.png differ
diff --git a/content/news/041/mastodon.png b/content/news/041/mastodon.png
new file mode 100644
index 000000000..46cc7e499
Binary files /dev/null and b/content/news/041/mastodon.png differ
diff --git a/content/news/041/mun-logo.svg b/content/news/041/mun-logo.svg
new file mode 100644
index 000000000..9ce8a14de
--- /dev/null
+++ b/content/news/041/mun-logo.svg
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="-400 0 1496 696" xmlns="http://www.w3.org/2000/svg"><path d="m413.63 310.11c-16.568-28.697-6.7365-65.391 21.96-81.961 28.698-16.569 65.393-6.736 81.962 21.962s6.7361 65.393-21.962 81.962c-28.697 16.568-65.392 6.7344-81.96-21.963zm-71.612-214.04a252 252 0 0 0-237.42 186.71 252 252 0 0 0 178.19 308.64 252 252 0 0 0 308.63-178.19 252 252 0 0 0 8.2363-53.373c-13.198 22.24-32.084 41.516-56.074 55.367-14.003 8.5688-23.81 18.686-27.74 33.746-3.8461 14.738-12.295 23.952-25.742 25.656-0.1028 0.012-0.2061 0.0266-0.3086 0.0391-7.9682 0.9836-15.973 1.4734-23.969 1.4765-8.0984 3e-3 -16.188-0.49386-24.217-1.4863-10.977-1.3569-18.711-7.8299-23.258-18.252-0.9803-2.2471-1.8167-4.6828-2.5117-7.3008-3.9943-15.048-13.838-25.126-27.875-33.637-6.4725-3.4849-12.723-6.0513-19.066-7.4882-7.7665-1.7613-15.808-1.8483-24.072 0.42578-14.694 4.0438-26.893 1.334-35.055-9.3692-4.9057-6.4333-9.4156-13.169-13.498-20.17-0.14195-0.24725-0.28516-0.49331-0.42771-0.74022l-0.4277-0.74219c-4.0218-7.0359-7.6003-14.309-10.719-21.773-5.1883-12.42-1.4352-24.339 9.4141-35.043 6.1014-6.0197 10.046-13.026 12.404-20.633 1.9274-6.2122 2.8305-12.91 3.0488-20.258-0.35143-16.412-4.159-29.976-15.193-40.959-1.9198-1.9108-3.6105-3.8536-5.0664-5.8261-6.7522-9.1486-8.491-19.083-4.1777-29.268 3.1549-7.4494 6.7684-14.703 10.82-21.715 4.0004-6.9227 8.4278-13.609 13.264-20.018 0.0618-0.083 0.12732-0.16588 0.18945-0.24806 8.1993-10.793 20.403-13.503 35.09-9.4648 15.008 4.1264 28.671 0.69039 43.094-7.1524 23.991-13.851 50.129-20.568 75.988-20.877a252 252 0 0 0-50.34-19.553 252 252 0 0 0-71.221-8.5156zm5.9973-96.072a348 348 0 0 0-348 348 348 348 0 0 0 348 348 348 348 0 0 0 348-348 348 348 0 0 0-348-348zm0 48a300 300 0 0 1 300 300 300 300 0 0 1-300 300 300 300 0 0 1-300-300 300 300 0 0 1 300-300z"/></svg>
diff --git a/content/news/041/open_combat.png b/content/news/041/open_combat.png
new file mode 100644
index 000000000..992532462
Binary files /dev/null and b/content/news/041/open_combat.png differ
diff --git a/content/news/041/pirate_annihilation_n41.png b/content/news/041/pirate_annihilation_n41.png
new file mode 100644
index 000000000..47a18cf79
Binary files /dev/null and b/content/news/041/pirate_annihilation_n41.png differ
diff --git a/content/news/041/repeater_boss.gif b/content/news/041/repeater_boss.gif
new file mode 100644
index 000000000..093fb6ba2
Binary files /dev/null and b/content/news/041/repeater_boss.gif differ
diff --git a/content/news/041/runty8.png b/content/news/041/runty8.png
new file mode 100644
index 000000000..e87a6f877
Binary files /dev/null and b/content/news/041/runty8.png differ
diff --git a/content/news/041/rust-gpu.jpg b/content/news/041/rust-gpu.jpg
new file mode 100644
index 000000000..51bec9202
Binary files /dev/null and b/content/news/041/rust-gpu.jpg differ
diff --git a/content/news/041/rustacean-station.jpeg b/content/news/041/rustacean-station.jpeg
new file mode 100644
index 000000000..4900c38db
Binary files /dev/null and b/content/news/041/rustacean-station.jpeg differ
diff --git a/content/news/041/temple-knight.jpg b/content/news/041/temple-knight.jpg
new file mode 100644
index 000000000..2a4e592a7
Binary files /dev/null and b/content/news/041/temple-knight.jpg differ
diff --git a/content/news/041/tiny_glade_key_art_small.png b/content/news/041/tiny_glade_key_art_small.png
new file mode 100644
index 000000000..cf21381b2
Binary files /dev/null and b/content/news/041/tiny_glade_key_art_small.png differ
diff --git a/content/news/041/triverse.png b/content/news/041/triverse.png
new file mode 100644
index 000000000..ba5070df7
Binary files /dev/null and b/content/news/041/triverse.png differ
diff --git a/content/news/041/tut-gltf-anim-in-wgpu.jpg b/content/news/041/tut-gltf-anim-in-wgpu.jpg
new file mode 100644
index 000000000..b22f32a75
Binary files /dev/null and b/content/news/041/tut-gltf-anim-in-wgpu.jpg differ
diff --git a/content/news/041/veloren.jpg b/content/news/041/veloren.jpg
new file mode 100644
index 000000000..ec3a17e40
Binary files /dev/null and b/content/news/041/veloren.jpg differ
diff --git a/content/news/042/cargo-space-cross-platform.png b/content/news/042/cargo-space-cross-platform.png
new file mode 100644
index 000000000..d28ebffc5
Binary files /dev/null and b/content/news/042/cargo-space-cross-platform.png differ
diff --git a/content/news/042/digital-extinction.jpeg b/content/news/042/digital-extinction.jpeg
new file mode 100644
index 000000000..826b23049
Binary files /dev/null and b/content/news/042/digital-extinction.jpeg differ
diff --git a/content/news/042/foxtrot.gif b/content/news/042/foxtrot.gif
new file mode 100644
index 000000000..19fd5e5c9
Binary files /dev/null and b/content/news/042/foxtrot.gif differ
diff --git a/content/news/042/gamedev-meetup.png b/content/news/042/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/042/gamedev-meetup.png differ
diff --git a/content/news/042/graphite.png b/content/news/042/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/042/graphite.png differ
diff --git a/content/news/042/idu-newsletter.jpg b/content/news/042/idu-newsletter.jpg
new file mode 100644
index 000000000..258dfa362
Binary files /dev/null and b/content/news/042/idu-newsletter.jpg differ
diff --git a/content/news/042/index.md b/content/news/042/index.md
new file mode 100644
index 000000000..d4ee86481
--- /dev/null
+++ b/content/news/042/index.md
@@ -0,0 +1,704 @@
++++
+title = "This Month in Rust GameDev #42 - January 2023"
+transparent = true
+date = 2023-02-26
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 42nd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust Graphics Meetup \#3
+
+The Rust Graphics Meetup is an online gathering where Rustaceans share technical
+details of their work related to graphics and compute, not affiliated with any
+particular stack. The third edition happened on January 28th! These were the
+talks:
+
+- Hello, Blade! - [Dzmitry Malyshau]
+- Implementing an Extensible Renderer - [Philip Degarmo]
+- Rend3: High Performance, Cross Platform, GPU Driven Rendering in wgpu and
+  WebGPU - [Connor Fitzgerald]
+
+Learn more at the [gfx meetup repo]. The individual videos haven't been uploaded
+yet, but you can watch the [full meetup here][graphics-meetup-vid]. Thanks
+everyone for tuning in and helping to make this happen!
+
+[Dzmitry Malyshau]: https://github.com/kvark
+[Connor Fitzgerald]: https://github.com/cwfitzgerald
+[Philip Degarmo]: https://github.com/aclysma
+[graphics-meetup-vid]: https://www.youtube.com/watch?v=63dnzjw4azI
+[gfx meetup repo]: https://github.com/gfx-rs/meetup
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 23rd Rust Gamedev Meetup took place in January. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule
+from the meetup:
+
+- Blade - [@kvark]
+- Digital Extinction- [@Indy2222]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/iSu-9yKsCRY
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@Indy2222]: https://twitter.com/Indy2222
+[@GraphiteEditor]: https://twitter.com/GraphiteEditor
+[@kvark]: https://github.com/kvark
+
+## Game Updates
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="Building Placement in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Building Placement in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+This month the game had two new first-time contributors, [@0HyperCube] and
+[@Polostor] (Péťa Tománek).
+
+The most notable updates are:
+
+- several multiplayer related screens were added to the menu: sign-in / sign-up,
+  game listing, and game creation,
+- building draft is now semi-transparent and colored green or red based on
+  obstacles,
+- double clicking on a unit or building leads to the selection of all visible
+  entities of the same type,
+- the mouse cursor is now confined to the game window,
+- the camera can be moved horizontally with arrow keys,
+- pop-up in-game menu was added, it is opened with Escape key,
+- work on game head-up display / panel (HUD) was initiated,
+- various errors are now briefly displayed as toasts in the UI,
+- support of map hashing was added and deterministic map paths are used,
+- several small fixes, and code quality improvements.
+
+See [gameplay][video-game] and [menu][video-menu] screen recordings on YouTube.
+
+A more detailed update summary is available [here][de-update-04].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[@0HyperCube]: https://github.com/0HyperCube
+[@Polostor]: https://github.com/Polostor
+[Bevy]: https://bevyengine.org
+[video-game]: https://youtu.be/JP01dAbtoc8
+[video-menu]: https://youtu.be/APTlkGnn6vA
+[de-update-04]: https://mgn.cz/blog/de04/
+
+### [Cargo Space]
+
+{{ image_figure(
+    alt="Screenshot of p2p multiplayer in Cargo Space: One instance running on windows
+and one in Chrome"
+    src="cargo-space-cross-platform.png"
+    caption="Cross-platform p2p multiplayer in Cargo Space") }}
+
+[Cargo Space] ([Discord][cargospace_discord]) by
+[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build
+a ship and fly it through space looking for new parts, fighting pirates and the
+environment.
+
+This month, sprites were added for basic character poses, as well as basic sound
+effects, making the game come alive and feel more like a proper 2D platformer.
+
+Support for [`bevy_ggrs`][bevy_ggrs]' synctest sessions was implemented. This
+allows detecting de-syncs by constantly performing rollbacks and comparing world
+state checksums). This caught some very rare de-sync bugs.
+
+The game also adopted [Matchbox][cargospace_matchbox]'s newly added support for
+cross-platform p2p. This means sessions between players on web and native are
+now supported ([video][cargospace_cross_platform_video]).
+
+All of this is discussed in detail in the [third devlog
+entry][cargospace_devlog_3].
+
+Johan also wrote [an article][cargospace_devlog_4] on how sound effects were
+implemented in a rollback-aware way, canceling mispredicted sounds, and handling
+"late" sounds. It describes a solution that could easily be adopted for any game
+made with [`bevy_ggrs`][bevy_ggrs].
+
+[Cargo Space]: https://helsing.studio/cargospace
+[cargospace_devlog_3]: https://johanhelsing.studio/posts/cargo-space-devlog-3
+[cargospace_devlog_4]: https://johanhelsing.studio/posts/cargo-space-devlog-4
+[cargospace_discord]: https://discord.gg/ye9UDNvqQD
+[cargospace_matchbox]: https://github.com/johanhelsing/matchbox
+[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing
+[bevy_ggrs]: https://github.com/gschup/bevy_ggrs
+[cargospace_cross_platform_video]: https://mastodon.social/@johanhelsing/109681997649114818
+
+### [Idu][idu-itch]
+
+{{ image_figure(
+    alt="Screenshot of a tree emerging from a cave in Idu"
+    src="idu-newsletter.jpg"
+    caption="Screenshot of a tree emerging from a cave in Idu") }}
+
+[Idu][idu-itch] ([Discord][idu_discord]) Idu is a strategic sandbox game about growing
+plants that wish to reclaim nature, developed by [Elina
+Shakhnovich][eli_mastodon] and [Johann Tael][johann_mastodon] featuring a
+bespoke Vulkan-based engine in Rust.
+
+After almost a whole year of relative silence, they have begun releasing new
+demos in January. The new demo version 8 comes with a new renderer supporting
+interactive, flowing water. Also, the simulated trees in Idu changed a lot, as
+they're now able to flower, in addition to dropping leaves. The new demo
+features a lot of new plant textures, branching logic, and better rhizome and
+root simulation.
+
+Player accessibility and the gameplay itself is better now as well, due to a
+completely new menu and a lot of new items, such as porous gabion blocks and
+ladders.
+
+Read more and download the newest demo from [Idu's page on itch.io][idu-itch].
+
+[idu_discord]: https://discord.gg/MeGauteMj3
+[eli_mastodon]: https://mastodon.gamedev.place/@eli
+[johann_mastodon]: https://mastodon.gamedev.place/@johann
+[idu-itch]: https://epcc.itch.io/idu
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="A river with flora and fauna"
+    src="veloren.jpg"
+    caption="A serene river with new reflections") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In January, Veloren released version 0.14! This update included trading with
+pets, musical instrument crafting, the Sea Chapel, and many more changes. You
+can read all about that update in the [release post][veloren-0.14].
+
+Veloren's Site2 system can now be hot-reloaded. Site2 allows you to describe
+procedures for how objects like houses, trees, or bridges should be generated.
+Hot-reloading allows you to change the Site2 code and watch the changes take
+effect in real-time. The official 2023 Veloren OST was also released, and can be
+[watched on YouTube][veloren-ost].
+
+January's full weekly devlogs: "This Week In Veloren...": [#204][veloren-204].
+
+[veloren]: https://veloren.net
+[veloren-204]: https://veloren.net/devblog-204
+[veloren-ost]: https://www.youtube.com/watch?v=yNxxCwwKyes
+[veloren-0.14]: https://veloren.net/release-0-14/
+
+## Engine Updates
+
+### [Fyrox]
+
+![Particle System Preview](particle_system.gif)
+
+[Fyrox] ([Discord][fyrox_discord], [Twitter][fyrox_twitter]) is a game engine
+that aims to be easy to use and provide a large set of out-of-the-box features.
+In January it hit version 0.29 and got the following features:
+
+- Animation system rework
+- Animation editor
+- Animation blending state machine editor rework
+- Sprite sheet editor
+- Ability to change scene settings
+- Improved WebAssembly support
+- Customizable graph update pipeline
+- Node and property selector widgets
+- Message passing for scripts
+- Reflection refactoring to support interior mutability
+- Deterministic particle systems
+- Ability to animate material properties
+- Various bug fixes
+
+You can read more about the changes in the [feature highlights
+post][fyrox-0.29].
+
+[Fyrox]: https://github.com/FyroxEngine/Fyrox
+[fyrox_discord]: https://discord.com/invite/xENF5Uh
+[fyrox_twitter]: https://twitter.com/DmitryNStepanov
+[fyrox-0.29]: https://fyrox.rs/blog/post/feature-highlights-0-29/
+
+## Learning Material Updates
+
+### [Introduction to the Entity Component System][tut-ecs-intro]
+
+![Title card: Introduction to the Entity Component System](intro-ecs.png)
+
+[@indiedevcasts] published [a new blog post][tut-ecs-intro], exploring
+object-oriented and data-oriented designs before giving an introduction to the
+Entity Component System paradigm.
+
+[tut-ecs-intro]: https://indiedevcasts.com/posts/ecs-introduction
+[@indiedevcasts]: https://twitter.com/indiedevcasts
+
+## Tooling Updates
+
+### [Foxtrot]
+
+![Foxtrot in action](foxtrot.gif)
+
+[Foxtrot] was created by Jan Hohenheim ([@janhohenheim]) as an all-in-one
+starting point for 3D projects made in Bevy. While he appreciated that other
+Bevy templates showed nicely how to wire up systems and setup a game loop, he
+was missing a showcase for commonly used features that are scattered around
+various libraries. So he created Foxtrot, where he collected the most basic
+features he could need for future projects or jams. The [latest release]
+features:
+
+- loading a 3D level from GLTF files
+- automatically assigning physics colliders
+- a custom dialog system
+- saving and loading the game
+- a force-based third-person character controller
+- shaders
+- pathfinding
+- a flexible camera system with easings supporting various perspectives
+- a custom in-game editor window for live tweaks such as spawning new objects.
+
+[Foxtrot]: https://github.com/janhohenheim/foxtrot
+[@janhohenheim]: https://github.com/janhohenheim
+[latest release]: https://github.com/janhohenheim/foxtrot/releases/latest
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+New features from January's [sprint 22][graphite-sprint-22]:
+
+- Picture this: Imported images are now part of the node graph. The new _Image
+  Frame_ node converts bitmap data into a vector rectangle holding the image.
+  This paves the way for other vector data like shapes and text to soon be
+  converted into nodes and composited alongside images.
+- Instant iterations: Incremental graph compilation avoids recompiling the
+  whole graph each time an edit is made or a value changes. This makes iteration
+  faster and enables caching of intermediate computations for faster rendering.
+
+And soon, the Alpha Milestone 2 release will launch with new node graph
+features, a revamped website, and a wider-reaching project announcement. Join
+the [newsletter][graphite-newsletter] and stay tuned.
+
+[Open Graphite][graphite-editor] in your browser and start creating! Share your
+designs with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-22]: https://github.com/GraphiteEditor/Graphite/milestone/22
+[graphite-newsletter]: https://graphite.rs/#newsletter
+[graphite-editor]: https://editor.graphite.rs
+
+## Library Updates
+
+### [big-brain]
+
+[big-brain] ([GitHub][big-brain-github], [Discord][big-brain-discord]) by
+[@zkat] is a highly parallel [Utility AI][big-brain-utility-ai] library for the
+Bevy game engine.
+
+[big-brain] recently tagged [v0.16.0][big-brain-v16], bringing with it a couple
+of breaking changes and a few goodies.
+
+Probably the biggest change in this release is the removal of the blanket
+[`ActionBuilder`][big-brain-action-builder] and
+[`ScorerBuilder`][big-brain-scorer-builder] implementations for `Clone` types.
+This is a fairly significant breaking change, but one that is fairly easy to
+resolve: simply use the new `#[derive(ActionBuilder)]` and
+`#[derive(ScorerBuilder)]` macros to derive the necessary implementations for
+your Action and Scorer Components and you should be good to go.
+
+Finally, since the recent [merging of the bevy scheduler
+changes][big-brain-bevy-scheduler-changes], big-brain users should expect the
+next version of big-brain to bring with it some significant breaking changes to
+scheduling, so keep an eye out for that and be mindful of building a lot on top
+of the current [`BigBrainStage`][big-brain-stage] (which is used by the default
+`BigBrainPlugin`).
+
+_Discussions: [Mastodon][zkat-mastodon-ann]_
+
+[big-brain]: https://crates.io/crates/big-brain
+[big-brain-github]: https://github.com/zkat/big-brain
+[big-brain-discord]: https://discord.com/channels/691052431525675048/829441190067306596
+[@zkat]: https://github.com/zkat
+[big-brain-utility-ai]: https://en.wikipedia.org/wiki/Utility_system
+[big-brain-v16]: https://github.com/zkat/big-brain/releases/tag/v0.16.0
+[big-brain-action-builder]: https://docs.rs/big-brain/0.16.0/big_brain/actions/trait.ActionBuilder.html
+[big-brain-scorer-builder]: https://docs.rs/big-brain/0.16.0/big_brain/scorers/trait.ScorerBuilder.html
+[big-brain-bevy-scheduler-changes]: https://tech.lgbt/@alice_i_cecile/109815432105482093
+[big-brain-stage]: https://docs.rs/big-brain/0.16.0/big_brain/enum.BigBrainStage.html
+[zkat-mastodon-ann]: https://toot.cat/@zkat/109776883506682388
+
+### [RustySynth]
+
+{{ image_figure(
+    alt="Waveform displayed on a screen"
+    src="rustysynth-yt.png"
+    caption="Video: an example of realtime MIDI synthesis with RustySynth on rust-sfml",
+    link="https://www.youtube.com/watch?v=o9rPTJIPmVk") }}
+
+[RustySynth] is a SoundFont MIDI synthesizer written in pure Rust. The purpose
+of this library is to provide MIDI music playback functionality for any Rust
+application without complicated dependencies. The code base is lightweight and
+can be used with any audio driver that supports streaming audio (e.g.
+[rust-sfml]).
+
+Features:
+
+- Tuned mainly for gamedev and has low CPU usage.
+- Support for standard MIDI files.
+- No dependencies other than the standard library.
+- Available under a permissive license (MIT).
+
+[rustysynth-video]: https://www.youtube.com/watch?v=o9rPTJIPmVk
+[RustySynth]: https://github.com/sinshu/rustysynth
+[rust-sfml]: https://github.com/jeremyletang/rust-sfml
+
+### [tween]
+
+`tween` is a library for manipulating values in stylish and beautiful ways. It
+has been almost entirely rewritten for `v2.0.0`, now featuring a significantly
+improved API, fewer generics, and much, much faster performance.
+
+Additionally, it has added support for Looping, Oscillating, and Extrapolating
+tweens. With all of this, making custom tweens is much easier. An example of
+making a Bezier tween is included.
+
+[tween]: https://github.com/sanbox-irl/tween
+
+### [scene-graph]
+
+`scene-graph` is a library for creating graph structures similar to the one used
+in engines like Unity or Unreal. It is fast, performant, and easy to manipulate.
+It's especially useful for user interfaces. Although only in `v0.1.0`, feedback
+would be very appreciated.
+
+[scene-graph]: https://github.com/sanbox-irl/scene-graph
+
+### [torchbearer]
+
+{{ image_figure(
+    alt="Torchbearer in action"
+    src="torchbearer.png"
+    caption="An exemple of torchbearer in action, demonstrating both pathfinding and field
+of view") }}
+
+[torchbearer] by [@redwarp] is a library that provides a set of tools to find
+your path in a grid-based dungeon. Specifically, it provides a quick
+implementation of pathfinding and field of view algorithm.
+
+The 0.6.x version rewrites the field of view algorithm to cast vision rays in a
+Bresenham circle around the point of origin. This change from its [original
+implementation][torchbearer-orig] makes it faster as it removes the needs for
+error correction.
+
+[torchbearer]: https://github.com/redwarp/torchbearer
+[@redwarp]: https://github.com/redwarp
+[torchbearer-orig]: https://sites.google.com/site/jicenospam/visibilitydetermination
+
+### [Matchbox]
+
+![matchbox logo](matchbox.png)
+
+[Matchbox] is a library for easily establishing unreliable, unordered,
+peer-to-peer WebRTC data connections using rust WASM. This enables low-latency
+multiplayer browser games.
+
+Originally, it was written for web assembly, but a native implementation using
+[WebRTC.rs] has been available since 0.4. However, a few minor incompatibilities
+between the two implementations meant connections between native and web were
+not possible.
+
+In version 0.5, however, [Alex Rozgo] fixed the last of these issues. And
+cross-play sessions are now finally fully supported.
+
+In addition, [johanhelsing][johanhelsing_mastodon] fixed a serious bug that used
+to cause disconnections on recent versions of Firefox.
+
+The tutorial series on [how to make a p2p web game with Bevy, GGRS and
+Matchbox][extreme_bevy] was also updated to the latest versions of all three
+libraries.
+
+_Discussions: [Mastodon][cargospace_cross_platform_video]_
+
+[extreme_bevy]: https://johanhelsing.studio/posts/extreme-bevy
+[Matchbox]: https://github.com/johanhelsing/matchbox
+[WebRTC.rs]: https://webrtc.rs
+[Alex Rozgo]: https://github.com/rozgo
+
+### [miniquad]
+
+{{ image_figure(
+    alt="miniquad ios"
+    src="miniquad_metal.gif"
+    caption="Miniquad/macroquad examples rendered by Metal API") }}
+
+[miniquad] is a safe and cross-platform rendering library focused on portability
+and low-end platform support.
+
+This month metal backend [PR][miniquad_metal_pr] finally landed on miniquad!
+
+It is not yet ready for any production use, but it is available on crates.io as
+0.4.0-alpha.
+
+With this change, miniquad support webgl1, gl2, gles2/gles3, gl3+, metal on web,
+macOS, iOS, Android, Windows, and Linux.
+
+[miniquad]: https://github.com/not-fl3/miniquad
+[miniquad_metal_pr]: https://github.com/not-fl3/miniquad/pull/344
+
+## Other News
+
+- Other game updates:
+  - [Hydrofoil] is getting closer to their February release date.
+  - Tiny Glade now [has terrain modification][tiny-glade-terrain].
+  - Thetawave now [has a functional boss enemy][thetawave-boss].
+  - 8bit Duels is just released their [fifth devlog][8bit-duels].
+  - Combine And Conquer just released [version 0.4.0][combine-and-conquer].
+  - Your Only Move is Hustle is now available on Steam.
+  - TheGrimsey write a devblog ["Magic Missiles & the
+    Registries"][thegrimsey-devlog].
+  - Flesh has a [new redrawn background in the first area][flesh-1], and has
+    [been tested to run on the Steam Deck][flesh-2].
+  - [DGS] is a multiplayer game of Go, with spherical fields and VR support.
+  - Triverse has a [set of devlogs out][triverse-blogs], with the most recent
+    covering [scenarios and playability][triverse-scenarios].
+  - Fish Folk: Punchy has [released version 0.3][fishfolk-punchy].
+  - Life Code has [a new video][life-code-video] explaining how the diet
+    selection tool works.
+  - Digg is a new game being made with Bevy, and has [a devlog][digg-devlog]
+    that walks through the first two weeks of development.
+  - [Revolver Time] is a game made in 1 week with Godot and Rust, and has
+    [a video][revolver-time-video] explaining how it was made.
+  - [Canal Mania] is a game created for the Historically Accurate Game Jam.
+
+[Hydrofoil]: https://twitter.com/HydrofoilG
+[tiny-glade-terrain]: https://twitter.com/anastasiaopara/status/1617925842163863554
+[thetawave-boss]: https://twitter.com/carlosupina/status/1611808954455146498
+[8bit-duels]: https://reddit.com/r/rust_gamedev/comments/102kwgf/8bit_duels_devlog_part_5
+[combine-and-conquer]: https://buckmartin.de/combine-and-conquer/2023-01-14-v0.4.0.html
+[thegrimsey-devlog]: https://twitter.com/TheGrimsey/status/1615788141314510848
+[flesh-1]: https://twitter.com/Im_Oab/status/1616542479951724546
+[flesh-2]: https://twitter.com/Im_Oab/status/1619230923970736128
+[DGS]: https://reddit.com/r/rust_gamedev/comments/10ifm62/dgs_the_multiplayer_game_of_go
+[triverse-blogs]: https://cragwind.itch.io/triverse/devlog
+[triverse-scenarios]: https://cragwind.itch.io/triverse/devlog/485898/scenarios-and-playability
+[fishfolk-punchy]: https://reddit.com/r/rust_gamedev/comments/10qwgcn/fish_folk_punchy_v03
+[life-code-video]: https://twitter.com/LifeCodeGame/status/1611856359003426816
+[digg-devlog]: https://reddit.com/r/rust_gamedev/comments/10of2sz/creating_a_new_game_with_bevy
+[Revolver Time]: https://allocatedartist.itch.io/revolver-time
+[revolver-time-video]: https://youtube.com/watch?v=LNcGzn7ZsNI
+[Canal Mania]: https://lee-orr.itch.io/canal-mania
+
+- Other learning material updates:
+  - [Native iOS Touch Events w/ Rust] is a tutorial on how to use Rust to
+    create native iOS touch events.
+  - [Bevy Basics video series] is a series of videos that covers the basics of
+    Bevy.
+  - [Platformer in Bevy video series] is a series of videos that covers how to
+    make a platformer in Bevy.
+
+[Native iOS Touch Events w/ Rust]: https://itnext.io/rust-native-ios-touch-events-8b01418e0f3b
+[Bevy Basics video series]: https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+[Platformer in Bevy video series]: https://youtube.com/playlist?list=PL6uRoaCCw7GN_lJxpKS3j-KXuThRiSXc6
+
+- Other engine updates:
+  - [alkahest-rs] released put about a video about [implementing texture batching][alkahest-texture-batching].
+  - [godot-rust] saw large improvements to the Godot 3 bindings.
+  - [petrichor64] is a retro-inspired small 3D fantasy engine.
+
+[alkahest-rs]: https://twitter.com/alkimia_studios/status/1610802953828405248
+[alkahest-texture-batching]: https://www.youtube.com/watch?v=quoHV9HHHJA
+[godot-rust]: https://twitter.com/GodotRust/status/1615606253052362752
+[petrichor64]: https://makeavoy.itch.io/petrichor64
+
+- Other tooling updates:
+  - [Ten Minute Physics] is a reimplementation of Matthias Müller's "Ten Minute
+    Physics" demos in Rust with WASM + WebGL.
+  - [rgis] is a geospatial data viewer written in Rust.
+
+[Ten Minute Physics]: https://reddit.com/r/rust/comments/10l4ae5/ten_minute_physics_demos_in_rust_with_wasm_webgl
+[rgis]: https://github.com/frewsxcv/rgis
+
+- Other tooling updates:
+  - [wgpu v0.15, naga v0.11] were released.
+  - [raster_fonts], a library for deserializing the resulting metadata, was
+    announced.
+  - [nvtt] has been updated to use Nvidia Texture Tools 3.
+  - [oxidized_navigation] is a nav-mesh generation & pathfinding crate to use
+    with Bevy.
+  - [VPlugin] is a Rust framework to develop and use plugins within your
+    project, without worrying about the low-level details.
+  - [egui_glium] is looking for a new maintainer.
+  - [direct-storage] provides Rust bindings for DirectStorage.
+  - [bones] is a work-in-progress, opinionated game framework built on Bevy.
+  - [airsim-client] is a Rust client library for interacting with Microsoft
+    Airsim.
+  - [Rapier] wrote a year in review for 2022, and took a look ahead to 2023.
+  - [bevy-magic-light-2d] is an experimental dynamic 2D global illumination
+    system for Bevy, based on SDF ray-marching and screen space irradiance cache
+    probes.
+  - [notan v0.9] was released.
+
+[wgpu v0.15, naga v0.11]: https://reddit.com/r/rust/comments/10lf10i/wgpu_015_and_naga_011
+[raster_fonts]: https://reddit.com/r/rust_gamedev/comments/100vmqq/announcing_font2img_and_raster_fonts
+[nvtt]: https://reddit.com/r/rust_gamedev/comments/10eq1uh/nvtt_rs_has_been_updated_to_use_nvidia_texture
+[oxidized_navigation]: https://twitter.com/TheGrimsey/status/1615063433367494656
+[VPlugin]: https://github.com/VPlugin/VPlugin
+[egui_glium]: https://twitter.com/ernerfeldt/status/1621811309284130816
+[direct-storage]: https://github.com/Tsukisoft/direct-storage-rs
+[bones]: https://reddit.com/r/rust_gamedev/comments/10j74lt/bones
+[airsim-client]: https://reddit.com/r/rust_gamedev/comments/10ij9lv/airsimclient
+[Rapier]: https://dimforge.com/blog/2023/01/22/the-year-2022-in-dimforge
+[bevy-magic-light-2d]: https://github.com/zaycev/bevy-magic-light-2d
+[notan v0.9]: https://reddit.com/r/rust/comments/10pwgka/released_a_new_version_of_notan_a_sdllike_lib
+
+## Discussions
+
+- /r/rust_gamedev:
+  - ["Is it a good idea to start learning game development with rust?"][reddit-learn-rust]
+  - ["Tech stack for a turn-based roguelike in Rust"][reddit-turn-based]
+  - ["Pain points using Rust for gamedev?"][reddit-pain-points]
+  - ["I want to make a game that’s compatible with Nintendo switch"][reddit-nintendo]
+
+[reddit-learn-rust]: https://reddit.com/r/rust_gamedev/comments/107lmra/is_it_a_good_idea_to_start_learning_game
+[reddit-turn-based]: https://reddit.com/r/rust_gamedev/comments/10npmn6/tech_stack_for_a_turnbased_roguelike_in_rust
+[reddit-pain-points]: https://reddit.com/r/rust_gamedev/comments/10qyf0v/pain_points_using_rust_for_game_dev
+[reddit-nintendo]: https://reddit.com/r/rust_gamedev/comments/10jh6lt/i_want_to_make_a_game_thats_compatible_with_switch
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+
+## Jobs
+
+- [Ambient](https://www.ambient.run/career)
+  (Remote)
+  - Engine Programmer
+  - Rendering Engineer
+  - Open Source Community Engineer
+- [Embark Studios](https://careers.embark-studios.com/jobs)
+  (Stockholm/Hybrid Remote)
+  - Various roles
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/11cpysa/this_month_in_rust_gamedev_42),
+[Twitter](https://twitter.com/rust_gamedev/status/1629925295376441345),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/109932672837603113),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/042/intro-ecs.png b/content/news/042/intro-ecs.png
new file mode 100644
index 000000000..70dc95480
Binary files /dev/null and b/content/news/042/intro-ecs.png differ
diff --git a/content/news/042/matchbox.png b/content/news/042/matchbox.png
new file mode 100644
index 000000000..281505769
Binary files /dev/null and b/content/news/042/matchbox.png differ
diff --git a/content/news/042/miniquad_metal.gif b/content/news/042/miniquad_metal.gif
new file mode 100644
index 000000000..5dc085514
Binary files /dev/null and b/content/news/042/miniquad_metal.gif differ
diff --git a/content/news/042/particle_system.gif b/content/news/042/particle_system.gif
new file mode 100644
index 000000000..c8a8f63ef
Binary files /dev/null and b/content/news/042/particle_system.gif differ
diff --git a/content/news/042/rustysynth-yt.png b/content/news/042/rustysynth-yt.png
new file mode 100644
index 000000000..b893fe042
Binary files /dev/null and b/content/news/042/rustysynth-yt.png differ
diff --git a/content/news/042/torchbearer.png b/content/news/042/torchbearer.png
new file mode 100644
index 000000000..7de73137a
Binary files /dev/null and b/content/news/042/torchbearer.png differ
diff --git a/content/news/042/veloren.jpg b/content/news/042/veloren.jpg
new file mode 100644
index 000000000..311fa36ad
Binary files /dev/null and b/content/news/042/veloren.jpg differ
diff --git a/content/news/043/blue_engine_egui_plugin_update.png b/content/news/043/blue_engine_egui_plugin_update.png
new file mode 100644
index 000000000..eac8aa744
Binary files /dev/null and b/content/news/043/blue_engine_egui_plugin_update.png differ
diff --git a/content/news/043/cargo-space-physics.png b/content/news/043/cargo-space-physics.png
new file mode 100644
index 000000000..a368c8fa3
Binary files /dev/null and b/content/news/043/cargo-space-physics.png differ
diff --git a/content/news/043/cootsmania-gameplay.jpg b/content/news/043/cootsmania-gameplay.jpg
new file mode 100644
index 000000000..3b0b93eca
Binary files /dev/null and b/content/news/043/cootsmania-gameplay.jpg differ
diff --git a/content/news/043/cvars.png b/content/news/043/cvars.png
new file mode 100644
index 000000000..c7add172d
Binary files /dev/null and b/content/news/043/cvars.png differ
diff --git a/content/news/043/cybergate.gif b/content/news/043/cybergate.gif
new file mode 100644
index 000000000..d7dc4aa18
Binary files /dev/null and b/content/news/043/cybergate.gif differ
diff --git a/content/news/043/firstperson.png b/content/news/043/firstperson.png
new file mode 100644
index 000000000..1ba8ffa94
Binary files /dev/null and b/content/news/043/firstperson.png differ
diff --git a/content/news/043/fyrox-blend-space.gif b/content/news/043/fyrox-blend-space.gif
new file mode 100644
index 000000000..80c5e8ebc
Binary files /dev/null and b/content/news/043/fyrox-blend-space.gif differ
diff --git a/content/news/043/galaga.gif b/content/news/043/galaga.gif
new file mode 100644
index 000000000..70c78e328
Binary files /dev/null and b/content/news/043/galaga.gif differ
diff --git a/content/news/043/gamedev-meetup.png b/content/news/043/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/043/gamedev-meetup.png differ
diff --git a/content/news/043/godot-rust-gdextension.png b/content/news/043/godot-rust-gdextension.png
new file mode 100644
index 000000000..3c3110bee
Binary files /dev/null and b/content/news/043/godot-rust-gdextension.png differ
diff --git a/content/news/043/graphite.png b/content/news/043/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/043/graphite.png differ
diff --git a/content/news/043/hexx.jpeg b/content/news/043/hexx.jpeg
new file mode 100644
index 000000000..a59228029
Binary files /dev/null and b/content/news/043/hexx.jpeg differ
diff --git a/content/news/043/hydrofoil_43.jpg b/content/news/043/hydrofoil_43.jpg
new file mode 100644
index 000000000..504dead96
Binary files /dev/null and b/content/news/043/hydrofoil_43.jpg differ
diff --git a/content/news/043/idu.jpg b/content/news/043/idu.jpg
new file mode 100644
index 000000000..cd968e0c2
Binary files /dev/null and b/content/news/043/idu.jpg differ
diff --git a/content/news/043/index.md b/content/news/043/index.md
new file mode 100644
index 000000000..c7f93c9a7
--- /dev/null
+++ b/content/news/043/index.md
@@ -0,0 +1,1020 @@
++++
+title = "This Month in Rust GameDev #43 - February 2023"
+transparent = true
+date = 2023-03-08
+draft = false
++++
+
+<!-- no toc -->
+
+Welcome to the 43rd issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 24th Rust Gamedev Meetup took place in February. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule
+from the meetup:
+
+- Micro Game Engine - [@AngelOnFira]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtu.be/HTxX-Wm-3R8
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@AngelOnFira]: https://twitter.com/AngelOnFira
+[@GraphiteEditor]: https://twitter.com/GraphiteEditor
+
+## Game Updates
+
+### Cootsmania
+
+![Cootsmania gameplay](cootsmania-gameplay.jpg)
+
+[Cootsmania] ([GitHub][coots-github])
+is a multiplayer racing game made for [Ludwig Jam 2023][ludwig-jam] in 10 days
+by [@kuviman] (programming), [@rincs] (art), and [@Brainoid] (music & sfx).
+
+The game is about racing other players around Ludwig's house
+towards the next Coots (Ludwig's cat) location.
+Every round half of the players get eliminated and eventually a winner is decided.
+
+[See the trailer on YouTube][coots-trailer].
+
+The game is written using a custom engine: [Geng][geng].
+
+[Cootsmania]: https://kuviman.itch.io/cootsmania
+[ludwig-jam]: https://itch.io/jam/ludwig-2023
+[coots-github]: https://github.com/kuviman/cootsmania
+[coots-trailer]: https://youtu.be/N0bQDZTDr2Y
+[geng]: https://github.com/kuviman/geng
+[@kuviman]: https://github.com/kuviman
+[@rincs]: https://rincsart.com
+[@Brainoid]: https://twitter.com/brainoidgames
+
+### [Tunnet][tunnet-itch]
+
+{{ image_figure(
+    alt="Tunnet screenshot: low poly models, blocky terrain, FPS view with a drill in hands"
+    src="tunnet.jpg"
+    caption="Tunnels and computer networks") }}
+
+Tunnet ([Steam][tunnet-steam], [Itch.io][tunnet-itch]) by
+[@puzzled\_squid][puzzled_squid] is a small puzzle/exploration game where you
+play as a robot technician who has been tasked with building a computer network
+in an underground complex.
+
+The project is implemented using the Bevy engine. It is currently under
+development and is expected to be released later this year.
+This month, the announcement trailer and the first few pages of the manual have
+been published on the [project page][tunnet-itch].
+
+[tunnet-itch]: https://puzzled-squid.itch.io/tunnet
+[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet
+[puzzled_squid]: https://puzzledsquid.xyz
+
+### [Open Combat][OpenCombat_website]
+
+{{ image_figure(
+    alt="Debug window: terrain tiles, units, and paths"
+    src="open_combat.png"
+    caption="Game now includes live debug window") }}
+
+Open Combat ([Website][OpenCombat_website], [GitHub][OpenCombat_github],
+[Discord][OpenCombat_discord]) is a real time tactical game
+which takes place during the 2nd World War.
+
+Some major changes this month :
+
+- A live debug window has been introduced (using [egui][egui_github]
+  and its [ggegui][ggegui_github] integration). It allows to live-modify and
+  adjust the gameplay of the running game.
+- A big source code split has been done (see [the merge request][OpenCombat_split_mr])
+  which separated the game logic and GUI.
+  It allows running the game logic as a standalone server
+  and working on different game parts more easily.
+- Integration of [puffin][puffin_github] to inspect performances
+
+The developers are also working on high-definition infantry sprites integration
+and on a high-definition map (and are searching for graphic
+designer help!).
+
+[OpenCombat_website]: https://opencombat.bux.fr/
+[OpenCombat_github]: https://github.com/buxx/OpenCombat
+[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px
+[OpenCombat_split_mr]: https://github.com/buxx/OpenCombat/pull/104
+[egui_github]: https://github.com/emilk/egui
+[ggegui_github]: https://github.com/NemuiSen/ggegui
+[puffin_github]: https://github.com/EmbarkStudios/puffin
+
+### [Tiny Glade]
+
+![A sheep with umbrella](tiny_glade_sheep_umbrella.gif)
+
+[Tiny Glade] is a small relaxing game about doodling
+castles.
+
+[@anopara] and [@h3r2tic] recently added [terrain editing].
+They then faced an important game design question: how would sheep handle
+it? Well, these cuddly little floofs are not mountain goats,
+so the developers gave them tiny umbrellas.
+
+Read more in their latest [Steam blogpost].
+
+[@anopara]: https://twitter.com/anastasiaopara
+[@h3r2tic]: https://twitter.com/h3r2tic
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade/
+[terrain editing]: https://store.steampowered.com/news/app/2198150/view/3651890488940565185
+[Steam blogpost]: https://store.steampowered.com/news/app/2198150/view/3669907614196390626
+
+### [Cargo Space]
+
+![Screenshot of Cargo Space: a cosmonut flying between lots of orange squares](cargo-space-physics.png)
+
+[Cargo Space] ([Discord][cargospace_discord]) by
+[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build
+a ship and fly it through space looking for new parts, fighting pirates and the
+environment.
+
+The game uses its own homemade XPBD-based physics engine implemented directly
+using [Bevy] systems and types. This month the implementation was fleshed out
+adding important features such as collision layers, composite colliders, one-way
+platforms, and an efficient collision broadphase.
+
+In other words, this means ship-to-ship collisions are finally happening. This
+was previously tricky, since ships are a combination of box colliders when
+colliding with each other and bevy_ecs_tilemap colliders (when colliding with
+the player).
+
+One part of the broadphase implementation was split out into a new crate,
+[bevy_sparse_grid_2d]. It provides a simple and convenient way to query for
+entities that share one or more grid cells based on their axis-aligned bounding
+box (AABB).
+
+Read more about Cargo Space's physics in [the long and detailed blog
+post][cargospace_devlog_5].
+
+[Cargo Space]: https://helsing.studio/cargospace
+[cargospace_devlog_5]: https://johanhelsing.studio/posts/cargo-space-devlog-5
+[cargospace_discord]: https://discord.gg/ye9UDNvqQD
+[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing
+[bevy_sparse_grid_2d]: https://github.com/johanhelsing/bevy_sparse_grid_2d
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="Many creatures flying and casting shadows"
+    src="cybergate.gif"
+    caption="Many creatures flying and casting shadows") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]) is an
+ambitious multiplayer project from CyberSoul, currently in development.
+With cutting-edge procedural generation and artificial intelligence,
+it promises to immerse players in a mysterious and enigmatic universe
+filled with strange creatures and hidden secrets.
+
+The latest updates to CyberGate include:
+
+- A rebuilt renderer, providing improved graphics and performance.
+- Shadow map cascades with seamless transitions for smooth shadow rendering.
+- Soft shadows for more realistic shadow effects.
+- A fog effect to create atmospheric depth and immersion.
+- A sky box to add visual interest and realism to the game world.
+- Support for importing GLTF models, expanding the range of assets available.
+
+Join the journey into the unknown and help shape the future of CyberGate!
+[Join the Discord server][cybergate-dis] to participate in upcoming Phase 7.0!
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Legend of Worlds][low-website]
+
+![Characters standing near a house](legend_of_worlds.jpg)
+
+[Legend of Worlds][low-website] ([Discord][low-discord], [Twitter][low-twitter])
+is a cross-platform, cross-play, 2D online sandbox multiplayer
+experience where you can join, play, create, and share player-created worlds.
+
+[The latest dev log][low-devlog] from [Rou][low-twitter] covers an update
+to the open-source game engine created for this game.
+
+Legend of Worlds uses Toxoid Engine. Toxoid is a cross-platform, polyglot,
+open-source WebAssembly game engine written in Rust.
+The architecture has been updated so that Toxoid games can now share memory
+directly between WASM components, and map access to the data values rather than
+deserializing a set of values every time, resulting in "massive performance gains".
+
+[low-website]: http://legendofworlds.com
+[low-twitter]: https://twitter.com/DreamsectGames
+[low-discord]: https://discord.gg/aqD7H3F7nz
+[low-devlog]: http://legendofworlds.com/dev-log-2
+
+### [Hydrofoil Generation]
+
+![Steam page screenshot](hydrofoil_43.jpg)
+
+[Hydrofoil Generation]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that puts you in the driving seat of modern competitive sailing.
+
+Hydrofoil Generation released on February 16th 2023 on Steam Early Access after
+almost 3 years of development.
+
+The game is written completely in Rust, using a custom engine based on
+DirectX 11, physics powered by Rapier-3D.
+
+Stefano Casillo, programmer commented: "Rust delivered on every single
+promise. I never experienced such an uneventful launch and QA as the one
+we had for Hydrofoil Generation. The software stability has been impressive
+since the beginning of the project and confirmed the trend at release with
+very few problems all very easy to address".
+
+Hydrofoil Generation currently sits at a very positive review rate of 96%
+on the Steam page and is praised for its challenging gameplay, performance
+and realistic physics.
+
+[Hydrofoil Generation]: https://hydrofoil-generation.com/
+[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation/
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="A cyclops attack"
+    src="veloren.jpg"
+    caption="A cyclops attack") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In February, swing SFX were added to the new sword abilities. Blocks were added
+to spots that can spawn NPCs. Moderation badges were added, and fixes to the chat
+command were made. A student contributed to Veloren on their two-week internship
+about game design, you can [read about that here][veloren-internship]. Work is
+being done to add more functionality to sites, which are small models placed
+around the world.
+
+February's full weekly devlogs: "This Week In Veloren...": [#205][veloren-205], [#206][veloren-206].
+
+[veloren]: https://veloren.net
+[veloren-205]: https://veloren.net/devblog-205
+[veloren-206]: https://veloren.net/devblog-206
+[veloren-internship]: https://veloren.net/devblog-205#potion-shops-were-created-during-a-two-week-internship-by-nixda
+
+### [triverse]
+
+![Training scenario screenshot: user is teached how to attach thrusters](triverse.png)
+
+[triverse] by [@cragwind] is a WIP smart-pause RTS with custom unit creation
+on a triangle grid canvas.
+[This month's update][triverse-devlog] includes:
+
+- Training and challenge scenarios.
+- Grid lines when building.
+- Edge panning in fullscreen mode.
+- Radar proximity markers to indicate objects that are off
+  the visible portion of the map.
+
+[@cragwind]: https://cragwind.com
+[triverse]: https://cragwind.itch.io/triverse
+[triverse-devlog]: https://cragwind.com/posts/scenarios-and-playability
+
+### [Idu][idu-itch]
+
+![concrete and rock blocks, water, and a tree casting a shadow](idu.jpg)
+
+[Idu][idu-itch] ([Discord][idu_discord]) is a strategic sandbox game about growing
+plants that wish to reclaim nature, developed by [Elina Shakhnovich][eli_mastodon]
+and [Johann Tael][johann_mastodon] featuring a bespoke Vulkan-based engine in Rust.
+
+This month [a new demo was released][idu-new-demo]:
+
+- A new world generation with new buildings, stairs, caves, paths, and beaches.
+- Simpler inventory management for materials.
+- New help text that explains the game mechanics better.
+- A configurable FOV and fullscreen toggle settings.
+- Wind now affects not only leaves but tree branches as well.
+- Significant GI performance improvements.
+
+[idu_discord]: https://discord.gg/MeGauteMj3
+[eli_mastodon]: https://mastodon.gamedev.place/@eli
+[johann_mastodon]: https://mastodon.gamedev.place/@johann
+[idu-itch]: https://epcc.itch.io/idu
+[idu-new-demo]: https://epcc.itch.io/idu/devlog/492261/demo-version-9-available-new-worlds
+
+### [Necking][necking-post]
+
+![Two giraffe character with debug bounding forms visualised](necking.jpg)
+
+Necking is a WIP competitive/cooperative 1-on-1 online game where players
+are giraffes and fight for male dominance in the giraffe way.
+
+This month the devs have released [the first devlog][necking-post]
+that tells about:
+
+- The concept of the game and what inspired it.
+- Custom joint system and migration to Rapier physics lib.
+- Bevy controls design, including tongue controls.
+- The [cuicui] UI framework.
+
+[necking-post]: https://devildahu.ch/devlog/necking-1
+[cuicui]: https://github.com/devildahu/bevy_mod_cuicui
+
+## Engine Updates
+
+### [godot-rust][gd-github]
+
+![godot-rust GDExtension logo](godot-rust-gdextension.png)
+
+The [release of Godot version 4.0][gd-godot4] marks a significant milestone in
+the game development ecosystem. godot-rust aims to bring the open-source
+game engine to the Rust community.
+
+For the [Godot 4 (GDExtension) binding][gd-gdextension], February was a very
+productive month, with a handful of new contributors and [16 merged pull
+requests][gd-pulse]. An up-to-date feature overview is available
+[in issue #24][gd-24]. Last month's changes include:
+
+- Support for arrays, packed arrays, and dictionaries
+- Support for some geometric types (vectors, quaternions, colors)
+- Bugfixes regarding ref-counts, use-after-free, memory leaks
+
+On the [Godot 3 (GDNative) side][gd-gdnative], lots of quality-of-life
+improvements have found their way into the library:
+
+- Class self-registration based on `inventory` crate
+- Flexible self types: `fn instance(#[self] this: Instance<Self>)`
+- Trait entry point: `#[callbacks] impl GDNativeCallbacks for MyLibrary {...}`
+
+Both bullet lists are examples for how the GDNative and GDExtension bindings
+mutually benefit each other, reusing proven designs for user-friendly Rust APIs.
+
+[gd-github]: https://github.com/godot-rust
+[gd-gdextension]: https://github.com/godot-rust/gdextension
+[gd-gdnative]: https://github.com/godot-rust/gdnative
+[gd-godot4]: https://godotengine.org/article/godot-4-0-sets-sail/
+[gd-pulse]: https://github.com/godot-rust/gdextension/pulse/monthly
+[gd-24]: https://github.com/godot-rust/gdextension/issues/24
+
+### [Blue Engine][be-github]
+
+![blue_engine egui-plugin demo: color picker](blue_engine_egui_plugin_update.png)
+
+[Blue Engine][be-github] by [@ElhamAryanpur] is an easy to use, extendable, and
+portable graphics engine built to make it easier to render 2D or 3D graphics.
+
+Although the month of Febuary was slow for the development of the engine, there
+have been significant efforts towards the addition of [documentation][be-docs]
+and the eventual release of the next version. In the meantime,
+the plugins have favored significant updates and development in the month,
+notably the [egui][be-egui] plugin.
+
+Now the [egui plugin][be-egui] allow you to render objects of the engine direction
+inside an egui window. This feature was built in collaboration with [@Noswad].
+
+This also introduced a new option in Objects: `is_visible: bool`
+which hides an object
+from getting rendered if set to false (set to `true` as default). This allows
+you to hide an object from getting rendered on the background of egui, and can then
+add it to be rendered inside an egui window instead. So far the system on the second
+design, suggestions are welcome to cement a better design. Refer to [example][be-egui-example].
+
+[be-github]: https://github.com/AryanpurTech/BlueEngine
+[be-egui]: https://github.com/AryanpurTech/BlueEngineEGUI
+[be-egui-example]: https://github.com/AryanpurTech/BlueEngineEGUI/blob/master/examples/custom_3d.rs
+[be-docs]: https://docs.rs/blue_engine
+[@ElhamAryanpur]: https://github.com/ElhamAryanpur
+[@Noswad]: https://github.com/TheNoswad
+
+### [Ambient][ambient-github]
+
+![Image of a scene made with Ambient](made_with_ambient.jpg)
+
+After over a year in development, [version 0.1 of Ambient][ambient-blog]
+(formerly known as Dims) was unveiled to the public. It is an open-source
+multiplayer 3D game runtime, compatible with any language that compiles
+to/runs on WebAssembly, and is designed to make it easy to build and deploy
+rich multiplayer worlds and experiences.
+
+It is guided by several core principles, including seamless networking,
+data-oriented design, interoperability, and more.
+The core runtime is written in Rust and uses WGPU for graphics, Quinn
+for networking, and WebAssembly for user logic. This allows it to run on
+all major desktop platforms, with active work underway for the Web and
+other targets.
+
+Check out [the GitHub][ambient-github] (2600 stars!) to get started with
+building for/or on Ambient yourself, or chat with the developers and other
+explorers on [the Discord][ambient-discord].
+
+_Discussion: [/r/rust][ambient-reddit], [Hacker News][ambient-hn]_
+
+[ambient-github]: https://github.com/AmbientRun/Ambient
+[ambient-blog]: https://ambient.run/post/introducing-ambient
+[ambient-reddit]: https://reddit.com/r/rust/comments/118wlda/introducing_ambient_01
+[ambient-hn]: https://news.ycombinator.com/item?id=34906166
+[ambient-discord]: https://discord.gg/ambient
+
+### [Geng][geng]
+
+[Geng][geng] by [@kuviman] is a game engine that is used by him & friends
+for mostly making small games for game jams.
+
+The focus is to work on the web first (using WebGL1),
+but can also work easily on native platforms.
+
+Font rendering is done using sdf textures,
+which are being created on GPU based on [this article][sdf-on-gpu].
+Some font improvements from February:
+
+- Better curve approximation (still can be done better like in the article).
+- Use euclidean distance instead of manhattan.
+- Added a method to create sdf texture for text.
+  (previously font only had sdf texture atlas with every glyph).
+
+Support was added for OpenGL blend equations - e.g. minmax blending,
+which is now used instead of depth buffer for sdf textures
+
+Also, some improvements related to sound:
+API to query `Sound` duration,
+starting sound playback from specific position,
+and changing the speed of `SoundEffect`.
+
+[sdf-on-gpu]: https://astiopin.github.io/2019/01/06/sdf-on-gpu.html
+
+### [Fyrox][fyrox]
+
+{{ image_figure(
+    alt="a hi-tech soldier model blending between 5 animations"
+    src="fyrox-blend-space.gif"
+    caption="Blend space demo") }}
+
+[Fyrox][fyrox] ([GitHub][fyrox-src], [Discord][fyrox-dis], [Twitter][fyrox-twi])
+is a game engine that aims to be easy to use and provide a large set
+of out-of-the-box features. This month's updates include:
+
+- [Audio system's refactoring][fyrox-audio] to make it much more flexible.
+- [Root motion][fyrox-root-motion] animation technique helps
+  prevent "floating" or "sliding" effects.
+- [Blend space][fyrox-blend-space] allows blending many animations based on
+  two numeric input parameters
+  (mostly useful for blending locomotion animations based on speed and direction).
+- [Editor restyling][fyrox-editor-restyling] brings cleaner and modern UI.
+
+February's full weekly devlogs: [#13][fyrox-13], [#14][fyrox-14],
+[#15][fyrox-15], and [#16][fyrox-16].
+
+[fyrox]: https://fyrox.rs
+[fyrox-src]: https://github.com/FyroxEngine/Fyrox
+[fyrox-dis]: https://discord.com/invite/xENF5Uh
+[fyrox-twi]: https://twitter.com/DmitryNStepanov
+[fyrox-audio]: https://fyrox.rs/blog/post/twif13#audio-system-refactoring
+[fyrox-root-motion]: https://fyrox.rs/blog/post/twif14#root-motion
+[fyrox-blend-space]: https://fyrox.rs/blog/post/twif15#blend-space
+[fyrox-editor-restyling]: https://fyrox.rs/blog/post/twif16/#editor-restyling
+[fyrox-13]: https://fyrox.rs/blog/post/twif13
+[fyrox-14]: https://fyrox.rs/blog/post/twif14
+[fyrox-15]: https://fyrox.rs/blog/post/twif15
+[fyrox-16]: https://fyrox.rs/blog/post/twif16
+
+## Learning Material Updates
+
+### [Write a First Person Game in 2KB with Rust][firstperson-wasm4]
+
+![Game Preview](firstperson.png)
+
+[@grantshandy] published an [article][firstperson-wasm4] about creating a simple
+first-person game in Rust with [WASM-4]. It covers the basics of a ray casting
+algorithm and minifying Rust with WebAssembly. You can play the finished game
+[here][firstperson-wasm4-game].
+
+_Discussion: [/r/rust](https://reddit.com/r/rust/comments/11bdsys/fps_game_2kb_rust)_
+
+[@grantshandy]: https://github.com/grantshandy/
+[firstperson-wasm4]: https://grantshandy.github.io/posts/raycasting
+[firstperson-wasm4-game]: https://grantshandy.github.io/wasm4-raycaster/
+[WASM-4]: https://wasm4.org
+
+### Voxel Meshing
+
+![Simple white and green voxels with ambient occlusion enabled](voxel-meshing-ao.jpg)
+
+Authors of [Space Farer][spacefarer] - a WIP voxel-based survival/building
+game - published a couple of articles about voxel meshing:
+
+- ["Voxel Meshing for the Rest of us"][voxel-meshing-1] is an
+  introduction to voxel meshing techniques.
+- ["How (Not) to Improve Voxel Meshing Performance"][voxel-meshing-2]
+  tells about some zero-copy optimizations.
+
+[voxel-meshing-1]: https://playspacefarer.com/voxel-meshing
+[voxel-meshing-2]: https://playspacefarer.com/voxel-meshing-performance
+[spacefarer]: https://playspacefarer.com
+
+### [Making Galaga in Rust with Bevy][tut-bevy-galaga-1]
+
+![tutorial's result: player's ship moves and shoots into the enemy above](galaga.gif)
+
+[@whoisryosuke] released [the first part in a series][tut-bevy-galaga-1]
+on how to build a Galaga clone using Bevy.
+It covers 2D sprites and meshes basics, setting up custom shaders for animated background,
+and adding sound.
+
+[@whoisryosuke]: https://mastodon.gamedev.place/@whoisryosuke
+[tut-bevy-galaga-1]: https://whoisryosuke.com/blog/2023/making-galaga-in-rust-with-bevy-part-1
+
+## Tooling Updates
+
+### Sprite and Pixel Art Editor
+
+![Image editor screenshot](sprite_pixel_art_editor.png)
+
+A sprite and pixel art editor made with egui and macroquad is being
+developed by @yds12 ([GitHub][yds-github], [Mastodon][yds-mastodon]).
+The project is already usable, but has not been made public yet. Current
+features are:
+
+- Drawing w/ brush, eraser, lines, rectangles, bucket (fill w/ color).
+- Color selector, editable palette, and eyedropper (pick a color from the canvas).
+- Resize or completely erase the canvas.
+- Move the camera, zoom in and out.
+- Selection (rectangular only for now), deleted, copied, and pasted; flip
+  selection (horizontal or vertical).
+- Layers: create, remove, moved up/down, and control visibility and opacity.
+- Spritesheet: specify how many columns and rows your image has, and an
+  animated preview will be displayed in a window w/ configurable scale.
+- Save/load projects (with all its settings), export and import PNG/JPG.
+- Status bar w/ info about canvas size, canvas position, color under mouse,
+  etc.
+
+The source is planned to be released in the next few weeks.
+
+[yds-github]: https://github.com/yds12
+[yds-mastodon]: https://fosstodon.org/@yds/
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+New features from February's [sprint 23][graphite-sprint-23]:
+
+- Shaping up: Editing shapes is now easier thanks to point selection and
+  manipulation improvements.
+- Deep dive: The user experience of nested layer selection is improved by
+  introducing "Deepest" and "Shallowest" modes.
+- Scroll settings: Scroll up-and-down, or zoom in-and-out, at your preference
+  using the new configuration for scroll wheel behavior.
+- Graph growth: Additional node graph engineering introduces graceful type
+  checking and brings GPU-accelerated compositing closer to realization.
+
+As always, new contributors are kindly invited to
+[get involved][graphite-contribute] and take on
+[approachable issues][graphite-approachable-issues] with help from the
+project's friendly and supportive developer community on Discord.
+
+[Open Graphite][graphite-editor] in your browser and start creating! Share your
+designs with #MadeWithGraphite on Twitter.
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-23]: https://github.com/GraphiteEditor/Graphite/milestone/23
+[graphite-approachable-issues]: https://github.com/GraphiteEditor/Graphite/labels/Good%20First%20Issue
+[graphite-editor]: https://editor.graphite.rs
+
+### [rerun.io][rerun]
+
+{{ image_figure(
+    alt="egui app with lots of complex widgets, 2D and 3D views, etc"
+    src="rerun.jpg"
+    caption="[Click to see Rerun's latest demo video](https://youtube.com/watch?v=8ZpvOagRt-o)"
+    link="https://youtube.com/watch?v=8ZpvOagRt-o") }}
+
+[Rerun] ([Discord][rerun-discord]) lets you log images, point clouds
+and other visual data as easy as you would log text.
+The data is streamed in real-time to the Rerun Viewer
+which you can run natively or in a browser.
+
+> The Rerun Viewer builds configurable visualizations based on the data
+> you log and the relationships between it.
+> It uses transform hierarchies to lay out scenes and connect related data.
+> It lets you scroll back and forth in time, and toggle between showing
+> your data along different timelines, e.g. log time and sensor time.
+> It's built to be fast so you can explore without waiting.
+
+All built in Rust on top of [egui] library,
+with an API for both Rust and Python.
+
+This month, after a year of work, [Rerun was open-sourced under MIT & Apache 2][rerun-src]!
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/112unsd/opensourcing_rerun)_
+
+[Rerun]: https://rerun.io
+[rerun-src]: https://github.com/rerun-io/rerun
+[rerun-video]: https://youtube.com/watch?v=8ZpvOagRt-o
+[egui]: https://github.com/emilk/egui
+[rerun-discord]: https://discord.gg/PXtCgFBSmH
+
+## Library Updates
+
+### [hexx]
+
+![2D example with various groups of tiles highlighted](hexx.jpeg)
+
+[hexx] is a hexagonal tools library made by [@ManevilleF]:
+
+- Manipulate hexagonal coordinates, draw rings, lines, wedges, etc.
+- Generate hexagonal grids, with conversion between your world
+  and the hexagonal coordinates system.
+- Compute 3d meshes for your hexagons.
+
+It's engine-agnostic, but was made with [bevy] integration in mind
+and provides 2D and 3D [examples][hexx-examples].
+
+_Discussions: [Twitter](https://twitter.com/ManevilleF/status/1625159292490854400)_
+
+[hexx]: https://github.com/ManevilleF/hexx
+[bevy]: https://github.com/bevyengine/bevy
+[@ManevilleF]: https://linktr.ee/ManevilleF
+[hexx-examples]: https://github.com/ManevilleF/hexx/tree/main/examples
+
+### [nanoshredder]
+
+{{ image_figure(
+    alt="nanoshredder demo: windows with shader code and result behind"
+    src="nanoshredder.gif"
+    caption="macroquad's shadertoy example with metal/glsl preview") }}
+
+[Nanoshredder] is an experimental fork of
+[makepad's shader-compiler][makepad-shader-compiler].
+It compiles rust-like DSL into GLSL, Metal and HLSL.
+
+This month it got a little [web demo]:
+[macroquad's shadertoy][macroquad-shadertoy], a live editor with
+generated Metal/GLSL preview.
+
+[nanoshredder]: https://github.com/not-fl3/nanoshredder
+[makepad-shader-compiler]: https://github.com/makepad/makepad/tree/master/platform/shader_compiler
+[web demo]: https://not-fl3.github.io/miniquad-samples/shadertoy_cross.html
+[macroquad-shadertoy]: https://github.com/not-fl3/macroquad/blob/master/examples/shadertoy.rs
+
+### [blink-alloc]
+
+[blink-alloc] is a brand new arena-allocator with bunch of improvements
+over existing solutions that is
+tested with [Miri] and follows ["Strict Provenance Rules"][strict-provenance].
+
+> Arena-allocators offer extremely fast allocations and deallocations.
+> Allocation is just a few pointer arithmetic operations.
+> And deallocation is nearly no-op.
+> In exchange arena-allocator requires a point in time when all
+> previous allocations are unused to reset state.\
+> Rust's borrow-checker ensures the requirement for reset making
+> it 100% safe to use.
+>
+> TL;DR great for games, servers, cli tools, and more.
+
+blink-alloc provides thread-local and multi-threaded allocators -
+`BlinkAlloc` and `SyncBlinkAlloc`.
+Single-threaded version [performs many times faster than `bumpalo`][blink-bench].
+The author couldn't find another implementation to compare
+the multi-threaded version's performance.
+
+It also provided out-of-the-box to fetch `BlinkAlloc` in task/thread
+and return it back when done, keeping multiple `BlinkAlloc` instances warmed.
+
+On top of raw allocations blink-alloc provides `Blink` type
+that works as safe allocator adaptor.
+`Blink` can allocate memory and initialize it with values provided by user.
+Users may provide values as-is, as closures, or as iterators.
+`Blink`'s API is safe with few exceptions for niche use cases.
+
+Those familiar with `bumpalo` may think of `Blink` as of `bumpalo::Bump`.
+Though `Blink`
+
+- drops all placed values on reset,
+  which makes it usable with any kind of types without resource leaks.
+- Accepts any iterator type, not just `ExactSizeIterator` implementations.
+- Is configurable to use any `BlinkAllocator` implementation, thus not
+  tied to `Global`.
+
+Currently, Rust's standard collection types may use custom allocators
+only one nightly and with `allocator_api` feature enabled.
+blink-alloc uses `allocator-api2` crate to work on both stable and nightly.
+Integration with other crates is simple and doesn't require depending on
+blink-alloc, only on `allocator-api2`.
+
+[blink-alloc]: https://github.com/zakarumych/blink-alloc
+[blink-bench]: https://github.com/zakarumych/blink-alloc/blob/main/BENCHMARKS.md
+[Miri]: https://github.com/rust-lang/miri
+[strict-provenance]: https://github.com/rust-lang/rust/issues/95228
+
+### [pecs]
+
+{{ image_figure(
+    alt="pecs example, same as in the README"
+    src="pecs.png"
+    caption="Promise chaining example") }}
+
+In the ECS environment, you can't use the standard async/await
+approach, which can make implementing asynchronous logic painful.
+
+[pecs] is a plugin for the [Bevy][bevy] engine that solves this problem.
+It allows you to execute the code asynchronously by chaining multiple
+promises as part of [Bevy's `ecs`][ecs] environment.
+
+Each promise takes the state and result of the previous promise as arguments,
+as well as any Bevy ECS system parameter, and passes the modified
+state and new promise/result to the next promise. It's easy to register custom
+promises that wait for user input, events, asset loading, and so on. You can
+also use [pecs] to wait for any or all of multiple promises to complete
+before continuing with the rest of the code, as well as to loop asynchronously
+until a condition is met.
+
+[pecs]: https://github.com/jkb0o/pecs
+[ecs]: https://bevyengine.org/learn/book/getting-started/ecs
+
+### [seldom_state]
+
+[seldom_state] is a Bevy plugin that adds a `StateMachine` component that you
+can add to your entities. The state machine will change the entity's components
+based on states, triggers, and transitions that you define. It's useful
+for player controllers, animations, simple AI, etc.
+
+This month [seldom_state] 0.4 has been released:
+
+- Transition builders (`StateMachine::trans_builder`) which let you pass data
+  from triggers to states.
+- The `AnyState` state, which you can use wherever `StateMachine` accepts state
+  type parameters, which lets you create transitions from any state, etc
+- A `leafwing_input` feature for `leafwing-input-manager` integration,
+  which enables 9 built-in triggers related to input. `JustPressedTrigger`,
+  for example.
+- `OptionTrigger` and `BoolTrigger` traits, which are simpler to implement
+  than `Trigger`.
+
+[seldom_state]: https://github.com/Seldom-SE/seldom_state
+
+### [warbler_grass]
+
+{{ image_figure(
+    alt="preview of a grass chunk"
+    src="warbler_grass_preview.png"
+    caption="A bevy crate for grass rendering") }}
+
+[warbler_grass] is a new experimental [Bevy] plugin.
+The goal is to provide an ergonomic, but performant way
+to easily render huge amounts of grass.
+
+Some of the currently integrated features are dynamic directional wind
+and chunk loading.
+
+The project is now also published on [crates.io][warbler_cratesio].
+
+[warbler_grass]: https://github.com/EmiOnGit/warbler_grass
+[warbler_cratesio]: https://crates.io/crates/warbler_grass
+
+### [taffy]
+
+[taffy], the pure Rust UI layout crate, now supports CSS grid!
+Build your inventory menus with ease,
+or make that sudoku game you've always dreamed of.
+
+Taffy v0.3 also comes with more than a few performance improvements and bug fixes;
+for more details, check out our [release notes].
+
+[taffy]: https://github.com/dioxuslabs/taffy
+[release notes]: https://github.com/DioxusLabs/taffy/blob/main/RELEASES.md#030
+
+### [Cvars]
+
+{{ image_figure(
+    alt="cvars used in the RustCycles game - showcasing a console for the Fyrox engine"
+    src="cvars.png"
+    caption="Cvars and the Fyrox in-game console as used in RustCycles") }}
+
+[Cvars] ([GitHub][cvars-github], [Discord][cvars-discord]) by [@martin-t]
+are a simple way to store settings you want to change at runtime
+without restarting your game.
+
+They offer a way to change struct fields based on their name.
+This means games can store their config in a plain old struct
+and use its statically typed fields with no overhead.
+[Cvars] provide a derive macro to also allow changing each field
+dynamically at runtime from a TUI.
+
+The cvars project includes in-game consoles [for macroquad][cvars-macroquad]
+and [for Fyrox][cvars-fyrox].
+
+In addition to reading and setting cvars,
+they support history and offer a help message for new users.
+More advanced features such as autocomplete are planned for the next release.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/10wfe9p/announcing_cvars)_
+
+[Cvars]: https://crates.io/crates/cvars
+[cvars-github]: https://github.com/martin-t/cvars
+[cvars-discord]: https://discord.gg/aA7hCFvYh9
+[@martin-t]: https://github.com/martin-t
+[cvars-macroquad]: https://github.com/martin-t/cvars#macroquad-console
+[cvars-fyrox]: https://github.com/martin-t/cvars#fyrox-console
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [@Tantan shared a vlog][tantan-vid] about the space colonization procedual
+    tree generation technique [he's using for his voxel game][shrubbery].
+  - Denis Lavrentev shared a couple of Primitive Engineering's vlogs:
+    about [chunk management][pe-vid-1] and [the crafting system][pe-vid-2].
+  - [Hoive] is multiplayer Rust version of the Hive boardgame.
+  - [Tigris and Euphrates][tne] is a Rust version of the same-titled boardgame
+    written using macroquad.
+  - [Scalp Invaders][scalp-invaders] is game where you play as a colony of lice,
+    launching themselves with great abandon through the scalp of a disgusted victim.
+- Other engine updates:
+  - [alkahest-rs] released a couple of vlogs about
+    [UI rendering in general][alkahest-ui-rendering] and
+    [rendering children widgets inside panels][alkahest-ui-children].
+- Other learning material updates:
+  - [Faith Ekstrand published the first article][rust-vk] in a series
+    about using Rust for Vulkan drivers.
+  - ["Learn WGPU" was updated to wgpu v0.15][learn-wgpu].
+  - [PhaestusFox posted more episodes][PhaestusFox] of their "Platformer in Bevy"
+    YouTube series.
+  - The Unofficial Bevy Cheatbook by got two new chapters about
+    ["Cameras"][bevy-book-cameras] and
+    ["HDR, Tonemapping, Bloom"][bevy-book-hdr-tonemap].
+  - [Jan Metzger published an article][dps-lim-dx] about
+    dynamically limiting FPS in DirectX games from an external DLL.
+- Other tooling updates:
+  - [denog] is a gamedev-oriented fork of Deno with built-in window system
+    integration.
+  - [cargo-nds] and [libnds-rs] allow [writing Rust games for Nintendo DS][nds-ann],
+    though both are WIP.
+- Other library updates:
+  - [dlss_wgpu] provides Deep Learning Super Sampling for wgpu.
+  - [oxidized_navigation v0.2][oxi-nav] brings full support for walkable radius,
+    areas, and area cost multipliers.
+
+[tantan-vid]: https://youtube.com/watch?v=xQLVYnD43vI
+[shrubbery]: https://github.com/TanTanDev/shrubbery
+[pe-vid-1]: https://youtube.com/watch?v=_ZDagizAllY
+[pe-vid-2]: https://youtube.com/watch?v=ILslZgEBlAo
+[Hoive]: https://github.com/cooscoos/Hoive
+[tne]: https://reddit.com/r/rust_gamedev/comments/111xlv7/tigris_n_euphrates
+[scalp-invaders]: https://metalmancy.itch.io/scalp-invaders
+[learn-wgpu]: https://sotrh.github.io/learn-wgpu/news/0.15
+[PhaestusFox]: https://youtube.com/@PhaestusFox/videos
+[bevy-book-cameras]: https://bevy-cheatbook.github.io/features/camera.html
+[bevy-book-hdr-tonemap]: https://bevy-cheatbook.github.io/features/hdr-tonemap.html
+[dps-lim-dx]: https://zazama.de/blog/creating-an-fps-limiter-in-rust-by-hooking-directx
+[rust-vk]: https://collabora.com/news-and-blog/blog/2023/02/02/exploring-rust-for-vulkan-drivers-part-1
+[alkahest-rs]: https://github.com/AlkimiaStudios/alkahest-rs
+[alkahest-ui-rendering]: https://youtube.com/watch?v=cvVDSin0jpA
+[alkahest-ui-children]: https://youtube.com/watch?v=aaXflcuqQqw
+[denog]: https://reddit.com/r/rust/comments/10tsfry/denog
+[cargo-nds]: https://github.com/SeleDreams/cargo-nds
+[libnds-rs]: https://github.com/SeleDreams/libnds-rs
+[dlss_wgpu]: https://github.com/JMS55/dlss_wgpu
+[nds-ann]: https://reddit.com/r/rust/comments/10yk0kg/porting_rust_to_the_nntendo_ds
+
+[oxi-nav]: https://github.com/TheGrimsey/oxidized_navigation/blob/master/CHANGELOG.md#020-2023-02-13
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["We’re not really game yet"][reddit-not-there-yet]
+- /r/rust:
+  - ["Does anyone here work in gamedev with Rust?”][reddit-anyone-works]
+
+[reddit-not-there-yet]: https://reddit.com/r/rust_gamedev/comments/11b0brr/were_not_really_game_yet
+[reddit-anyone-works]: https://reddit.com/r/rust/comments/11bn8f1/does_anyone_here_work_in_gamedev_with_rust
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+- [Ambient's "good first issue" issues][ambient-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to @rust_gamedev on [Twitter][rust_gamedev_twi],
+[Mastodon][rust_gamedev_mas], or [/r/rust_gamedev subreddit][/r/rust_gamedev]
+if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/11m3z9e/rust_gamedev_43),
+[Twitter](https://twitter.com/rust_gamedev/status/1633533886566105088),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/109989058552826681),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[rust_gamedev_twi]: https://twitter.com/rust_gamedev
+[rust_gamedev_mas]: https://mastodon.gamedev.place/@rust_gamedev
diff --git a/content/news/043/legend_of_worlds.jpg b/content/news/043/legend_of_worlds.jpg
new file mode 100644
index 000000000..7f376944d
Binary files /dev/null and b/content/news/043/legend_of_worlds.jpg differ
diff --git a/content/news/043/made_with_ambient.jpg b/content/news/043/made_with_ambient.jpg
new file mode 100644
index 000000000..56a8bee6c
Binary files /dev/null and b/content/news/043/made_with_ambient.jpg differ
diff --git a/content/news/043/nanoshredder.gif b/content/news/043/nanoshredder.gif
new file mode 100644
index 000000000..1864c2733
Binary files /dev/null and b/content/news/043/nanoshredder.gif differ
diff --git a/content/news/043/necking.jpg b/content/news/043/necking.jpg
new file mode 100644
index 000000000..2d7efa357
Binary files /dev/null and b/content/news/043/necking.jpg differ
diff --git a/content/news/043/open_combat.png b/content/news/043/open_combat.png
new file mode 100644
index 000000000..3c7455130
Binary files /dev/null and b/content/news/043/open_combat.png differ
diff --git a/content/news/043/pecs.png b/content/news/043/pecs.png
new file mode 100644
index 000000000..9bbf80a7f
Binary files /dev/null and b/content/news/043/pecs.png differ
diff --git a/content/news/043/rerun.jpg b/content/news/043/rerun.jpg
new file mode 100644
index 000000000..addc6b9e6
Binary files /dev/null and b/content/news/043/rerun.jpg differ
diff --git a/content/news/043/sprite_pixel_art_editor.png b/content/news/043/sprite_pixel_art_editor.png
new file mode 100644
index 000000000..5b6af5411
Binary files /dev/null and b/content/news/043/sprite_pixel_art_editor.png differ
diff --git a/content/news/043/tigris-euphrates.png b/content/news/043/tigris-euphrates.png
new file mode 100644
index 000000000..c92c007d1
Binary files /dev/null and b/content/news/043/tigris-euphrates.png differ
diff --git a/content/news/043/tiny_glade_sheep_umbrella.gif b/content/news/043/tiny_glade_sheep_umbrella.gif
new file mode 100644
index 000000000..634036d7c
Binary files /dev/null and b/content/news/043/tiny_glade_sheep_umbrella.gif differ
diff --git a/content/news/043/triverse.png b/content/news/043/triverse.png
new file mode 100644
index 000000000..6ad287bee
Binary files /dev/null and b/content/news/043/triverse.png differ
diff --git a/content/news/043/tunnet.jpg b/content/news/043/tunnet.jpg
new file mode 100644
index 000000000..31b7eb127
Binary files /dev/null and b/content/news/043/tunnet.jpg differ
diff --git a/content/news/043/veloren.jpg b/content/news/043/veloren.jpg
new file mode 100644
index 000000000..7abc6ce81
Binary files /dev/null and b/content/news/043/veloren.jpg differ
diff --git a/content/news/043/voxel-meshing-ao.jpg b/content/news/043/voxel-meshing-ao.jpg
new file mode 100644
index 000000000..ac8e6d155
Binary files /dev/null and b/content/news/043/voxel-meshing-ao.jpg differ
diff --git a/content/news/043/warbler_grass_preview.png b/content/news/043/warbler_grass_preview.png
new file mode 100644
index 000000000..33f1ebf7d
Binary files /dev/null and b/content/news/043/warbler_grass_preview.png differ
diff --git a/content/news/044/8bit-duels-game.png b/content/news/044/8bit-duels-game.png
new file mode 100644
index 000000000..189e93ace
Binary files /dev/null and b/content/news/044/8bit-duels-game.png differ
diff --git a/content/news/044/OpenCombat_HUD.png b/content/news/044/OpenCombat_HUD.png
new file mode 100644
index 000000000..75d317351
Binary files /dev/null and b/content/news/044/OpenCombat_HUD.png differ
diff --git a/content/news/044/TheGrimsey-Editor.gif b/content/news/044/TheGrimsey-Editor.gif
new file mode 100644
index 000000000..4ff66345a
Binary files /dev/null and b/content/news/044/TheGrimsey-Editor.gif differ
diff --git a/content/news/044/battle-bots-simulator.jpg b/content/news/044/battle-bots-simulator.jpg
new file mode 100644
index 000000000..91aa9e11d
Binary files /dev/null and b/content/news/044/battle-bots-simulator.jpg differ
diff --git a/content/news/044/battle-city.png b/content/news/044/battle-city.png
new file mode 100644
index 000000000..b0e120bb3
Binary files /dev/null and b/content/news/044/battle-city.png differ
diff --git a/content/news/044/bevy-depth-prepass.jpg b/content/news/044/bevy-depth-prepass.jpg
new file mode 100644
index 000000000..d8d9e7315
Binary files /dev/null and b/content/news/044/bevy-depth-prepass.jpg differ
diff --git a/content/news/044/bevy-rust-gpu-hot-rebuild.gif b/content/news/044/bevy-rust-gpu-hot-rebuild.gif
new file mode 100644
index 000000000..8da557cf4
Binary files /dev/null and b/content/news/044/bevy-rust-gpu-hot-rebuild.gif differ
diff --git a/content/news/044/bevy_ruins.jpg b/content/news/044/bevy_ruins.jpg
new file mode 100644
index 000000000..500c50e38
Binary files /dev/null and b/content/news/044/bevy_ruins.jpg differ
diff --git a/content/news/044/bevy_text_mode.png b/content/news/044/bevy_text_mode.png
new file mode 100644
index 000000000..f967a7543
Binary files /dev/null and b/content/news/044/bevy_text_mode.png differ
diff --git a/content/news/044/boat-journey-screenshot.png b/content/news/044/boat-journey-screenshot.png
new file mode 100644
index 000000000..3745845d1
Binary files /dev/null and b/content/news/044/boat-journey-screenshot.png differ
diff --git a/content/news/044/cargo-space-invite.png b/content/news/044/cargo-space-invite.png
new file mode 100644
index 000000000..4e96e348c
Binary files /dev/null and b/content/news/044/cargo-space-invite.png differ
diff --git a/content/news/044/cybergate.gif b/content/news/044/cybergate.gif
new file mode 100644
index 000000000..858a823af
Binary files /dev/null and b/content/news/044/cybergate.gif differ
diff --git a/content/news/044/digital-extinction.jpeg b/content/news/044/digital-extinction.jpeg
new file mode 100644
index 000000000..6ceb68ccd
Binary files /dev/null and b/content/news/044/digital-extinction.jpeg differ
diff --git a/content/news/044/foxes.jpg b/content/news/044/foxes.jpg
new file mode 100644
index 000000000..11044c066
Binary files /dev/null and b/content/news/044/foxes.jpg differ
diff --git a/content/news/044/foxtrot.gif b/content/news/044/foxtrot.gif
new file mode 100644
index 000000000..ab8686eab
Binary files /dev/null and b/content/news/044/foxtrot.gif differ
diff --git a/content/news/044/fyrox-yt-preview.jpg b/content/news/044/fyrox-yt-preview.jpg
new file mode 100644
index 000000000..062873c6c
Binary files /dev/null and b/content/news/044/fyrox-yt-preview.jpg differ
diff --git a/content/news/044/gamedev-meetup.png b/content/news/044/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/044/gamedev-meetup.png differ
diff --git a/content/news/044/graphite-artwork-valley-of-spires.png b/content/news/044/graphite-artwork-valley-of-spires.png
new file mode 100644
index 000000000..5f4a97a00
Binary files /dev/null and b/content/news/044/graphite-artwork-valley-of-spires.png differ
diff --git a/content/news/044/hotline_rdg44.jpg b/content/news/044/hotline_rdg44.jpg
new file mode 100644
index 000000000..1aa12d796
Binary files /dev/null and b/content/news/044/hotline_rdg44.jpg differ
diff --git a/content/news/044/index.md b/content/news/044/index.md
new file mode 100644
index 000000000..bf2a92b11
--- /dev/null
+++ b/content/news/044/index.md
@@ -0,0 +1,1230 @@
++++
+title = "This Month in Rust GameDev #44 - March 2023"
+transparent = true
+date = 2023-04-30
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 44th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 25th Rust Gamedev Meetup took place in March. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video]. Here was the schedule
+from the meetup:
+
+- Blue Engine - [@aryanpur_elham]
+- Blade - [@kvark]
+- 8bit Duels - [@ThousandthStar]
+- Veloren - [@velorenproject]
+- Graphite - [@GraphiteEditor]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtube.com/watch?v=EVxjxP6sZtA
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@kvark]: https://kvark.github.io/
+[@aryanpur_elham]: https://twitter.com/aryanpur_elham
+[@ThousandthStar]: https://github.com/ThousandthStar
+[@GraphiteEditor]: https://twitter.com/GraphiteEditor
+[@velorenproject]: https://twitter.com/velorenproject
+
+## Game Updates
+
+### [8bit Duels]
+
+{{ image_figure(
+    alt="movement_animations"
+    src="8bit-duels-game.png"
+    caption="An 8bit Duels match") }}
+
+[@ThousandthStar] is creating a simple multiplayer turn-based strategy using the
+[Bevy Engine]. The [latest devlog] brings features like ownership indicators,
+movement and attack animations, and a chat system.
+
+The game is under development. The [8-bit Discord] is the best place to talk
+about the game.
+
+8bit Duels will be getting UI updates next, and the first version should release
+soon after that. Other troops are coming as well.
+
+_Discussions: [8-bit Discord]_
+
+[8bit Duels]: https://thousandthstar.github.io
+[Bevy Engine]: https://bevyengine.org/
+[latest devlog]: https://thousandthstar.github.io/posts/8bd/8bd-part6
+[8-bit Discord]: https://discord.com/invite/NbBcF4bGU5
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="Hit and blackhole particle effects"
+    src="cybergate.gif"
+    caption="Particles emit from bullet hits and blackholes") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]),
+an ambitious multiplayer project in development by CyberSoul,
+aims to invite players into a constantly evolving universe.
+Harnessing the power of procedural generation and artificial intelligence,
+this work-in-progress aspires to provide an engaging experience
+that emphasizes exploration and discovery across its diverse worlds.
+
+The latest updates to CyberGate include:
+
+- Skybox Animation and Transitions
+- Dynamic Point Lights
+- Particle System
+- Post-processing Screen Shake for Hit Feedback
+- Hit Particle Effects
+- Blackhole
+
+They released the 7th major update in March,
+They are now working on universe generation alghoritms for the 8th.
+Participate [by joining the Discord server][cybergate-dis].
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [ZOMBIE DEMO GAME]
+
+![A person in a red suit shooting zombies with a pistol](zombie-demo-game.png)
+
+[ZOMBIE DEMO GAME] is a small third-person zombie shooter by [@LPGhatguy] and
+[@evaera] that was released this month.
+
+It features an astonishing 10 minutes of gameplay, a built-in level editor, and
+zombies! It was produced in order to practice shipping a game and uses a custom
+engine using wgpu, hecs, and lots of other great crates from the ecosystem.
+
+ZOMBIE DEMO GAME is available for Windows and Linux
+[on itch.io][ZOMBIE DEMO GAME] today.
+
+_Discussion: [Twitter](https://twitter.com/LPGhatguy/status/1632596982928687104)_
+
+[@LPGhatguy]: https://twitter.com/LPGhatguy
+[@evaera]: https://twitter.com/evaeraevaera
+[ZOMBIE DEMO GAME]: https://lpghatguy.itch.io/zombie-demo-game
+
+### Shifting Chamber
+
+![Shifting Chamber Screen shot](shifting_chamber.png)
+
+Shifting Chamber ([itch.io][shifting-chamber-itch],
+[GitHub][shifting-chamber-github]) is a simple tactics game where
+the player, instead of moving the character, manipulates the map around it.
+The goal is to defeat the enemies by forcing them into hazardous
+positions - since they cannot be attacked directly.
+
+The game is in an early prototype / proof of concept phase.
+It is written with the help of the Bevy engine.
+There is currently only a WASM build (freely available on the itch.io)
+
+[shifting-chamber-itch]: https://maciekglowka.itch.io/shifting-chamber
+[shifting-chamber-github]: https://github.com/maciekglowka/shifting_chamber
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Live Map Editing Example"
+    src="jumpy.gif"
+    caption="Live Map Editing!") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+In the last month, the first [MVP release][jumpy_v0.6.0] of Jumpy was made. The
+release adds some major new features including a live map editor, critters,
+extended player animations, and basic AI. Soon afterward [an update][jumpy_v0.6.1]
+was made with revised maps and some important bug fixes.
+
+Along with the release is a new blog post, sharing thoughts on some of the lessons
+learned during development:
+[Jumpy v0.6 Retrospective][jumpy_retrospective].
+
+The efforts are now focused on getting network play implemented, with a two
+player LAN proof-of-concept already working. The hope is to get the remaining
+network issues fixed and the online matchmaker connected before making another
+release as soon as it's ready.
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[jumpy_v0.6.0]: https://github.com/fishfolk/jumpy/releases/tag/v0.6.0
+[jumpy_v0.6.1]: https://github.com/fishfolk/jumpy/releases/tag/v0.6.1
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]: https://spicylobster.itch.io
+[jumpy_retrospective]: https://fishfolk.org/blog/jumpy-0-6-retrospective/
+
+### [Tunnet][tunnet-itch]
+
+{{ image_figure(
+    alt="Tunnet screenshot: a weird looking computer network"
+    src="tunnet.jpg"
+    caption="Example of a puzzle in Tunnet") }}
+
+Tunnet ([Steam][tunnet-steam], [Itch.io][tunnet-itch]) by
+[@puzzled\_squid][puzzled_squid] is a short puzzle/exploration game where you
+build a computer network in an underground complex.
+
+This project is still WIP and the first [devlog][tunnet-post] has been
+posted this month. The post describes the main gameplay loop as well as some
+of the new environments recently added.
+
+The game is developed using Bevy and is expected to be released late 2023.
+
+[tunnet-itch]: https://puzzled-squid.itch.io/tunnet
+[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet
+[tunnet-post]: https://puzzled-squid.itch.io/tunnet/devlog/507508/devlog-0-gameplay-loop-and-subnetworks
+[puzzled_squid]: https://puzzledsquid.xyz
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="Building Placement in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Building Placement in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+The most notable updates are:
+
+- simple unit manufacturing was added,
+- game minimap was added,
+- game end detection was implemented,
+- shadows were enabled,
+- the health of all units & buildings was decreased,
+- the “Quit Game” button in the game menu leads to the main menu instead of the
+  termination of the application,
+- close button was added to all menu screens,
+- maximum number of players was made configurable by each map,
+- screen edge size for camera movement was decreased,
+- malformed configuration does not lead to a crash but a toast with an error
+  message is displayed.
+- [Bevy] was upgraded to v0.10.
+
+See [gameplay][de-video] screen recordings on YouTube.
+
+More detailed monthly updates are available [here (March)][de-update-05] and
+[here (April)][de-update-06].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[Bevy]: https://bevyengine.org
+[de-video]: https://youtu.be/_ibNMDgIQDE
+[de-update-05]: https://mgn.cz/blog/de05/
+[de-update-06]: https://mgn.cz/blog/de06/
+[@Indy2222]: https://github.com/Indy2222
+
+### [Way of Rhea][wor]
+
+[![way of rhea capsule image](wor-capsule.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle game with hard puzzles and forgiving
+mechanics being produced by [@masonremaley][wor-mason-remaley] in a custom Rust
+engine. You can support development by
+[checking out the free demo and wishlisting on Steam][wor]!
+
+Recent updates:
+
+- Undo/redo is better tutorialized.
+- Existing onboarding hints were improved both functionally and visually.
+- New onboarding hints were added to ensure new players understand that
+  teleporters are interactive.
+- Various performance improvements were made.
+- End-game puzzles were completed.
+- Work has begun on laying out the end-game art.
+- A release plan has been drafted.
+- Way of Rhea was shown at PAX West.
+- Way of Rhea will be part of the upcoming [Steam Puzzle Fest][wor-puzzle-fest]!
+
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n44
+[wor-mason-remaley]: https://twitter.com/masonremaley
+[wor-puzzle-fest]: https://partner.steamgames.com/doc/marketing/upcoming_events/themed_sales/puzzle_2023
+
+### [Boat Journey][boat-journey-itch]
+
+{{ image_figure(
+    alt="Screenshot from the game Boat Journey showing ASCII art of a boat and some islands"
+    src="boat-journey-screenshot.png"
+    caption="Carry your passengers safely to the ocean in Boat Journey.",
+    link="https://gridbugs.itch.io/boat-journey") }}
+
+[Boat Journey][boat-journey-itch] ([GitHub][boat-journey-github])
+is a turn-based game where you drive a boat through a
+procedurally-generated landscape on a voyage along a river destined for the
+ocean. Accept passengers to have them help you on your journey. Fight monsters,
+collect junk, trade the junk for fuel, use the fuel to travel to the ocean.
+
+Features:
+
+- Large procedurally-generated world
+- Turn the boat at 45-degree increments
+- Text-only graphics. You can play it in a terminal if you like!
+- Hand-drawn ansi-art character portraits
+- You can take on a ghost as a passenger and then become a ghost yourself.
+
+Boat Journey was made for the [7 Day Roguelike 2023][7drl-itch] game jam.
+The devlog is [here][boat-journey-devlog].
+
+[boat-journey-itch]: https://gridbugs.itch.io/boat-journey
+[boat-journey-github]: https://github.com/gridbugs/boat-journey
+[7drl-itch]: https://itch.io/jam/7drl-challenge-2023
+[boat-journey-devlog]: https://www.gridbugs.org/7drl2023-day1/
+
+### [Screen Ball]
+
+![Screen Ball](screen-ball.png)
+
+[Screen Ball] ([GitHub][Screen Ball], [YouTube][screen-ball-yt]) by [@lewiszlw]
+is a game that lets you play ball on screen for a rest when you're tired from work.
+Inspired by the video published by Bevy community member PaulH#7052.
+
+[Screen Ball]: https://github.com/NightsWatchGames/screen-ball
+[screen-ball-yt]: https://youtube.com/watch?v=pKV6fTmJfmE
+[@lewiszlw]: https://github.com/lewiszlw
+
+### [Battle City]
+
+![Battle City](battle-city.png)
+
+[Battle City] ([GitHub][Battle City], [YouTube][battle-city-yt]) by [@lewiszlw]
+is a Bevy clone of the classical Battle City game
+\- which brought a lot of happiness to the author's childhood.
+
+You can play it [here][play-battle-city].
+
+[Battle City]: https://github.com/NightsWatchGames/battle-city
+[battle-city-yt]: https://youtube.com/watch?v=54Z2WBFZfzA
+[play-battle-city]: https://nightswatchgames.github.io/games/battle-city/
+
+### [BattleBots Simulator]
+
+{{ image_figure(
+    alt="3D view on a two-weeled robot on a hex map"
+    src="battle-bots-simulator.jpg"
+    caption='Lightweight "annoyance" robot variant') }}
+
+[BattleBots Simulator] ([Twitter]) by [@nilaysavant]
+is a "BattleBots" themed robot wars simulator developed using [Bevy].
+
+The game is planned to have multiple combat arenas.
+Each player can compete using their selected robot.
+Players will be able to score and win by damaging and destroying opponent robots.
+Or by knocking opponents out of the arena.
+
+There are 3 variants of the robots planned as follows:
+
+- Light Weight "Annoyance": Low mass/HP, but will be unpredictable and fast.
+  It will slowly kill by consistently annoying and damaging opponents.
+- Medium Weight "Sniper": Medium weight robot that will be equipped with a high boost.
+  This will allow it to knockout opponents or push them out of the arena.
+- Heavy Weight "TANK": Highest mass/HP and momentum.
+  Slow moving but hard to kill.
+  Equipped with magnetic wedges that will help pin/push opponents out of the arena.
+
+The game is currently a work in progress. For updates follow [Nilay Savant] on Twitter.
+
+_Discussions: [Twitter]_
+
+[BattleBots Simulator]: https://twitter.com/nilay_savant/status/1632419019914645504
+[Twitter]: https://twitter.com/nilay_savant/status/1632419019914645504
+[@nilaysavant]: https://github.com/nilaysavant
+[Nilay Savant]: https://twitter.com/nilay_savant
+
+### Cargo Space
+
+![Screenshot of Cargo Space's friends list context menu: "invite to lobby"
+is highlighted](cargo-space-invite.png)
+
+[Cargo Space] ([Discord][cargospace_discord]) by
+[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build
+a ship and fly it through space looking for new parts, fighting pirates and the
+environment.
+
+This month's development was all about lobbies, chat and integrating with Steam.
+This spawned a couple of new micro-crates.
+
+[bevy_crossbeam_event] lets you spawn Bevy events by
+sending to a crossbeam channel, which is convenient with callbacks that require
+move semantics, such as those in bevy-steamworks.
+
+[steam_dev_launcher] is a cross-platform binary crate all
+about dev-friendly ways to launch your game through Steam. That is: without
+losing logs, panic traces, and optionally using a custom binary or setting extra
+environment variables (launch from `/target/debug/your_game`).
+
+Read more about all this in [this month's devlog entry][cargospace_devlog_6].
+
+[Cargo Space]: https://helsing.studio/cargospace
+[cargospace_devlog_6]: https://johanhelsing.studio/posts/cargo-space-devlog-5
+[cargospace_discord]: https://discord.gg/ye9UDNvqQD
+[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing
+[bevy_crossbeam_event]: https://github.com/johanhelsing/bevy_crossbeam_event
+[steam_dev_launcher]: https://github.com/johanhelsing/steam_dev_launcher
+
+### [Open Combat][OpenCombat_website]
+
+{{ image_figure(
+    alt='OpenCombat HUD: a window with a "Begin" button'
+    src="OpenCombat_HUD.png"
+    caption="Game now includes a HUD") }}
+
+Open Combat ([Website][OpenCombat_website], [GitHub][OpenCombat_github],
+[Discord][OpenCombat_discord]) is a real-time tactical game
+which takes place during the 2nd World War.
+
+Some major changes this month :
+
+- Add basic HUD logic for troops and game management
+- Add high definition assets management for zoom display
+
+High-definition infantry sprites integration if planned for next month
+and we are searching for graphic designer help.
+
+[OpenCombat_website]: https://opencombat.bux.fr/
+[OpenCombat_github]: https://github.com/buxx/OpenCombat
+[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Campfire by the lights"
+    src="veloren.jpg"
+    caption="Campfire by the lights") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In March, culling of underground terrain was added, improving rendering
+speeds. There has been a large influx of player growth, which has been rallying
+the focus on server optimizations. Optimizations for buffs and auras were added,
+specifically around how much network bandwidth is being used. A visual guide of
+Veloren was created, which should help onboard new players to the game. It
+covers items such as basic controls, what to do when you start the game, basic
+crafting, and much more. More work has gone into the real-time simulation system
+improvements. It includes behaviour of where birds should fly to, and how
+species repopulation works.
+
+March's full weekly devlogs: "This Week In Veloren...": [#207][veloren-207].
+
+[veloren]: https://veloren.net
+[veloren-207]: https://veloren.net/devblog-207
+
+### [Maginet]
+
+![Gamplay demo: square grid, red/blue mages moving around
+and attacking each other](maginet.gif)
+
+[Maginet] by [Evrim] is a fast-paced turn-based strategy game
+with local/versus-ai/online play on PC/mobile
+where two guilds of mages battle each other.
+
+This month's updates include:
+
+- [Mobile multiplayer][maginet-log-1];
+- [local AI-guilds][maginet-log-2].
+
+[Evrim]: https://twitter.com/evrimzone
+[Maginet]: https://evrimzone.itch.io/maginet
+[maginet-log-1]: https://evrimzone.itch.io/maginet/devlog/504797/mobile-multiplayer-and-minor-fixes
+[maginet-log-2]: https://evrimzone.itch.io/maginet/devlog/503725/ai-guild-joins-the-battle
+
+### [Tiny Glade]
+
+![A castle scene showcasing new editing features](tiny-glade.gif)
+
+[Tiny Glade] ([Twitter][tglade-twi], [Youtube][tglade-yt]) is a small relaxing game
+about doodling castles. This month's updates include:
+
+- New shapes, including dedicated circle and rectangle shapes.
+- Alignment and snapping helpers for the freeform walls.
+- Improved robustness of "wall mess" handling algorithm.
+
+Read more in their latest [Steam blogpost][tglade-post].
+
+Anastasia also posted [a cool thread][tgalde-hype] about their approach
+to marketing and promotion of the project.
+
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade
+[tglade-post]: https://store.steampowered.com/news/app/2198150/view/3681169040455721390
+[tgalde-hype]: https://twitter.com/anastasiaopara/status/1634633463247560704
+[tglade-twi]: https://twitter.com/PounceLight
+[tglade-yt]: https://youtube.com/@pouncelight
+
+### [Infinilands]
+
+![Drawning animation](infinilands.gif)
+
+[Infinilands] by [@FluffyCreature] is a WIP pixel art sandbox survival game:
+
+> Infinilands is a pixel art sandbox survival game that lets you explore
+> and modify a procedurally generated world full of unique plants,
+> creatures and ruins. You can build houses and fight monsters with your friends
+> in online/split-screen co-op. This game also supports dedicated server.
+
+This month's updates include:
+
+- [Water logic](https://twitter.com/FluffyGameDev/status/1636004535117180928).
+- Auto-tiling for both [normal][infi-2] and [block][infi-3] placement modes.
+
+[Infinilands]: https://store.steampowered.com/app/1882900/Infinilands
+[@FluffyCreature]: https://twitter.com/FluffyGameDev
+[infi-2]: https://twitter.com/FluffyGameDev/status/1633856225598160898
+[infi-3]: https://twitter.com/FluffyGameDev/status/1637166713249624066
+
+## Engine Updates
+
+### [hotline][hotline-gh]
+
+{{ image_figure(
+    alt="code in the editor on the left and live scene view with textured shapes on the right"
+    src="hotline_rdg44.jpg"
+    caption="hotline live coding client") }}
+
+[hotline][hotline-gh] ([Blog][hotline-blog], [Twitter][hotline-twi])
+is a modern, high-performance, hot-reload
+graphics engine written in Rust. It aims to provide low-level access to modern
+graphics API features, while at the same time providing high-level ergonomic
+optimizations.  
+
+It uses Bevy's ECS so the focus can remain primarily on the graphics
+architecture. Direct3D12 is the only supported platform, but the graphics API is
+abstracted to account for future ports to Vulkan and Metal. The project is in
+its early stages but already has a decent amount of features showcasing
+different render strategies, async command buffer generation, plugin based
+architecture, and hot-reload support for Rust code, HLSL shaders, and render
+configs. It supports ImGui with docking and multiple windows, video decoding,
+complex image loading (cubemaps, arrays, volumes), and more.
+
+[@polymonster] has been live streaming development on [Twitch][hotline-twitch]
+with archives available on [YouTube][hotline-yt].
+Recently they have been designing a bindless material system.
+
+[@polymonster]: https://github.com/polymonster
+[hotline-gh]: https://github.com/polymonster/hotline
+[hotline-blog]: https://polymonster.co.uk
+[hotline-twi]: https://twitter.com/polymonster
+[hotline-twitch]: https://twitch.tv/polymonstr
+[hotline-yt]: https://youtube.com/channel/UCQRmui5w4Urz-h4P9CL7rmA
+
+### [Bevy v0.10][bevy_news]
+
+![bevy ruins](bevy_ruins.jpg)
+
+[Bevy][bevy_engine] is a refreshingly simple data-driven game engine built in Rust.
+It is [free and open-source][bevy_repo] forever!
+
+Bevy 0.10 brought many incredible new features.
+You can check out the [full release blog post here][bevy_news],
+but here are some highlights:
+
+- [ECS Schedule v3](https://bevyengine.org/news/bevy-0-10/#ecs-schedule-v3)
+- [Cascaded Shadow Maps](https://bevyengine.org/news/bevy-0-10/#cascaded-shadow-maps)
+- [Environment Map Lighting](https://bevyengine.org/news/bevy-0-10/#environment-map-lighting)
+- [Depth and Normal Prepass](https://bevyengine.org/news/bevy-0-10/#depth-and-normal-prepass)
+- [Smooth Skeletal Animation Transitions](https://bevyengine.org/news/bevy-0-10/#smooth-skeletal-animation-transitions)
+- [Improved Android Support](https://bevyengine.org/news/bevy-0-10/#improved-android-support)
+- [Revamped Bloom](https://bevyengine.org/news/bevy-0-10/#revamped-bloom)
+- [Distance and Atmospheric Fog](https://bevyengine.org/news/bevy-0-10/#distance-and-atmospheric-fog)
+- [StandardMaterial Blend Modes](https://bevyengine.org/news/bevy-0-10/#standardmaterial-blend-modes)
+- [More Tonemapping Choices](https://bevyengine.org/news/bevy-0-10/#more-tonemapping-choices)
+- [Color Grading](https://bevyengine.org/news/bevy-0-10/#color-grading-control)
+- [Parallel Pipelined Rendering](https://bevyengine.org/news/bevy-0-10/#parallel-pipelined-rendering)
+- [Windows as Entities](https://bevyengine.org/news/bevy-0-10/#windows-as-entities)
+- [Renderer Optimizations](https://bevyengine.org/news/bevy-0-10/#renderer-optimizations)
+- [ECS Optimizations](https://bevyengine.org/news/bevy-0-10/#ecs-optimizations)
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/11k8kxd/bevy_010),
+[Hacker News](https://news.ycombinator.com/item?id=35045224),
+[Twitter](https://twitter.com/BevyEngine/status/1632808288864862209)_
+
+[bevy_engine]: https://bevyengine.org
+[bevy_news]: https://bevyengine.org/news/bevy-0-10
+[bevy_repo]: https://github.com/bevyengine/bevy
+
+### [Fyrox][fyrox]
+
+[![Youtube screenshot: a head with a combination of face expressions](
+fyrox-yt-preview.jpg)][fyrox-blend-shapes-yt]
+
+[Fyrox][fyrox] ([GitHub][fyrox-src], [Discord][fyrox-dis], [Twitter][fyrox-twi])
+is a game engine that aims to be easy to use and provide a large set
+of out-of-the-box features. This month's highlights include:
+
+- [Basic Android support][fyrox-android] for GLES3.0+ devices - usable
+  but the renderer lacks mobile-specific optimizations.
+- [Lightmapper fixes][fyrox-lightmapper].
+- [Blend shapes][fyrox-blend-shapes] allows to dynamically change 3D meshes
+  (useful for facial animation, etc).
+- Fyrox now uses [tinyaudio] as [its sound output backend][fyrox-audio-improvements].
+
+Full devlogs: [#17][fyrox-17], [#18][fyrox-18].
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/11vojtk/fyrox_blend)_
+
+[fyrox]: https://fyrox.rs
+[fyrox-src]: https://github.com/FyroxEngine/Fyrox
+[fyrox-dis]: https://discord.com/invite/xENF5Uh
+[fyrox-twi]: https://twitter.com/DmitryNStepanov
+[fyrox-17]: https://fyrox.rs/blog/post/twif17
+[fyrox-18]: https://fyrox.rs/blog/post/twif18
+[fyrox-blend-shapes-yt]: https://youtube.com/watch?v=2VtYk2vDoTY
+[fyrox-android]: https://fyrox.rs/blog/post/twif17#basic-android-support
+[fyrox-lightmapper]: https://fyrox.rs/blog/post/twif17#lightmapper-fixes
+[fyrox-blend-shapes]: https://fyrox.rs/blog/post/twif18#blend-shapes
+[fyrox-audio-improvements]: https://fyrox.rs/blog/post/twif18#audio-improvements
+[tinyaudio]: https://github.com/mrDIMAS/tinyaudio
+
+## Learning Material Updates
+
+### Developing an editor with egui
+
+![Gif displaying the functionality of the editor](TheGrimsey-Editor.gif)
+
+[@TheGrimsey] published a three-part series of articles about developing a Spell
+Editor with egui.
+
+- ["Databases & Editors (1/3)"] covers displaying egui windows & tables of
+  entries.
+- ["Editors (2/3): Editing entries"] elaborates on handling editing of entries &
+  properties such as enums.
+- Finally, ["Editors (3/3): Selection dialog & new entries"] talks about
+  developing a selection dialog and creating new entries.
+
+[@TheGrimsey]: https://mastodon.social/@TheGrimsey
+["Databases & Editors (1/3)"]: https://thegrimsey.net/2023/03/07/Bevy-Four-Editor.html
+["Editors (2/3): Editing entries"]: https://thegrimsey.net/2023/03/12/Bevy-Five-Editor-Two.html
+["Editors (3/3): Selection dialog & new entries"]: https://thegrimsey.net/2023/03/21/Bevy-Six-Editor-Three.html
+
+### [Writing NES assembly programs in a Rust DSL][writing-nes-programs-in-rust-video]
+
+{{ image_figure(
+    alt="Title slide from presentation about writing NES assembly programs in Rust"
+    src="nes-programming-in-rust-cover.jpg"
+    caption="Video: Talk about writing NES assembly programs in Rust",
+    link="https://youtube.com/watch?v=hs-MrEoOX5Y") }}
+
+This is a talk about writing a program for the Nintendo Entertainment System
+that exposes all of its audio processor registers through an interface that lets
+the user flip bits using the controller and hear the result in real-time. The
+program is written in Rust using an Embedded Domain-Specific Language. The talk
+demonstrates the features of the language and how they can be used to help
+express NES assembly programs in Rust.
+
+Some features of the EDSL:
+
+- defining and calling assembly functions by string labels
+- using Rust as a powerful macro language (e.g. generate code inside a for-loop)
+- using Rust's type system to catch invalid combinations of instruction and
+  addressing mode
+
+The source code for the NES program described in the talk is
+[here][nes-audio-playground-github] and there is a [demo of the tool on
+youtube][nes-audio-tool-demo-video]. The PDF of the slides from the talk are
+[here][writing-nes-programs-in-rust-pdf].
+
+[writing-nes-programs-in-rust-video]: https://youtube.com/watch?v=hs-MrEoOX5Y
+[nes-audio-playground-github]: https://github.com/gridbugs/nes-audio-playground
+[writing-nes-programs-in-rust-pdf]: https://raw.githubusercontent.com/gridbugs/nes-programming-in-rust-sydney-rust-meetup-2023-03-01/main/slides.pdf
+[nes-audio-tool-demo-video]: https://youtube.com/watch?v=QHoISiWdPXo
+
+### [Using the Depth Prepass in Bevy 0.10]
+
+{{ image_figure(
+    alt="depth prepass in bevy 0.10"
+    src="bevy-depth-prepass.jpg"
+    caption="depth prepass powered intersections between a shield and wall/floor") }}
+
+[@chrisbiscardi] published a [video][Using the Depth Prepass in Bevy 0.10] about
+using the Depth Prepass texture in Bevy 0.10. The depth prepass, along with the
+normal prepass, are new passes in Bevy 0.10 that allow you to access distance
+from the camera and normal direction for a particular pixel on the screen. The
+textures created by these passes can then be used to power effects in your own
+custom shaders.
+
+_Discussions: [YouTube](https://youtube.com/watch?v=3OHaEVHahIg),
+[Mastodon](https://hachyderm.io/@chrisbiscardi/110101000132502075)_
+
+[Using the Depth Prepass in Bevy 0.10]: https://youtube.com/watch?v=3OHaEVHahIg
+[@chrisbiscardi]: https://hachyderm.io/@chrisbiscardi
+
+### [Applying 5 million pixel updates per second with Rust & wgpu](https://maxisom.me/posts/applying-5-million-pixel-updates-per-second)
+
+![a render near the final state of /r/place](./r_place_render.jpg)
+
+[@codetheweb] published an [article][code_the_web_article] that explores the
+basics of wgpu by optimizing a program that replays [/r/place]. By the end,
+CPU usage is around 18-25% while applying an average of 5m pixel updates per
+second at 10,000x playback speed.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/11o9he6/rendering_5_million_pixel_updates_per_sec),
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/11odm3k/rendering_5_million_pixel_updates_per_sec)_
+
+[@codetheweb]: https://github.com/codetheweb
+[code_the_web_article]: https://maxisom.me/posts/applying-5-million-pixel-updates-per-second
+[/r/place]: https://reddit.com/r/place/
+
+### [NPCs and Dialog in Bevy][logic-devlog-video]
+
+[![Youtube preview: game screenshot and Rust code](logic-projects-thumbnail.png)][logic-devlog-video]
+
+[Matthew Bryant][matthew-bryant] released [a video][logic-devlog-video]
+focused on the design and implementation of a dialog system for NPCs
+in his [RPG game][logic-rpg].  This is the 4th in a weekly series about
+the high level ECS design of a full game using Bevy.
+
+[logic-devlog-video]: https://youtu.be/luyDgccpHgE
+[matthew-bryant]: https://youtube.com/@logicprojects
+[logic-rpg]: https://github.com/mwbryant/logic-turn-based-rpg
+
+## Tooling Updates
+
+### [Tiger][tiger-github]
+
+![Tiger screenshot: classuic UI layout](tiger.png)
+
+Tiger ([GitHub][tiger-github],
+[itch.io][tiger-itch.io] by
+[@agersant] is a visual tool to
+author game spritesheets and their metadata.
+
+Version 1.0 launched this month, which means Tiger is ready for production.
+It currently has the following features:
+
+- Easy-to-use timeline to author animation.
+- Supports perspectives for any 2D game (top-down, sidescroller, isometric,
+  etc.).
+- Automatically hot-reloads source images when they are changed.
+- Packs animation frames into texture atlases.
+- Can add and tag hitboxes.
+- Flexible template system exports metadata in any text-based format.
+- Free and open-source with a permissive license.
+
+[tiger-github]: https://github.com/agersant/tiger
+[tiger-itch.io]: https://agersant.itch.io/tiger
+[@agersant]: https://mastodon.gamedev.place/@agersant
+
+### [Tarsila]
+
+{{ image_figure(
+    alt="Tarsila's UI"
+    src="tarsila.png"
+    caption="Editor's UI") }}
+
+Tarsila is a pixel art and spritesheet editor written in Rust using
+egui and [macroquad], inspired by [Aseprite].
+The first public release (0.1.0) has been published on March 18th,
+with [basic features][tarsila-feats].
+
+Since the publication not many new features have been added, mostly
+bugfixes and an overhaul of the input system, in preparation for
+configurable shortcuts (via a text file and later GUI).
+
+In the [roadmap][tarsila-roadmap] for 0.2.0 are things like color
+effects (change hue, saturation, etc.), ovals and circles, and more.
+
+We welcome [contributions][tarsila-contrib]! Big thanks to contributors
+@quiet-bear and @crumblingstatue.
+
+[Tarsila]: https://github.com/yds12/tarsila
+[tarsila-feats]: https://github.com/yds12/tarsila/blob/master/docs/user_guide.md
+[tarsila-roadmap]: https://github.com/yds12/tarsila/blob/master/ROADMAP.md
+[tarsila-contrib]: https://github.com/yds12/tarsila/blob/master/CONTRIBUTING.md
+[Aseprite]: https://www.aseprite.org/
+
+### [Rerun](https://rerun.io)
+
+![Rerun's new select & hover highlights in a browser](rerun.gif)
+
+Rerun ([Discord](https://discord.gg/npTFxYR9),
+[GitHub](https://github.com/rerun-io/rerun), [Website](https://rerun.io))
+is an open-source SDK for logging complex visual data paired with a visualizer
+for exploring that data over time. While its primary focus is on robotics and
+computer vision, it can be useful for all kinds of
+rapid prototyping & algorithm development.
+
+Three new versions got released since the last newsletter!
+[0.5.0](https://github.com/rerun-io/rerun/releases/tag/v0.5.0)
+is now latest. A few of the biggest highlights:
+
+- The web-viewer is, while still experimental & unpolished, now stable.
+  [Try it out here!](https://app.rerun.io)
+- Rerun can now be embedded in Jupyter notebooks
+- Depth textures can now directly be visualized with point clouds and
+  have a variety of color map settings.
+- Selection/hover highlights use now outlines for better visibility and
+  in order to avoid changing the visualization itself.
+- Picking is now done on the GPU, fixing many issues of the previous system
+- All color-mapping is now done on-the-fly on the GPU, faster & less memory use
+- Support for mesh vertex colors.
+- [New example](https://github.com/rerun-io/rerun/blob/main/examples/python/opencv_canny/main.py)
+  of forever-streaming a web-camera image to Rerun.
+- Major improvements to the data store for better performance and memory usage
+
+There's a growing community on [Discord][rerun-discord]
+waiting for you to join in case you have any questions,
+comments or just want to follow the latest development.
+The [GitHub project][rerun-github] is MIT/Apache
+licensed and open to contribute for everyone,
+be it with suggestions, bugs or PRs.
+
+[rerun-discord]: https://discord.gg/npTFxYR9
+[rerun-github]: https://github.com/rerun-io/rerun
+
+### [Graphite][graphite-website]
+
+{{ image_figure(
+    alt="Vector artwork made in Graphite: Valley of Spires"
+    src="graphite-artwork-valley-of-spires.png"
+    caption="Valley of Spires - Vector art made in Graphite") }}
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+March's [sprint 24][graphite-sprint-24] brings forth:
+
+- Vector nodes: A major refactor moves vector shape layers into the node graph.
+  Now the _shape_, _transform_, _fill_, and _stroke_ are all set via nodes in
+  the graph. Text is the final remaining holdout and will be node-ified next,
+  letting the node graph act as the universal layer type.
+
+As always, new contributors are kindly invited to
+[get involved][graphite-contribute] and take on
+[approachable issues][graphite-approachable-issues] with help from the
+project's friendly and supportive developer community on Discord.
+
+[Open Graphite][graphite-editor] in your browser and start creating! Share your
+designs with #MadeWithGraphite on Twitter.
+
+[graphite-artwork]: graphite-artwork-valley-of-spires.png
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-24]: https://github.com/GraphiteEditor/Graphite/milestone/24
+[graphite-approachable-issues]: https://github.com/GraphiteEditor/Graphite/labels/Good%20First%20Issue
+[graphite-editor]: https://editor.graphite.rs
+
+## [ruffle][ruffle-post]
+
+{{ image_figure(
+    alt="new text input support on mobile devices"
+    src="ruffle-text.jpg"
+    caption="Demo of the new text input boxes on a mobile device") }}
+
+[Ruffle] is an open-source Flash Player emulator, written in Rust. It aims to run
+natively on all modern operating systems and web browsers, leveraging Rust's
+memory safety guarantees to avoid the security pitfalls that Flash became
+notorious for in its later years.
+
+[This month's updates][ruffle-post] include:
+
+- Significant improvements to AVM1 engine accuracy
+  fix dozens upon dozens of ActionScript 2 games.
+- Work on the AVM2 (ActionScript 3) backend [is also speeding up][ruffle-avm2],
+  a bunch of AS3 games are now playable.
+- Better mobile devices support:
+  text input boxes and iOS a context menu.
+
+[Check out the blog post][ruffle-post] for more details.
+
+[ruffle-post]: https://ruffle.rs/blog/2023/03/12/progress-report.html
+[ruffle-avm2]: https://ruffle.rs/avm2.html
+[ruffle]: https://ruffle.rs
+
+## [Orlop][orlop]
+
+![screenshot: a bunch of minimalist vehicle assets](orlop.png)
+
+Orlop by [Tim Rach][timrach] is a media management tool for anyone who works
+with a large asset library on a daily basis.
+
+> Organise and browse your asset collection with built-in tagging, search
+> and preview functionality. Automatic tagging requires no effort - just import
+> your asset folder and go!
+
+The beta version is available [on itch.io][orlop-itch]
+or [through Testflight][orlop-beta].
+
+[orlop]: https://orlop.dev
+[orlop-itch]: https://tirch.itch.io/orlop
+[orlop-beta]: https://orlop.dev#beta
+[timrach]: https://timrach.de
+
+### [Foxtrot][fox-ann]
+
+![Foxtrot in Action](foxtrot.gif)
+
+Jan Hohenheim's ([@janhohenheim]) [Foxtrot], the all-in-one for the Bevy engine,
+has reached its [0.2 milestone][fox-0-2].
+Thanks to feedback, contributions and crates from the community, it has now
+reached a fairly stable state. While there used to be a major change every week
+before, the project will limit itself to updating only minor things during a
+Bevy version lifecycle and do major reworks only in time for new versions.
+
+So, if anyone was eyeing it but was turned off by the frequent big changes or
+the lack of some features, now is the time! Version 0.2.0 includes
+the following cool new features compared to 0.1.0:
+
+- Wasm support, with [a live demo here](https://janhohenheim.github.io/foxtrot).
+  If the mouse lock doesn't work, spam "Esc" a bunch of times 😉
+- Beautiful grass through [warbler\_grass](https://crates.io/crates/warbler_grass)
+- Buttery smooth cameras through [bevy\_dolly](https://github.com/BlackPhlox/bevy_dolly)
+- Dynamic pathfinding through [oxidized\_navigation](https://crates.io/crates/oxidized_navigation)
+- Simplified error handling through [bevy\_mod\_sysfail](https://crates.io/crates/bevy_mod_sysfail)
+- Easy to write plugins through [seldom\_fn\_plugin](https://crates.io/crates/seldom_fn_plugin)
+- Sprinting particles through [bevy\_hanabi](https://github.com/djeedai/bevy_hanabi)
+- A demo scene with houses (CC0 if you want to reuse them)
+- A dialog that gets draws letter-by-letter and is nicer to look at
+- Better documentation
+
+Thanks also to [bevy\_game\_template](https://github.com/NiklasEi/bevy_game_template),
+without which Foxtrot would not be possible in the first place! And thanks
+to PhaestusFox, who [made a video about the template](https://youtube.com/watch?v=MsYX4he_z_8)
+
+[@janhohenheim]: https://github.com/janhohenheim
+[fox-ann]: https://reddit.com/r/rust_gamedev/comments/11wpptk/foxtrot_reaches_020
+[Foxtrot]: https://github.com/janhohenheim/foxtrot
+[fox-0-2]: https://github.com/janhohenheim/foxtrot/milestone/2
+
+## Library Updates
+
+### [bevy_text_mode]
+
+![Screenshot of 1-bit sprites drawn using bevy_text_mode.](bevy_text_mode.png)
+
+[bevy_text_mode] ([GitHub][bevy_text_mode-src]) by [yopox] is a Bevy plugin that
+makes it possible to set the background and the foreground color of a texture atlas
+sprite (built-in Bevy sprites only have a tint property).
+This plugin is convenient when using 1-bit tilesets such as [MRMOTEXT].
+
+The 0.1 release adds a `TextModeTextureAtlasSprite` component with
+configurable background, foreground, x/y flip and opacity.
+
+_Discussion: [Mastodon](https://mstdn.social/@yopox/110010264001721310)_
+
+[bevy_text_mode]: https://crates.io/crates/bevy_text_mode
+[bevy_text_mode-src]: https://github.com/yopox/bevy_text_mode
+[yopox]: https://github.com/yopox
+[MRMOTEXT]: https://mrmotarius.itch.io/mrmotext
+
+### Matchbox
+
+![matchbox logo](matchbox.png)
+
+[Matchbox] is a library for easily establishing unreliable, unordered,
+peer-to-peer WebRTC data connections using rust WASM (and native). This enables
+cross-platform low-latency multiplayer games.
+
+Previously, the socket opened a single udp-like data channel. In version 0.6,
+however, support for adding extra channels with configurable ordering and
+package retransmits was added. This enables direct p2p tcp-like connections as
+well.
+
+Two new crates were added in this release. matchbox_signaling, lets you
+set up a custom signaling server, also supporting client-server topologies,
+enabling scenarios where one player acts as the host for the other players.
+
+bevy_matchbox provides ergonomic usage with Bevy. Severely cutting down on the
+boiler-plate needed.
+
+The tutorial series on [how to make a p2p web game with Bevy, GGRS and
+Matchbox][extreme_bevy] was also updated to the latest versions of all three
+libraries.
+
+Read more about all the new features in the [0.6 release post][matchbox-0.6].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/127ssuv/announcing_matchbox_06_painless_peertopeer_webrtc),
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/127suhc/matchbox_06_released_painless_peertopeer_webrtc),
+[/r/bevy](https://reddit.com/r/bevy/comments/127sn3o/announcing_matchbox_06_and_a_new_bevy_matchbox),
+[Mastodon](https://mastodon.social/@johanhelsing/110119122081173196)_
+
+[extreme_bevy]: https://johanhelsing.studio/posts/extreme-bevy
+[Matchbox]: https://github.com/johanhelsing/matchbox
+[matchbox-0.6]: https://johanhelsing.studio/posts/matchbox-0-6
+
+### [Bevy Rust-GPU]
+
+{{ image_figure(
+    alt="hot-rebuild"
+    src="bevy-rust-gpu-hot-rebuild.gif"
+    caption="Hot-rebuilding a rust-gpu shader from a bevy app") }}
+
+[Bevy Rust-GPU] by [@Shfty]
+is a suite of crates encoding a practical [rust-gpu] workflow for [bevy].
+
+The latest release brings new GPU interop traits, shader macro robustness,
+and compatibility with [bevy] 0.10 and [rust-gpu] 0.6.
+Further development continues apace, with major improvements to the SPIR-V
+interchange pipeline, shader compilation machinery, and support code already merged.
+
+The project is still in development, and presently relies on custom forks
+of the associated crates. However, various PRs have been filed upstream
+to build out a robust interchange between them, with the hope of mainline compatibility
+\- and a corresponding crates.io release - sometime in the future.
+
+In particular, [@eddyb] deserves special thanks for his work on the [rust-gpu] side,
+which has enabled and informed many of the improvements tabled for the next release,
+and greatly accelerated the process of making Rust a viable shading language
+for users of Bevy and WGPU.
+
+_Discussion: [/r/bevy](https://reddit.com/r/bevy/comments/11hrnmz/bevy_rustgpu_joins_the_fray)_
+
+[Bevy Rust-GPU]: https://github.com/bevy-rust-gpu
+[rust-gpu]: https://github.com/EmbarkStudios/rust-gpu
+[@Shfty]: https://github.com/Shfty
+[@eddyb]: https://github.com/eddyb
+
+### [rust-gpu-sdf]
+
+{{ image_figure(
+    alt="3d-distance-field"
+    src="rust-gpu-sdf.gif"
+    caption="An implicit surface defined compositionally, raymarched, and shaded entirely in Rust") }}
+
+Announcing [rust-gpu-sdf], by [@Shfty]; a no-std signed distance field library
+designed for use on both CPU and GPU.
+
+[Signed distance fields][sdf-wiki] are a powerful computational tool
+that allows a surface to be represented by a function from position to distance.
+This has [intuitive applications][raymarchingdf] in various domains such as rendering,
+collision, meshing, and volume modeling, providing the means to represent analytically
+smooth geometry, dynamic morphing (as pictured), and various other effects
+that would traditionally require specialized tools to model.
+
+[rust-gpu-sdf] aims to enumerate this domain to the fullest extent allowed
+by Rust's type system, lifting its traditionally monolithic implementation style
+into a set of intuitive composable operators, and leveraging a natural synergy
+with functional programming to provide powerful compositional tools.
+
+Contrary to its working title, [rust-gpu-sdf] is actually [rust-gpu]-agnostic,
+so can be used anywhere Rust can;
+it's presently named as such due to being built as the primary consumer of [bevy-rust-gpu],
+with a view to providing a performant and compositional way to compile SDFs
+into SPIR-V for rendering on the GPU.
+
+It's presently in a heavy-development prerelease state, so watch this space!
+
+[rust-gpu-sdf]: https://github.com/bevy-rust-gpu/rust-gpu-sdf
+[bevy-rust-gpu]: https://github.com/bevy-rust-gpu
+[sdf-wiki]: https://en.wikipedia.org/wiki/Signed_distance_function
+[raymarchingdf]: https://iquilezles.org/articles/raymarchingdf
+
+### [Pixelate Mesh][pixelate-mesh-ann]
+
+![Differently pixelated foxes](foxes.jpg)
+
+Jan Hohenheim ([@janhohenheim]) recently published a new crate called [pixelate_mesh].
+It is a Bevy plugin that provides a Pixelate component that one can add to any
+entity holding a mesh or a scene, which it will then pixelate without any post-processing.
+The idea is to recreate the effect seen in [Prodeus].
+
+[pixelate_mesh]: https://github.com/janhohenheim/pixelate_mesh
+[pixelate-mesh-ann]: https://reddit.com/r/bevy/comments/11qenq3/pixelate_mesh
+[Prodeus]: https://youtube.com/watch?v=Vb-hPYOIwMw
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Combine&Conquer v0.5][cnc-05] brings multi cursor support,
+    the ability to turn structures on/off,
+    and a view that shows your factory’s production stats.
+  - [bevy-rust-wasm-experiments] is a small video game with Bevy that compiles
+    both to desktop and WASM and showcases how you can get input
+    from your smartphone's accelerometer.
+  - [vustnexus] is a side-scroller about surviving and defeating the infect
+    of the Vust Swarm!
+  - [The Beat Of Space][beat-space] is a space-themed rhythm game
+    built with [macroquad].
+  - [Pirate Annihilation posted the second YouTube devlog][prite-ann]
+    about the switch from 2D to 3D, hexagonal map, and new camera.
+- Other learning material updates:
+  - [PhaestusFox posted more YouTube videos][PhaestusFox] about Bevy.
+  - [s0lly shared a video on creating transparent windows using Bevy][tut-transp-window].
+  - [An article about creating a Snake game][tut-wasm-snake]
+    for the browser with WASM and Rust.
+  - [@whoisryosuke released a tutorial][whoisryosuke-tut-egui]
+    on getting started with egui in Rust.
+- Other engine updates:
+  - [Tetra v0.8][tetra-v0-8] brings a bunch of small API improvements
+    and bugfixes. The engine is still in maintainence-only mode though.
+- Other tooling updates:
+  - [@Setzer22 shared a demo][blackjack-vid] of how smooth subdivision works
+    in the Blackjack editor.
+  - [Epic Asset Manager][epic-am] is an unofficial client to install Unreal Engine,
+    download and manage purchased assets, projects, plugins and games
+    from the Epic Games Store.
+  - Asahi Linux (Linux distro for Apple Silicon Macs)
+    [uses Rust in their Vulkan drivers][asahi-vulkan].
+  - [forerunner] is a WIP storytelling platform for composing Souls-like Action-RPGs
+    using the cloud infrastructure and Pixar's USD as the core parts.
+- Other library updates:
+  - [winit-block-on] is an adaptor that allows one to easily block on futures
+    using winit as a reactor.
+  - [tinyaudio][tinyaudio-ann] is a cross-platform, easy-to-use,
+    low-level audio output library from the creator of the Fyrox engine.
+  - [faer v0.5][faer-v05] brings a new SVD module, which implements the singular
+    value decomposition for real matrices
+  - [Bevy Hanabi v0.6][hanabi-v06] brings a new property-based architecture for
+    more control at runtime and also an optimized GPU buffer
+    with Attribute-based particle layout.
+
+[cnc-05]: https://buckmartin.de/combine-and-conquer/2023-03-08-v0.5.0.html
+[bevy-rust-wasm-experiments]: https://reddit.com/r/bevy/comments/11o5pve/bevy_wasm_and_accelerometer
+[vustnexus]: https://twitter.com/SethMadDev/status/1631357764495630336
+[beat-space]: https://reddit.com/r/rust_gamedev/comments/11kcgcj/beat_of_space
+[macroquad]: https://github.com/not-fl3/macroquad
+[prite-ann]: https://youtube.com/watch?v=udR3kzrDnAc
+[PhaestusFox]: https://youtube.com/@PhaestusFox/videos
+[tut-transp-window]: https://youtube.com/watch?v=gymEcIAi_J8
+[tut-wasm-snake]: https://medium.com/comsystoreply/creating-a-small-game-with-webassembly-and-rust-20c6945efa1d
+[whoisryosuke-tut-egui]: https://whoisryosuke.com/blog/2023/getting-started-with-egui-in-rust
+[tetra-v0-8]: https://twitter.com/17cupsofcoffee/status/1636706157568962563
+[blackjack-vid]: https://mastodon.gamedev.place/@Setzer22/110011331330540420
+[epic-am]: https://github.com/AchetaGames/Epic-Asset-Manager
+[asahi-vulkan]: https://reddit.com/r/rust/comments/11wosur/vulkan_on_asahi_linux
+[forerunner]: https://dev.to/heavyrain266/forerunner-a-storytelling-platform-for-composing-souls-like-action-rpgs-4p9k
+[winit-block-on]: https://github.com/notgull/winit-block-on
+[tinyaudio-ann]: https://reddit.com/r/rust/comments/11rei24/ann_tinyaudio
+[faer-v05]: https://reddit.com/r/rust/comments/122823y/faer_v05
+[hanabi-v06]: https://twitter.com/djeedai/status/1634129348746772481
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["My unsorted and unsolicited thoughts on Rust for game development"][red-unsolicited]
+  - ["Is WGPU actually a good idea yet?"][red-is-wgpu]
+
+[red-unsolicited]: https://reddit.com/r/rust_gamedev/comments/125myuf/my_thoughts_on_rust_for_gamedev
+[red-is-wgpu]: https://reddit.com/r/rust_gamedev/comments/11f3rjq/is_wgpu_actually_a_good_idea
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+- [Ambient's "good first issue" issues][ambient-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/134ge7q/rust_gamedev_44_march_2023),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/110292471915457618),
+[Twitter](https://twitter.com/rust_gamedev/status/1652952371851345920),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/044/infinilands.gif b/content/news/044/infinilands.gif
new file mode 100644
index 000000000..92727c4d7
Binary files /dev/null and b/content/news/044/infinilands.gif differ
diff --git a/content/news/044/jumpy.gif b/content/news/044/jumpy.gif
new file mode 100644
index 000000000..0b027c49f
Binary files /dev/null and b/content/news/044/jumpy.gif differ
diff --git a/content/news/044/logic-projects-thumbnail.png b/content/news/044/logic-projects-thumbnail.png
new file mode 100644
index 000000000..aea6ce8db
Binary files /dev/null and b/content/news/044/logic-projects-thumbnail.png differ
diff --git a/content/news/044/maginet.gif b/content/news/044/maginet.gif
new file mode 100644
index 000000000..6f8bc9d6f
Binary files /dev/null and b/content/news/044/maginet.gif differ
diff --git a/content/news/044/matchbox.png b/content/news/044/matchbox.png
new file mode 100644
index 000000000..281505769
Binary files /dev/null and b/content/news/044/matchbox.png differ
diff --git a/content/news/044/nes-programming-in-rust-cover.jpg b/content/news/044/nes-programming-in-rust-cover.jpg
new file mode 100644
index 000000000..20d269d5d
Binary files /dev/null and b/content/news/044/nes-programming-in-rust-cover.jpg differ
diff --git a/content/news/044/orlop.png b/content/news/044/orlop.png
new file mode 100644
index 000000000..897b125f4
Binary files /dev/null and b/content/news/044/orlop.png differ
diff --git a/content/news/044/r_place_render.jpg b/content/news/044/r_place_render.jpg
new file mode 100644
index 000000000..20e1b26e6
Binary files /dev/null and b/content/news/044/r_place_render.jpg differ
diff --git a/content/news/044/rerun.gif b/content/news/044/rerun.gif
new file mode 100644
index 000000000..c5a0eaba0
Binary files /dev/null and b/content/news/044/rerun.gif differ
diff --git a/content/news/044/ruffle-text.jpg b/content/news/044/ruffle-text.jpg
new file mode 100644
index 000000000..9abc9e12e
Binary files /dev/null and b/content/news/044/ruffle-text.jpg differ
diff --git a/content/news/044/rust-gpu-sdf.gif b/content/news/044/rust-gpu-sdf.gif
new file mode 100644
index 000000000..3332e14c1
Binary files /dev/null and b/content/news/044/rust-gpu-sdf.gif differ
diff --git a/content/news/044/screen-ball.png b/content/news/044/screen-ball.png
new file mode 100644
index 000000000..bfffaf29d
Binary files /dev/null and b/content/news/044/screen-ball.png differ
diff --git a/content/news/044/shifting_chamber.png b/content/news/044/shifting_chamber.png
new file mode 100644
index 000000000..f33e09a7b
Binary files /dev/null and b/content/news/044/shifting_chamber.png differ
diff --git a/content/news/044/tarsila.png b/content/news/044/tarsila.png
new file mode 100644
index 000000000..c345b239d
Binary files /dev/null and b/content/news/044/tarsila.png differ
diff --git a/content/news/044/tiger.png b/content/news/044/tiger.png
new file mode 100644
index 000000000..b874eb31e
Binary files /dev/null and b/content/news/044/tiger.png differ
diff --git a/content/news/044/tiny-glade.gif b/content/news/044/tiny-glade.gif
new file mode 100644
index 000000000..cf163412a
Binary files /dev/null and b/content/news/044/tiny-glade.gif differ
diff --git a/content/news/044/tunnet.jpg b/content/news/044/tunnet.jpg
new file mode 100644
index 000000000..f8e1d8ba9
Binary files /dev/null and b/content/news/044/tunnet.jpg differ
diff --git a/content/news/044/veloren.jpg b/content/news/044/veloren.jpg
new file mode 100644
index 000000000..ca1a9cc04
Binary files /dev/null and b/content/news/044/veloren.jpg differ
diff --git a/content/news/044/wor-capsule.jpg b/content/news/044/wor-capsule.jpg
new file mode 100644
index 000000000..22529982d
Binary files /dev/null and b/content/news/044/wor-capsule.jpg differ
diff --git a/content/news/044/zombie-demo-game.png b/content/news/044/zombie-demo-game.png
new file mode 100644
index 000000000..9263cc5fd
Binary files /dev/null and b/content/news/044/zombie-demo-game.png differ
diff --git a/content/news/045/ambient.gif b/content/news/045/ambient.gif
new file mode 100644
index 000000000..65f307088
Binary files /dev/null and b/content/news/045/ambient.gif differ
diff --git a/content/news/045/backpack.jpg b/content/news/045/backpack.jpg
new file mode 100644
index 000000000..8da75fe34
Binary files /dev/null and b/content/news/045/backpack.jpg differ
diff --git a/content/news/045/bevy-tdd.png b/content/news/045/bevy-tdd.png
new file mode 100644
index 000000000..be872d23b
Binary files /dev/null and b/content/news/045/bevy-tdd.png differ
diff --git a/content/news/045/bevy_github_actions.png b/content/news/045/bevy_github_actions.png
new file mode 100644
index 000000000..c8bc8bd63
Binary files /dev/null and b/content/news/045/bevy_github_actions.png differ
diff --git a/content/news/045/bevy_roguelike.gif b/content/news/045/bevy_roguelike.gif
new file mode 100644
index 000000000..8fce6da8a
Binary files /dev/null and b/content/news/045/bevy_roguelike.gif differ
diff --git a/content/news/045/bevyjam3.jpg b/content/news/045/bevyjam3.jpg
new file mode 100644
index 000000000..7a46b6f24
Binary files /dev/null and b/content/news/045/bevyjam3.jpg differ
diff --git a/content/news/045/cybergate.jpg b/content/news/045/cybergate.jpg
new file mode 100644
index 000000000..0f377be95
Binary files /dev/null and b/content/news/045/cybergate.jpg differ
diff --git a/content/news/045/explore_gol_drawing.gif b/content/news/045/explore_gol_drawing.gif
new file mode 100644
index 000000000..2933a4b8e
Binary files /dev/null and b/content/news/045/explore_gol_drawing.gif differ
diff --git a/content/news/045/flappy-bird-ai.png b/content/news/045/flappy-bird-ai.png
new file mode 100644
index 000000000..44902211f
Binary files /dev/null and b/content/news/045/flappy-bird-ai.png differ
diff --git a/content/news/045/football.jpg b/content/news/045/football.jpg
new file mode 100644
index 000000000..0c0ed9422
Binary files /dev/null and b/content/news/045/football.jpg differ
diff --git a/content/news/045/gamedev-meetup.png b/content/news/045/gamedev-meetup.png
new file mode 100644
index 000000000..af9706bea
Binary files /dev/null and b/content/news/045/gamedev-meetup.png differ
diff --git a/content/news/045/godot-rust-gdext.png b/content/news/045/godot-rust-gdext.png
new file mode 100644
index 000000000..3c3110bee
Binary files /dev/null and b/content/news/045/godot-rust-gdext.png differ
diff --git a/content/news/045/graphite.png b/content/news/045/graphite.png
new file mode 100644
index 000000000..e05688259
Binary files /dev/null and b/content/news/045/graphite.png differ
diff --git a/content/news/045/hydrof.jpg b/content/news/045/hydrof.jpg
new file mode 100644
index 000000000..c5a5285b7
Binary files /dev/null and b/content/news/045/hydrof.jpg differ
diff --git a/content/news/045/idu.jpeg b/content/news/045/idu.jpeg
new file mode 100644
index 000000000..67cdb5ed9
Binary files /dev/null and b/content/news/045/idu.jpeg differ
diff --git a/content/news/045/imagemaniac.jpg b/content/news/045/imagemaniac.jpg
new file mode 100644
index 000000000..a629233e0
Binary files /dev/null and b/content/news/045/imagemaniac.jpg differ
diff --git a/content/news/045/index.md b/content/news/045/index.md
new file mode 100644
index 000000000..76897ae2d
--- /dev/null
+++ b/content/news/045/index.md
@@ -0,0 +1,882 @@
++++
+title = "This Month in Rust GameDev #45 - April 2023"
+transparent = true
+date = 2023-05-31
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 45th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Rust GameDev Meetup
+
+![Gamedev meetup poster](gamedev-meetup.png)
+
+The 26th Rust Gamedev Meetup took place in March. You can watch the recording
+of the meetup [here on Youtube][gamedev-meetup-video].
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[gamedev-meetup-video]: https://youtube.com/watch?v=Vq60NvWy8Io
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+
+### [Bevy Jam 3 Results][bevy-jam-results]
+
+![list of winners](bevyjam3.jpg)
+
+Voting on the [Bevy Jam 3][bevy-jam] has finished! It was a
+week-long event, where the goal was to make a game in
+[Bevy Engine][bevy-engine], the free and open-source game engine
+built in Rust. The theme was 'Side Effects'.
+
+- 1: [LinkSider](https://kuviman.itch.io/linksider)
+  by kuviman, daivy, shadow-crusherz
+- 2: [Neon Breach: Tower Defence](https://louisnivrat.itch.io/neon-breach-tower-defence)
+  by louisNivrat
+- 3: [Battle for Rattoria](https://jabuwu.itch.io/battle-for-rattoria) by jabuwu
+
+The jam had a solid turnout with 353 participants, 78 submissions, and 2,158 ratings!
+A lot of the submissions have a web build so it's easy to try them out yourself.
+
+The [full results can be found on itch.io][bevy-jam-results].
+
+[bevy-jam]: https://itch.io/jam/bevy-jam-3
+[bevy-jam-results]: https://itch.io/jam/bevy-jam-3/results
+[bevy-engine]: https://bevyengine.org/
+
+### [Rusty Jam 3][rustyjam3-itch]
+
+Another Rusty Jam starts on May 21st!
+
+It's a great chance to try out some new Rusty tech, form a team of like-minded rustaceans,
+and feel what a full cycle of making a game in Rust feels like in miniature!
+
+This jam focuses more on using Rust than anything else.
+That means you aren't restricted on your design, music, or graphics,
+as long as you use Rust to make it!
+
+The optional-to-use theme for the jam is going to be announced
+in [the jam's Discord][rustyjam3-dis] and pinned in the community section.
+While you're waiting for the theme, you can start looking for a team
+in the looking-for-team Discord channel.
+If you want solo though, that's fine too.
+
+[rustyjam3-itch]: https://itch.io/jam/rusty-jam-3
+[rustyjam3-dis]: https://discord.gg/8dUQJFFmxG
+
+## Game Updates
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="hundreds of npcs smoothly interpolating"
+    src="cybergate.jpg"
+    caption="hundreds of npcs smoothly interpolating") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]),
+an ambitious multiplayer project in development by CyberSoul,
+aims to invite players into a constantly evolving universe.
+Harnessing the power of procedural generation and artificial intelligence,
+this work-in-progress aspires to provide an engaging experience
+that emphasizes exploration and discovery across its diverse worlds.
+
+The latest updates to CyberGate include:
+
+- Networking Interpolation version 2:
+  increased reliability over frame rate changes,
+  improved accuracy of object motion and detail by ~20%,
+  and objects update 12-45 milliseconds faster.
+- Server compilation was drastically simplified (100x faster).
+- Improved browser server process, to have more consistent behavior.
+- Improved mouse lock on browsers.
+- Simplified code related to state synchronization.
+- Significant gameplay changes and bug fixes.
+
+They are currently working on universe generation alghorithms for version 8.0.
+Participate [by joining the Discord server][cybergate-dis].
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Online Matchmaking Menu Page"
+    src="jumpy.png"
+    caption="Online Matchmaking") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+In the last month, Jumpy released [v0.7.0][jumpy_v0.7.0] with support for online
+and LAN network games! Networking has been a long time coming, with many
+architecture decisions being made specifically with networking in mind. While
+network performance may still need to be tweaked, and there are still some bugs
+to fix, the proof-of-concept was a success. You can start matches on your local
+network, or online, with no configuration necessary!
+
+The Fish Folk game series has a [pre-launch page up on Kickstarter][jumpy_ks],
+expected to go public in mid-May.
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[jumpy_v0.7.0]: https://github.com/fishfolk/jumpy/releases/tag/v0.7.0
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]: https://spicylobster.itch.io
+[jumpy_ks]: https://www.kickstarter.com/projects/erlendsh/fish-folk
+
+### [Thetawave][thetawave-itch]
+
+![thetawave-gameplay](thetawave.gif)
+
+Thetawave is an open-source, physics based, space shooter game.
+This month, Thetawave 0.1.0 was [released][thetawave-release].
+The main features of this update were:
+
+- local multiplayer,
+- a second character,
+- many sprite adjustments,
+- and many gameplay tweaks from in-person playtesting with
+  the [thetawave arcade cabinet][thetawave-arcade].
+
+The easiest way to play the most up to date version of Thetawave
+on your machine is to download it through the
+[Spicy Launcher][spicy-launcher]. Otherwise, you can play the game in your
+browser on the [itch.io page][thetawave-itch].
+
+Feel free to reach out in the #thetawave channel in
+the [Spicy Lobster discord server][spicy-discord] if you are
+interested in contributing.
+
+[thetawave-itch]: https://metalmancy.itch.io/thetawave
+[thetawave-release]: https://github.com/thetawavegame/thetawave/releases/tag/v0.1.0
+[thetawave-arcade]: https://twitter.com/carlosupina/status/1650200385485774850
+[spicy-launcher]: https://github.com/spicylobstergames/SpicyLauncher/releases/tag/v0.3.0
+[spicy-discord]: https://discord.gg/52WCcgJkcE
+
+### [Way of Rhea][wor]
+
+[![Steam Puzzle Fest April 24 - May 1 Way of Rhea](wor-puzzle-fest.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle game with hard puzzles and forgiving
+mechanics being produced by [@masonremaley] in a custom Rust engine.
+You can support development by [checking out the free demo and wishlisting on Steam][wor]
+or [signing up for the mailing list][wor-mail]!
+
+Recent updates:
+
+- Time controls (pause, play, fastforward)
+- Staves switch in place so that crabs don't inadvertently move them when cycling
+- Increased drag on various physics objects to prevent bouncing over targets
+- Increased staff throw velocity to make it easier to throw staves off ledges
+- Improved interactive hover visuals on staves
+- Fixed bug where you could take objects from the crab while he's riding the elevator
+- Fixed edge cases around saving on load screens
+- Fixed edge cases with sleep system and pausing
+- More flexible save points in crab puzzles (save points can now conditionally
+  trigger only when a crab is present)
+- More work on end game
+
+Also, Way of Rhea was part of the [Steam Puzzle Fest][wor-puzzle-fest]!
+
+[@masonremaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n45
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[wor-puzzle-fest]: https://store.steampowered.com/category/puzzle_matching
+
+### [l1t]
+
+![game title in ascii art as a game's level](l1t.png)
+
+[l1t] by [@alex-laycalvert] is a WIP terminal game about
+shooting lasers and lighting statues to solve puzzles.
+
+In each level, you have to configure mirrors, lasers, and other items
+to light up all the statues while avoiding any mishaps like shooting
+yourself with a laser beam.
+
+There's only 4 core levels right now but in addition to adding more
+the developer is working on a repository system where web servers
+can host level files and users can subscribe to them.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/12yzet7/l1t)_
+
+[l1t]: https://github.com/alex-laycalvert/l1t
+[@alex-laycalvert]: https://aldevelop.com
+
+### [Maginet]
+
+![new menu screenshot](maginet.png)
+
+[Maginet] by [Evrim] is a fast-paced turn-based strategy game
+with local/versus-ai/online play on PC/mobile
+where two guilds of mages battle each other.
+
+[This month's updates][maginet-log] include:
+
+- New mage and board sprites from [@MrmoTarius].
+- New main menu that brings the ability to switch between loadout modes.
+- Better AI heuristics for evaluating the board.
+- Better health UI.
+
+The developers are looking for feedback from testers.
+
+[Evrim]: https://twitter.com/evrimzone
+[Maginet]: https://evrimzone.itch.io/maginet
+[@MrmoTarius]: https://twitter.com/MrmoTarius
+[maginet-log]: https://evrimzone.itch.io/maginet/devlog/519667/grand-ceremony-for-the-beta
+
+### [Idu][idu-itch]
+
+![tree branches on top of water](idu.jpeg)
+
+[Idu][idu-itch] ([Discord][idu_discord]) is a strategic sandbox game about growing
+plants that wish to reclaim nature, developed by [Elina Shakhnovich][eli_mastodon]
+and [Johann Tael][johann_mastodon] featuring a bespoke Vulkan-based engine in Rust.
+
+This month [a new demo was released][idu-new-demo]:
+
+- New inventory and interaction system.
+- Office file cabinets for keeping things tidy.
+- Converters convert signals from nearby flowers into colorful blocks.
+
+[idu_discord]: https://discord.gg/MeGauteMj3
+[eli_mastodon]: https://mastodon.gamedev.place/@eli
+[johann_mastodon]: https://mastodon.gamedev.place/@johann
+[idu-itch]: https://epcc.itch.io/idu
+[idu-new-demo]: https://epcc.itch.io/idu/devlog/513652/demo-version-10-flower-tuned-antennas
+
+### [Tiny Glade]
+
+{{ image_figure(
+    alt="three small windows are merged into one bigger one"
+    src="tglade.gif"
+    caption="Demo of the gothic windows system") }}
+
+[Tiny Glade] ([Twitter][tglade-twi], [Youtube][tglade-yt]) is a small relaxing game
+about doodling castles.
+
+[This month's updates][tglade-post] include:
+
+- More brick colors.
+- New gothic windows style.
+- Ability to merge windows together into a bigger one.
+- New arch algorithm that works better for rough terrain.
+- The project's beta testing should start this summer
+  and the release should happen somewhere in 2024.
+
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade
+[tglade-twi]: https://twitter.com/PounceLight
+[tglade-yt]: https://youtube.com/@pouncelight
+[tglade-post]: https://store.steampowered.com/news/app/2198150?emclan=103582791472800070&emgid=3682298662732600151
+
+### [Hydrofoil Generation][hgs]
+
+![NYX awards banners on top from a screenshot from the game](hydrof.jpg)
+
+[Hydrofoil Generation][hgs]
+([Steam][hgs_steam], [Facebook][hgs_facebook], [Discord][hgs_discord])
+is a realistic sailing/foiling inshore simulator in development for PC/Steam
+that puts you in the driving seat of modern competitive sailing
+that is available in Early Access on Steam.
+
+[This month's updates][hgs_allnews] include:
+
+- A brand new location to test your hydrofoil skills: [Bermuda][hgs_video].
+- An improved protocol for line crossing detection is now implemented,
+  which means that Hydrofoil Generation is now even more fair and accurate.
+- Also, [the game won][hgs_award] two Silver awards for the PC Game:
+  Racing and Simulation category.
+
+[hgs]: https://hydrofoil-generation.com
+[hgs_facebook]: https://facebook.com/HydrofoilGenerationSailing/
+[hgs_discord]: https://discord.gg/DtKgt2duAy/
+[hgs_steam]: https://store.steampowered.com/app/1448820/Hydrofoil_Generation
+[hgs_award]: https://store.steampowered.com/news/app/1448820/view/3723957592121893508
+[hgs_allnews]: https://steamcommunity.com/app/1448820/allnews
+[hgs_video]: https://youtube.com/watch?v=qUggXlUfflY
+
+## Engine Updates
+
+### [Ambient][ambient-github]
+
+{{ image_figure(
+    alt="a set of cool and mostly physics-centered demos"
+    src="ambient.gif"
+    caption="A 10-second preview of what's possible with Ambient 0.2") }}
+
+[Ambient 0.2][ambient-blog] is now out after two months of development.
+Ambient is an open-source runtime for building high-performance multiplayer
+games and 3D applications powered by WebAssembly, Rust and WebGPU. Projects
+consist of assets and logic built around the currently Rust-only Ambient API,
+and these projects can be loaded by any compatible runtime running on any
+platform.
+
+This release brings a few major features, including basic support for playing
+sounds, being able to run WASM on the client (in addition to the server), and
+automatic proxying of servers by the Ambient Proxy. This allows anyone with
+the URL to connect to a server, without having to worry about port forwarding.
+
+Finally, Ambient UI can now be used from guest code. Combined with networking
+and ECS, this unlocks an exciting new capability: multiplayer UI! The blog post
+walks through the creation of a basic multiplayer beat sequencer using these
+features.
+
+Check out [the GitHub][ambient-github] to get started with building for/or
+on Ambient yourself, or chat with the developers and other explorers on
+[the Discord][ambient-discord].
+
+_Discussion: [/r/rust][ambient-reddit], [Hacker News][ambient-hn]_
+
+[ambient-github]: https://github.com/AmbientRun/Ambient
+[ambient-blog]: https://www.ambient.run/post/ambient-0-2
+[ambient-reddit]: https://reddit.com/r/rust/comments/138ii11/ambient_02
+[ambient-hn]: https://news.ycombinator.com/item?id=35828165
+[ambient-discord]: https://discord.gg/ambient
+
+### [godot-rust][gd-github]
+
+![godot-rust GDExtension logo](godot-rust-gdext.png)
+
+The Godot 4 binding for Rust, also known as [gdext][gd-gdext], now features
+[a reworked website][gd-website]. The site acts as a hub to all the relevant
+resources and community platforms. It also hosts auto-generated API docs
+from `cargo doc`, for latest snapshots and active pull requests.
+
+On the library side, April has brought [lots of improvements][gd-pulse]
+regarding engine interaction, notably:
+
+- FFI bugfixes ([#234][gd-234], [#249][gd-249], [#250][gd-250])
+- Class constants and notifications ([#219][gd-219], [#223][gd-223])
+- `Callable` support ([#231][gd-231])
+- Initial threading experiments ([#212][gd-212])
+
+For the near future, the plan is to iron out the new website and CI, as well
+as some QoL improvements such as better compile times.
+
+[gd-github]: https://github.com/godot-rust
+[gd-gdext]: https://github.com/godot-rust/gdext
+[gd-website]: https://godot-rust.github.io
+[gd-pulse]: https://github.com/godot-rust/gdextension/pulse/monthly
+[gd-212]: https://github.com/godot-rust/gdextension/issues/212
+[gd-219]: https://github.com/godot-rust/gdextension/issues/219
+[gd-223]: https://github.com/godot-rust/gdextension/issues/223
+[gd-231]: https://github.com/godot-rust/gdextension/issues/231
+[gd-234]: https://github.com/godot-rust/gdextension/issues/234
+[gd-250]: https://github.com/godot-rust/gdextension/issues/250
+[gd-249]: https://github.com/godot-rust/gdextension/issues/249
+
+## Learning Material Updates
+
+### [Bevy <3 GitHub Actions][bevy-github-actions-blog]
+
+![bevy logo](bevy_github_actions.png)
+
+[Piotr Siuszko][piotr-siuszko] wrote [a blog post][bevy-github-actions-blog]
+explaining how to automate building and publishing game written with Bevy
+to GitHub Pages using GitHub Actions.
+
+[piotr-siuszko]: https://mastodon.gamedev.place/@MevLyshkin
+[bevy-github-actions-blog]: https://mevlyshkin.com/blog/bevy-github-actions
+
+### [Exploring Bevy's Game Of Life Example][exploring-gol-blog]
+
+{{ image_figure(
+    alt="red dots or black bg"
+    src="explore_gol_drawing.gif"
+    caption="Game of Life Simulation") }}
+
+[Yendor][yendor] published [a mini-tutorial series][exploring-gol-blog]
+exploring compute shaders in Bevy using their [Game of Life example][bevy-gol]
+and adding some new features to it: camera controller, wrapping simulation, and
+drawing on the simulation.
+
+[yendor]: https://github.com/lecoqjacob
+[exploring-gol-blog]: https://lecoqjacob.github.io/bevy_shader_playground/bevy_gol_example/index.html
+[bevy-gol]: https://github.com/bevyengine/bevy/blob/main/examples/shader/compute_shader_game_of_life.rs
+
+### [Test-Driven Development in Rust Game Development with Bevy][bevy-tdd]
+
+![TDD in Rust game dev with bevy](bevy-tdd.png)
+
+[Edgardo Carreras writes about his experience][bevy-tdd] with Test-Driven Development
+while developing a game engine in Rust using Bevy. TDD is an iterative software
+development approach that involves writing automated tests before writing the code.
+In the article, Edgardo explains the benefits of TDD and how it can help in game
+development. He also shares his testing process, including how he used Bevy's ECS
+architecture to write tests for his game engine.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/12bnzin/bevy_tdd)_
+
+[bevy-tdd]: https://edgardocarreras.com/blog/tdd-in-rust-game-engine-bevy
+
+### [Bevy Roguelike Tutorial][bevy-roguelike-blog]
+
+![a couple characters moving around and interacting](bevy_roguelike.gif)
+
+[@maciekglowka][bevy-roguelike-mastodon] started a blog series on creating a
+roguelike game using Bevy Engine.
+There are currently seven parts, focusing mostly on setting up a basic
+game architecture. The topics discussed so far include: separating logic from
+graphics in the ECS; designing a turn-based game loop; command pattern
+for the unit actions.
+
+The first part of the series can be found [here][bevy-roguelike-blog].
+
+_Discussions:
+[/r/roguelikedev](https://reddit.com/r/roguelikedev/comments/12rvj30/creating_a_roguelike_in_bevy)_
+
+[bevy-roguelike-mastodon]: https://mastodon.gamedev.place/@maciekglowka
+[bevy-roguelike-blog]: https://maciejglowka.com/blog/bevy-roguelike-tutorial-devlog-part-1
+
+### [PhaestusFox's Bevy Videos][@PhaestusFox]
+
+![phaestusfox youtube](phaestusfox.png)
+
+[@PhaestusFox] released a bunch of new Bevy tutorials
+on Youtube about all things Bevy.
+Level up your game dev skills with PhaestusFox's tutorials and learn more from
+very basic how-to's to more complex full tutorials like how to make a platformer
+in Bevy.
+
+[@PhaestusFox]: https://youtube.com/@PhaestusFox
+
+### [Katamari for the BevyJam3][katamari-gamejam-blog]
+
+![Katamari gif](katamari.gif)
+
+[Ryosuke][whoisryosuke] recently participated in a Bevy game jam.
+Ryosuke's goal was to create a game inspired by Katamari Damacy, an old
+PlayStation 2 game. In the game, a prince rollsup objects to make planet
+sized balls.
+Ryosuke shares their [learning process][katamari-gamejam-blog] of the almost-finished
+Katamari clone running on Windows. They cover topics like the physics library and
+how they created the user interface using a tool egui.
+It is also suggested to have some basic knowledge of Bevy game engine
+before you dive into the article.
+
+[whoisryosuke]: https://mastodon.gamedev.place/@whoisryosuke
+[katamari-gamejam-blog]: https://whoisryosuke.com/blog/2023/making-katamari-for-bevy-game-jam
+
+### [3D MIDI Piano Using Bevy][3dpiano-blog]
+
+![3D Midi Piano](piano.gif)
+
+[Ryosuke][whoisryosuke] has also recently published [a tutorial][3dpiano-blog]
+on how to create a 3D MIDI piano visualizer app using the
+Bevry game engine in Rust. They shared their learning experience, including
+reading MIDI input with Rust and integrating it with the game engine.
+
+[3dpiano-blog]: https://whoisryosuke.com/blog/2023/3d-midi-piano-using-rust-and-bevy
+
+### [DOOM maps to SVG to laser cutter][svg-cutter-blog]
+
+![Blender result with colored vertical layers](laser-cutter.png)
+
+[Theor][theor-author] became interested in the data format of the classic game Doom
+and decided to write Rust code to extract its maps and convert them into vector
+graphics for laser cutting.
+Theor's [blog post][svg-cutter-blog] explores Doom specifics, geometry, writing SVG,
+rendering and triangulation.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/12mlsfj/lasercut_doom)_
+
+[svg-cutter-blog]: https://theor.xyz/doom-maps-laser-cut/
+[theor-author]: https://github.com/theor
+
+### [Making a Strategy Game][sergiorodrigo-tut]
+
+![strategy game bevy console](strategy-game.png)
+
+[Sergio Rodrigo Royo][sergiorodrigo] started [a new series][sergiorodrigo-tut] about
+creating a 2D turn-based strategy game in Rust. In this tutorials one will learn
+how to's such as: adding differents units, sound effects, providing multiplayer support,
+and designing a simple UI.
+
+[sergiorodrigo]: https://srodrigoroyo.com/about/
+[sergiorodrigo-tut]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-1
+
+### [Rendering Football Data in 3D][3d-football-rs]
+
+![3d football](football.jpg)
+
+[UnravelSports][unravelsports] recently presented their [latest project][3d-football-rs].
+The project is a proof-of-concept to show football data in 3D and the ultimate goal
+is to utilize this feature to animate body-pose data and potentially connect it
+to a VR in the future.
+
+Check out a recent [PySport talk][football-talk] for more in-depth info.
+
+[3d-football-rs]: https://github.com/UnravelSports/rs-football-3d
+[unravelsports]: https://unravelsports.github.io/
+[football-talk]: https://youtube.com/watch?v=VwatoPOKIl8
+
+### [AI learns to play flappy bird][flappy-bird-ai]
+
+![Flappy bird](flappy-bird-ai.png)
+
+[bones-ai][bones-ai-github] recently shared [their project][flappy-bird-ai],
+which is a neuro-evolution simulation of an AI playing popular game Flappy Bird.
+
+In the [youtube video][flappybird-youtube-link] 1000 AI agents are released into
+the game environment of Flappy Bird with the goal of learning how to survive and
+stay alive for as long as possible.
+
+[bones-ai-github]:https://github.com/bones-ai
+[flappy-bird-ai]: https://github.com/bones-ai/rust-flappy-bird-ai
+[flappybird-youtube-link]: https://www.youtube.com/watch?v=Ea_N1CJwMR8
+
+## Tooling Updates
+
+### [Rustracer][rustracer]
+
+[![Youtube screenshot: demo with a couple of cars inside a box](
+rustracer.jpg)][rustracer-0.2.0 demo]
+
+Rustracer, a PBR [glTF 2.0][glrf-2-0] renderer based on Vulkan ray-tracing.
+It can render (almost) any glTF 2.0 scene by pure path tracing
+at an interactive speed.
+Compared with rasterization-based glTF renderers, Rustracer needs some
+(scene-dependent) time for sample accumulation in exchange for global illumination.
+
+On top of that, the control panel provides a rich set of viewing options
+and debugging utilities.
+
+It also can serve as a glTF viewer or a reference renderer.
+
+The code base itself is a learning resource for [Ash] (Vulkan bindings in Rust),
+hardware ray tracing and glTF processing in Rust.
+
+[rustracer]: https://github.com/KaminariOS/rustracer
+[rustracer-0.2.0 demo]: https://youtube.com/playlist?list=PLD1H28onwV_kdxp1ajUL6riK_dNzMAXGj
+[Ash]: https://github.com/ash-rs/ash
+[glrf-2-0]: https://www.khronos.org/gltf
+
+### [Luminol][luminol]
+
+![tile map editor and other tool windows like command event editor](luminol.png)
+
+[Luminol][luminol] by [@speak2erase] and [@somedevfox] is a remake
+of the RPG Maker editor, based mostly off of [RPG Maker XP][RMXP]
+(aka RMXP), with the intent of creating a more modern, feature rich,
+and open source version of RMXP.
+
+RGSS, RMXP's runtime, has already been open sourced thanks to [mkxp].
+However, despite several attempts, no one has fully remade the editor.
+There are [some tools][r48] out there that cover some of its functionality,
+but none are user friendly, nor feature complete.
+
+RGSS is actually quite enjoyable to use. The actual editor though - not so much:
+dated and often unintuitive UI, extensibility issues,
+binary format that is allergic to source control,
+and arbitrary limits that never existed in previous versions.
+Luminol was born out of sheer frustration from dealing with these issues -
+and hopes to fix them!
+
+Luminol's key differences:
+
+- Completely GPU accelerated (RMXP is software rendered).
+- Edit multiple maps at the same time.
+- Multiple data formats.
+- Edit encrypted archives (rgssad).
+- Open-source.
+- Better user experience overall.
+
+Luminol is currently looking for contributors:
+[there is a lot to be done][luminol-issues].
+If you'd like to help contribute, please reach out to [@speak2erase]!
+
+[luminol]: https://github.com/Astrabit-ST/Luminol
+[luminol-issues]: https://github.com/Astrabit-ST/Luminol/issues
+[@speak2erase]: https://github.com/Speak2Erase
+[@somedevfox]: https://github.com/somedevfox
+[RMXP]: https://store.steampowered.com/app/235900/RPG_Maker_XP
+[mkxp]: https://github.com/Ancurio/mkxp
+[r48]: https://github.com/20kdc/gabien-app-r48
+
+### [Graphite][graphite-website]
+
+![Graphite logo](graphite.png)
+
+Graphite ([website][graphite-website], [GitHub][graphite-repo],
+[Discord][graphite-discord], [Twitter][graphite-twitter]) is a free,
+in-development raster and vector 2D graphics editor based around a Rust-powered
+node graph compositing engine.
+
+April's [sprint 25][graphite-sprint-25] developments:
+
+- Brushing up: The new Brush tool makes it possible to paint raster-based art.
+- Writing down: A refactor of the Text tool integrates typographic content in
+  the node graph. Finally, all artwork types are node-based.
+- Showing true colors: Node graph compositing now uses linear, not gamma,
+  color. Key new color adjustment nodes are added.
+- Laying the groundwork: Further engineering work prepares the node graph
+  language for GPU execution. And development continues toward in-graph layer
+  stack compositing.
+
+As always, new contributors are cordially invited to
+[get involved][graphite-contribute] and take on
+[approachable issues][graphite-approachable-issues] with help from the
+project's friendly and supportive developer community on Discord.
+
+[Open Graphite][graphite-editor] in your browser and start creating!
+
+[graphite-website]: https://graphite.rs
+[graphite-repo]: https://github.com/GraphiteEditor/Graphite
+[graphite-discord]: https://discord.graphite.rs
+[graphite-twitter]: https://twitter.com/GraphiteEditor
+[graphite-sprint-25]: https://github.com/GraphiteEditor/Graphite/milestone/25
+[graphite-approachable-issues]: https://github.com/GraphiteEditor/Graphite/labels/Good%20First%20Issue
+[graphite-editor]: https://editor.graphite.rs
+
+### [Image Maniac][im]
+
+![many images opened in one window](imagemaniac.jpg)
+
+[Image Maniac][im] is a cross-platform image viewer designed for game developers
+and other creative professionals. The project's features include:
+
+- Infinite canvas for drag-n-dropping many images onto the main window,
+  and view them all in a single, unified workspace.
+- Quick RGBA channel switching using number keys is usefil for
+  game developers who work with textures and materials.
+- Broad format support including PNG, JPG, BMP, DDS, TGA, KTX2, and HDR.
+- Focus on performance even with large files and multiple image at once.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/133ruqi/image_maniac)_
+
+[im]: https://github.com/AllenDang/img_maniac
+
+## Library Updates
+
+### [Backpack]
+
+{{ image_figure(
+    alt='left part is "crab simulator" game where the player gains an item
+right part is "clash of crabs" where player is able to use the item'
+    src="backpack.jpg"
+    caption="Minimalist schema for sharing items in different games") }}
+
+[Backpack] is an inventory system to share items between different games,
+for example:
+
+- Raise a crab in Crab Simulator,
+- Make it fight in Crab Shooter,
+- Cook it in Crab Cook...
+- Gain a crab skin in your favorite game!
+
+[Backpack] is in a pre-MVP state: a tech prototype is working.
+
+The project is not affiliated or related to Blockchain/NFTs:
+it uses a PostgreSQL DB to store users, games and items.
+Authentication is done via email/password,
+third party authentication via OAuth will be a future goal.
+An Authenticated user can create apps and add item definitions to these.
+Other users can get an independent instance of that item and modify its data.
+
+The next project milestone is
+2 minimalist interconnected games released by the end of 2023.
+
+[Backpack]: https://github.com/Vrixyz/backpack
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Combine&Conquer v0.5.2][cnc-052] brings
+    significant graphical improvements.
+  - exocave - an FPS about exploring a subterranean world -
+    [got a grappling hook][exocave] to ease the movement through caverns and chasms.
+  - [Railroad Scheduler] is a game about planning routes and scheduling
+    for a set of trains.
+  - [Stellar Cortex's first devlog is out][s-cortex-log]:
+    it talks about foundational systems that should allow space based commerce.
+  - [Logic RPG][lrpg] got two vlogs: [about CI and docs][lrpg-1] and
+    [post processing, 3D conversions, and physics][lrpg-2].
+  - [Elttob released a couple vlogs][stockholm] about their voxel game Stockholm.
+  - [Digital Extinction's recent updates][de] include unit manufacturing,
+    shadows, and multiplayer.
+- Other engine updates:
+  - [ggez is looking for new maintainers][ggez-maintain].
+- Other learning material updates
+  - [@PsichiX posted a tutorial][intuicio] on building your own
+    scripting solution with Intuicio.
+- Other tooling updates:
+  - [ironboy] by @nicolas-siplis is a high accuracy GameBoy emulator
+    written in Rust and available in the browser via WASM.
+- Other library updates:
+  - [Strolle][strolle] is an experimental real-time renderer that supports
+    global illumination.
+  - [blend v0.8][blend] brings better support for Blender primitives
+    and API improvements.
+  - [lox] is a library for creating, generating, processing,
+    and analyzing polygon meshes.
+  - [bitcode] is a games-oriented bitwise encoder/decoder which attempts
+    to shrink the serialized size without sacrificing speed.
+  - [virtual_joystick] provides virtual joystick UI widgets for Bevy projects.
+  - [faer v0.7][faer-07] and [v0.8 releases][faer-08] bring
+    better SIMD operations support for non native types
+    and overall performance improvements.
+  - [egui_graphs] provides an interactive graph visualization widget powered
+    by egui and petgraph.
+  - [Alkahest][alkahest] is a schema-based serialization library
+    that features infallible serialization, zero-overhead serialization of sequences,
+    lazy deserialization and supports wide variety of formulas.
+  - [wgpu v0.16][wgpu-v016] brings a bunch of changes to sync with latest spec,
+    improved APIs, and lots of bugfixes.
+  - [the png create][png] got an ultrafast compression mode \-
+    up to 4x faster decompression.
+
+[cnc-052]: https://buckmartin.de/combine-and-conquer/2023-04-05-v0.5.2.html
+[exocave]: https://cragwind.itch.io/exocave/devlog/516142/grappling-hook
+[Railroad Scheduler]: https://coffejunkstudio.itch.io/railroad-scheduler
+[s-cortex-log]: https://bentley.codes/stellar-cortex/foundations-of-a-space-based-economy
+[lrpg]: https://logicprojects.itch.io/logic-rpg
+[lrpg-1]: https://youtube.com/watch?v=a9LZYozNChg
+[lrpg-2]: https://youtube.com/watch?v=SmqQ_Is9QX8
+[stockholm]: https://youtube.com/playlist?list=PLsFMLV-H_GYt8KzbJnzrapNkUNtRcBB2n
+[de]: https://mgn.cz/blog
+[ggez-maintain]: https://github.com/ggez/ggez/issues/1188
+
+[intuicio]: https://psichix.github.io/Intuicio/tutorial/index.html
+
+[ironboy]: https://reddit.com/r/rust/comments/12qj2ty/ironboy
+
+[strolle]: https://reddit.com/r/rust/comments/12u4ovi/strolle
+[blend]: https://github.com/lukebitts/blend/blob/master/CHANGELOG.md#blend-08
+[lox]: https://reddit.com/r/rust/comments/12teoxi/lox_a_fast_polygon_mesh_library
+[bitcode]: https://reddit.com/r/rust/comments/12nw1pc/bitcode_format
+[virtual_joystick]: https://github.com/SergioRibera/virtual_joystick
+[faer-07]: https://reddit.com/r/rust/comments/12estz9/faer_07
+[faer-08]: https://reddit.com/r/rust/comments/12tw26r/faer_08
+[egui_graphs]: https://github.com/blitzarx1/egui_graphs
+[alkahest]: https://reddit.com/r/rust_gamedev/comments/12auz7o/alkahest_02
+[wgpu-v016]:https://github.com/gfx-rs/wgpu/releases/tag/v0.16.0
+[png]: https://reddit.com/r/rust/comments/12ks0ka/png_crate_gets_an_ultrafast_compression
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["Well, we're a little more game"][red-little-more]
+  - ["Really frustrated"][red-runt]
+
+[red-little-more]: https://reddit.com/r/rust_gamedev/comments/12mppwb/well_were_a_little_more_game
+[red-runt]: https://reddit.com/r/rust_gamedev/comments/1302512/really_frustrated
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+- [Ambient's "good first issue" issues][ambient-issues].
+
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13xh0q7/this_month_in_rust_gamedev_45_april_2023),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/110469105162579330),
+[Twitter](https://twitter.com/rust_gamedev/status/1664256969408913411),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/045/intuicio-intro.png b/content/news/045/intuicio-intro.png
new file mode 100644
index 000000000..e46c7b477
Binary files /dev/null and b/content/news/045/intuicio-intro.png differ
diff --git a/content/news/045/jumpy.png b/content/news/045/jumpy.png
new file mode 100644
index 000000000..a8833be52
Binary files /dev/null and b/content/news/045/jumpy.png differ
diff --git a/content/news/045/katamari.gif b/content/news/045/katamari.gif
new file mode 100644
index 000000000..a6dbce7e7
Binary files /dev/null and b/content/news/045/katamari.gif differ
diff --git a/content/news/045/l1t.png b/content/news/045/l1t.png
new file mode 100644
index 000000000..96e99b854
Binary files /dev/null and b/content/news/045/l1t.png differ
diff --git a/content/news/045/laser-cutter.png b/content/news/045/laser-cutter.png
new file mode 100644
index 000000000..05a3f4376
Binary files /dev/null and b/content/news/045/laser-cutter.png differ
diff --git a/content/news/045/luminol.png b/content/news/045/luminol.png
new file mode 100644
index 000000000..507e2978a
Binary files /dev/null and b/content/news/045/luminol.png differ
diff --git a/content/news/045/maginet.png b/content/news/045/maginet.png
new file mode 100644
index 000000000..0343f925e
Binary files /dev/null and b/content/news/045/maginet.png differ
diff --git a/content/news/045/phaestusfox.png b/content/news/045/phaestusfox.png
new file mode 100644
index 000000000..4c6c90b62
Binary files /dev/null and b/content/news/045/phaestusfox.png differ
diff --git a/content/news/045/piano.gif b/content/news/045/piano.gif
new file mode 100644
index 000000000..1dec5cd04
Binary files /dev/null and b/content/news/045/piano.gif differ
diff --git a/content/news/045/railroad-scheduler.png b/content/news/045/railroad-scheduler.png
new file mode 100644
index 000000000..2806f594e
Binary files /dev/null and b/content/news/045/railroad-scheduler.png differ
diff --git a/content/news/045/rustracer.jpg b/content/news/045/rustracer.jpg
new file mode 100644
index 000000000..62f2e1166
Binary files /dev/null and b/content/news/045/rustracer.jpg differ
diff --git a/content/news/045/strategy-game.png b/content/news/045/strategy-game.png
new file mode 100644
index 000000000..77b4b0d38
Binary files /dev/null and b/content/news/045/strategy-game.png differ
diff --git a/content/news/045/tglade.gif b/content/news/045/tglade.gif
new file mode 100644
index 000000000..18d67df45
Binary files /dev/null and b/content/news/045/tglade.gif differ
diff --git a/content/news/045/thetawave.gif b/content/news/045/thetawave.gif
new file mode 100644
index 000000000..6e0087867
Binary files /dev/null and b/content/news/045/thetawave.gif differ
diff --git a/content/news/045/wor-puzzle-fest.jpg b/content/news/045/wor-puzzle-fest.jpg
new file mode 100644
index 000000000..88b210287
Binary files /dev/null and b/content/news/045/wor-puzzle-fest.jpg differ
diff --git a/content/news/046/bevy-garage.jpg b/content/news/046/bevy-garage.jpg
new file mode 100644
index 000000000..20cc448df
Binary files /dev/null and b/content/news/046/bevy-garage.jpg differ
diff --git a/content/news/046/bevy-platformer-tut.png b/content/news/046/bevy-platformer-tut.png
new file mode 100644
index 000000000..970e3b4f1
Binary files /dev/null and b/content/news/046/bevy-platformer-tut.png differ
diff --git a/content/news/046/blit.png b/content/news/046/blit.png
new file mode 100644
index 000000000..75f123990
Binary files /dev/null and b/content/news/046/blit.png differ
diff --git a/content/news/046/dashmore.jpg b/content/news/046/dashmore.jpg
new file mode 100644
index 000000000..93f24a7e5
Binary files /dev/null and b/content/news/046/dashmore.jpg differ
diff --git a/content/news/046/digital-extinction.jpeg b/content/news/046/digital-extinction.jpeg
new file mode 100644
index 000000000..6ceb68ccd
Binary files /dev/null and b/content/news/046/digital-extinction.jpeg differ
diff --git a/content/news/046/escape-ai.png b/content/news/046/escape-ai.png
new file mode 100644
index 000000000..910ec19ab
Binary files /dev/null and b/content/news/046/escape-ai.png differ
diff --git a/content/news/046/find_ferris.png b/content/news/046/find_ferris.png
new file mode 100644
index 000000000..b92076690
Binary files /dev/null and b/content/news/046/find_ferris.png differ
diff --git a/content/news/046/folk-funded.png b/content/news/046/folk-funded.png
new file mode 100644
index 000000000..ef4777383
Binary files /dev/null and b/content/news/046/folk-funded.png differ
diff --git a/content/news/046/hotline.png b/content/news/046/hotline.png
new file mode 100644
index 000000000..1f8030589
Binary files /dev/null and b/content/news/046/hotline.png differ
diff --git a/content/news/046/index.md b/content/news/046/index.md
new file mode 100644
index 000000000..bfc194042
--- /dev/null
+++ b/content/news/046/index.md
@@ -0,0 +1,785 @@
++++
+title = "This Month in Rust GameDev #46 - May 2023"
+transparent = true
+date = 2023-06-30
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 46th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Rusty Jam \#3][rj3]
+
+{{ image_figure(
+    alt="find ferris screenshot: a cart with sweets, ferris, flowers, etc"
+    src="find_ferris.png"
+    caption="Find Ferris") }}
+
+[Rusty Jam \#3][rj3] ran from May 21st 2023 to May 29th 2023 and the theme was
+"Hidden in plain sight".
+The jam had a few but high-quality and awesome games.
+
+Here're the winners:
+
+- 🥇 [Find Ferris](https://kuviman.itch.io/find-ferris) by kuviman.
+- 🥈 [Tug of Orb](https://anders429.itch.io/tug-of-orb) by anders429.
+- 🥉 [The Veiled Path](https://jebik.itch.io/the-veiled-path) by Jebik.
+
+We wish all the participants good luck in their future endeavors!
+The RustyJam will be back, so stay tuned on
+[the Rusty Jam Discord][rj-dis] for future updates!
+
+[rj3]: https://itch.io/jam/rusty-jam-3
+[rj-dis]: https://discord.gg/jZtz6y9gCJ
+
+### [Rust GameDev Meetup \#27][meetup-video]
+
+[![youtube preview: "rerun fir gamedev" slide](meetup.jpg)][meetup-video]
+
+The 27th Rust Gamedev Meetup took place in May. You can watch the recording
+of the meetup [here on Youtube][meetup-video].
+
+The schedule:
+
+- Rusty Jam 3 by [@ElhamAryanpur]
+- Blue Engine by [@ElhamAryanpur]
+- Rerun by [@wumpf]
+- Graphite by [@Keavon]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[meetup-video]: https://youtube.com/watch?v=WQ3ncBe9srM
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@ElhamAryanpur]: https://github.com/ElhamAryanpur
+[@wumpf]: https://github.com/wumpf
+[@Keavon]: https://github.com/Keavon
+
+## Game Updates
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="Building Placement in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Building Placement in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+The most notable updates are:
+
+- poles at unit manufacturing delivery locations for selected factories,
+- pausing unit manufacturing when the spawn location is occupied,
+- [IME][ime] support for text boxes,
+- a lot of progress on multiplayer networking,
+- [logging][de-logging] to file and other logging improvements.
+
+Support for multiplayer is a technologically complex problem to solve and it is
+the last major missing feature before the [proof-of-concept][de-poc] version
+can be released. Therefore, a lot of effort currently goes in this direction.
+
+The game is slowly gaining traction in the development community.
+Check out our new [contributors here][de-contributors].
+
+See [gameplay][de-video] screen recordings on YouTube.
+
+More detailed monthly updates are available [here (May)][de-update-07] and
+[here (June)][de-update-08].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[Bevy]: https://bevyengine.org
+[ime]: https://en.wikipedia.org/wiki/Input_method
+[de-logging]: https://docs.de-game.org/logging/
+[de-poc]: https://github.com/DigitalExtinction/Game/milestone/1
+[de-video]: https://youtu.be/_ibNMDgIQDE
+[de-contributors]: https://github.com/DigitalExtinction/Game/graphs/contributors
+[de-update-07]: https://mgn.cz/blog/de07/
+[de-update-08]: https://mgn.cz/blog/de08/
+[@Indy2222]: https://github.com/Indy2222
+
+### [Tunnet][tunnet-itch]
+
+{{ image_figure(
+    alt="Tunnet screenshot: robots queueing outside nightclub"
+    src="tunnet.jpg"
+    caption="Connecting the DJ set to the network") }}
+
+Tunnet ([Steam][tunnet-steam], [Itch.io][tunnet-itch]) is a short
+puzzle/exploration game where the player digs tunnels and connects computers
+together.
+
+As a network engineer, the player will also have to respond to security
+incidents.
+In May, this game mechanic has been illustrated in a [devlog][tunnet-post] and
+a preview of the new [basic water simulation][tunnet-water] has been posted.
+
+[tunnet-itch]: https://puzzled-squid.itch.io/tunnet
+[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet
+[tunnet-post]: https://puzzled-squid.itch.io/tunnet/devlog/532388/devlog-1-ghost-in-the-tunnels
+[tunnet-water]: https://mastodon.gamedev.place/@puzzled_squid/110322440469696044
+
+### [Fish Folk's Kickstarter][fish-ks]
+
+![happy fish, exploding bombs, "thank you!" written in the central explosion
+and "just founded" in the bottom](folk-funded.png)
+
+This month [Fish Folk][fish-folk] ([itch.io][fish-itch], [Discord][fish-dis])
+has launched their [Kickstarter campaign][fish-ks]
+that has [already reached its funding goal][fish-15k]!
+
+Even though the basic sum is collected, the campaign still continues
+to get more funds for the stretch goals:
+
+> The plan for how to allocate funds that exceed our €15k goal is very simple:
+> For every additional €1,000 pledged to our campaign,
+> we will prototype another fishy game archetype for our evergrowing bundle.
+> Once our funding run concludes we will poll our backers on which game(s)
+> you would like us to prioritize.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/13qkcv9/fish_ks)_
+
+[fish-ks]: https://kickstarter.com/projects/erlendsh/fish-folk
+[fish-15k]: https://kickstarter.com/projects/erlendsh/fish-folk/posts/3821869
+[fish-folk]: https://fishfolk.org/games/jumpy
+[fish-dis]: https://discord.gg/4smxjcheE5
+[fish-itch]: https://spicylobster.itch.io
+
+### [Escape Room AI][escape-ai]
+
+{{ image_figure(
+    alt="top-down view on the game world: wallks, traps, enemies, doors, etc"
+    src="escape-ai.png"
+    caption="AI trying to escape a room") }}
+
+[escape-ai] by [@bones-ai] is a Rust-based implementation of a genetic algorithm
+and reinforcement learning simulation.
+Its purpose is to train an AI named Zoe to escape a room it's enclosed in.
+The simulation is built using the Macroquad library.
+
+The [YouTube video][escape-video] demonstrates 1000 AI bots learning
+how to escape five rooms of increasing difficulty.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13dstir/ai_escape)_
+
+[escape-ai]: https://github.com/bones-ai/rust-escape-ai
+[@bones-ai]: https://twitter.com/BonesaiDev
+[escape-video]: https://youtube.com/watch?v=OeojCLDKaJU
+
+### [MEANWHILE IN SECTOR 80][ms80]
+
+[![MS80 Weekly Update Number One](ms80.jpg)][ms80-vlog]
+
+[MEANWHILE IN SECTOR 80][ms80] ([Discord][shg-dis], [mailing list][shg-news])
+by [Second Half Games][shg-site] is an upcoming third person
+action-engineering space game.
+
+Second Half Games released the [first update video][ms80-vlog] for the game.
+It includes an introduction to the studio, an overview of the game, and some of
+the recent progress towards the first public demo.
+
+[shg-site]: https://secondhalf.games
+[shg-news]: https://dashboard.mailerlite.com/forms/402073/85466601232532545/share
+[shg-dis]: https://discord.gg/A9GHQGNhJX
+[ms80]: https://ms80.space
+[ms80-vlog]: https://youtube.com/watch?v=bgmySx_tv1s
+
+### [Tiny Glade]
+
+![editing of windows on a cute cottage](tglade-windows.gif)
+
+[Tiny Glade] ([Twitter][tglade-twi])
+is a small relaxing game about doodling castles.
+
+[This month][tglade-post] was all about turning previous experiments
+into reality.
+The coloring and window prototypes are now proper features,
+have dedicated UI, and play well with other building tools.
+
+The devs have also been [toying with][tglade-gi] real-time global illumination
+that could run on potato graphics cards.
+
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade
+[tglade-twi]: https://twitter.com/PounceLight
+[tglade-post]: https://store.steampowered.com/news/app/2198150/view/3714952295473339216?l=english
+[tglade-gi]: https://twitter.com/h3r2tic/status/1663264361144565765
+
+### [Turtle Time][tt-devlog]
+
+![game screenshot: pixel art tile graphics](turtle-time.png)
+
+Turtle Time by [@mikeder] is a WIP p2p multiplayer turtle game
+being made using Bevy, [ggrs], and [matchbox].
+
+This month [the first devlog][tt-devlog] was released:
+
+- Quickly starting a project using [bevy_game_template].
+- Converting single player systems to multiplayer ones.
+- Determinism, random spawns, and timers.
+
+[tt-devlog]: https://mikeder.net/blog/turtletime-devlog-1
+[@mikeder]: https://mikeder.net
+[bevy_game_template]: https://github.com/NiklasEi/bevy_game_template
+[ggrs]: https://github.com/gschup/ggrs
+[matchbox]: https://github.com/johanhelsing/matchbox
+
+### [DAshmoRE][dashmore]
+
+![instructions screen: game controls instructions](dashmore.jpg)
+
+[DAshmoRE][dashmore] is a fast-paced arcade mobile game written using Bevy.
+
+> Get ready for a fast-paced and challenging arcade game
+> where the only way to move is by skillfully dashing past enemies.
+> With a single tap, you must navigate through a maze of enemies
+> that move at different speeds and patterns.
+> Can you master the art of dashing and achieve the highest score?
+> Test your skills and reflexes in this thrilling arcade game.
+
+The game's features include:
+
+- Single-tap controls and WASM build suited for playing on mobile phones.
+- Power-ups like player repellent forcefields and slow-motion abilities.
+- Integrated highscore system.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13al7qu/dashmore)_
+
+[dashmore]: https://hopfenherrscher.itch.io/dashmore
+
+### [NANOVOID][nv-steam]
+
+{{ image_figure(
+    alt="one big space ship shooting lots of missles at another"
+    src="nanovoid.gif"
+    caption="Missiles targeting individual parts on enemy ships") }}
+
+[NANOVOID][nv-steam] by [LogLogGames] is a WIP 2D tactical space shooter
+that puts you in command of your own modular spaceship:
+engage in intense, physics-driven battles, strategize with ship customization,
+and outsmart your enemies.
+
+This month [the first devlog][nv:log1] was released
+and it mostly was dedicated to experiments with Lua scripting.
+
+Other updates include:
+
+- [A simple PID controller][nv-twi1] for rotating the ship.
+- [The SFX for thrusters is now filtered][nv-twi2] based on the desired force.
+- On-hit SFX and explosions [are starting to feel satisfying][nv-twi3].
+- Parts of the ship [can now be individually inspected][nv-twi4] with pinnable UI.
+- Missiles targeting individual parts on enemy ships [with some more UI tweaks][nv-twi5].
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/13rgj9t/nanovoid_1)_
+
+[LogLogGames]: https://loglog.games
+[nv-steam]: https://store.steampowered.com/app/2326430/NANOVOID
+[nv:log1]: https://loglog.games/blog/nanovoid-devlog-1
+[nv-twi1]: https://twitter.com/LogLogGames/status/1659202148616523778
+[nv-twi2]: https://twitter.com/LogLogGames/status/1660062551651041281
+[nv-twi3]: https://twitter.com/LogLogGames/status/1660683311755165697
+[nv-twi4]: https://twitter.com/LogLogGames/status/1663134570634461190
+[nv-twi5]: https://twitter.com/LogLogGames/status/1663667145018953729
+
+### [Bevy Garage][garage-gh]
+
+[![YouTube preview: a track with a racing car on it
+and Alexi in the corner of the screen](bevy-garage.jpg)][garage-vid1]
+
+[Bevy Garage][garage-gh] by [@alexichepura] is
+a game-like car simulation playground
+built with Bevy, rapier, and dfdx neural network.
+
+Alexi released two introductory videos about the project:
+
+- [The main video][garage-vid1] that walks through the project.
+- Deep Q-Learning car training [for 1 hour][garage-vid2].
+
+You can also try out the WASM version of the simulation
+[here][garage-web].
+
+[garage-gh]: https://github.com/alexichepura/bevy_garage
+[garage-web]: https://alexi.chepura.space/bevy-garage
+[garage-vid1]: https://youtu.be/f6PcaTX58J4
+[garage-vid2]: https://youtu.be/A2JMPIWGXBsf
+[@alexichepura]: https://mastodon.social/@alexichepura
+
+## Engine Updates
+
+### [stereokit-rs][sk-rs]
+
+![Demo of drawing with your hands in 3D space](stereokit.gif)
+
+[stereokit-rs][sk-rs] ([Discord][sk-dis]) are bindings to [StereoKit][sk] - an easy-to-use
+Mixed Realty engine, designed for creating VR, AR, and XR experiences.
+While StereoKit is primarily intended to be used from C#,
+all core functionality is implemented in native code,
+and a C compatible header file is also available and
+was used to create Rust bindings.
+
+StereoKit's features include:
+
+- Wide platform support: HoloLens 2, Oculus Quest, Windows Mixed Reality,
+  Oculus Desktop, SteamVR, Varjo, Monado (Linux),
+  and eventually everywhere OpenXR is.
+- Mixed Reality inputs like hands and eyes are trivial to access.
+- Easy and powerful UI and interactions.
+- Lots of model and texture formats are supported out of the box.
+- Flexible shader/material system with built-in PBR.
+- Performance-by-default instanced render pipeline.
+- Flat screen MR simulator with input emulation for easy development.
+- Runtime asset loading and cross-platform file picking.
+- Physics.
+
+You can use [a cargo-generate template][sk-template] for a quick start
+and the devs invite to join [their Discord server][sk-dis]
+if you have any questions.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/138ywxv/intro_stereokit)_
+
+[sk]: https://stereokit.net
+[sk-rs]: https://github.com/MalekiRe/stereokit-rs
+[sk-template]: https://github.com/MalekiRe/stereokit-template
+[sk-dis]: https://discord.com/invite/jtZpfS7nyK
+
+### [hotline][hotline-gh]
+
+![screenshots from hotline's tests](hotline.png)
+
+[hotline][hotline-gh] ([Blog][hotline-blog], [Twitter][hotline-twi], [Twitch][hotline-twitch])
+is a modern, high-performance, hot-reload graphics engine that
+aims to provide low-level access to modern
+graphics API features, while at the same time providing high-level ergonomic
+optimizations.  
+
+[The recent updates][hotline-devlog] include:
+
+- Tests of graphics functionality and lots of new examples,
+- GPU Resources cleanup improvements,
+- explicit API fore resource heaps,
+- better bindless and bindful rendering models,
+- GPU-driven ECS experiments.
+
+[hotline-gh]: https://github.com/polymonster/hotline
+[hotline-blog]: https://www.polymonster.co.uk
+[hotline-twi]: https://twitter.com/polymonster
+[hotline-twitch]: https://twitch.tv/polymonstr
+[hotline-devlog]: https://www.polymonster.co.uk/blog/building-new-engine-4
+
+## Learning Material Updates
+
+### [Building a Platformer with Bevy \#1][bevy-platformer-tut]
+
+![a scheme showing an agent jumping from pillar to pillar](bevy-platformer-tut.png)
+
+[@affanshahid] published [the first part of a new tutorial series][bevy-platformer-tut]
+on building a simple 2D platformer using Bevy.
+The series is aimed at newcomers to the world of
+game development and explores common game development concepts.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/134d2i0/learning_gamedev_w_rust)_
+
+[bevy-platformer-tut]: https://affanshahid.dev/posts/learning-game-dev-bevy-1
+[@affanshahid]: https://github.com/affanshahid
+
+### [Game Development In Rust: Making A Strategy Game][rust-strategy-game-tut-1]
+
+{{ image_figure(
+    alt="Game Development In Rust: Making A Strategy Game"
+    src="strategy-game.png"
+    caption="Game Development In Rust: Making A Strategy Game") }}
+
+[@srodrigo] published the first three parts of a
+[strategy game in Bevy series][rust-strategy-game-tut-1]. The series is aimed at
+developers with some experience in Rust who want to dive into game development.
+
+- [The first part][rust-strategy-game-tut-1] focuses on the basic concepts to
+  create a battlefield for the battles to come.
+- [The second part][rust-strategy-game-tut-2] adds the first unit type.
+- [The third part][rust-strategy-game-tut-3] adds more unit types to create more
+  compelling teams.
+
+[rust-strategy-game-tut-1]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-1/
+[rust-strategy-game-tut-2]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-2/
+[rust-strategy-game-tut-3]: https://srodrigoroyo.com/game-development-in-rust-strategy-game-3/
+[@srodrigo]: https://github.com/srodrigo
+
+### [How to Migrate Your Bevy Projects with (Semi-)Automation][bevy-migrate]
+
+![Logos with ast-grep and bevy](migrate-bevy.png)
+
+[@HerringtonDarkholme] published an [article][bevy-migrate]
+about how to make Bevy migration easier by using git, cargo and [ast-grep].
+The article uses the utility AI library [big-brain] as an example
+to illustrate bumping the Bevy version from 0.9 to 0.10
+and covers four big steps: making a clean git branch,
+updating the dependencies, running fix commands, and fixing failing tests.
+By using semi-automation tools, you can migrate your Bevy projects
+with less hassle and more confidence.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/13m4crf/semi_automated_migration_bevy)_
+
+[bevy-migrate]: https://betterprogramming.pub/migrating-bevy-can-be-easier-with-semi-automation-here-is-how-1f6e21858e79
+[@HerringtonDarkholme]: https://github.com/HerringtonDarkholme
+[ast-grep]: https://github.com/ast-grep/ast-grep
+[big-brain]: https://github.com/zkat/big-brain
+
+## Tooling Updates
+
+### [Spicy Launcher]
+
+![demo: switching between Jumpy/Punchy and choosing a verion](spicylauncher.gif)
+
+[Spicy Launcher] by [@orhun] is a cross-platform launcher
+for playing [Spicy Lobster] games.
+Supports both command-line and [Tauri]-based graphical interface.
+
+Currently supported games: [Fish Folk: Jumpy], [Fish Folk: Punchy],
+and recently added [Thetawave].
+
+Planned features include auto updating games and mods management.
+
+[Spicy Launcher]: https://github.com/spicylobstergames/SpicyLauncher
+[Spicy Lobster]: https://github.com/spicylobstergames
+[Fish Folk: Jumpy]: https://github.com/fishfolks/jumpy
+[Fish Folk: Punchy]: https://github.com/fishfolks/punchy
+[Thetawave]: https://github.com/thetawavegame/thetawave
+[@orhun]: https://github.com/orhun
+[Tauri]: https://tauri.app
+
+### [Rerun][rerun]
+
+![Rerun showing 3D object detections in a 2D view](rerun3d2d.gif)
+
+[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh])
+is an open-source SDK for logging complex visual data paired with a visualizer
+for exploring that data over time. While its primary focus is on robotics and
+computer vision, it can be useful for all kinds of
+rapid prototyping & algorithm development.
+
+Rerun was shown at the Rust GameDev meetup,
+watch the recording [here][rerun-meetup-vid].
+
+[v0.6.0][rerun-v0-6-0] is out now! A few of the biggest highlights:
+
+- You can now show 3D objects in 2D views connected by Pinhole transforms.
+- You can quickly view images and meshes with `rerun mesh.obj image.png`.
+- The correct to install the rerun binary is now `cargo install rerun-cli`.
+- native_viewer is now an opt-in feature of the rerun library,
+  leading to faster compilation times.
+- SDK log calls are now batched on the wire, saving CPU time and bandwidth.
+- [Experimental WebGPU support][rerun-wgpu].
+
+There's a growing community on [Discord][rerun-dis]
+waiting for you to join in case you have any questions,
+comments or just want to follow the latest development.
+The [GitHub project][rerun-gh] is MIT/Apache
+licensed and open to contribute for everyone,
+be it with suggestions, bugs or PRs.
+
+[rerun]: https://rerun.io
+[rerun-dis]: https://discord.gg/npTFxYR9
+[rerun-gh]: https://github.com/rerun-io/rerun
+[rerun-meetup-vid]: https://youtube.com/watch?v=dVk_kZ9VSDA
+[rerun-v0-6-0]: https://github.com/rerun-io/rerun/releases/tag/v0.6.0
+[rerun-wgpu]: https://app.rerun.io/webgpu/index.html
+
+### [Smashline][smashline]
+
+[Smashline][smashline] is plugin and a Rust crate aimed at enhancing Smash modding,
+more specifically focusing on script mods. Its main purpose is to enable
+the replacement of different types of scripts found in Super Smash Bros. Ultimate,
+while also offering additional utilities for creating what is known as "code mods"
+within the modding community.
+
+The [Smashline wiki][wiki] provides comprehensive explanations of its core features.
+
+[smashline]: https://github.com/blu-dev/smashline
+[wiki]: https://github.com/blu-dev/smashline/wiki
+
+### [Ruffle][ruffle]
+
+![Ruffle dekstop app](ruffle.png)
+
+[Ruffle] is an open-source Flash Player emulator written in Rust.
+It brings Flash Player back to life, running smoothly on all modern systems
+and web browsers.
+
+[This month's updates][ruffle-post] include:
+
+- Bunch of new fan-favorite AS3 (ActionScript 3)games are now playable.
+- Many graphics drawing methods have been fixed and implemented.
+- XML support has progressed.
+- AS2 (ActionScript 2) has seen progress as well:
+  Additional XML methods have been implemented.
+- The Ruffle desktop app now has an interface.
+- Built-in save manager has been added.
+- FLV support in progress, Flash content with external video files will be
+  supported soon.
+
+[ruffle]: https://ruffle.rs/
+[ruffle-post]: https://ruffle.rs/blog/2023/05/29/progress-report.html
+
+## Library Updates
+
+### [blit]
+
+![blit example: blitting the full sprite](blit.png)
+
+[blit] is a GPL licensed library for quickly blitting 2D images on a pixel buffer.
+After a long stale period development has resumed quite a bit
+in the last couple of months.
+
+The previous big release, [v0.7.0][blit-0-7], saw a big improvement in performance
+and API ergonomics. It also introduced interactive WebAssembly examples
+[which can be seen here][blit-web-show].
+
+The latest big release, [v0.8.0][blit-0-8], is a complete rewrite of the quite old
+and admittendly outdated API. A focus has been put on both ergonomics and performance.
+There's now many ways of drawing a subsection, tiling, masking and creating
+repeating slices of an image on a pixel buffer.
+
+[blit]: https://github.com/tversteeg/blit
+[blit-0-7]: https://github.com/tversteeg/blit/releases/tag/v0.7.0
+[blit-0-8]: https://github.com/tversteeg/blit/releases/tag/v0.8.0
+[blit-web-show]: https://tversteeg.nl/blit/showcase
+
+### [seldom_state]
+
+[seldom_state] is a Bevy plugin that adds a `StateMachine` component that you
+can add to your entities. The state machine will change the entity's components
+based on states, triggers, and transitions that you define. It's useful
+for player controllers, animations, simple AI, etc.
+
+This month, [seldom_state] 0.6 was released:
+
+- Triggers don't need to be registered!
+- MachineState and Trigger no longer require Reflect.
+- StateMachine's trans_builder accepts the current state in the closure, so
+  you have dataflow between states!
+- You may add and remove state components manually.
+- More versatile on_enter and on_exit events.
+- Trigger combinators `not`, `and`, and `or`.
+- Transitions have priority in the order they are added.
+- You can use EventReader, Local, etc in your triggers!
+- Added an `EventTrigger<E>` that triggers on an event.
+- StateMachine's set_trans_logging sets whether to log state transitions
+- [And more][changelog]!
+
+Thanks to [Sera] for coauthoring this update!
+
+[seldom_state]: https://github.com/Seldom-SE/seldom_state
+[Sera]: https://github.com/deifactor
+[changelog]: https://github.com/Seldom-SE/seldom_state/blob/main/CHANGELOG.md#06-2023-05-07
+
+### [Kira]
+
+[Kira] ([GitHub]) by [@tesselode] is a backend-agnostic library to create
+expressive audio for games.
+
+Kira v0.8 adds support for spatial audio, global modulation sources for
+easier and more powerful parameter tweening, compressor and EQ effects,
+and more powerful playback and loop region settings.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/13p7x9o/kira_v08)_
+
+[Kira]: https://crates.io/crates/kira
+[@tesselode]: https://twitter.com/tesselode
+[GitHub]: https://github.com/tesselode/kira
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Maginet will soon get a level editor][maginet] with in-editor play support.
+  - [@NullableEngineer released a vlog][nullable-mmo] about implementing
+    the first iteration of the network server for their WIP MMO.
+  - [Idu got a new water system][idu] that is a lot faster to and easier to render.
+- Other engine updates:
+  - [godot-rust got a new website][godot-rust] with latest API docs
+    and direct links to learning resources and community platforms.
+  - [Bevy will get WebGPU support][bevy-wgpu] in the next - v0.11 - release.
+- Other learning material updates:
+  - [@PhaestusFox] has posted Bevy-related tutorial videos:
+    [Herbal-Alchemy 1.4 Update](https://youtube.com/watch?v=MSsuR_6MqwE)
+    and ["How to make a view cube in Bevy"](https://youtube.com/watch?v=HpAu1LpYNpM).
+- Other library updates:
+  - [grid] is a simple library that provides an easy to use and fast
+    2D grid data structure.
+  - [hexx] v0.6 brings a bunch of new algorithms for hexagonal maps
+    and overall API improvements.
+  - [faer] 0.9 brings the non hermitian eigenvalue decomposition
+    for real and complex matrices and also comes with the release of [qd],
+    a library for extended precision floating point arithmetic
+    with faer compatibility.
+  - [quinn] v0.10 introduces MTU discovery, updates to the latest version
+    of rustls, improves platform support, and introduces a variety
+    of new features, performance improvements, and bugfixes
+  - [funutd] is a 3D procedural texture library running on the CPU that features
+    different tiling modes, an endless supply of proc-generated self-describing
+    volumetric textures, Palette generation with Okhsv and Okhsl color spaces,
+    and an interactive texture explorer.
+  - [bevy_diagnostics_explorer] is a plugin allowing to visualize diagnostics
+    (tracing spans) in VSCode.
+  - [pxo] is a library for working with [Pixelorama] files.
+  - [frug] is a simple graphics library that was announced this month
+    along with [some docs][frug_book].
+  - [egui] v0.22 brings support for application icons on Windows and Mac,
+    better dark/light mode detection, and error reporting on the web.
+  - [egui_tiles] is a tiling layout engine for egui with drag-and-drop and resizing.
+
+[maginet]: https://twitter.com/evrimzone/status/1658908555582341120
+[nullable-mmo]: https://youtube.com/watch?v=rHM-4vj3uyY
+[idu]: https://mastodon.gamedev.place/@johann/110440559190280054
+[godot-rust]: https://mastodon.gamedev.place/@GodotRust/110367270830037001
+[bevy-wgpu]: https://reddit.com/r/rust/comments/13lb0h8/bevy_webgpu
+[@PhaestusFox]: https://youtube.com/@PhaestusFox
+[grid]: https://reddit.com/r/rust/comments/134l6mk/grid_v0_10
+[hexx]: https://github.com/ManevilleF/hexx/releases/tag/0.6.0
+[faer]: https://reddit.com/r/rust/comments/13ggs7k/faer_09
+[qd]: https://lib.rs/qd
+[quinn]: https://github.com/quinn-rs/quinn/releases/tag/0.10.0
+[funutd]: https://github.com/SamiPerttu/funutd
+[bevy_diagnostics_explorer]: https://github.com/zaycev/bevy-diagnostics-explorer
+[pxo]: https://github.com/appybara13/pxo
+[Pixelorama]: https://github.com/Orama-Interactive/Pixelorama
+[frug]: https://reddit.com/r/rust/comments/13im07r/introducing_frug
+[frug_book]: https://santyarellano.github.io/frug_book
+[egui]: https://reddit.com/r/rust/comments/13px5zb/egui_022
+[egui_tiles]: https://github.com/rerun-io/egui_tiles
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust:
+  - ["How does Bevy manage to be so loose with signatures?"][red-bevy-loose]
+- /r/rust_gamedev:
+  - ["Is bevy the best option for a Rust based game engine?"][red-bevy-best]
+  - ["We're not quite game yet"][red-not-game]
+
+[red-bevy-loose]: https://reddit.com/r/rust/comments/13rcz4v/how_bevy_so_loose
+[red-bevy-best]: https://reddit.com/r/rust_gamedev/comments/13wteyb/is_bevy_best
+[red-not-game]: https://reddit.com/r/rust_gamedev/comments/13qt6rq/were_not_quite_game_yet
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [bevy_mod_scripting is looking for maintainers][bevy_mod_scripting-help].
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+- [Ambient's "good first issue" issues][ambient-issues].
+
+[bevy_mod_scripting-help]: https://github.com/makspll/bevy_mod_scripting/issues/48
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14o566f/rust_gamedev_46),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/110640765829636039),
+[Twitter](https://twitter.com/rust_gamedev/status/1675242617917829122),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/046/meetup.jpg b/content/news/046/meetup.jpg
new file mode 100644
index 000000000..593ee36f3
Binary files /dev/null and b/content/news/046/meetup.jpg differ
diff --git a/content/news/046/migrate-bevy.png b/content/news/046/migrate-bevy.png
new file mode 100644
index 000000000..cad65c781
Binary files /dev/null and b/content/news/046/migrate-bevy.png differ
diff --git a/content/news/046/ms80.jpg b/content/news/046/ms80.jpg
new file mode 100644
index 000000000..080872a6c
Binary files /dev/null and b/content/news/046/ms80.jpg differ
diff --git a/content/news/046/nanovoid.gif b/content/news/046/nanovoid.gif
new file mode 100644
index 000000000..42b7e79cf
Binary files /dev/null and b/content/news/046/nanovoid.gif differ
diff --git a/content/news/046/rerun3d2d.gif b/content/news/046/rerun3d2d.gif
new file mode 100644
index 000000000..388d20abb
Binary files /dev/null and b/content/news/046/rerun3d2d.gif differ
diff --git a/content/news/046/ruffle.png b/content/news/046/ruffle.png
new file mode 100644
index 000000000..8630528e2
Binary files /dev/null and b/content/news/046/ruffle.png differ
diff --git a/content/news/046/spicylauncher.gif b/content/news/046/spicylauncher.gif
new file mode 100644
index 000000000..2bc634234
Binary files /dev/null and b/content/news/046/spicylauncher.gif differ
diff --git a/content/news/046/stereokit.gif b/content/news/046/stereokit.gif
new file mode 100644
index 000000000..43df96e85
Binary files /dev/null and b/content/news/046/stereokit.gif differ
diff --git a/content/news/046/strategy-game.png b/content/news/046/strategy-game.png
new file mode 100644
index 000000000..54988a371
Binary files /dev/null and b/content/news/046/strategy-game.png differ
diff --git a/content/news/046/tglade-windows.gif b/content/news/046/tglade-windows.gif
new file mode 100644
index 000000000..f9965ce98
Binary files /dev/null and b/content/news/046/tglade-windows.gif differ
diff --git a/content/news/046/tglade.gif b/content/news/046/tglade.gif
new file mode 100644
index 000000000..f9965ce98
Binary files /dev/null and b/content/news/046/tglade.gif differ
diff --git a/content/news/046/tunnet.jpg b/content/news/046/tunnet.jpg
new file mode 100644
index 000000000..18103dfb2
Binary files /dev/null and b/content/news/046/tunnet.jpg differ
diff --git a/content/news/046/turtle-time.png b/content/news/046/turtle-time.png
new file mode 100644
index 000000000..b671df903
Binary files /dev/null and b/content/news/046/turtle-time.png differ
diff --git a/content/news/047/ambient-trees.jpg b/content/news/047/ambient-trees.jpg
new file mode 100644
index 000000000..267283a21
Binary files /dev/null and b/content/news/047/ambient-trees.jpg differ
diff --git a/content/news/047/bevy-rendering-demystified.png b/content/news/047/bevy-rendering-demystified.png
new file mode 100644
index 000000000..7fdddaf94
Binary files /dev/null and b/content/news/047/bevy-rendering-demystified.png differ
diff --git a/content/news/047/boytacean.gif b/content/news/047/boytacean.gif
new file mode 100644
index 000000000..5c4ebb2bc
Binary files /dev/null and b/content/news/047/boytacean.gif differ
diff --git a/content/news/047/digital-extinction.jpeg b/content/news/047/digital-extinction.jpeg
new file mode 100644
index 000000000..6ceb68ccd
Binary files /dev/null and b/content/news/047/digital-extinction.jpeg differ
diff --git a/content/news/047/flesh.gif b/content/news/047/flesh.gif
new file mode 100644
index 000000000..71cad516b
Binary files /dev/null and b/content/news/047/flesh.gif differ
diff --git a/content/news/047/godot-rust-gdextension.png b/content/news/047/godot-rust-gdextension.png
new file mode 100644
index 000000000..3c3110bee
Binary files /dev/null and b/content/news/047/godot-rust-gdextension.png differ
diff --git a/content/news/047/index.md b/content/news/047/index.md
new file mode 100644
index 000000000..55ee93062
--- /dev/null
+++ b/content/news/047/index.md
@@ -0,0 +1,512 @@
++++
+title = "This Month in Rust GameDev #47 - June 2023"
+transparent = true
+date = 2023-08-01
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 47th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Rust GameDev Meetup \#27][meetup-video]
+
+[![youtube preview: "blade tasks" slide](meetup.jpg)][meetup-video]
+
+The 28th Rust Gamedev Meetup took place in June. You can watch the recording
+of the meetup [here on Youtube][meetup-video].
+
+The schedule:
+
+- Blade by [@kvark]
+- Graphite by [@Keavon]
+- Digital Extinction by [@Indy2222]
+- Bevy Jam \#3 Games by [@AngelOnFira]
+
+The meetups take place on the second Saturday of every month via the [Rust
+Gamedev Discord server][rust-gamedev-discord] and are also [streamed on
+Twitch][rust-gamedev-twitch].
+
+[meetup-video]: https://youtube.com/watch?v=1DiA3OYqvqU
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[@AngelOnFira]: https://github.com/AngelOnFira
+[@kvark]: https://github.com/kvark
+[@Indy2222]: https://github.com/Indy2222/
+[@Keavon]: https://github.com/Keavon
+
+## Game Updates
+
+### [Flesh]
+
+{{ image_figure(
+    alt="flesh preview"
+    src="flesh.gif"
+    caption="Intro") }}
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation,
+an organic/fleshy theme and a unique story. It is implemented using [Tetra].
+The game's development has finished and will be released soon. The last update
+before release includes:
+
+- Intro/Ending/End credits animation.
+- Add a variant version of Conway's Game of Life as background.
+- Improve effect in the gameplay with distortion shaders.
+- Update the demo build with improved graphics and performance.
+
+[Flesh]: https://store.steampowered.com/app/1660850/Flesh/
+[@im_oab]: https://twitter.com/im_oab
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+
+### [Space Frontiers]
+
+{{ image_figure(
+    alt="In-game screenshot of a real-time render of a modular gridmap-based spaceship interior"
+    src="spacefrontiers.png"
+    caption="Render achieved with dynamic point lights.") }}
+
+[Space Frontiers] ([GitHub], [Discord], [Twitter], [Reddit], [Steam Group])
+by [Starwolves] is an online moddable sci-fi action RPG community game
+simulating space (and spaceships) in 3D.
+
+By the end of last year, the client was made with Godot. Shortly after that the
+decision was made to replace the Godot project with a [Bevy Engine] client.
+
+Rust and Bevy are now used for both server and client.
+There are a lot of advantages such as sharing libraries and neat code replication,
+reducing code overhead.
+In fact, both the server and client are now developed in [the same virtual workspace].
+
+The client includes a new camera perspective from top-down isometric to 1st person.
+A new 3D dynamic gridmap framework has been successfully implemented in ECS.
+The prototype includes an in-game map editing tool with the ability to export to
+file.
+Inspired by the videogame "System Shock".
+There is a recently uploaded [showcase video].
+
+The project is commercial, [open-source] and has a proprietary license.
+There is a milestone for a license change to free open-source.
+
+[Starwolves.io Bulletin Board] was launched half a year ago.
+There are 25~ registrants left that can receive a permanent unique forum group/title.
+
+_Discussions: [StarWolves.io Bulletin Board]_
+
+[Starwolves.io Bulletin Board]: https://starwolves.io
+[Starwolves]: https://starwolves.io
+[Bevy Engine]: https://bevyengine.org/
+[Space Frontiers]: https://github.com/starwolves/space
+[GitHub]: https://github.com/starwolves/space
+[open-source]: https://github.com/starwolves/space
+[the same virtual workspace]: https://github.com/starwolves/space
+[Steam Group]: https://steamcommunity.com/groups/starwolvescommunity
+[Discord]: https://discord.gg/yYpMun9CTT
+[Twitter]: https://twitter.com/starwolvesstar
+[Reddit]: https://reddit.com/u/StarwolvesStar
+[showcase video]: https://youtu.be/Qr_in7tUxAM
+
+### Digital Extinction
+
+{{ image_figure(
+    alt="Building Placement in Digital Extinction"
+    src="digital-extinction.jpeg"
+    caption="Building Placement in Digital Extinction") }}
+
+[Digital Extinction] ([GitHub][de-github], [Discord][de-discord],
+[Reddit][de-reddit]) by [@Indy2222] is a 3D real-time strategy game made with
+[Bevy].
+
+The most notable updates are:
+
+- nightly versions are automatically built and published on
+  [de-game.org][de-web] and elsewhere,
+- significant progress has been made on multiplayer and networking,
+- animated arrows on terrain are displayed for selected factories, indicating
+  the path from the units' spawn points to their delivery locations,
+- semi-transparent square markers are drawn on the terrain around selected
+  buildings,
+- health bars are briefly displayed above units and buildings when they take
+  damage or their health changes,
+- the implementation and design of the “Energy” have started to take shape,
+- the head-up display (HUD) shows the total battery charge and the number of
+  selected units and buildings,
+- the main theme song plays in a loop, the volume of the music can be configured,
+- the aspect ratio of the minimap matches that of the game map,
+- the option to invert camera zooming has been added to the configuration,
+- the [documentation][de-docs] has been converted to mdBook.
+
+See [gameplay][de-video] screen recordings on YouTube.
+
+A more detailed July update is available [here][de-update-09].
+
+[Digital Extinction]: https://de-game.org
+[de-github]: https://github.com/DigitalExtinction/Game
+[de-discord]: https://discord.gg/vHMFuCWGSX
+[de-reddit]: https://reddit.com/r/DigitalExtinction
+[@Indy2222]: https://github.com/Indy2222
+[Bevy]: https://bevyengine.org
+[de-web]: https://de-game.org/
+[de-docs]: https://docs.de-game.org/
+[de-video]: https://youtu.be/aRk65kyIEes
+[de-update-09]: https://mgn.cz/blog/de09/
+
+### Tribes
+
+![Tribes preview](tribes.jpg)
+
+Tribes (working title) by [@uvizhe] is a turn-based strategy game about
+tribes of hunters and gatherers. It's being developed using Bevy.
+
+The [first devlog] introduces the game, outlines its current state and
+future plans, accompanied by some thoughts from the developer.
+
+_Discussions:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/14aturs/im_working_on_tribes_turnbased_strategy_game/),
+[Twitter](https://twitter.com/uvizhe/status/1669664504198705156),
+[Mastodon](https://mstdn.social/@uvizhe/110553604146429627)_
+
+[@uvizhe]: https://github.com/uvizhe
+[first devlog]: https://uvizhe.im/posts/tribes-p1/
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea](wor.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle game with hard puzzles but forgiving
+mechanics being produced by [@masonremaley] in a custom Rust engine.
+You can support development by [checking out the free demo and wishlisting on Steam][wor]
+or [signing up for the mailing list][wor-mail]!
+
+Recent updates:
+
+- Puzzle design and layout complete!
+- Continued work on polish, working towards a closed beta
+- Work continued on native [Linux & Steam Deck port][wor-linux], the port is
+  unfinished but playable
+- Increased staff throw velocity to make it easier to throw staves off ledges
+- Various performance improvements (separate spatial hash for interactive objects)
+- Way of Rhea will be part of the [Cerebral Puzzle Showcase][wor-showcase]
+  August 3rd-7th!
+
+[@masonremaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n47
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[wor-linux]: https://twitter.com/AnthropicSt/status/1683955327711211520
+[wor-showcase]: https://www.cerebralpuzzleshowcase.com/
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Veloren visual comparison"
+    src="veloren.jpg"
+    caption="Veloren over the years") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In June, Veloren prepared for an upcoming release coming in July. Work included
+various fixes, charms, one-way walls, ip address anonymization in logs, the
+addition of the frost gigas boss in game, savanna hut updates, plant creatures,
+cyclops, and much more.
+
+Ongoing work is happening on ship movement, pet commands, Terracotta ruins,
+dwarven quarry, coastal towns, clifftown rework, and axe skills. Work is
+happening to add physics interactions that increase your height as you're
+gliding. This includes thermal and ridge lifts.
+
+June's full weekly devlogs: "This Week In Veloren...": [#211][veloren-211], [#212][veloren-212].
+
+[veloren]: https://veloren.net
+[veloren-211]: https://veloren.net/devblog-211
+[veloren-212]: https://veloren.net/devblog-212
+
+## Engine Updates
+
+### [macroquad]
+
+{{ image_figure(
+    alt="macroquad"
+    src="macroquad_0_4.gif"
+    caption="Macroquad examples rendered by Metal API") }}
+
+Macroquad got ported to miniquad-0.4, supporting Metal on Mac and IOS.
+
+On the surface all the macroquad API stayed exactly the same, but with
+`use macroquad::miniquad::*` being such a breaking change - major version
+number was bumped. Major version bump made possible to fix a few
+long-lasting issues, check the [full changelog][macroquad_changelog]
+for all the changes.
+
+[macroquad]: https://github.com/not-fl3/macroquad
+[macroquad_changelog]: https://macroquad.rs/articles/macroquad-0-4/
+
+### [godot-rust][gd-github]
+
+![godot-rust GDExtension logo](godot-rust-gdextension.png)
+
+In the last few weeks of gdext development, the [GDExtension
+API][gd-gdextension] breaks in Godot's recently released [4.1
+version][gd-godot4-1]. Migration is mostly done, several FFI bugs have been
+addressed on the way.
+
+The godot-rust book now [has a "Hello World" tutorial][gd-tutorial] + guides on
+compatibility and selecting Godot version.
+
+Noteworthy features:
+
+- Vector swizzling
+- Signals with parameters
+- Rust-native APIs for Rect2, Aabb, and Plane
+- ToVariant/FromVariant derives
+- Godot native structures
+
+[gd-github]: https://github.com/godot-rust
+[gd-gdextension]: https://github.com/godot-rust/gdextension
+[gd-tutorial]: https://godot-rust.github.io/book/gdext
+[gd-godot4-1]: https://godotengine.org/article/godot-4-1-is-here/
+
+## Learning Material Updates
+
+### Bevy Rendering Demystified
+
+![Bevy Rendering Demystified Thumbnail](bevy-rendering-demystified.png)
+
+[@logicprojects] published a [video][Bevy Rendering Demystified] covering the
+details of Bevy's rendering systems.  Specifically, he covered the engine's
+internal implementation of UI Rendering to show how data flows from the ECS
+world down to the final wgpu draw calls.
+
+[@logicprojects]: https://www.youtube.com/@logicprojects
+
+[Bevy Rendering Demystified]: https://youtu.be/5oKEPZ6LbNE
+
+### Procedural Trees in Ambient
+
+![Procedural tree in Ambient](ambient-trees.jpg)
+
+[@mebyz] authored a set of articles "building mmo-ready procedural trees using
+Ambient engine". The three ([1][ambient-trees-1], [2][ambient-trees-2],
+[3][ambient-trees-3]) posts cover a week's worth of explorations into simple
+pseudo-random procedural ecosystem generation (trees, mushrooms, etc)
+system/strategy for Ambient.
+
+[@mebyz]: https://github.com/mebyz
+[ambient-trees-1]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-1-2359225b592
+[ambient-trees-2]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-2-60ccce4c6adc
+[ambient-trees-3]: https://medium.com/@emmanuel.botros/webgpu-wasm-rust-building-mmo-ready-procedural-trees-using-ambient-engine-part-3-5a217ecdcabe
+
+## Tooling Updates
+
+### [Rerun][rerun]
+
+[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh]) is an open-source SDK
+for logging complex visual data paired with a visualizer for exploring that data
+over time. While its primary focus is on robotics and computer vision, it can be
+useful for all kinds of rapid prototyping & algorithm development.
+
+[v0.7.0][rerun-v0-7-0] is out now, but it turned out a little bit smaller:
+
+A few of the biggest highlights:
+
+- Much more powerful transformation logging
+  - any affine transforms works now!
+  - supports many more formats and shows them in the viewer as-is
+- Better color mapping range detection for images and tensors
+- Add support for motion JPEG via the new jpeg_quality parameter to log_image
+- Many small improvements to samples & documentation
+
+There's a growing community on [Discord][rerun-dis] waiting for you to join in
+case you have any questions, comments or just want to follow the latest
+development. The [GitHub project][rerun-gh] is MIT/Apache licensed and open to
+contribute for everyone, be it with suggestions, bugs or PRs.
+
+[rerun]: https://rerun.io
+[rerun-dis]: https://discord.gg/npTFxYR9
+[rerun-gh]: https://github.com/rerun-io/rerun
+[rerun-v0-7-0]: https://github.com/rerun-io/rerun/releases/tag/v0.7.0
+
+## Library Updates
+
+### [posh]
+
+![Example code written with posh, simplified from the hello triangle
+example](posh.jpg)
+
+[`posh`][posh] is a crate that seamlessly integrates a graphics library with an
+embedded functional shading language. It is a proof of concept that aims to
+demonstrate that graphics programming can be both type-safe and ergonomic.
+
+With `posh`, shaders are written in plain Rust (with some caveats). Procedural
+macros are only required for defining custom vertex and uniform types.
+
+The core component of `posh` is the `Program<U, V, F>` type, which acts as a
+bridge between the shading language and the graphics library. This type
+represents a compiled shader and serves as the entry point for draw calls. By
+explicitly carrying the types `U` (uniform interface), `V` (vertex shader
+interface), and `F` (fragment shader interface), `posh` enables static
+verification, ensuring that the data provided in draw calls matches the shader's
+signature.
+
+For simplicity, `posh` currently targets OpenGL ES 3.0. Although it is an
+experimental project, its authors hope to inspire the community to further
+explore how static typing can elegantly bridge the gap between host code and
+shader code.
+
+For more details, check out the [examples][posh-examples] or the authors' [blog
+post][posh-blog].
+
+[posh]: https://github.com/leod/posh
+[posh-examples]: https://github.com/leod/posh/tree/main/examples
+[posh-blog]: https://leod.github.io/rust/gamedev/posh/2023/06/04/posh.html
+
+### [Boytacean][boytacean]
+
+![Boytacean preview](boytacean.gif)
+
+[Boytacean][boytacean] by [@joamag] is a web-based Game Boy Color emulator (and
+library) written in Rust.
+
+Major features include:
+
+- Full Game Boy and Game Boy Color emulation.
+- Web (using WebAssembly) and SDL frontends.
+- Ultra-fast performance.
+- Accurate PPU emulation.
+- Game Boy Printer emulation.
+- and many others...
+
+[boytacean]: https://github.com/joamag/boytacean/
+[@joamag]: https://github.com/joamag
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+- Other game updates:
+  - [Idu][idu] is a game about growing simulated plants, recent updates
+    include addition of a GPU particle system.
+  - [Nanovoid][nanovoid] is a 2D tactical space shooter game, most recent features
+    have been added to the ship editor.
+  - [Cells][cells] is a singleplayer game inspired by [agar.io][agar].
+  - [MS80][ms80] is a game about scavenging parts and creating things with them to
+    survive alien attacks. MS80 now does basic simulation of thermodynamics.
+  - [Maginet][maginet] updated their game interface and debuted the editor
+    update!
+  - [Combine And Conquer][caq] new release fixes issues with item rendering.
+  - [rust-drive-ai][rust-drive-ai] is a self driving AI simulation game built in
+    span of 30 days that uses the Bevy engine. In addition, under the hood the cars
+    are controlled using neural networks and trained by a genetic algorithm.
+  - [The Station][station] is a brand new NASA-punk survival game.
+  - [Turtletime][turtletime] is a multiplayer competitive turtle game built using
+    the Bevy and Matchbox.
+  - [Tiny Glade][tinyglade] updated path detailing.
+  - [Fish Folk][fishfolk] is collection of arcade style multiplayer games where
+    you dive deep in the ocean!
+- Other learning material updates:
+  - [Game Dev Graphics][gamedevgraphics] posted a series of 3D graphics tutorials
+    in Rust from scratch.
+  - [Maciej Główka][maciej glowka] brings updates for map generation to his [Bevy
+    roguelike tutorial][bevyrogueliketutorial].
+  - [Learning Game Dev][learninggamedev] brings a third edition to their tutorials
+    with building a platformer with Bevy.
+- Other engine updates:
+  - [Bitang][bitang] is a new framework for demoscene productions.
+- Other library updates:
+  - [miniquad][miniquad] now supports GL2/Metal.
+  - [gecs][gecs] is a new compile-time generated ECS library.
+  - [nv-flip][nv-flip] library helps you visualize human-noticeable differences
+    between rendered images.
+
+[idu]: https://epcc.itch.io/idu
+[nanovoid]: https://store.steampowered.com/app/2326430/NANOVOID/
+[cells]: https://github.com/psincf/Cells
+[agar]: https://agar.io/
+[ms80]: https://ms80.space/
+[maginet]: https://evrimzone.itch.io/maginet
+[caq]: https://martinbucksoftware.itch.io/combine-and-conquer
+[rust-drive-ai]: https://github.com/bones-ai/rust-drive-ai
+[station]: https://www.youtube.com/watch?v=fecn1qPNu3c
+[turtletime]: https://github.com/mikeder/turtletime
+[tinyglade]: https://pouncelight.games/tiny-glade/
+[fishfolk]: https://www.kickstarter.com/projects/erlendsh/fish-folk/posts/3841752
+[gamedevgraphics]: https://www.youtube.com/watch?v=Hqi8QREXwrE
+[maciej glowka]: https://maciejglowka.com/contact/
+[bevyrogueliketutorial]: https://maciejglowka.com/blog/bevy-roguelike-tutorial-devlog-part-10-room-placement/
+[learninggamedev]: https://affanshahid.dev/posts/learning-game-dev-bevy-3/
+[bitang]: https://github.com/aedm/bitang
+[miniquad]: https://github.com/not-fl3/miniquad
+[gecs]: https://docs.rs/gecs/latest/gecs/
+[nv-flip]: https://github.com/gfx-rs/nv-flip-rs
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+<!--
+TODO: Add real links and un-comment once this post is published
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Mastodon](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
+-->
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/047/macroquad_0_4.gif b/content/news/047/macroquad_0_4.gif
new file mode 100644
index 000000000..5dc085514
Binary files /dev/null and b/content/news/047/macroquad_0_4.gif differ
diff --git a/content/news/047/meetup.jpg b/content/news/047/meetup.jpg
new file mode 100644
index 000000000..53b2a39be
Binary files /dev/null and b/content/news/047/meetup.jpg differ
diff --git a/content/news/047/posh.jpg b/content/news/047/posh.jpg
new file mode 100644
index 000000000..37bcd7241
Binary files /dev/null and b/content/news/047/posh.jpg differ
diff --git a/content/news/047/spacefrontiers.png b/content/news/047/spacefrontiers.png
new file mode 100644
index 000000000..710abc6e8
Binary files /dev/null and b/content/news/047/spacefrontiers.png differ
diff --git a/content/news/047/tribes.jpg b/content/news/047/tribes.jpg
new file mode 100644
index 000000000..babe393e1
Binary files /dev/null and b/content/news/047/tribes.jpg differ
diff --git a/content/news/047/veloren.jpg b/content/news/047/veloren.jpg
new file mode 100644
index 000000000..7c405bd4d
Binary files /dev/null and b/content/news/047/veloren.jpg differ
diff --git a/content/news/047/wor.jpg b/content/news/047/wor.jpg
new file mode 100644
index 000000000..138a6c427
Binary files /dev/null and b/content/news/047/wor.jpg differ
diff --git a/content/news/048/8bit-duels-game.png b/content/news/048/8bit-duels-game.png
new file mode 100644
index 000000000..26f0642ef
Binary files /dev/null and b/content/news/048/8bit-duels-game.png differ
diff --git a/content/news/048/backend-gpu.png b/content/news/048/backend-gpu.png
new file mode 100644
index 000000000..f7fd4acb7
Binary files /dev/null and b/content/news/048/backend-gpu.png differ
diff --git a/content/news/048/bevy-ants-simulation.png b/content/news/048/bevy-ants-simulation.png
new file mode 100644
index 000000000..43232d55a
Binary files /dev/null and b/content/news/048/bevy-ants-simulation.png differ
diff --git a/content/news/048/bevy_ssao.jpg b/content/news/048/bevy_ssao.jpg
new file mode 100644
index 000000000..2a07c50b0
Binary files /dev/null and b/content/news/048/bevy_ssao.jpg differ
diff --git a/content/news/048/bevy_xpbd.gif b/content/news/048/bevy_xpbd.gif
new file mode 100644
index 000000000..f0709a0ee
Binary files /dev/null and b/content/news/048/bevy_xpbd.gif differ
diff --git a/content/news/048/cargo_space.png b/content/news/048/cargo_space.png
new file mode 100644
index 000000000..357f2598a
Binary files /dev/null and b/content/news/048/cargo_space.png differ
diff --git a/content/news/048/colony.png b/content/news/048/colony.png
new file mode 100644
index 000000000..c57f32db3
Binary files /dev/null and b/content/news/048/colony.png differ
diff --git a/content/news/048/cybergate.jpg b/content/news/048/cybergate.jpg
new file mode 100644
index 000000000..306c7686b
Binary files /dev/null and b/content/news/048/cybergate.jpg differ
diff --git a/content/news/048/flesh.jpg b/content/news/048/flesh.jpg
new file mode 100644
index 000000000..64e22ba9b
Binary files /dev/null and b/content/news/048/flesh.jpg differ
diff --git a/content/news/048/flesh.png b/content/news/048/flesh.png
new file mode 100644
index 000000000..3fcc44362
Binary files /dev/null and b/content/news/048/flesh.png differ
diff --git a/content/news/048/fyrox-camera.gif b/content/news/048/fyrox-camera.gif
new file mode 100644
index 000000000..1938661dc
Binary files /dev/null and b/content/news/048/fyrox-camera.gif differ
diff --git a/content/news/048/gltf-ibl-sampler.jpeg b/content/news/048/gltf-ibl-sampler.jpeg
new file mode 100644
index 000000000..db1ea0a64
Binary files /dev/null and b/content/news/048/gltf-ibl-sampler.jpeg differ
diff --git a/content/news/048/hacker.png b/content/news/048/hacker.png
new file mode 100644
index 000000000..956b3d0c5
Binary files /dev/null and b/content/news/048/hacker.png differ
diff --git a/content/news/048/hanabi.gif b/content/news/048/hanabi.gif
new file mode 100644
index 000000000..83374e7d6
Binary files /dev/null and b/content/news/048/hanabi.gif differ
diff --git a/content/news/048/iced-incremental.png b/content/news/048/iced-incremental.png
new file mode 100644
index 000000000..3ebeb1c49
Binary files /dev/null and b/content/news/048/iced-incremental.png differ
diff --git a/content/news/048/idu.jpg b/content/news/048/idu.jpg
new file mode 100644
index 000000000..292bee9b0
Binary files /dev/null and b/content/news/048/idu.jpg differ
diff --git a/content/news/048/index.md b/content/news/048/index.md
new file mode 100644
index 000000000..d556a2141
--- /dev/null
+++ b/content/news/048/index.md
@@ -0,0 +1,866 @@
++++
+title = "This Month in Rust GameDev #48 - July 2023"
+transparent = true
+date = 2023-08-31
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 48th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### [Rust GameDev Meetup \#29][meetup-video]
+
+[![YouTube preview: "Blade: Advanced Pipeline" slide
+showing a texture diagram](meetup.jpg)][meetup-video]
+
+The 29th Rust Gamedev Meetup took place in July.
+You can watch the recording of the meetup [here on YouTube][meetup-video].
+The schedule:
+
+- [Blade](https://youtu.be/47wamZL5IFw?t=10m15s) by [@kvark]
+- [Graphite](https://youtu.be/47wamZL5IFw?t=32m48s) by [@Keavon]
+- [Veloren](https://youtu.be/47wamZL5IFw?t=41m27s) by [@AngelOnFira]
+
+The meetups take place on the second Saturday of every month
+via the [Rust Gamedev Discord server][rust-gamedev-discord]
+and are also [streamed on Twitch][rust-gamedev-twitch].
+
+[rust-gamedev-discord]: https://discord.gg/yNtPTb2
+[rust-gamedev-twitch]: https://twitch.tv/rustgamedev
+[meetup-video]: https://youtu.be/47wamZL5IFw
+[@kvark]: https://github.com/kvark
+[@Keavon]: https://github.com/Keavon
+[@AngelOnFira]: https://github.com/AngelOnFira
+
+## Game Updates
+
+### [Colony]
+
+![tiled map with lots of grass and trees, some resources
+and a couple of named pawns](colony.png)
+
+[Colony] by [@ryankopf] is a colony simulator game built with Bevy that
+is open source and is in a pre-alpha stage. Similar to other colony simulator games
+like Dwarf Fortress or Rimworld, there are units that have their own traits and
+can be instructed to perform tasks like farming and chopping trees.
+
+You can have your units build things, farm stuff, and explore, and the game is soon
+to be moving onto adding more content and UI, as core features are being completed.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/14p1fiw/colony_sim)_
+
+[Colony]: https://github.com/ryankopf/colony
+[@ryankopf]: https://github.com/ryankopf
+
+### [Open Combat][OpenCombat_website]
+
+{{ image_figure(
+    alt="OpenCombat completed HUD"
+    src="opencombat.jpg"
+    caption="Game HUD is now more complete") }}
+
+Open Combat ([Website][OpenCombat_website], [GitHub][OpenCombat_github],
+[Discord][OpenCombat_discord]) is a real-time tactical game
+which takes place during the 2nd World War.
+
+Some major changes this month:
+
+- HUD has been filled with a minimap and squad information.
+- Multiple issues about zoom and move on map have been fixed.
+- A high-definition map has been created.
+
+Some fixes and improvements have to be done, but the devs are near
+to publishing the official demo of the game!
+
+[OpenCombat_website]: https://opencombat.bux.fr
+[OpenCombat_github]: https://github.com/buxx/OpenCombat
+[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="Universal quic server"
+    src="cybergate.jpg"
+    caption="The browser uses webtransport (Left), the native uses quinn (Right)") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]),
+CyberSoul is developing an ambitious multiplayer project,
+utilizing procedural generation and AI to offer a dynamic universe.
+
+The latest updates to CyberGate include:
+
+- Implemented a Webtransport Client and a universal quic server.
+- A custom game launcher that is reliable and efficient.
+- Universal mechanism to save, load, and upgrade the game world from disk.
+- Optimized multithreaded evolution algorithms for generating universes.
+- Created an accessible editor for fine-tuning component values.
+
+Participate in Testing and Engage with CyberSoul: [on Discord][cybergate-dis].
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea on SteamDeck](wor-steamdeck.jpg)][wor]
+
+[Way of Rhea][wor] is a puzzle game with hard puzzles but forgiving
+mechanics being produced by [@masonremaley] in a custom Rust engine.
+You can support development by [checking out the free demo and wishlisting on Steam][wor]
+or [signing up for the mailing list][wor-mail]!
+
+Recent updates:
+
+- Way of Rhea now natively supports Linux, and Steam Deck! Mason released a
+  [writeup on the port here][wor-linux].
+- Way of Rhea was part of the [Cerebral Puzzle Showcase][wor-showcase].
+- Crash handling was improved, and the build process was simplified (necessary
+  for post-release support).
+  A fix was landed to [backtrace-rs][wor-backtrace-rs] as part of the
+  improved crash handling.
+- Time controls were released as part of the updated demo.
+
+[@masonremaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n48
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[wor-showcase]: https://cerebralpuzzleshowcase.com
+[wor-linux]: https://anthropicstudios.com/2023/08/21/way-of-rhea-linux
+[wor-backtrace-rs]: https://github.com/rust-lang/backtrace-rs/pull/553
+
+### [tiny-snake.rs]
+
+![tiny-snake.rs running in the terminal](tiny_snake.gif)
+
+[tiny-snake.rs] by [@Rodrigodd] is a terminal snake game, with a minimal binary
+size.
+
+The entire game is implemented in a single file of pure Rust code, with zero
+dependencies. All interactions with the system are done through raw syscalls
+(so it only runs on Linux, sorry) and the program is completely panic-free
+(panic handling increases the binary size by almost 4KiB).
+
+The game can be compiled using a single `rustc` command, and the resulting
+binary is only 2760 bytes.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15d89s5/tinysnakers)_
+
+[tiny-snake.rs]: https://github.com/Rodrigodd/tiny-snake.rs
+[@Rodrigodd]: https://github.com/Rodrigodd
+
+### [8bit Duels][8bit-gh]
+
+![Screenshot featuring the new enemiy: the crow](8bit-duels-game.png)
+
+[8bit Duels][8bit-gh] ([Discord][8bit-dis]) is a turn-based strategy game made
+by [@ThousandthStar]. It has been in development for the past year,
+and the release is right around the corner!
+A new blog post along with a release Youtube video is coming soon
+on [this channel][8bit-yt].
+
+This month's update includes a completely remade user interface.
+The [devlog][8bit-devlog] covers the change from the [bevy_ui] crate
+to [belly], which provides a nice HTML-like syntax for building the UI.
+The last devlog post will address the re-implemented UI and the new troop: the Crow!
+
+The Crow, as seen in the screenshot above, is a hooded bird assassin with two daggers.
+It can attack twice per turn, dealing 2 damage each time. The Crow is the last of
+the five 8bit Duels characters.
+
+[@ThousandthStar]: https://github.com/ThousandthStar
+[8bit-gh]: https://github.com/ThousandthStar/8bit-duels
+[8bit-dis]: https://discord.com/invite/NbBcF4bGU5
+[8bit-yt]: https://youtube.com/channel/UCllwuaF9ac8sNni8v03GomQ
+[8bit-devlog]: https://thousandthstar.github.io/posts/8bd/8bd-part7
+[bevy_ui]: https://lib.rs/bevy_ui
+[belly]: https://github.com/jkb0o/belly
+
+### [Ant Colony Simulation][antsim]
+
+![lots of glowing particles (aka ants) moving to the destination](bevy-ants-simulation.png)
+
+[Ant Colony Simulation][antsim] depicts an ant colony where the ants
+have a simple task: to find food and bring it back to the colony.
+To achieve this goal, they use signals called pheromones.
+These pheromone signals guide the ants to the food source and back to their colony.
+
+[@BonesaiDev][bonesai-yt] released a couple of videos about the project:
+
+- [An overall explanation][antsim-vid-expl] of how it works.
+- [A timelapse][antsim-vid-timelapse] of ant colony at 5x speed.
+- [2D Bloom showcase timelapse][antsim-vid-timelapse-bloom] with 1k ants.
+
+The project is written using Bevy.
+You can find the source code [on GitHub][antsim].
+
+Follow [@BonesaiDev on Twitter][bonesai-twi] or on [YouTube][bonesai-yt]
+to receive future updates about this and their other AI simulation projects.
+
+[antsim]: https://github.com/bones-ai/rust-ants-colony-simulation
+[antsim-vid-expl]: https://youtu.be/98pUSZAM_7M
+[antsim-vid-timelapse]: https://youtu.be/5xdfTJBMnwI
+[antsim-vid-timelapse-bloom]: https://youtu.be/Z4IRY_LKtt8
+[bonesai-twi]: https://twitter.com/BonesaiDev
+[bonesai-yt]: https://youtube.com/@bonesai-dev
+
+### [Cargo Space]
+
+![Screenshot of an astronaut in front of stars and two galaxies](cargo_space.png)
+
+[Cargo Space] ([Discord][cargospace_discord]) by
+[@johanhelsing][johanhelsing_mastodon] is a co-op 2d space game where you build
+a ship and fly it through space looking for new parts, fighting pirates and the
+environment.
+
+This months development was all about making endless procedurally generated
+parallaxing space backgrounds, choosing an appropriate rng crate, and making the
+implementation seedable and cross-platform deterministic.
+
+Johan's [devlog entry][cargospace_devlog_7] explains all this in detail, as well
+as how distant parallax can be an immersive replacement for ui and minimaps.
+
+[Cargo Space]: https://helsing.studio/cargospace
+[johanhelsing_mastodon]: https://mastodon.social/@johanhelsing
+[cargospace_discord]: https://discord.gg/ye9UDNvqQD
+[cargospace_devlog_7]: https://johanhelsing.studio/posts/cargo-space-devlog-7
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Veloren visual comparison"
+    src="veloren.jpg"
+    caption="The 0.15 release party map") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In July, Veloren released version 0.15! You can read about the release in the
+[0.15 blog post][veloren-0-15], and watch the [release party
+trailer][veloren-0-15-trailer]. Here are some of the changes in this release:
+
+- The first world boss, the 'frost giga': seek him out if you dare!
+- A new dungeon: Adlet caves.
+- Airships can now be used by players.
+- Enemy loot is now shared between players.
+- A reputation system: if you commit crimes, NPCs will remember it!
+- Improved AI: NPCs will talk to players and each other about events in the
+  world.
+- Much richer world simulation: NPCs will migrate and pass on rumours.
+- You can now choose your character's starting town.
+- A durability and repair system.
+- Improved accessibility, performance, bug fixes, and much, much more!
+
+Work over July includes TCP receive buffer increase, spawn tab completion, loot
+changes, translation updates, dwarven quarry ⛏️ (still inactive in game),
+coastal town, desert city fixes, CI optimization, and shorter item count texts.
+Work is going on to add a web-based translation tool for Veloren.
+
+July's full weekly devlogs: "This Week In Veloren...": [#213][veloren-213], [#214][veloren-214].
+
+[veloren]: https://veloren.net
+[veloren-0-15]: https://veloren.net/release-0-15
+[veloren-213]: https://veloren.net/devblog-213
+[veloren-214]: https://veloren.net/devblog-214
+[veloren-0-15-trailer]: https://youtube.com/watch?v=weIK41W3tX0
+
+### [Idu][idu-itch]
+
+![concrete islands, some dirts, water, lots of vines](idu.jpg)
+
+[Idu][idu-itch] ([Discord][idu_discord]) is a strategic sandbox game about growing
+plants that wish to reclaim nature, developed by [Elina Shakhnovich][eli_mastodon]
+and [Johann Tael][johann_mastodon] featuring a bespoke Vulkan-based engine in Rust.
+
+This month [a new demo was released][idu-new-demo]:
+
+- New water mechanics: instantly fill large pools
+  and build channels to transport water.
+- A climbing plant.
+- A new particle system for special effects.
+- Swimming and improved climbing out of water.
+- Configurable keybindings.
+
+[idu-itch]: https://epcc.itch.io/idu
+[idu_discord]: https://discord.gg/MeGauteMj3
+[eli_mastodon]: https://mastodon.gamedev.place/@eli
+[johann_mastodon]: https://mastodon.gamedev.place/@johann
+[idu-new-demo]: https://epcc.itch.io/idu/devlog/565550/demo-version-11-vines-swimming-and-magic
+
+### [MEANWHILE IN SECTOR 80][ms80]
+
+[![YouTube preview: weapon bench](mis80.jpg)][ms80-vid]
+
+[MEANWHILE IN SECTOR 80][ms80] ([Discord][shg-dis], [mailing list][shg-news])
+by [Second Half Games][shg-site] is an upcoming third-person
+action-engineering space game.
+
+This month the third update was released, you can [watch][ms80-vid]
+or [read it][ms80-text]. Highlights:
+
+- New engineering system allows inspecting objects around the player,
+  modifying your equipment using workbenches,
+  and adding wires between sockets located on different pieces of equipment.
+- Improved physics simulation that now features heat radiation and incandescence.
+
+[shg-site]: https://secondhalf.games
+[shg-news]: https://dashboard.mailerlite.com/forms/402073/85466601232532545/share
+[shg-dis]: https://discord.gg/A9GHQGNhJX
+[ms80]: https://ms80.space
+[ms80-text]: https://secondhalf.games/news/2023-07-05-ms80-update-3
+[ms80-vid]: https://youtube.com/watch?v=0wRXX-dRFr
+
+### [Space Kitty][kitty]
+
+![GIF from the trailer: 2d space arcade gameplay](kitty.gif)
+
+[Space Kitty][kitty] by [@ghashy] is a platformer
+about a Kitty floating in space in search of crackers.
+
+> Somewhere in the distant space there are lots of tasty crackers floating around.
+> In search of this highly valuable resource there are
+> two competing parties - the DOGS and the KITTY.
+> One can never say when the contest had begun, but it's clear that to this day
+> there is a game for the title of the Great Cracker Collector.
+> Every time the cracker is taken the lucky one emits a signal to the base
+> about his achievement.
+> The KITTY - highly responsible and intelligent creature - always
+> sends the exact amount of collected treasures,
+> while the DOGS rely on their feelings.
+> Some of them truly believe that they got multiple crackers at a time,
+> some just can't count, and about honesty of the others one can only guess...
+
+The source code of the game can be found [on GitHub][kitty-gh].
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14vormz/spacekitty)_
+
+[kitty]: https://ghashy.itch.io/space-kitty
+[kitty-gh]: https://github.com/ghashy/Space-Kitty
+[@ghashy]: https://ghashy.itch.io
+
+### [Flesh][flesh]
+
+![Screenshot of the Steam page](flesh.jpg)
+
+[Flesh] by [@im_oab] is a 2D-horizontal shmup game with hand-drawn animation,
+an organic/fleshy theme and a unique story. It is implemented using [Tetra].
+
+After almost three years of development, it's finally [out on Steam][flesh]!
+
+> Dive into a surreal journey as you devour a ship and battle peculiar creatures
+> in this 2D side-scrolling bullet hell shmup.
+> Unleash your skills, dodge relentless barrages, and uncover hidden mysteries
+> in a hand-drawn world of flesh and gore.
+
+The demo version was also updated, so consider trying the project out yourself.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/15g1aw1/flesh_steam)_
+
+[flesh]: https://store.steampowered.com/app/1660850/Flesh
+[Tetra]: https://github.com/17cupsofcoffee/tetra
+[@im_oab]: https://twitter.com/im_oab
+
+### [HackeRPG]
+
+![Screenshot of a level up window asking the player
+if they want new GPU, VRM or register](hacker.png)
+
+[HackeRPG] is a WIP action game where you play as a developer
+who needs to fight viruses and bugs with coding in real-time.
+The game's features include controlling your character using coding
+and expanding your toolset by programming your own functions, variables and daemons.
+
+[Recent updates][hackerpg-post] include:
+
+- The first playable prototype is now avalable on itch.io.
+- Sound effects.
+- Input autocomplete.
+- New enemies.
+
+[Here's a YouTube video][hackerpg-vid] that showcases the current gameplay.
+
+[HackeRPG]: https://fellow-pablo.itch.io/hackerpg
+[hackerpg-vid]: https://youtube.com/watch?v=ZIwcFl0wyx8
+[hackerpg-post]: https://fellow-pablo.itch.io/hackerpg/devlog/563473/002-build
+
+## Engine Updates
+
+### [Bevy v0.11][bevy_news]
+
+![bevy ssao](bevy_ssao.jpg)
+
+[Bevy][bevy_engine] is a refreshingly simple data-driven game engine built in Rust.
+It is [free and open-source][bevy_repo] forever!
+
+Bevy 0.11 brought many incredible new features.
+You can check out the [full release blog post here][bevy_news],
+but here are some highlights:
+
+- [Screen Space Ambient Occlusion (SSAO)](https://bevyengine.org/news/bevy-0-11/#screen-space-ambient-occlusion)
+- [Temporal Anti-Aliasing (TAA)](https://bevyengine.org/news/bevy-0-11/#temporal-anti-aliasing)
+- [Morph Targets](https://bevyengine.org/news/bevy-0-11/#morph-targets)
+- [Robust Contrast Adaptive Sharpening (RCAS)](https://bevyengine.org/news/bevy-0-11/#robust-contrast-adaptive-sharpening)
+- [WebGPU Support](https://bevyengine.org/news/bevy-0-11/#webgpu-support)
+- [Improved Shader Imports](https://bevyengine.org/news/bevy-0-11/#improved-shader-imports)
+- [Parallax Mapping](https://bevyengine.org/news/bevy-0-11/#parallax-mapping)
+- [Skyboxes](https://bevyengine.org/news/bevy-0-11/#skyboxes)
+- [Schedule-First ECS APIs](https://bevyengine.org/news/bevy-0-11/#schedule-first-ecs-apis)
+- [Gizmos](https://bevyengine.org/news/bevy-0-11/#gizmos)
+- [ECS Audio APIs](https://bevyengine.org/news/bevy-0-11/#ecs-audio-apis)
+- [UI Borders](https://bevyengine.org/news/bevy-0-11/#ui-node-borders)
+- [Grid UI Layout](https://bevyengine.org/news/bevy-0-11/#grid-ui-layout)
+- [UI Performance Improvements](https://bevyengine.org/news/bevy-0-11/#faster-ui-render-batching)
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/14v77m5/bevy_011),
+[Hacker News](https://news.ycombinator.com/item?id=36657970),
+[Twitter](https://twitter.com/BevyEngine/status/1678122584976797697),
+[Mastodon](https://mastodon.social/@bevy/110685755721601977)_
+
+[bevy_engine]: https://bevyengine.org
+[bevy_news]: https://bevyengine.org/news/bevy-0-11
+[bevy_repo]: https://github.com/bevyengine/bevy
+
+### [Fyrox][fyrox]
+
+![GIF showing focusing camera on object in the editor](fyrox-camera.gif)
+
+[Fyrox][fyrox] ([GitHub][fyrox-src], [Discord][fyrox-dis], [Twitter][fyrox-twi])
+is a game engine that aims to be easy to use and provide a large set
+of out-of-the-box features.
+
+This month [Fyrox v0.31 was released][fyrox-v0-31]. Highlights include:
+
+- A huge bunch of editor improvements like
+  the ability to create custom editor plugins,
+  ability to open multiple scenes,
+  saving/loading docking manager layout,
+  and a separate panel for camera preview.
+- Inverter node for AI behaviour trees.
+- 9-slice image widget.
+- Lots of [API docs][fyrox-docs] and [the book][fyrox-book] improvements,
+  mostly related to UI stuff.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/156pq0g/fyrox_0_31)_
+
+[fyrox]: https://fyrox.rs
+[fyrox-src]: https://github.com/FyroxEngine/Fyrox
+[fyrox-dis]: https://discord.com/invite/xENF5Uh
+[fyrox-twi]: https://twitter.com/DmitryNStepanov
+[fyrox-v0-31]: https://fyrox.rs/blog/post/fyrox-game-engine-0-31
+[fyrox-book]: https://fyrox-book.github.io
+[fyrox-docs]: https://docs.rs/fyrox
+
+## Learning Material Updates
+
+### Mobile Development with Bevy
+
+[@Nikl][nikl] spent some time developing a mobile game using Bevy and
+documented findings on his [blog][nikls-blog]. [The first post][android-bevy-post]
+contains notes on general project setup and some Android specific solutions.
+
+GitHub workflows were created for automatic builds.
+[A guide on how to set up an iOS workflow][ios-workflow] was released at
+the end of July.
+
+[nikl]: https://mastodon.online/@nikl_me
+[nikls-blog]: https://nikl.me
+[android-bevy-post]: https://nikl.me/blog/2023/notes_on_android_development_using_bevy
+[ios-workflow]: https://nikl.me/blog/2023/github_workflow_to_publish_ios_app
+
+### [Gentle Intro to GPUs for Backend Devs Pt1][backend-gpu]
+
+![Diagram of WGPU stack from the article](backend-gpu.png)
+
+[Vladimir Zaytsev][@xyzw_io] released [the first part][backend-gpu]
+of a series about introducing backend engineers to GPU programming:
+
+> In this series of articles, I would like to offer a gentle and popular
+> introduction to GPU programming specifically tailored for engineers.
+> Whether you’re new to GPU programming or simply want to expand your knowledge,
+> we’ve got you covered.
+> I’ll explain the fundamentals of GPU programming in a way
+> that’s easy to grasp if you’re more accustomed to working with backend services.
+
+The first part gives a high-level introduction into GPU compute landscape
+and walks a reader through a toy GPU program written with wgpu.
+
+[backend-gpu]: https://xyzw.io/posts/backend-gpu-p1
+[@xyzw_io]: https://twitter.com/xyzw_io
+
+## Tooling Updates
+
+### [Rerun][rerun]
+
+![Rerun showing a large 3D point cloud](rerun.png)
+
+[Rerun][rerun] ([Discord][rerun-dis], [GitHub][rerun-gh]) is an open-source SDK
+for logging complex visual data paired with a visualizer for exploring that data
+over time. While its primary focus is on robotics and computer vision, it can be
+useful for all kinds of rapid prototyping & algorithm development.
+
+[v0.8.0][rerun-v0-8-0] and subsequently [v0.8.1][rerun-v0-8-1] are out now!
+
+A few of the biggest highlights:
+
+- Pinhole logging is now easier to use in many cases.
+- The visualizer can now show coordinate arrows for all affine transforms
+  within the view.
+- Users that build their own Viewer applications can now add fully custom Space Views.
+- New optional flush_timeout specifies how long Rerun will wait if a TCP stream
+  is disconnected during a flush.
+- The `RecordingStream` now offers a stateful time API, similar to the Python APIs
+- Defaults to 8ms long microbatches instead of 50ms. This makes the default behavior
+  more suitable for use-cases like real-time video feeds.
+- The web viewer now incremental loads .rrd files when streaming over HTTP. #2412
+
+There's a growing community on [Discord][rerun-dis] waiting for you to join in
+case you have any questions, comments or just want to follow the latest
+development. The [GitHub project][rerun-gh] is MIT/Apache licensed and open to
+contribute for everyone, be it with suggestions, bugs or PRs.
+
+[rerun]: https://rerun.io
+[rerun-dis]: https://discord.gg/npTFxYR9
+[rerun-gh]: https://github.com/rerun-io/rerun
+[rerun-v0-8-0]: https://github.com/rerun-io/rerun/releases/tag/0.8.0
+[rerun-v0-8-1]: https://github.com/rerun-io/rerun/releases/tag/0.8.1
+
+### [glTF IBL Sampler UI][gltf-ibl-sampler-egui]
+
+![UI with field for input file and separate panels
+for different output parts](gltf-ibl-sampler.jpeg)
+
+[glTF IBL Sampler UI][gltf-ibl-sampler-egui] by [@pcwalton] is
+an artist-friendly egui frontend that wraps [glTF IBL Sampler][gltf-ibl-sampler]
+to generate cubemap skyboxes from panoramas.
+
+It provides an easy way to generate skyboxes for use in Bevy and other new game engines
+that use the modern KTX2 format as their native texture format.
+By default, the panorama is split up into base color, diffuse, and specular parts,
+with the mipmap levels corresponding to different roughness values of the material.
+
+[@pcwalton]: https://twitter.com/pcwalton
+[gltf-ibl-sampler-egui]: https://github.com/pcwalton/gltf-ibl-sampler-egui
+[gltf-ibl-sampler]: https://github.com/KhronosGroup/glTF-IBL-Sampler
+
+## Library Updates
+
+### [bevy_xpbd]
+
+{{ image_figure(
+    alt="Balls held by string swinging and hitting each other in a Newton's cradle"
+    src="bevy_xpbd.gif"
+    caption="Newton's cradle simulated using bevy_xpbd") }}
+
+[bevy_xpbd] by [@Jondolf] is a 2D and 3D physics engine based on
+Extended Position Based Dynamics for the Bevy game engine.
+It uses Bevy's Entity Component System (ECS) directly for the simulation data
+and logic, which makes the design and API feel better integrated into Bevy while
+avoiding the overhead associated with copying lots of data to a separate data
+structure like in many other physics engines such as bevy_rapier.
+
+In mid-July, bevy_xpbd 0.2 was released, featuring:
+
+- Spatial queries (ray casting, shape casting, point projection, intersection tests);
+- Bevy 0.11 support;
+- Improved scheduling;
+- Velocity damping;
+- Gravity scale;
+- Locking translational and rotational axes;
+
+and much more. You can find more details in the
+[release post][bevy-xpbd-post] and [changelog][bevy-xpbd-changelog].
+
+A lot of work was also done during the rest of July. The physics debug renderer
+was improved, collision stability issues were significantly reduced, external
+impulses were added, and Bevy's own `Transform`s can now be used directly
+for moving bodies. The narrow phase part of collision detection was also
+refactored into a separate plugin, which makes multithreading and several
+upcoming features much easier to implement while also improving modularity.
+
+_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/14zr5i5/bevy_xpbd_02)_
+
+[bevy_xpbd]: https://github.com/Jondolf/bevy_xpbd
+[@Jondolf]: https://github.com/Jondolf
+[bevy-xpbd-post]: https://joonaa.dev/blog/03/bevy-xpbd-0-2-0
+[bevy-xpbd-changelog]: https://github.com/Jondolf/bevy_xpbd/releases/tag/v0.2.0
+
+### [Sparsey]
+
+[Sparsey] by [@LechintanTudor] is a fast and flexible Entity Component System
+based on sparse sets.
+
+The latest release, v0.11.0, improves the performance of adding and removing
+components from entities and adds new functions for running systems that only
+borrow data from one of World, Resources or SyncResources.
+
+[Sparsey]: https://github.com/LechintanTudor/sparsey
+[@LechintanTudor]: https://github.com/LechintanTudor
+
+### [Hanabi]
+
+{{ image_figure(
+    alt="Glowing particles circling and raising up"
+    src="hanabi.gif"
+    caption="Hanabi effect entirely simulated on GPU thanks to the new Expression API of v0.7") }}
+
+The [Hanabi] library ([GitHub][hanabi-github], [docs.rs][hanabi-docs]) is a
+modern VFX library for the [Bevy game engine][bevy]. It focuses on scale to produce
+stunning visual effects (VFX) in real time, offloading most of the work to
+the GPU (compute shaders), with minimal CPU intervention. The design is inspired
+by modern particle systems found in other industry-leading game engines.
+
+This month, [Hanabi] saw its biggest release so far.
+Version 0.7 of Hanabi not only brings support for Bevy 0.11,
+but also adds a whole new Expression API
+to provide a new level of customizing for VFX authors.
+With expressions, developers can combine simple building blocks
+like simulation parameters (`time`, `delta_time`),
+effect properties (user-defined variables controlled from CPU),
+and math operators (`add`, `mul`, `cos`, ...),
+to directly modify each attribute of a particle (position, velocity, ...)
+and form complex behaviors with complete control.
+The expression API complements and extends the existing `Modifier`-based workflow
+to achieve even more complex effects.
+
+This release also marks a major stepping stone
+toward the ability to build a visual editor (node graph)
+to build and tweak visual effects in real time.
+
+Other changes include the ability to set a screen-space size for particles,
+and a new `KillSphereModifier` to confine particles
+to the inside or the outside of a sphere.
+See the [CHANGELOG][hanabi-changelog] for all details.
+
+[Hanabi]: https://crates.io/crates/bevy_hanabi
+[hanabi-github]: https://github.com/djeedai/bevy_hanabi
+[hanabi-docs]: https://github.com/djeedai/bevy_hanabi
+[bevy]: https://bevyengine.org
+[hanabi-changelog]: https://github.com/djeedai/bevy_hanabi/blob/v0.7.0/CHANGELOG.md
+
+### [Iced][iced]
+
+{{ image_figure(
+    alt="olf primitives gradually fade out and damaged regions
+are marked with red rectangles"
+    src="iced-incremental.png"
+    caption="Visualisation of damaged regions during the incremental rendering") }}
+
+[Iced][iced] is a Rust GUI library focused on simplicity and type safety.
+
+[Iced v0.10][iced-v0-10] is a huge release that brings a lot of updates.
+Some highlights:
+
+- Huge improvements to the text handling strategy
+  thanks to the adoption of [cosmic-text].
+- A new CPU-only software renderer based on [tiny-skia].
+- Runtime renderer fallback.
+- Configurable LineHeight support for text widgets.
+- Nested overlays.
+- Backend-specific primitives.
+- Offscreen rendering & screenshots.
+- Gradients for backgrounds.
+- ComboBox widget.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15e82lr/iced_0_10)_
+
+[iced]: https://iced.rs
+[iced-v0-10]: https://github.com/iced-rs/iced/releases/tag/0.10.0
+[cosmic-text]: https://github.com/pop-os/cosmic-text
+[tiny-skia]: https://github.com/RazrFalcon/tiny-skia
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Robo Instructus][robo-steam] was released 4 year ago \-
+    [Alex Butler shared an article][robo-post] about game's updates, stats,
+    and user feedback from the last year.
+  - [snaked] by [@kuviman] is a reversed snake game where you play as food.
+  - [@Syn9Dev] shared a couple of updates about their retro JRPG:
+    [battle inventory](https://twitter.com/Syn9Dev/status/1676082920182755332)
+    and [cave bugs enemies](https://twitter.com/Syn9Dev/status/1676969827980935172).
+  - [Sulis] v1.0 [was released this month][sulis-1].
+  - [@martin-t resumed developemnt of RecWars][recwars].
+  - [Vladimir Zaytsev posted a video][colonysim] of his WIP colony sim
+    showcasing the early progress on construction mechanics.
+  - [mochia.net] is a virtual pet site inspired by Neopets,
+    with a backend written in Rust.
+  - [@dobkeratops shared an update on their WIP shooter game][rusty-shooter]
+    featuring lighting tweaks and vehicle turrets.
+  - [Maginet][maginet] added an undo button and preparing for Steam release.
+  - [PatchGames started working on a new city building game][patchgames-vid].
+- Other engine updates:
+  - [godot-rs now supports Godot 4.1][godot-rs-4-1].
+  - [ggez v0.9][ggez-v0-9] mostly brings slight API tweaks and bugfixes.
+    The devs also shared their plans for ggez v10: 3d support, async asset loading,
+    and coroutines.
+- Other learning material updates:
+  - [GitGhillie shared an article][blender-bevy-ed] about using Blender
+    as a level editor for Bevy.
+  - [PhaestusFox released more Bevy tutorials on YouTube][@PhaestusFox]:
+    mostly about Bevy v0.11, Bevy's UI plugins, and Rapier integration.
+- Other tooling updates:
+  - [Internet Archive expands its Flash support using Ruffle.][ruffle]
+- Other library updates:
+  - [bevy_vello] is a Bevy plugin that provides rendering support for [lottie]
+    animations and SVGs on Bevy using [Vello] and [Velato].
+  - [hexx v0.8][hexx-0-8] release adds a hexmod representation and resolution system.
+  - [cuicui_layout] is a dumb layout algorithm you can rely on,
+    built for and with Bevy.
+  - [renet v0.0.13][renet] slightly improves the API and brings a couple of bugfixes.
+
+[robo-steam]: https://store.steampowered.com/app/1032170/Robo_Instructus
+[robo-post]: https://blog.roboinstruct.us/2023/07/16/4-years-old.html
+[snaked]: https://kuviman.itch.io/snaked
+[@kuviman ]: https://github.com/kuviman
+[@Syn9Dev]: https://twitter.com/Syn9Dev
+[sulis]: https://sulisgame.com
+[sulis-1]: https://github.com/Grokmoo/sulis/releases/tag/1.0.0
+[colonysim]: https://reddit.com/r/rust_gamedev/comments/14t8xgw/colonysim
+[recwars]: https://reddit.com/r/rust_gamedev/comments/1548teg/resumed_recwars
+[mochia.net]: https://reddit.com/r/rust/comments/15c0j97/a_virtual_pet_site
+[rusty-shooter]: https://reddit.com/r/rust_gamedev/comments/14wsnhx/rust_shooter_update
+[maginet]: https://twitter.com/evrimzone/status/1681302065069559812
+[patchgames-vid]: https://twitter.com/PatchGamesStdio/status/1677369018225680397
+
+[godot-rs-4-1]: https://mastodon.gamedev.place/@GodotRust/110669301088668526
+[ggez-v0-9]: https://reddit.com/r/rust_gamedev/comments/14v6x3z/ggez_news_0_9
+
+[blender-bevy-ed]: https://itch.io/blog/564971/blender-to-bevy-workflow-physics-props
+[@PhaestusFox]: https://youtube.com/@PhaestusFox
+
+[ruffle]: https://reddit.com/r/rust/comments/14zvk2l/internet_archive_expands_flash_support
+
+[bevy_vello]: https://github.com/vectorgameexperts/bevy_vello
+[lottie]: https://lottiefiles.com/what-is-lottie
+[Vello]: https://github.com/linebender/vello
+[Velato]: https://github.com/linebender/velato
+[cuicui_layout]: https://github.com/nicopap/cuicui_layout
+[renet]: https://github.com/lucaspoffo/renet/releases/tag/0.0.13
+[hexx-0-8]: https://github.com/ManevilleF/hexx/releases/tag/0.8.0
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+- /r/rust_gamedev:
+  - ["Data Oriented architectures other than ECS?"][red-dod-no-ecs]
+
+[red-dod-no-ecs]: https://reddit.com/r/rust_gamedev/comments/159zfye/data_oriented_architectures_other_than_ecs
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+- [bevy_mod_scripting is looking for maintainers][bevy_mod_scripting-help].
+- ['Are We Game Yet?' wants to know about projects/games/resources that
+  aren't listed yet][awgy].
+- [Graphite is looking for contributors][graphite-contribute] to help build the
+  new node graph and 2D rendering systems.
+- [winit's "difficulty: easy" issues][winit-issues].
+- [Backroll-rs, a new networking library][backroll-rs].
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [wgpu's "help wanted" issues][wgpu-issues].
+- [luminance's "low hanging fruit" issues][luminance-fruits].
+- [ggez's "good first issue" issues][ggez-issues].
+- [Veloren's "beginner" issues][veloren-beginner].
+- [A/B Street's "good first issue" issues][abstreet-issues].
+- [Mun's "good first issue" issues][mun-issues].
+- [SIMple Mechanic's good first issues][simm-issues].
+- [Bevy's "good first issue" issues][bevy-issues].
+- [Ambient's "good first issue" issues][ambient-issues].
+
+[bevy_mod_scripting-help]: https://github.com/makspll/bevy_mod_scripting/issues/48
+[awgy]: https://github.com/rust-gamedev/arewegameyet#contribute
+[graphite-contribute]: https://graphite.rs/contribute
+[winit-issues]: https://github.com/rust-windowing/winit/issues?q=is%3Aopen+is%3Aissue+label%3A%22difficulty%3A+easy%22
+[backroll-rs]: https://github.com/HouraiTeahouse/backroll-rs/issues
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[wgpu-issues]: https://github.com/gfx-rs/wgpu/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
+[luminance-fruits]: https://github.com/phaazon/luminance-rs/issues?q=is%3Aissue+is%3Aopen+label%3A%22low+hanging+fruit%22
+[ggez-issues]: https://github.com/ggez/ggez/labels/%2AGOOD%20FIRST%20ISSUE%2A
+[veloren-beginner]: https://gitlab.com/veloren/veloren/issues?label_name=beginner
+[abstreet-issues]: https://github.com/a-b-street/abstreet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[mun-issues]: https://github.com/mun-lang/mun/labels/good%20first%20issue
+[simm-issues]: https://github.com/mkhan45/SIMple-Mechanics/labels/good%20first%20issue
+[bevy-issues]: https://github.com/bevyengine/bevy/labels/D-Good-First-Issue
+[ambient-issues]: https://github.com/AmbientRun/Ambient/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+<!--
+TODO: Add real links and un-comment once this post is published
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Mastodon](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
+-->
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/048/kitty.gif b/content/news/048/kitty.gif
new file mode 100644
index 000000000..fc168b636
Binary files /dev/null and b/content/news/048/kitty.gif differ
diff --git a/content/news/048/meetup.jpg b/content/news/048/meetup.jpg
new file mode 100644
index 000000000..8c4e21c19
Binary files /dev/null and b/content/news/048/meetup.jpg differ
diff --git a/content/news/048/mis80.jpg b/content/news/048/mis80.jpg
new file mode 100644
index 000000000..9065ec270
Binary files /dev/null and b/content/news/048/mis80.jpg differ
diff --git a/content/news/048/opencombat.jpg b/content/news/048/opencombat.jpg
new file mode 100644
index 000000000..a6db782f3
Binary files /dev/null and b/content/news/048/opencombat.jpg differ
diff --git a/content/news/048/rerun.png b/content/news/048/rerun.png
new file mode 100644
index 000000000..1235c325c
Binary files /dev/null and b/content/news/048/rerun.png differ
diff --git a/content/news/048/tiny_snake.gif b/content/news/048/tiny_snake.gif
new file mode 100644
index 000000000..a6737e090
Binary files /dev/null and b/content/news/048/tiny_snake.gif differ
diff --git a/content/news/048/veloren.jpg b/content/news/048/veloren.jpg
new file mode 100644
index 000000000..f60f4d504
Binary files /dev/null and b/content/news/048/veloren.jpg differ
diff --git a/content/news/048/wor-steamdeck.jpg b/content/news/048/wor-steamdeck.jpg
new file mode 100644
index 000000000..2d4796b6a
Binary files /dev/null and b/content/news/048/wor-steamdeck.jpg differ
diff --git a/content/news/049/arsmilitaris.png b/content/news/049/arsmilitaris.png
new file mode 100644
index 000000000..219a7bdf7
Binary files /dev/null and b/content/news/049/arsmilitaris.png differ
diff --git a/content/news/049/cybergate.gif b/content/news/049/cybergate.gif
new file mode 100644
index 000000000..a2c4c0b68
Binary files /dev/null and b/content/news/049/cybergate.gif differ
diff --git a/content/news/049/graviton.gif b/content/news/049/graviton.gif
new file mode 100644
index 000000000..45a4a0bb3
Binary files /dev/null and b/content/news/049/graviton.gif differ
diff --git a/content/news/049/index.md b/content/news/049/index.md
new file mode 100644
index 000000000..2b09912d1
--- /dev/null
+++ b/content/news/049/index.md
@@ -0,0 +1,406 @@
++++
+title = "This Month in Rust GameDev #49 - August 2023"
+transparent = true
+date = 2023-11-16
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 49th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+It's been a while, huh? This newsletter is coming to you with a delay because
+the project cost too much maintainer burden and was put on hold for a while.
+Since then, we have had some restructuring and are back now, starting this month!
+The exact details will be part of April's newsletter, scheduled for release on May 3rd (just 5 days from now!)  
+See you all then!
+
+## Game Updates
+
+### [Graviton - The Great Sand Simulator][graviton-steam]
+
+![Graviton Sand Simulator Image](graviton.gif)
+
+[Graviton - The Great Sand Simulator][graviton-website]
+([Discord][graviton-discord], [Youtube][graviton-youtube])
+by [@hakolao] is a falling sand simulator in which you can define
+your own interactive sand rules.
+
+Continuing the developer's exploration into GPU sand simulation
+the app has been recently taken to another level with a complete rewrite.
+Now, with some [training][graviton-docs],
+you can program your own rules for the sand.
+Many example sands are provided from acid and blood to the classic
+Game of Life.
+
+Recent updates include:
+
+- Customizable sand with programmable rules.
+- [Shape & Mirror Draw Modes][graviton-youtube-mirror].
+- New UI, graphics and render modes.
+- Gif and Image export.
+- Image import.
+
+You can support the development by purchasing or wishlisting on
+[Steam][graviton-steam].
+
+[@hakolao]: https://github.com/hakolao
+[graviton-discord]: https://discord.gg/3MyPaDagsd
+[graviton-youtube]: https://youtube.com/watch?v=X_O90KyEt8o
+[graviton-steam]: http://s.team/a/2137280
+[graviton-website]: https://www.gravitongame.art/
+[graviton-docs]: https://docs.gravitongame.art/Tutorial
+[graviton-youtube-mirror]: https://youtube.com/watch?v=cOPy4Shqn8U
+
+### [Tunnet][tunnet-itch]
+
+![Tunnet screenshot showcasing the recent visual enhancements](tunnet.jpg)
+
+Tunnet ([Steam][tunnet-steam], [itch.io][tunnet-itch]) is an upcoming short
+puzzle/exploration game about digging tunnels and building computer networks.
+
+In August, [a new version of the demo build has been released][tunnet-post].
+Here are the most notable updates:
+
+- The game is now better optimized to run smoothly on the Steam Deck.
+- Some of the textures have been revamped and are now slightly more detailed.
+- The animations of the character portraits have been improved.
+- Several minor quality-of-life improvements like the ability to sprint have
+  been made.
+- A basic egui-based crash reporter will now be displayed when the game process
+  ends unexpectedly.
+
+[tunnet-itch]: https://puzzled-squid.itch.io/tunnet
+[tunnet-steam]: https://store.steampowered.com/app/2286390/Tunnet
+[tunnet-post]: https://puzzled-squid.itch.io/tunnet/devlog/580255/devlog-2-optimizations
+
+### [Oort]
+
+{{ image_figure(
+    alt="Asteroids-like vector graphics with ships and missiles
+made out of simple geometric forms"
+    src="oort.png"
+    caption="A fleet of ships") }}
+
+[Oort] ([GitHub][oort-gh], [Discord][oort-dis]) by [@rlane] is a programming
+game where you write Rust code to control spaceships in combat against other
+players. Your code needs to manage the thrusters, guns, missiles, comms, and
+radar of each ship in your fleet. There's a series of tutorials where you can
+solve key problems one by one, such as leading moving targets or missile
+guidance. The game runs in your browser via WebAssembly.
+
+Oort has started running weekly tournaments and the AIs have gotten more and more
+sophisticated each time. Check out this recent [tournament writeup][oort-tournament]
+where the top players discuss their strategies.
+
+_Discussions: [r/rust](https://reddit.com/r/rust/comments/167qyn0/oort)_
+
+[Oort]: https://oort.rs
+[oort-gh]: https://github.com/rlane/oort3
+[oort-dis]: https://discord.gg/vYyu9EhkKH
+[@rlane]: https://github.com/rlane
+[oort-tournament]: https://github.com/rlane/oort3/wiki/Tournament-Writeup-2023%E2%80%9009%E2%80%9011
+
+### [Tiny Glade]
+
+![A vibrant fantasy castle in a lush forest glade](tinyglade.jpg)
+
+[Tiny Glade] ([Twitter][tglade-twi])
+is a small relaxing game about doodling castles.
+
+This month, Tiny Glade was featured in the
+[Future Games Show August Showcase][tglade-fgs] with an exclusive new trailer.
+
+The [trailer and a number of accompanying screenshots][tglade-post] demonstrate
+recent changes in the game, and especially show off the new global illumination
+and [dynamic time passage][tglade-tod].
+
+[Tiny Glade]: https://store.steampowered.com/app/2198150/Tiny_Glade
+[tglade-twi]: https://twitter.com/PounceLight
+[tglade-post]: https://store.steampowered.com/news/app/2198150/view/3673302243803533512
+[tglade-fgs]: https://www.gamesradar.com/tiny-glade-fgs-gamescom-2023/
+[tglade-tod]: https://twitter.com/h3r2tic/status/1694442717252661448
+
+### [Veloren][veloren]
+
+{{ image_figure(
+    alt="Veloren a group of friends"
+    src="veloren.jpg"
+    caption="A group of friends") }}
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In August, Veloren saw a network library update, new locations in the character
+selection screen, the implementation of a new portal graphic, and numerous
+translation updates. Moreover, improvements were made to the airship fixes, loot
+balancing, and group chat issues. There have also been upgrades to the
+dependency, a README update, and tweaks to the buff death message.
+
+Ongoing projects currently in the works include the addition of Phoenix
+abilities, NPC arenas, frost Giga attacks, compasses, and a banking storage
+system. Other upcoming updates include an enhancement to the windmills, CI
+scripts, saving window size, the selection of a single-player world, the
+addition of lava material, and improvements to the weather network protocol.
+Work is also ongoing on ship movement, pet commands, Terracotta ruins, dwarven
+quarry, coastal towns, clifftown rework, and axe skills. They are also planning
+to implement physics interactions that increase your height when gliding,
+including the introduction of thermal and ridgelines.
+
+August's full weekly devlogs: "This Week In Veloren...": [#216][veloren-216].
+
+[veloren]: https://veloren.net
+[veloren-216]: https://veloren.net/devblog-216
+
+### [CyberGate][cybergate-yt]
+
+{{ image_figure(
+    alt="GIF of a player attacking a spherical enemy: one window is active,
+         the other shows the same view but a menu overlay on top"
+    src="cybergate.gif"
+    caption="Two client windows controlling the same pawn simultaneously.") }}
+
+CyberGate ([YouTube][cybergate-yt], [Discord][cybergate-dis]),
+CyberSoul is developing an ambitious multiplayer project,
+utilizing procedural generation and AI to offer a dynamic universe.
+
+Tech Progress:
+
+- Complete game framework overhaul.
+- Addressed engine limitations.
+- Upgraded game tools and utilities.
+- Introduced Cosmos APIs for universe management.
+- Redesigned privacy mechanisms.
+- New character authentication system.
+- Persistent player data.
+- Player Accounts: Login, Register, Verify, Guests.
+
+Also, this month's gameplay changes include
+characters remaining active despite a client's closure
+and saved player inventory, achievements, and settings.
+
+[cybergate-yt]: https://youtube.com/channel/UClrsOso3Xk2vBWqcsHC3Z4Q
+[cybergate-dis]: https://discord.gg/R7DkHqw7zJ
+
+## Engine Updates
+
+### [goku]
+
+[goku] ([Discord][goku-dis]) by [@ladroid] is a new 2D Rust game engine
+backed by SDL2. It's currently compatible with Windows and WASM
+and features [multi-language (Spa, Fra, Ger, Jpn) docs][goku-docs].
+
+Quick Peek:
+
+- Sprite sheets loading and animation support.
+- Basic particle effects.
+- Point, spot, and ambient lights.
+- UI layer with ready widgets like buttons, checkboxes, and sliders.
+- Audio support backed by SDL2 Mixer.
+- Gamepad input support.
+- Tile system and JSON format for describing scenes.
+- Built-in support for parallax backgrounds.
+- Simple timing and frame management utils.
+- Behavior tree AIs.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/165luwu/intro_goku)_
+
+[goku]: https://github.com/ladroid/goku
+[@ladroid]: https://github.com/ladroid
+[goku-docs]: https://lados-organization.gitbook.io/goku
+[goku-dis]: https://discord.gg/9TAMqdRyED
+
+## Learning Material Updates
+
+### [Failing to build P2P Multiplayer Pong with Bevy][chrisbiscardi-vid1]
+
+[![multiplayer-pong](multiplayer-pong-fail.jpg)][chrisbiscardi-vid1]
+
+[@chrisbiscardi] published a [video][chrisbiscardi-vid1] covering
+P2P multiplayer games with rollback networking and physics.
+This video dives into what makes it difficult and what parts
+work out of the box before identifying better potential paths to take in the future.
+
+_Discussions: [Mastodon](https://hachyderm.io/@chrisbiscardi/110934091254135119)_
+
+[chrisbiscardi-vid1]: https://youtube.com/watch?v=wpx9qhKEuP8
+[@chrisbiscardi]: https://twitter.com/chrisbiscardi
+
+### Mobile Development with Bevy
+
+[@Nikl][nikl] published two blog posts on the topic of mobile development
+using Bevy. [The first post][mobile-bevy-post] concentrates on getting
+builds ready for the Apple and Google App stores. It outlines how to
+use the tool [x-build][x-build] to create Android App bundles and some
+required changes to get iOS builds accepted by the App store.
+
+[A second post][android-workflow] documents how to set up and configure
+a GitHub workflow to automate releases of a Bevy application to the
+Google Play Store.
+
+[nikl]: https://mastodon.online/@nikl_me
+[x-build]: https://github.com/rust-mobile/xbuild/
+[mobile-bevy-post]: https://nikl.me/blog/2023/notes_on_mobile_development_with_bevy_2
+[android-workflow]: https://nikl.me/blog/2023/github_workflow_to_publish_android_app
+
+## Tooling Updates
+
+### [Space editor][space_editor]
+
+![Space editor window with opened level](space_editor.png)
+
+[Space editor][space_editor] is an editor designed for Bevy engine
+that simplifies level and object template creation. Here are its key features:
+
+- Intuitive UI is built on top of bevy-inspector-egui and egui-gizmo
+  to easy objects manipulate.
+- It supports the bevy_xpbd physics library,
+  making customizing collider positions faster than ever.
+- Run your levels directly from the editor.
+  This enables quick and efficient development iteration.
+- Save your levels and object templates in the standard Bevy scene format
+  and spawn in game with just one line of code.
+- Many custom structures that allow you to customize saved scenes
+  equally conveniently, both via gui and directly editing the saved text file.
+
+The [Github project][space_editor] is free for use
+and open to contributions from everyone, be it with suggestions, bugs or PRs.
+
+[space_editor]: https://github.com/rewin123/space_editor
+
+## Library Updates
+
+### [Dexterous Developer][dexterous_developer]
+
+[Dexterous Developer][dexterous_developer] by [@lee-orr]
+is an experimental hot-reload system for the [Bevy] game engine.
+Features:
+
+- Define the reloadable areas of your game explicitly \- which can include
+  systems, components, and resources (with some limitations).
+- Reset resources to a default or pre-determined value upon reload.
+- Serialize/deserialize your reloadable resources & components, allowing you to
+  evolve their schemas so long as they are compatible with the de-serializer.
+- Mark entities to get removed on hot reload.
+- Run systems after hot-reload.
+- Create functions to set up & tear down upon either entering/exiting a state
+  or on hot reload.
+- Only includes any hot reload capacity in your build
+  when you explicitly enable it - such as by using the CLI launcher.
+- Cross-platform/cross-device hot reload - run a "hot reload server"
+  on a dev environment, and execute the application elsewhere.
+
+The library is quite new and currently known issues include:
+mobile/WASM support and the need to pre-define events & states.
+
+[dexterous_developer]: https://github.com/lee-orr/dexterous_developer
+[@lee-orr]: https://github.com/lee-orr
+[Bevy]: https://bevyengine.org
+
+### [nanogltf]
+
+{{ image_figure(
+    alt='The "DamagedHelmet" sample model'
+    src="nanogltf-helmet.gif"
+    caption="nanogltf+miniquad glTF viewer") }}
+
+[nanogltf] by [@not-fl3] is a minimalist [nanoserde]-based [glTF][gltf]
+parser library that can load most of the glTF's [sample models][gltf-models]
+and fairly complex Blender exported scenes.
+
+> Macroquad used to be notoriously bad at 3d. nanogltf is a part of a big
+> macroquad overhaul with a goal to make it suitable for, at least,
+> simple low-poly 3d games.
+
+nanogltf comes with a a GL2+/Metal glTF miniquad-based
+[viewer example][nanogltf-view].
+
+[nanogltf]: https://github.com/not-fl3/nanogltf
+[nanogltf-view]: https://github.com/not-fl3/nanogltf/tree/master/examples/viewer
+[nanoserde]: https://reddit.com/r/rust/comments/hfru5a/nanoserde_cut_50s_of_build_time
+[@not-fl3]: https://github.com/not-fl3
+[gltf-models]: https://github.com/KhronosGroup/glTF-Sample-Models
+[glTF]: https://khronos.org/gltf
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+- Other game updates:
+  - [Tribes][tribes-devlog] got multiplayer support, new art and economics rework.
+
+[tribes-devlog]: https://uvizhe.im/posts/tribes-p2
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+<!--
+TODO: Add real links and un-comment once this post is published
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Mastodon](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
+-->
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/049/multiplayer-pong-fail.jpg b/content/news/049/multiplayer-pong-fail.jpg
new file mode 100644
index 000000000..ba6bcf68f
Binary files /dev/null and b/content/news/049/multiplayer-pong-fail.jpg differ
diff --git a/content/news/049/nanogltf-helmet.gif b/content/news/049/nanogltf-helmet.gif
new file mode 100644
index 000000000..ce2cde432
Binary files /dev/null and b/content/news/049/nanogltf-helmet.gif differ
diff --git a/content/news/049/oort.png b/content/news/049/oort.png
new file mode 100644
index 000000000..b892287ad
Binary files /dev/null and b/content/news/049/oort.png differ
diff --git a/content/news/049/space_editor.png b/content/news/049/space_editor.png
new file mode 100644
index 000000000..9027b49dc
Binary files /dev/null and b/content/news/049/space_editor.png differ
diff --git a/content/news/049/tinyglade.jpg b/content/news/049/tinyglade.jpg
new file mode 100644
index 000000000..5a0e08768
Binary files /dev/null and b/content/news/049/tinyglade.jpg differ
diff --git a/content/news/049/tunnet.jpg b/content/news/049/tunnet.jpg
new file mode 100644
index 000000000..59b69335d
Binary files /dev/null and b/content/news/049/tunnet.jpg differ
diff --git a/content/news/049/veloren.jpg b/content/news/049/veloren.jpg
new file mode 100644
index 000000000..8a42567a7
Binary files /dev/null and b/content/news/049/veloren.jpg differ
diff --git a/content/news/050/OpenCombat202404.jpg b/content/news/050/OpenCombat202404.jpg
new file mode 100644
index 000000000..dca23f61e
Binary files /dev/null and b/content/news/050/OpenCombat202404.jpg differ
diff --git a/content/news/050/index.md b/content/news/050/index.md
new file mode 100644
index 000000000..177824dca
--- /dev/null
+++ b/content/news/050/index.md
@@ -0,0 +1,371 @@
++++
+title = "This Month in Rust GameDev #50 - April 2024"
+transparent = true
+date = 2024-05-03
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 50th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Library Updates](#library-updates)
+- [Other News](#other-news)
+- [Discussions](#discussions)
+
+## Announcements 
+
+*Please fill out [this survey][survey] before skipping this section! More info below!*
+
+Hey everyone, it's been a while! As you've certainly noticed, the newsletter has
+been on hiatus for a while. The reason was mostly maintainer burnout, which is also
+why the newsletter of August 2023 was not published [until a few days
+ago][august-news].
+
+We're back now though! A couple of community members, Jan Hohenheim
+([@janhohenheim]) and Thierry Berger ([@Vrixyz]), have led the revival of the
+newsletter. This includes making changes requested by the community, and
+improving sustainability for the long term.
+
+You can read more about the changes being made in [this blog
+post][newsletter-changes-blog].
+
+### Community Survey
+
+This restructuring is also a good time to improve the content of the newsletter.
+We've got some community feedback on the [Rust GameDev Discord][Discord] already
+and would like to hear more from you. It would be great if you could fill out
+[this survey][survey] to let us know how we can improve the newsletter going
+forward. The survey closes on the **28th of May**. We will be evaluating the
+[survey] results in an upcoming blog post, so stay tuned for that.
+
+That's all for now. Have fun reading!
+
+[august-news]: https://gamedev.rs/news/049/
+[newsletter-changes-blog]: https://gamedev.rs/blog/newsletter-changes/
+[@janhohenheim]: https://github.com/janhohenheim
+[@Vrixyz]: https://github.com/Vrixyz
+[survey]: https://forms.gle/oeSb46twWsxRKYJe7
+[Discord]: https://discord.gg/game-development-in-rust-676678179678715904
+
+## Game Updates
+
+### [Way of Rhea][wor]
+
+[![Way of Rhea](wor.jpg)][wor-trailer]
+
+[Way of Rhea][wor] just got a release date: it will be coming to Steam on
+**May 20th, 2024**!
+
+Way of Rhea ([Steam](https://store.steampowered.com/app/1110620/Way_of_Rhea/)) is a color-based puzzle game with difficult puzzles, but forgiving
+mechanics being developed by [@masonremaley] in a custom Rust engine.
+
+You can support development by [wishlisting Way of Rhea on Steam][wor], or
+[signing up for the mailing list][wor-mail].
+
+Recently, a [closed beta][wor-closed-beta] began. All characters now have voices, and various [speedrunning features][wor-speedrun] were added. 
+Older CPUs are [now supported][wor-avx]. 
+Secrets were made harder, and an [in-game achievement UI][wor-achievements] was created.
+
+For the full changelog, see the [release notes][wor-release-notes].
+
+[@masonremaley]: https://twitter.com/masonremaley
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n50
+[wor-trailer]: https://youtu.be/vFsO436r2Pw
+[wor-closed-beta]: https://store.steampowered.com/news/app/1110620/view/7665759271877780609
+[wor-speedrun]: https://clan.cloudflare.steamstatic.com/images//35599024/6ee82d4e0105f073082c83626e37933e682b5936.png
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[wor-release-notes]: https://store.steampowered.com/news/app/1110620
+[wor-avx]: https://store.steampowered.com/news/app/1110620/view/4118050466869150657
+[wor-achievements]: https://clan.cloudflare.steamstatic.com/images//35599024/573f81c1ebce54d9efedcd693fcbe684a5629c7f.png
+
+### [sm64jsarchive][sm64jsarchive]
+
+![Super Mario 64 JavaScript Archive](sm64jsarchive.jpg)
+
+[SM64JSARCHIVE][sm64jsarchive] is an actively maintained fork of [sm64js]: a decompilation project of Super Mario 64 to JavaScript.
+Additional sidenote: The MMO servers are not always running for sm64jsarchive.
+
+The backend server, which is written in Rust,
+is now live at <https://sm64jsarchive.com>
+
+A successful stress test for the MMO feature was run on April 10th.
+
+[sm64jsarchive]: https://sm64jsarchive.com
+[sm64js]: https://github.com/sm64js/sm64js/tree/MMO
+
+### [Open Combat][OpenCombat_website]
+
+{{ image_figure(
+    alt="OpenCombat: demo available soon"
+    src="OpenCombat202404.jpg"
+    caption="Official demo available soon") }}
+
+Open Combat ([GitHub][OpenCombat_github], [Discord][OpenCombat_discord]) is a real-time tactical game
+which takes place during World War II.
+
+The basic game logic and HUD are now complete, 
+and the high-definition map for the demo is finished.
+
+Some things are missing, like high-definition assets for soldiers or minimal AI for opponents.
+But the [demo is playable][OpenCombat_release] and the team would love to hear your feedback!
+
+[OpenCombat_website]: https://opencombat.bux.fr/
+[OpenCombat_github]: https://github.com/buxx/OpenCombat
+[OpenCombat_discord]: https://discord.gg/6P2vtFh2Px
+[OpenCombat_release]: https://github.com/buxx/OpenCombat/releases
+
+### [Times of Progress][times-of-progress-steam]
+
+![Times of Progress: an isometric city builder game set during the industrial revolution](times_of_progress.jpg)
+
+Times of Progress ([Steam][times-of-progress-steam], [Twitter/X][times-of-progress-twitter], [Mastodon][times-of-progress-mastodon]) 
+is an upcoming city builder game set during the industrial revolution.
+
+In April, they added lots of UI widgets and improved performance by refactoring the orders system.
+
+The demo is not available yet but interested players can sign up for the upcoming closed beta by joining the [newsletter][times-of-progress-newsletter].
+
+[times-of-progress-steam]: https://store.steampowered.com/app/2628450/Times_of_Progress/
+[times-of-progress-newsletter]: https://subscribepage.io/pressingthumbs
+[times-of-progress-twitter]: https://twitter.com/ElmoSampedro
+[times-of-progress-mastodon]: https://mastodon.online/@elmowilk
+
+### Monk Tower
+
+![Monk Tower Screen shot](monk_tower.png)
+
+Monk Tower ([itch.io][monk-tower-itch], [Google Play][monk-tower-play], [Github][monk-tower-github])
+is a tiny coffee-break roguelike game, intended for short runs (ca. 15mins).
+
+The gameplay is quite distilled and revolves mostly around resource management.
+The player has limited inventory capacity and the weapons get damaged
+after each use. There are 20 randomly generated levels to beat.
+
+It is available on desktop (Windows / Linux), Android, and Web (mobile friendly).
+The game's source code also comes with a custom WGPU-based 2D framework.
+
+_Discussions: ([/r/roguelikes][monk-tower-reddit])_
+
+[monk-tower-itch]: https://maciekglowka.itch.io/monk-tower
+[monk-tower-play]: https://play.google.com/store/apps/details?id=com.maciejglowka.monk_tower
+[monk-tower-github]: https://github.com/maciekglowka/tower-rl
+[monk-tower-reddit]: https://www.reddit.com/r/roguelikes/comments/1butvew/monk_tower_a_coffeebreak_roguelike_google_play/
+
+### You are Merlin
+
+![You are Merlin screenshot](you-are-merlin.png)
+
+You are Merlin ([Web Game][you-are-merlin-web], [GitHub - Rust/CLI][you-are-merlin-github], [GitHub - WASM][you-are-merlin-www-github]) by [@hseager](https://github.com/hseager)
+is a text adventure game that compiles to both CLI and WebAssembly.
+
+This initial version features a main quest, side quests, items, and a boss fight.
+Players can choose their favourite visual theme such as Zelda, Warcraft, and Fallout. The web version also supports mobile devices.
+
+Although fairly simple, this first version provides a good foundation for building more features in later updates.
+
+_Discussions: ([/r/rust_gamedev][you-are-merlin-reddit-post])_
+
+[you-are-merlin-web]: https://hseager.github.io/you-are-merlin-www/
+[you-are-merlin-github]: https://github.com/hseager/you-are-merlin
+[you-are-merlin-www-github]: https://github.com/hseager/you-are-merlin-www
+[you-are-merlin-reddit-post]: https://www.reddit.com/r/rust_gamedev/comments/1c9k1kb/you_are_merlin_a_text_adventure_game/
+
+### [Jumpy]
+
+{{ image_figure(
+    alt="Machine Gun and Periscope"
+    src="jumpy.png"
+    caption="Jumpy: Machine gun and Periscope") }}
+
+[Jumpy] ([GitHub][Jumpy], [Discord][jumpy_discord], [Twitter][jumpy_twitter]) by
+[Spicy Lobster][spicy_lobster] is a pixel-style, tactical 2D shooter with a fishy
+theme.
+
+This month the base functionalities of round scoring and map transitions have been implemented.
+New weapons such as the Blunderbuss, Periscope, and Machine Gun are ready for fish-on-fish combat.
+
+Jumpy is now featuring corpse physics and a "ragdoll" button to send your Fish [flopping about][jumpy_ragdoll].
+
+On the treasure map for the near future is improving UX and new player experience,
+polish and improvements on match scoring / round transitions, and more awesome weapons.
+
+_Discussions: [GitHub][jumpy_discussions], [Twitter][jumpy_twitter]_
+
+[Jumpy]: https://github.com/fishfolks/jumpy
+[jumpy_ragdoll]: https://github.com/fishfolk/jumpy/pull/932
+[jumpy_discussions]: https://github.com/fishfolks/jumpy/discussions
+[jumpy_twitter]: https://twitter.com/spicylobsterfam
+[jumpy_discord]: https://discord.gg/4smxjcheE5
+[spicy_lobster]: https://spicylobster.itch.io/
+
+## Engine Updates
+
+### Bottomless-Pit 0.3
+
+![The Bottomles-Pit Logo. A small hole in the ground with cat ears and text saying bottomless-pit](https://eggshark.dev/images/bplogo.png)
+
+Bottomless-Pit is a 2d game engine written with WGPU that has been around for a year, which can be found on [crates.io][Bottomless-Pit_cratesio] and [GitHub][Bottomless-Pit_github].
+Very recently a 2d camera was added as well as WASM and web support.
+Current development is being focused on stability and QoL changes like texture sampling options and improved input.
+You can check out several [engine examples on the web][Bottomless-Pit_Website].
+Since the engine is in its infancy, its developer calls for developers to use it and give the engine some feedback.
+
+Current features are:
+
+- Custom Shader Support
+- Basic rendering
+- Text rendering
+- Input and window event handling
+
+[Bottomless-Pit_Website]: https://eggshark.dev/bp-examples
+[Bottomless-Pit_cratesio]: https://crates.io/crates/bottomless-pit
+[Bottomless-Pit_github]: https://github.com/EggShark/bottomless-pit
+
+## Learning Material Updates
+
+### Building games for Android with Rust
+
+[@maciekglowka] has recently shared some thoughts [on their blog][android-games-blog] about building Rust games
+for Android. Rather than a step-by-step guide, it is a collection
+of issues one can possibly encounter when targeting Android.
+
+Topics mentioned:
+
+- 'Window' creation (via winit)
+- Android app's lifecycle vs. the WGPU surface creation
+- User data storage
+- System UI hiding via jni and Android API
+- Building AAB files to meet Google Play requirements
+
+[android-games-blog]: https://maciejglowka.com/blog/building-games-for-android-with-rust/
+[@maciekglowka]: https://github.com/maciekglowka
+
+### Bevy: A case study in ergonomic Rust
+
+[Chris Biscardi][chris-yt] was at RustNation UK recently and gave talk on Bevy's 
+Rusty ergonomics titled [Bevy: A case study in ergonomic Rust][case-study-video]. 
+In their own words:
+
+> There are at least two, if not three, talks worth of material around how Bevy
+> progressively discloses complexity across multiple "stacks" of APIs; and the
+> work done so far is very impressive in terms of how it all fits together,
+> especially as a large-and-growing OSS project.
+
+[chris-yt]: https://www.youtube.com/c/chrisbiscardi
+[case-study-video]: https://www.youtube.com/watch?v=CnoDOc6ML0Y
+
+### Reactivity in Bevy: From the Bottom Up
+
+[Talin][talin] wrote a three-part series on ["Reactivity in Bevy: From the Bottom Up"][reactivity-blog], 
+which describes the workings of `bevy_reactor`, an experimental, work-in-progress framework for doing reactive programming within Bevy.
+
+[reactivity-blog]: https://machinewords.hashnode.dev/reactivity-in-bevy-from-the-bottom-up-part-1
+[talin]: https://dreamertalin.medium.com/
+
+## Library Updates
+
+### Jolt Bindings
+
+[Lucian Greathouse][lucien] has published their [Jolt][jolt] bindings for Rust. Jolt is a C++ physics engine you might know from its use in Horizon: Forbidden West.
+Lucian has previously worked on [JoltC][joltc], a C API for Jolt, which this project uses in the background.
+
+The bindings work can be found on the [just-rust GitHub repo][jolt-rust] GitHub repository and come in two flavors:
+- `joltc-sys`: Unsafe bindings to the C API 
+- `rolt`: Ergonomic and safe Rust API
+
+[lucien]: https://lpg.space/
+[jolt]: https://github.com/jrouwe/JoltPhysics
+[jolt-rust]: https://github.com/SecondHalfGames/jolt-rust
+[joltc]: https://github.com/SecondHalfGames/JoltC
+
+### Hexx 0.17
+
+Hexx, the popular crate for hexagonal tools, [has released version 0.17](https://github.com/ManevilleF/hexx/releases/tag/0.17.0). 
+This release has a strong focus on performance:
+- Large performance improvement on various computations like rings and wedges
+- Add support for optimized storage for hexagonal and rhombus-shaped maps
+- Added support for rectiline path
+
+And utility:
+- Added a 13th example showcasing all natively supported shapes
+- Removed confusing items
+
+### [Lightyear 0.13][lightyear_website]
+
+[lightyear_website] is a comprehensive networking library for bevy to make multiplayer games.
+It comes with multiple types of transports (WebTransport, WebSocket, UDP, etc.) 
+and supports replication techniques like client-side prediction, server interpolation, interest management, and more!
+Check out the [examples][lightyear_examples]!
+
+The latest release, [0.13][lightyear_release], brings two big new features:
+- **Steam support**: you can now use the Steamworks SDK as your transport layer, which lets you use the Valve network!
+Note that lightyear supports running multiple transports in parallel, so it's possible to have cross-play between Steam and non-Steam users.
+- **Listen-server mode**: it is now possible to run a server and a client in the same process/bevy app.
+This can be useful to avoid the costs of a dedicated server, or to have a similar codebase between singleplayer and multiplayer.
+
+[Example (with 300ms of latency)](https://github.com/cBournhonesque/lightyear/assets/8112632/ee547c32-1f14-4bdc-9e6d-67f900af84d0)
+
+[lightyear_website]: https://github.com/cBournhonesque/lightyear
+[lightyear_release]: https://github.com/cBournhonesque/lightyear/releases/tag/0.13.0
+[lightyear_examples]: https://github.com/cBournhonesque/lightyear/tree/main/examples
+
+## Other News
+
+- Alice I. Cecile of the Bevy Foundation would like to collect community feedback
+on game development in Rust. Please fill out [her survey](https://forms.gle/kLzv5Ww3U8dLGUHU8)!
+
+## Discussions
+
+LogLog games has published a [very well-written blog post](https://loglog.games/blog/leaving-rust-gamedev/) about their reasons to leave Rust gamedev.
+It talks about shortcomings in Rust as a language in general and as a game development tool in particular. 
+Some insights into the limitations of ECS are also provided. Some interesting community discussions have been sparked by this post:
+
+- [Hacker News](https://news.ycombinator.com/item?id=40172033)
+- [/r/gamedev](https://www.reddit.com/r/gamedev/comments/1ceipzc/leaving_rust_gamedev_after_3_years_blog_post_by/)
+- [/r/rust](https://www.reddit.com/r/rust/comments/1cdqdsi/lessons_learned_after_3_years_of_fulltime_rust/)
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1cja5v8/this_month_in_rust_gamedev_april_edition_released/),
+[rust@lemmy.ml](https://lemmy.ml/post/15196466),
+[Hacker News](https://news.ycombinator.com/item?id=40248347),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112377678490780983),
+[Twitter](https://twitter.com/rust_gamedev/status/1786406704629829935),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/news/050/jumpy.png b/content/news/050/jumpy.png
new file mode 100644
index 000000000..263760128
Binary files /dev/null and b/content/news/050/jumpy.png differ
diff --git a/content/news/050/monk_tower.png b/content/news/050/monk_tower.png
new file mode 100644
index 000000000..a801a728d
Binary files /dev/null and b/content/news/050/monk_tower.png differ
diff --git a/content/news/050/sm64jsarchive.jpg b/content/news/050/sm64jsarchive.jpg
new file mode 100644
index 000000000..d9a687de1
Binary files /dev/null and b/content/news/050/sm64jsarchive.jpg differ
diff --git a/content/news/050/times_of_progress.jpg b/content/news/050/times_of_progress.jpg
new file mode 100644
index 000000000..c13c0a229
Binary files /dev/null and b/content/news/050/times_of_progress.jpg differ
diff --git a/content/news/050/wor.jpg b/content/news/050/wor.jpg
new file mode 100644
index 000000000..05c2cda4f
Binary files /dev/null and b/content/news/050/wor.jpg differ
diff --git a/content/news/050/you-are-merlin.png b/content/news/050/you-are-merlin.png
new file mode 100644
index 000000000..9cb2cc5e6
Binary files /dev/null and b/content/news/050/you-are-merlin.png differ
diff --git a/content/news/051/bevy_rep.jpg b/content/news/051/bevy_rep.jpg
new file mode 100644
index 000000000..23d4cdc87
Binary files /dev/null and b/content/news/051/bevy_rep.jpg differ
diff --git a/content/news/051/bevy_rustunit_meetup_3.jpg b/content/news/051/bevy_rustunit_meetup_3.jpg
new file mode 100644
index 000000000..209a51e64
Binary files /dev/null and b/content/news/051/bevy_rustunit_meetup_3.jpg differ
diff --git a/content/news/051/bevy_rustunit_meetup_4.jpg b/content/news/051/bevy_rustunit_meetup_4.jpg
new file mode 100644
index 000000000..781f9872a
Binary files /dev/null and b/content/news/051/bevy_rustunit_meetup_4.jpg differ
diff --git a/content/news/051/cybergate.gif b/content/news/051/cybergate.gif
new file mode 100644
index 000000000..0dd78502f
Binary files /dev/null and b/content/news/051/cybergate.gif differ
diff --git a/content/news/051/fyrox-editor.png b/content/news/051/fyrox-editor.png
new file mode 100644
index 000000000..20a9f4366
Binary files /dev/null and b/content/news/051/fyrox-editor.png differ
diff --git a/content/news/051/index.md b/content/news/051/index.md
new file mode 100644
index 000000000..454399959
--- /dev/null
+++ b/content/news/051/index.md
@@ -0,0 +1,386 @@
++++
+title = "This Month in Rust GameDev #51 - May 2024"
+transparent = true
+date = 2024-06-05
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 51st issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Other News](#other-news)
+- [Misc. Links](#misc-links)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+![image/GIF description](image link)
+_image caption_
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+### Survey Results
+
+Last month, we asked you to fill out a survey to help us improve the rebooted newsletter. Thanks to 52 of you, we've got [some data][survey-data] now! 
+We analyzed the results in [this blog post][survey_results]. The biggest takeaways are:
+- People are generally excited about the newsletter
+- The current frequency of the newsletter is good
+- Readers do not want anything in the newsletter generated by AI
+- Contributing to the newsletter could be easier. If you've got ideas on how to make this happen, please [let us know](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/1519)!
+
+You can visit the [blog post][survey_results] to see the full results and some nice plots. 
+We will discuss how to act on this feedback next month and keep you updated on the changes we make. 
+
+Thanks to everyone who participated!
+
+[survey-data]: https://github.com/janhohenheim/rust-gamedev-statistics/tree/main/jan-hohenheim-2024
+[survey_results]: <https://gamedev.rs/blog/survey-02>
+
+### Email Subscription
+
+Last month, we announced that we would add an email subscription option to the newsletter. 
+Unfortunately, we did not manage to implement this in time for this issue.
+He will [work on this feature](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/24) for the next month, and we hope to have it ready for you then.
+
+## Game Updates
+
+### [Way of Rhea][wor]
+
+{{ image_figure(
+    alt="Way of Rhea"
+    src="wor.jpg"
+    caption="Way of Rhea: a puzzle game. Available on Steam."
+    link="https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n51") }}
+
+[Way of Rhea][wor] released on May 20th as part of the
+[Cerebral Puzzle Showcase][wor-cps]!
+
+[![Way of Rhea](wor-animated.gif)][wor]
+
+Way of Rhea is a color-based puzzle game with difficult puzzles, but
+forgiving mechanics developed by [Mason Remaley] in a custom Rust engine.
+
+You can support development by [purchasing Way of Rhea on Steam][wor], or
+[signing up for the mailing list][wor-mail] to hear about future games.
+
+[Mason Remaley]: https://masonremaley.com/
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n51
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[wor-cps]: https://www.cerebralpuzzleshowcase.com/
+
+### [Untitled Pixel Wizard Game][pixel-wizards]
+
+{{ image_figure(
+    alt="A target being destroyed by a rudimentary flame thrower spell"
+    src="untitled-pixel-wizards-game.gif"
+    caption="A deadly foe meets its end.",
+    link="https://slowrush.dev") }}
+
+[Untitled Pixel Wizard Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about
+killing baddies using spells powered by pixel physics.
+
+Over the last few months, the falling sand simulation learned to play (somewhat) nicely with Rapier
+rigid bodies; see [Bridging Physics Worlds][pixel-wizards-bridging-physics-worlds] and subsequent updates.
+
+This month:
+
+- [Tilemapping via LDTK][pixel-wizards-tilemapping]: levels got just a tiny bit prettier.
+- [Level Progression][pixel-wizards-levels]: players learn to die, and levels link together.
+- [Target Practice][pixel-wizards-targets]: the first "enemy" was added to the game.
+
+[pixel-wizards]: https://slowrush.dev
+[Noita]: https://store.steampowered.com/app/881100/Noita/
+[pixel-wizards-bridging-physics-worlds]: https://www.slowrush.dev/news/bridging-physics-worlds/
+[pixel-wizards-targets]: https://www.slowrush.dev/news/target-practice/
+[pixel-wizards-arch]: https://www.slowrush.dev/news/architectural-questions/
+[pixel-wizards-levels]: https://www.slowrush.dev/news/level-progression/
+[pixel-wizards-tilemapping]: https://www.slowrush.dev/news/tilemapping/
+[Leaving Rust game dev after 3 years]: https://loglog.games/blog/leaving-rust-gamedev/
+
+### [mirr/orb]
+
+{{ image_figure(
+    alt="mirr/orb"
+    src="mirrorb.png"
+    caption="A typical level and its UI") }}
+
+[mirr/orb] by [syn9]
+is a puzzle game about bouncing lasers off mirrors to activate orbs.
+
+The game was created in 9 days using syn9's Rust mini game framework [mgfw] and released on May 27th.
+
+This release contains 110 levels which pull from 870 available puzzle layouts.
+
+[mirr/orb]: https://syn9dev.itch.io/mirrorb
+[syn9]: https://twitter.com/Syn9Dev
+[mgfw]: https://github.com/Syn-Nine/mgfw
+
+### [CyberGate Playground][cybergate-shorts]
+
+{{ image_figure(
+    alt="Improved Hammer Destruction"
+    src="cybergate.gif"
+    caption="Shooting a Hammer against a Floating Wall and Destroying part of it") }}
+
+CyberGate Playground is a multiplayer browser game where players claim territory
+by painting the environment in their color, with the goal of overpowering opponents.
+
+The past few months' updates include:
+- Flying with butterfly-like mechanics
+- [Fusion Upgrade:][cybergate-fuse] Combine hammers, balls, and dice to multiply their powers
+- Hammer destruction made more challenging and interesting, with upgrades enabling deeper wall penetration
+- Improved strength and weight system, and calculate their impact on character movement and abilities
+- Added an 'Owned Upgrades' menu using `yakui` crate, giving a neat overview of all acquired upgrades
+- Many other UI / gameplay improvements based on player feedback
+
+Rust's ownership and strongly typed features played a crucial role in allowing the gameplay code to scale 
+to more complex and detailed mechanics while retaining correct, clean, and bug-free code.
+
+CyberGate Playground is a passion project.
+If you're interested in the game's progress, join the [Discord server][cybergate-discord].
+
+[cybergate-shorts]: https://youtube.com/@cyber-gate/shorts
+[cybergate-discord]: https://discord.gg/P3D8weeQ7Z
+[cybergate-fuse]: https://www.youtube.com/shorts/ewnZ6VVSYMM
+
+## Engine Updates
+
+### Macroquad Newsletter
+
+{{ image_figure(
+    alt="quad-gl"
+    src="twiq_3d_helmet.gif"
+    caption='"Basic" 3d rendering (gltf helmet)') }}
+
+[@Fedor](https://github.com/not-fl3/), creator of [*Quad], a game engine written in Rust, is starting a ["This week in Quads"](https://macroquad.rs/twiq) newsletter.
+
+This month overall polish, developer experience, performance optimization, and basic 3d visualization have been worked on.
+
+[*Quad]: https://www.patreon.com/posts/on-buses-and-101117631
+
+### [Fyrox 0.34][fyrox-release]
+
+{{ image_figure(
+    alt="Fyrox editor"
+    src="fyrox-editor.png"
+    caption="The improved Fyrox editor UI") }}
+
+[Fyrox] got a huge update this month. For those who don't know, Fyrox is a game engine written in Rust that is especially notable for sporting a Unity-like editor.
+
+[This release][fyrox-release] includes code hot reloading, project exporter, assets preview generation, UI prefabs, GLTF support, static and dynamic batching, 
+keyboard navigation, animation support for UI, editor style and usability improvements, and many more.
+
+[Fyrox]: https://fyrox.rs
+[fyrox-release]: https://fyrox.rs/blog/post/fyrox-game-engine-0-34/
+
+### Bevy 0.14 WIP
+
+{{ image_figure(
+    alt="Bevy repeated textures"
+    src="bevy_rep.jpg"
+    caption="One of the upcoming features in Bevy 0.14 is easier texture repetition for GLTF objects") }}
+
+The 0.14 release of [Bevy] nears completion, but the team is still working on detailed
+release notes and the migration guide. If you want to help, you can grab one of the [open documentation issues][bevy-docs-issues].
+
+[Bevy]: https://bevyengine.org/
+[bevy-docs-issues]: https://github.com/bevyengine/bevy-website/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3AA-Release-Notes
+
+## Learning Material Updates
+
+### Xkcd Machine
+
+{{ image_figure(
+    alt="XKCD Machine"
+    src="xkcd_machine.gif"
+    caption="A small part of the XKCD Machine") }}
+
+Chromakode released a detailed [blog post][xkcd_machine_blogpost] about their implementation of [xkcd "Machine"][xcd_machine_playable].
+
+Machine is written in React/Typescript, and uses [Rapier][xkcd_rapier]: a physics engine written in Rust.
+
+[xkcd_machine_blogpost]: https://chromakode.com/post/xkcd-machine/
+[xcd_machine_playable]: https://xkcd.com/2916/
+[xkcd_rapier]: https://rapier.rs/
+
+## Tooling Updates
+
+### [Rusty Playdate]
+
+{{ image_figure(
+    alt="The Playdate console"
+    src="playdate.png"
+    caption="The Playdate console") }}
+
+[Rusty Playdate] ([GitHub][Rusty Playdate], [Mastodon][Rusty Playdate Masto]) by [@boozook](https://github.com/boozook)
+is the large set of crates with bindings, cargo-plugin, and toolset for the full cycle of creating games for the [Playdate handheld console][playdate].
+This is a fairly new console reminiscent of a GameBoy with a crank handle geared towards indie games.
+
+The current release sports the following notable improvements:
+- Partial Lua scripting support
+- Support for devices connected to macOS via USB hub
+- Stabilize packaging on Windows enough to add automatic tests
+- Stabilization for various parts of the API
+
+_Discussions: [GitHub][Rusty Playdate Gh-disc], [Matrix][Rusty Playdate Matrix]._
+
+[Rusty Playdate]: https://github.com/boozook/playdate
+[Rusty Playdate Gh-disc]: https://github.com/boozook/playdate/discussions
+[Rusty Playdate Masto]: https://gamedev.social/@playdaters
+[Rusty Playdate Matrix]: https://matrix.to/#/#playdate.rs:matrix.org
+[playdate]: https://play.date/
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+### Bevy rustunit meetup #3
+
+{{ image_figure(
+    alt="Bevy meetup YouTube extract"
+    src="bevy_rustunit_meetup_3.jpg"
+    caption="Bevy meetup YouTube extract, showing its 3 participants.") }}
+
+[Rustunit][rustunit] has hosted its 3rd unofficial online [Bevy Engine][bevy] meetup on April 19th with the following topics:
+- Intro / Code of Conduct
+- Julian - Animating 3D Characters with Bevy
+- Niklas - Learnings from a Bevy game template
+
+Check out [the recording][rustunit_bevy_meetup_3_youtube]
+and join [the meetup group][rustunit_bevy_meetup_event] to get notified of future events.
+
+[rustunit_bevy_meetup_3_youtube]: https://www.youtube.com/watch?v=Fyr1ud1OIpU
+
+### Bevy rustunit meetup #4
+
+{{ image_figure(
+    alt="Bevy meetup YouTube extract"
+    src="bevy_rustunit_meetup_4.jpg"
+    caption="Bevy meetup YouTube extract, showing its 4 participants.") }}
+
+[Rustunit][rustunit] has hosted its 4th unofficial online [Bevy Engine][bevy] meetup on May 24th with the following topics:
+- Francois - Catching Rendering Regressions on all Platforms
+- Lorenz - Hooking into the Bevy Rendering Pipeline
+- Jos - Recreating Townscaper using Rust & Bevy
+
+Check out [the recording][rustunit_bevy_meetup_4_youtube]
+and join [the meetup group][rustunit_bevy_meetup_event] to get notified of future events.
+
+[rustunit_bevy_meetup_4_youtube]: https://www.youtube.com/watch?v=rnE_nINEs2M
+[rustunit]: https://rustunit.com/
+[rustunit_bevy_meetup_event]: https://www.meetup.com/bevy-game-development/
+
+
+### RustNL
+
+[RustNL][rustnl_main_website] happened May 7. & 8. in Delft, Netherlands.
+
+While the conference was not specific to game development,
+organizers contacted rust game development communities
+to showcase games developed in Rust between talks,
+which you can [watch on YouTube][rustnl_games_youtube].
+
+Special mention to the following talks, relevant to game development:
+- [Let's Build High-Performance Rust UI][rustnl_kevin_boos_talk] by Kevin Boos  
+- [A Research Project on Rust User Interface Architecture][rustnl_xilem_talk] by Ralph Levien about [Xilem][rustnl_xilem_intro]  
+- [(Th)Rust for Space: Initial momentum][rustnl_michael_melchiore_talk] by Michaël Melchiore, who gave a shout-out to [Bevy Engine][rustnl_bevy_engine].
+
+[rustnl_main_website]: https://2024.rustnl.org/
+[rustnl_games_youtube]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=7583s
+[rustnl_xilem_talk]: https://www.youtube.com/watch?v=521NfGf7AR0&t=19308s
+[rustnl_xilem_intro]: https://raphlinus.github.io/rust/gui/2022/05/07/ui-architecture.html
+[rustnl_kevin_boos_talk]: https://www.youtube.com/watch?v=521NfGf7AR0&t=2928s
+[rustnl_michael_melchiore_talk]: https://www.youtube.com/watch?v=XLefuzE-ABU&t=3898s
+[rustnl_bevy_engine]:https://bevyengine.org/
+
+## Misc. Links
+
+### New libraries
+
+- [egui_ratatui](https://github.com/gold-silver-copper/egui_ratatui): A ratatui backend that is also an egui widget.
+Deploy on the web with WASM or ship natively with Bevy, macroquad, or eframe
+- [bevy_ratatui_render](https://github.com/cxreiff/bevy_ratatui_render): A Bevy plugin for rendering your game to the terminal using ratatui
+- [bevy_light_2d](https://github.com/jgayfer/bevy_light_2d):  General purpose 2D lighting for the Bevy game engine
+
+### Library Updates
+
+- [Kira 0.9](https://github.com/tesselode/kira/releases/tag/v0.9.0): Library for expressive game audio
+- [Quinn 0.11.2](https://github.com/quinn-rs/quinn/releases/tag/0.11.2): Async-friendly QUIC implementation in Rust
+- [rolt and jolt-sys 0.3.1](https://github.com/SecondHalfGames/jolt-rust/blob/main/CHANGELOG.md#v030):  Rust bindings to Jolt Physics
+- [Hanabi 0.11](https://github.com/djeedai/bevy_hanabi/blob/v0.11.0/CHANGELOG.md): A GPU particle system plugin for the Bevy game engine
+
+### Blog Posts
+
+- [Architectural Ruminations][pixel-wizards-arch]: reflections on using Rust for game development,
+ prompted by LogLog Games's [Leaving Rust game dev after 3 years]
+
+### Videos
+
+- [The Secret Behind Photorealistic And Stylized Graphics](https://www.youtube.com/watch?v=KkOkx0FiHDA): 
+Explaining the rendering techniques behind photorealistic and stylized graphics
+- [GDC: Tunes of the Kingdom](https://www.youtube.com/watch?v=N-dPDsLTrTE): Evolving physics and sounds for ‘The Legend of Zelda: Tears of the Kingdom’ 
+
+------
+
+That's all news for today, thanks for reading!
+
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+
+Also, subscribe to our socials if you want to receive fresh news!
+- X/Twitter: [@rust_gamedev][@x_rust_gamedev]
+- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev]
+- Reddit: [/r/rust_gamedev][/r/rust_gamedev]
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1d8we3t/this_month_in_rust_gamedev_may_edition_released/),
+[Lemmy](https://lemmy.world/post/16213742),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112565328837537528),
+[X / Twitter](https://x.com/rust_gamedev/status/1798415636999307416),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@x_rust_gamedev]: https://twitter.com/rust_gamedev
+[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev
diff --git a/content/news/051/mirrorb.png b/content/news/051/mirrorb.png
new file mode 100644
index 000000000..0b3923e66
Binary files /dev/null and b/content/news/051/mirrorb.png differ
diff --git a/content/news/051/playdate.png b/content/news/051/playdate.png
new file mode 100644
index 000000000..62b7d033a
Binary files /dev/null and b/content/news/051/playdate.png differ
diff --git a/content/news/051/twiq_3d_helmet.gif b/content/news/051/twiq_3d_helmet.gif
new file mode 100644
index 000000000..f4a704f22
Binary files /dev/null and b/content/news/051/twiq_3d_helmet.gif differ
diff --git a/content/news/051/untitled-pixel-wizards-game.gif b/content/news/051/untitled-pixel-wizards-game.gif
new file mode 100644
index 000000000..06c2c98d6
Binary files /dev/null and b/content/news/051/untitled-pixel-wizards-game.gif differ
diff --git a/content/news/051/wor-animated.gif b/content/news/051/wor-animated.gif
new file mode 100644
index 000000000..4c624bba9
Binary files /dev/null and b/content/news/051/wor-animated.gif differ
diff --git a/content/news/051/wor.jpg b/content/news/051/wor.jpg
new file mode 100644
index 000000000..0f23547bd
Binary files /dev/null and b/content/news/051/wor.jpg differ
diff --git a/content/news/051/xkcd_machine.gif b/content/news/051/xkcd_machine.gif
new file mode 100644
index 000000000..2085a4422
Binary files /dev/null and b/content/news/051/xkcd_machine.gif differ
diff --git a/content/news/052/berdicles.jpg b/content/news/052/berdicles.jpg
new file mode 100644
index 000000000..af0928d3b
Binary files /dev/null and b/content/news/052/berdicles.jpg differ
diff --git a/content/news/052/bevy_hanabi_trails.gif b/content/news/052/bevy_hanabi_trails.gif
new file mode 100644
index 000000000..c2ca9aedf
Binary files /dev/null and b/content/news/052/bevy_hanabi_trails.gif differ
diff --git a/content/news/052/bevy_light_2d.gif b/content/news/052/bevy_light_2d.gif
new file mode 100644
index 000000000..ca0e65fd5
Binary files /dev/null and b/content/news/052/bevy_light_2d.gif differ
diff --git a/content/news/052/bevypunk.jpg b/content/news/052/bevypunk.jpg
new file mode 100644
index 000000000..5793c47e1
Binary files /dev/null and b/content/news/052/bevypunk.jpg differ
diff --git a/content/news/052/egui_ratatui.jpg b/content/news/052/egui_ratatui.jpg
new file mode 100644
index 000000000..3e11e66c4
Binary files /dev/null and b/content/news/052/egui_ratatui.jpg differ
diff --git a/content/news/052/godot-rust.jpg b/content/news/052/godot-rust.jpg
new file mode 100644
index 000000000..7cf0cd82d
Binary files /dev/null and b/content/news/052/godot-rust.jpg differ
diff --git a/content/news/052/gunbug.jpg b/content/news/052/gunbug.jpg
new file mode 100644
index 000000000..075cc4a70
Binary files /dev/null and b/content/news/052/gunbug.jpg differ
diff --git a/content/news/052/haalka.mp4 b/content/news/052/haalka.mp4
new file mode 100644
index 000000000..16000db7a
Binary files /dev/null and b/content/news/052/haalka.mp4 differ
diff --git a/content/news/052/index.md b/content/news/052/index.md
new file mode 100644
index 000000000..f9ff6e576
--- /dev/null
+++ b/content/news/052/index.md
@@ -0,0 +1,538 @@
++++
+title = "This Month in Rust GameDev #52 - June 2024"
+transparent = true
+date = 2024-07-03
+draft = false
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 52th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Interviews](#interviews)
+- [Blog Posts](#blog-posts)
+- [Jobs](#jobs)
+- [Engine Newsletters](#engine-newsletters)
+- [Future News](#future-news)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+{{ image_figure(
+    alt="image/GIF description"
+    src="image link"
+    caption="image caption") }}
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+For years, our readers have asked for a way to subscribe to this newsletter by email. This again came up in our [recent survey][survey].
+We're happy to announce that this feature is now available! When you visit our [homepage],
+you can now scroll down and find an email subscription form. 
+We'll send you an email whenever a new post is published, which currently is once per month.
+
+The emails are currently sent from [gamedev-rs@proton.me](mailto:gamedev-rs@proton.me). 
+We will switch this to an actual @gamedev.rs address in the future. Please tell us if you encounter any issues with the emails.
+
+[survey]: https://gamedev.rs/blog/survey-02/
+[homepage]: https://gamedev.rs/
+
+## Game Updates
+
+### [Untitled Pixel Wizards Game][pixel-wizards]
+
+{{ video_figure(
+    type="video/mp4", 
+    src="untitled-pixel-wizards-game.mp4", 
+    caption="Enemies now perceive, pursue, and attack... and occasionally get burned to death.") }}
+
+[Untitled Pixel Wizards Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about
+killing baddies using spells powered by pixel physics. This month was focused on juicing up said baddies:
+
+- [Pew Pew Pew][pixel-wizards-update-1]: baddies learned to shoot at players.
+- [Hot Pursuit][pixel-wizards-update-2]: baddies also learned to chase players! (They're real smart.)
+- [Status Update][pixel-wizards-update-3]: physically-simulated pixels learn to burn & poison players & baddies.
+- [Ragdolls][pixel-wizards-update-4]: corpses of dead baddies learn to tumble around all realistic-like.
+- [Fiddling with Fire][pixel-wizards-update-5]: the fire mechanic figures out how to better burn baddies.
+
+[pixel-wizards]: https://slowrush.dev
+[Noita]: https://store.steampowered.com/app/881100/Noita/
+[pixel-wizards-update-1]: https://www.slowrush.dev/news/pew-pew/
+[pixel-wizards-update-2]: https://www.slowrush.dev/news/hot-pursuit/
+[pixel-wizards-update-3]: https://www.slowrush.dev/news/status-update/
+[pixel-wizards-update-4]: https://www.slowrush.dev/news/ragdolls/
+[pixel-wizards-update-5]: https://www.slowrush.dev/news/fiddling-with-fire/
+
+
+### [Way of Rhea][wor]
+
+{{ image_figure(
+    alt="Way of Rhea"
+    src="wor.jpg"
+    caption="Way of Rhea: a puzzle game. Available on Steam and 20% off for the Steam Summer Sale!",
+    link="https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n52") }}
+
+Way of Rhea ([Steam][wor], [Newsletter][wor-mail]) is a color-based puzzle game with difficult puzzles, but
+forgiving mechanics developed by [Mason Remaley] in a custom Rust engine. Since its release in May,
+Mason has fixed many bugs and implemented quality-of-life improvements.
+
+They recently conducted an [AMA on /r/rust_gamedev][ama] about their experience 
+developing and shipping a game after six years in Rust. 
+They then curated the questions and answers into a [blog post][wor-ama]. 
+It includes questions about Rust, libraries, experiences writing a custom game engine, and game development in general.
+
+[Mason Remaley]: https://masonremaley.com/
+[wor]: https://store.steampowered.com/app/1110620/Way_of_Rhea/?utm_campaign=tmirgd&utm_source=n52
+[wor-mail]: https://anthropicstudios.com/newsletter/signup/tech
+[ama]: https://www.reddit.com/r/rust_gamedev/comments/1cwqcfl/i_spent_6_years_developing_a_puzzle_game_in_rust/
+[wor-ama]: https://gamesbymason.com/2024/06/01/wor-ama/
+
+### [Gunbug][gunbug]
+
+{{ image_figure(
+    alt="Gunbugs shooting at a bunch of eggplants"
+    src="gunbug.jpg"
+    link="https://store.steampowered.com/app/2946990?utm_source=this_month_in_rust") }}
+
+Gunbug is a 2D online co-op horde survival shoot'em up game.
+
+It focuses on shooting lots of enemies with lots of guns. It can be played
+solo or with up to 10 players.
+
+It is built with [Bevy] and uses [bevy_rapier] for ray casting,
+[bevy_kira_audio] for audio, and [renet] for networking. 
+The iOS and macOS versions are built with [xbuild].
+
+You can wishlist the game on [Steam][gunbug]. Playtests start in the upcoming months. 
+iOS and Android builds already work, but store pages don't exist yet.
+
+[gunbug]: https://store.steampowered.com/app/2946990?utm_source=this_month_in_rust
+[xbuild]: https://github.com/rust-mobile/xbuild
+[Bevy]: https://bevyengine.org
+[bevy_rapier]: https://github.com/dimforge/bevy_rapier
+[bevy_kira_audio]: https://github.com/NiklasEi/bevy_kira_audio
+[renet]: https://github.com/lucaspoffo/renet
+
+## Engine Updates
+
+### [godot-rust]
+
+![godot-rust logo](godot-rust.jpg)
+
+godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Mastodon][gd-mastodon], [Twitter][gd-twitter]) by [@Bromeon]
+provides Rust bindings for the [Godot engine](https://godotengine.org/).
+
+After quite a bit of development on GitHub, the Godot 4 bindings are now available on [crates.io](https://crates.io/crates/godot) -- 
+you can immediately get started using 
+`cargo add godot`. Furthermore, the GDExtension API level can now be specified with a Cargo feature, e.g. `api-4-1`.
+
+The `ScriptInstance` API has matured a lot over the past months. This feature allows users to write Godot scripts in Rust, which can be
+attached to nodes (just like GDScript). Scripts allow for quickly attaching/detaching functionality in a scene.
+
+The overall API has seen several consistency improvements: reorganized modules, `self`/`&self` receivers on geometric types,
+easier element access for `Array`/`Dictionary`/`Packed*Array`. The library has also benefited from Rust's
+[`#[diagnostic::on_unimplemented]`][gd-diagnostic] to improve user-facing error messages.
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/1dnmjtl/godotrust_now_on_cratesio_with_the_godot_crate/),
+[Mastodon](https://mastodon.gamedev.place/@GodotRust/112673330814149117),
+[X](https://x.com/GodotRust/status/1805327592222081482)_
+
+_See also the [devlog article][gd-dev-june]._
+
+[@Bromeon]: https://github.com/Bromeon
+[gd-dev-june]: https://godot-rust.github.io/dev/june-2024-update
+[gd-diagnostic]: https://blog.rust-lang.org/2024/05/02/Rust-1.78.0.html#diagnostic-attributes
+[gd-discord]: https://discord.gg/aKUCJ8rJsc
+[gd-github]: https://github.com/godot-rust/gdext
+[gd-mastodon]: https://mastodon.gamedev.place/@GodotRust
+[gd-twitter]: https://twitter.com/GodotRust
+[godot-rust]: https://godot-rust.github.io
+
+### [Bevy 0.14 Release Candidate][bevy-0.14-rc]
+
+{{ image_figure(
+    alt="Sharp Screen-Space Reflections in Bevy 0.14"
+    src="ssr.jpg") }}
+
+The Bevy game engine is gearing up to release version 0.14. 
+The (probably) last release candidate is out now and ready for testing.
+If you want to help out, 
+check out the [draft release notes][bevy-0.14-rc] and the [draft migration guide][bevy-0.14-rc-migration] and report any issues you find.
+
+[bevy-0.14-rc]: https://bevyengine.org/news/draft-bevy-0-14/
+[bevy-0.14-rc-migration]: https://bevyengine.org/learn/migration-guides/0-13-to-0-14/
+
+## Learning Material Updates
+
+### [Bevy Cheatbook][bevy-cheatbook]
+
+The community-beloved unofficial [Bevy Cheatbook][bevy-cheatbook] by Ida "Iyes" is a collection of Bevy tutorials, recipes and advanced documentation.
+The cheatbook is currently in the process of being updated to Bevy 0.14 and now features the following new chapters:
+- [Transform Interpolation/Extrapolation](https://bevy-cheatbook.github.io/cookbook/smooth-movement.html): 
+    How to get smooth-looking movement on-screen for things you simulate in FixedUpdate
+- [Internal Parallelism](https://bevy-cheatbook.github.io/programming/par-iter.html): 
+    Multithreading within a Bevy system
+- [One-Shot Systems](https://bevy-cheatbook.github.io/programming/one-shot-systems.html): 
+    Systems that you run on-demand, not in a schedule
+- [Background Computation](https://bevy-cheatbook.github.io/fundamentals/async-compute.html): 
+    How to do processing that may span multiple frame updates and not hold up the game's framerate with long CPU work.
+
+[bevy-cheatbook]: https://bevy-cheatbook.github.io/
+
+### [Game development in Rust with Macroquad][macro-learning]
+
+Olle Wreede of [Agical][agical] published a [complete guide][macro-learning] on 
+how to develop a classic 2D shoot 'em up game using the game library 
+Macroquad and the Rust programming language.
+
+It covers everything from a simple Hello World Macroquad application to adding graphics, audio, a shader, a graphical menu, 
+and how to release the game on multiple platforms.
+
+[agical]: https://www.agical.se/
+[macro-learning]: <https://mq.agical.se/>
+
+### Other learning materials
+
+- [Using tracing to profile a Bevy project](https://rornic.com/posts/using-tracing-to-profile-a-bevy-project/)
+- [Bevycation of Brackeys First Game in Godot Tutorial](https://github.com/Occuros/bevycation_brackeys_first-game-in-godot):
+    A Bevy version of Brackeys' ["How to make a Video Game - Godot Beginner Tutorial"](https://www.youtube.com/watch?v=LOhfqjmasi0)
+
+## Tooling Updates
+
+### [Rusty Playdate 0.5][Rusty Playdate]
+
+{{ image_figure(
+    alt="The Playdate console"
+    src="../051/playdate.png") }}
+
+[Rusty Playdate] ([GitHub][Rusty Playdate], [Mastodon][Rusty Playdate Masto]) by [@boozook](https://github.com/boozook)
+is a large set of crates and tools for the full cycle of creating games for the [Playdate handheld console][playdate].
+
+A big part of the Rusty Playdate project is the [`cargo-playdate`][cargo-playdate gh] tool that functions as a build system. 
+It works as a cargo-plugin as well as a standalone, and does several things:
+- It manages the compilation of your program,
+- builds assets for the crate and its dependencies,
+- generates a manifest,
+- and assembles it all into a bundle that runs on the device or a simulator.
+
+In this month `cargo-playdate` v0.5 has been [released][Rusty Playdate Release] and received massive refactoring, bugfixes and new features:
+
+- support for [cargo's auto-targets][cargo-target-auto-discovery], i.e. targets such as `bin` or `example` that aren't declared in the Cargo.toml
+- [target-specific package-info][pdb-pdxinfo-override] is inherited from the main package-info
+- `package.metadata.playdate.options` is inherited from the `workspace.metadata`
+- incremental builds now work as expected
+
+
+The register decoder in the [`pd-symbolize-crashlog`][playdate-symbolize-v0.2.0] was also updated. 
+It now properly decodes all available registers such as
+<abbr title="Program Status Register, combines APSR, IPSR and EPSR">PSR</abbr>,
+<abbr title="Configurable Fault Status Register, combines UFSR, BFSR and MMFSR">CFSR</abbr>, and
+<abbr title="HardFault Status Register">HSFR</abbr>.
+
+_Discussions: [GitHub][Rusty Playdate Gh-discuss], [Matrix][Rusty Playdate Matrix]._
+
+[playdate-symbolize-v0.2.0]: https://crates.io/crates/playdate-symbolize/0.2.0
+[cargo-target-auto-discovery]: https://doc.rust-lang.org/cargo/reference/cargo-targets.html#target-auto-discovery
+[pdb-pdxinfo-override]: https://github.com/boozook/playdate/blob/main/support/build/README.md#target-specific-package-info "More about target-specific package-info"
+[cargo-playdate gh]: https://github.com/boozook/playdate/tree/main/cargo "cargo-playdate tool is a part of 'Rusty Playdate' project"
+[Rusty Playdate Release]: https://github.com/boozook/playdate/releases/tag/2024.06.18 "Release from June 18, 2024"
+[Rusty Playdate]: https://github.com/boozook/playdate
+[Rusty Playdate Gh-discuss]: https://github.com/boozook/playdate/discussions
+[Rusty Playdate Masto]: https://gamedev.social/@playdaters
+[Rusty Playdate Matrix]: https://matrix.to/#/#playdate.rs:matrix.org
+[playdate]: https://play.date/ "Playdate is a fairly new console reminiscent of a GameBoy with a crank handle geared towards indie games."
+
+
+## Library Updates
+
+### [egui_ratatui][egui_ratatui]
+
+{{ image_figure(
+    alt="egui_ratatui running in Bevy"
+    src="egui_ratatui.jpg") }}
+
+[egui_ratatui][egui_ratatui] by [gold-silver-copper][gold] is an [egui][egui] widget that is also a [ratatui][ratatui] backend. 
+It allows you to create Terminal User Interfaces (TUIs) inside egui.
+You can try out the [web demo][erat_web] to see it in action.
+
+The current release is the product of months of iteration, and is now "stable".
+It is Wasm compatible and engine agnostic: use it in Bevy, *Quad, eframe, pixels, etc.
+
+`egui_ratatui` is currently being used for the development of a game and 
+educational software at a startup with no issues so far.
+
+[egui_ratatui]: https://github.com/gold-silver-copper/egui_ratatui
+[gold]: https://github.com/gold-silver-copper
+[ratatui]: https://github.com/ratatui-org/ratatui
+[egui]: https://github.com/emilk/egui
+[erat_web]: https://gold-silver-copper.github.io/
+
+### [FMOD-oxide][fmod-oxide]
+
+FMOD-oxide brings safe rust bindings to the FMOD sound engine. 
+This crate tries to be as rusty and low-cost as possible, without comprimising on any APIs. 
+Certain APIs, such as loading banks from a pointer, are marked as unsafe, but are still available for use.
+
+[fmod-oxide]: https://crates.io/crates/fmod-oxide
+
+### [Bevy Lunex][bevy-lunex]
+
+{{ image_figure(
+    alt="Bevypunk: a recreation of Cyberpunk 2077's UI made with Lunex"
+    src="bevypunk.jpg") }}
+
+Lunex is a path based retained layout engine for Bevy entities, built around vanilla Bevy ECS. 
+It gives you the ability to make your own custom UI using regular ECS like every other part of your app. 
+Notably, this includes world-space 3D UI!
+
+The above screenshot is from the [Bevypunk UI Web Demo][bevypunk], which includes a main menu and a character creation screen.
+
+You can get started by reading the [bevy_lunex book][bevy-lunex-book].
+
+[bevy-lunex]: https://github.com/bytestring-net/bevy_lunex
+[bevy-lunex-book]: https://bytestring-net.github.io/bevy_lunex/
+[bevypunk]: https://idedary.itch.io/bevypunk
+
+### [haalka]
+
+{{ video_figure(type="video/mp4", src="haalka.mp4", caption="A Minecraft-like UI made with haalka") }}
+
+হালকা: _in bengali, haalka means "light" (e.g. not heavy) and can also be used to mean "easy"_
+
+Haalka is an ergonomic reactivity library powered by the [FRP](https://en.wikipedia.org/wiki/Functional_reactive_programming) signals of [futures-signals](https://github.com/Pauan/rust-signals).
+It is a port of the web UI libraries [MoonZoon](https://github.com/MoonZoon/MoonZoon) and [Dominator](https://github.com/Pauan/rust-dominator) 
+and offers the same signal semantics as a thin layer on top of bevy_ui. 
+
+While haalka is primarily targeted at UI and provides high level UI abstractions as such, 
+its core abstraction can be used to manage signals-powered reactivity for any entity, not just bevy_ui nodes.
+
+[haalka]: https://github.com/databasedav/haalka
+
+### [bevy_light_2d][bevy_light_2d]
+
+{{ image_figure(
+    alt="A candle shining 2D light"
+    src="bevy_light_2d.gif"
+    caption="A candle shining 2D light") }}
+
+bevy_light_2d is a new general purpose 2D lighting for the Bevy game engine. 
+Designed to be simple to use, yet expressive enough to fit a variety of needs. Features include:
+
+- Component driven design
+- Configurable point lights
+- Camera-specific ambient light
+- Single-camera rendering
+
+[bevy_light_2d]: https://github.com/jgayfer/bevy_light_2d
+
+### [bevy_hanabi][bevy_hanabi] 0.11
+
+{{ image_figure(
+    alt="Trails in Hanabi"
+    src="bevy_hanabi_trails.gif"
+    caption="Trails in Hanabi") }}
+
+Hanabi is a GPU particle system plugin for the Bevy game engine. 
+The most notable new feature in [bevy_hanabi 0.11][bevy_hanabi] is support for trails and ribbons.
+
+[bevy_hanabi]: https://github.com/djeedai/bevy_hanabi
+
+### [berdicles][berdicles]
+
+{{ image_figure(
+    alt="A fountain of particles"
+    src="berdicles.jpg"
+    caption="A fountain of particles") }}
+
+berdicles is an expressive CPU particle system for the Bevy engine. Features include:
+
+- Instancing based CPU particles.
+- Expressive non-physics based particle traits.
+- Familiar setup with Bevy's native Material and Mesh.
+- Particles as emitters.
+- Mesh based particle trails.
+- Particle events that spawn other particles.
+- Billboard particles.
+
+[berdicles]: https://github.com/mintlu8/berdicles
+
+### Other Library Updates and Releases
+
+- [glam 0.28]: `glam` is a foundational crate when it comes to math in general in Rust.
+    For example, its types are directly visible in the `Vec` types Bevy consumes and re-exports, like `Vec3`.
+    v0.28 brings AArch64 NEON SIMD support as well as a couple smaller breaking changes.
+- [gdext-coroutines]: Run Rust coroutines in Godot 4.2+ (through GDExtension), inspired on Unity's Coroutines design.
+- [FunDSP 0.18]: FunDSP is an audio DSP ([digital signal processing](https://en.wikipedia.org/wiki/Digital_signal_processing))
+    library for audio processing and synthesis. This release is a rewrite that adds no_std and SIMD support. 
+
+[glam 0.28]: https://github.com/bitshifter/glam-rs
+[gdext-coroutines]: https://github.com/Houtamelo/gdext_coroutines
+[FunDSP 0.18]: https://github.com/SamiPerttu/fundsp
+
+## Interviews
+
+### [Metalmancy @ OpenSauce][metalmancy_interview]
+
+{{ image_figure(
+    alt="Arcade cabinet close up"
+    src="metalmancy_interview.jpg") }}
+
+[Metalmancy][metalmancy_website] are creating custom and configurable arcade machines. Their flagship game [Thetawave] is coded in Rust.
+
+Hyelim of [Framework][framework_website] interviewed Carlo and Joanna on their games
+and arcade machines at [OpenSauce][opensauce_website].
+
+[metalmancy_interview]: https://www.youtube.com/watch?v=qUIAnZ0cvvo&t=291s
+[metalmancy_website]: https://www.micronote.tech/
+[framework_website]: https://frame.work
+[opensauce_website]: https://opensauce.com/
+[Thetawave]: https://store.steampowered.com/app/2427510/Thetawave
+
+### [Tiny Glade Developers Discuss Bevy, Proceduralism, Publishers & Cozy Games][tiny-glade-interview]
+
+{{ image_figure(
+    alt="An idyllic scenery made in Tidy Glade"
+    src="tiny-glade.jpg") }}
+
+To celebrate the release of Tiny Glade's [demo version][tiny-glade-steam], Pounce Light's Anastasia Opara and 
+Tomasz Stachowiak have joined 80 Level [in an interview][tiny-glade-interview] to discuss the game's history, proceduralism, 
+Bevy, Rust, self-publishing, and the "cozy games" genre.
+
+
+[tiny-glade-interview]: https://80.lv/articles/exclusive-tiny-glade-developers-discuss-bevy-proceduralism-publishers-cozy-games
+[tiny-glade-steam]: https://store.steampowered.com/app/2198150/Tiny_Glade/
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+## Blog Posts
+
+### [Dioxus Labs + "High-level Rust"][dioxus-post]
+
+[This post][dioxus-post] by the founder of [Dioxus Labs][dioxus-labs] is a direct response to
+the recently published ["Leaving Rust gamedev after 3 years"][leaving-post] by LogLogGames. 
+If you've missed the original post, it has made its rounds as a well-written critique of Rust's gamedev ecosystem and shortcomings 
+inherent to the language itself.
+
+[Dioxus Labs + "High-level Rust"][dioxus-post] is a detailed response to the original post, outlining concrete steps to improve the situation 
+and signaling the author's readiness to fund the development of features they see as necessary for the ecosystem to thrive.
+
+_Discussions: [lobste.rs](https://lobste.rs/s/dsqumn/dioxus_labs_high_level_rust), 
+[/r/rust](https://www.reddit.com/r/rust/comments/1dkzzn5/dioxus_labs_highlevel_rust/), 
+[Hacker News](https://news.ycombinator.com/item?id=40766805)_
+
+[dioxus-post]: https://dioxus.notion.site/Dioxus-Labs-High-level-Rust-5fe1f1c9c8334815ad488410d948f05e
+[dioxus-labs]: https://dioxuslabs.com/
+[leaving-post]: https://loglog.games/blog/leaving-rust-gamedev/
+
+### Virtual Geometry in Bevy 0.14
+
+{{ image_figure(
+    alt="The Stanford bunny split into meshlets"
+    src="meshlets.jpg"
+    caption="The Stanford bunny split into meshlets") }}
+
+Ever wondered how [Unreal 5's Nanite][nanite] works under the hood?
+Jasmine, who reimplemented the virtual geometry technology for Bevy's upcoming 0.14 release,
+wrote a [post][meshlets-post] explaining the concepts and the nitty-gritty details of the implementation.
+The post is very technical in nature, so if you've never heard of this technology before, 
+they recommend you first watch Brian Karis' SIGGRAPH 2021 lecture [A Deep Dive into Nanite Virtualized Geometry][nanite-talk] ([slides][nanite-slides]).
+
+[nanite]: https://dev.epicgames.com/documentation/en-us/unreal-engine/nanite-virtualized-geometry-in-unreal-engine
+[meshlets-post]: https://jms55.github.io/posts/2024-06-09-virtual-geometry-bevy-0-14/
+[nanite-talk]: https://www.youtube.com/watch?v=eviSykqSUUw
+[nanite-slides]: https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf
+
+## Jobs
+
+Ubisoft Montreal is searching for an [online Rust programmer][ubisoft-job] 
+for an unannounced project.
+
+[ubisoft-job]: https://www.ubisoft.com/en-us/company/careers/search/743999993500090-programmer-online-unannounced-project
+
+## Engine Newsletters
+
+- This Week In Bevy
+  - [Tiny Glade, VJ performances, and 2d lighting](https://thisweekinbevy.com/issue/2024-06-03-tiny-glade-vj-performances-and-2d-lighting)
+  - [Bevy 0.14-rc.2, Powerglove, and Soup!](https://thisweekinbevy.com/issue/2024-06-10-bevy-014-rc2-powerglove-and-soup)
+  - [Meshlets, Stable Interpolation, and Generalized ECS Reactivity with Observers!](https://thisweekinbevy.com/issue/2024-06-17-meshlets-stable-interpolation-and-generalized-ecs-reactivity-with-observers)
+  - [Water, Global Illumination, and UI toolkits](https://thisweekinbevy.com/issue/2024-06-24-water-global-illumination-and-ui-toolkits)
+- This Week In Quads
+  - [`blocking_event_loop` on ios opengl/metal, Docker article, and libxkbcommon on NixOS](https://macroquad.rs/twiq/week5/)
+
+## Future News
+
+<!-- Section to get more people involved in writing news. -->
+
+Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. 
+Thanks to everyone who helped us this month!
+
+If you want something mentioned in the next newsletter, [send us a pull request][pr].
+
+You can also get an early look at pending issues for the [next newsletter][news_future_prs].
+
+[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N52%27
+[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N53%27
+
+------
+
+That's all news for today, thanks for reading!
+
+Also, subscribe to our socials if you want to receive fresh news!
+- X/Twitter: [@rust_gamedev][@x_rust_gamedev]
+- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev]
+- Reddit: [/r/rust_gamedev][/r/rust_gamedev]
+
+
+**Discuss this post on**:
+[/r/rust_gamedev](https://www.reddit.com/r/rust_gamedev/comments/1dudvrk/this_month_in_rust_gamedev_june_edition_released/), 
+[Lemmy](https://lemmy.world/post/17176132),
+[Mastodon](https://mastodon.gamedev.place/@rust_gamedev/112722731870962460),
+[X/Twitter](hhttps://x.com/rust_gamedev/status/1808489666426851340),
+[Hacker News](https://news.ycombinator.com/item?id=40865690),
+[Discord](https://discord.gg/yNtPTb2).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@x_rust_gamedev]: https://twitter.com/rust_gamedev
+[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev
diff --git a/content/news/052/meshlets.jpg b/content/news/052/meshlets.jpg
new file mode 100644
index 000000000..04659ac73
Binary files /dev/null and b/content/news/052/meshlets.jpg differ
diff --git a/content/news/052/metalmancy_interview.jpg b/content/news/052/metalmancy_interview.jpg
new file mode 100644
index 000000000..98361d12e
Binary files /dev/null and b/content/news/052/metalmancy_interview.jpg differ
diff --git a/content/news/052/ssr.jpg b/content/news/052/ssr.jpg
new file mode 100644
index 000000000..be7913609
Binary files /dev/null and b/content/news/052/ssr.jpg differ
diff --git a/content/news/052/tiny-glade.jpg b/content/news/052/tiny-glade.jpg
new file mode 100644
index 000000000..62f8a4eec
Binary files /dev/null and b/content/news/052/tiny-glade.jpg differ
diff --git a/content/news/052/untitled-pixel-wizards-game.mp4 b/content/news/052/untitled-pixel-wizards-game.mp4
new file mode 100644
index 000000000..e4b8cced7
Binary files /dev/null and b/content/news/052/untitled-pixel-wizards-game.mp4 differ
diff --git a/content/news/052/wor.jpg b/content/news/052/wor.jpg
new file mode 100644
index 000000000..acb2bbd16
Binary files /dev/null and b/content/news/052/wor.jpg differ
diff --git a/content/news/053/chuot.png b/content/news/053/chuot.png
new file mode 100644
index 000000000..41c566571
Binary files /dev/null and b/content/news/053/chuot.png differ
diff --git a/content/news/053/dos-tilers.jpg b/content/news/053/dos-tilers.jpg
new file mode 100644
index 000000000..e7f42ab84
Binary files /dev/null and b/content/news/053/dos-tilers.jpg differ
diff --git a/content/news/053/godot_rapier.mp4 b/content/news/053/godot_rapier.mp4
new file mode 100644
index 000000000..12dd90036
Binary files /dev/null and b/content/news/053/godot_rapier.mp4 differ
diff --git a/content/news/053/index.md b/content/news/053/index.md
new file mode 100644
index 000000000..1789dcfe6
--- /dev/null
+++ b/content/news/053/index.md
@@ -0,0 +1,247 @@
++++
+title = "This Month in Rust GameDev #53 - July 2024"
+transparent = true
+date = 2024-08-03
+draft = true
++++
+
+<!-- no toc -->
+
+<!-- Check the post with markdownlint-->
+
+Welcome to the 53th issue of the Rust GameDev Workgroup's
+monthly newsletter.
+[Rust] is a systems language pursuing the trifecta:
+safety, concurrency, and speed.
+These goals are well-aligned with game development.
+We hope to build an inviting ecosystem for anyone wishing
+to use Rust in their development process!
+Want to get involved? [Join the Rust GameDev working group!][join]
+
+You can follow the newsletter creation process
+by watching [the coordination issues][coordination].
+Want something mentioned in the next newsletter?
+[Send us a pull request][pr].
+Feel free to send PRs about your own projects!
+
+[Rust]: https://rust-lang.org
+[join]: https://github.com/rust-gamedev/wg#join-the-fun
+[pr]: https://github.com/rust-gamedev/rust-gamedev.github.io
+[coordination]: https://github.com/rust-gamedev/rust-gamedev.github.io/issues?q=label%3Acoordination
+
+- [Announcements](#announcements)
+- [Game Updates](#game-updates)
+- [Engine Updates](#engine-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Tooling Updates](#tooling-updates)
+- [Library Updates](#library-updates)
+- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github)
+- [Other News](#other-news)
+- [Meeting Minutes](#meeting-minutes)
+- [Discussions](#discussions)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+- [Bonus](#bonus)
+- [Future news](#future-news)
+
+<!--
+Ideal section structure is:
+
+```
+### [Title]
+
+{{ image_figure(
+    alt="image/GIF description",
+    src="image link",
+    caption="image caption") }}
+
+OR
+
+{{ video_figure(
+    type="video/mp4", 
+    src="my-video.mp4", 
+    caption="optional video caption") }}
+
+A paragraph or two with a summary and [useful links].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/todo),
+[twitter](https://twitter.com/todo/status/123456)_
+
+[Title]: https://first.link
+[useful links]: https://other.link
+```
+
+If needed, a section can be split into subsections with a "------" delimiter.
+-->
+
+## Announcements
+
+## Game Updates
+
+### [Tilers (DOS game)][dos-tilers]
+
+{{ image_figure(
+    alt="Screenshot from Tilers",
+    src="dos-tilers.jpg",
+    caption="Shuffled tiles of a photograph in Tilers. One of the tiles is being moved horizontally.") }}
+
+Tilers ([GitHub][dos-tilers-gh]) by [@E_net4]
+is an open source tile permutation puzzle game,
+based on the classic [15 puzzle][wiki15].
+It was developed specifically for MS-DOS machines,
+by combining a nightly Rust compiler with
+the [DJGPP toolchain][djgpp] and the custom object converter [elf2djgpp].
+
+A playable version on the browser (using an emulator)
+is available on GitHub and [itch.io][dos-tilers].
+The game was also submitted to the [DOS Games July 2024 Jam][dosjam].
+
+[dos-tilers-gh]: https://github.com/Enet4/dos-tilers
+[@E_net4]: https://hachyderm.io/@E_net4
+[wiki15]: https://en.wikipedia.org/wiki/15_puzzle
+[djgpp]: https://www.delorie.com/djgpp/
+[dos-tilers]: https://e-net4.itch.io/dos-tilers
+[elf2djgpp]: https://github.com/cknave/elf2djgpp
+[dosjam]: https://itch.io/jam/dos-games-july-2024-jam
+
+## Engine Updates
+
+### [Chuột][chuot-website]
+
+{{ image_figure(
+    alt="Bunnymark example",
+    src="chuot.png",
+    caption="[Bunnymark example](https://tversteeg.nl/chuot/examples/bunnymark/)") }}
+
+Chuột ([Website][chuot-website], [GitHub][chuot-github]) by [@tversteeg]
+is an AGPL licensed game engine for 2D pixel-art games.
+
+The main goal of the Chuột (Vietnamese for mouse) game engine is to make it easy to create and deploy small FOSS games.
+The license has been chosen to foster an open community of game development.
+
+The Chuột game engine is standing on the shoulders of giants of the Rust ecosystem,
+such as [winit] for window handling and [wgpu] for drawing graphics.
+
+Recently, [version 0.2][chuot-0.2] has been released, which includes a big rewrite
+of the internal system and simplifying a lot of the API.
+Many rough and inconsistent parts have been cleaned up and renamed,
+resulting in quite a lot of breaking changes.
+This mainly happened because the developer was still finding a proper direction for the engine.
+Asset loading has been improved, especially asset hot-reloading,
+which is now also enabled by defining an external asset source.
+
+_Check out the [web examples][chuot-examples]!_
+
+[chuot-website]: https://tversteeg.nl/chuot
+[chuot-github]: https://github.com/tversteeg/chuot
+[chuot-0.2]: https://github.com/tversteeg/chuot/releases/tag/chuot-v0.2.0
+[chuot-examples]: https://tversteeg.nl/chuot/examples
+[winit]: https://docs.rs/winit
+[wgpu]: https://docs.rs/wgpu
+[@tversteeg]: https://github.com/tversteeg
+
+## Learning Material Updates
+
+## Tooling Updates
+
+## Library Updates
+
+### Godot Rapier: Rewrite it in Rust
+
+{{ video_figure(
+    type="video/mp4",
+    alt="Godot + Rapier logo make up the 'Godot Rapier' logo ; a few balls fall on it, showing off soft physics.",
+    src="godot_rapier.mp4",
+    caption="Godot Rapier showcase") }}
+
+[Godot Rapier][godot_rapier_github] written by [@Ughuuu](https://github.com/Ughuuu)
+is a physics plugin for [Godot][godot] that uses [Rapier][rapier], a popular
+physics engine written in Rust.
+
+Godot Rapier was originally written in C++, 
+and is now in the final stage of being completely rewritten in Rust.
+
+Its author wrote [an article on Reddit][godot_rapier_reddit] 
+about their experience with the rewrite. 
+Note that in the meantime the web exports have been fixed.
+
+Godot Rapier's website was adopted as a Rapier subdomain at
+[https://godot.rapier.rs/](https://godot.rapier.rs/).
+There you can also find a [progress overview](https://godot.rapier.rs/docs/progress).
+
+[rapier]: https://rapier.rs/
+[godot_rapier_github]: https://github.com/appsinacup/godot-rapier-physics
+[godot_rapier_reddit]: https://www.reddit.com/r/godot/comments/1dtoufn/rewriting_godots_physics_server_in_rust/
+[godot]: https://godotengine.org/
+
+## Popular Workgroup Issues in GitHub
+
+<!-- Up to 10 links to interesting issues -->
+
+## Other News
+
+<!-- One-liners for plan items that haven't got their own sections. -->
+
+## Meeting Minutes
+
+<!-- Up to 10 most important notes + a link to the full details -->
+
+[See all meeting issues][label_meeting] including full text notes
+or [join the next meeting][join].
+
+[label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting
+
+## Discussions
+
+<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide
+useful information -->
+
+## Requests for Contribution
+
+<!-- Links to "good first issue"-labels or direct links to specific tasks -->
+
+## Jobs
+
+<!-- An optional section for new jobs related to Rust gamedev -->
+
+## Bonus
+
+<!-- Bonus section to make the newsletter more interesting
+and highlight events from the past. -->
+
+## Future news
+
+<!-- Section to get more people involved in writing news. -->
+
+Editing this newsletter wouldn't be possible without [your contributions][news_current_prs]. 
+Thanks to everyone who helped us this month!
+
+If you want something mentioned in the next newsletter, [send us a pull request][pr].
+
+You can also get an early look at pending issues for the [next newsletter][news_future_prs].
+
+[news_current_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N53%27
+[news_future_prs]: https://github.com/rust-gamedev/rust-gamedev.github.io/pulls?q=is%3Apr+in%3Atitle+%27N54%27
+
+------
+
+That's all news for today, thanks for reading!
+
+Also, subscribe to our socials if you want to receive fresh news!
+- X/Twitter: [@rust_gamedev][@x_rust_gamedev]
+- Mastodon: [@rust_gamedev][@mastodon_rust_gamedev]
+- Reddit: [/r/rust_gamedev][/r/rust_gamedev]
+
+<!--
+TODO: Add real links and un-comment once this post is published
+**Discuss this post on**:
+[/r/rust_gamedev](TODO),
+[Mastodon](TODO),
+[Twitter](TODO),
+[Discord](https://discord.gg/yNtPTb2).
+-->
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@x_rust_gamedev]: https://twitter.com/rust_gamedev
+[@mastodon_rust_gamedev]: https://mastodon.gamedev.place/@rust_gamedev
diff --git a/content/news/_index.md b/content/news/_index.md
new file mode 100644
index 000000000..ce2a8e498
--- /dev/null
+++ b/content/news/_index.md
@@ -0,0 +1,7 @@
++++
+title = "News"
+insert_anchor_links = "right"
+template = "posts.html"
+page_template = "post.html"
+sort_by = "date"
++++
diff --git a/content/posts/_index.md b/content/posts/_index.md
index 4fdd7e21a..e9429090f 100644
--- a/content/posts/_index.md
+++ b/content/posts/_index.md
@@ -1,7 +1,4 @@
 +++
-title = "Posts"
+redirect_to = "/"
 insert_anchor_links = "right"
-template = "posts.html"
-page_template = "post.html"
-sort_by = "date"
 +++
diff --git a/sass/_extra.scss b/sass/_extra.scss
index 7b68f1b9d..2f4ebe628 100644
--- a/sass/_extra.scss
+++ b/sass/_extra.scss
@@ -1,5 +1,8 @@
 hr {
-    margin-bottom: $spacing-unit / 2;
+    border: 0;
+    height: 1px;
+    margin: 32px 0;
+    background-color: #bfbfbf;
 }
 
 li {
@@ -7,11 +10,25 @@ li {
     margin: 15px 0;
 }
 
-pre > code {
+pre>code {
     // To avoid grey background on code blocks.
     background-color: inherit;
 }
 
+.site-header {
+    // To avoid a thick black line on top of the page.
+    border-top: none;
+
+    // To center the site's title.
+    text-align: center;
+}
+
+.site-title {
+    // To center the site's title.
+    float: none;
+    padding: 0;
+}
+
 .intro {
     color: #ffffff;
     background-color: $brand-color;
@@ -66,14 +83,24 @@ h6:hover .anchor {
     visibility: visible;
 }
 
-.post-content p img {
+.post-content p img,
+.post-content figure img,
+.post-content figure video {
     display: block;
     box-sizing: border-box;
-    margin: 16px auto;
     padding: 8px;
     border: 1px solid #e8e8e8;
 }
 
+.post-content p img {
+    margin: 16px auto;
+}
+
+.post-content figure img,
+.post-content figure video {
+    margin: 0 auto;
+}
+
 .post-link {
     display: inline-block;
 }
@@ -82,14 +109,26 @@ h6:hover .anchor {
     margin-bottom: 0;
 }
 
-a.btn {
+input,
+button {
+    font-size: inherit;
+}
+
+input {
+    min-width: 0; // Allow the input to shrink on small devices.
+}
+
+a.btn,
+// Trick to increase the specificity and win against rules such as a:visited
+.btn {
     text-decoration: none;
     border-radius: 3px;
     font-weight: 600;
-    border: 1px solid transparent;
+    border: none;
     box-sizing: border-box;
     display: inline-block;
     padding: 0.4em 2em;
+    transition: background-color 125ms;
 
     background-color: $brand-color;
     color: $background-color;
@@ -97,15 +136,67 @@ a.btn {
 
     &:hover {
         color: lighten($background-color, 10);
-        border-color: $brand-color;
+        background-color: lighten($brand-color, 5);
+    }
+
+    &:active {
+        background-color: darken($brand-color, 5);
     }
 }
 
-// A hack for image captions.
-// See https://stackoverflow.com/questions/19331362/using-an-image-caption-in-markdown-jekyll
-img + em,
-a:first-child + em:last-child {
+input[type=email] {
+    border-radius: 3px;
+    border: 1px solid $brand-color;
+    box-sizing: border-box;
+    padding: .4em;
+}
+
+figcaption {
     display: block;
     text-align: center;
-    color: $grey-color;
+    color: #595959;
+    font-size: inherit;
+    margin-top: .5em;
+}
+
+video {
+    max-width: 100%;
+}
+
+.email-form {
+    display: grid;
+    margin-top: $spacing-unit;
+    grid-template-columns: auto auto;
+    justify-content: center;
+    gap: .6em 1em;
+    background-color: color-mix(in oklab, $brand-color 20%, #fff);
+    padding: $spacing-unit * .5;
+    align-items: center;
+    border-radius: 3px;
+
+    .email-form__icon {
+        width: 5em;
+        height: 5em;
+        --icon-stroke-color: #{$brand-color};
+        --icon-fill-color: rgba(255, 255, 255, .4);
+    }
+
+    .email-form__description {
+        max-width: 18em;
+    }
+
+    .email-form__input {
+        grid-column: 1 / 3;
+    }
+}
+
+.email-input {
+    display: grid;
+    grid-template-columns: repeat(2, auto);
+    gap: 5px;
+
+    label {
+        grid-column: 1 / 3;
+        font-size: .8em;
+    }
 }
diff --git a/static/.well-known/atproto-did b/static/.well-known/atproto-did
new file mode 100644
index 000000000..8049e9f03
--- /dev/null
+++ b/static/.well-known/atproto-did
@@ -0,0 +1 @@
+did:plc:kih2m3ettp3ybik33kypdwl4
diff --git a/static/CNAME b/static/CNAME
new file mode 100644
index 000000000..23a1e5a4e
--- /dev/null
+++ b/static/CNAME
@@ -0,0 +1 @@
+gamedev.rs
diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png
index c32084eb5..0c1b39955 100644
Binary files a/static/android-chrome-192x192.png and b/static/android-chrome-192x192.png differ
diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png
index 531c29991..8639e26c1 100644
Binary files a/static/android-chrome-512x512.png and b/static/android-chrome-512x512.png differ
diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png
index 8f274d46b..daca5869a 100644
Binary files a/static/apple-touch-icon.png and b/static/apple-touch-icon.png differ
diff --git a/static/favicon-16x16.png b/static/favicon-16x16.png
index d677e8868..b0df4cc5a 100644
Binary files a/static/favicon-16x16.png and b/static/favicon-16x16.png differ
diff --git a/static/favicon-32x32.png b/static/favicon-32x32.png
index 6fca9d487..6f1e619ba 100644
Binary files a/static/favicon-32x32.png and b/static/favicon-32x32.png differ
diff --git a/static/favicon.svg b/static/favicon.svg
new file mode 100644
index 000000000..cb5b5b1f6
--- /dev/null
+++ b/static/favicon.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="106" height="106"><style>@media (prefers-color-scheme:dark){svg{color:#fff}}</style><defs><mask id="b"><path fill="#fff" d="M-60-60H60V60H-60z"/><circle id="a" cx="0" cy="-40" r="3"/><use xlink:href="#a" transform="rotate(72)"/><use xlink:href="#a" transform="rotate(144)"/><use xlink:href="#a" transform="rotate(-144)"/><use xlink:href="#a" transform="rotate(-72)"/></mask></defs><g style="display:inline;mix-blend-mode:normal"><g mask="url(#b)" transform="translate(53 53)"><circle r="43" fill="none" stroke="currentColor" stroke-width="9"/><path id="c" fill="currentColor" stroke="currentColor" stroke-linejoin="round" stroke-width="3" d="m51 0-5-3v6z"/><use xlink:href="#c" transform="rotate(11.25)"/><use xlink:href="#c" transform="rotate(22.5)"/><use xlink:href="#c" transform="rotate(33.75)"/><use xlink:href="#c" transform="rotate(45)"/><use xlink:href="#c" transform="rotate(56.25)"/><use xlink:href="#c" transform="rotate(67.5)"/><use xlink:href="#c" transform="rotate(78.75)"/><use xlink:href="#c" transform="rotate(90)"/><use xlink:href="#c" transform="rotate(101.25)"/><use xlink:href="#c" transform="rotate(112.5)"/><use xlink:href="#c" transform="rotate(123.75)"/><use xlink:href="#c" transform="rotate(135)"/><use xlink:href="#c" transform="rotate(146.25)"/><use xlink:href="#c" transform="rotate(157.5)"/><use xlink:href="#c" transform="rotate(168.75)"/><use xlink:href="#c" transform="scale(-1)"/><use xlink:href="#c" transform="rotate(-168.75)"/><use xlink:href="#c" transform="rotate(-157.5)"/><use xlink:href="#c" transform="rotate(-146.25)"/><use xlink:href="#c" transform="rotate(-135)"/><use xlink:href="#c" transform="rotate(-123.75)"/><use xlink:href="#c" transform="rotate(-112.5)"/><use xlink:href="#c" transform="rotate(-101.25)"/><use xlink:href="#c" transform="rotate(-90)"/><use xlink:href="#c" transform="rotate(-78.75)"/><use xlink:href="#c" transform="rotate(-67.5)"/><use xlink:href="#c" transform="rotate(-56.25)"/><use xlink:href="#c" transform="rotate(-45)"/><use xlink:href="#c" transform="rotate(-33.75)"/><use xlink:href="#c" transform="rotate(-22.5)"/><use xlink:href="#c" transform="rotate(-11.25)"/><path id="d" stroke="currentColor" stroke-linejoin="round" stroke-width="6" d="m0-35 7-7H-7z"/><use xlink:href="#d" transform="rotate(72)"/><use xlink:href="#d" transform="rotate(144)"/><use xlink:href="#d" transform="rotate(-144)"/><use xlink:href="#d" transform="rotate(-72)"/></g><g style="display:inline;mix-blend-mode:normal"><path d="M258.444 46.408a4.9 4.9 0 0 1 2 .373c3.587 1.481 7.324 7.713 9.76 13.166s3.57 10.13 3.677 14.527c.107 4.399-.814 8.518-2.826 10.577s-5.113 2.052-7.683-.106-4.561-6.368-8.024-8.992-8.073-3.424-12.85-3.424-9.444.8-12.937 3.424-5.484 6.835-8.055 8.992-5.671 2.164-7.683.106-2.933-6.178-2.826-10.577c.107-4.398 1.241-9.073 3.677-14.527s6.174-11.685 9.762-13.166 7.026 1.788 10.002 3.68 5.247 2.357 8.002 2.357c2.754 0 5.147-.49 8.062-2.369 2.37-1.527 5.083-3.973 7.942-4.041m-33.172 7.44a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m35.793 1.3h-2.492a.15.15 0 0 0-.15.15v4.647a.15.15 0 0 1-.151.15h-4.645a.15.15 0 0 0-.15.15v2.493c0 .083.067.15.15.15h4.645a.15.15 0 0 1 .15.15v4.645c0 .084.068.15.15.15h2.493a.15.15 0 0 0 .15-.15v-4.656a.15.15 0 0 1 .15-.15h4.645q.018 0 .035.004a.15.15 0 0 0 .116-.143v-2.492a.15.15 0 0 0-.15-.15h-4.646a.15.15 0 0 1-.15-.15v-4.647a.15.15 0 0 0-.15-.15m-30.816 3.623a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m-9.952 0a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m4.975 4.948a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m24.55 1.04h-4.675a.155.155 0 0 0-.156.157v2.605c0 .087.069.159.156.159h4.676a.157.157 0 0 0 .156-.159v-2.605a.155.155 0 0 0-.156-.156m-10.09 0h-4.675a.157.157 0 0 0-.158.157v2.605a.16.16 0 0 0 .158.159h4.676a.157.157 0 0 0 .156-.159v-2.605a.155.155 0 0 0-.156-.156" style="display:inline;opacity:1;fill:currentColor;fill-opacity:1;stroke-width:5.31402" transform="matrix(-1 0 0 1 295.395 -13.492)"/></g></g></svg>
diff --git a/static/intro-icons.svg b/static/intro-icons.svg
index 1cdf37b2a..dbbbe1470 100644
--- a/static/intro-icons.svg
+++ b/static/intro-icons.svg
@@ -56,4 +56,20 @@
     <circle fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" cx="36" cy="17" r="10"/>
   </g>
 </symbol>
-</svg>
\ No newline at end of file
+
+<symbol id="incoming-envelope" viewBox="0 0 72 72">
+  <g id="color">
+    <rect x="27.5987" y="23.8185" rx="1.5627" width="37.5107" height="23.4538" fill="var(--icon-fill-color)"/>
+    <path fill="var(--icon-fill-color)" d="M65.1522,24.5967V44.5922a4.1748,4.1748,0,0,1-.3759,1.729L56.282,38.5034l-.7517.0751-3.082-2.8565Z"/>
+  </g>
+  <g id="line">
+    <line x1="5.7967" x2="22.1067" y1="41.904" y2="41.904" fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+    <line x1="9.2917" x2="22.1067" y1="34.914" y2="34.914" fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
+    <path fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M36.512,38.5785l-8.4192,7.7427a3.9028,3.9028,0,0,1-.451-1.729v-19.92"/>
+    <path fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M57.5383,39.399,64.83,46.11a3.5861,3.5861,0,0,0,.3226-1.4841V24.5967"/>
+    <path fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M55.4551,37.7517l9.2461,8.4943a1.6075,1.6075,0,0,1-1.3531.9772H29.3707a1.78,1.78,0,0,1-1.3531-.902l9.0957-8.344"/>
+    <path fill="none" stroke="var(--icon-stroke-color)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M65.1522,24.5967l-12.0274,11.05-3.3827,3.1572c-.15.15-.3759.3006-.5262.451a4.6338,4.6338,0,0,1-5.7882,0c-.15-.15-.3758-.3007-.5262-.451L39.5188,35.722l-11.877-11.05c0-.0752.0751-.0752.0751-.15A1.5333,1.5333,0,0,1,28.92,23.77H63.8743a1.6558,1.6558,0,0,1,1.2027.6766C65.077,24.5215,65.1522,24.5215,65.1522,24.5967Z"/>
+  </g>
+</symbol>
+
+</svg>
diff --git a/static/logo.png b/static/logo.png
deleted file mode 100644
index a123932ac..000000000
Binary files a/static/logo.png and /dev/null differ
diff --git a/static/logo.svg b/static/logo.svg
new file mode 100644
index 000000000..e5b3b15dc
--- /dev/null
+++ b/static/logo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" width="106" height="106"><defs><mask id="b"><path fill="#fff" d="M-60-60H60V60H-60z"/><circle id="a" cx="0" cy="-40" r="3"/><use xlink:href="#a" transform="rotate(72)"/><use xlink:href="#a" transform="rotate(144)"/><use xlink:href="#a" transform="rotate(-144)"/><use xlink:href="#a" transform="rotate(-72)"/></mask></defs><g style="display:inline;mix-blend-mode:normal"><g mask="url(#b)" transform="translate(53 53)"><circle r="43" fill="none" stroke="#000" stroke-width="9"/><path id="c" stroke="#000" stroke-linejoin="round" stroke-width="3" d="m51 0-5-3v6z"/><use xlink:href="#c" transform="rotate(11.25)"/><use xlink:href="#c" transform="rotate(22.5)"/><use xlink:href="#c" transform="rotate(33.75)"/><use xlink:href="#c" transform="rotate(45)"/><use xlink:href="#c" transform="rotate(56.25)"/><use xlink:href="#c" transform="rotate(67.5)"/><use xlink:href="#c" transform="rotate(78.75)"/><use xlink:href="#c" transform="rotate(90)"/><use xlink:href="#c" transform="rotate(101.25)"/><use xlink:href="#c" transform="rotate(112.5)"/><use xlink:href="#c" transform="rotate(123.75)"/><use xlink:href="#c" transform="rotate(135)"/><use xlink:href="#c" transform="rotate(146.25)"/><use xlink:href="#c" transform="rotate(157.5)"/><use xlink:href="#c" transform="rotate(168.75)"/><use xlink:href="#c" transform="scale(-1)"/><use xlink:href="#c" transform="rotate(-168.75)"/><use xlink:href="#c" transform="rotate(-157.5)"/><use xlink:href="#c" transform="rotate(-146.25)"/><use xlink:href="#c" transform="rotate(-135)"/><use xlink:href="#c" transform="rotate(-123.75)"/><use xlink:href="#c" transform="rotate(-112.5)"/><use xlink:href="#c" transform="rotate(-101.25)"/><use xlink:href="#c" transform="rotate(-90)"/><use xlink:href="#c" transform="rotate(-78.75)"/><use xlink:href="#c" transform="rotate(-67.5)"/><use xlink:href="#c" transform="rotate(-56.25)"/><use xlink:href="#c" transform="rotate(-45)"/><use xlink:href="#c" transform="rotate(-33.75)"/><use xlink:href="#c" transform="rotate(-22.5)"/><use xlink:href="#c" transform="rotate(-11.25)"/><path id="d" stroke="#000" stroke-linejoin="round" stroke-width="6" d="m0-35 7-7H-7z"/><use xlink:href="#d" transform="rotate(72)"/><use xlink:href="#d" transform="rotate(144)"/><use xlink:href="#d" transform="rotate(-144)"/><use xlink:href="#d" transform="rotate(-72)"/></g><g style="display:inline;mix-blend-mode:normal"><path d="M258.444 46.408a4.9 4.9 0 0 1 2 .373c3.587 1.481 7.324 7.713 9.76 13.166s3.57 10.13 3.677 14.527c.107 4.399-.814 8.518-2.826 10.577s-5.113 2.052-7.683-.106-4.561-6.368-8.024-8.992-8.073-3.424-12.85-3.424-9.444.8-12.937 3.424-5.484 6.835-8.055 8.992-5.671 2.164-7.683.106-2.933-6.178-2.826-10.577c.107-4.398 1.241-9.073 3.677-14.527s6.174-11.685 9.762-13.166 7.026 1.788 10.002 3.68 5.247 2.357 8.002 2.357c2.754 0 5.147-.49 8.062-2.369 2.37-1.527 5.083-3.973 7.942-4.041m-33.172 7.44a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m35.793 1.3h-2.492a.15.15 0 0 0-.15.15v4.647a.15.15 0 0 1-.151.15h-4.645a.15.15 0 0 0-.15.15v2.493c0 .083.067.15.15.15h4.645a.15.15 0 0 1 .15.15v4.645c0 .084.068.15.15.15h2.493a.15.15 0 0 0 .15-.15v-4.656a.15.15 0 0 1 .15-.15h4.645q.018 0 .035.004a.15.15 0 0 0 .116-.143v-2.492a.15.15 0 0 0-.15-.15h-4.646a.15.15 0 0 1-.15-.15v-4.647a.15.15 0 0 0-.15-.15m-30.816 3.623a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m-9.952 0a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m4.975 4.948a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5m24.55 1.04h-4.675a.155.155 0 0 0-.156.157v2.605c0 .087.069.159.156.159h4.676a.157.157 0 0 0 .156-.159v-2.605a.155.155 0 0 0-.156-.156m-10.09 0h-4.675a.157.157 0 0 0-.158.157v2.605c0 .087.071.159.158.159h4.676a.157.157 0 0 0 .156-.159v-2.605a.155.155 0 0 0-.156-.156" style="display:inline;opacity:1;fill:#000;fill-opacity:1;stroke-width:5.31402" transform="matrix(-1 0 0 1 295.395 -13.492)"/></g></g></svg>
\ No newline at end of file
diff --git a/static/logo_small.png b/static/logo_small.png
deleted file mode 100644
index 701c24ec6..000000000
Binary files a/static/logo_small.png and /dev/null differ
diff --git a/static/social-card.png b/static/social-card.png
new file mode 100644
index 000000000..de5469d84
Binary files /dev/null and b/static/social-card.png differ
diff --git a/templates/includes/email_signup.html b/templates/includes/email_signup.html
new file mode 100644
index 000000000..66cd0797a
--- /dev/null
+++ b/templates/includes/email_signup.html
@@ -0,0 +1,22 @@
+<form action="https://gamedev.us22.list-manage.com/subscribe/post?u=3b2317bf9350c11e252162541&amp;id=aaf37783ec&amp;f_id=0011cde1f0" method="post" name="mc-embedded-subscribe-form">
+    <div class="email-form">
+        <svg class="email-form__icon" aria-hidden="true">
+            <svg><use xlink:href="{{ get_url(path='intro-icons.svg#incoming-envelope') }}"></use></svg>
+        </svg>
+
+        <div class="email-form__description">
+            Get the Rust GameDev Workgroup’s monthly newsletter delivered directly to your inbox.
+        </div>
+
+        <div class="email-form__input email-input">
+            <label for="email-input">Email Address</label>
+            <input type="email" inputmode="email" name="EMAIL" id="email-input" placeholder="hello@example.com" required>
+            <button type="submit" name="subscribe" class="btn">Subscribe</button>
+
+            <div style="position: absolute; left: -5000px;" aria-hidden="true">
+                <input type="text" name="b_3b2317bf9350c11e252162541_aaf37783ec" tabindex="-1" value="">
+            </div>
+        </div>
+    </div>
+</form>
+    
\ No newline at end of file
diff --git a/templates/includes/header.html b/templates/includes/header.html
index 921ea339e..537f71ca4 100644
--- a/templates/includes/header.html
+++ b/templates/includes/header.html
@@ -1,7 +1,7 @@
 <header class="site-header">
     <div class="wrapper">
         <a class="site-title" rel="author" href="/">
-            <img src="{{ get_url(path='logo_small.png') }}" width="48" height="48" alt="" />
+            <img src="{{ get_url(path='logo.svg') }}" width="48" height="48" alt="" />
             {{ config.title | default(value="Minima") }}
         </a>
 
diff --git a/templates/includes/home.html b/templates/includes/home.html
index 765e64fc9..fd33ea712 100644
--- a/templates/includes/home.html
+++ b/templates/includes/home.html
@@ -15,7 +15,7 @@
         </p>
         <p>
             Join us on
-            <a href="https://github.com/{{ social.github | urlencode }}/wg"><svg class="svg-icon"><use xlink:href="{{ get_url(path='minima-social-icons.svg#github') }}"></use></svg> Github</a>
+            <a href="https://github.com/{{ social.github | urlencode }}/wg"><svg class="svg-icon"><use xlink:href="{{ get_url(path='minima-social-icons.svg#github') }}"></use></svg> GitHub</a>
             or
             <a href="https://discord.gg/{{ social.discord | urlencode }}"><svg class="svg-icon"><use xlink:href="{{ get_url(path='minima-social-icons.svg#discord') }}"></use></svg> Discord</a>,
             and help shape the future of game development in Rust!
@@ -25,19 +25,21 @@
 
 <div class="home wrapper">
     <h2 class="post-list-heading">{{ section.title | default(value="Latest News") }}</h2>
-    
-    {% set posts = get_section(path="posts/_index.md") %}
-    {% set pages = posts.pages | slice(end=config.extra.home.max_posts) %}
-    {{ macros::post_list(posts=pages, placeholder="None yet - stay tuned for updates and announcements!") }}
+    {% set posts_news = get_section(path="news/_index.md") %}
+    {% set pages_news = posts_news.pages | slice(end=config.extra.home.max_posts) %}
+    {{ macros::post_list(posts=pages_news, placeholder="None yet - stay tuned for updates and announcements!") }}
+
+    <h2 class="post-list-heading">{{ section.title | default(value="Latest Blog Posts") }}</h2>
+    {% set posts_blog = get_section(path="blog/_index.md") %}
+    {% set pages_blog = posts_blog.pages | slice(end=config.extra.home.max_posts) %}
+    {{ macros::post_list(posts=pages_blog, placeholder="None yet - stay tuned for updates and announcements!") }}
 
     <p class="feed-subscribe">
-        {% if pages | length > 0 %}
-        <a class="btn" id="all-news" href="{{ get_url(path='posts/') }}">
-            All News
-        </a>
-        {% endif %}
+        <a class="btn" id="all-news" href="{{ get_url(path='news/') }}">All News</a>
+        <a class="btn" id="all-blog-posts" href="{{ get_url(path='blog/') }}">All Blog Posts</a>
         <a href="{{ get_url(path='rss.xml') }}">
             <svg class="svg-icon orange"><use xlink:href="{{ get_url(path='minima-social-icons.svg#rss') }}"></use></svg><span>Subscribe</span>
-        </a>
+        </a>                
+        {% include "includes/email_signup.html" %}
     </p>
 </div>
diff --git a/templates/includes/social.html b/templates/includes/social.html
index c2ab81f3a..7fe6169c0 100644
--- a/templates/includes/social.html
+++ b/templates/includes/social.html
@@ -4,7 +4,7 @@
     {% if social.dribbble %}<li><a href="https://dribbble.com/{{ social.dribbble | urlencode }}" title="{{ social.dribbble }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#dribbble') }}"></use></svg></a></li>{% endif %}
     {% if social.facebook %}<li><a href="https://www.facebook.com/{{ social.facebook | urlencode }}" title="{{ social.facebook }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#facebook') }}"></use></svg></a></li>{% endif %}
     {% if social.flickr %}<li><a href="https://www.flickr.com/photos/{{ social.flickr | urlencode }}" title="{{ social.flickr }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#flickr') }}"></use></svg></a></li>{% endif %}
-    {% if social.github %}<li><a href="https://github.com/{{ social.github | urlencode }}" title="{{ social.github }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#github') }}"></use></svg> Github (rust-gamedev)</a></li>{% endif %}
+    {% if social.github %}<li><a href="https://github.com/{{ social.github | urlencode }}" title="{{ social.github }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#github') }}"></use></svg> GitHub (rust-gamedev)</a></li>{% endif %}
     {% if social.instagram %}<li><a href="https://www.instagram.com/{{ social.instagram | urlencode }}" title="{{ social.instagram }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#instagram') }}"></use></svg></a></li>{% endif %}
     {% if social.linkedin %}<li><a href="https://www.linkedin.com/in/{{ social.linkedin | urlencode }}" title="{{ social.linkedin }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#linkedin') }}"></use></svg></a></li>{% endif %}
     {% if social.pinterest %}<li><a href="https://www.pinterest.com/{{ social.pinterest | urlencode }}" title="{{ social.pinterest }}"><svg class="svg-icon grey"><use xlink:href="{{ get_url(path='minima-social-icons.svg#pinterest') }}"></use></svg></a></li>{% endif %}
diff --git a/templates/index.html b/templates/index.html
index 1a518dd2b..270cd5003 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1,6 +1,6 @@
 {% import "includes/post_list.html" as macros %}
 <!DOCTYPE html>
-<html lang="{% block lang_decl %}{{ config.default_language }}{% endblock lang_decl %}">
+<html lang="{{ lang }}">
 
     <head>
         <meta charset="utf-8">
@@ -23,13 +23,14 @@
             <link rel="canonical" href="{{ get_url(path='/' )}}">
         {% endblock seo %}
 
-        <meta property="og:image" content="{{ get_url(path='logo.png') }}">
+        <meta property="og:image" content="{{ get_url(path='social-card.png') }}">
         <meta property="og:image:width" content="200">
         <meta property="og:image:height" content="200">
         <meta property="og:site_name" content="{{ config.title | default(value="Minima") }}">
 
         <link rel="stylesheet" href="{{ get_url(path="style.css") }}">
         <link rel="apple-touch-icon" sizes="180x180" href="{{ get_url(path='apple-touch-icon.png') }}">
+        <link rel="icon" type="image/svg+xml" href="{{get_url(path="favicon.svg")}}">
         <link rel="icon" type="image/png" sizes="32x32" href="{{ get_url(path="favicon-32x32.png") }}">
         <link rel="icon" type="image/png" sizes="16x16" href="{{ get_url(path="favicon-16x16.png") }}">
         <link rel="manifest" href="{{ get_url(path="site.webmanifest") }}">
diff --git a/templates/page.html b/templates/page.html
index e47bf81f9..80320feb0 100644
--- a/templates/page.html
+++ b/templates/page.html
@@ -1,7 +1,5 @@
 {% extends "index.html" %}
 
-{% block lang_decl %}{{ lang }}{% endblock lang_decl %}
-
 {% block seo %}
     <title>{{ page.title }} | {{ config.title | default(value="Minima") }}</title>
 
diff --git a/templates/post.html b/templates/post.html
index eea16a350..55ff390ad 100644
--- a/templates/post.html
+++ b/templates/post.html
@@ -1,7 +1,5 @@
 {% extends "index.html" %}
 
-{% block lang_decl %}{{ lang }}{% endblock lang_decl %}
-
 {% block seo %}
     <title>{{ page.title }} | {{ config.title | default(value="Minima") }}</title>
 
diff --git a/templates/posts.html b/templates/posts.html
index 368ee1b94..2b30b5e7f 100644
--- a/templates/posts.html
+++ b/templates/posts.html
@@ -1,7 +1,5 @@
 {% extends "index.html" %}
 
-{% block lang_decl %}{{ lang }}{% endblock lang_decl %}
-
 {% block content %}
 <div class="posts wrapper">
     <h2 class="post-list-heading">{{ section.title | default(value="Latest News") }}</h2>
diff --git a/templates/shortcodes/image_figure.html b/templates/shortcodes/image_figure.html
new file mode 100644
index 000000000..1e8b69b1c
--- /dev/null
+++ b/templates/shortcodes/image_figure.html
@@ -0,0 +1,51 @@
+{# <!--
+    Displays an image with a legend.
+
+    Example usage:
+        {{ image_figure(
+            alt="image/GIF description"
+            src="image link"
+            caption="image caption") }}
+    
+    Note that the caption can contain markdown:
+        {{ image_figure(
+            alt="image/GIF description"
+            src="image link"
+            caption="image caption with some **strong** text") }}
+
+    But careful! Link references don't work:
+        This doesn't work: 
+            {{ image_figure(
+                alt="image/GIF description"
+                src="image link"
+                caption="[image caption][link]") }}
+            [link]: https://example.com
+        Use this instead:
+            {{ image_figure(
+                alt="image/GIF description"
+                src="image link"
+                caption="[image caption](https://example.com)") }}
+--> #}
+
+{% if src != "image link" %}
+    {# Only validate against placeholders if we're not in the example #}
+    {% if alt == "image/GIF description" %}
+        {{ throw(message="Don't forget to write your own image description :)") }}
+    {% endif %}
+
+    {% if caption and caption == "image caption" %}
+        {{ throw(message="Don't forget to write your own image caption ^^") }}
+    {% endif %}
+{% endif %}
+
+<figure>
+    {% if link %}<a href="{{link}}">{% endif %}
+    <img src="{{get_url(path=page.colocated_path ~ src)}}" alt="{{alt}}">
+    {% if link %}</a>{% endif %}
+
+    {% if caption %}
+        <figcaption>{{caption | markdown(inline=true) | safe}}</figcaption>
+    {% else %}
+        <figcaption>{{alt}}</figcaption>
+    {% endif %}
+</figure>
diff --git a/templates/shortcodes/video_figure.html b/templates/shortcodes/video_figure.html
new file mode 100644
index 000000000..f951b15ce
--- /dev/null
+++ b/templates/shortcodes/video_figure.html
@@ -0,0 +1,17 @@
+{# <!--
+Embed a video into a markdown file. Example usage:
+
+    {{ video_figure(
+        type="video/mp4", 
+        src="my-video.mp4", 
+        caption="Some caption.") }}
+
+--> #}
+<figure>
+    <video controls autoplay muted loop>
+        <source type="{{ type }}" src="{{ get_url(path=page.colocated_path ~ src)}}" />
+    </video>
+    {% if caption %}
+    <figcaption>{{ caption }}</figcaption>
+    {% endif %}
+</figure>
