diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..f58bad3a2
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,3 @@
+Please, read the [contributing guidelines][contributing] before submitting a PR.
+
+[contributing]: https://github.com/rust-gamedev/rust-gamedev.github.io/blob/source/CONTRIBUTING.md
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a08f54948..1197b208a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,12 +7,12 @@ jobs:
runs-on: ubuntu-latest
env:
BASE_URL: https://github.com/getzola/zola/releases/download
- VERS: v0.10.1
+ VERS: v0.12.2
ARCH: x86_64-unknown-linux-gnu
# https://github.com/marketplace/actions/github-pages#warning-limitation
GITHUB_PAT: ${{ secrets.GITHUB_PAT }}
steps:
- - uses: actions/checkout@v1
+ - uses: actions/checkout@v2
- name: Lint
uses: avto-dev/markdown-lint@v1
with:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..f53e401f5
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,234 @@
+# Contributing Guide
+
+## Workflow Overview
+
+- 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.
+
+ 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.
+
+- During the following few days, contributors take "🆓 **free**" sections
+ and submit corresponding PRs.
+
+ 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.
+
+ 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
+[@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]
+
+ 
+ _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.
+
+- Only use inline code formatting ("\`mycrate\`") for crate names
+ if this helps to avoid confusion.
+
+- Don't use GitHub shortcodes (like `:tada:`) - they won't be rendered
+ by normal MD renderers. Use plain Unicode emojis instead.
+
+- Consequent list item lines are indented with two spaces. Example:
+
+ ```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).
+ ```
+
+- Try to strip unneeded parts of URLs.
+ For example, remove `www.`, `old.`, and description parts of Reddit links:
+
+ - `https://old.reddit.com/r/rust/comments/i7bcwu/introducing_bevy_a_refreshingly_simple_datadriven`
+ - `https://reddit.com/r/rust/comments/i7bcwu/introducing_bevy`
+
+- Use a consistent list item termination
+ (don't mix items ending with ";", ",", ".", etc).
+
+[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.
diff --git a/README.md b/README.md
index 4a584cb84..cb0c14378 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,21 @@
# rust-gamedev.github.io
-## Newsletter Creation Workflow
-
-- At the beginning of the month, a draft of the newsletter is created
- from a [template](./newsletter-template.md).
- - This should be called `index.md`, and placed in a folder named
- `/posts/newsletter-xxx` (where `xxx` is the issue number).
-- During the month PRs with the month's news, meeting notes, etc
- are reviewed and merged into the draft.
- - All images should be placed in the same folder as the post.
- - Check the comments in the draft file.
-- At the end of the month, the draft is reviewed as a whole
- and polished if needed.
-- On the first working day of the next month, the final PR
- (that removes `draft = true` from the post's front matter and adds the date)
- is sent.
-- The link to the newsletter is shared on social networks, etc.
-- A small PR that adds links to Reddit, Twitter, etc discussions
- (see the comment at the bottom of the draft) is made.
-- A new draft for the next month is created from the template, goto 1.
+## Contributing Guide
+
+To contribute to the newsletter, please see [CONTRIBUTING].
+
+[CONTRIBUTING]: CONTRIBUTING.md
+
+## Building from Source
+
+The site is built and deployed automatically from the repo (see .github/workflows/ci.yml).
+
+To preview/experiment locally:
+
+1) [Install Zola][zola-get].
+2) Run `zola serve --drafts` and open the link.
+
+[zola-get]: https://getzola.org/documentation/getting-started/installation
## License
diff --git a/config.toml b/config.toml
index f46e327c8..f849a592c 100644
--- a/config.toml
+++ b/config.toml
@@ -4,7 +4,8 @@ base_url = "https://rust-gamedev.github.io/"
default_language = "en"
compile_sass = true
highlight_code = true
-generate_rss = true
+generate_feed = true
+feed_filename = "rss.xml"
[extra]
date_format = "%F"
diff --git a/content/posts/newsletter-001/index.md b/content/posts/newsletter-001/index.md
index 7a38816e6..5cc2ae62c 100644
--- a/content/posts/newsletter-001/index.md
+++ b/content/posts/newsletter-001/index.md
@@ -116,8 +116,7 @@ Also, check out
### Way of Rhea [Trailer][rhea trailer] and [Steam Wishlist][rhea steam] Announced
[][rhea trailer]
-
-^ _click on the GIF to see [the full trailer][rhea trailer]_
+_click on the GIF to see [the full trailer][rhea trailer]_
[A new trailer][rhea trailer] and the [Steam wishlist][rhea steam]
were published for "Way of Rhea" by [Anthropic Studios].
@@ -522,8 +521,7 @@ by [Michael Fairley] was released:
> and make sure to press all the buttons.
[][snake trailer]
-
-^ _click on the GIF to see [the full release trailer][snake trailer]_
+_click on the GIF to see [the full release trailer][snake trailer]_
A few posts about the game and how it was developed:
diff --git a/content/posts/newsletter-003/index.md b/content/posts/newsletter-003/index.md
index cd60a7328..a7f0eacf8 100644
--- a/content/posts/newsletter-003/index.md
+++ b/content/posts/newsletter-003/index.md
@@ -131,12 +131,15 @@ it's pretty active.
[veloren-survey]: https://veloren.net/devblog-36/#player-survey
[veloren-video]: https://www.youtube.com/watch?v=iwP7SXdWcTg
-### [PF Sandbox][pf-sandbox]
+### [Canon Collision][canon-collision]

-[PF Sandbox][pf-sandbox] by [@rukai] is a platform fighter sandbox featuring:
-in game Fighter and Stage Editor, replays, and TAS tools.
+[Canon Collision][canon-collision] by [@rukai] is an Undertale + Homestuck
+fan-made platform fighter with powerful tools for modding.
+It was forked from another project of rukai's
+[PF Sandbox](https://github.com/rukai/PF_Sandbox) so he could focus on making
+a game rather then an engine.
This month,
[exporting and hot-reloading assets from blender](https://twitter.com/thisIsRukai/status/1180477120113340417),
@@ -145,7 +148,7 @@ This month,
and [animations](https://twitter.com/thisIsRukai/status/1188261107124727808)
were added to the project.
-[pf-sandbox]:https://github.com/rukai/PF_Sandbox
+[canon-collision]:https://canoncollision.com
[@rukai]: https://twitter.com/thisIsRukai
### [Antorum][antorum]
@@ -521,8 +524,7 @@ Also, see this GameDev WG tracker/complaint issue:
### [RLSL][rlsl]: a Rust to SPIR-V Compiler

-
-^ _a simple fragment shader that renders a red circle (temporary syntax)_
+_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
@@ -556,8 +558,7 @@ _Discussions:
### [gfx-rs v0.4][gfx-v0-4]

-
-^ _a screenshot from [Yatekii/sailor] - a wgpu-based sailing navigation application_
+_a screenshot from [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 +684,7 @@ _Discussions:
### [cyclone-physics-rs]
[][cyclone-video-demo]
-
-^ _a little demo of "particle" simulation_
+_a little demo of "particle" simulation_
[cyclone-physics-rs] by [@heyrutvik] a new WIP game physics engine
based on the ["Game Physics Engine Development" book][cyclone-physics-book].
diff --git a/content/posts/newsletter-004/index.md b/content/posts/newsletter-004/index.md
index 165c5d09e..9afc940d1 100644
--- a/content/posts/newsletter-004/index.md
+++ b/content/posts/newsletter-004/index.md
@@ -201,8 +201,7 @@ about the implementation of a drop table system to handle monster loot.
### [Recall Singularity: November Progress][recall-s-nov-text]
[][recall-s-nov-video]
-
-^ _Demo of the basic ship collision._
+_Demo of the basic ship collision._
[Tom Leys] is working on a "The Recall Singularity" game
about designing autonomous factory ships and stations
@@ -778,8 +777,7 @@ and highlight events from the past. -->
Just an interesting Rust gamedev link from the past. :)
[][penguin-video]
-
-^ _click to see the [release trailer][penguin-video]_
+_click to see the [release trailer][penguin-video]_
["Adventures of Pascal Penguin"][penguin-about]
by [Matthew Michelotti](http://luduminis.com)
diff --git a/content/posts/newsletter-005/index.md b/content/posts/newsletter-005/index.md
index 8aad24858..9f5b66ab0 100644
--- a/content/posts/newsletter-005/index.md
+++ b/content/posts/newsletter-005/index.md
@@ -258,8 +258,7 @@ _Discussions:
### [Garden Devlog: December][garden-dec]
[][garden-video]
-
-^ _new smooth soil editing demo_
+_new smooth soil editing demo_
[Garden][garden] is an upcoming game centered around growing realistic plants.
@@ -856,8 +855,7 @@ and highlight events from the past. -->
Just an interesting Rust gamedev link from the past. :)
[][modulator-video]
-
-^ _click to see [the tutorial video][modulator-video]_
+_click to see [the tutorial video][modulator-video]_
In the November of 2018,
[@AndreaPessino] (Founder/CTO of [Ready At Dawn] Studios)
diff --git a/content/posts/newsletter-006/index.md b/content/posts/newsletter-006/index.md
index 6b5c60f93..3f887eb4c 100644
--- a/content/posts/newsletter-006/index.md
+++ b/content/posts/newsletter-006/index.md
@@ -838,8 +838,7 @@ 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_
+_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:
diff --git a/content/posts/newsletter-007/index.md b/content/posts/newsletter-007/index.md
index 7471619bf..c40e3ce50 100644
--- a/content/posts/newsletter-007/index.md
+++ b/content/posts/newsletter-007/index.md
@@ -177,8 +177,7 @@ This month an alpha version was published on itch: [check it out here][colony-it
### [Veloren][veloren]

-
-^ _Rolling mountain landscape_
+_Rolling mountain landscape_
[Veloren][veloren] is an open world, open-source voxel RPG
inspired by Dwarf Fortress and Cube World.
@@ -215,8 +214,7 @@ Here is the February changelog:
```
[](https://youtube.com/watch?v=1ldHQfxCT24)
-
-^ _1 year of Veloren development. Click for the full video!_
+_1 year of Veloren development. Click for the full video!_
You can read more about some specific topics:
@@ -245,8 +243,7 @@ February's full weekly devlogs: "This Week In Veloren...":
### [Oxidator][oxidator]
[][oxidator-video-play]
-
-^ _gameplay demo (35000 units)_
+_gameplay demo (35000 units)_
[Oxidator][oxidator] by [@Ruddle] is a real-time strategy game/engine
written with Rust and WebGPU.
@@ -273,12 +270,10 @@ Some of the current features:
(speed, turn rate, health, etc);
[][oxidator-video-unit-editor]
-
-^ _Demo of the unit editor_
+_Demo of the unit editor_
[][oxidator-video-map-editor]
-
-^ _Demo of the map editor_
+_Demo of the map editor_
[oxidator]: https://github.com/Ruddle/oxidator
[@Ruddle]: https://github.com/Ruddle
@@ -490,8 +485,7 @@ Tetra itself also received two small updates recently:
### [Akigi][akigi]

-
-^ _Sampling a heightmap in the vertex shader and also computing the normal,
+_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.
@@ -596,8 +590,7 @@ Check them out in the [latest winter devlog][grumpy_visitors].
### [Make China Great Again][china-great]

-
-^ _Turn back planes to the port, by clicking right keys to the virus beat._
+_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].
@@ -640,8 +633,7 @@ dependency updates, bugfixes and performance optimizations.
### [Recall Singularity: February Progress][recall-s-feb]

-
-^ _Harvesting and refining some Gold._
+_Harvesting and refining some Gold._
[Tom Leys] is working on a "The Recall Singularity" game
about designing autonomous factory ships and stations.
@@ -913,8 +905,7 @@ 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_
+_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.
diff --git a/content/posts/newsletter-008/index.md b/content/posts/newsletter-008/index.md
index 0745422eb..e5f576928 100644
--- a/content/posts/newsletter-008/index.md
+++ b/content/posts/newsletter-008/index.md
@@ -334,8 +334,7 @@ Some of this month's updates:
### [Veloren][veloren]

-
-^ _Work on Level of Detail_
+_Work on Level of Detail_
[Veloren][veloren] is an open world, open-source voxel RPG
inspired by Dwarf Fortress and Cube World.
@@ -434,8 +433,7 @@ Main updates:
### gfx-rs and wgpu news

-
-^ _[deeper] uses wgpu for rendering_
+_[deeper] uses wgpu for rendering_
[gfx-hal-0.5](https://github.com/gfx-rs/gfx/) was released!
Improvements done in March:
@@ -519,8 +517,7 @@ Some of this month's updates:
### [Nannou v0.13][nannou-post]

-
-^ _Daily Sketch 0114 by Mactuitui_
+_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.
diff --git a/content/posts/newsletter-009/index.md b/content/posts/newsletter-009/index.md
index f61034973..c535ba2c8 100644
--- a/content/posts/newsletter-009/index.md
+++ b/content/posts/newsletter-009/index.md
@@ -247,8 +247,7 @@ Follow [@seratonik] on Twitter for updates.
### [Akigi][akigi]

-
-^ _new shadows_
+_new shadows_
> [Akigi][akigi] is a multiplayer online world where humans
> aren't the only intelligent animals.
@@ -480,8 +479,7 @@ Here's a roundup of some of them:
### [Veloren][veloren]

-
-^ _Early procedural building generation_
+_Early procedural building generation_
[Veloren][veloren] is an open world, open-source voxel RPG
inspired by Dwarf Fortress and Cube World.
@@ -519,8 +517,7 @@ Here is the April changelog:
```

-
-^ _Early procedural building generation_
+_Early procedural building generation_
You can read more about some specific topics from April:
@@ -635,8 +632,7 @@ explaining why they've chosen Rust for their project's backend.
### [Symmetric Matrices & Triangle Numbers][matrices-post]

-
-^ _The pink orb should not collide with the player,
+_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]
@@ -742,8 +738,7 @@ and additional information about contributing are available on the [github repos
### `gfx-rs` and `wgpu` News

-
-^ _[hectic-rs] - Rust/wgpu/specs re-write of hectic by [@expenses]_
+_[hectic-rs] - Rust/wgpu/specs re-write of hectic by [@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]),
@@ -888,8 +883,7 @@ in an eternally sprawling office complex.
### [miniquad]

-
-^ _`miniquad` project got a logo_
+_`miniquad` project got a logo_
[miniquad] is a safe and cross-platform rendering library
focused on portability and low-end platforms support.
@@ -1130,8 +1124,7 @@ and highlight events from the past. -->
Just an interesting Rust gamedev link from the past. :)

-
-^ _"dead end" by turnage, 2019_
+_"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-010/index.md b/content/posts/newsletter-010/index.md
index ea24a9848..fd8a4d94d 100644
--- a/content/posts/newsletter-010/index.md
+++ b/content/posts/newsletter-010/index.md
@@ -64,8 +64,7 @@ If needed, a section can be split into subsections with a "------" delimiter.
### [Veloren][veloren]

-
-^ _The new repo banner_
+_The new repo banner_
[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
Fortress and Cube World.
@@ -80,8 +79,7 @@ account][veloren-opencollective], and you can donate towards our infrastructure
costs. GamingOnLinux [wrote an article][gamingonlinux] on Veloren's development.
[](https://www.youtube.com/watch?v=kjDFVgWYMd4)
-
-^ _0.6 release trailer. Click for the full video!_
+_0.6 release trailer. Click for the full video!_
Here is the May changelog:
@@ -115,8 +113,7 @@ of 0.7, and what they wanted to achieve:
> interact with the game UI to do this.

-
-^ _Welcome to Veloren! From the 0.6 release party_
+_Welcome to Veloren! From the 0.6 release party_
You can read more about some specific topics from May:
@@ -216,8 +213,7 @@ Some of the updates:
### [Sandbox]
[](https://streamable.com/0bhbol#)
-
-^ _click to see a gameplay demo_
+_click to see a gameplay demo_
[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!
@@ -324,8 +320,7 @@ Follow [@seratonik] on Twitter for updates.
### [Crate Before Attack][cratebeforeattack-site]
[][cratebeforeattack-site]
-
-^ _Decision tree and goal distance map in the background_
+_Decision tree and goal distance map in the background_
[Crate Before Attack][cratebeforeattack-site] by [koalefant (@CrateAttack)][@CrateAttack]
is a realtime/turn-based multiplayer game where frogs combat their friends
@@ -391,8 +386,7 @@ the first time. Be sure to check out the [Github repo][digescape-github].
### [Akigi][akigi]

-
-^ _Completed cat model with rigging_
+_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
@@ -426,8 +420,7 @@ Full devlogs:
### Nox Futura: Rust Edition

-
-^ _Worldgen menu_
+_Worldgen menu_
[Herbert Wolverson][thebracket]
(the author of [bracket-lib] and [the Rust Roguelike Tutorial][rl-book])
@@ -646,8 +639,7 @@ _Discussions:
### NodeFX
[][NodeFXTweet]
-
-^ _Click the image to see the animated version_
+_Click the image to see the animated version_
Project "NodeFX" by [Christian Vallentin (@MrVallentin)][@MrVallentin]
is an unnamed node-based tool for creating GLSL shaders in real-time,
diff --git a/content/posts/newsletter-011/blub-fluid.gif b/content/posts/newsletter-011/blub-fluid.gif
new file mode 100644
index 000000000..9aa2871b1
Binary files /dev/null and b/content/posts/newsletter-011/blub-fluid.gif differ
diff --git a/content/posts/newsletter-011/boundless.jpeg b/content/posts/newsletter-011/boundless.jpeg
new file mode 100644
index 000000000..67da631e0
Binary files /dev/null and b/content/posts/newsletter-011/boundless.jpeg differ
diff --git a/content/posts/newsletter-011/crate_before_attack.gif b/content/posts/newsletter-011/crate_before_attack.gif
new file mode 100644
index 000000000..734a70cbd
Binary files /dev/null and b/content/posts/newsletter-011/crate_before_attack.gif differ
diff --git a/content/posts/newsletter-011/doom-fire.gif b/content/posts/newsletter-011/doom-fire.gif
new file mode 100644
index 000000000..e682ceae6
Binary files /dev/null and b/content/posts/newsletter-011/doom-fire.gif differ
diff --git a/content/posts/newsletter-011/ecs-talk.png b/content/posts/newsletter-011/ecs-talk.png
new file mode 100644
index 000000000..799d22af9
Binary files /dev/null and b/content/posts/newsletter-011/ecs-talk.png differ
diff --git a/content/posts/newsletter-011/garden.jpeg b/content/posts/newsletter-011/garden.jpeg
new file mode 100644
index 000000000..b884b2c7a
Binary files /dev/null and b/content/posts/newsletter-011/garden.jpeg differ
diff --git a/content/posts/newsletter-011/glisp-logo.png b/content/posts/newsletter-011/glisp-logo.png
new file mode 100644
index 000000000..776c8d9c5
Binary files /dev/null and b/content/posts/newsletter-011/glisp-logo.png differ
diff --git a/content/posts/newsletter-011/goeld.jpg b/content/posts/newsletter-011/goeld.jpg
new file mode 100644
index 000000000..991568629
Binary files /dev/null and b/content/posts/newsletter-011/goeld.jpg differ
diff --git a/content/posts/newsletter-011/index.md b/content/posts/newsletter-011/index.md
index c94618fed..49c70ba9d 100644
--- a/content/posts/newsletter-011/index.md
+++ b/content/posts/newsletter-011/index.md
@@ -1,8 +1,7 @@
+++
title = "This Month in Rust GameDev #11 - June 2020"
-date = 2020-07-01
+date = 2020-07-07
transparent = true
-draft = true
+++
Welcome to the eleventh issue of the Rust GameDev Workgroup’s
@@ -27,13 +26,13 @@ Feel free to send PRs about your own projects!
Table of contents:
+- [Legion Game Jam](#legion-game-jam)
- [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)
- [Meeting Minutes](#meeting-minutes)
- [Requests for Contribution](#requests-for-contribution)
-- [Jobs](#jobs)
- [Bonus](#bonus)
+## [Legion Game Jam][legion-jam]
+
+[][roman-empire-wiki]
+
+The "Legion" game jam by [Laticoda] is about
+[the Roman Empire][roman-empire-wiki] for the background theme
+and ECS paradigm for the technical side.
+The conditions are:
+
+- Open-source & Rust only.
+- Projects should use some ECS library
+ (you can choose [Legion][legion] if you don't have one).
+- Team working and recycling old assets are allowed.
+
+> Submissions open to August 1st 2020.
+>
+> It can be RPG, strategic, arcade or else; multi or solo. What you want.
+> Just try to include a little bit of history and culture taste.
+> Don't be afraid, it is not ranked.
+
+Also, participants are encouraged to
+[document the development process at the event's forum][legion-jam-forum].
+
+[legion-jam]: https://itch.io/jam/legion-jam-rustlang
+[Laticoda]: https://itch.io/profile/laticoda
+[roman-empire-wiki]: https://wikipedia.org/wiki/Roman_Empire
+[legion]: https://github.com/TomGillen/legion
+[legion-jam-forum]: https://itch.io/jam/legion-jam-rustlang/community
+
## Game Updates
### [Way of Rhea][rhea-site]
[][rhea-trailer]
-
-^ _Click to see the latest version of the game's trailer_
+_Click to see the latest version of the game's trailer_
[Way of Rhea][rhea-site] ([steam][rhea-steam])
is an upcoming puzzle platformer that takes place in a world
where you can only interact with objects that match your current color.
-It's being build in a custom engine, and custom scripting language both written
+It's being built in a custom engine, and custom scripting language both written
in Rust by [Mason Remaley][@masonremaley]. This month's updates:
- A demo was released as part of the
@@ -102,8 +129,7 @@ or [subscribe to its newsletter][rhea-newsletter].
### [A/B Street][abstreet] - Adjust Traffic Patterns in Real Cities

-
-^ _Measuring the effects of some changes_
+_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.
@@ -131,11 +157,61 @@ A/B Street uses a [custom GUI library][ezgui], leveraging `glium`, `usvg`, and
[abstreet-reddit]: https://old.reddit.com/r/Seattle/comments/hdtucd/ab_street_think_you_can_fix_seattles_traffic/
[abstreet-stranger]: https://www.thestranger.com/slog/2020/06/29/43999454/ab-streets-game-lets-you-create-the-seattle-street-grid-of-your-dreams
+### [Crate Before Attack][cba-site]
+
+[][cba-youtube-scripting]
+_In-game visual scripting prototype_
+
+[Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
+is a skill-based grappling hook multiplayer game where frogs combat their friends
+while navigating the landscape with their sticky tongues.
+
+A summary of recent changes:
+
+- Visuals: added two new artist-painted levels:
+ [Space][cba-youtube-space]
+ and [Dinosaurs][cba-youtube-dinosaurs].
+- Gameplay: [AI can now play all game modes][cba-youtube-ai],
+ added Quick Game option,
+- In-game [visual scripting prototype][cba-youtube-scripting].
+- Physics tweaks and [improved terrain normal sampling][cba-youtube-normals]
+- Multiplayer: added in-game chat, private matches with secret links,
+ improved game setup UI. Numerous bugfixes and tweaks
+- [Playable Browser build][cba-play].
+
+More details in [June Update DevLog-entry][cba-june-update]
+and on [the YouTube channel][cba-youtube].
+
+[cba-site]: https://cratebeforeattack.com
+[cba-june-update]: https://cratebeforeattack.com/posts/20200630-june-update/
+[cba-play]: https://cratebeforeattack.com/play
+[cba-youtube]: https://youtube.com/channel/UC_xMilPTLuuE5iLs1Ml9zow
+[cba-youtube-ai]: https://youtu.be/IUBZgusI7aI
+[cba-youtube-space]: https://youtu.be/IOmD1LRJ6NA
+[cba-youtube-dinosaurs]: https://youtu.be/UgIBNolI7Wo
+[cba-youtube-scripting]: https://youtu.be/LLAc9_cOR9o
+[cba-youtube-normals]: https://youtu.be/r5BAe03MRZo
+[@CrateAttack]: https://twitter.com/CrateAttack
+
+### [Garden]: June Devlog
+
+
+
+[Garden][garden] is an upcoming game centered around growing realistic plants.
+Some of the updates from [the June devlog][garden-devlog]:
+
+- Soil collision detection & changes to the soil column generation.
+- Plant sim & terrain updates happen at different times & separately.
+- Proper Global Illumination research.
+- Automatic in-game texture reloading.
+
+[garden]: https://epcc.itch.io/garden
+[garden-devlog]: https://cyberplant.xyz/posts/june
+
### [Veloren][veloren]

-
-^ _Animation improvements_
+_Animation improvements_
[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
Fortress and Cube World.
@@ -202,6 +278,43 @@ Also, check out [a talk about open source and Veloren][veloren-talk]:
[veloren-docs]: https://docs.veloren.net/veloren_voxygen/index.html
[veloren-talk]: https://youtube.com/watch?v=aS26sqT09Pw
+### [Zero to Game][zerotoga.me]
+
+
+_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.
+
+> My plan for this website is to narrate my independent development
+> of a computer game in the Rust programming language.
+> I've never done this before, and so I hope to be able to show you
+> the progression right from zero all the way up to a game.
+>
+> - Zero game programming experience.
+> - Zero experience in the Rust programming language.
+> - Zero experience making assets, images, sounds, models, etcetera.
+
+Currently published posts:
+
+- [\#1 "Finding Zero"](https://zerotoga.me/dev/findingzero)
+ \- where the game development journey is beginning.
+- [\#2 "Inspiring Design"](https://zerotoga.me/dev/inspiringdesign)
+ \- how Factorio, Screeps, and Space Station 13 are inspiring the game's design.
+- [\#3 "Picking Technology"](https://zerotoga.me/dev/pickingtechnology)
+ \- researching a technology path for the game project to start out on.
+- [\#4 "Leading Design Challenges"](https://zerotoga.me/dev/leadingdesignchallenges)
+ \- the spacetime issues with combining gameplay inside and outside of spaceships.
+- [\#5 "Fast Spaceship Physics"](https://zerotoga.me/dev/fastspaceshipphysics)
+ \- prototyping a spaceship physics simulation aimed at speed.
+- [\#6 "Physical Destruction"](https://zerotoga.me/dev/physicaldestruction)
+ \- the structure and implementation of a spaceship destruction prototype.
+- [\#7 "Rendering in Rust"](https://zerotoga.me/dev/renderinginrust)
+ \- working through from tutorial code to meet the needs
+ of the game's first Rust scene render.
+
+[zerotoga.me]: https://zerotoga.me
+
### [Pont][pont-online]

@@ -266,8 +379,7 @@ Web, Mac, Linux, Windows (untested) & possible even iOS & Android.
### [Animal Chess][AnimalChess]

-
-^ _Part of the game map_
+_Part of the game map_
[Animal Fight Chess][AnimalChess] (斗兽棋, "Doe Show Chee") by [@netcan]
is a Rust implementation of a popular Chinese game.
@@ -293,6 +405,17 @@ a python module to use AlphaZero algorithm for training.
[animal-chess-wiki]: https://en.wikipedia.org/wiki/Jungle_(board_game)
[animal-chess-pieces]: http://ancientchess.com/graphics-rules/dou_shou_qi_jungle_game-pieces-values.jpg
+### [rs-type]
+
+
+
+[rs-type] is a WIP typing game
+inspired by [zty.pe](https://zty.pe/).
+It can load [KTouch courses](https://github.com/KDE/ktouch/tree/master/data/courses)
+and also has a built-in basic vector drawing tool for painting backgrounds.
+
+[rs-type]: https://github.com/akiross/rs-type
+
### [Guacamole Runner][guacamole]

@@ -318,17 +441,29 @@ they plant flowers which gives them points.
are represented on your keyboard lights, instead of a computer screen.
[TanTan] released a [video][wooting_snake-video]
-documenting the process making this project.
+documenting the process of making this project.
[wooting_snake-git]: https://github.com/TanTanDev/wooting_snake
[wooting_snake-video]: https://youtu.be/OhhscXz-60g
[TanTan]: https://twitter.com/Tantan22430802
+### [boundless]
+
+
+
+[Anthony Brigante][abrigante] started working on a 2D sandbox game.
+Two devlogs were released this month:
+
+- ["Hello, Rust"](https://abrigante.com/post/2020/06/04/Hello-Rust.html)
+- ["From Sandbox to Production - Rendering"](https://abrigante.com/post/2020/06/08/From-Sandbox-To-Production-Rendering.html)
+
+[boundless]: https://github.com/abrigante1/boundless/tree/production
+[abrigante]: https://abrigante.com/
+
### [Weegames][weegames-itch]
[][weegames-video]
-
-^ _Click to see [a demo video][weegames-video]_
+_Click to see [a demo video][weegames-video]_
[Weegames][weegames-itch] is a fast-paced minigame collection.
There are 23 odd games all made using free images and sounds.
@@ -340,8 +475,87 @@ The more minigames you beat the faster they get.
[weegames-repository]: https://github.com/yeahross0/weegames
[weegames-video]: https://youtube.com/watch?v=A_GqhZ_7EIw
+### [blub]
+
+
+
+[blub] is a WIP 3D fluid simulation playground build with wgpu-rs and imgui-rs.
+It focuses primarily on hybrid approaches lagrangian/eularian approaches
+(PIC/FLIP/APIC..). Check the project's README for more details.
+
+[blub]: https://github.com/wumpf/blub
+
## Learning Material Updates
+### [Hypervis: 4D Physics Visualization][ldn-talk]
+
+[][ldn-talk]
+
+This month, [Tyler Zhang gave a talk][ldn-talk] at
+London Virtual Talks about the theory and implementation
+of 4D physics visualization.
+The demo's source code [could be found here][hypervis].
+
+[hypervis]: https://github.com/t-veor/hypervis
+[ldn-talk]: https://youtube.com/watch?v=_22oxXEX_xc?t=709
+
+### [Boids in Rust][rboids-post-1]
+
+[][rboids-video]
+_Click to watch [the video demo][rboids-video]_
+
+[@twitu] has published a three-part blog series
+about simulating a group of virtual agents (boids)
+that will swim around an enclosed space behaving like a school of fish.
+
+> This is a beautiful application of procedural graphics generation,
+> where simple rules create complex patterns.
+> It's almost entirely inspired by Sebastian Lague's
+> [Coding Adventure with boids][Sebastian-boids].
+
+1) [A fistful of boids][rboids-post-1]
+ \- Setting up the scene and basic animation
+2) [For a few boids more][rboids-post-2]
+ \- Generating boids and obstacle avoidance
+3) [The school, the boid and the Rusty][rboids-post-3]
+ \- Simulating a flock, parallelism and benchmarking performance
+
+[The source code with tagged stages is available here][rboids].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/gsldbi/3d_boids)_
+
+[rboids]: https://github.com/twitu/rboids
+[@twitu]: https://github.com/twitu
+[rboids-video]: https://drive.google.com/file/d/1ri4x-jCX8SA9oX8OqDIKtXhYIrEKlGjO/view
+[rboids-post-1]: https://blog.bitsacm.in/a-fistful-of-boids
+[rboids-post-2]: https://blog.bitsacm.in/for-a-few-boids-more
+[rboids-post-3]: https://blog.bitsacm.in/the-school-the-boid-and-the-rusty
+[Sebastian-boids]: https://youtube.com/watch?v=bqtqltqcQhw
+
+### [DOOM Fire][doomfire]
+
+
+
+[doomfire] by [@r-marques] is Rust implementations of the DOOM fire effect
+(based on [Fabien Sanglard's blog post][fabien-fire])
+using different 2d graphics libraries:
+[minifb](https://github.com/emoon/rust_minifb),
+[pixels](https://github.com/parasyte/pixels),
+[sdl2](https://github.com/Rust-SDL2/rust-sdl2),
+[wasm-bindgen](https://github.com/rustwasm/wasm-bindgen)
+\+ [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API).
+
+> This could be helpful for someone new to rust and trying
+> to get into game development and looking for the right libraries to use.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/gvcj6d/doom_fire_implemented_in_rust)_
+
+[doomfire]: https://github.com/r-marques/doomfire
+[@r-marques]: https://github.com/r-marques
+[fabien-fire]: https://fabiensanglard.net/doom_fire_psx
+
## Library & Tooling Updates
### [rust-psp]
@@ -355,10 +569,10 @@ This project is a port and improvement of the unofficial C/C++ PSPSDK from
nightly and a cargo subcommand.
The psp crate provides a `psp::sys` submodule that houses the entire Sony PSP
-API. We are working to have theseinterfaces merged into the libc crate.
-The PSP unfortunately uses non-standard dynamic linking,
+API. The authors are working to have these interfaces merged into the libc crate.
+The PSP, unfortunately, uses non-standard dynamic linking,
(and some libraries are statically linked!), so function definitions
-marked extern are not enough. Eventually we will wrap this sys lib with a more
+marked extern are not enough. Eventually, this sys lib will be wrapped with a more
rust-friendly library.
Rather than patching LLVM or rustc, the rust-psp team has also merged a
@@ -380,16 +594,42 @@ channel in the [PSP Homebrew discord server](https://discord.gg/WY8XhDG).
[rust-psp]: https://github.com/overdrivenpotato/rust-psp
+### [glam]
+
+[glam] is a simple and fast linear algebra crate for games and graphics.
+
+This month [glam 0.9] was published to crates.io. This update is a breaking
+change from 0.8.
+
+In 0.9 the `Vec3` type was changed from being a 128 byte SIMD vector type to a
+tuple of three floats. This changes the size of `Vec3` from 16 bytes to 12 bytes
+and the alignment from 16 bytes to 4 bytes. This might not affect all users but
+if `Vec3` was used in a context where the size or alignment mattered, such as in
+FFI or as input to shaders, this could cause breakage.
+
+The SIMD parts of `Vec3` were moved to a new type, `Vec3A` (`A` for Aligned)
+which is 16 byte aligned and thus 16 bytes in size. The `Vec3A` type is still
+there for users who want the performance benefits of the SIMD implementation.
+
+The motivation for this change was that it is potentially surprising and
+confusing for new users that the `Vec3` type was not 12 bytes. Also, it's common
+that users needed a `Vec3` that was just 12 bytes.
+
+While glam is reasonably stable it has not yet reached a 1.0 release so it
+seemed like now is the time to address such issues in the API.
+
+[glam]: https://github.com/bitshifter/glam-rs
+[glam 0.9]: https://github.com/bitshifter/glam-rs/blob/master/CHANGELOG.md#090---2020-06-28
+
### [This Month in Mun][mun-june]

-
-^ _Mun language server diagnostics in action_
+_Mun language server diagnostics in action_
[Mun] is a scripting language for gamedev focused on quick iteration times
that is written in Rust.
-After the dust of the [Mun v0.2 release][mun-release] settled, this month focus
+After the dust of the [Mun v0.2 release][mun-release] settled, this month's focus
has been on fixing several issues found by community members, improving the
overall quality of the code base and working towards the next release: Mun v0.3.
@@ -404,6 +644,41 @@ Their [June updates][mun-june] include:
[mun-release]: https://mun-lang.org/blog/2020/05/16/release-mun-v0-2-0
[mun-june]: https://mun-lang.org/blog/2020/06/30/this-month-june
+### [GameLisp]
+
+
+
+[GameLisp] (glisp) is a scripting language built for and in Rust and utilizes
+syntax from the LISP family of programming languages. It provides a fast and
+efficient garbage collector that runs every frame instead of freezing a thread.
+
+GameLisp also provides [a playground][glisp-playground] to experiment with
+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].
+
+[gamelisp]: https://gamelisp.rs/
+[glisp-playground]: https://gamelisp.rs/playground/
+[glisp-reference]: https://gamelisp.rs/reference/
+[glisp-docsrs]: https://docs.rs/glsp/0.1.0/glsp/
+[glisp-cratesio]: https://crates.io/crates/glsp/
+[glisp-github]: https://github.com/fleabitdev/glsp/
+
+### [safe_arch] v0.5
+
+[safe_arch] is a crate by [@lokathor] that safely exposes
+CPU arch intrinsics via `#[cfg()]`.
+This month v0.4 and v0.5 versions were released.
+The main improvements are:
+
+- 256 bit supports
+- Almost all the API was reworked for better naming consistency
+
+[safe_arch]: https://github.com/Lokathor/safe_arch
+[@lokathor]: https://twitter.com/lokathor
+
### [yaks]
[yaks] is a minimalistic framework for automatic multithreading
@@ -432,6 +707,65 @@ written with the framework on platforms without threading - notably, web.
[`hecs`]: https://crates.io/crates/hecs
[Rayon]: https://crates.io/crates/rayon
+### [macroquad]
+
+[macroquad] by [@fedor_games] is cross-platform
+(Windows/Linux/macOS/Android/WASM) game framework
+build on top of [miniquad].
+
+The project now has [a Discord community server](https://discord.gg/WfEp6ut)
+([Matrix bridge](https://matrix.to/#/#quad-general:matrix.org))
+with channels for all the quad-family projects:
+miniquad, macroquad, good-web-game, and nanoserde.
+
+Also, two new examples came from the awesome macroquad community:
+
+- "snake" - try it [in the browser][mq-snake-web] ([source][mq-snake])
+
+ [][mq-snake-web]
+
+- "asteroids" - try it [in the browser][mq-asteroids-web] ([source][mq-asteroids])
+
+ [][mq-asteroids-web]
+
+------
+
+megaui is macroquad's imgui-like UI system.
+Recently, megaui got decent input widgets: input fields, editboxes, and sliders.
+All of them support copy-pasting back and forth from the browser.
+Check out [the web demo](https://not-fl3.github.io/miniquad-samples/ui.html)
+([source](https://github.com/not-fl3/macroquad/blob/master/examples/ui.rs)):
+
+
+
+------
+
+[nanoserde] by [@fedor_games] is a fork of makepad-tinyserde
+with syn/quote/proc_macro2 dependencies removed.
+It attempts to solve a serde's problems of long clean compilation time,
+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
+> cargo tree
+nanoserde v0.1.0 (/../nanoserde)
+└── nanoserde-derive v0.1.0 (/../nanoserde/derive)
+```
+
+Some benchmarks and tiled map deserializing example
+[could be found here][nanoserde-bench].
+
+[macroquad]: https://github.com/not-fl3/macroquad
+[miniquad]: https://github.com/not-fl3/miniquad
+[mq-snake]: https://github.com/not-fl3/macroquad/blob/master/examples/snake.rs
+[mq-asteroids]: https://github.com/not-fl3/macroquad/blob/master/examples/asteroids.rs
+[mq-snake-web]: https://not-fl3.github.io/miniquad-samples/snake.html
+[mq-asteroids-web]: https://not-fl3.github.io/miniquad-samples/asteroids.html
+[nanoserde]: https://github.com/not-fl3/nanoserde/
+[@fedor_games]: https://twitter.com/fedor_games
+[nanoserde-bench]: https://github.com/not-fl3/nanoserde-bench
+
### [Tetra 0.4][tetra-040]
[Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month,
@@ -450,6 +784,52 @@ still a work in progress, so contributions are welcomed!
[tetra-040]: https://twitter.com/17cupsofcoffee/status/1275778769077317637
[tetra-dist]: https://tetra.seventeencups.net/distributing/
+### [NodeFX][@MrVallentin]
+
+[][nodefx-sdf2]
+
+Project "NodeFX" by [Christian Vallentin (@MrVallentin)][@MrVallentin]
+is an unnamed node-based tool for creating GLSL shaders in real-time,
+entirely written in Rust.
+
+This month added support for both 2D and 3D SDF nodes. The above screenshot is
+a meta example of creating a node using some of the 2D SDF primitives and
+operations.
+[An example of some 3D SDFs can be found on Twitter.][nodefx-sdf3]
+
+Next month is all about adding more UI, to make the application more
+user-friendly and fully-fledged. After UI has been added, there is a planned
+release of the application.
+More information can be found on [Twitter][@MrVallentin].
+
+[@MrVallentin]: https://twitter.com/MrVallentin
+[nodefx-sdf2]: https://twitter.com/MrVallentin/status/1276609598699581442
+[nodefx-sdf3]: https://twitter.com/MrVallentin/status/1276961197645008896
+
+### [Göld][goeld]
+
+
+
+[Göld][goeld] is a WIP game engine for hacking together 3D games using old tech.
+It uses wgpu-rs and is based on the simple mental model of PyGame or Löve,
+but for Goldsrc/Quake-era tech.
+
+The ultimate goal of the project is to have a simple engine that can do
+basically everything that many simplistic 3D games will need,
+without making an attempt at being too general.
+
+Current features:
+
+- Quake 2 maps loading (although not Quake/Goldsrc maps yet)
+ and rendering with proper BSP culling and frustum culling.
+- Loading and rendering of HL1 models.
+- Simple dynamic lighting system.
+
+[goeld]: https://github.com/Vurich/goeld
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/gwqbxl/been_working_on_a_webgpurust_reimplementation)_
+
### [Arsenal Game Engine][arsenal]
[Arsenal] is the concept for a 2D and 3D game engine that is fully integrated
@@ -500,10 +880,42 @@ The goal of the project is to be able to compose images without using the mouse.
[vimnail-git]: https://github.com/TanTanDev/vimnail
[vimnail-video]: https://youtu.be/2cSY43OcuZc
+### [GC NES Emulator][gc-nes]
+
+[][gc-nes]
+
+This month [Garett Cooper][garettcooper.com] released [GC NES Emulator][gc-nes]
+that allows you to play classic Nintendo Entertainment System games in the browser.
+
+> The core of the GC NES Emulator is implemented in the Rust programming language,
+> which supports Web Assembly as a compilation target.
+> With a WASM version of the emulator, I've written a javascript wrapper
+> that takes the frame rendered with the Rust code
+> and displays it on an HTML 5 canvas.
+> At present, this is done completely synchronously,
+> though I would like to move it into a worker at some point in the future
+
+[The source code is available here][gc-nes-src].
+
+[gc-nes]: https://garettcooper.com/#/nes-emulator
+[gc-nes-src]: https://github.com/GarettCooper/gc_nes_emulator
+[garettcooper.com]: https://garettcooper.com/
+
## Popular Workgroup Issues in Github
+- [rust-gamedev/wg](https://github.com/rust-gamedev/wg):
+ - [#51 "Using wasm-bindgen for games"](https://github.com/rust-gamedev/wg/issues/51);
+ - [#75 "Standardised API for sharing thread pools"](https://github.com/rust-gamedev/wg/issues/75);
+ - [#77 "Can we contribute to OpenXR to get Keyboard/Mouse support to be official?"](https://github.com/rust-gamedev/wg/issues/77);
+- [rust-gamedev/rust-gamedev.github.io](https://github.com/rust-gamedev/rust-gamedev.github.io):
+ - [#30 "CI: Add markdownlint checks"](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/30);
+- [rust-gamedev/arewegameyet](https://github.com/rust-gamedev/arewegameyet):
+ - [#95 "How do we remove crates?"](https://github.com/rust-gamedev/arewegameyet/issues/95);
+ - [#261 "Make .rs domain primary?"](https://github.com/rust-gamedev/arewegameyet/issues/261);
+ - [#320 "A different section for gamejam games?"](https://github.com/rust-gamedev/arewegameyet/issues/320);
+
## Meeting Minutes
@@ -517,6 +929,7 @@ or [join the next meeting][join].
+- [gl-rs is seeking new maintainers](https://github.com/brendanzab/gl-rs/issues/524);
- [Embark's open issues][embark-open-issues] ([embark.rs]);
- [winit's "Good first issue" and “help wanted” issues][winit-issues];
- [gfx-rs's "contributor-friendly" issues][gfx-issues];
@@ -540,10 +953,6 @@ or [join the next meeting][join].
[abstreet-issues]: https://github.com/dabreegster/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
-## Jobs
-
-
-
## Bonus
Just an interesting Rust gamedev link from the past. :)
+[][ecs-talk-video]
+
+During RustConf 2018, Catherine West gave a keynote talk
+"Using Rust For Game Development" that introduced a lot of people
+to the concept of ECS and is now considered a classic.
+You can [watch the recording here][ecs-talk-video] ([slides][ecs-talk-slides]).
+
+A few months later [an extended text version was released][ecs-talk-post].
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/9dwqa4/rustconf_2018_closing_keynote),
+[/r/programming](https://reddit.com/r/programming/comments/9dwq73/rustconf_2018_closing_keynote)_
+
+[ecs-talk-video]: https://youtube.com/watch?v=aKLntZcp27M
+[ecs-talk-post]: https://kyren.github.io/2018/09/14/rustconf-talk.html
+[ecs-talk-slides]: https://kyren.github.io/rustconf_2018_slides/index.html
+
------
That's all news for today, thanks for reading!
@@ -558,12 +984,9 @@ That's all news for today, thanks for reading!
Subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
-
+[/r/rust](https://reddit.com/r/rust/comments/hn0qso/this_month_in_rust_gamedev_11_june_2020),
+[twitter](https://twitter.com/rust_gamedev/status/1280577098369949696).
[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/posts/newsletter-011/ldn-4d-talk.jpeg b/content/posts/newsletter-011/ldn-4d-talk.jpeg
new file mode 100644
index 000000000..b158baf0e
Binary files /dev/null and b/content/posts/newsletter-011/ldn-4d-talk.jpeg differ
diff --git a/content/posts/newsletter-011/macroquad_asteroids.gif b/content/posts/newsletter-011/macroquad_asteroids.gif
new file mode 100644
index 000000000..7cc9f8188
Binary files /dev/null and b/content/posts/newsletter-011/macroquad_asteroids.gif differ
diff --git a/content/posts/newsletter-011/macroquad_snake.gif b/content/posts/newsletter-011/macroquad_snake.gif
new file mode 100644
index 000000000..d28197d10
Binary files /dev/null and b/content/posts/newsletter-011/macroquad_snake.gif differ
diff --git a/content/posts/newsletter-011/macroquad_ui.gif b/content/posts/newsletter-011/macroquad_ui.gif
new file mode 100644
index 000000000..fb5a1f345
Binary files /dev/null and b/content/posts/newsletter-011/macroquad_ui.gif differ
diff --git a/content/posts/newsletter-011/nes-emu.png b/content/posts/newsletter-011/nes-emu.png
new file mode 100644
index 000000000..896aefe85
Binary files /dev/null and b/content/posts/newsletter-011/nes-emu.png differ
diff --git a/content/posts/newsletter-011/nodefx.png b/content/posts/newsletter-011/nodefx.png
new file mode 100644
index 000000000..77e5c205e
Binary files /dev/null and b/content/posts/newsletter-011/nodefx.png differ
diff --git a/content/posts/newsletter-011/rboids-video.jpeg b/content/posts/newsletter-011/rboids-video.jpeg
new file mode 100644
index 000000000..212ca655e
Binary files /dev/null and b/content/posts/newsletter-011/rboids-video.jpeg differ
diff --git a/content/posts/newsletter-011/roman-empire.jpeg b/content/posts/newsletter-011/roman-empire.jpeg
new file mode 100644
index 000000000..8e90ee9e0
Binary files /dev/null and b/content/posts/newsletter-011/roman-empire.jpeg differ
diff --git a/content/posts/newsletter-011/rs-type.png b/content/posts/newsletter-011/rs-type.png
new file mode 100644
index 000000000..7b2432dc6
Binary files /dev/null and b/content/posts/newsletter-011/rs-type.png differ
diff --git a/content/posts/newsletter-011/zerotogame-destruction.gif b/content/posts/newsletter-011/zerotogame-destruction.gif
new file mode 100644
index 000000000..3c297bcab
Binary files /dev/null and b/content/posts/newsletter-011/zerotogame-destruction.gif differ
diff --git a/content/posts/newsletter-012/4k-into-youtube.jpeg b/content/posts/newsletter-012/4k-into-youtube.jpeg
new file mode 100644
index 000000000..4c6c415b6
Binary files /dev/null and b/content/posts/newsletter-012/4k-into-youtube.jpeg differ
diff --git a/content/posts/newsletter-012/abstreet.jpeg b/content/posts/newsletter-012/abstreet.jpeg
new file mode 100644
index 000000000..dce413dfa
Binary files /dev/null and b/content/posts/newsletter-012/abstreet.jpeg differ
diff --git a/content/posts/newsletter-012/canon-collision.png b/content/posts/newsletter-012/canon-collision.png
new file mode 100644
index 000000000..1048229ec
Binary files /dev/null and b/content/posts/newsletter-012/canon-collision.png differ
diff --git a/content/posts/newsletter-012/crate-before-attack.gif b/content/posts/newsletter-012/crate-before-attack.gif
new file mode 100644
index 000000000..40bcb182f
Binary files /dev/null and b/content/posts/newsletter-012/crate-before-attack.gif differ
diff --git a/content/posts/newsletter-012/data_oriented_design.svg b/content/posts/newsletter-012/data_oriented_design.svg
new file mode 100644
index 000000000..ec0ccd46c
--- /dev/null
+++ b/content/posts/newsletter-012/data_oriented_design.svg
@@ -0,0 +1,330 @@
+
+
+
diff --git a/content/posts/newsletter-012/dont-stop.gif b/content/posts/newsletter-012/dont-stop.gif
new file mode 100644
index 000000000..edc9aea29
Binary files /dev/null and b/content/posts/newsletter-012/dont-stop.gif differ
diff --git a/content/posts/newsletter-012/embark-logo-bg.jpg b/content/posts/newsletter-012/embark-logo-bg.jpg
new file mode 100644
index 000000000..7d030a707
Binary files /dev/null and b/content/posts/newsletter-012/embark-logo-bg.jpg differ
diff --git a/content/posts/newsletter-012/fps-game-2.jpeg b/content/posts/newsletter-012/fps-game-2.jpeg
new file mode 100644
index 000000000..290271968
Binary files /dev/null and b/content/posts/newsletter-012/fps-game-2.jpeg differ
diff --git a/content/posts/newsletter-012/graphene-demo.jpeg b/content/posts/newsletter-012/graphene-demo.jpeg
new file mode 100644
index 000000000..5f3529ac7
Binary files /dev/null and b/content/posts/newsletter-012/graphene-demo.jpeg differ
diff --git a/content/posts/newsletter-012/graphene.png b/content/posts/newsletter-012/graphene.png
new file mode 100644
index 000000000..cf1582158
Binary files /dev/null and b/content/posts/newsletter-012/graphene.png differ
diff --git a/content/posts/newsletter-012/hex_strat_gameplay.gif b/content/posts/newsletter-012/hex_strat_gameplay.gif
new file mode 100644
index 000000000..070c1127e
Binary files /dev/null and b/content/posts/newsletter-012/hex_strat_gameplay.gif differ
diff --git a/content/posts/newsletter-012/index.md b/content/posts/newsletter-012/index.md
new file mode 100644
index 000000000..35997d485
--- /dev/null
+++ b/content/posts/newsletter-012/index.md
@@ -0,0 +1,1150 @@
++++
+title = "This Month in Rust GameDev #12 - July 2020"
+date = 2020-08-06
+transparent = true
+draft = false
++++
+
+Welcome to the twelfth 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
+
+Table of contents:
+
+- [Game Updates](#game-updates)
+- [Learning Material Updates](#learning-material-updates)
+- [Library & Tooling Updates](#library-tooling-updates)
+- [Meeting Minutes](#meeting-minutes)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+- [Bonus](#bonus)
+
+
+
+## Game Updates
+
+### [ochre][4k-post] - 4K Intro
+
+[][4k-video]
+_Click to [watch the demo on Youtube][4k-video]._
+
+Jani Peltonen has recently released a [4K intro][4k-src]
+which is completely written in Rust and GLSL
+and published an article ["Writing a winning 4K intro in Rust"][4k-post]:
+
+> A 4K intro is a demo where the entire program (including any data)
+> has to be 4096 bytes or less so it is important
+> that the code is as space efficient as possible.
+> Rust has a bit of a reputation for creating bloated executables so I wanted
+> to find out if is possible to create very space efficient code with it.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/enbbxu/writing_a_4k_intro_in_rust),
+[hacker news](https://news.ycombinator.com/item?id=23742870)_
+
+[4k-post]: https://www.codeslow.com/2020/07/writing-winning-4k-intro-in-rust.html
+[4k-src]: https://github.com/janiorca/sphere_dance
+[4k-video]: https://youtube.com/watch?v=SIkkYRQ07tU
+
+### [Robo Instructus: 1 Year Later][robo-year]
+
+
+
+One year 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: 1 Year Later"][robo-year]
+about how well the game did after the release:
+sales by platform/country/OS, player feedback & reviews, etc.
+
+> People mostly don’t publish sales figures,
+> I guess it makes more business sense to be vague.
+> But maybe these will be helpful or interesting in some way.
+
+Also, Alex continues to maintain and polish the game: [1.29 version][robo-1-29]
+brings auto-scrolling improvements, better lang parsing,
+bugfixes, and dependency updates.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust_gamedev/comments/hsf2su/robo_instructus_1_year_later)_
+
+[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/2020/07/16/1-year-later.html
+[robo-1-29]: https://store.steampowered.com/newshub/app/1032170/view/4355495589078346745
+
+### [Crate Before Attack][cba-site]
+
+[][cba-site]
+_A new weapon: the Golf Club_
+
+[Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
+is a skill-based grappling hook multiplayer game where frogs combat their friends
+while navigating the landscape with their sticky tongues.
+
+A summary of July changes:
+
+- Gameplay: added a new melee weapon:
+ [the Golf Club][cba-youtube-golf-club].
+- Maps: added new map [Ruins][cba-youtube-observation]
+ by [Kesha Astafyev][cba-spoon-tar]
+- Animation: added eye tracking, frogs will track the closest danger
+ with their eyes such as a projectile or a pet.
+- Lobby: it is now possible to observe a match after it was started,
+ added chat, user list with country flags, match details, and map previews.
+- Localization: the game comes in three languages now: English, Spanish, Russian.
+- Numerous bugfixes and tweaks.
+
+Here is [a Playable Browser build][cba-play].
+More details are on [the YouTube channel][cba-youtube]
+and in [July Update DevLog-entry][cba-july-update].
+
+[cba-site]: https://cratebeforeattack.com
+[cba-july-update]: https://cratebeforeattack.com/posts/20200731-july-update/
+[cba-play]: https://cratebeforeattack.com/play
+[cba-youtube]: https://youtube.com/channel/UC_xMilPTLuuE5iLs1Ml9zow
+[cba-youtube-golf-club]: https://youtu.be/UYxZQh68T6E
+[cba-youtube-observation]: https://youtu.be/D63xy7sXStk
+[cba-spoon-tar]: https://www.behance.net/spoon_tar
+[@CrateAttack]: https://twitter.com/CrateAttack
+
+### [Wonder]
+
+[][Wonder]
+
+[Wonder] ([source code][Wonder-source]) is a casual physics puzzle game by [@kettlecorn]
+made for the web with WebAssembly, browser APIs, and no game framework.
+The objective is to collect all the stars on each level
+by drawing lines for the ball to roll along.
+
+The game was made in 48 hours for the
+[Ludum Dare game jam][ludum-dare] that occurred in April.
+@kettlecorn recently published an article going into the technical and
+creative challenges encountered making the game:
+["Making a Game in 48 hours with Rust and WebAssembly"][48-hour-jam].
+
+Wonder can be [played in the browser on itch.io][Wonder].
+
+[Wonder]: https://kettlecorn.itch.io/wonder
+[Wonder-source]: https://github.com/kettle11/LD46
+[@kettlecorn]: https://twitter.com/kettlecorn
+[ludum-dare]: https://ldjam.com
+[48-hour-jam]: https://ianjk.com/rust-gamejam/
+
+### Vlad Zhukov's [Online RTS Prototype][hex_strat]
+
+[][hex_strat]
+
+[Vlad Zhukov] shared a video of a WIP multiplayer online strategy game
+where you fight with other players for territory.
+Currently, there are two types of resources and 5 types of buildings.
+To build on the tile you need to occupy it with your warriors first.
+The player who occupied all enemies' tiles win.
+
+The game is written with [miniquad](https://github.com/not-fl3/miniquad)
+and a custom GUI library.
+Some parts of the game are promised to be open-sourced in the future.
+Read more about crates used in this project [here][hex-strat-crates].
+
+_Discussions:
+[twitter](https://twitter.com/VladZhukov0/status/1288091150339969024),
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/hzdzqg/my_new_online_strategy_game)_
+
+[hex_strat]: https://twitter.com/VladZhukov0/status/1288091150339969024
+[Vlad Zhukov]: https://twitter.com/VladZhukov0
+[hex-strat-crates]: https://reddit.com/r/rust_gamedev/comments/hzdzqg/my_new_online_strategy_game/fzk4l25
+
+### [A/B Street][abstreet]
+
+
+
+[A/B Street][abstreet] is a traffic simulation game exploring
+how small changes to roads affect cyclists, transit users, pedestrians,
+and drivers.
+
+This month [versions v0.2.2..v0.2.5][abstreet-releases] were released.
+Some of the updates:
+
+- A new random traffic scenario generator that makes people go between
+ houses and workplaces.
+- New commute pattern explorer tool.
+- New character art to give cutscenes a bit more personality.
+- Lots of pathfinding and user interface improvements.
+- Bugfixes and improved performance (especially startup time on large maps).
+
+[abstreet]: https://abstreet.org
+[abstreet-releases]: https://github.com/dabreegster/abstreet/releases
+
+### [Tennis Academy Dash][tennis-academy-dash]
+
+
+
+[@oliviff] released [Tennis Academy Dash][tennis-academy-dash]
+[v0.2][tennis-academy-update]:
+
+This release features:
+
+- a layering/scene management system
+- transitioning between UI scenes and game scenes
+- improving the level loading to work with string config files
+- adding a 5th level
+
+[@oliviff]: https://twitter.com/oliviff
+[tennis-academy-dash]: https://iolivia.itch.io/tennis-academy-dash
+[tennis-academy-update]: https://twitter.com/oliviff/status/1285298082033348609
+
+### [protochess]
+
+[][protochess]
+
+[protochess] ([source][protochess-src]) is an online multiplayer chess website
+that lets you build custom pieces/boards.
+
+> Want a piece that can move like a knight + queen? Sure.
+> Want to play on a 16x16 sized board? Impractical but you can do it!
+
+The frontend is written in Svelte with routing from Routify
+and styling with the Bulma CSS framework.
+All the chess logic is written in Rust, and compiled to WebAssembly to run singleplayer.
+The multiplayer websocket server uses Warp
+and is modeled after [this project](https://www.mattkeeter.com/projects/pont/).
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/hki9fu/protochesscom_a_chess_website_that_lets_you_play)_
+
+[protochess]: https://protochess.com/
+[protochess-src]: https://github.com/raytran/protochess
+
+### Nox Futura (Rust Edition)
+
+
+
+[Herbert Wolverson][thebracket]
+(the author of [bracket-lib] and [the Rust Roguelike Tutorial][rl-book])
+continues porting their old ["Nox Futura" project][nox-f-old] to Rust.
+The game uses wgpu, Legion, and Dear ImGui.
+
+Some of this month's updates:
+
+- [The project's repo is now public][noxfutura-src];
+- Voxel-friendly SSAO;
+- The render pipeline is now about 75% done;
+- Jobs board, buildings creation, and lumberjacking;
+- 3D cursor and mouse picking;
+- Voxelized Vegetation and growing trees;
+- Improved A* pathfinding and performance in general.
+
+Check out Sharing Saturday devlogs for more detailed reports:
+[\#1](https://reddit.com/r/roguelikedev/comments/hktr2y/sharing_saturday_318/fwutz7n),
+[\#2](https://reddit.com/r/roguelikedev/comments/hp04g6/sharing_saturday_319/fxnsn8h),
+[\#3](https://reddit.com/r/roguelikedev/comments/ht6wcc/sharing_saturday_320/fygjvkg),
+[\#4](https://reddit.com/r/roguelikedev/comments/hxcvp8/sharing_saturday_321/fz5atmd).
+
+[noxfutura-src]: https://github.com/thebracket/noxfutura
+[thebracket]: https://bracketproductions.com
+[bracket-lib]: https://github.com/thebracket/bracket-lib
+[rl-book]: http://bfnightly.bracketproductions.com/rustbook/
+[nox-f-old]: https://thebracket.itch.io/nox-futura
+
+### [🏕 Textcamp!][textcamp]
+
+
+
+[@peat] released a simple multiplayer demo of [Textcamp][textcamp-demo], a
+text-based adventure game.
+
+The goal of Textcamp is to build a modern [MUD] platform that can be played
+by [_anyone, anywhere_][textcamp]. It's very early in development, so please
+[say hello][textcamp-twitter] if you're interested in contributing code or
+stories!
+
+This demo features:
+
+- Basic scene, mob, and item templating, with spawning and combat.
+- Multiplayer authentication and support for hundreds of players.
+
+[@peat]: https://twitter.com/peat
+[textcamp]: https://text.camp/
+[textcamp-repo]: https://github.com/textcamp/textcamp
+[textcamp-twitter]: https://twitter.com/textdotcamp
+[textcamp-demo]: http://play.text.camp:8080/
+[MUD]: https://en.wikipedia.org/wiki/MUD
+
+### [Canon Collision][canon-collision]
+
+
+
+[Canon Collision][canon-collision] by [@rukai] is an Undertale + Homestuck
+fan-made platform fighter with powerful tools for modding.
+
+This month, he started work on the project again after taking a break.
+Notable changes:
+
+- [basic projectiles](https://twitter.com/thisIsRukai/status/1287377878460456963),
+- [WIP grab implementation (with some humorous results)](https://www.youtube.com/watch?v=sSrBGpT-Ebs),
+- [New animations + attacks](https://www.youtube.com/watch?v=AaPkRSNhoSM),
+- and [custom shaders](https://twitter.com/thisIsRukai/status/1279324105125163008).
+
+[canon-collision]:https://canoncollision.com
+[@rukai]: https://twitter.com/thisIsRukai
+
+### pGLOWrpg
+
+
+
+The [@pGLOWrpg] (Procedurally Generated Living Open World RPG) is a long-term
+project in development by [@Roal_Yr], which aims to be a text-based game with
+maximum portability and accessibility and focus on interactions and emergent
+narrative.
+
+For the past month(s) the main focus of the development was on the river
+generation system in the worldgen. Main features of the river generator are:
+
+- High robustness with most edge cases covered;
+- Single-pass with subsequent iterations generation, with numerous options to
+ tweak the process for either precision of the pattern or speed of generation;
+- Rivers are sorted upon intersections, their widths are adjusted, waterfalls
+ are formed when necessary;
+- Inflow and outflow directions are recorded for each cell, which allows
+ following the river upstream or downstream;
+- Simple yet effective erosion model implemented, which ensures no upwards flows
+ are allowed;
+- Each stream has its unique ID, which will later be linked to the stream data;
+- Streams have 12 orders of magnitude from smallest brooks to major rivers;
+- All the options are available to user under "General", "Advanced" and
+ "Very advanced" sections for any level of fine-tuning.
+
+Further development will involve re-factoring of the code and making it ready
+to be published prior to implementing new features. For small dev reports follow
+[@pGLOWrpg] on Twitter.
+
+[@Roal_Yr]: https://twitter.com/Roal_Yr
+[@pGLOWrpg]: https://twitter.com/pglowrpg
+
+### [Sandbox]
+
+
+
+[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!
+
+As they didn't make it in time for last month's newsletter, this month's edition
+covers the work they did in June and July:
+
+- Released version 1.0 and 1.1, created a flatpak package and associated metadata,
+ and published it to [Flathub].
+- Several new particles such as Fire, Mirror, Glitch, and some hidden ones,
+ and tweaked or overhalled almost every other particle!
+- A fancy new glow post process effect for Acid/Fire/Electricity,
+ created using wgpu-rs compute shaders.
+ - As a precursor to this, they made a PR to the pixels crate that removes the
+ old RenderPass approach in favor of giving the user direct access to wgpu.
+- Made a slick new icon and background for the game.
+- Added a video recording feature using gstreamer-rs and x264enc,
+ and then later removed it (for now).
+ - Moving from recording the raw texture generated for pixels
+ to the post-processed texture from wgpu
+ involved a major overhaul, and it proved too glitchy and slow.
+ Hopefully, it will be revived later, in the form of recording user inputs.
+- Many structural improvements, such as less glitchy particle
+ placement with Bresenham's line algorithm,
+ better error handling, and ensuring particles
+ are only ever stored on the heap.
+- Performance improvements, including generating noise in a separate thread.
+- Currently WIP: UI using imgui.
+
+
+
+Got any ideas? Leave an [issue on github][Sandbox], or add it yourself!
+
+[Sandbox]: https://github.com/JMS55/sandbox
+[Flathub]: https://flathub.org/apps/details/com.github.jms55.Sandbox
+
+### [Pushin' Boxes][pushin-homepage]
+
+[][pushin-itch]
+
+[Pushin' Boxes][pushin-homepage] ([itch][pushin-itch])
+is a [Sokoban][pushin-sokoban] clone made with [ggez][pushin-ggez] by
+[@septum][septum-twitter]. It features 16 levels of puzzling box-pushin' action
+where the player controls a little robot (named プシン).
+Check out a [blog post][pushin-post] about the game's release.
+
+[The source code is available on GitLab][pushin-repository].
+
+[pushin-homepage]: https://septum.io/games/pushin-boxes
+[pushin-itch]: https://septum.itch.io/pushin-boxes
+[pushin-sokoban]: https://en.wikipedia.org/wiki/Sokoban
+[pushin-post]: https://septum.io/blog/my-first-game
+[pushin-ggez]: https://github.com/ggez/ggez
+[pushin-repository]: https://gitlab.com/septum___/pushin_boxes
+[septum-twitter]: https://twitter.com/septum___
+
+### [Don't Stop][dont-stop]
+
+
+
+[Don't Stop][dont-stop] by @superahtoms is a rhythm game
+written using Rust and SDL2 for the [GMTK 2020 jam][gmtk2020].
+
+> Ever just wanted to keep dancing but the fuzz wants you to stop?
+> Well now you can! Just keep on dancing, don't let the bouncers grab you
+> while you're doing it or your fun stops!
+> Keep being the life of the party because you are Party Pat!
+>
+> Be like wind, be fast, dance and don't get caught!
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/hq0ecp/gmtk_submission_dont_stop)_
+
+[dont-stop]: https://superahtoms.itch.io/dont-stop
+[gmtk2020]: https://itch.io/jam/gmtk-2020
+
+### [shotcaller]
+
+[shotcaller] is a WIP quick (~7mins) ASCII-rendered RTS/MOBA game.
+
+> In the way "MOBA" games such as DOTA2 or LoL are usually played,
+> the captain of the team is the default shotcaller.
+>
+> > The shotcaller needs to be unbiased and not have tunnel vision.
+> > You need to be able to think in the future and tell
+> > what would happen if you did this or that.
+> > This becomes crucial when deciding to base-race or teleport back to defend.
+> > ~reddit-user
+>
+> Everyone on the team can play the part of Shotcaller on occasion.
+> The act of shotcalling is not typically the most prevalent activity of any player,
+> even for a captain — after all, they also need to play their hero.
+>
+> But in this game, all you do is shotcalling and big-picture strategizing.
+> The game plays as if you were controlling the 6th-person-in-the-booth “coach” player,
+> and your team (of AI-played bots) actually follows
+> your instructions to the letter, within their designed constraints.
+
+The game is in an early stage of development,
+[check out the design document][shotcaller-gdd] for details and plans.
+
+[shotcaller]: https://github.com/amethyst/shotcaller
+[shotcaller-gdd]: https://www.notion.so/Shotcaller-7374d2b2819c42ccb40f01dc7089d419
+
+### [On FPS Game Progress \#2][on-fps-game-2]
+
+[][on-fps-game-2-youtube]
+_Click to watch [footage from the game's current state][on-fps-game-2-youtube]._
+
+On this update, [@pingFromHeaven] talks about the lighting implementation that
+sets the tone for the game, how Rust is good at shortening the debugging
+times, which is especially valuable when working directly with OpenGL and why
+he doesn't describe what the game is about.
+
+The next update is going to be about establishing the mood further, which
+includes a more elaborate environment with more details, basic SFX and
+particles.
+
+[on-fps-game-2-youtube]: https://youtu.be/NIJNgr9zeXk
+[on-fps-game-2]: http://atilkockar.com/on-fps-game-progress-2/
+[@pingFromHeaven]: https://twitter.com/pingFromHeaven
+
+### [Zemeroth][zemeroth]
+
+
+
+[Zemeroth][zemeroth] by [@ozkriff] is a minimalistic 2D turn-based tactical game.
+
+Some of the recent updates:
+
+- The game got a new development roadmap: ["Final Push"][zemeroth-final-push].
+- UI updates: [widget stretching][zemeroth-stretch] and [more informative "dots"][zemeroth-dots].
+- A few actions [got additional effects][zemeroth-flare].
+- The work on adding sounds has begun.
+
+[zemeroth]: https://github.com/ozkriff/zemeroth
+[@ozkriff]: https://twitter.com/ozkriff
+[zemeroth-final-push]: https://twitter.com/ozkriff/status/1280874966855176199
+[zemeroth-stretch]: https://twitter.com/ozkriff/status/1284154997190594560
+[zemeroth-dots]: https://twitter.com/ozkriff/status/1284418956296626176
+[zemeroth-flare]: https://twitter.com/ozkriff/status/1282051985907298306
+
+### [Veloren][veloren]
+
+
+_Sunrise_
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In July, Veloren reached its 1000th merge! Lots of work has been done towards
+the 0.7 release. The release date has been pushed from the beginning of August
+to mid-August. A loot table system was added to item drops. Lots of work has
+been done on animations and quadrupeds. Networking has switched to a new
+system. Significant improvements have been made to pathfinding system to improve
+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.
+
+
+_Progress on the particle system_
+
+You can read more about some specific topics from July:
+
+- [Networking Milestone](https://veloren.net/devblog-75#networking-milestone-by-xmac94x)
+- [The Case of the Disappearing Entities](https://veloren.net/devblog-75#the-case-of-the-disappearing-entities-by-imbris)
+- [Pathfinding](https://veloren.net/devblog-75#pathfinding-with-zesterer)
+- [GUID Insights](https://veloren.net/devblog-75#guid-insights-by-sharp)
+- [Particle System](https://veloren.net/devblog-76#particle-system-by-lobster)
+- [Translation Help](https://veloren.net/devblog-76#we-need-your-help-for-translations-this-is-how-it-s-done-by-xmac94x)
+- [Particle Improvements](https://veloren.net/devblog-77#particle-improvements-by-lobster)
+- [CPU Workloads](https://veloren.net/devblog-77#cpu-workloads-by-angelonfira)
+- [Refactoring WORLD_SIZE](https://veloren.net/devblog-78#refactoring-world-size-by-sharp)
+
+July's full weekly devlogs: "This Week In Veloren...":
+[#75](https://veloren.net/devblog-75),
+[#76](https://veloren.net/devblog-76),
+[#77](https://veloren.net/devblog-77),
+[#78](https://veloren.net/devblog-78).
+
+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.
+
+
+_Quadruped overhaul_
+
+[veloren]: https://veloren.net
+
+## Learning Material Updates
+
+### [Rust on iOS with SDL2][rust-ios-sdl2-post]
+
+[][rust-ios-sdl2-post]
+
+[@aclysma] published a [tutorial][rust-ios-sdl2-post] that describes setting up
+Rust/SDL2 on iOS. The resulting app can run in the simulator as well as on
+physical devices. [SDL2][sdl2-project] is a mature library providing basic rendering,
+audio, and input support. It can also be used to set up an opengl or vulkan
+surface. This demo is using [Rust-SDL2][rust-sdl2] for bindings.
+
+[rust-ios-sdl2-post]: https://blog.aclysma.com/rust-on-ios-with-sdl2/
+[@aclysma]: https://twitter.com/aclysma
+[sdl2-project]: https://www.libsdl.org/download-2.0.php
+[rust-sdl2]: https://crates.io/crates/sdl2
+
+### [Rust Sokoban Tutorial][sokoban_book]
+
+
+
+The Rust Sokoban tutorial is an online book aimed at Rust gamedev beginners
+which walks through making a simple Sokoban game using ggez and ECS (with specs).
+It tries to teach the basics of architecting in ECS and basic Rust concepts
+through a hands-on approach.
+
+This month:
+
+- the book was officially released on July 10th;
+- the project received 3 external contributions;
+- a few text edits were done, including fixing an issue with code
+ snippets not appearing correctly;
+- work on translations has started (🇨🇳 translation coming soon 🤞).
+
+You can follow
+the release discussion [on Twitter][sokoban_release],
+provide feedback [on github][sokoban_github] and
+read the book at [sokoban.iolivia.me][sokoban_book].
+
+[sokoban_release]: https://twitter.com/oliviff/status/1281641563257360384
+[sokoban_book]: https://sokoban.iolivia.me
+[sokoban_github]: https://github.com/iolivia/rust-sokoban
+
+### [Make Pong with Rust][tantan-video]
+
+[][tantan-video]
+_Click to [watch the tutorial][tantan-video]._
+
+[TanTan] released a [video tutorial][tantan-video]
+that guides you through all the step of making a pong game in Rust
+using the GGEZ framework.
+
+The source code [can be found here][tantan-pong-src].
+
+[TanTan]: https://twitter.com/Tantan22430802
+[tantan-video]: https://youtube.com/watch?v=TUE_HSgQiG0
+[tantan-pong-src]: https://github.com/TanTanDev/rusty_pong
+
+### [An Introduction to Data-Oriented Design in Rust][dod]
+
+
+
+Data-Oriented Design is an approach to program optimization focused on
+considering the features and limitations of the target hardware, and
+carefully controlling the memory layout of data to take advantage of
+those.
+
+In [this article][dod], [jamesmcm][jamesmcm] provides benchmarks and
+code for four example scenarios:
+
+- [Array of Structs vs. Struct of Arrays][wikisoa]
+- Branching in a hot loop
+- Iteration in a vector vs. a linked list
+- Monomorphisation vs. [Dynamic Dispatch][traitobj]
+
+The full article is available [here][dod].
+
+[jamesmcm]: https://github.com/jamesmcm
+[wikisoa]: https://en.wikipedia.org/wiki/AoS_and_SoA
+[traitobj]: https://doc.rust-lang.org/book/ch17-02-trait-objects.html#trait-objects-perform-dynamic-dispatch
+[dod]: http://jamesmcm.github.io/blog/2020/07/25/intro-dod/#en
+
+### ["Rust'N'Games" Talk][rust-n-games]
+
+[][rust-n-games]
+_Click to [watch the talk][rust-n-games]._
+
+During the recent ["Rust and Tell"][rust-n-tell] online event
+[Stephan @extrawurst Dilly][@extrawurst] gave a ["Rust'N'Games" talk][rust-n-games]
+about their experience of using Rust in games at [Gameroasters].
+
+[rust-n-games]: https://youtu.be/0Bj-5C2Zfqs?t=1404
+[rust-n-tell]: https://berline.rs/2020/07/28/rust-and-tell.html
+[@extrawurst]: https://twitter.com/extrawurst
+[Gameroasters]: https://www.gameroasters.com/
+
+## Library & Tooling Updates
+
+### [A Servo Browser Plugin for Unity][servo-unity-post]
+
+
+
+[Servo for Unity][servo-unity] is a Unity native plugin and a set
+of Unity C# script components allow third parties to incorporate
+Servo browser windows into Unity scenes.
+
+[A blog post about the project][servo-unity-post] gives a good
+overview of the project goals, capabilities, architecture, challenges,
+and future development plans.
+
+[servo-unity]: https://github.com/MozillaReality/servo-unity
+[servo-unity-post]: https://blog.mozvr.com/a-browser-plugin-for-unity
+
+### [big-brain]
+
+[big-brain] by [Kat Marchán] is a [utility AI] library for games,
+built on the specs ECS.
+
+> It lets you define complex, intricate AI behaviors for your entities
+> based on their perception of the world.
+> Definitions are almost entirely data-driven, using plain .ron files,
+> and you only need to program considerations (entities that look at your game world),
+> and actions (entities that perform actual behaviors upon the world).
+> No other code is needed for actual AI behavior.
+
+[big-brain]: https://github.com/zkat/big-brain
+[Kat Marchán]: https://twitter.com/zkat__
+[utility AI]: https://en.wikipedia.org/wiki/Utility_system
+
+### [weasel] v0.8
+
+[weasel] by [@Trisfald] is a customizable battle system for turn-based games.
+
+This month [v0.8 was released][weasel-v0-8].
+Highlights include:
+
+- New event types
+- Inanimate objects
+- Status effects
+- Many new examples
+
+[weasel]: https://github.com/Trisfald/weasel
+[weasel-v0-8]: https://github.com/Trisfald/weasel/releases/tag/v0.8.0
+[@Trisfald]: https://github.com/Trisfald
+
+### [naia]
+
+[naia] (**n**etworking **a**rchitecture for **i**nteractive **a**pplications)
+is a cross-platform (currently WebAssembly & Linux) networking engine that intends
+to make multiplayer game development in Rust dead simple and lightning fast.
+
+> At the highest level, you register Event and Entity implementations
+> in a module shared by Client & Server.
+> Then, naia will facilitate sending/receiving those Events between Client & Server,
+> and also keep a pool of tracked Entities synced with each Client
+> for whom they are "in-scope".
+> Entities are "scoped" to Clients with whom they share the same Room,
+> as well as being sufficiently customizable to, for example,
+> only keep Entities persisted & synced while within a Client's viewport
+> or according to some other criteria.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/hj2eey/naia)_
+
+[naia]: https://github.com/naia-rs/naia
+
+### [voronator]
+
+
+
+[voronator] by [Felipe Santos] is ...
+a Rust port of the [d3-delaunay] and [delaunator] libraries
+that provide delaunay triangulation and Voronoi diagram generation.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/hjbl0y/introducing_voronator)_
+
+[voronator]: https://github.com/fesoliveira014/voronator-rs
+[Felipe Santos]: https://twitter.com/fesoliveira0
+[d3-delaunay]: https://github.com/d3/d3-delaunay
+[delaunator]: https://github.com/mapbox/delaunator
+
+### [This Month in Mun][mun-july]
+
+[][Mun]
+
+[Mun] is a scripting language for gamedev focused on quick iteration times
+that is written in Rust.
+
+[Rustacean Station][rustacean] released [a podcast about Mun][rustacean-mun]
+in which the Mun Core Team sat down with host Jeremy
+to talk about why they chose Rust to develop Mun. If you are interested in
+having an inside look into Mun's origins and evolution, we recommend you check
+it out - or any of Rustacean Station's other podcasts for that matter!
+
+Their additional [July updates][mun-july] include:
+
+- initial support for the Language Server Protocol;
+- a community entry for the [Make It or Break It content] of Spaceship
+ recreated with Mun & Rust;
+- CLI support for creating Mun projects;
+- performance benchmarks and improvements;
+- bugfixes and improved documentation.
+
+[Mun]: https://mun-lang.org
+[mun-july]: https://mun-lang.org/blog/2020/07/30/this-month-july
+[rustacean]: https://rustacean-station.org
+[rustacean-mun]: https://rustacean-station.org/episode/020-mun
+[Make It or Break It content]: https://github.com/mun-lang/mun/issues/220
+
+### ash(-window)
+
+[`ash-window`], an interoperability library for [`ash`] and [`raw-window-handle`],
+is now part of the `ash` repository and will be updated more closely
+with new `ash` releases.
+
+[`ash-window`]: https://crates.io/crates/ash-window
+[`ash`]: https://crates.io/crates/ash
+[`raw-window-handle`]: https://crates.io/crates/raw-window-handle
+
+### grr 0.8
+
+[`grr`](https://github.com/msiglreith/grr) is a modern OpenGL 4.5+ wrapper.
+It provides a cleaned up API built around Vulkan's naming scheme.
+The latest release further pushes the crate towards
+full compatibility with the core features.
+
+Most notable changes:
+
+- Added support for a bunch of Formats
+- Extended transfer operations (Attachment <-> Host <-> Buffer <-> Image)
+- Raw context access
+- Shader & Pipeline log control
+- Device submission control
+
+Special thanks to [@masonium](https://github.com/masonium)
+for contributing a lot of these features and fixes!
+
+### [miniquad]
+
+
+
+[miniquad] is a safe and cross-platform rendering library
+focused on portability and low-end platforms support.
+
+This month opengl backend of miniquad was successfully ported to iOS.
+With this update [macroquad], [good-web-game] and all the games
+build directly with [miniquad] can be run on IOS, Android, WASM,
+Linux, macOS and Windows!
+
+[miniquad]: https://github.com/not-fl3/miniquad
+[macroquad]: https://github.com/not-fl3/macroquad
+[good-web-game]: https://github.com/not-fl3/good-web-game
+
+### [wgpu][wgpu-site]
+
+
+_[@MacTuitui]'s everyday [nannou] 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
+into errors at `wgpu` level.
+The wgpu devs are also introspecting shader requirements
+and matching them against the pipelines, but this will take more effort
+before it will become universally available.
+
+[@cwfitzgerald] has been busy adding a few handy native-only extensions,
+such as descriptor indexing and push constants.
+They have also converted the project's logging to [tracing](https://crates.io/crates/tracing),
+setting up the infrastructure for CPU profiling.
+
+In the past 2 months, the API for descriptor structures in `wgpu-rs`
+have been undergoing a turbulent period.
+First, non-exhaustive semantics led to introduction of constructors.
+Then, efforts to reduce code duplication inside `wgpu` project has led to the
+[bovine invasion](https://github.com/gfx-rs/wgpu-rs/pull/460) on wgpu-rs API side.
+The devs are figuring out the plan to address that with a builder pattern now,
+which will address both the `Cow`s and non-exhaustives,
+hopefully putting an end to the turbulence.
+
+In the meantime, `wgpu-rs` ecosystem is flourishing with applications and libraries.
+The [showcase gallery](https://wgpu.rs/#showcase) was updated with a few shiny images.
+
+------
+
+Finally, [@kunalmohan] has been busy
+[implementing WebGPU in Servo][webgpu-in-servo], based on `wgpu`.
+Thanks to this work, Servo is currently ahead of Gecko
+in terms of API being up-to-date and covered 🎉.
+It's already capable of rendering most of the examples,
+and the devs are looking forward to the day when the same Rust code
+(rendering with `wgpu-rs`) will be deployable to the Web,
+and viewable from Firefox, Servo, Chrome, and other browsers.
+
+[@GabrielMajeri]: https://github.com/GabrielMajeri
+[@cwfitzgerald]: https://github.com/cwfitzgerald
+[@kunalmohan]: https://github.com/kunalmohan
+[webgpu-in-servo]: https://github.com/servo/servo/projects/24
+[@MacTuitui]: https://twitter.com/MacTuitui
+[nannou]: https://nannou.cc
+[wgpu-site]: https://wgpu.rs
+
+### [luminance v0.40][luminance-v0-40]
+
+
+
+[luminance] by [@phaazon] is a type-safe, type-level and stateless
+graphics framework.
+
+This month [luminance v0.40 got released][luminance-v0-40].
+Some of the highlights:
+
+- The complete backend/architecture redesign.
+- A new platform crate has appeared:
+ [luminance-sdl2], which adds support for the sdl2 crate.
+- [luminance-webgl] and luminance-web-sys, to support the Web!
+- A [luminance-examples-web] crate is available to test with `yarn` easily.
+- [luminance-front], which is a front crate to ease working with luminance types.
+- The type system experience has been greatly improved. Most of the time,
+ you will not have to annotate types anymore — like Program or Tess.
+- About `Tess`, a BIG update has landed, has it’s now heavily typed
+ (vertex type, index type, vertex instance data type, memory interleaving type).
+- More render states features, such as the possibility to enable or disable
+ depth writes, separate RGB/alpha blending, etc. etc.
+- Also, the [luminance book][luminance-book] got updated.
+
+A complete changes list and a migration guide can be found
+[in the CHANGELOG][luminance-v0-40-changelog].
+
+luminance-0.41 got released a few days after to fix some type design problems with
+the gates, and to enhance the error flow in graphics pipelines, revisited to be more
+flexible and seamless.
+
+Also, check out the
+["The compile-time deinterleaving interface"][luminance-typesafe-deinterleaving]
+blog post that delves deep into this new feature.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/hsgfav/the_new_luminance_is_there)_
+
+[@phaazon]: https://twitter.com/phaazon_
+[luminance]: https://github.com/phaazon/luminance-rs
+[luminance-v0-40-changelog]: https://github.com/phaazon/luminance-rs/blob/master/luminance/CHANGELOG.md#040
+[luminance-v0-40]: https://phaazon.net/blog/luminance-0.40
+[luminance-front]: https://crates.io/crates/luminance-front
+[luminance-typesafe-deinterleaving]: https://phaazon.net/blog/typesafe-deinterleaving
+[luminance-webgl]: https://crates.io/crates/luminance-webgl
+[luminance-examples-web]: https://github.com/phaazon/luminance-rs/tree/master/luminance-examples-web
+[luminance-sdl2]: https://crates.io/crates/luminance-sdl2
+[luminance-book]: https://rust-tutorials.github.io/learn-luminance/
+
+### [Graphene][graphene] - Vulkan Render Graph
+
+
+
+[Graphene][graphene] is a Vulkan render graph. Still heavily a work in progress,
+it is built to be a simpler abstraction over Vulkan, with long-term ambitions to
+serve as a graphics test-bench.
+
+Currently, it implements a mesh render pass followed by a chromatic aberration
+post-process in less than [250 lines of Rust code][graphene_example_code].
+Current features include easy Vulkan initialization, automatic swapchain
+resizing, glTF mesh loading, and shader hot-reloading.
+Check out a ["Render graphs" blog post][graphene_blog]
+for a more in-depth introduction to the project.
+
+
+
+You can follow progress on [GitHub][graphene] or on [Twitter][apoorvaj].
+
+[graphene]: https://github.com/ApoorvaJ/graphene
+[graphene_blog]: https://apoorvaj.io/render-graphs-1/
+[graphene_example_code]: https://github.com/ApoorvaJ/graphene/blob/a1ee574d92445f4cff195ca517af2912ebfce697/src/demos/00/main.rs
+[apoorvaj]: https://twitter.com/ApoorvaJ
+
+### Vulkan Renderer (Name TBD)
+
+[][vulkan-renderer-prototype-video]
+_Click to watch [the video demo][vulkan-renderer-prototype-video] running on iOS._
+
+[@aclysma] published a [new vulkan-based renderer][renderer-prototype] that
+uses [atelier-assets] to load 3D scenes exported from blender.
+
+> The objective of this repo is to build a scalable, flexible, data driven
+> renderer. Scalable in the sense of performance as well as suitability for
+> use in large, real-world projects. This means streaming, LODs, visibility
+> systems, and multi-threaded draw call submission need to be possible.
+> Additionally it means thinking through how an asset pipeline would work for
+> a team with dedicated artists and supporting workflow-friendly features
+> like hot reloading assets, possibly on remote devices.
+
+This video demonstrates the renderer running on iOS and receiving asset updates
+via wifi. The scene is "sponza" exported from blender. Vulkan is supported on
+windows and linux natively. Support for macOS and iOS is via the
+well-established [MoltenVK][moltenvk] project.
+
+The demo was ported from PC to iOS over a single weekend and out of
+approximately 300 crate dependencies (including complex, OS-specific ones like
+tokio), all but a few worked out-of-the-box!
+
+[@aclysma]: https://twitter.com/aclysma
+[renderer-prototype]: https://github.com/aclysma/renderer_prototype
+[atelier-assets]: https://github.com/amethyst/atelier-assets
+[vulkan-renderer-prototype-video]: https://www.youtube.com/watch?v=Ks_HQbejHE4
+[moltenvk]: https://github.com/KhronosGroup/MoltenVK
+
+### [Ludusavi]
+
+
+
+[Ludusavi] is a tool written in Rust by [@mtkennerly] for backing up PC game
+save data. It has backup info for more than 7,000 games, is cross-platform for
+Windows, Linux, and Mac, and has a GUI as well as a command line interface.
+The GUI was created using the [Iced] crate.
+
+The [backup info] is sourced from [PCGamingWiki] so that everyone can help to
+expand the data, and it's stored in a documented format so that other backup
+tools can share the same data set. A [plugin] for [Playnite] was also just
+released.
+
+[Ludusavi]: https://github.com/mtkennerly/ludusavi
+[@mtkennerly]: https://twitter.com/mtkennerly
+[Iced]: https://crates.io/crates/iced
+[backup info]: https://github.com/mtkennerly/ludusavi-manifest
+[PCGamingWiki]: https://www.pcgamingwiki.com/wiki/Home
+[plugin]: https://github.com/mtkennerly/ludusavi-playnite
+[Playnite]: https://playnite.link
+
+### [Langcraft]
+
+[Langcraft] is the Minecraft LLVM target you've never wanted.
+
+Langcraft started as a dare to the `#lang-dev` channel of the Rust
+Community Discord to be able to parse Rust code in Minecraft.
+Naturally, it grew into a full code generator that can translate
+most LLVM IR to
+[Minecraft data packs](https://minecraft.gamepedia.com/Data_Pack),
+the game's deliberately-limited in-game scripting language. Langcraft
+is entirely language independent, so any language with an LLVM-based
+compiler can (with the right API bindings) run in Minecraft. Currently,
+bindings to both C and Rust exist. While not as visually impressive as
+a redstone computer, Langcraft does stretch the bounds of the game quite
+a bit, using jukeboxes for memory, armor stands to represent pointers,
+and rearranging compiled code to make it run in the bounds of the data
+packs' fixed instruction limit.
+
+This is all, naturally, entirely useless. The project is also still
+heavily work-in-progress and does not pretend to be stable, but it is
+usable. A handwritten interpreter for a Rust-like language has already
+been demonstrated running, and even more complex projects like [CHIP-8
+emulators](https://github.com/Dhole/chip8-rs.git) function (albeit at
+extremely slow speed).
+
+You can watch a [video of Rust interpreter running Fizzbuzz][langcraft-video]:
+
+[][langcraft-video]
+
+[Langcraft]: https://github.com/SuperTails/langcraft
+[langcraft-video]: https://youtube.com/watch?v=Cx0w5Wn9pPU
+
+
+
+## Meeting Minutes
+
+
+
+[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
+
+## Requests for Contribution
+
+
+
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [winit's "Good first issue" and “help wanted” issues][winit-issues].
+- [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].
+
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[winit-issues]: https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22status%3A+help+wanted%22+label%3A%22Good+first+issue%22
+[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/dabreegster/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
+
+## Jobs
+
+
+
+- [Embark] is looking to hire Open Source Engineer
+ specifically to work on Rust projects (Remote or Stockholm, Sweden):
+
+ > At Embark, we love the openness and collaborative nature
+ > of the quickly growing ecosystem and community around Rust,
+ > including its tens of thousands of open source crates.
+ > We're committed to supporting a thriving open source ecosystem
+ > for game development in Rust.
+ >
+ > As an Open Source Engineer at Embark, you will work with our community
+ > and engineering teams on open source.
+ > You'll help maintain and develop our open source presence,
+ > and be a key link between Embark and the greater software ecosystem.
+
+ You can find all of the details on their [job offer page][embark-job].
+
+ ------
+
+ Btw, Embark are also [looking for Software Engineer interns][embark-job-intern].
+
+ 
+
+[Embark]: https://www.embark-studios.com
+[embark-job]: https://www.embark-studios.com/jobs/910166-open-source-engineer
+[embark-job-intern]: https://www.embark-studios.com/jobs/915561-internship-software-engineer-rust
+
+## Bonus
+
+
+
+Just an interesting Rust gamedev link from the past. :)
+
+[][shar-trailer]
+_Click to watch [SHAR's Greenlight trailer][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
+combining destructible world and team-based ball game.
+
+> SHAR is an action combination of tactical and sports game in the destructible world.
+> The rules are extremely simple: two teams, one ball.
+> The team that carries the ball into the opponent's gates gets a score,
+> the team with the most score at the end of the game is the winner.
+> However, this is where things get interesting!
+> Players have the variety of skills and tricks and destructible environment
+> to fiddle around to slam the opponent and win the game.
+
+Some of the game's features:
+
+- A network-synchronized physics engine powered by bullet-rs;
+- A bunch of physics-based player skills;
+- Extensive build-in editors for game maps, skeletal animation,
+ effects & particle systems;
+- Modding support.
+
+The game was built on top of a homegrown game engine using:
+winit, glium, imgui-rs, [tinyecs], [awesomium-rs], [ears].
+
+[][shar-talk]
+
+During RustFest Zurich 2017, Fedor gave a self-descriptive talk
+"SHAR: Rust's gamedev experience".
+You can [watch the recording here][shar-talk].
+
+The game was in active development around 2016-2017.
+In 2017 the game [passed Steam Greenlight][shar-greenlight].
+During 2018 [the project was suspended][shar-death].
+
+[shar-itch]: https://fedorgames.itch.io/shar
+[@fedor_games]: https://twitter.com/fedor_games
+[shar-trailer]: https://youtube.com/watch?v=OVYQs3KY2EE
+[shar-death]: https://fedorgames.itch.io/shar/devlog/52720/time-to-move-on
+[shar-greenlight]: https://steamcommunity.com/sharedfiles/filedetails/?id=868228143
+[shar-talk]: https://youtube.com/watch?v=nXR8f4r6ggM
+[macroquad]: https://github.com/not-fl3/macroquad
+[tinyecs]: https://github.com/not-fl3/tinyecs
+[awesomium-rs]: https://github.com/not-fl3/awesomium-rs
+[ears]: https://github.com/nickbrowne/ears
+
+------
+
+That's all news for today, thanks for reading!
+
+Subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discussions of this post**:
+[/r/rust](https://reddit.com/r/rust/comments/i4uhta/this_month_in_rust_gamedev_12_july_2020),
+[twitter](https://twitter.com/rust_gamedev/status/1291405227191611392).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/posts/newsletter-012/longcraft-video.jpeg b/content/posts/newsletter-012/longcraft-video.jpeg
new file mode 100644
index 000000000..8d74fc603
Binary files /dev/null and b/content/posts/newsletter-012/longcraft-video.jpeg differ
diff --git a/content/posts/newsletter-012/ludusavi.gif b/content/posts/newsletter-012/ludusavi.gif
new file mode 100644
index 000000000..85a64d3d7
Binary files /dev/null and b/content/posts/newsletter-012/ludusavi.gif differ
diff --git a/content/posts/newsletter-012/luminance-logo.svg b/content/posts/newsletter-012/luminance-logo.svg
new file mode 100644
index 000000000..1afc77d3e
--- /dev/null
+++ b/content/posts/newsletter-012/luminance-logo.svg
@@ -0,0 +1,72 @@
+
+
\ No newline at end of file
diff --git a/content/posts/newsletter-012/miniquad_ios.jpg b/content/posts/newsletter-012/miniquad_ios.jpg
new file mode 100644
index 000000000..ad9531586
Binary files /dev/null and b/content/posts/newsletter-012/miniquad_ios.jpg differ
diff --git a/content/posts/newsletter-012/mun-logo.png b/content/posts/newsletter-012/mun-logo.png
new file mode 100644
index 000000000..02295dc77
Binary files /dev/null and b/content/posts/newsletter-012/mun-logo.png differ
diff --git a/content/posts/newsletter-012/nox-futura.jpeg b/content/posts/newsletter-012/nox-futura.jpeg
new file mode 100644
index 000000000..fa898a2f6
Binary files /dev/null and b/content/posts/newsletter-012/nox-futura.jpeg differ
diff --git a/content/posts/newsletter-012/pglowrpg_12.gif b/content/posts/newsletter-012/pglowrpg_12.gif
new file mode 100644
index 000000000..d9b404de6
Binary files /dev/null and b/content/posts/newsletter-012/pglowrpg_12.gif differ
diff --git a/content/posts/newsletter-012/protochess.gif b/content/posts/newsletter-012/protochess.gif
new file mode 100644
index 000000000..77e716a90
Binary files /dev/null and b/content/posts/newsletter-012/protochess.gif differ
diff --git a/content/posts/newsletter-012/pushin_boxes_gameplay.gif b/content/posts/newsletter-012/pushin_boxes_gameplay.gif
new file mode 100644
index 000000000..bca6b6c73
Binary files /dev/null and b/content/posts/newsletter-012/pushin_boxes_gameplay.gif differ
diff --git a/content/posts/newsletter-012/robo-os.jpg b/content/posts/newsletter-012/robo-os.jpg
new file mode 100644
index 000000000..bd760bafc
Binary files /dev/null and b/content/posts/newsletter-012/robo-os.jpg differ
diff --git a/content/posts/newsletter-012/rust-ios-sdl2-screenshot.png b/content/posts/newsletter-012/rust-ios-sdl2-screenshot.png
new file mode 100644
index 000000000..d0aaedc1f
Binary files /dev/null and b/content/posts/newsletter-012/rust-ios-sdl2-screenshot.png differ
diff --git a/content/posts/newsletter-012/rust-n-games-youtube.jpeg b/content/posts/newsletter-012/rust-n-games-youtube.jpeg
new file mode 100644
index 000000000..f6c7f9bbe
Binary files /dev/null and b/content/posts/newsletter-012/rust-n-games-youtube.jpeg differ
diff --git a/content/posts/newsletter-012/rust_sokoban.png b/content/posts/newsletter-012/rust_sokoban.png
new file mode 100644
index 000000000..f10a719e1
Binary files /dev/null and b/content/posts/newsletter-012/rust_sokoban.png differ
diff --git a/content/posts/newsletter-012/sandbox_icon.svg b/content/posts/newsletter-012/sandbox_icon.svg
new file mode 100644
index 000000000..385d743d7
--- /dev/null
+++ b/content/posts/newsletter-012/sandbox_icon.svg
@@ -0,0 +1,137 @@
+
+
diff --git a/content/posts/newsletter-012/sandbox_screenshot.png b/content/posts/newsletter-012/sandbox_screenshot.png
new file mode 100644
index 000000000..dea1d0d87
Binary files /dev/null and b/content/posts/newsletter-012/sandbox_screenshot.png differ
diff --git a/content/posts/newsletter-012/servo-unity.png b/content/posts/newsletter-012/servo-unity.png
new file mode 100644
index 000000000..a92db5c43
Binary files /dev/null and b/content/posts/newsletter-012/servo-unity.png differ
diff --git a/content/posts/newsletter-012/shar-talk.jpeg b/content/posts/newsletter-012/shar-talk.jpeg
new file mode 100644
index 000000000..cf6c3dda4
Binary files /dev/null and b/content/posts/newsletter-012/shar-talk.jpeg differ
diff --git a/content/posts/newsletter-012/shar-youtube.jpeg b/content/posts/newsletter-012/shar-youtube.jpeg
new file mode 100644
index 000000000..02203a491
Binary files /dev/null and b/content/posts/newsletter-012/shar-youtube.jpeg differ
diff --git a/content/posts/newsletter-012/tennis_academy.gif b/content/posts/newsletter-012/tennis_academy.gif
new file mode 100644
index 000000000..68fdb4cca
Binary files /dev/null and b/content/posts/newsletter-012/tennis_academy.gif differ
diff --git a/content/posts/newsletter-012/textcamp.png b/content/posts/newsletter-012/textcamp.png
new file mode 100644
index 000000000..d62ab18c3
Binary files /dev/null and b/content/posts/newsletter-012/textcamp.png differ
diff --git a/content/posts/newsletter-012/tuitui-grass-field.jpeg b/content/posts/newsletter-012/tuitui-grass-field.jpeg
new file mode 100644
index 000000000..a5c08a69b
Binary files /dev/null and b/content/posts/newsletter-012/tuitui-grass-field.jpeg differ
diff --git a/content/posts/newsletter-012/veloren-fire.gif b/content/posts/newsletter-012/veloren-fire.gif
new file mode 100644
index 000000000..a06dcf764
Binary files /dev/null and b/content/posts/newsletter-012/veloren-fire.gif differ
diff --git a/content/posts/newsletter-012/veloren-quadrupeds.png b/content/posts/newsletter-012/veloren-quadrupeds.png
new file mode 100644
index 000000000..b20e17da3
Binary files /dev/null and b/content/posts/newsletter-012/veloren-quadrupeds.png differ
diff --git a/content/posts/newsletter-012/veloren-sunrise.gif b/content/posts/newsletter-012/veloren-sunrise.gif
new file mode 100644
index 000000000..675d9b116
Binary files /dev/null and b/content/posts/newsletter-012/veloren-sunrise.gif differ
diff --git a/content/posts/newsletter-012/video-pong-tutorial.jpeg b/content/posts/newsletter-012/video-pong-tutorial.jpeg
new file mode 100644
index 000000000..1d04801a3
Binary files /dev/null and b/content/posts/newsletter-012/video-pong-tutorial.jpeg differ
diff --git a/content/posts/newsletter-012/voronator.png b/content/posts/newsletter-012/voronator.png
new file mode 100644
index 000000000..3ae0aa962
Binary files /dev/null and b/content/posts/newsletter-012/voronator.png differ
diff --git a/content/posts/newsletter-012/vulkan-renderer-prototype.jpeg b/content/posts/newsletter-012/vulkan-renderer-prototype.jpeg
new file mode 100644
index 000000000..c45795444
Binary files /dev/null and b/content/posts/newsletter-012/vulkan-renderer-prototype.jpeg differ
diff --git a/content/posts/newsletter-012/wonder-screenshot.png b/content/posts/newsletter-012/wonder-screenshot.png
new file mode 100644
index 000000000..9317b7ffc
Binary files /dev/null and b/content/posts/newsletter-012/wonder-screenshot.png differ
diff --git a/content/posts/newsletter-012/zemeroth.jpeg b/content/posts/newsletter-012/zemeroth.jpeg
new file mode 100644
index 000000000..60c5daa43
Binary files /dev/null and b/content/posts/newsletter-012/zemeroth.jpeg differ
diff --git a/content/posts/newsletter-013/abstreet.png b/content/posts/newsletter-013/abstreet.png
new file mode 100644
index 000000000..7488fd75c
Binary files /dev/null and b/content/posts/newsletter-013/abstreet.png differ
diff --git a/content/posts/newsletter-013/amethyst-logo.png b/content/posts/newsletter-013/amethyst-logo.png
new file mode 100644
index 000000000..6d7116659
Binary files /dev/null and b/content/posts/newsletter-013/amethyst-logo.png differ
diff --git a/content/posts/newsletter-013/bevy_logo.png b/content/posts/newsletter-013/bevy_logo.png
new file mode 100644
index 000000000..22508c73c
Binary files /dev/null and b/content/posts/newsletter-013/bevy_logo.png differ
diff --git a/content/posts/newsletter-013/bevy_showcase.png b/content/posts/newsletter-013/bevy_showcase.png
new file mode 100644
index 000000000..e93eed7a7
Binary files /dev/null and b/content/posts/newsletter-013/bevy_showcase.png differ
diff --git a/content/posts/newsletter-013/cary_screenshot.png b/content/posts/newsletter-013/cary_screenshot.png
new file mode 100644
index 000000000..eea6fc284
Binary files /dev/null and b/content/posts/newsletter-013/cary_screenshot.png differ
diff --git a/content/posts/newsletter-013/chargrid-roguelike-tutorial-2020.png b/content/posts/newsletter-013/chargrid-roguelike-tutorial-2020.png
new file mode 100644
index 000000000..2f707e4da
Binary files /dev/null and b/content/posts/newsletter-013/chargrid-roguelike-tutorial-2020.png differ
diff --git a/content/posts/newsletter-013/chillscapes_main_menu.png b/content/posts/newsletter-013/chillscapes_main_menu.png
new file mode 100644
index 000000000..b0a71f7c0
Binary files /dev/null and b/content/posts/newsletter-013/chillscapes_main_menu.png differ
diff --git a/content/posts/newsletter-013/crate-before-attack.jpeg b/content/posts/newsletter-013/crate-before-attack.jpeg
new file mode 100644
index 000000000..dac7d9109
Binary files /dev/null and b/content/posts/newsletter-013/crate-before-attack.jpeg differ
diff --git a/content/posts/newsletter-013/cute-c2-collision.gif b/content/posts/newsletter-013/cute-c2-collision.gif
new file mode 100644
index 000000000..d1df8a9f6
Binary files /dev/null and b/content/posts/newsletter-013/cute-c2-collision.gif differ
diff --git a/content/posts/newsletter-013/dwarf_seeks_fortune.png b/content/posts/newsletter-013/dwarf_seeks_fortune.png
new file mode 100644
index 000000000..d8221d772
Binary files /dev/null and b/content/posts/newsletter-013/dwarf_seeks_fortune.png differ
diff --git a/content/posts/newsletter-013/ecs-bench.png b/content/posts/newsletter-013/ecs-bench.png
new file mode 100644
index 000000000..597b50ba6
Binary files /dev/null and b/content/posts/newsletter-013/ecs-bench.png differ
diff --git a/content/posts/newsletter-013/egregoria.png b/content/posts/newsletter-013/egregoria.png
new file mode 100644
index 000000000..ff52667b4
Binary files /dev/null and b/content/posts/newsletter-013/egregoria.png differ
diff --git a/content/posts/newsletter-013/egui.png b/content/posts/newsletter-013/egui.png
new file mode 100644
index 000000000..00101a6d5
Binary files /dev/null and b/content/posts/newsletter-013/egui.png differ
diff --git a/content/posts/newsletter-013/event-chain-assets-graph.png b/content/posts/newsletter-013/event-chain-assets-graph.png
new file mode 100644
index 000000000..4e8803ef0
Binary files /dev/null and b/content/posts/newsletter-013/event-chain-assets-graph.png differ
diff --git a/content/posts/newsletter-013/football-manager.jpeg b/content/posts/newsletter-013/football-manager.jpeg
new file mode 100644
index 000000000..c35c399d6
Binary files /dev/null and b/content/posts/newsletter-013/football-manager.jpeg differ
diff --git a/content/posts/newsletter-013/garden.jpeg b/content/posts/newsletter-013/garden.jpeg
new file mode 100644
index 000000000..cb6c473a2
Binary files /dev/null and b/content/posts/newsletter-013/garden.jpeg differ
diff --git a/content/posts/newsletter-013/hexasphere.gif b/content/posts/newsletter-013/hexasphere.gif
new file mode 100644
index 000000000..8795c345d
Binary files /dev/null and b/content/posts/newsletter-013/hexasphere.gif differ
diff --git a/content/posts/newsletter-013/index.md b/content/posts/newsletter-013/index.md
new file mode 100644
index 000000000..d135156ec
--- /dev/null
+++ b/content/posts/newsletter-013/index.md
@@ -0,0 +1,1318 @@
++++
+title = "This Month in Rust GameDev #13 - August 2020"
+date = 2020-09-07
+transparent = true
++++
+
+Welcome to the 13th 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
+
+Table of contents:
+
+- [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)
+- [Meeting Minutes](#meeting-minutes)
+- [Requests for Contribution](#requests-for-contribution)
+
+
+
+## [Rust GameDev Podcast][podcast]
+
+
+
+This month [Richard @patchfx Patching][richardpatching] started
+[Rust GameDev Podcast][podcast]!
+
+> Over the lockdown period I have been working on a new podcast
+> for Rust game developers. I have been interviewing indie teams
+> and library creators, discussing custom engines, procedural generation,
+> open source and the business of games development.
+
+- [The first episode][podcast-1] is an interview
+ with the team behind Veloren, an open-source multiplayer
+ voxel RPG written in Rust.
+
+ Find out about the game's origin, its engine development,
+ pros and cons of a big open-source project, CI and build pipeline,
+ importance of artists, procedural generation,
+ community building, managing players' expectations,
+ and upcoming developments.
+
+- [The second episode][podcast-2] is an interview with Herbert Wolverson,
+ creator of [bracket-lib] (pka RLTK), [Rust Roguelike Tutorial][rltut],
+ and [Nox Futura][noxf].
+
+ A very wide-ranging interview covering many interesting topics:
+ where the bracket-lib came from and what the creator is doing now,
+ as well as practical questions and issues discovered
+ in the course of creating their game, [Nox Futura].
+ Lots of interesting talk about a new Rust games development book
+ Herbert is writing, C++ vs Rust, learning Rust, code architecture and
+ ECS's in roguelikes, emergent behavior, and hilarious bugs in Dwarf Fortress.
+
+The show has been distributed on most major platforms
+for you to listen and subscribe:
+[Rust Game Dev Podcast (simplecast)](https://rustgamedev.com/),
+[Apple Podcasts](https://podcasts.apple.com/gb/podcast/rust-game-dev/id1526304768),
+[Spotify](https://open.spotify.com/show/7HRfGnTcXkLkQd9fxJbDGj),
+[RSS Feed](https://feeds.simplecast.com/C6NQglnL),
+[Google Podcasts](https://podcasts.google.com/feed/aHR0cHM6Ly9mZWVkcy5zaW1wbGVjYXN0LmNvbS9DNk5RZ2xuTA).
+
+[podcast]: https://rustgamedev.com
+[richardpatching]: https://richardpatching.com
+[podcast-1]: https://rustgamedev.com/episodes/interview-with-team-veloren
+[bracket-lib]: https://crates.io/crates/bracket-lib
+[noxf]: https://thebracket.itch.io/nox-futura
+[rltut]: http://bfnightly.bracketproductions.com
+[podcast-2]: https://rustgamedev.com/episodes/interview-with-herbert-wolverson-bracket-lib
+
+## Game Updates
+
+### [Crate Before Attack][cba-site]
+
+[][cba-site]
+_Debugging camera motion: highlighted areas are points of interest_
+
+[Crate Before Attack][cba-site] by [koalefant (@CrateAttack)][@CrateAttack]
+is a skill-based multiplayer game where frogs combat their friends
+while navigating the landscape with their sticky tongues.
+
+A [playable browser build][cba-play] can be tried online.
+
+Recent changes are:
+
+- Training mode improvements, including a new map [Dungeon][cba-youtube-dungeon]
+ by [Kesha Astafyev][cba-spoon-tar].
+- [Better camera motion][cba-youtube-camera-motion]:
+ multiple points of interest are tracked dynamically.
+- Improved GPU performance by merging multiple render passes into one.
+- Added control hints.
+- Numerous bugfixes and tweaks.
+
+More details are in [August DevLog-entry][cba-august-update].
+
+[cba-site]: https://cratebeforeattack.com
+[cba-youtube-dungeon]: https://youtu.be/cukyVXQ0n0c
+[cba-youtube-camera-motion]: https://youtu.be/3y7Hfa-v3e8
+[cba-august-update]: https://cratebeforeattack.com/posts/20200831-august-update/
+[cba-play]: https://cratebeforeattack.com/play
+[cba-spoon-tar]: https://www.behance.net/spoon_tar
+[@CrateAttack]: https://twitter.com/CrateAttack
+
+### [Veloren][veloren]
+
+
+_Landscape with new LoD and lighting_
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In August, Veloren 0.7 was released! Airshipper, Veloren's launcher, also got
+updated to 0.4.0. Veloren was featured in the inaugural episode of the [Rust
+Game Dev Podcast][veloren-interview]. Although the 0.7 release party saw the
+largest number of concurrent players at 57, it ran into some significant issues
+which you can read about below.
+
+The largest merge in Veloren so far also happened in August. It included
+monumental changes to lighting and added level of detail functionality to see
+far-off mountains. Lots of work has been done on the animation, combat, SFX, and
+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 with the new particle system_
+
+You can read more about some specific topics from August:
+
+- [Airshipper 0.4.0 Progress](https://veloren.net/devblog-79#airshipper-0-4-progress-by-songtronix)
+- [Animation and Movement Updates](https://veloren.net/devblog-79#animation-and-movement-updates-by-slipped)
+- [Particle Timing](https://veloren.net/devblog-80#particle-timing-by-lobster)
+- 0.7 Release: [Party Statistics](https://veloren.net/devblog-81#0-7-release-party-statistics)
+ and [Kick Disaster](https://veloren.net/devblog-81#0-7-release-party-kick-disaster-by-xmac94x)
+- [Lighting and World Changes](https://veloren.net/devblog-81#sharp-s-lighting-and-world-changes-branch)
+- [0.8 Intro Meeting](https://veloren.net/devblog-82#0-8-intro-meeting)
+- [Audio SFX](https://veloren.net/devblog-82#audio-with-ellinia)
+- [Photo Gallery](https://veloren.net/devblog-83#photo-gallery)
+
+August's full weekly devlogs: "This Week In Veloren...":
+[#79](https://veloren.net/devblog-79),
+[#80](https://veloren.net/devblog-80),
+[#81](https://veloren.net/devblog-81),
+[#82](https://veloren.net/devblog-82),
+[#83](https://veloren.net/devblog-83).
+
+In September, work on 0.8 will continue. Some large systems being worked on
+include networking, improved persistence stability, and player experience. Game
+design is working on improving the connection between the experience a new
+player has, and the current game design. The in-progress 0.8 version will likely
+be completed more quickly than 0.7, as to not include too many changes.
+
+[veloren]: https://veloren.net
+[veloren-interview]: https://rustgamedev.com/episodes/interview-with-team-veloren
+
+### [A/B Street][abstreet]
+
+
+
+[A/B Street][abstreet] is a traffic simulation game exploring how small changes
+to roads affect cyclists, transit users, pedestrians, and drivers. Any city
+with OpenStreetMap coverage can be used!
+
+Some of this month's updates:
+
+- Multiple traffic signals can be edited together.
+- An [API][abstreet-api] and tools were added, to control maps and simulation
+ from any language.
+- [Michael Kirk][mkirk], a new team member, fixed HiDPI scaling issues in a
+ consistent way.
+- Many new cities imported, with better support for countries that drive on the
+ left and support for using alternate languages from OpenStreetMap for roads
+ and buildings.
+- Backwards compatibility for a player's edits to the map.
+- Two-way cycletracks and roads with multiple direction changes.
+
+[abstreet]: https://abstreet.org
+[abstreet-api]: https://dabreegster.github.io/abstreet/dev/api.html
+[mkirk]: https://github.com/michaelkirk
+
+### [Egregoria]
+
+
+
+[Egregoria]'s objective is to become a granular society simulation,
+filled with fully autonomous agents interacting with their world in real time.
+Egregoria was previously known as Scale,
+but was renamed to fit the theme better.
+
+The [5th devlog][egregoria-blog-post] was published, talking about
+the renaming, project management, buildings and scripting.
+
+A [Discord][egregoria-discord] server was launched to discuss the project.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/igzbl9/egregoria_devblog_5)_
+
+[Egregoria]: https://github.com/Uriopass/Egregoria
+[egregoria-blog-post]: http://douady.paris/blog/egregoria_5.html
+[egregoria-discord]: https://discord.gg/CAaZhUJ
+
+### [Cary]
+
+[][Cary]
+
+In [Cary] the player has to bring the titular character to the exit by carrying
+them or otherwise making sure they don't – nor the player themselves –
+touch any of the traps.
+Easier said than done when you have limited stamina and Cary keeps running
+into spikes.
+
+Made with hecs and wgpu (no framework), but uses WebGL on the web
+because of the current implementation status of WebGPU.
+
+Made during the [Extra Credits game jam][extra-credits-jam],
+it's a rather small game.
+It can be played in the browser or downloaded at [itch.io][Cary].
+
+[Cary]: https://specificprotagonist.itch.io/cary
+[extra-credits-jam]: https://itch.io/jam/extra-credits-game-jam-6
+
+### [Way of Rhea]
+
+[][Way of Rhea]
+_Anthropic's virtual booth at [Play NYC]_
+
+[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.
+
+Way of Rhea has a [free Steam demo][Way of Rhea] temporarily available as part of
+[Play NYC]!
+The new demo includes a level that wasn't part of the Steam Game Festival,
+showing off how circuit puzzles will work in the game. Since Play NYC
+couldn't be in person this year, the devs temporarily themed this level to look
+like last year's Play NYC venue, included placing virtual booths for other games
+throughout the level.
+
+Follow [@AnthropicSt] or [@masonremaley] on Twitter or
+[sign up for the mailing list][anthropic-newsletter] for updates.
+
+[Way of Rhea]: https://store.steampowered.com/app/1110620/Way_of_Rhea/
+[Play NYC]: https://www.play-nyc.com/
+[@AnthropicSt]: https://twitter.com/anthropicst
+[@masonremaley]: https://twitter.com/masonremaley
+[anthropic-newsletter]: https://www.anthropicstudios.com/newsletter/signup/tech
+
+### [vange-rs]
+
+
+
+[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 vange-rs got real-time shadows!
+See [video on /r/rust_gamedev][vangers-shadow-video] and technical description
+on the [Hybrid Shadows][vangers-shadow-blog] post of the blog.
+
+Another exciting development - the new bruteforce rendering technique allowing
+to shift the camera behind the mechos as in 3rd person view.
+See [video on /r/rust_gamedev][vangers-bars-video] and technical description on
+the [Bar Painting][vangers-bars-blog] post of the blog.
+
+[Vangers]: https://en.wikipedia.org/wiki/Vangers
+[vange-rs]: https://github.com/kvark/vange-rs
+[vangers-shadow-video]: https://reddit.com/r/rust_gamedev/comments/i32p6r/realtime_hybrid_shadows_in_vangers
+[vangers-shadow-blog]: https://kvark.github.io/vange-rs/2020/08/04/shadows.html
+[vangers-bars-video]: https://reddit.com/r/rust_gamedev/comments/igejxy/vangers_3rd_person_camera
+[vangers-bars-blog]: https://kvark.github.io/vange-rs/2020/08/29/bar-painting.html
+
+### [Garden][garden]
+
+
+
+[Garden][garden] is an upcoming game centered around growing realistic plants.
+Some of the updates from [the July & August devlog][garden-devlog]:
+
+- A new player inventory system;
+- Better collision detection and camera movement;
+- Minimalist, scrollable text-based GUI for choosing which species to plant
+ or the type of material to build with (or destroy) something;
+- Plant growth now depends directly on the amount of light
+ every individual leaf receives, calculated on the GPU;
+- Variable leaf alignment and ease of creating variety;
+- Better bark, detailed trunks, and new species;
+- Completely new lighting using GI.
+
+[garden]: https://epcc.itch.io/garden
+[garden-devlog]: https://cyberplant.xyz/posts/july-august/
+
+### [Chillscapes][chillscapes-itch]
+
+
+
+[Chillscapes][chillscapes-github] is a lo-fi
+rhythm experience created for the [NEOC#03 Rhythm Game Jam][neoc]. Using
+layerable lo-fi music tracks, the game has you tap with the rhythm of the loops
+being added, before changing the music up by adding another loop into the mix.
+Last week, [a retrospective update was published][chillscapes-retrospective]
+reflecting on what the developer's takeaways were from the experience.
+
+Chillscapes is written using an early-in-development 2d engine,
+[Kludgine][kludgine]. For audio playback, rodio was utilized. The source code is
+[available on GitHub][chillscapes-github].
+
+[chillscapes-itch]: https://khonsulabs.itch.io/chillscapes
+[chillscapes-github]: https://github.com/khonsulabs/chillscapes
+[chillscapes-retrospective]: https://community.khonsulabs.com/t/chillscapes-retrospective-and-kludgine-update/28
+[neoc]: https://itch.io/jam/neoc03-rhythm-jam
+[kludgine]: https://github.com/khonsulabs/kludgine
+
+### [Dwarf Seeks Fortune][dsf-github]
+
+[][dsf-github]
+_Collect all keys to unlock the door to the next level_
+
+[Dwarf Seeks Fortune][dsf-github] is a puzzle-platformer made with the Amethyst game
+engine. Its developer, Jazarro, has partnered with the Amethyst organization
+to make it an official Amethyst showcase game. It aims to be a learning
+resource for anyone looking to get started with Amethyst.
+
+The game currently sports a growing feature set, two playable levels and an
+early version of an integrated level editor. It is ready for your
+contributions, so if you're interested, check out the
+[contributor's guide][dsf-contributing] or the [good first issues][dsf-good-first-issues].
+If you have any questions, open an issue on GitHub or approach
+Jazarro on [the Amethyst discord][amethyst-discord].
+
+[dsf-github]: https://github.com/amethyst/dwarf_seeks_fortune
+[dsf-contributing]: https://github.com/amethyst/dwarf_seeks_fortune/blob/master/CONTRIBUTING.md
+[dsf-good-first-issues]: https://github.com/amethyst/dwarf_seeks_fortune/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
+[kv-ii]: https://en.wikipedia.org/wiki/King%27s_Valley_II
+[amethyst-discord]: https://discord.com/invite/amethyst
+
+### [Akigi][akigi]
+
+[Akigi][akigi] is a WIP online multiplayer game.
+
+This month was mostly dedicated to the custom engine's scenery placement tool
+([video demo](https://devjournal.akigi.com/august-2020/082-2020-08-30.html)).
+Some of the updates:
+
+- [Terrain code refactoring and other required groundwork](https://devjournal.akigi.com/august-2020/080-2020-08-16.html).
+- [Mouse-terrain intersection](https://devjournal.akigi.com/august-2020/082-2020-08-30.html#mouse-terrain-intersection).
+- [Switching between Play and Place modes](https://devjournal.akigi.com/august-2020/082-2020-08-30.html#play-mode-place-mode).
+- [Custom UI system](https://devjournal.akigi.com/august-2020/082-2020-08-30.html#user-interfaces).
+
+Full devlogs:
+[#078](https://devjournal.akigi.com/august-2020/078-2020-08-02.html),
+[#079](https://devjournal.akigi.com/august-2020/079-2020-08-09.html),
+[#080](https://devjournal.akigi.com/august-2020/080-2020-08-16.html),
+[#081](https://devjournal.akigi.com/august-2020/081-2020-08-23.html),
+[#082](https://devjournal.akigi.com/august-2020/082-2020-08-30.html).
+
+[akigi]: https://akigi.com
+
+### [SIMple Physics][simple-physics-site]
+
+[][simple-physics-gifs]
+_One of SIMple Mechanic's Lua presets, a colorful wave of bouncing circles_
+
+[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
+or in person classes. Each simulator uses serializable graphs, object inspection,
+Lua scripting, and a few other features to help students learn. Currently, there
+is a simulator for mechanics/projectile motion and one for universal gravitation,
+but the goal is to include one for electronics/magnetism and one for waves/optics.
+
+Written in Rust using `ggez`, `specs`, `imgui-rs`, and `nphysics`,
+this project's goals include:
+performance, accessibility/portability, ease of use, and extensibility.
+
+To find out more about the project, visit the site [here][simple-physics-site],
+watch some cool gifs [here][simple-physics-gifs], or read the GitHub page
+[here][simple-physics-github].
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ibk2rf/announcing_simple_physics)_
+
+[simple-physics-site]: https://mkhan45.github.io/SIMple-Physics/
+[simple-physics-gifs]: https://mkhan45.github.io/SIMple-Physics/posts/Gifs/
+[simple-physics-github]: https://mkhan45.github.io/SIMple-Physics/posts/Gifs/
+[@mkhan45]: https://github.com/mkhan45
+
+## Learning Material Updates
+
+### [Writing NES Emulator in Rust][rust_nes_tutorial]
+
+
+
+"Writing NES Emulator in Rust" is a tutorial by [@bugzmanov] on creating a fully
+capable NES/Famicom emulator from scratch in the online book format. It walks
+through major steps of emulating NES platform components to run
+all-time classics, like Pacman, Donkey Kong, and Super Mario Bros.
+
+It's a fun way of getting into hardware internals and fundamentals of
+computer systems. The tutorial also covers game-dev basics and how to
+work with graphics in Rust using [SDL2][sdl2] library.
+
+[rust_nes_tutorial]: https://bugzmanov.github.io/nes_ebook/index.html
+[@bugzmanov]: https://twitter.com/bugzmanov
+[sdl2]:https://www.libsdl.org/
+
+### [Beginning Game Development with Amethyst][rustconf-talk-video]
+
+[][rustconf-talk-video]
+_Click to [watch the talk][rustconf-talk-video]_
+
+Getting started with Rust + gamedev can be intimidating. At
+[RustConf 2020][rust-conf-2020], [Micah Tigley] gave a talk about their experience
+beginning game development using the [Amethyst][amethyst-link] game engine and
+learning about ECS by implementing examples that aim to be accessible for
+beginners.
+
+Supporting blog posts for the talk:
+
+- ["Creating a Simple Spritesheet Animation with Amethyst"][micah-blog-part1]
+- ["Running Animation"][micah-blog-part2]
+- ["Camera Follow System"][micah-blog-part3]
+
+The source code for the [demo can be found here][micah-demo-src].
+
+[Micah Tigley]: https://twitter.com/micah_tigley
+[rustconf-talk-video]: https://www.youtube.com/watch?v=GFi_EdS_s_c
+[micah-blog-part1]: https://mtigley.dev/posts/sprite-animations-with-amethyst
+[micah-blog-part2]: https://mtigley.dev/posts/running-animation
+[micah-blog-part3]: https://mtigley.dev/posts/camera-follow-system
+[micah-demo-src]: https://github.com/tigleym/sprite_animations_demo
+[amethyst-link]: https://amethyst.rs/
+[rust-conf-2020]: https://rustconf.com
+
+### [Chargrid Roguelike Tutorial 2020][chargrid-roguelike-tutorial-2020]
+
+
+
+[Chargrid][chargrid] by [@stevebob] is a collection of crates for building
+applications with text UIs that run in terminals, graphical windows, and web
+pages. It was made specifically with roguelike development in mind, though is
+general-purpose enough to be used for other applications.
+
+[Chargrid Roguelike Tutorial 2020][chargrid-roguelike-tutorial-2020]
+is a tutorial series about making a traditional roguelike from scratch
+using chargrid for rendering and input handling. Reference code is available in
+[this git repo][chargrid-roguelike-tutorial-2020-reference-code]
+organized with one branch for each subsection.
+
+[chargrid-roguelike-tutorial-2020]: https://gridbugs.org/roguelike-tutorial-2020/
+[chargrid-roguelike-tutorial-2020-reference-code]: https://github.com/stevebob/chargrid-roguelike-tutorial-2020
+[chargrid]: https://github.com/stevebob/chargrid/
+[@stevebob]: https://github.com/stevebob
+
+### [Event Chaining as a Decoupling Method in ECS][event-chaining]
+
+
+
+[@jojolepro] released a [blog post][event-chaining] that provides
+an in-depth look at how using events in entity-component-system architectures
+can improve system reusability dramatically.
+
+Using events in this way also allows for:
+
+- easier testing,
+- additional configurability,
+- possible performance improvements,
+- higher reusability - especially if using generics.
+
+The blog also has an [RSS feed][jojolepro-rss] and more in-depth posts about
+game development are planned.
+
+[event-chaining]: https://www.jojolepro.com/blog/2020-08-20_event_chaining/
+[jojolepro-rss]: https://www.jojolepro.com/blog/blog.xml
+[@jojolepro]: https://github.com/jojolepro
+
+## Library & Tooling Updates
+
+### [ecs_bench_suite]
+
+
+_The full benchmark report is available [here][ecs_report]_
+
+This month [@TomGillen] (author of the [Legion][legion] ECS) released
+[ecs_bench_suite] - a suite of benchmarks designed to test and compare
+Rust ECS library performance across a variety of challenging circumstances.
+Later, the project was adopted by the Rust GameDev WG
+so that all Rust ECS developers can converge on a neutral,
+community-maintained benchmark.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/icczxh/ecs_bench_suite)_
+
+[ecs_bench_suite]: https://github.com/rust-gamedev/ecs_bench_suite
+[@TomGillen]: https://github.com/TomGillen
+[legion]: https://github.com/amethyst/legion
+[ecs_report]: https://rust-gamedev.github.io/ecs_bench_suite/target/criterion/report/index.html
+
+### [Rapier: 2D and 3D Physics Engines Focused on Performance][rapier-august]
+
+[][Rapier]
+
+[Rapier] is a new set of 2D and 3D physics engines written 100% in Rust.
+It is 5 to 10 times faster than [nphysics], close to the performances of the
+CPU version of PhysX, and often slightly faster than Box2D.
+
+[For its first release][rapier-august] Rapier includes:
+
+- rigid-body dynamics;
+- colliders and sensors;
+- joint constraints;
+- optional serialization of the physics state;
+- optional cross-platform determinism on IEEE-754 compliant targets;
+- optional explicit SIMD and parallelism;
+- JavaScript bindings with official NPM packages.
+
+This new physics engine is developed by the recently created [Dimforge]
+single-member Open-Source company [replacing][dimforge-replace] the former
+Rustsim organization created on GitHub by [@sebcrozet].
+
+_Discussions:
+[/r/rust](https://www.reddit.com/r/rust/comments/igkul2/announcing_rapier_2d_and_3d_physics_engines/)_
+
+[Rapier]: https://rapier.rs
+[rapier-august]: https://www.dimforge.com/blog/2020/08/25/announcing-the-rapier-physics-engine
+[dimforge-replace]: https://www.dimforge.com/blog/2020/08/18/rustsim-becomes-dimforge
+[Dimforge]: https://dimforge.com
+[@sebcrozet]: https://github.com/sebcrozet/
+[nphysics]: https://nphysics.org
+
+### [NeoCogi's Libraries][neocogi-repo]
+
+
+
+[Jude3D](https://neocogi.com) is a web based 3D sculpting application.
+It's a WebAssembly application, written in C/C++ and compiled using Emscripten
+but after much thinking, the authors decided to move the development to Rust!
+
+Many problems arise when moving existing C/C++/WebAssembly code to Rust.
+The two most important ones:
+
+- The new code should still interop with the already existing code.
+- Payload size matters on the web: your WASM app should be as small as possible.
+
+These led the authors to drop using Rust's std in favor to their own libs (`!#[no_std]`),
+at least until the std library crates are split up accordingly and stabilized,
+for example, the `alloc` crate.
+
+The good news is that they are
+[releasing most of the libraries as they make them as open source][neocogi-repo]!
+Also, a [WASM glfw3/GLES2 example][neocogi-example-src] that showcases the libs
+is included ([live demo][neocogi-example-demo]).
+
+[Jude3D in action]: https://twitter.com/weloraiby/status/1167228654922928130
+[neocogi-repo]: https://github.com/NeoCogi
+[neocogi-example-src]: https://github.com/NeoCogi/rs-glfw3-gles2-test
+[neocogi-example-demo]: https://neocogi.github.io/rs-glfw3-gles2-test
+
+### [cute-c2]
+
+
+
+cute-c2 is a 2D collision detection library that has had its first release to
+[crates.io][cute-c2]. The library is a Rust wrapper around the [c2.h] library.
+
+The library can detect collisions between circles, rectangles, capsules and
+up to eight-sided convex polygons. There are also functions for manifold
+generation, the GJK algorithm, and ray casting operations. There is an example
+program in the repository.
+
+[cute-c2]: https://crates.io/crates/c2
+[c2.h]: https://github.com/RandyGaul/cute_headers/blob/master/cute_c2.h
+
+### [hexasphere] v1.0
+
+
+
+The [hexasphere] library provides a customizable interface for subdividing 3D
+triangle meshes. Custom and stateful interpolation functions can be implemented
+as well as per-vertex attributes.
+
+All that's required to define a base shape are the initial vertices, triangles
+based on the indices of the vertices in the initial vertices, and numbered
+edges. As long as the winding of the triangles remains consistent throughout
+the base mesh, all of the resulting triangles will retain that winding.
+
+This library also provides a few interesting base shapes (which can be used alone
+if the shape is not subdivided):
+Icosahedron, Tetrahedron, Cube, Square Plane, Triangle Plane
+(all of which are pictured above).
+
+[hexasphere]: https://crates.io/crates/hexasphere
+
+### [blitz-path](https://github.com/BezPowell/blitz-path)
+
+[blitz-path](https://github.com/BezPowell/blitz-path) is a new crate providing
+an implementation of the [JPS](https://en.wikipedia.org/wiki/Jump_point_search)
+pathfinding algorithm.
+
+JPS is an optimization of the A* search algorithm for uniform-cost grids, which
+are common in games. While fully functional, the code is still in an early
+state and any suggestions for improvements - especially on how best to
+integrate it with the existing ecosystem - are greatly appreciated.
+
+### [This Month in Mun][mun-august]
+
+[][Mun]
+
+[Mun] is a scripting language for gamedev focused on quick iteration times
+that is written in Rust.
+
+[August updates][mun-august] include:
+
+- compiler support for type aliases;
+- shared diagnostics between compiler and language server;
+- support for the official [inkwell][mun-inkwell] crate;
+- refactors and quality of life improvements.
+
+[Mun]: https://mun-lang.org
+[mun-august]: https://mun-lang.org/blog/2020/08/30/this-month-august/
+[mun-inkwell]: https://crates.io/crates/inkwell
+
+### [inline_tweak]
+
+
+
+[inline_tweak] by [@Uriopass] is a library that allows you to
+tweak at runtime any number literal directly from your code.
+It works by parsing the file when a change occurs
+(inspired by [this blogpost][tuxedolabs-post] from Tuxedo labs).
+Usage example:
+
+```rust
+use inline_tweak::tweak;
+loop {
+ // Try changing the value while the application is running
+ println!("{}", tweak!(3.14));
+}
+```
+
+A `watch!()` macro that sleeps until the file is modified is also provided.
+
+The library is minimal, only requiring the `lazy_static` dependency
+to hold modified values.
+In release mode, the tweaking code is disabled and compiled away.
+
+[inline_tweak]: https://crates.io/crates/inline_tweak
+[@Uriopass]: https://github.com/Uriopass
+[tuxedolabs-post]: http://blog.tuxedolabs.com/2018/03/13/hot-reloading-hardcoded-parameters.html
+
+### [yacurses]
+
+[yacurses] by [@Lokathor] is a cross-platform curses bindings crate that's
+small, simple, easy to understand, and most importantly safe to use.
+It wraps over `ncurses` on Unix and a bundled `pdcurses` on Windows.
+If you're looking to make a terminal-based roguelike
+(or any other terminal-based game), give it a try.
+
+[yacurses]:https://lib.rs/crates/yacurses
+[@Lokathor]: https://github.com/Lokathor
+
+### [SPIR-Q] v0.4.6
+
+[SPIR-Q] is a light-weight shader reflection library, which allows you to query
+the types, offsets, sizes and even names in your shaders procedurally.
+
+This month v0.4.2..v0.4.6 versions were released.
+Some of the updates:
+
+- Specialization constants enumeration.
+- Dynamically sized multi-binding support.
+- Improved entrypoint debug printing.
+- Better manifest merging method for pipeline construction.
+- Bugfixes and various small API improvements.
+
+_Discussions: [/r/rust_gamedev][spirq-discussion]_
+
+[SPIR-Q]: https://github.com/PENGUINLIONG/spirq-rs
+[spirq-discussion]: https://reddit.com/r/rust_gamedev/comments/i6hxh6/spirq_042
+
+### [Inline SPIR-V]
+
+
+
+[Inline SPIR-V] is a single-crate build-time shader compilation library based on
+shaderc which provides procedural macros to help you translate shader sources,
+in either GLSL or HLSL, inline or from-file, into SPIR-Vs and embed the SPIR-Vs
+right inside your code as `u32` slices. Despite basic shader compilation,
+`inline-spirv` also support `#include` directives, macro substitution,
+post-compile optimization, as well as descriptor auto-binding.
+
+_Discussions: [/r/rust_gamedev][inline-spirv-discussion]_
+
+[Inline SPIR-V]: https://github.com/PENGUINLIONG/inline-spirv-rs
+[inline-spirv-discussion]: https://reddit.com/r/rust_gamedev/comments/ic1005/inline_spirv
+
+### [rspirv-reflect] v0.1
+
+
+
+[Traverse Research] has created the [rspirv-reflect] library to replace
+their very basic use-case of the existing [spirv-reflect-rs] / [spirv-reflect]
+libraries that are already out there. The current iteration of `rspirv-reflect`
+is pretty minimal, but it allows you to extract the binding setup from a SPIR-V
+binary. `rspirv-reflect` supports the latest version of SPIR-V (version 1.5 as
+of writing) and it also supports all the new shader stages (both ray tracing
+and mesh/task shaders) as well as the existing ones.
+
+Traverse Research wanted to reduce their reliance on C and C++ unsafe
+libraries and at the same time they needed to support newer features that were
+slow to become available in the existing `spirv-reflect` library. The primary
+use-case for this library is in conjunction with the Rust wrapper around the
+DirectX Shader Compiler ([dxc]), called [hassle-rs] that Traverse Research
+also built.
+
+[Traverse Research]: https://traverseresearch.nl
+[rspirv-reflect]: https://github.com/Traverse-Research/rspirv-reflect
+[spirv-reflect]: https://github.com/KhronosGroup/SPIRV-Reflect
+[spirv-reflect-rs]: https://github.com/gwihlidal/spirv-reflect-rs
+[hassle-rs]: https://github.com/Traverse-Research/hassle-rs
+[dxc]: https://github.com/microsoft/DirectXShaderCompiler
+
+### [gfx-rs][gfx-repo] and [wgpu][wgpu-site]
+
+
+_wgpu-rs's [water example][wgpu-water]_
+
+gfx-rs project and wgpu ecosystem have observed the release of 0.6 versions! 🎉
+
+Some of the updates:
+
+- Reworked project structure:
+ - `wgpu-core` - a safe pure-Rust internal API, implementing WebGPU specification;
+ - `wgpu-rs` - the idiomatic Rust wrapper;
+ - `wgpu-native` - the C API wrapper, aiming to be compatible with [Dawn];
+ - Gecko and Servo - for implementing WebGPU API in the browsers.
+- Ability to record API traces, replay them on a different machine,
+ and run data-driven tests.
+- `write_buffer` and `write_texture` for update the GPU data
+ without intermediate staging buffers or encoders.
+- A number of powerful native-only extensions, such as descriptor indexing,
+ as well as web-compatible extensions like depth-clamping.
+- [naga] v0.2 - an experimental shader translation library.
+- The [showcase gallery](https://wgpu.rs/#showcase) was updated.
+
+Read about the details on [gfx-rs blog](https://gfx-rs.github.io/2020/08/18/release-0.6.html).
+
+[@sothr](https://github.com/sothr) has reworked the
+[wgpu instancing tutorial][wgpu-instancing-tutor].
+See discussion at [/r/rust_gamedev][wgpu-instancing-reddit].
+
+[gfx-repo]: https://github.com/gfx-rs/gfx
+[wgpu-site]: https://wgpu.rs
+[wgpu-water]: https://github.com/gfx-rs/wgpu-rs/tree/master/examples/water
+[wgpu-instancing-tutor]: https://sotrh.github.io/learn-wgpu/beginner/tutorial7-instancing/#the-instance-buffer
+[wgpu-instancing-reddit]: https://reddit.com/r/rust_gamedev/comments/i8np5v/simplified_instancing_tutorial_learn_wgpu
+[naga]: https://github.com/gfx-rs/naga
+[Dawn]: https://dawn.googlesource.com/dawn
+
+### [KAS] v0.5 and [KAS-text] v0.1
+
+
+
+[KAS] by [@dhardy] is a general purpose UI toolkit; its
+initial aim is "old school" desktop apps with a good keyboard and touchscreen
+support. Unlike many modern immediate-mode UIs, KAS's widgets retain state,
+allowing minimal per-frame updates. KAS supports embedded WebGPU graphics now,
+and will (eventually) support being embedded within other contexts (requiring
+only a supply of input events and implementation of some basic graphics routines).
+
+KAS v0.5 switches to a new crate for text layout,
+[KAS-text]. KAS-text is a text layout
+engine supporting multi-line editing, shaping and bidirectional text; future
+versions will also support formatting. KAS-text is not tied to any particular
+raster or render system; its positioned-glyph output is relatively easy to
+adapt to crates like `wgpu_glyph` and `gfx_glyph`.
+For more, see the article ["Why I created KAS-text"][kas-article].
+
+[KAS]: https://github.com/kas-gui/kas
+[KAS-text]: https://github.com/kas-gui/kas-text
+[kas-article]: https://kas-gui.github.io/blog/why-kas-text.html
+[@dhardy]: https://github.com/dhardy
+
+### [Egui]
+
+
+
+[Egui] is a highly portable immediate mode GUI library in pure Rust.
+Egui can be integrated anywhere you can paint textured triangles.
+You can compile Egui to WASM and render it on a web page using [egui_web]
+or compile and run natively using [egui_glium].
+
+Check out the [Egui web demo](https://emilk.github.io/egui/index.html).
+
+Example:
+
+```rust
+Window::new("Debug").show(ui.ctx(), |ui| {
+ ui.label(format!("Hello, world {}", 123));
+ if ui.button("Save").clicked {
+ my_save_function();
+ }
+ ui.text_edit(&mut my_string);
+ ui.add(Slider::f32(&mut value, 0.0..=1.0).text("float"));
+});
+```
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/hzwvsk/emigui_deserves_more_love)_
+
+[Egui]: https://github.com/emilk/egui/
+[egui_glium]: https://crates.io/crates/egui_glium
+[egui_web]: https://crates.io/crates/egui_web
+
+### [voxel-mapper]
+
+
+
+[voxel-mapper] is a library and in-game editor for voxel maps, smooth or cubey.
+The ultimate goal of the project is to make it easy for artists and programmers
+alike to generate volumetric game content, either manually or procedurally.
+The library's author [@bonsairobo] has also written a couple posts:
+
+- ["Smooth Voxel Mapping: a Technical Deep Dive on Real-time Surface Nets and Texturing"][voxel-post-tech]
+- ["A 3rd Person Camera in a Complex Voxel World"][voxel-post-cam]
+
+Upcoming on the roadmap are procedural generation algorithms for generating
+maps, new kinds of voxels, and graphical improvements. Currently, the library
+and editor depend on the Amethyst engine version 0.15, but there is a desire to
+make the library engine-agnostic. Contributions are welcome!
+
+[voxel-mapper]: https://github.com/amethyst/voxel-mapper
+[@bonsairobo]: https://github.com/bonsairobo
+[voxel-post-tech]: https://medium.com/@bonsairobo/smooth-voxel-mapping-a-technical-deep-dive-on-real-time-surface-nets-and-texturing-ef06d0f8ca14
+[voxel-post-cam]: https://medium.com/@bonsairobo/a-3rd-person-camera-in-complex-voxel-world-523944d5335c
+
+### [Bevy Engine][bevy]
+
+[](https://bevyengine.org/)
+
+[Bevy][bevy] by [@cart] is a brand new, refreshingly simple data-driven
+game engine built in Rust. It aims to be:
+
+- **Capable**: Offer a complete 2D and 3D feature set.
+- **Simple**: Easy for newbies to pick up, but infinitely flexible
+ for power users.
+- **Data Focused**: Data-oriented architecture using
+ the Entity Component System paradigm.
+- **Modular**: Use only what you need. Replace what you don't like.
+- **Fast**: App logic should run quickly, and when possible, in parallel.
+- **Productive**: Changes should compile quickly ... waiting isn't fun.
+
+These last few weeks have been big for the Bevy project:
+
+- Bevy was announced and [open sourced on GitHub][bevy].
+- Bevy's features were introduced in the ["Introducing Bevy"][bevy-intro]
+ blog post.
+- Had a staggering number of people join the community.
+ This required some quick planning to handle the new size,
+ which they outlined in the [Scaling Bevy][bevy-scaling] blog post.
+- Added an official [awesome-bevy repo][awesome-bevy]
+ with a huge number of community plugins, games, apps, and learning materials.
+- 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]:
+ "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.
+ See the [Addressing the Elephant in the Room][bevy-amethyst]
+ thread on the Amethyst forum for more details.
+
+Bevy users started sharing their work
+on the [Bevy Discord showcase channel][bevy-discord-showcase]:
+
+
+
+In addition to the initial Bevy GitHub release, 114 pull requests
+were merged this month. Some highlights:
+
+- A custom [async task system for Bevy][bevy-pr-async],
+ which significantly improves CPU usage and paves the way for future async work.
+- Refactored data-driven ECS shader code to make it more maintainable, fix some bugs,
+ and ready to be optimized via the ECS change detection apis.
+- Support for "logical or" ECS queries as a compliment to the default "logical and".
+- Numerous CI improvements.
+- Use shaderc to compile shaders for iOS builds.
+- GLTF loading improvements.
+
+Bevy also made good progress on its three focus areas:
+
+- [Editor-Ready UI](https://github.com/bevyengine/bevy/issues/254)
+- [Physically Based Rendering (PBR)](https://github.com/bevyengine/bevy/issues/179)
+- [Scenes](https://github.com/bevyengine/bevy/issues/255)
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/i7bcwu/introducing_bevy),
+[hacker news](https://news.ycombinator.com/item?id=24123283),
+[twitter](https://twitter.com/cart_cart/status/1292903435155599361),
+[amethyst forum](https://community.amethyst.rs/t/bevy-engine-addressing-the-elephant-in-the-room)_
+
+[bevy]: https://bevyengine.org
+[@cart]: https://github.com/cart
+[bevy-intro]: https://bevyengine.org/news/introducing-bevy
+[bevy-scaling]: https://bevyengine.org/news/scaling-bevy
+[awesome-bevy]: https://github.com/bevyengine/awesome-bevy
+[bevy-rapier]: https://www.dimforge.com/blog/2020/08/25/announcing-the-rapier-physics-engine/#reaching-out-to-other-communities-bevy-and-javascript
+[bevy-spnsors]: https://github.com/sponsors/cart
+[bevy-amethyst]: https://community.amethyst.rs/t/bevy-engine-addressing-the-elephant-in-the-room
+[bevy-discord-showcase]: https://discord.com/channels/691052431525675048/692648638823923732
+[bevy-pr-async]: https://github.com/bevyengine/bevy/pull/384
+
+### [Minigene][minigene]
+
+[Minigene][minigene] is a tiled and ASCII game engine made by [@jojolepro].
+It allows to very simply create complex games running on desktop as well as
+in the browser.
+
+While it is still under heavy development, a lot can be done already:
+
+- Easily create ECS systems.
+- Create tiled and ASCII entities.
+- Create GUI elements.
+- Move entities around with A\* pathfinding.
+- and much more!
+
+[minigene]: https://www.github.com/jojolepro/minigene
+
+### Tetra
+
+[Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month,
+versions [0.4.1][tetra-041] and [0.4.2][tetra-042] were released, featuring:
+
+- Improved Serde support;
+- Various fixes and improvements to the built-in `Camera` type;
+- Many documentation improvements, based on user feedback.
+
+In addition, Tetra 0.5 is planned for release in early September. For more
+information on the upcoming changes, see the [changelog][tetra-changelog].
+
+[tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-041]: https://twitter.com/17cupsofcoffee/status/1289857217198317568
+[tetra-042]: https://twitter.com/17cupsofcoffee/status/1294316642680426497
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+
+### [Piston]
+
+
+
+[Piston] is a modular game engine written in Rust.
+
+A new [Piston Discord Channel] has been set up
+for the Piston project.
+
+Piston consists of a core library "piston" which itself are composed of
+smaller libraries for abstracting input, window and event loop.
+This design helps reducing breaking changes in the ecosystem.
+
+The core library `pistoncore-input` is now stabilized and reached 1.0!
+This is the most important core abstraction, because it glues all
+libraries that are not independent of the core.
+
+[Piston]: https://github.com/pistondevelopers/piston
+[Piston Discord Channel]: https://discord.gg/TkDnS9x
+
+------
+
+[Dyon] is a rusty dynamically typed scripting language.
+It is developed and maintained as part of the Piston project,
+but can be used as a standalone library.
+
+Dyon is designed from the bottom up to be a good gamedev scripting language for Rust.
+It uses a lifetime checker instead of garbage collection, a mutability checker,
+optional namespaces and ad-hoc types, named argument syntax,
+4D vectors and HTML colors, plus a lot more features!
+
+Recently, Dyon got better macro integration for native Rust types
+using `#` as a prefix.
+Here is an example of this feature is being tested in
+an experimental offline 3D renderer (not open sourced):
+
+```text
+// Called by `set_simple(scene: _, sdf: _, id: _)`.
+dyon_fn!{fn set_simple__scene_sdf_id(
+ scene: #&mut SimpleScene,
+ sdf: #&Sdf,
+ id: f64
+) {
+ scene.sdfs[id as usize] = sdf.clone()
+}}
+```
+
+To follow updates on Dyon, check out the subreddit [/r/dyon].
+
+[Dyon]: https://github.com/pistondevelopers/dyon
+[/r/dyon]: https://reddit.com/r/dyon/
+
+------
+
+[Piston-Graphics] is a library for 2D graphics, written in Rust,
+that works with multiple backends.
+
+`Stencil::Increment` has been added and the ecosystem
+has been updated to the latest version.
+
+[Piston-Graphics]: https://github.com/pistondevelopers/graphics
+
+------
+
+The research branch of the Piston project, AdvancedResearch,
+has released a new ECS library [Nano-ECS].
+
+This ECS design stores all components in a single array
+and uses bit masks for enabling/disabling components.
+An entity can have maximum 64 components and must be initialized
+with all components it uses in the future.
+Each entity has a slice into the array that stores all components.
+The `World` object, `Component` and systems are generated using macros.
+
+One research project with Nano-ECS is to prototype a UI framework
+for Rust with a UI editor (not open sourced yet).
+This project uses Piston-Graphics by default,
+but can generate draw commands for processing by other 2D APIs.
+It is also possible to override rendering of widgets for
+custom looks with Piston-Graphics, which is often useful in gamedev.
+Recently, this project has gotten to a place where
+[tree-view interaction] is working.
+
+You can follow development at [@PistonDeveloper at Twitter].
+
+[@PistonDeveloper at Twitter]: https://twitter.com/PistonDeveloper
+[tree-view interaction]: https://twitter.com/PistonDeveloper/status/1299840279374110720
+[Nano-ECS]: https://github.com/advancedresearch/nano_ecs
+
+### [Amethyst v0.15.1][amethyst-v0-15-1-post]
+
+
+
+[Amethyst][amethyst] is a game engine and tool-set
+for ambitious game developers.
+
+This month a [v0.15.1 version was released][amethyst-v0-15-1-post].
+Updates include:
+
+- New book chapters for [UI][amethyst-ui] and [Tiles][amethyst-tiles];
+- [Updated examples][amethyst-examples], with special attention to the pong example;
+- Switch to [GitHub Actions for CI][amethyst-ga];
+- Lots of API improvements and bug fixes.
+
+For more details see the [full changelog][amethyst-changelog].
+
+v0.16 plans include a full migration to the [Legion ECS][legion]
+and a big site face lift.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ibvheq/amethyst_engine_v0151)_
+
+[amethyst]: https://amethyst.rs
+[amethyst-v0-15-1-post]: https://amethyst.rs/posts/release-0.15.1
+[amethyst-examples]: https://github.com/amethyst/amethyst/tree/v0.15.1/examples
+[amethyst-ui]: https://book.amethyst.rs/stable/ui.html
+[amethyst-tiles]: https://book.amethyst.rs/stable/tiles.html
+[amethyst-ga]: https://github.com/amethyst/amethyst/blob/v0.15.1/.github/workflows/ci.yml
+[amethyst-changelog]: https://github.com/amethyst/amethyst/blob/master/docs/CHANGELOG.md#0151---2020-08-14
+
+### [starframe]
+
+
+
+[starframe] by [@moletrooper] 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].
+
+The next area of focus is going to be fleshing out the physics with
+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)_
+
+[starframe]: https://github.com/moletrooper/starframe
+[@moletrooper]: https://twitter.com/moletrooper
+[sf-graph-post]: https://moletrooper.github.io/blog/2020/08/starframe-1-architecture/
+
+### [mochi]
+
+
+
+[mochi] by [@richardanaya] is a game engine oriented toward
+low-power mobile Linux phones/tablets.
+It's written in Rust and uses Gtk and Cairo.
+All drawing is done with an [Cairo Context][cairo-context] that mochi
+has extended to do some really [common graphics operations][mochi-cairo].
+
+This project is super alpha but usable.
+Current features include: touch, screen rotation, atlases, sounds.
+
+[pinephone-cairo-game-starter][mochi-start] is a starter for creating
+a Cairo-based game in Rust for [PinePhone][pinephone-wiki]
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/i2389n/how_to_build_a_pinephone_game_using_rust)_
+
+[mochi]: https://github.com/richardanaya/mochi
+[@richardanaya]: https://github.com/richardanaya
+[pinephone-wiki]: https://en.wikipedia.org/wiki/PinePhone
+[mochi-start]: https://github.com/richardanaya/pinephone-cairo-game-starter
+[cairo-context]: https://gtk-rs.org/docs/cairo/struct.Context.html
+[mochi-cairo]: https://docs.rs/mochi/latest/mochi/trait.MochiCairoExt.html
+
+### 🐦 [Puffin] Profiler
+
+
+
+[Puffin] is a simple instrumentation profiler created by [Embark]
+where you can opt-in to profile parts of your code.
+
+```rust
+fn my_function() {
+ puffin::profile_function!():
+ ...
+ if ... {
+ puffin::profile_scope_data!("load_image", image_name):
+ ...
+ }
+}
+```
+
+The collected profile data can be viewed ingame with [imgui-rs].
+
+[Puffin]: https://github.com/EmbarkStudios/puffin
+[Embark]: https://www.embark-studios.com/
+[imgui-rs]: https://github.com/Gekkio/imgui-rs
+
+### [Optick][optick] Profiler
+
+[][optic-video]
+_Click to watch a [video tutorial / features overview][optic-video]_
+
+[Optick][optick] by [@bombomby] is a lightweight C++ profiler for games
+that provides access for all the necessary tools required for
+efficient performance analysis and optimization:
+instrumentation, switch-contexts, sampling, GPU counters.
+
+This month Rust API for Optick was released: [optick-rs].
+
+Also, a set of procedural macros for simplifying the process of code markup
+were published: [optick-attr].
+
+```rust
+// Instrument current function
+#[optick_attr::profile]
+fn calc() { /* Do some stuff*/ }
+
+// Generate performance capture for function
+// to {dir}/capture_name(date-time).opt.
+#[optick_attr::capture("capture_name")]
+pub fn main() {
+ calc();
+}
+```
+
+[optick]: https://optick.dev/
+[optick-rs]: https://github.com/bombomby/optick-rs
+[optick-attr]: https://crates.io/crates/optick-attr
+[optic-video]: https://youtube.com/watch?v=p57TV5342fo
+[@bombomby]: https://github.com/bombomby
+
+### [wowAddonManager] v1.0.2
+
+
+
+The [wowAddonManager] is a terminal user interface for managing World of
+Warcraft addons on Linux made by [@mreimsbach]. It allows installing addons
+from [Curseforge] for WoW Classic as well as WoW Retail.
+
+The [tui-rs] library was used to create the interface and [Termion] was used to
+communicate with the TTY.
+
+[wowAddonManager]: https://github.com/MR2011/wowAddonManager
+[@mreimsbach]: https://twitter.com/mreimsbach
+[Curseforge]: https://www.curseforge.com/wow/addons
+[tui-rs]: https://github.com/fdehau/tui-rs
+[Termion]: https://gitlab.redox-os.org/redox-os/termion
+
+### [intellij-ron]
+
+[RON][ron] (Rusty Object Notation) is a simple readable data serialization format
+that looks similar to Rust syntax and is designed
+to support all of [Serde's data model][serde-data].
+RON is relatively popular amongst Rust game developers.
+
+This month [@JonahHenriksson] released [intellij-ron] - a new plugin
+that adds [RON][ron] support to IntelliJ-based IDEs.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ictnsc/ive_created_an_free_open_source_intellij_plugin)_
+
+[intellij-ron]: https://github.com/ron-rs/intellij-ron
+[@JonahHenriksson]: https://github.com/JonahHenriksson
+[ron]: https://github.com/ron-rs/ron
+[serde-data]: https://serde.rs/data-model.html
+
+### [".sia" Parser & Viewer][football-manager]
+
+
+
+This month [@Stromberg90] published [Football Manager Tools] - a set of tools
+for working with [Football Manager's][football-manager] 3D mesh format(.sia).
+Amongst them:
+
+- `sia_parser` - a Rust crate for parsing .sia files.
+- `sia_viewer` - a standalone Mesh(.sia) Viewer.
+
+[@Stromberg90]: https://github.com/Stromberg90
+[football-manager]: https://en.wikipedia.org/wiki/Football_Manager
+[Football Manager Tools]: https://github.com/Stromberg90/football-manager-tools
+
+## 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);
+ - [#93 "Consider creating a game math library benchmark for the working group"](https://github.com/rust-gamedev/wg/issues/93);
+- [rust-gamedev/rust-gamedev.github.io](https://github.com/rust-gamedev/rust-gamedev.github.io):
+ - [#233 "Custom Domain"](https://github.com/rust-gamedev/rust-gamedev.github.io/issues/233);
+- [rust-gamedev/ecs_bench_suite](https://github.com/rust-gamedev/ecs_bench_suite):
+ - [#6 "Benchmark compile times"](https://github.com/rust-gamedev/ecs_bench_suite/issues/6);
+ - [#13 "How results will be updated?"](https://github.com/rust-gamedev/ecs_bench_suite/issues/13);
+
+## Meeting Minutes
+
+
+
+[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
+
+## Requests for Contribution
+
+
+
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [winit's "Good first issue" and “help wanted” issues][winit-issues].
+- [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].
+
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[winit-issues]: https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22status%3A+help+wanted%22+label%3A%22Good+first+issue%22
+[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/dabreegster/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!
+
+Subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discussions of this post**:
+[/r/rust](https://reddit.com/r/rust/comments/ioftll/this_month_in_rust_gamedev_13_august_2020),
+[twitter](https://twitter.com/rust_gamedev/status/1303073032660037635).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/posts/newsletter-013/inline-spirv-demo.png b/content/posts/newsletter-013/inline-spirv-demo.png
new file mode 100644
index 000000000..addc0ecae
Binary files /dev/null and b/content/posts/newsletter-013/inline-spirv-demo.png differ
diff --git a/content/posts/newsletter-013/inline-tweak.gif b/content/posts/newsletter-013/inline-tweak.gif
new file mode 100644
index 000000000..c2cbffd6b
Binary files /dev/null and b/content/posts/newsletter-013/inline-tweak.gif differ
diff --git a/content/posts/newsletter-013/jude3d.jpeg b/content/posts/newsletter-013/jude3d.jpeg
new file mode 100644
index 000000000..211b3a6fb
Binary files /dev/null and b/content/posts/newsletter-013/jude3d.jpeg differ
diff --git a/content/posts/newsletter-013/kas-text-layout.png b/content/posts/newsletter-013/kas-text-layout.png
new file mode 100644
index 000000000..3630ad97f
Binary files /dev/null and b/content/posts/newsletter-013/kas-text-layout.png differ
diff --git a/content/posts/newsletter-013/mochi.jpg b/content/posts/newsletter-013/mochi.jpg
new file mode 100644
index 000000000..d4fcf3e56
Binary files /dev/null and b/content/posts/newsletter-013/mochi.jpg differ
diff --git a/content/posts/newsletter-013/mun-logo.png b/content/posts/newsletter-013/mun-logo.png
new file mode 100644
index 000000000..02295dc77
Binary files /dev/null and b/content/posts/newsletter-013/mun-logo.png differ
diff --git a/content/posts/newsletter-013/nes_emulator_rust.png b/content/posts/newsletter-013/nes_emulator_rust.png
new file mode 100644
index 000000000..16103b189
Binary files /dev/null and b/content/posts/newsletter-013/nes_emulator_rust.png differ
diff --git a/content/posts/newsletter-013/optick-video.jpg b/content/posts/newsletter-013/optick-video.jpg
new file mode 100644
index 000000000..12bac85a8
Binary files /dev/null and b/content/posts/newsletter-013/optick-video.jpg differ
diff --git a/content/posts/newsletter-013/piston-logo.png b/content/posts/newsletter-013/piston-logo.png
new file mode 100644
index 000000000..09278cf4b
Binary files /dev/null and b/content/posts/newsletter-013/piston-logo.png differ
diff --git a/content/posts/newsletter-013/podcast.jpeg b/content/posts/newsletter-013/podcast.jpeg
new file mode 100644
index 000000000..0e3134937
Binary files /dev/null and b/content/posts/newsletter-013/podcast.jpeg differ
diff --git a/content/posts/newsletter-013/puffin.png b/content/posts/newsletter-013/puffin.png
new file mode 100644
index 000000000..72e98be8c
Binary files /dev/null and b/content/posts/newsletter-013/puffin.png differ
diff --git a/content/posts/newsletter-013/rapier-logo.svg b/content/posts/newsletter-013/rapier-logo.svg
new file mode 100644
index 000000000..363266688
--- /dev/null
+++ b/content/posts/newsletter-013/rapier-logo.svg
@@ -0,0 +1,65 @@
+
+
+
\ No newline at end of file
diff --git a/content/posts/newsletter-013/rustconf-amethyst-talk.png b/content/posts/newsletter-013/rustconf-amethyst-talk.png
new file mode 100644
index 000000000..641271a93
Binary files /dev/null and b/content/posts/newsletter-013/rustconf-amethyst-talk.png differ
diff --git a/content/posts/newsletter-013/simple-physics-wave.gif b/content/posts/newsletter-013/simple-physics-wave.gif
new file mode 100644
index 000000000..9eedbe3e4
Binary files /dev/null and b/content/posts/newsletter-013/simple-physics-wave.gif differ
diff --git a/content/posts/newsletter-013/starframe-demo.gif b/content/posts/newsletter-013/starframe-demo.gif
new file mode 100755
index 000000000..9f35283a1
Binary files /dev/null and b/content/posts/newsletter-013/starframe-demo.gif differ
diff --git a/content/posts/newsletter-013/traverse-research-banner.png b/content/posts/newsletter-013/traverse-research-banner.png
new file mode 100644
index 000000000..cc10cd2a5
Binary files /dev/null and b/content/posts/newsletter-013/traverse-research-banner.png differ
diff --git a/content/posts/newsletter-013/vangers-shadows.jpeg b/content/posts/newsletter-013/vangers-shadows.jpeg
new file mode 100644
index 000000000..dcdbd0333
Binary files /dev/null and b/content/posts/newsletter-013/vangers-shadows.jpeg differ
diff --git a/content/posts/newsletter-013/veloren-landscape1.jpeg b/content/posts/newsletter-013/veloren-landscape1.jpeg
new file mode 100644
index 000000000..8e894cdba
Binary files /dev/null and b/content/posts/newsletter-013/veloren-landscape1.jpeg differ
diff --git a/content/posts/newsletter-013/veloren-sceptre.gif b/content/posts/newsletter-013/veloren-sceptre.gif
new file mode 100644
index 000000000..666a7e039
Binary files /dev/null and b/content/posts/newsletter-013/veloren-sceptre.gif differ
diff --git a/content/posts/newsletter-013/voxel-mapper.jpeg b/content/posts/newsletter-013/voxel-mapper.jpeg
new file mode 100644
index 000000000..a6e3e7837
Binary files /dev/null and b/content/posts/newsletter-013/voxel-mapper.jpeg differ
diff --git a/content/posts/newsletter-013/way-of-rhea-play-nyc.png b/content/posts/newsletter-013/way-of-rhea-play-nyc.png
new file mode 100644
index 000000000..e3a2984ac
Binary files /dev/null and b/content/posts/newsletter-013/way-of-rhea-play-nyc.png differ
diff --git a/content/posts/newsletter-013/wgpu-water.gif b/content/posts/newsletter-013/wgpu-water.gif
new file mode 100644
index 000000000..339561924
Binary files /dev/null and b/content/posts/newsletter-013/wgpu-water.gif differ
diff --git a/content/posts/newsletter-013/wowAddonManager-example.png b/content/posts/newsletter-013/wowAddonManager-example.png
new file mode 100644
index 000000000..62533538d
Binary files /dev/null and b/content/posts/newsletter-013/wowAddonManager-example.png differ
diff --git a/content/posts/newsletter-014/BUGOUT.jpg b/content/posts/newsletter-014/BUGOUT.jpg
new file mode 100644
index 000000000..2a6ed51dc
Binary files /dev/null and b/content/posts/newsletter-014/BUGOUT.jpg differ
diff --git a/content/posts/newsletter-014/abstreet.png b/content/posts/newsletter-014/abstreet.png
new file mode 100644
index 000000000..1f248b377
Binary files /dev/null and b/content/posts/newsletter-014/abstreet.png differ
diff --git a/content/posts/newsletter-014/bevy_logo.png b/content/posts/newsletter-014/bevy_logo.png
new file mode 100644
index 000000000..22508c73c
Binary files /dev/null and b/content/posts/newsletter-014/bevy_logo.png differ
diff --git a/content/posts/newsletter-014/citybound.png b/content/posts/newsletter-014/citybound.png
new file mode 100644
index 000000000..ff16be07e
Binary files /dev/null and b/content/posts/newsletter-014/citybound.png differ
diff --git a/content/posts/newsletter-014/cool-bear.png b/content/posts/newsletter-014/cool-bear.png
new file mode 100644
index 000000000..52fba3cf1
Binary files /dev/null and b/content/posts/newsletter-014/cool-bear.png differ
diff --git a/content/posts/newsletter-014/diff-gi.gif b/content/posts/newsletter-014/diff-gi.gif
new file mode 100644
index 000000000..bfdd1140e
Binary files /dev/null and b/content/posts/newsletter-014/diff-gi.gif differ
diff --git a/content/posts/newsletter-014/ecs-bevy-tutorial.png b/content/posts/newsletter-014/ecs-bevy-tutorial.png
new file mode 100644
index 000000000..1bf23198f
Binary files /dev/null and b/content/posts/newsletter-014/ecs-bevy-tutorial.png differ
diff --git a/content/posts/newsletter-014/femtovg.png b/content/posts/newsletter-014/femtovg.png
new file mode 100644
index 000000000..d19abc407
Binary files /dev/null and b/content/posts/newsletter-014/femtovg.png differ
diff --git a/content/posts/newsletter-014/galangua.png b/content/posts/newsletter-014/galangua.png
new file mode 100644
index 000000000..fbae4b2d8
Binary files /dev/null and b/content/posts/newsletter-014/galangua.png differ
diff --git a/content/posts/newsletter-014/garden.jpeg b/content/posts/newsletter-014/garden.jpeg
new file mode 100644
index 000000000..3ede0465d
Binary files /dev/null and b/content/posts/newsletter-014/garden.jpeg differ
diff --git a/content/posts/newsletter-014/gfx-logo.png b/content/posts/newsletter-014/gfx-logo.png
new file mode 100644
index 000000000..e0cc9047b
Binary files /dev/null and b/content/posts/newsletter-014/gfx-logo.png differ
diff --git a/content/posts/newsletter-014/godot.png b/content/posts/newsletter-014/godot.png
new file mode 100644
index 000000000..5e872e956
Binary files /dev/null and b/content/posts/newsletter-014/godot.png differ
diff --git a/content/posts/newsletter-014/index.md b/content/posts/newsletter-014/index.md
new file mode 100644
index 000000000..e941aef42
--- /dev/null
+++ b/content/posts/newsletter-014/index.md
@@ -0,0 +1,1105 @@
++++
+title = "This Month in Rust GameDev #14 - September 2020"
+date = 2020-10-07
+transparent = true
++++
+
+Welcome to the 14th 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
+
+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)
+- [Requests for Contribution](#requests-for-contribution)
+
+
+
+## Game Updates
+
+### [Veloren][veloren]
+
+
+_Deer by the riverside_
+
+[Veloren][veloren] is an open world, open-source voxel RPG inspired by Dwarf
+Fortress and Cube World.
+
+In September, Veloren hit 5000 commits to the main repo! A privilege escalation
+bug was found in the game. It was quickly patched, and a PSA was sent out to
+notify server owners of its presence. A Discord bot was created to help manage a
+testing server. Airshipper, Veloren's launcher, saw the release of version
+0.4.0. Lots of work is going on to improve the state of Veloren's server
+infrastructure. A stress test was run with 15 players to see how smaller server
+could handle running the game.
+
+Improvements were made to the chunk compression which resulted in a ~7x memory
+reduction in their storage. The settings menu has been overhauled, along with
+many other elements of the UI. A stone golem boss was merged, adding a new boss
+to dungeons. Work has been done on beam weapons and collisions, resulting in a
+significantly improved healing sceptre.
+
+You can read more about some specific topics from September:
+
+- [Compilation Breakdown](https://veloren.net/devblog-84#compilation-breakdown-by-angelonfira)
+- [Improved Server Metrics](https://veloren.net/devblog-85#improved-server-metrics-to-improve-server-performance-by-xmac94x)
+- [PSA: Privilege Escalation bug](https://veloren.net/devblog-86#psa-privilege-escalation-bug)
+- [Animation Changes](https://veloren.net/devblog-86#animation-changes-by-slipped)
+- [Attack Updates](https://veloren.net/devblog-86#attack-updates-by-sam)
+- [Beam Collisions](https://veloren.net/devblog-86#beam-collisions-by-sam)
+- [Sceptre Rework](https://veloren.net/devblog-87#sceptre-rework-by-sam)
+- [Memory Optimizations](https://veloren.net/devblog-87#memory-optimizations-by-sharp)
+- [Art Blog #7](https://www.patreon.com/posts/art-blog-no-7-41635011)
+
+September's full weekly devlogs: "This Week In Veloren...":
+[#84](https://veloren.net/devblog-84),
+[#85](https://veloren.net/devblog-85),
+[#86](https://veloren.net/devblog-86),
+[#87](https://veloren.net/devblog-87).
+
+
+_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
+infrastructure from code. Optimizations will keep coming in as we find places to
+improve. 0.8 may release sometime this month, however, the exact date is yet to
+be set.
+
+[veloren]: https://veloren.net
+[veloren-interview]: https://rustgamedev.com/episodes/interview-with-team-veloren
+
+### [A/B Street][abstreet]
+
+
+
+[A/B Street][abstreet] is a traffic simulation game exploring how small changes
+to roads affect cyclists, transit users, pedestrians, and drivers. Any city
+with OpenStreetMap coverage can be used!
+
+Some of this month's updates:
+
+- finished support for driving on the left side of the road;
+- isometric buildings and support for textures by [Michael][mkirk];
+- a flurry of major UI updates, thanks to the return of the project's UX
+ designer;
+- an option to disable parking simulation, to workaround missing data;
+- alleyways imported from OSM;
+- more realistic traffic signal timing constraints, thanks to
+ [Sam][NoSuchThingAsRandom], a new contributor.
+
+[abstreet]: https://abstreet.org
+[mkirk]: https://github.com/michaelkirk
+[NoSuchThingAsRandom]: https://github.com/NoSuchThingAsRandom/
+
+### [Garden][garden]
+
+
+
+[Garden][garden] is an upcoming game centered around growing realistic plants.
+Some of the updates from [the September devlog][garden-devlog]:
+
+- The project switched to Nvidia’s PhysX from a custom physics engine.
+- More accurate plant clone placement.
+- Significant rendering performance improvements.
+- Work on saving and loading system has begun.
+
+[garden]: https://epcc.itch.io/garden
+[garden-devlog]: https://cyberplant.xyz/posts/september/
+
+### [galangua]
+
+
+
+[galangua] by [@tyfkda] is a dynamic 2D shoot 'em up game,
+written in Rust using SDL2.
+It works on the desktop as well as in the browser.
+
+[The source code is available here.][galangua-src]
+
+[galangua]: https://tyfkda.github.io/galangua/
+[galangua-src]: https://github.com/tyfkda/galangua
+[@tyfkda]: https://twitter.com/tyfkda
+
+### [Way of Rhea]
+
+[][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.
+Changes since the last update:
+
+- The circuit level has been reworked:
+ it's now split into three different levels
+ and the puzzles are better tutorialized, and there are more of them.
+- A tiny amount of screen shake was added to the game.
+- Work has begun on a couple of new levels for the ice biome
+ In this biome, you have to learn to predict the behavior of the
+ crabs to solve the puzzles.
+
+ 
+
+Follow [@AnthropicSt] or [@masonremaley] on Twitter or
+[sign up for the mailing list][anthropic-newsletter] for updates.
+
+[Way of Rhea]: https://store.steampowered.com/app/1110620/Way_of_Rhea/
+[@AnthropicSt]: https://twitter.com/anthropicst
+[@masonremaley]: https://twitter.com/masonremaley
+[anthropic-newsletter]: https://www.anthropicstudios.com/newsletter/signup/tech
+
+### [Citybound]
+
+
+
+[Citybound] is a city simulation and city building game. This month,
+[Anselm Eickhoff] published [a small demo] of his domain specific language
+for procedural architecture, which is interpreted by Rust and now supports
+hot-code reload of building rules in the running game.
+
+[Citybound]: https://aeplay.org/citybound
+[Anselm Eickhoff]: https://twitter.com/ae_play
+[a small demo]: https://reddit.com/r/Citybound/comments/j2xg2s/sneak_peek_custom_procedural_architecture
+
+### Recall Singularity
+
+
+_A ray-traced selection of modules_
+
+The Recall Singularity is a game about designing autonomous factory ships and
+stations created by [Tom Leys].
+
+This month a new devlog was posted:
+["Recall Singularity in Sep 2020"][recall-s-sept-text].
+You can also check out a [status update and progress video here][recall-s-sept-video].
+
+Updates include:
+
+- Improving the robustness of the game core and networking.
+- Ship sections and standalone ships.
+- Different synchronization algorithms for different game modes.
+
+[Tom Leys]: https://twitter.com/RecallSingular1
+[recall-s-sept-text]: https://medium.com/@recallsingularity/recall-singularity-in-sep-2020-e2f33a85fd7c
+[recall-s-sept-video]: https://youtube.com/watch?v=kUIiU9LtOFY
+
+### [Mimas]
+
+
+
+[Mimas] is a WIP voxel engine and game, inspired by Minetest and Minecraft.
+It's been in development for almost 2 years and has recently seen a public
+prototype release 0.4.0.
+
+Several of the current features:
+
+- Procedural map generation with hilly landscape, trees, flowers, water, and caves
+- Map manipulation (removal/addition of blocks)
+- Crafting
+- Chests
+- Textures (taken from the Minetest project, under CC-BY-SA license)
+- Tools
+- QUIC based network protocol with SRP based authentication
+- Multiplayer: chat, (hardcoded) avatars
+- Ability to add custom content (e.g. blocks) using a toml format
+
+Imgur screenshot [gallery].
+
+[Mimas]: https://github.com/est31/mimas
+[gallery]: https://imgur.com/a/vvo7len
+
+### [Nox Futura (Rust Edition)][noxfutura]
+
+
+
+[Nox Futura][noxfutura] by [@blackfuture]
+is an open-source long-term passion project,
+a Dwarf-Fortress and RimWorld inspired base building game.
+
+Some of the [recent updates][noxfutura-reddit]:
+
+- The WGPU-based rendered is undergoing a major restructure.
+- The game was updated to Legion 0.3 - it required rewriting a lot of code,
+ but the new syntax sugar is a joy to use, and the backend is even faster now.
+- The Greedy Voxel algorithm was significantly improved.
+- OBJ models are now supported - useful for things like tree/vegetation geometry,
+ which can now use a stylized low-poly graphic without the added weight
+ of a bunch of cubes.
+- Palette-based rendering - the output system is now constrained
+ to a 256 color palette, mostly to play with stylized 3D rendering.
+- New format for data files that combines multiple RON objects in one place.
+
+[noxfutura]: https://github.com/thebracket/noxfutura
+[thebracket]: https://bracketproductions.com
+[noxfutura-reddit]: https://reddit.com/r/roguelikedev/comments/ivgdnj/sharing_saturday_329/g5t5lo0
+
+### pGLOWrpg
+
+
+
+The [@pGLOWrpg] (Procedurally Generated Living Open World RPG) is a long-term
+project in development by [@Roal_Yr], which aims to be a text-based game with
+maximum portability and accessibility and focus on interactions and emergent
+narrative.
+
+The pGLOWrpg meets its first official anniversary on September the 15th
+and goes public at [pGLOWrpg repo]!
+
+For the past month the main focus of the development was on:
+
+- Improving the UI.
+- Major refactoring.
+- Unification of I/O means.
+- Making things ready for publication.
+
+Main features of the reported version are:
+
+- Ability to generate one or many worlds from customizable presets.
+- Ability to have output in both raw (b/w .png) and colorized images.
+- Generated data is as follows: terrain, watermask, biomes, rivers, geological regions,
+ rainfall, and temperature.
+
+For main feature reports and dev blogs follow [@pGLOWrpg] on Twitter.
+
+[@Roal_Yr]: https://twitter.com/Roal_Yr
+[@pGLOWrpg]: https://twitter.com/pglowrpg
+[pGLOWrpg repo]: https://github.com/roalyr/pglowrpg
+
+### Oh no, Lava!
+
+
+
+"Oh no, Lava!" by [@captainfleppo] is the working title
+of a platforming game which take inspiration
+from an old iOS game created back in 2014. The game is running with [Bevy][bevy]
+as its core. The gameplay isn't there yet, but you as a player need to jump on
+furnitures, collect coins, and fight lava/fire based enemies with your water gun.
+
+[@captainfleppo]: https://twitter.com/captainfleppo
+[bevy]: https://bevyengine.org
+
+### [Zemeroth][zemeroth]
+
+
+_Be careful with chained reaction attacks!_
+
+[Zemeroth][zemeroth] by [@ozkriff] is a minimalistic 2D turn-based tactical game.
+Some of the recent updates:
+
+- The game now [stores simulated text lifetimes][zemeroth-text] for each tile
+ during the event processing to reduce popup text overlapping.
+- Push bombs are more useful now: they still don't cause direct damage,
+ but [now they can push away other bombs too][zemeroth-bombs].
+- [All the assets sources are merged into the main repository][zemeroth-assets]
+ and the project now uses [resvg] instead of console Inkscape
+ for svg->png rendering.
+- Abilities [don't have parameters now][zemeroth-abilities].
+- Dynamic depth-sorting [was implemented][zemeroth-zsort].
+- The work on adding sounds continues:
+ check out the [video of the first results][zemeroth-audio] 🔊.
+- Smaller UI improvements and bugfixes.
+
+[zemeroth]: https://github.com/ozkriff/zemeroth
+[@ozkriff]: https://twitter.com/ozkriff
+[zemeroth-bombs]: https://twitter.com/ozkriff/status/1304458740758970368
+[zemeroth-abilities]: https://twitter.com/ozkriff/status/1300817277714075648
+[zemeroth-assets]: https://twitter.com/ozkriff/status/1297239743269412864
+[zemeroth-zsort]: https://twitter.com/ozkriff/status/1310603877507620865
+[zemeroth-text]: https://twitter.com/ozkriff/status/1306651821314891776
+[zemeroth-audio]: https://twitter.com/ozkriff/status/1303736184045174785
+[resvg]: https://lib.rs/resvg
+
+### [Akigi][akigi]
+
+[Akigi][akigi] is a WIP online multiplayer game.
+In September, lots of work was done on terrain sculpting systems. Another tool
+was added, allowing material painting onto the terrain. Along with the scenery
+placement tool, there are now three separate tools in the editor's arsenal.
+
+Full devlogs:
+[#083](https://devjournal.akigi.com/september-2020/083-2020-09-06.html),
+[#084](https://devjournal.akigi.com/september-2020/084-2020-09-13.html),
+[#085](https://devjournal.akigi.com/september-2020/085-2020-09-20.html),
+[#086](https://devjournal.akigi.com/september-2020/086-2020-09-27.html).
+
+[akigi]: https://akigi.com
+
+### [BUGOUT]
+
+
+_Playing KataGo AI in 9x9_
+
+[BUGOUT] is a web application which allows you to play Go/Baduk/Weiqi
+against a leading AI ([KataGo]).
+It provides a multiplayer mode so that you can play other humans,
+either by joining a public queue or sharing a private URL to your friend.
+
+The user interface is lifted from [Sabaki].
+
+The initial installation's AI is powered by an energy-efficient
+[dev board][nv-devboard].
+
+BUGOUT is marching actively toward production, at which point the
+team will publish the website address and invite users.
+The author anticipates being finished with the production release
+prior to Jan 1, 2021.
+
+[BUGOUT]: https://github.com/Terkwood/BUGOUT
+[KataGo]: https://github.com/lightvector/KataGo
+[Sabaki]: https://github.com/SabakiHQ/Sabaki
+[nv-devboard]: https://developer.nvidia.com/embedded/jetson-nano-developer-kit
+
+### [Tetris Bane][tetris-bane]
+
+
+
+[Tetris Bane][tetris-bane] is an open-source Tetris clone
+that mixes things up with multiple game modes.
+There's a hard bane mode, classic mode for the purists,
+ultra hard metal mode, and a chill mode.
+Tetris Bane challenges you to get more then 2 lines in metal mode.
+
+You can [download][tetris-bane] the game for Windows, macOS and Linux.
+
+The game is written using [rust-sdl2].
+[The source code is available here.][tetris-bane-src]
+
+[tetris-bane]: https://andrew-jones.itch.io/tetris-bane
+[tetris-bane-src]: https://github.com/andii1701/tetris-bane
+[rust-sdl2]: https://github.com/Rust-SDL2/rust-sdl2
+
+### Project YAWC
+
+
+
+Project YAWC is an in-progress Advance-Wars style strategy game being developed
+by junkmail using [ggez] as a framework. The game is currently in a closed alpha
+state with working netplay. September saw the release of version A2, including
+revamped netcode and the full core set of units.
+
+[ggez]: https://ggez.rs/
+
+### [space_shooter_rs]
+
+
+
+[space_shooter_rs] is a 2D shooter game made with the [Amethyst] game engine.
+It is inspired by games like Raiden and the Binding of Isaac.
+
+In September, [Micah Tigley] joined the project and has been collaborating with
+[Carlo Supina] to refactor a significant chunk of the codebase. Lots of work has
+been on collision detection, combat, and movement. This will allow for easier
+future development.
+
+Both developers wrote about the work and their experiences developing space_shooter_rs:
+
+- [How to Revive a Dead Project][carlo-blog-post]
+- [Collaborating on Amethyst showcase project: space_shooter_rs][micah-blog-post]
+
+[space_shooter_rs]: https://github.com/amethyst/space_shooter_rs
+[Amethyst]: https://amethyst.rs
+[Carlo Supina]: https://twitter.com/carlosupina
+[Micah Tigley]: https://twitter.com/micah_tigley
+[carlo-blog-post]: https://micronote.tech/2020/10/How-to-Revive-a-Dead-Project
+[micah-blog-post]: https://mtigley.dev/posts/contributing_to_spaceshooter_rs
+
+## Learning Material Updates
+
+### [So You Want to Live-Reload Rust][fasterthanlime-post]
+
+
+_Cool bear_
+
+[@fasterthanlime] published a giant blog post
+["So you want to live-reload Rust"][fasterthanlime-post]
+\- a very deep technical dive into reloading a dylib
+and a bunch of related issues.
+Lots of interesting insights for folks who want
+to better understand nuances of hot reloading.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/j0ajdy/so_you_want_to_livereload_rust)_
+
+[fasterthanlime-post]: https://fasterthanli.me/articles/so-you-want-to-live-reload-rust
+[@fasterthanlime]: https://fasterthanli.me/
+
+### [rust-wasm-hotreload]
+
+[rust-wasm-hotreload] by [@ShekoHex] is a PoC of using WebAssemply
+as a hot-reloadable code logic at runtime without restarting the host process.
+[Check out a video demo here][rust-wasm-hotreload-video].
+
+[@ShekoHex]: https://twitter.com/ShekoHex
+[rust-wasm-hotreload]: https://github.com/shekohex/rust-wasm-hotreload
+[rust-wasm-hotreload-video]: https://twitter.com/ShekoHex/status/1302973994417651714
+
+### [Learn WGPU][learn-wgpu]
+
+This month [@sothr] released another chapter
+of the ["Learn WGPU"][learn-wgpu] tutorial:
+["Threading WGPU Resource Loading with Rayon"][learn-wgpu-threading].
+
+Also, the whole tutorial [was upgraded to WGPU v0.6][learn-wgpu-upgrade].
+
+[@sothr]: https://github.com/sothr
+[learn-wgpu]: https://sotrh.github.io/learn-wgpu
+[learn-wgpu-threading]: https://sotrh.github.io/learn-wgpu/intermediate/tutorial13-threading
+[learn-wgpu-upgrade]: https://sotrh.github.io/learn-wgpu/news/#_0-6
+
+### [Is It Easy to Draw a Line?][Lines]
+
+
+_Example of result chains._
+
+A small note by [@VladZhukov0] about drawing lines and chains
+with signed distance fields.
+The resulted lines are nice looking on edges and have rounded corners.
+Chains for this article are assumed to be opaque.
+
+Check out the [online demo](https://pum-purum-pum-pum.github.io/lines/)
+and its [source code](https://github.com/pum-purum-pum-pum/Lines).
+
+[Lines]: https://vladjuckov.github.io/hqlines/
+[@VladZhukov0]: https://twitter.com/VladZhukov0
+
+### [OpenGL Preprocessor for Rust]
+
+With the full power of Cargo build scripts and [Tera], you can create an advanced
+GLSL preprocessor which can generate code conditionally, in loops, and even
+inherit code from other templates.
+
+
+
+Writing plain GLSL code is uncomfortable, code is quite often is duplicated, libraries
+aren't something natural for GLSL (means you can't out of the box do #include "library.glsl").
+The last point is especially problematic if some constants actually originate in
+your game logic (like the number of player types). Updating these values manually
+in your shader code is repetitive and prone to both error and simple forgetfulness.
+It's really helpful to build some kind of preprocessor for your GLSL code,
+which can include other files, so you can organize your code into manageable chunks.
+With the power of [Tera], it's now easy to accomplish.
+Because Rust is also often used for web projects, which need a lot of templated
+web-pages preprocessing, we can borrow such technology for our needs,
+combine it with cargo build scripts and create a compile-time preprocessing tool.
+
+[tera]: https://tera.netlify.app
+[OpenGL Preprocessor for Rust]: https://codecrash.me/an-opengl-preprocessor-for-rust
+
+### Rust, Gamedev, ECS, and Bevy
+
+
+
+[@hugopeixoto] released a couple of blog posts on ECS and Bevy,
+including a tutorial on how to get started.
+
+- The [first part][hugopeixoto-p1] gives us an in depth overview of what ECS.
+ It starts with pseudocode for an object oriented approach
+ and goes through several iterations until we get to the ECS paradigm.
+
+- The [second part][hugopeixoto-p2] is a tutorial on how to use [bevy],
+ a data driven game engine built in Rust.
+ It goes over the basic features of the engine,
+ using the example presented in the first part.
+
+[@hugopeixoto]: https://twitter.com/hugopeixoto
+[hugopeixoto-p1]: https://hugopeixoto.net/articles/rust-gamedev-ecs-bevy.html
+[hugopeixoto-p2]: https://hugopeixoto.net/articles/rust-gamedev-ecs-bevy-p2.html
+[bevy]: https://bevyengine.org
+
+### [Flappy Bird in Bevy][bevy-flappy-video]
+
+[][bevy-flappy-video]
+
+[@TantanDev] is back with [another video][bevy-flappy-video]!
+In this one, they made a Flappy Bird clone using Bevy
+and shared their experience programming with it.
+
+The source code [can be found here][bevy-flappy-src].
+
+[@TantanDev]: https://twitter.com/TantanDev
+[bevy-flappy-video]: https://youtube.com/watch?v=Qjc0V58lB7A
+[bevy-flappy-src]: https://github.com/TanTanDev/flappy_bevy
+
+### [Real-Time Global Illumination in WGPU][gi-post]
+
+[][gi-post]
+_Infinite light bounces in Cornell Box_
+
+[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
+is an excellent choice even for advanced computer graphics applications.
+
+The technique provides real time global illumination for static lambertian
+geometry, and is the implementation of the 2017 paper ["Real-time Global
+Illumination by Precomputed Local Reconstruction
+from Sparse Radiance Probes"](https://arisilvennoinen.github.io/Projects/RTGI/index.html),
+which proposes a spherical harmonics-based approach to solve the rendering equation
+in real time.
+
+In practice, this means that the expensive light transport calculations are performed
+in a precomputation step, which relies on - among others - [embree-rs],
+and [nalgebra] to produce a compressed
+representation of the scene that is then used for lighting reconstruction at runtime.
+
+[gi-post]: https://reddit.com/r/rust_gamedev/comments/ixocl2/real_time_diffuse_global_illumination
+[DI2edd]: https://reddit.com/u/DI2edd
+[embree-rs]: https://github.com/Twinklebear/embree-rs
+[nalgebra]: https://github.com/dimforge/nalgebra
+
+## Library & Tooling Updates
+
+### [legion v0.3][legion-0-3]
+
+
+
+[Legion][legion] is among Rust's fastest and most powerful ECS libraries.
+After months in development, v0.3 has finally been released to crates.io.
+This is a huge release amounting to a near total rewrite of the library
+and a major step towards a stable 1.0 release.
+
+[Check out the v0.3 announcement post][legion-0-3]
+for an overview of the new API and all the updates.
+
+The project's repo has also been moved to the Amethyst org
+to reflect its close collaboration with the Amethyst community.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/io6evk/legion_v03)_
+
+[legion]: https://github.com/amethyst/legion
+[legion-0-3]: https://amethyst.rs/posts/legion-ecs-v0.3
+
+### [Thunderdome]
+
+[Thunderdome] is a ~~gladitorial~~ generational arena library inspired by
+[generational-arena], [slotmap], and [slab]. It provides constant time
+insertion, lookup, and removal via small (8 byte) keys that stay 8 bytes when
+wrapped in `Option`.
+
+Data structures like Thunderdome's `Arena` store values and return keys that can
+be later used to access those values. These keys are stable across removals and
+have a generation counter to solve the [ABA Problem].
+
+```rust
+let mut arena = Arena::new();
+
+let foo = arena.insert("Foo");
+let bar = arena.insert("Bar");
+
+assert_eq!(arena[foo], "Foo");
+assert_eq!(arena[bar], "Bar");
+
+arena[bar] = "Replaced";
+assert_eq!(arena[bar], "Replaced");
+
+let foo_value = arena.remove(foo);
+assert_eq!(foo_value, Some("Foo"));
+
+// The slot previously used by foo will be reused for baz.
+let baz = arena.insert("Baz");
+assert_eq!(arena[baz], "Baz");
+
+// foo is no longer a valid key.
+assert_eq!(arena.get(foo), None);
+```
+
+_Discussions:
+[twitter](https://twitter.com/LPGhatguy/status/1303375906493276160)_
+
+[Thunderdome]: https://github.com/LPGhatguy/thunderdome
+[generational-arena]: https://crates.io/crates/generational-arena
+[slotmap]: https://crates.io/crates/slotmap
+[slab]: https://crates.io/crates/slab
+[ABA Problem]: https://en.wikipedia.org/wiki/ABA_problem
+
+### [Fontdue]
+
+[Fontdue] is a simple, no_std, pure Rust, TrueType & OpenType
+font rasterizer and layout tool.
+It strives to make interacting with fonts as fast as possible,
+and currently has the lowest end to end latency for a font rasterizer.
+
+Fontdue depends on [ttf-parser] for parsing fonts,
+which supports a wide range of TrueType and OpenType features.
+
+A non-goal of this library is to be allocation free and have a fast,
+"zero cost" initial load.
+Fontdue does make allocations and depends on the alloc crate.
+Fonts are fully parsed on creation and relevant information is stored
+in a more convenient to access format.
+Unlike other font libraries, the font structures have no lifetime dependencies
+since it allocates its own space.
+
+Project's roadmap:
+
+- v1.0: fontdue is designed to be a replacement for
+ rusttype, ab_glyph, parts of glyph_brush, and glyph_brush_layout.
+ This is a class of font libraries that don't tackle shaping.
+- v2.0: Shaping - the complex layout of text such as Arabic and Devanagari
+ \- will be added.
+ There are two potential pure Rust libraries (allsorts or rustybuzz)
+ that are candidates for providing a shaping backend to Fontdue,
+ but are relatively immature right now.
+
+_Discussions: [/r/rust](https://reddit.com/r/rust/comments/ilnd41/fontdue)_
+
+[Fontdue]: https://github.com/mooman219/fontdue
+[ttf-parser]: https://github.com/RazrFalcon/ttf-parser
+
+### [ultraviolet v0.6][ultraviolet-v0-6]
+
+[ultraviolet] by [@fu5ha] is a crate for computer-graphics
+and games-related linear algebra, but _fast_,
+both in terms of productivity and in terms of runtime performance.
+
+This month [ultraviolet v0.6][ultraviolet-v0-6] was released.
+Updates include:
+
+- Support for 256-bit wide AVX vectors and instructions
+ as well as 128-bit wide SSE instructions which were already supported.
+- Support for f64/double precision floats under the f64 feature,
+ including f64x2 and f64x4 SIMD-accelerated types.
+- Support for [mint] for most scalar types.
+- Lots of smaller API and performance improvements.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/ir24mp/announcing_ultraviolet_06)_
+
+[ultraviolet]: https://crates.io/crates/ultraviolet
+[ultraviolet-v0-6]: https://fusha.moe/blog/posts/ultraviolet-0.6
+[@fu5ha]: https://twitter.com/fu5ha
+[mint]: https://github.com/kvark/mint
+
+### [This Month in Mun][mun-september]
+
+[][Mun]
+
+[Mun] is a scripting language for gamedev focused on quick iteration times
+that is written in Rust.
+
+[September updates][mun-september] include:
+
+- on-going work for multi-file projects;
+- build pipeline improvements;
+- bug fixes in the Mun compiler and C++ bindings;
+- a lot of refactors and quality of life improvements.
+
+[Mun]: https://mun-lang.org
+[mun-september]: https://mun-lang.org/blog/2020/10/01/this-month-september/
+
+### [audir]
+
+[audir] is a low level audio library supporting Windows (WASAPI), Linux (Pulse)
+and Android (OpenSLES & AAudio).
+
+It aims at providing a minimal and mostly unsafe but feature-rich API on top of
+common audio backends with focus on gaming applications. The initial release
+version 0.1.0 provides basic recording and playback support for all available
+backends, including a small music player example!
+
+Currently looking into coupling with [dasp] for dsp audio graphs to provide
+a higher level entry point.
+
+[audir]: https://github.com/norse-rs/audir
+[dasp]: https://github.com/RustAudio/dasp
+
+### [Crevice]
+
+[Crevice] is a library that helps define GLSL-compatible (std140) structs for
+use in uniform and storage buffers. It uses new `const fn` capabilities
+stabilized in [Rust 1.46.0] to align types with explicitly zeroed padding.
+
+Crevice depends heavily on [mint] to support almost any Rust math library. It
+also contains helpers for safely sizing and writing buffers, making dynamic
+buffer layout a breeze.
+
+```rust
+#[derive(AsStd140)]
+struct MainUniform {
+ orientation: mint::ColumnMatrix3,
+ position: mint::Vector3,
+ scale: f32,
+}
+
+let value = MainUniform {
+ orientation: cgmath::Matrix3::identity().into(),
+ position: [1.0, 2.0, 3.0].into(),
+ scale: 4.0,
+};
+
+upload_data_to_gpu(value.as_std140().as_bytes());
+```
+
+_Discussions:
+[twitter](https://twitter.com/LPGhatguy/status/1308499131212599296)_
+
+[Crevice]: https://github.com/LPGhatguy/crevice
+[Rust 1.46.0]: https://blog.rust-lang.org/2020/08/27/Rust-1.46.0.html
+[mint]: https://github.com/kvark/mint
+
+### [FemtoVG]
+
+
+
+[FemtoVG] is a 2D canvas API in Rust, based on [nanovg].
+
+Currently, FemtoVG uses OpenGL as a rendering backend. A Metal backend is 95%
+done, and a wgpu backend is on the roadmap. The project is definitely looking
+for contributors.
+
+Unlike NanoVG, FemtoVG has full text-shaping support thanks to harfbuzz.
+
+FemtoVG, just like the original NanoVG, is based on the _stencil-then-cover_
+approach presented in [GPU-accelerated Path Rendering][gpupathrender.pdf].
+
+Join the [Discord channel](https://discord.gg/V69VdVu)
+or follow [FemtoVG on twitter](https://twitter.com/femtovg).
+
+[FemtoVG]: https://github.com/femtovg/femtovg
+[nanovg]: https://github.com/memononen/nanovg
+[gpupathrender.pdf]: https://github.com/femtovg/femtovg/blob/master/assets/gpupathrender.pdf
+
+### [gfx-rs] and [gfx-portability]
+
+
+
+[gfx-portability] is a Vulkan portability implementation based on [gfx-rs].
+It's basically a drop-in implementation of Vulkan on top of Metal and D3D12,
+useful on platforms that don't have native Vulkan support, or have buggy drivers.
+
+It released version [0.8.1](https://github.com/gfx-rs/portability/releases/tag/0.8.1)
+with official support for the new [KHR portability extension][khr-portability],
+as well as a few other extensions, plus a number of correctness fixes.
+
+gfx-rs team asks Rust users of Vulkano, Ash, and other Vulkan-only wrappers to try
+out the gfx-portability as a solution on macOS and relevant Windows 10 platforms.
+
+In [gfx-rs] itself, the DX12 backend, and the descriptor indexing feature support
+got improved. There has been a push to get DX11 backend in a solid shape,
+and it can now run [vange-rs] pretty well 🎉.
+
+[gfx-rs]: https://github.com/gfx-rs/gfx
+[gfx-portability]: https://github.com/gfx-rs/portability
+[khr-portability]: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_portability_subset.html
+[vange-rs]: https://github.com/kvark/vange-rs
+
+### [Riddle]
+
+[Riddle] is a Rust media library in the vein of SDL,
+building as far as possible on the most active/standard Rust libraries
+(winit, wgpu, image, etc). Riddle is deliberately not an engine, or a framework.
+It is a library devoted to exposing media related features in a unified way while
+avoiding prescribing program structure. It provides abstractions over windowing,
+input, audio, image loading/manipulation and provides a basic wgpu based 2D
+renderer.
+The [docs][riddle-docs] contain runnable examples for most methods and types.
+
+The goal is to provide a stable foundation, resilient to developments in the Rust
+gamedev ecosystem, on which games, custom engines, and other media applications can
+be built.
+
+_Discussions:
+[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/j0xa3s/riddle_010)_
+
+[Riddle]: https://github.com/vickles/riddle
+[riddle-docs]: https://vickles.github.io/riddle/0.1.0/riddle
+
+### [Bracket-Lib]
+
+[bracket-lib] (previously `rltk_rs`) by [@blackfuture]
+is a Rust implementation of [C++ Roguelike Toolkit][rltk-cpp].
+
+Bracket-lib is going through a stability pass, focusing on freezing the API.
+It will be featured in the author's upcoming book:
+*Hands-on Rust: Effective Learning through 2D Game Development and Play*.
+The book should be going into early access/beta in time for the next newsletter.
+
+[bracket-lib]: https://github.com/thebracket/bracket-lib
+[@blackfuture]: https://patreon.com/blackfuture
+[rltk-cpp]: https://github.com/thebracket/rltk
+
+### [macroquad]
+
+[][sponsors]
+_Games built with miniquad/macroquad._
+
+[macroquad] by [@fedor_games] is a cross-platform
+(Windows/Linux/macOS/Android/iOS/WASM)
+game framework build on top of [miniquad].
+
+This month 0.3 preview was released, featuring:
+
+- Improved [documentation][macroquad-doc] on docs.rs.
+- Screen reading shaders and a [tutorial about them][article-screen-reading].
+- Updated "shadertoy" - small interactive GLSL playground - example.
+ Check out the [web demo][shadertoy-web] and its [source code][shadertoy-src].
+
+ [][shadertoy-web]
+
+Also, [@not-fl3] (the main developer of all current \*quad projects)
+has been added to the GitHub Sponsors.
+Check out the project's story, vision, and roadmap
+on the new [sponsors page][sponsors]!
+
+[macroquad]: https://github.com/not-fl3/macroquad
+[miniquad]: https://github.com/not-fl3/miniquad
+[article-screen-reading]: https://not-fl3.github.io/platformer-book/screen-reading.html
+[shadertoy-web]: https://not-fl3.github.io/miniquad-samples/shadertoy.html
+[shadertoy-src]: https://github.com/not-fl3/macroquad/blob/master/examples/shadertoy.rs
+[macroquad-doc]: https://docs.rs/macroquad/0.3.0-alpha.0/macroquad/index.html
+[@fedor_games]: https://twitter.com/fedor_games
+[@not-fl3]: https://github.com/not-fl3
+[sponsors]: https://github.com/sponsors/not-fl3
+
+### [Tetra]
+
+[Tetra] is a simple 2D game framework, inspired by XNA and Raylib. This month,
+version [0.5][tetra-05] was released, featuring:
+
+- Cargo feature flags, allowing you to remove unused functionality and
+ shrink your build
+- Relative mouse events and infinite mouse movement (allowing for FPS-style
+ control schemes)
+- Extra methods for getting and setting the state of a playing sound
+
+For full details and a list of breaking changes, see the [changelog][tetra-changelog].
+
+Additionally, this month [puppetmaster] released [tetrapack], a set of useful
+extensions for Tetra. This includes:
+
+- Helpful timer types
+- Looping background music
+- Custom mouse cursors
+- Input utility functions
+- Tilemaps and tile animations
+
+[tetra]: https://github.com/17cupsofcoffee/tetra
+[tetra-05]: https://twitter.com/17cupsofcoffee/status/1301210538299609088
+[tetra-changelog]: https://github.com/17cupsofcoffee/tetra/blob/main/CHANGELOG.md
+[puppetmaster]: https://github.com/puppetmaster-
+[tetrapack]: https://github.com/puppetmaster-/tetrapack
+
+### [Bevy Engine v0.2][bevy-0-2]
+
+[][bevy]
+
+[Bevy][bevy] is a refreshingly simple data-driven game engine built in Rust.
+It is [free and open source][bevy-repo] forever!
+
+This month, thanks to 87 contributors, 174 pull requests, and their
+[generous sponsors][bevy-sponsors], Bevy 0.2 was released. You can view the
+[full Bevy 0.2 announcement here][bevy-0-2]. Here are some highlights:
+
+- Async Task System: Bevy now has a brand new async-friendly task system,
+ which enables the creation of context-specific task pools. For example, you might
+ have separate pools for compute, IO, networking, etc. This also provides the
+ flexibility to load balance work appropriately according to work type and/or priority.
+ This new task system completely replaces Rayon and the cpu usage wins were huge!
+- Initial Web Platform Support: (A subset of) Bevy now runs on the web using
+ WebAssembly/WASM! Specifically, Bevy apps can run Bevy ECS schedules, react to
+ input events, create an empty canvas (using winit), and a few other things. This
+ is a huge first step, but it is important to call out that there are still a
+ number of missing pieces, such as 2D/3D rendering, multi-threading, and sound.
+- Parallel Queries: Systems that use queries already run in parallel,
+ but before this change the queries themselves could not be iterated in parallel.
+ Bevy 0.2 adds the ability to easily iterate queries in parallel, which builds on
+ top of the new Async Task System.
+- Transform System Rewrite: Bevy's old transform system used separate
+ `Translation`, `Rotation`, and `Scale` components as the "source of truth",
+ which were then synced to a `LocalTransform` component after each update. There
+ are Good Reasons™ to use this approach, but it created a "lag" between the
+ calculated LocalTransform and the source components and dataflow between components
+ is hard to reason about. This problem was resolved by making a newer, simpler
+ transform system that uses a consolidated `Transform` type.
+- Joystick/Gamepad Input: The Bevy Input plugin now has cross-platform support
+ for most controllers thanks to the gilrs library!
+- Bevy ECS Performance Improvements: generational entity IDs,
+ read-only queries, lock-free world APIs, direct component lookup.
+
+Community plugin updates:
+
+- [bevy_rapier](https://github.com/dimforge/bevy_rapier):
+ Rapier Physics' official Bevy plugin was updated to support Bevy 0.2.
+- [bevy_ninepatch](https://crates.io/crates/bevy_ninepatch):
+ Display 9-Patch UI elements, where you can specify how
+ different parts of a PNG should grow.
+- [bevy_mod_picking](https://github.com/aevyrie/bevy_mod_picking): 3d cursor
+ picking and highlighting.
+- [bevy_contrib_colors](https://crates.io/crates/bevy_contrib_colors):
+ A simple color library.
+- [bevy_input_map](https://crates.io/crates/bevy_prototype_input_map):
+ Converts user inputs from different input hardware into game specific actions.
+ Ex: keyboard "Space" or joystick "A" can be mapped to a "Jump" Action.
+- [bevy_prototype_lyon](https://github.com/Nilirad/bevy_prototype_lyon):
+ Draw 2D shapes, like triangles, circles, and beziers.
+- [bevy_contrib_inspector](https://github.com/jakobhellermann/bevy-contrib-inspector):
+ Visually edit fields of your bevy resources in a browser or native view.
+
+_Discussions:
+[/r/rust](https://reddit.com/r/rust/comments/iw1yyp/bevy_02),
+[hacker news](https://news.ycombinator.com/item?id=24530698),
+[twitter](https://twitter.com/cart_cart/status/1307445918535315456)_
+
+[bevy]: https://bevyengine.org
+[bevy-repo]: https://github.com/bevyengine/bevy
+[bevy-0-2]: https://bevyengine.org/news/bevy-0-2
+[bevy-sponsors]: https://github.com/sponsors/cart
+
+### [rg3d][rg3d]
+
+[][rg3d_twitter]
+_Click to watch a [video demo of one of the new examples][rg3d_twit]._
+
+[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:
+
+- Render to texture - it is possible to render scenes into textures.
+- Added support for scenes made in [rusty-editor].
+- Added sprite graph node.
+- Added simple lightmapper (still WIP).
+- Added new UI widgets and features:
+ - Message box - classic message box with different combinations of buttons.
+ - Wrap panel - arranges its children by rows or columns with wrapping.
+ - File browser - a browser for file system.
+ - Color picker - classic HSV+RGB+Alpha color picker.
+ - "Bring into view" for scroll panel.
+ - Replaced font rasterizer by fontdue.
+ - Improved hotkeys in text box.
+- Improved performance and documentation.
+
+Join the [rg3d's Discord channel][rg3d_discord]
+or follow [Dmitry Stepanov on twitter][rg3d_twitter].
+
+[rg3d]: https://github.com/mrDIMAS/rg3d
+[rg3d_twit]: https://twitter.com/DmitryS36934349/status/1312836831390687232
+[rg3d_discord]: https://discord.gg/xENF5Uh
+[rg3d_twitter]: https://twitter.com/DmitryS36934349
+
+### [rusty-editor]
+
+
+
+[rusty-editor] is a scene editor for the [rg3d] engine.
+Some of the recently added features:
+
+- asset browser + asset previewer,
+- multiselection,
+- improved properties editor,
+- lots of other small improvements and fixes.
+
+[rusty-editor]: https://github.com/mrDIMAS/rusty-editor
+
+### [godot-rust][godot-rust-site] v0.9
+
+
+
+[godot-rust][godot-rust-site] provides high-level Rust bindings
+to the [Godot game engine][godot].
+
+This month [v0.9 was released][godot-rust-v0-9].
+Besides lots of quality-of-life improvements, this update brings a massive
+redesign of the API in order to solve long-standing soundness problems.
+As there're numerous breaking changes,
+a [chapter about migration from 0.8][godot-rust-migration] was added
+to the user guide.
+
+[godot]: http://godotengine.org
+[godot-rust-site]: https://godot-rust.github.io/
+[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
+
+- [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);
+ - [#93 "Consider creating a game math library benchmark for the working group"](https://github.com/rust-gamedev/wg/issues/93);
+- [rust-gamedev/ecs_bench_suite](https://github.com/rust-gamedev/ecs_bench_suite):
+ - [#13 "How results will be updated?"](https://github.com/rust-gamedev/ecs_bench_suite/issues/13);
+
+## Requests for Contribution
+
+
+
+- [Embark's open issues][embark-open-issues] ([embark.rs]).
+- [winit's "Good first issue" and “help wanted” issues][winit-issues].
+- [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].
+
+[embark.rs]: https://embark.rs
+[embark-open-issues]: https://github.com/search?q=user:EmbarkStudios+state:open
+[winit-issues]: https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22status%3A+help+wanted%22+label%3A%22Good+first+issue%22
+[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/dabreegster/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!
+
+Subscribe to [@rust_gamedev on Twitter][@rust_gamedev]
+or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!
+
+**Discussions of this post**:
+[/r/rust](https://reddit.com/r/rust/comments/j722i5/this_month_in_rust_gamedev_14_september_2020),
+[twitter](https://twitter.com/rust_gamedev/status/1313986312156966913).
+
+[/r/rust_gamedev]: https://reddit.com/r/rust_gamedev
+[@rust_gamedev]: https://twitter.com/rust_gamedev
diff --git a/content/posts/newsletter-014/legion_violin.png b/content/posts/newsletter-014/legion_violin.png
new file mode 100644
index 000000000..cb9ac6870
Binary files /dev/null and b/content/posts/newsletter-014/legion_violin.png differ
diff --git a/content/posts/newsletter-014/lines_hexstrat.jpeg b/content/posts/newsletter-014/lines_hexstrat.jpeg
new file mode 100644
index 000000000..59aa93d1d
Binary files /dev/null and b/content/posts/newsletter-014/lines_hexstrat.jpeg differ
diff --git a/content/posts/newsletter-014/mimas.png b/content/posts/newsletter-014/mimas.png
new file mode 100644
index 000000000..bb89665dd
Binary files /dev/null and b/content/posts/newsletter-014/mimas.png differ
diff --git a/content/posts/newsletter-014/mun-logo.png b/content/posts/newsletter-014/mun-logo.png
new file mode 100644
index 000000000..02295dc77
Binary files /dev/null and b/content/posts/newsletter-014/mun-logo.png differ
diff --git a/content/posts/newsletter-014/noxfutura.jpeg b/content/posts/newsletter-014/noxfutura.jpeg
new file mode 100644
index 000000000..9efff8721
Binary files /dev/null and b/content/posts/newsletter-014/noxfutura.jpeg differ
diff --git a/content/posts/newsletter-014/ohnolava_troligtvis.gif b/content/posts/newsletter-014/ohnolava_troligtvis.gif
new file mode 100644
index 000000000..807a5c8cc
Binary files /dev/null and b/content/posts/newsletter-014/ohnolava_troligtvis.gif differ
diff --git a/content/posts/newsletter-014/opengl_preprocessor.png b/content/posts/newsletter-014/opengl_preprocessor.png
new file mode 100644
index 000000000..b50da403d
Binary files /dev/null and b/content/posts/newsletter-014/opengl_preprocessor.png differ
diff --git a/content/posts/newsletter-014/pglowrpg_banner.png b/content/posts/newsletter-014/pglowrpg_banner.png
new file mode 100644
index 000000000..f1330a4d5
Binary files /dev/null and b/content/posts/newsletter-014/pglowrpg_banner.png differ
diff --git a/content/posts/newsletter-014/project_yawc.png b/content/posts/newsletter-014/project_yawc.png
new file mode 100644
index 000000000..d14fd9e6d
Binary files /dev/null and b/content/posts/newsletter-014/project_yawc.png differ
diff --git a/content/posts/newsletter-014/quadgames.gif b/content/posts/newsletter-014/quadgames.gif
new file mode 100644
index 000000000..16be4a55a
Binary files /dev/null and b/content/posts/newsletter-014/quadgames.gif differ
diff --git a/content/posts/newsletter-014/recall_singularity.png b/content/posts/newsletter-014/recall_singularity.png
new file mode 100644
index 000000000..371069ecc
Binary files /dev/null and b/content/posts/newsletter-014/recall_singularity.png differ
diff --git a/content/posts/newsletter-014/rg3d.jpg b/content/posts/newsletter-014/rg3d.jpg
new file mode 100644
index 000000000..2a5a98d45
Binary files /dev/null and b/content/posts/newsletter-014/rg3d.jpg differ
diff --git a/content/posts/newsletter-014/rusty_editor.jpg b/content/posts/newsletter-014/rusty_editor.jpg
new file mode 100644
index 000000000..c3410d512
Binary files /dev/null and b/content/posts/newsletter-014/rusty_editor.jpg differ
diff --git a/content/posts/newsletter-014/shadertoy.gif b/content/posts/newsletter-014/shadertoy.gif
new file mode 100644
index 000000000..06f39564f
Binary files /dev/null and b/content/posts/newsletter-014/shadertoy.gif differ
diff --git a/content/posts/newsletter-014/space_shooter_rs.gif b/content/posts/newsletter-014/space_shooter_rs.gif
new file mode 100644
index 000000000..3c614370f
Binary files /dev/null and b/content/posts/newsletter-014/space_shooter_rs.gif differ
diff --git a/content/posts/newsletter-014/tantan_bevy.png b/content/posts/newsletter-014/tantan_bevy.png
new file mode 100644
index 000000000..0c0c0f32b
Binary files /dev/null and b/content/posts/newsletter-014/tantan_bevy.png differ
diff --git a/content/posts/newsletter-014/tetris-bane.png b/content/posts/newsletter-014/tetris-bane.png
new file mode 100644
index 000000000..caa648ffe
Binary files /dev/null and b/content/posts/newsletter-014/tetris-bane.png differ
diff --git a/content/posts/newsletter-014/veloren_night.png b/content/posts/newsletter-014/veloren_night.png
new file mode 100644
index 000000000..6a6b0e4aa
Binary files /dev/null and b/content/posts/newsletter-014/veloren_night.png differ
diff --git a/content/posts/newsletter-014/veloren_river.png b/content/posts/newsletter-014/veloren_river.png
new file mode 100644
index 000000000..5b2d8970f
Binary files /dev/null and b/content/posts/newsletter-014/veloren_river.png differ
diff --git a/content/posts/newsletter-014/way-of-rhea-header.jpg b/content/posts/newsletter-014/way-of-rhea-header.jpg
new file mode 100644
index 000000000..bac5f89e8
Binary files /dev/null and b/content/posts/newsletter-014/way-of-rhea-header.jpg differ
diff --git a/content/posts/newsletter-014/way-of-rhea-ice-biome-snowcrab.png b/content/posts/newsletter-014/way-of-rhea-ice-biome-snowcrab.png
new file mode 100644
index 000000000..6d1b3e32e
Binary files /dev/null and b/content/posts/newsletter-014/way-of-rhea-ice-biome-snowcrab.png differ
diff --git a/content/posts/newsletter-014/zemeroth_chain.gif b/content/posts/newsletter-014/zemeroth_chain.gif
new file mode 100644
index 000000000..81e5601b8
Binary files /dev/null and b/content/posts/newsletter-014/zemeroth_chain.gif differ
diff --git a/content/posts/newsletter-015/index.md b/content/posts/newsletter-015/index.md
new file mode 100644
index 000000000..1edad460f
--- /dev/null
+++ b/content/posts/newsletter-015/index.md
@@ -0,0 +1,112 @@
++++
+title = "This Month in Rust GameDev #15 - October 2020"
+date = 2020-11-03
+transparent = true
+draft = true
++++
+
+
+
+Welcome to the 15th 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)
+- [Library & Tooling Updates](#library-tooling-updates)
+- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github)
+- [Meeting Minutes](#meeting-minutes)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+- [Bonus](#bonus)
+
+
+
+## Game Updates
+
+## Learning Material Updates
+
+## Library & Tooling Updates
+
+## Popular Workgroup Issues in Github
+
+
+
+## Meeting Minutes
+
+
+
+[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
+
+## Requests for Contribution
+
+
+
+## Jobs
+
+
+
+## Bonus
+
+
+
+------
+
+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!
+
+
+
+[/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/newsletter-template.md b/newsletter-template.md
index 495038607..40cace3dd 100644
--- a/newsletter-template.md
+++ b/newsletter-template.md
@@ -6,30 +6,46 @@ draft = true
-Welcome to the {TODO}th issue of the Rust GameDev Workgroup’s
+Welcome to the {TODO}th 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
-## News and Blog Posts
+- [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)
+- [Meeting Minutes](#meeting-minutes)
+- [Requests for Contribution](#requests-for-contribution)
+- [Jobs](#jobs)
+- [Bonus](#bonus)
-### Other News
+## Game Updates
-
+## Learning Material Updates
+
+## Library & Tooling Updates
## Popular Workgroup Issues in Github
diff --git a/sass/_extra.scss b/sass/_extra.scss
index 8c5fa5bc7..7b68f1b9d 100644
--- a/sass/_extra.scss
+++ b/sass/_extra.scss
@@ -7,6 +7,11 @@ li {
margin: 15px 0;
}
+pre > code {
+ // To avoid grey background on code blocks.
+ background-color: inherit;
+}
+
.intro {
color: #ffffff;
background-color: $brand-color;
@@ -95,3 +100,12 @@ a.btn {
border-color: $brand-color;
}
}
+
+// 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 {
+ display: block;
+ text-align: center;
+ color: $grey-color;
+}