- Making Rust a first-class choice for game development
-
-
- The Rust game development working group's goals are to improve the experience of using Rust to make games, and to make it accessible even if you're not an experienced engine/graphics developer.
-
-
- Join us on
- Github
- or
- Discord,
- and help shape the future of game development in Rust!
-
-
- {%- if site.disqus.shortname -%}
- {%- include disqus_comments.html -%}
- {%- endif -%}
-
-
-
diff --git a/config.toml b/config.toml
new file mode 100644
index 000000000..0f0bb0a8d
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,17 @@
+title = "Rust Game Development Working Group"
+description = "Stay up to date with the progress and recent developments in the Rust Game Development Working Group."
+base_url = "https://rust-gamedev.github.io/"
+default_language = "en"
+compile_sass = true
+highlight_code = true
+generate_rss = true
+
+[extra]
+date_format = "%F"
+show_summaries = false
+
+[extra.social_links]
+twitter = "rust_gamedev"
+github = "rust-gamedev"
+discord = "j6QJsMd"
+rss = "RSS"
diff --git a/content/pages/_index.md b/content/pages/_index.md
new file mode 100644
index 000000000..0b49d669a
--- /dev/null
+++ b/content/pages/_index.md
@@ -0,0 +1,4 @@
++++
+redirect_to = "/"
+insert_anchor_links = "right"
++++
\ No newline at end of file
diff --git a/_posts/2019-08-18-introducing-the-rust-game-development-working-group.md b/content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md
similarity index 93%
rename from _posts/2019-08-18-introducing-the-rust-game-development-working-group.md
rename to content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md
index 4f8467e83..5e84f9cc7 100644
--- a/_posts/2019-08-18-introducing-the-rust-game-development-working-group.md
+++ b/content/posts/2019-08-18-introducing-the-rust-game-development-working-group.md
@@ -1,6 +1,7 @@
----
-title: Introducing the Rust Game Development Working Group
----
++++
+title = "Introducing the Rust Game Development Working Group"
+aliases = ["/2019/08/18/introducing-the-rust-game-development-working-group", "/2019/08/18/introducing-the-rust-game-development-working-group.html"]
++++
Rust's combination of low-level control, excellent performance and modern build tools makes it an exciting choice for game developers. The idea of a working group to support this burgeoning community has been proposed [many](https://internals.rust-lang.org/t/a-working-group-for-rust-game-development/8240/4) [times](https://alexene.dev/2018/11/15/Rust-and-game-development.html) over the years, and we're excited to announce that a group has finally been formed!
diff --git a/content/posts/_index.md b/content/posts/_index.md
new file mode 100644
index 000000000..0b49d669a
--- /dev/null
+++ b/content/posts/_index.md
@@ -0,0 +1,4 @@
++++
+redirect_to = "/"
+insert_anchor_links = "right"
++++
\ No newline at end of file
diff --git a/assets/newsletter-001/a-snakes-tail.gif b/content/posts/newsletter-001/a-snakes-tail.gif
similarity index 100%
rename from assets/newsletter-001/a-snakes-tail.gif
rename to content/posts/newsletter-001/a-snakes-tail.gif
diff --git a/assets/newsletter-001/a-snakes-tale-logo.png b/content/posts/newsletter-001/a-snakes-tale-logo.png
similarity index 100%
rename from assets/newsletter-001/a-snakes-tale-logo.png
rename to content/posts/newsletter-001/a-snakes-tale-logo.png
diff --git a/assets/newsletter-001/amethyst-space-shooter.gif b/content/posts/newsletter-001/amethyst-space-shooter.gif
similarity index 100%
rename from assets/newsletter-001/amethyst-space-shooter.gif
rename to content/posts/newsletter-001/amethyst-space-shooter.gif
diff --git a/assets/newsletter-001/ccd_substeps.svg b/content/posts/newsletter-001/ccd_substeps.svg
similarity index 100%
rename from assets/newsletter-001/ccd_substeps.svg
rename to content/posts/newsletter-001/ccd_substeps.svg
diff --git a/assets/newsletter-001/embark-logo-bg.jpg b/content/posts/newsletter-001/embark-logo-bg.jpg
similarity index 100%
rename from assets/newsletter-001/embark-logo-bg.jpg
rename to content/posts/newsletter-001/embark-logo-bg.jpg
diff --git a/assets/newsletter-001/evoli-shot.png b/content/posts/newsletter-001/evoli-shot.png
similarity index 100%
rename from assets/newsletter-001/evoli-shot.png
rename to content/posts/newsletter-001/evoli-shot.png
diff --git a/assets/newsletter-001/gfx-mipmap.png b/content/posts/newsletter-001/gfx-mipmap.png
similarity index 100%
rename from assets/newsletter-001/gfx-mipmap.png
rename to content/posts/newsletter-001/gfx-mipmap.png
diff --git a/_posts/2019-09-02-newsletter-001.md b/content/posts/newsletter-001/index.md
similarity index 94%
rename from _posts/2019-09-02-newsletter-001.md
rename to content/posts/newsletter-001/index.md
index 0c844a5fe..aa420f2b0 100644
--- a/_posts/2019-09-02-newsletter-001.md
+++ b/content/posts/newsletter-001/index.md
@@ -1,6 +1,8 @@
----
-title: "This Month in Rust GameDev #1 - August 2019"
----
++++
+title = "This Month in Rust GameDev #1 - August 2019"
+date = 2019-09-02
+aliases = ["/2019/09/02/newsletter-001", "2019/09/02/newsletter-001.html"]
++++
Welcome to the inaugural issue of the Rust Game Development Workgroup’s
monthly (hopefully!) newsletter.
@@ -64,7 +66,7 @@ if you haven't seen it yet
### [This Month in Rustsim \#7 (June − July 2019)][rustsim_7]
-
+
[nphysics] 0.12 release contains several long awaited features:
@@ -111,7 +113,7 @@ Also, check out ["About the future of nphysics: a pure rust 2D and 3D real-time
### Way of Rhea [Trailer][rhea trailer] and [Steam Wishlist][rhea steam] Announced
-[][rhea trailer]
+[][rhea trailer]
^ _click on the GIF to see [the full trailer][rhea trailer]_
@@ -135,7 +137,7 @@ _Discussions:
### [Veloren 0.3](https://veloren.net/devblog-27)
-
+
Veloren is an open-world, open-source multiplayer voxel RPG.
The game is in an early stage of development, but is playable.
@@ -168,7 +170,7 @@ and [#30](https://veloren.net/devblog-30).
### [RUZZT]
-
+
[@yokljo] published [RUZZT] - a [ZZT] game engine clone written in Rust.
@@ -192,7 +194,7 @@ _Discussions:
### [oxygengine-navigation] - Navmesh Pathfinding System for ECS Games
-
+
[oxygengine-navigation] is a crate to perform pathfinding
on [navmeshes][navmesh wiki].
@@ -212,7 +214,7 @@ _Discussions:
### [Amethyst's Activity Report][amethyst news]
-
+
- [Amethyst v0.12 quietly released](https://github.com/amethyst/amethyst/releases/tag/v0.12.0)
and now the project moves to two-week release cycle.
@@ -220,11 +222,11 @@ _Discussions:
to become an official showcase project
([announcement][space menace announcement]).
- 
+ 
- [Evoli] released [v0.2](https://github.com/amethyst/evoli/releases/tag/v0.2.0)
and [moved into 3D](https://community.amethyst.rs/t/evoli-v0-2-video-log-retrospective/1007).
- 
+ 
- New tools for 2D game development:
[the Sheep spritesheet packer and Amethyst 2D Starter](https://amethyst.rs/posts/tools-for-2d-games).
- Scripting support [edges closer](https://community.amethyst.rs/t/scripting-what-do-we-need-to-get-there/958).
@@ -258,11 +260,11 @@ by [Carlo Supina](https://twitter.com/carlosupina)
\[[/r/rust](https://www.reddit.com/r/rust/comments/cwy4qq/amethyst_showcase_space_shooter_shootem_up),
[twitter](https://twitter.com/carlosupina/status/1167094848907808768)].
-
+
### [Embark's Rust Open-Source Crates and Ecosystem Tracking](http://embark.rs)
-
+
A quote from the announcement:
@@ -290,7 +292,7 @@ _Discussions:
Also, Embark has recently open-sourced [physx-rs] - [PhysX] bindings to Rust.
-
+
> Quite complex big C++ project to build & bind to ([@h3r2tic] did some magic).
> Eventually want full native Rust lib but PhysX is
@@ -306,7 +308,7 @@ _Discussions:
### [6 Months of Game Development in Rust](https://iolivia.me/posts/6-months-of-rust-game-dev)
-
+
[@oliviff] tells about theirs experience of developing a hobby game
"Tennis Academy" in Rust for six months.
@@ -339,7 +341,7 @@ _Discussions:
### [gfx-hal 0.3 and wgpu 0.3](https://users.rust-lang.org/t/wgpu-v0-3-is-released)
-
+
`gfx-hal` is a low-overhead Vulkanic GPU API in Rust.
Version 0.3 is published that includes:
@@ -431,11 +433,11 @@ Special section for other news (up to 15) in a one-liner format:
about the development of an asteroids-like game
[with Voronoi diagrams for procedural destructions](https://twitter.com/VladZhukov0/status/1162462543530643457).
- 
+ 
- [Azriel] published a devlog ["Charging Up"] - characters in [Will] can now charge up
by holding the Attack button.
- 
+ 
- [droprate](https://crates.io/crates/droprate) - a crate for choosing
outcomes based on a weighted probability map,
aka more player-friendly random numbers
@@ -444,7 +446,7 @@ Special section for other news (up to 15) in a one-liner format:
of [Robo Instructus], [Alex Butler] released a few more versions
that fix some bugs, improve performance, scoring and UI.
- 
+ 
- [@Remco](https://twitter.com/wodannson) shared on Twitter
[a video of hot reloading demonstration](https://twitter.com/wodannson/status/1157472538622078976)
\[[/r/rust](https://reddit.com/r/rust/comments/cldaew/hot_reloading_of_function_bodies_in_rust),
@@ -503,7 +505,7 @@ and highlight events from the past. -->
Just an interesting Rust gamedev link from the past. :)
-
+
On 2017.07.06 one of the first commercial Rust games ["A Snake's Tale"]
by [Michael Fairley] was released:
@@ -516,7 +518,7 @@ by [Michael Fairley] was released:
> Clear a path to get to the hole, eat some eggs along the way,
> and make sure to press all the buttons.
-[][snake trailer]
+[][snake trailer]
^ _click on the GIF to see [the full release trailer][snake trailer]_
diff --git a/assets/newsletter-001/iolivia-screenshot.png b/content/posts/newsletter-001/iolivia-screenshot.png
similarity index 100%
rename from assets/newsletter-001/iolivia-screenshot.png
rename to content/posts/newsletter-001/iolivia-screenshot.png
diff --git a/assets/newsletter-001/oxygengine-navigation-demo.gif b/content/posts/newsletter-001/oxygengine-navigation-demo.gif
similarity index 100%
rename from assets/newsletter-001/oxygengine-navigation-demo.gif
rename to content/posts/newsletter-001/oxygengine-navigation-demo.gif
diff --git a/assets/newsletter-001/physx-example.png b/content/posts/newsletter-001/physx-example.png
similarity index 100%
rename from assets/newsletter-001/physx-example.png
rename to content/posts/newsletter-001/physx-example.png
diff --git a/assets/newsletter-001/roboinstructus.jpg b/content/posts/newsletter-001/roboinstructus.jpg
similarity index 100%
rename from assets/newsletter-001/roboinstructus.jpg
rename to content/posts/newsletter-001/roboinstructus.jpg
diff --git a/assets/newsletter-001/ruzzt.png b/content/posts/newsletter-001/ruzzt.png
similarity index 100%
rename from assets/newsletter-001/ruzzt.png
rename to content/posts/newsletter-001/ruzzt.png
diff --git a/assets/newsletter-001/space-menace.png b/content/posts/newsletter-001/space-menace.png
similarity index 100%
rename from assets/newsletter-001/space-menace.png
rename to content/posts/newsletter-001/space-menace.png
diff --git a/assets/newsletter-001/veloren.png b/content/posts/newsletter-001/veloren.png
similarity index 100%
rename from assets/newsletter-001/veloren.png
rename to content/posts/newsletter-001/veloren.png
diff --git a/assets/newsletter-001/vlad-asteroinds-gameplay.gif b/content/posts/newsletter-001/vlad-asteroinds-gameplay.gif
similarity index 100%
rename from assets/newsletter-001/vlad-asteroinds-gameplay.gif
rename to content/posts/newsletter-001/vlad-asteroinds-gameplay.gif
diff --git a/assets/newsletter-001/way-of-rhea.gif b/content/posts/newsletter-001/way-of-rhea.gif
similarity index 100%
rename from assets/newsletter-001/way-of-rhea.gif
rename to content/posts/newsletter-001/way-of-rhea.gif
diff --git a/assets/newsletter-001/will-charging.png b/content/posts/newsletter-001/will-charging.png
similarity index 100%
rename from assets/newsletter-001/will-charging.png
rename to content/posts/newsletter-001/will-charging.png
diff --git a/assets/newsletter-002/amethyst-imgui.gif b/content/posts/newsletter-002/amethyst-imgui.gif
similarity index 100%
rename from assets/newsletter-002/amethyst-imgui.gif
rename to content/posts/newsletter-002/amethyst-imgui.gif
diff --git a/assets/newsletter-002/asteroids-demo.gif b/content/posts/newsletter-002/asteroids-demo.gif
similarity index 100%
rename from assets/newsletter-002/asteroids-demo.gif
rename to content/posts/newsletter-002/asteroids-demo.gif
diff --git a/assets/newsletter-002/deios.jpg b/content/posts/newsletter-002/deios.jpg
similarity index 100%
rename from assets/newsletter-002/deios.jpg
rename to content/posts/newsletter-002/deios.jpg
diff --git a/assets/newsletter-002/disconnect-console.png b/content/posts/newsletter-002/disconnect-console.png
similarity index 100%
rename from assets/newsletter-002/disconnect-console.png
rename to content/posts/newsletter-002/disconnect-console.png
diff --git a/assets/newsletter-002/doom-bsp-wasm.png b/content/posts/newsletter-002/doom-bsp-wasm.png
similarity index 100%
rename from assets/newsletter-002/doom-bsp-wasm.png
rename to content/posts/newsletter-002/doom-bsp-wasm.png
diff --git a/assets/newsletter-002/dooskington-devlog-5-screenshot.jpeg b/content/posts/newsletter-002/dooskington-devlog-5-screenshot.jpeg
similarity index 100%
rename from assets/newsletter-002/dooskington-devlog-5-screenshot.jpeg
rename to content/posts/newsletter-002/dooskington-devlog-5-screenshot.jpeg
diff --git a/assets/newsletter-002/garden.jpeg b/content/posts/newsletter-002/garden.jpeg
similarity index 100%
rename from assets/newsletter-002/garden.jpeg
rename to content/posts/newsletter-002/garden.jpeg
diff --git a/assets/newsletter-002/gfx-logo.png b/content/posts/newsletter-002/gfx-logo.png
similarity index 100%
rename from assets/newsletter-002/gfx-logo.png
rename to content/posts/newsletter-002/gfx-logo.png
diff --git a/assets/newsletter-002/github_actions_ci.gif b/content/posts/newsletter-002/github_actions_ci.gif
similarity index 100%
rename from assets/newsletter-002/github_actions_ci.gif
rename to content/posts/newsletter-002/github_actions_ci.gif
diff --git a/assets/newsletter-002/hex-fov.jpeg b/content/posts/newsletter-002/hex-fov.jpeg
similarity index 100%
rename from assets/newsletter-002/hex-fov.jpeg
rename to content/posts/newsletter-002/hex-fov.jpeg
diff --git a/assets/newsletter-002/iced.gif b/content/posts/newsletter-002/iced.gif
similarity index 100%
rename from assets/newsletter-002/iced.gif
rename to content/posts/newsletter-002/iced.gif
diff --git a/assets/newsletter-002/imgui-inspect.png b/content/posts/newsletter-002/imgui-inspect.png
similarity index 100%
rename from assets/newsletter-002/imgui-inspect.png
rename to content/posts/newsletter-002/imgui-inspect.png
diff --git a/_posts/2019-10-05-newsletter-002.md b/content/posts/newsletter-002/index.md
similarity index 90%
rename from _posts/2019-10-05-newsletter-002.md
rename to content/posts/newsletter-002/index.md
index 0be3bd9a3..2491e8d9a 100644
--- a/_posts/2019-10-05-newsletter-002.md
+++ b/content/posts/newsletter-002/index.md
@@ -1,6 +1,8 @@
----
-title: "This Month in Rust GameDev #2 - September 2019"
----
++++
+title = "This Month in Rust GameDev #2 - September 2019"
+date = 2019-10-05
+aliases = ["/2019/10/05/newsletter-002", "2019/10/05/newsletter-002.html"]
++++
Welcome to the second issue of the Rust GameDev Workgroup’s
monthly newsletter.
@@ -20,7 +22,7 @@ Want to get involved? [Join the Rust GameDev working group!][join]
### [Veloren][veloren]
-
+
[Veloren][veloren] is an open-world, open-source multiplayer voxel RPG.
The game is in an early stage of development, but is playable.
@@ -49,7 +51,7 @@ Full weekly devlogs "This Week In Veloren...":
### [Zemeroth v0.6][zemeroth-v0-6-text]
-
+
[Zemeroth] is a minimalistic 2D turn-based tactical game.
@@ -69,7 +71,7 @@ Read the [full devlog post][zemeroth-v0-6-text] or watch [the video version](htt
### [Twenty Asteroids][asteroids-itch]
-[][asteroids-itch]
+[][asteroids-itch]
[@VladZhukov0] published a few devlogs about their
["Twenty Asteroids"][asteroids-itch] game:
@@ -100,11 +102,11 @@ Updates include:
by [@carlosupina] introduced a currency system, shop system,
and sound effects: [watch the devlog video][space-shooter-vlog].
- [][space-shooter-vlog]
+ [][space-shooter-vlog]
- ["Stabman", by Noah2610](https://github.com/Noah2610/LD44).
- 
+ 
- [@mvlabat] is [working on interpolation in his multiplayer prototype (video)](https://youtu.be/xJm6cI_XmT4).
@@ -112,11 +114,11 @@ Updates include:
- [Azriel Hoh] released [a major new devblog update titled "Focus!"](https://azriel.im/will/2019/09/27/focus).
- 
+ 
- [@webshinra](https://twitter.com/Webshinra) made progress with raycasted FOV in their hexagonal game.
- 
+ 
[amethyst]: https://amethyst.rs
[@carlosupina]: https://twitter.com/carlosupina
@@ -129,42 +131,42 @@ Updates include:
- [@dooskington] published their 5th devlog: ["Stats And Skills"](https://dooskington.com/dev-log/5);
- 
+ 
- [Alex Butler] continues to polish their "[Robo Instructus]" game;
[1.8, 1.9, 1.10 and 1.11 versions were released][robo-news]:
official macOS support, bugfixes, and better translations.
- 
+ 
- [@Wraithan got tower placement working](https://twitter.com/Wraithan/status/1172982932341805056)
in their "WraithDefense" tower defence game;
the development process [is streamed on Twitch](https://twitch.tv/wraithan).
- 
+ 
- [@oliviff] released [v0.0.1][tennis-1] and [v0.0.2][tennis-2] updates
for [Tennis Academy][tennis]:
simplified gameplay flow, areas, cash flow, animations,
players' state visual cues and more.
- 
+ 
- The [Garden] game is
[under active development again](https://twitter.com/logicsoup/status/1174259591250661379).
Devlogs [are coming soon!](https://twitter.com/logicsoup/status/1166469607412158464)
- 
+ 
- ["Live"][live] by [@pincfloit] - a small command-line interface survival game
\[[twitter](https://twitter.com/pincfloit/status/1173965160089837568),
[github](https://github.com/codegram/live-rust)].
- [][live]
+ [][live]
- [@seratonik shared a GIF with omni-directional shadows][shadows-tweet]:
- [][shadows-tweet]
+ [][shadows-tweet]
- [@MrVallentin] tweeted a bunch of updates about their voxel engine:
[falling cubes](https://twitter.com/MrVallentin/status/1170164060542918656),
@@ -175,17 +177,17 @@ Updates include:
[saving and loading](https://twitter.com/MrVallentin/status/1176996637681623042),
and some more.
- 
+ 
- [@Mistodon] got their entire game ["Disconnect"] to [render in the terminal][disconnect-video];
- [][disconnect-video]
+ [][disconnect-video]
## Library & Tooling updates
### [gfx-rs & wgpu-rs: Project Update][gfx-post]
-[][gfx-post]
+[][gfx-post]
[gfx-rs] is a Rust project aiming to make low-level GPU programming
portable with low overhead.
@@ -213,7 +215,7 @@ _Discussions:
### [Mun][mun] and Hot Reloading Experiments
-
+
[Mun][mun] is a scripting language for gamedev
focused on quick iteration times that is written in Rust.
@@ -276,7 +278,7 @@ _Discussions:
### Rust [Roguelike Toolkit][rl-toolkit] and [Roguelike Tutorial][rl-book]
-
+
[rltk_rs] by [@herberticus] is a Rust implementation of
[C++ Roguelike Toolkit][RLTK] ([what is a "roguelike?"][rl]).
@@ -317,7 +319,7 @@ so you can run them in your browser.
### [EmbarkStudios/texture-synthesis][texture-synthesis]
-
+
[Embark] has open-sourced their texture synthesis crate **[texture-synthesis]**.
It's an example-based non-parametric image generation algorithm
@@ -351,7 +353,7 @@ Also,
### [Iced - a Renderer-Agnostic GUI Library][Iced]
-[][tour]
+[][tour]
Iced is a renderer-agnostic GUI library focused on simplicity and type-safety.
It was originally born as an attempt at bringing the simplicity of [Elm][elm]
@@ -377,7 +379,7 @@ _Discussions:
### [Amethyst][amethyst]
-
+
[Amethyst][amethyst] is a game engine and tool-set
for ambitious game developers.
@@ -401,7 +403,7 @@ Tooling:
- [amethyst-imgui v0.5 is out](https://twitter.com/AmethystEngine/status/1177720011013709824),
supporting a beta-version of the new imgui docking feature.
- 
+ 
- ["How to do a turn-based game with the ECS pattern"](https://community.amethyst.rs/t/classic-turn-based-workflow-how-to/1082/20)
post, by [@webshinra](https://twitter.com/webshinra).
@@ -411,7 +413,7 @@ Tooling:
### [Godot][godot] and Rust
-
+
[Tom Leys] is working on a "The Recall Singularity" game
about designing autonomous factory ships and stations
@@ -429,7 +431,7 @@ about using [the Godot engine][godot] with Rust:
### [Use Prebuilt Rooms with Rust Macros for More Interesting Procedural Dungeons][proc_rooms]
-
+
[@whostolemyhat](https://twitter.com/whostolemyhat) published the fourth part
of their tutorial series on procedural generation with Rust.
@@ -455,25 +457,25 @@ _Discussions:
- **[cubism-rs]** (Rust bindings for [Live2D Cubism]) got renderer support for [Piston2D].
- 
+ 
- ["Github Actions CI with Rust and SDL2"] -
[Alexandru Ene] wrote a post about CI with [github actions]
for [their hobby game project][after-hours] that uses Rust and SDL2.
- 
+ 
- [@phaazon] released [luminance] 0.33 that
[brings geometry instancing support](https://reddit.com/r/rust/comments/d0us73/announcement_luminance033);
also, the third wiki chapter ["Wavefront .obj loader"][luminance-chapter]
was released.
- 
+ 
- [phaazon/spline-editor] - a simple spline editor
for the [splines crate][splines] written using [luminance].
- 
+ 
- [@magistratic] gave a talk on the Doom's [BSP] rendering engine using their
Rust implementation as a demonstration at RevolverConf:
@@ -481,7 +483,7 @@ _Discussions:
[here](https://magnushoff.com/blog/doom-revolverconf)
([source code](https://github.com/maghoff/wad-render/tree/revolverconf-2019.2)).
- 
+ 
- [**rx**][rx] by [@cloudhead] is a modern pixel editor and animator;
this month, v0.2.0 was released, with new brush modes -
@@ -490,31 +492,31 @@ _Discussions:
\[[/r/rust](https://reddit.com/r/rust/comments/dauizc/rx_v020_released_a_modern_pixel_editor),
[github](https://github.com/cloudhead/rx)].
- [][rx]
+ [][rx]
- Pixel art editor **[Xprite]** is now [open source under GNU GPL][xprite-repo]
\[[/r/rust](https://reddit.com/r/rust/comments/d4r0o3/pixel_art_editor_xprite_is_now_open_source),
[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/d3vl65/xprite_is_now_open_source)].
- 
+ 
- **[minimum]** by ([@aclysma]) is a game development framework that provides
basic tooling and a content authoring workflow;
this month, rendering of draggable shapes in the editor and rotation/scaling were added
\[[YouTube demo](https://youtube.com/watch?v=BON_RvVFiWY)].
- 
+ 
- The **[imgui-inspect]** macro-based property editor by [@aclysma]
is a by-product of the above-mentioned "minimum" project.
- 
+ 
- [Project Deios][deios] decided to implement their core in Rust
and has been looking for a Rust graphics programmer:
[/r/rust announcement][deios-reddit].
- 
+ 
Just an interesting Rust gamedev link from the past. :)
-[][Sandspiel]
+[][Sandspiel]
**[Sandspiel]** is a falling sand game by [@MaxBittker]
built in late 2018 using Rust (via WASM), WebGL,
diff --git a/assets/newsletter-002/live-cli.png b/content/posts/newsletter-002/live-cli.png
similarity index 100%
rename from assets/newsletter-002/live-cli.png
rename to content/posts/newsletter-002/live-cli.png
diff --git a/assets/newsletter-002/live2d-cubism.png b/content/posts/newsletter-002/live2d-cubism.png
similarity index 100%
rename from assets/newsletter-002/live2d-cubism.png
rename to content/posts/newsletter-002/live2d-cubism.png
diff --git a/assets/newsletter-002/minimum.png b/content/posts/newsletter-002/minimum.png
similarity index 100%
rename from assets/newsletter-002/minimum.png
rename to content/posts/newsletter-002/minimum.png
diff --git a/assets/newsletter-002/mun-logo.png b/content/posts/newsletter-002/mun-logo.png
similarity index 100%
rename from assets/newsletter-002/mun-logo.png
rename to content/posts/newsletter-002/mun-logo.png
diff --git a/assets/newsletter-002/proc-dungeons.png b/content/posts/newsletter-002/proc-dungeons.png
similarity index 100%
rename from assets/newsletter-002/proc-dungeons.png
rename to content/posts/newsletter-002/proc-dungeons.png
diff --git a/assets/newsletter-002/recall-singularity.jpeg b/content/posts/newsletter-002/recall-singularity.jpeg
similarity index 100%
rename from assets/newsletter-002/recall-singularity.jpeg
rename to content/posts/newsletter-002/recall-singularity.jpeg
diff --git a/assets/newsletter-002/rltk-rs-example-06.gif b/content/posts/newsletter-002/rltk-rs-example-06.gif
similarity index 100%
rename from assets/newsletter-002/rltk-rs-example-06.gif
rename to content/posts/newsletter-002/rltk-rs-example-06.gif
diff --git a/assets/newsletter-002/robo.jpg b/content/posts/newsletter-002/robo.jpg
similarity index 100%
rename from assets/newsletter-002/robo.jpg
rename to content/posts/newsletter-002/robo.jpg
diff --git a/assets/newsletter-002/rox_clone_attack.png b/content/posts/newsletter-002/rox_clone_attack.png
similarity index 100%
rename from assets/newsletter-002/rox_clone_attack.png
rename to content/posts/newsletter-002/rox_clone_attack.png
diff --git a/assets/newsletter-002/rx.gif b/content/posts/newsletter-002/rx.gif
similarity index 100%
rename from assets/newsletter-002/rx.gif
rename to content/posts/newsletter-002/rx.gif
diff --git a/assets/newsletter-002/sandspiel.png b/content/posts/newsletter-002/sandspiel.png
similarity index 100%
rename from assets/newsletter-002/sandspiel.png
rename to content/posts/newsletter-002/sandspiel.png
diff --git a/assets/newsletter-002/shadows.gif b/content/posts/newsletter-002/shadows.gif
similarity index 100%
rename from assets/newsletter-002/shadows.gif
rename to content/posts/newsletter-002/shadows.gif
diff --git a/assets/newsletter-002/space-shooter.gif b/content/posts/newsletter-002/space-shooter.gif
similarity index 100%
rename from assets/newsletter-002/space-shooter.gif
rename to content/posts/newsletter-002/space-shooter.gif
diff --git a/assets/newsletter-002/splines.png b/content/posts/newsletter-002/splines.png
similarity index 100%
rename from assets/newsletter-002/splines.png
rename to content/posts/newsletter-002/splines.png
diff --git a/assets/newsletter-002/stabman-overworld.png b/content/posts/newsletter-002/stabman-overworld.png
similarity index 100%
rename from assets/newsletter-002/stabman-overworld.png
rename to content/posts/newsletter-002/stabman-overworld.png
diff --git a/assets/newsletter-002/suzanne_lit.png b/content/posts/newsletter-002/suzanne_lit.png
similarity index 100%
rename from assets/newsletter-002/suzanne_lit.png
rename to content/posts/newsletter-002/suzanne_lit.png
diff --git a/assets/newsletter-002/tennis-academy.gif b/content/posts/newsletter-002/tennis-academy.gif
similarity index 100%
rename from assets/newsletter-002/tennis-academy.gif
rename to content/posts/newsletter-002/tennis-academy.gif
diff --git a/assets/newsletter-002/texture-synthesis.jpg b/content/posts/newsletter-002/texture-synthesis.jpg
similarity index 100%
rename from assets/newsletter-002/texture-synthesis.jpg
rename to content/posts/newsletter-002/texture-synthesis.jpg
diff --git a/assets/newsletter-002/vallentin-voxel-terrain.jpeg b/content/posts/newsletter-002/vallentin-voxel-terrain.jpeg
similarity index 100%
rename from assets/newsletter-002/vallentin-voxel-terrain.jpeg
rename to content/posts/newsletter-002/vallentin-voxel-terrain.jpeg
diff --git a/assets/newsletter-002/veloren-town.png b/content/posts/newsletter-002/veloren-town.png
similarity index 100%
rename from assets/newsletter-002/veloren-town.png
rename to content/posts/newsletter-002/veloren-town.png
diff --git a/assets/newsletter-002/wraith-def.jpeg b/content/posts/newsletter-002/wraith-def.jpeg
similarity index 100%
rename from assets/newsletter-002/wraith-def.jpeg
rename to content/posts/newsletter-002/wraith-def.jpeg
diff --git a/assets/newsletter-002/xprite-demo.gif b/content/posts/newsletter-002/xprite-demo.gif
similarity index 100%
rename from assets/newsletter-002/xprite-demo.gif
rename to content/posts/newsletter-002/xprite-demo.gif
diff --git a/assets/newsletter-002/zemeroth.png b/content/posts/newsletter-002/zemeroth.png
similarity index 100%
rename from assets/newsletter-002/zemeroth.png
rename to content/posts/newsletter-002/zemeroth.png
diff --git a/assets/newsletter-003/antorum.jpeg b/content/posts/newsletter-003/antorum.jpeg
similarity index 100%
rename from assets/newsletter-003/antorum.jpeg
rename to content/posts/newsletter-003/antorum.jpeg
diff --git a/assets/newsletter-003/arrakis.png b/content/posts/newsletter-003/arrakis.png
similarity index 100%
rename from assets/newsletter-003/arrakis.png
rename to content/posts/newsletter-003/arrakis.png
diff --git a/assets/newsletter-003/cyclone-physics-demo.gif b/content/posts/newsletter-003/cyclone-physics-demo.gif
similarity index 100%
rename from assets/newsletter-003/cyclone-physics-demo.gif
rename to content/posts/newsletter-003/cyclone-physics-demo.gif
diff --git a/assets/newsletter-003/dissolve.gif b/content/posts/newsletter-003/dissolve.gif
similarity index 100%
rename from assets/newsletter-003/dissolve.gif
rename to content/posts/newsletter-003/dissolve.gif
diff --git a/assets/newsletter-003/ferris-fencing.png b/content/posts/newsletter-003/ferris-fencing.png
similarity index 100%
rename from assets/newsletter-003/ferris-fencing.png
rename to content/posts/newsletter-003/ferris-fencing.png
diff --git a/assets/newsletter-003/garden.jpeg b/content/posts/newsletter-003/garden.jpeg
similarity index 100%
rename from assets/newsletter-003/garden.jpeg
rename to content/posts/newsletter-003/garden.jpeg
diff --git a/assets/newsletter-003/gravisim.png b/content/posts/newsletter-003/gravisim.png
similarity index 100%
rename from assets/newsletter-003/gravisim.png
rename to content/posts/newsletter-003/gravisim.png
diff --git a/assets/newsletter-003/grumpy-visitors.png b/content/posts/newsletter-003/grumpy-visitors.png
similarity index 100%
rename from assets/newsletter-003/grumpy-visitors.png
rename to content/posts/newsletter-003/grumpy-visitors.png
diff --git a/_posts/2019-11-07-newsletter-003.md b/content/posts/newsletter-003/index.md
similarity index 93%
rename from _posts/2019-11-07-newsletter-003.md
rename to content/posts/newsletter-003/index.md
index 6e1ad898e..f8ce0e946 100644
--- a/_posts/2019-11-07-newsletter-003.md
+++ b/content/posts/newsletter-003/index.md
@@ -1,6 +1,8 @@
----
-title: "This Month in Rust GameDev #3 - October 2019"
----
++++
+title = "This Month in Rust GameDev #3 - October 2019"
+date = 2019-11-07
+aliases = ["/2019/11/027/newsletter-003", "2019/11/07/newsletter-003.html"]
++++
@@ -46,7 +48,7 @@ If needed, a section can be split into subsections with a "------" delimiter.
### [Sulis][sulis] - a Turn-Based RPG
-
+
[Sulis][sulis] is a Role Playing Game (RPG) with turn based, tactical combat,
deep character customization and an engaging storyline.
@@ -66,7 +68,7 @@ are still under heavy development.
Users are encouraged to [file issues with bugs][sulis-issues],
feature requests, or any other feedback.
-
+
Features:
@@ -82,7 +84,7 @@ Features:
- Runs on very modest hardware - even software renderers
(although at a reduced frame rate).
-
+
The GPLv3-licensed [source code is hosted on GitHub][sulis-src].
Sulis is written in Rust, with scripting in Lua and most data files in the YAML format.
@@ -98,7 +100,7 @@ _Discussions:
### [Veloren][veloren]
-
+
[Veloren][veloren] is an open-world, open-source multiplayer voxel RPG.
The game is in an early stage of development, but is playable.
@@ -132,7 +134,7 @@ it's pretty active.
### [PF Sandbox][pf-sandbox]
-
+
[PF Sandbox][pf-sandbox] by [@rukai] is a platform fighter sandbox featuring:
in game Fighter and Stage Editor, replays, and TAS tools.
@@ -149,7 +151,7 @@ were added to the project.
### [Antorum][antorum]
-
+
[Antorum][antorum] is a multiplayer RPG where players build their characters
and fight against the growing threats on the isle.
@@ -187,7 +189,7 @@ under the hood.
### [Ferris Fencing][ferris-fencing]
-
+
[Ferris Fencing][ferris-fencing] is a live tournament in which
player-programmed bots combat each other on a [RISC-V] virtual machine.
@@ -208,7 +210,7 @@ Instructions are in the [GitHub repo][ferris-fencing-repo].
### [Tennis Academy] v0.03 & v0.0.4
-
+
[@oliviff] released [v0.0.3][tennis-academy-v0-0-3]
and [v0.0.4][tennis-academy-v0-0-4] updates for [Tennis Academy]:
@@ -229,7 +231,7 @@ and [v0.0.4][tennis-academy-v0-0-4] updates for [Tennis Academy]:
### [piano-rs]
-
+
[piano-rs] is a multiplayer piano using UDP sockets
that can be played using computer keyboard, in the terminal.
@@ -241,7 +243,7 @@ _Discussions:
### [Will it dissolve?][dissolve]
-
+
["Will it dissolve?"][dissolve] is a small puzzle game
for ["Open Jam 2019"](http://openjam.io)
@@ -257,7 +259,7 @@ Programmed with the help of the [Tetra engine][tetra].
### [Garden Devlog: October][garden-october]
-
+
[Garden][garden-itch] is an upcoming game centered around
growing realistic plants.
@@ -311,7 +313,7 @@ non-ascii code input, new icons, bugfixes, and better translations.
[You can contribute to translations here][robo-transaltion].
-
+
[Alex Butler]: https://twitter.com/bigabgames
[Robo Instructus]: https://store.steampowered.com/app/1032170/Robo_Instructus/
@@ -326,7 +328,7 @@ non-ascii code input, new icons, bugfixes, and better translations.
and this month they published
a post about evolution of the game's rendering.
- 
+ 
- [@ardawanizadi] shared a
[short text report](https://reddit.com/r/godot/comments/dilbar/game_progress_for_almost_a_month_rust_godot)
@@ -362,7 +364,7 @@ Here are some of the games made with Rust:
> The further you get, the more features are added, including
> menacing enemies, destructive spikes, and adaptive music.
- 
+ 
- ["Mindmaze"][mindmaze] by [@sigodme]
([source code][mindmaze-src]).
@@ -373,7 +375,7 @@ Here are some of the games made with Rust:
> every chamber of this place to find all shards of lost personality.
> Can you find the way out?!
- 
+ 
- ["Legally Dead"][legally-dead] by [@vilcans] made with [ggez]
([source code][legally-dead-src]).
@@ -381,7 +383,7 @@ Here are some of the games made with Rust:
> With nothing, not even memories, you find yourself maneuvering
> some kind of craft in strange caves.
- 
+ 
Check out the devlog post:
["Tools and tech for my game written in Rust"][legally-dead-post].
@@ -415,7 +417,7 @@ Here are some of the games made with Rust:
[The source code is available here][grumpy].
- 
+ 
- [Arrakis][arrakis] by [@JpMoresmau] is a 80s game ported in Rust and Amethyst.
@@ -423,17 +425,17 @@ Here are some of the games made with Rust:
> Walk through the streets of Arrakis to find the fabled Wizard of Arrakis,
> that can teach you arcane powers you've only dreamt of!
- 
+ 
- [@webshinra] finished porting their hexagonal game to Amethyst
and is now preparing to build gameplay.
- 
+ 
- [@takeryo_eeic] is also working on a turn-based hexagonal game.
[Watch the video demo here][takeryo-video].
- [][takeryo-video]
+ [][takeryo-video]
- [Space Shooter] by [@carlosupina] got
[2 new items](https://github.com/amethyst/space_shooter_rs/pull/19)
@@ -516,7 +518,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)_
@@ -551,7 +553,7 @@ _Discussions:
### [gfx-rs v0.4][gfx-v0-4]
-
+
^ _a screenshot from [Yatekii/sailor] - a wgpu-based sailing navigation application_
@@ -565,7 +567,7 @@ for the detailed list of changes, see the
### [Vulkano: Why Command Buffers Are So Complicated?][vulkano-thread]
-
+
[A twitter thread by @Tomaka][vulkano-thread] about why command buffers
in [Vulkano] (a Rust library that wraps around [Vulkan graphics API][Vulkan])
@@ -577,7 +579,7 @@ are so complicated.
### [splines v3.0][splines]
-
+
[splines], a crate by [@phaazon] to handle spline interpolation,
[just got released in version 3.0.0][splines-v3].
@@ -615,7 +617,7 @@ Also, check out /r/rust ["The Mun programming language is going live!" post][mun
### [ultraviolet]
-
+
[ultraviolet] by [@fu5ha] is a crate to do basic, computer-graphics-related,
linear algebra, but fast, by taking full advantage of [SIMD].
@@ -641,7 +643,7 @@ _Discussions:
### [This month in rustsim #8 (Aug - Sep - Oct 2019)][rustsim-8]
-
+
Main updates:
@@ -678,7 +680,7 @@ _Discussions:
### [cyclone-physics-rs]
-[][cyclone-video-demo]
+[][cyclone-video-demo]
^ _a little demo of "particle" simulation_
@@ -711,7 +713,7 @@ It's based on Vulkano and consists of three repos:
### [Rust Roguelike Tutorial][roguelike-book]
-[][doors-demo]
+[][doors-demo]
[The Roguelike Tutorial][roguelike-book] by [@blackfuture]
includes almost 40 chapters now and continues to grow.
@@ -738,7 +740,7 @@ web version improvements, and more examples.
### [Nannou awarded Mozilla grant for foundational audio development][nannou-post]
-[][nannou-post]
+[][nannou-post]
[Nannou][nannou] is a creative coding framework that aims to make it easy
for artists to express themselves with simple, fast, reliable code.
@@ -768,7 +770,7 @@ _Discussions:
### Amethyst
-
+
- [specs] and its related repositories [awesome-specs], [hibitset] and [shred]
were moved to [Amethyst organization] \[[URLO][specs-moved]].
@@ -840,7 +842,7 @@ and highlight events from the past. -->
Just an interesting Rust gamedev link from the past. :)
-[][gravisim-ann]
+[][gravisim-ann]
[Gravisim][gravisim-src] by [@bcamp1]
is a simulation of universal gravitation.
diff --git a/assets/newsletter-003/ld45-mindmaze.png b/content/posts/newsletter-003/ld45-mindmaze.png
similarity index 100%
rename from assets/newsletter-003/ld45-mindmaze.png
rename to content/posts/newsletter-003/ld45-mindmaze.png
diff --git a/assets/newsletter-003/legally-dead.png b/content/posts/newsletter-003/legally-dead.png
similarity index 100%
rename from assets/newsletter-003/legally-dead.png
rename to content/posts/newsletter-003/legally-dead.png
diff --git a/assets/newsletter-003/mission_partners_nannou_mozilla.png b/content/posts/newsletter-003/mission_partners_nannou_mozilla.png
similarity index 100%
rename from assets/newsletter-003/mission_partners_nannou_mozilla.png
rename to content/posts/newsletter-003/mission_partners_nannou_mozilla.png
diff --git a/assets/newsletter-003/pf-sandbox.jpg b/content/posts/newsletter-003/pf-sandbox.jpg
similarity index 100%
rename from assets/newsletter-003/pf-sandbox.jpg
rename to content/posts/newsletter-003/pf-sandbox.jpg
diff --git a/assets/newsletter-003/piano.png b/content/posts/newsletter-003/piano.png
similarity index 100%
rename from assets/newsletter-003/piano.png
rename to content/posts/newsletter-003/piano.png
diff --git a/assets/newsletter-003/recall-singular.png b/content/posts/newsletter-003/recall-singular.png
similarity index 100%
rename from assets/newsletter-003/recall-singular.png
rename to content/posts/newsletter-003/recall-singular.png
diff --git a/assets/newsletter-003/rlsl-example.png b/content/posts/newsletter-003/rlsl-example.png
similarity index 100%
rename from assets/newsletter-003/rlsl-example.png
rename to content/posts/newsletter-003/rlsl-example.png
diff --git a/assets/newsletter-003/robo-ru.png b/content/posts/newsletter-003/robo-ru.png
similarity index 100%
rename from assets/newsletter-003/robo-ru.png
rename to content/posts/newsletter-003/robo-ru.png
diff --git a/assets/newsletter-003/rogulike-demo.gif b/content/posts/newsletter-003/rogulike-demo.gif
similarity index 100%
rename from assets/newsletter-003/rogulike-demo.gif
rename to content/posts/newsletter-003/rogulike-demo.gif
diff --git a/assets/newsletter-003/sailor.png b/content/posts/newsletter-003/sailor.png
similarity index 100%
rename from assets/newsletter-003/sailor.png
rename to content/posts/newsletter-003/sailor.png
diff --git a/assets/newsletter-003/salva.png b/content/posts/newsletter-003/salva.png
similarity index 100%
rename from assets/newsletter-003/salva.png
rename to content/posts/newsletter-003/salva.png
diff --git a/assets/newsletter-003/splines.png b/content/posts/newsletter-003/splines.png
similarity index 100%
rename from assets/newsletter-003/splines.png
rename to content/posts/newsletter-003/splines.png
diff --git a/assets/newsletter-003/sulis-abilities-tree.png b/content/posts/newsletter-003/sulis-abilities-tree.png
similarity index 100%
rename from assets/newsletter-003/sulis-abilities-tree.png
rename to content/posts/newsletter-003/sulis-abilities-tree.png
diff --git a/assets/newsletter-003/sulis-battle.png b/content/posts/newsletter-003/sulis-battle.png
similarity index 100%
rename from assets/newsletter-003/sulis-battle.png
rename to content/posts/newsletter-003/sulis-battle.png
diff --git a/assets/newsletter-003/sulis-inventory.png b/content/posts/newsletter-003/sulis-inventory.png
similarity index 100%
rename from assets/newsletter-003/sulis-inventory.png
rename to content/posts/newsletter-003/sulis-inventory.png
diff --git a/assets/newsletter-003/takeryo-eeic-hex-game.png b/content/posts/newsletter-003/takeryo-eeic-hex-game.png
similarity index 100%
rename from assets/newsletter-003/takeryo-eeic-hex-game.png
rename to content/posts/newsletter-003/takeryo-eeic-hex-game.png
diff --git a/assets/newsletter-003/tennis-academy.png b/content/posts/newsletter-003/tennis-academy.png
similarity index 100%
rename from assets/newsletter-003/tennis-academy.png
rename to content/posts/newsletter-003/tennis-academy.png
diff --git a/assets/newsletter-003/ultraviolet-benches.png b/content/posts/newsletter-003/ultraviolet-benches.png
similarity index 100%
rename from assets/newsletter-003/ultraviolet-benches.png
rename to content/posts/newsletter-003/ultraviolet-benches.png
diff --git a/assets/newsletter-003/veloren.png b/content/posts/newsletter-003/veloren.png
similarity index 100%
rename from assets/newsletter-003/veloren.png
rename to content/posts/newsletter-003/veloren.png
diff --git a/assets/newsletter-003/vulkano-logo.png b/content/posts/newsletter-003/vulkano-logo.png
similarity index 100%
rename from assets/newsletter-003/vulkano-logo.png
rename to content/posts/newsletter-003/vulkano-logo.png
diff --git a/assets/newsletter-003/webshinra-hex.jpg b/content/posts/newsletter-003/webshinra-hex.jpg
similarity index 100%
rename from assets/newsletter-003/webshinra-hex.jpg
rename to content/posts/newsletter-003/webshinra-hex.jpg
diff --git a/assets/newsletter-003/working-title.png b/content/posts/newsletter-003/working-title.png
similarity index 100%
rename from assets/newsletter-003/working-title.png
rename to content/posts/newsletter-003/working-title.png
diff --git a/_drafts/newsletter-004.md b/content/posts/newsletter-004/index.md
similarity index 96%
rename from _drafts/newsletter-004.md
rename to content/posts/newsletter-004/index.md
index a1134e92d..6ab9b6f08 100644
--- a/_drafts/newsletter-004.md
+++ b/content/posts/newsletter-004/index.md
@@ -1,6 +1,8 @@
----
-title: "This Month in Rust GameDev #4 - November 2019"
----
++++
+title = "This Month in Rust GameDev #4 - November 2019"
+date = 2019-12-01
+draft = true
++++
@@ -46,7 +48,7 @@ If needed, a section can be split into subsections with a "------" delimiter.
### [Le Train Dispatcher][ltd] - Route trains in a simulated rail network
-
+
Le Train Dispatcher allows you to route trains in a fully simulated rail network. Particular care has been taken on the realistic management of light signals (block systems, switch protection), train physics and curve tracing.
diff --git a/content/posts/newsletter-004/ltd.gif b/content/posts/newsletter-004/ltd.gif
new file mode 100644
index 0000000000000000000000000000000000000000..d2010fc2cb1fe6e5afbcba2478c622e33a9621b0
GIT binary patch
literal 3108577
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