diff --git a/_drafts/newsletter-002.md b/_drafts/newsletter-002.md index 8a9739a1e..26e04962e 100644 --- a/_drafts/newsletter-002.md +++ b/_drafts/newsletter-002.md @@ -2,8 +2,6 @@ title: "This Month in Rust GameDev #2 - September 2019" --- - - Welcome to the second issue of the Rust GameDev Workgroup’s monthly newsletter. @@ -18,44 +16,562 @@ Want to get involved? [Join the Rust GameDev working group!][join] [Rust]: https://rust-lang.org [join]: https://github.com/rust-gamedev/wg#join-the-fun -## News and Blog Posts +## Game Updates - +The source code of the project +[is available on GitHub](https://github.com/mun-lang/mun) +under the MIT or Apache licenses. + +Mun's runtime is implemented in Rust. +Check out [a GIF demo of the Rust hot reloading functionality][hot-reload-demo] +that shows: + +- Catching and logging of errors (e.g. type mismatch), +- hot reloading of a shared library's symbols (used for reflection) and method logic, +- runtime invocable methods and type/method reflection. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/d4wngp/released_source_of_hot_reloading_experimentation)_ + +[mun]: https://mun-lang.org +[hot-reload-demo]: https://reddit.com/r/rust/comments/cywwtv/progress_on_hot_reloading_experimentation_in_rust + +### Rust [Roguelike Toolkit][rl-toolkit] and [Roguelike Tutorial][rl-book] + +![Minimal pathfinding and FoV example](/assets/newsletter-002/rltk-rs-example-06.gif) + +[rltk_rs] by [@herberticus] is a Rust implementation of +[C++ Roguelike Toolkit][RLTK] ([what is a "roguelike?"][rl]). + +It provides all the basic functionality one needs to write a roguelike game, +as well as mouse support, an embedded resource system, Web Assembly support, +and more. + +All [examples][rltk-examples] are linked to browser WASM to try. + +The back-end uses [glow] to abstract OpenGL between versions. +API for embedding assets directly into your binary. + +If you'd like to see a functional roguelike that uses rltk_rs, +check out [Rusty Roguelike][rusty-rl]. + +------ + +[The Roguelike Tutorial][rl-book] includes more than 20 chapters now +and continues to grow. -### Other News +It covers topics from "hello rust" and "what is an ECS?" to adding monsters, +equipment, nice menus, save/load, multiple levels, bloodstains, particle effects, +magic mapping scrolls, and more. + +The tutorial has Web Assembly links to all examples +so you can run them in your browser. + +[rltk_rs]: https://github.com/thebracket/rltk_rs +[rl-toolkit]: https://github.com/thebracket/rltk_rs +[rl-book]: https://bfnightly.bracketproductions.com/rustbook +[rltk-examples]: https://github.com/thebracket/rltk_rs#examples +[@herberticus]: https://patreon.com/blackfuture +[rl]: https://en.wikipedia.org/wiki/Roguelike +[RLTK]: https://github.com/thebracket/rltk +[rusty-rl]: https://github.com/thebracket/rustyroguelike +[glow]: https://github.com/grovesNL/glow + +### [EmbarkStudios/texture-synthesis][texture-synthesis] + +![Generated textures samples](/assets/newsletter-002/texture-synthesis.jpg) + +[Embark] has open-sourced their texture synthesis crate **[texture-synthesis]**. +It's an example-based non-parametric image generation algorithm +written in Rust. + +[The repo][texture-synthesis] also includes multiple +code examples along with test images, +and a compiled binary with a command-line interface +can be found under the release tab. + +Also, see a great long recorded talk +["More Like This, Please! Texture Synthesis and Remixing from a Single Example"](https://youtu.be/fMbK7PYQux4) +which explains this technique and the background more in-depth. + +Full list of stuff that [Embark] has released so far: +[embark.rs](http://embark.rs). + +_Discussions: +[twitter](https://twitter.com/anastasiaopara/status/1169594058530066432)_ + +------ + +Also, + +- [Embark will be sponsoring RustFest in Barcelona this year.](https://twitter.com/AriVanider/status/1171359194336903169) +- [Embark started hiring new grads](https://embark.games/position/software-engineer-new-grad) + \[[twitter](https://twitter.com/AriVanider/status/1173903615498567680)]. + +[Embark]: https://embark.games +[texture-synthesis]: https://github.com/EmbarkStudios/texture-synthesis + +### [Iced - a Renderer-Agnostic GUI Library][Iced] + +[![All widgets tour demo: radio buttons, sliders, debugging view, etc](/assets/newsletter-002/iced.gif)][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] +and The Elm Architecture into [Coffee 2D game engine][coffee]. + +Features: + +- Simple, easy-to-use, renderer-agnostic API; +- Responsive, flexbox-based layouting; +- Type-safe, reactive programming model; +- Lots of built-in widgets and custom widget support. + +Check out [the design overview in the repo's README][overview]. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/czzjnv/iced_a_rendereragnostic_gui_library)_ + +[Iced]: https://github.com/hecrj/iced +[tour]: https://github.com/hecrj/iced/tree/e82e96e6examples#tour +[elm]: https://elm-lang.org +[coffee]: https://github.com/hecrj/coffee +[overview]: https://github.com/hecrj/iced#overview + +### [Amethyst][amethyst] + +![amethyst logo](/assets/newsletter-001/amethyst-logo.png) + +[Amethyst][amethyst] is a game engine and tool-set +for ambitious game developers. +It enables game developers to make complex games without getting +into too much trouble, by means of data-driven design +and the ECS architecture. + +Tooling: + +- [Amethyst Engine v0.13 was released](https://github.com/amethyst/amethyst/releases/tag/v0.13.0). + A new `amethyst_tiles` crate was added and + [the Pong tutorial](https://book.amethyst.rs/stable/pong-tutorial/pong-tutorial-06.html) + is now complete with the addition of an audio section. + +- [Laminar v0.3.1 was released](https://github.com/amethyst/laminar/releases/tag/0.3.1). + +- [@_AndreaCatania](https://twitter.com/_AndreaCatania) published + an ["Initialize physics world - Amethyst physics tutorial #1"](https://youtube.com/watch?v=XzSKuY9nv7A) + video. + +- [amethyst-imgui v0.5 is out](https://twitter.com/AmethystEngine/status/1177720011013709824), + supporting a beta-version of the new imgui docking feature. + + ![docking widgets demo](/assets/newsletter-002/amethyst-imgui.gif) + +- ["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). + +- [@valkum](https://github.com/valkum) is + [implementing area lights using linearly transformed cosines](https://youtube.com/watch?v=KVpLPInWRWg). + +### [Godot][godot] and Rust + +![Recall Singularity's ship base](/assets/newsletter-002/recall-singularity.jpeg) + +[Tom Leys] is working on a "The Recall Singularity" game +about designing autonomous factory ships and stations +and this month they published a few posts +about using [the Godot engine][godot] with Rust: + +- ["How I use Rust and Godot to Explore Space"](https://blog.usejournal.com/how-i-use-rust-and-godot-to-explore-space-806bb810e950) + \[[/r/godot](https://reddit.com/r/godot/comments/d5qdoy/inspiration_how_i_use_rust_and_godot_to_explore)]; +- ["Gorgeous Godot games in Rust"](https://medium.com/@recallsingularity/gorgeous-godot-games-in-rust-1867c56045e6) + \[[/r/rust](https://reddit.com/r/rust_gamedev/comments/d75qfz/gorgeous_godot_games_in_rust)]; +- ["A Basic Godot-Rust Structure"](https://medium.com/@recallsingularity/a-basic-godot-rust-structure-eb855ba07223); + +[godot]: https://godotengine.org +[Tom Leys]: https://twitter.com/RecallSingular1 + +### [Use Prebuilt Rooms with Rust Macros for More Interesting Procedural Dungeons][proc_rooms] + +![Top-down view on a generated dungeon](/assets/newsletter-002/proc-dungeons.png) + +[@whostolemyhat](https://twitter.com/whostolemyhat) published the fourth part +of their tutorial series on procedural generation with Rust. +In this tutorial, the room generation is updated so it can pick from a selection +of pre-built room patterns as well as create the standard empty room. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/d85i8x/make_more_interesting_procedural_dungeons_using)_ + +[proc_rooms]: https://jamesbaum.co.uk/blether/procedural-generation-prebuilt-rooms-rust-macros + +### Other Library & Tooling News + +- [**uset**](https://crates.io/crates/uset) - an implementation of sets and maps + designed for small and medium number of stored elements + which change quickly - i.e. in a dynamically evolving scene in a video game. + +- **[blend]** - a parser and runtime for [Blender][blender]'s .blend files + that can be used to read (almost) everything inside the file: + from mesh data, materials, cameras and animations to user preferences, + window locations and render settings + \[[/r/rust](https://reddit.com/r/rust/comments/d70lu6/blend_a_parser_and_runtime_for_blenders_blend)]. + +- **[cubism-rs]** (Rust bindings for [Live2D Cubism]) got renderer support for [Piston2D]. + + ![Live2D Piston demo](/assets/newsletter-002/live2d-cubism.png) + +- ["Github Actions CI with Rust and SDL2"] - + [Alexandru Ene] wrote a post about CI with [github actions] + for [their hobby game project][after-hours] that uses Rust and SDL2. + + ![Github Actions with SDL2 screencast demo](/assets/newsletter-002/github_actions_ci.gif) + +- [@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. + + ![loaded and lighted Suzanne model](/assets/newsletter-002/suzanne_lit.png) + +- [phaazon/spline-editor] - a simple spline editor + for the [splines crate][splines] written using [luminance]. + + ![complex spline in the editor](/assets/newsletter-002/splines.png) + +- [@magistratic] gave a talk on the Doom's [BSP] rendering engine using their + Rust implementation as a demonstration at RevolverConf: + recording (in Norwegian) and a WASM demo available + [here](https://magnushoff.com/blog/doom-revolverconf) + ([source code](https://github.com/maghoff/wad-render/tree/revolverconf-2019.2)). + + ![WASM demo](/assets/newsletter-002/doom-bsp-wasm.png) + +- [**rx**][rx] by [@cloudhead] is a modern pixel editor and animator; + this month, v0.2.0 was released, with new brush modes - + pixel perfect drawing, symmetry and multi-frame drawing - + a new GLFW backend and `.gif` output. + \[[/r/rust](https://reddit.com/r/rust/comments/dauizc/rx_v020_released_a_modern_pixel_editor), + [github](https://github.com/cloudhead/rx)]. + + [![rx demo](/assets/newsletter-002/rx.gif)][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)]. + + ![XPrite drawing demo](/assets/newsletter-002/xprite-demo.gif) + +- **[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)]. + + ![editor with a bunch of shapes](/assets/newsletter-002/minimum.png) + +- The **[imgui-inspect]** macro-based property editor by [@aclysma] + is a by-product of the above-mentioned "minimum" project. + + ![inspector widget with position, debug draw rect, and physics body sub-widgets](/assets/newsletter-002/imgui-inspect.png) + +- [Project Deios][deios] decided to implement their core in Rust + and has been looking for a Rust graphics programmer: + [/r/rust announcement][deios-reddit]. + + ![Deios logo ant promo pic](/assets/newsletter-002/deios.jpg) +[Alexandru Ene]: https://twitter.com/_AlexEne_ +["Github Actions CI with Rust and SDL2"]: https://alexene.dev/2019/09/04/Github-actions-CI-rust-SDL2.html +[github actions]: https://github.com/features/actions +[after-hours]: https://alexene.dev/2019/01/15/After-hours-game-development.html +[Xprite]: https://pickitup247.com/xprite.html +[xprite-repo]: https://github.com/rickyhan/xprite-editor +[cubism-rs]: https://github.com/Veykril/cubism-rs +[Live2D Cubism]: https://www.live2d.com/en/download/cubism-sdk +[Piston2D]: https://www.piston.rs +[@dooskington]: https://twitter.com/dooskington +[@magistratic]: https://twitter.com/magistratic +[BSP]: https://en.wikipedia.org/wiki/Binary_space_partitioning +[@Mistodon]: https://twitter.com/Mistodon +["Disconnect"]: https://mistodon.itch.io/disconnect +[disconnect-video]: https://twitter.com/Mistodon/status/1175361784246603776 +[@pincfloit]: https://twitter.com/pincfloit +[luminance]: https://crates.io/crates/luminance +[luminance-chapter]: https://github.com/phaazon/luminance-rs/wiki/Wavefront-.obj-loader +[splines]: https://crates.io/crates/splines +[phaazon/spline-editor]: https://github.com/phaazon/spline-editor +[@aclysma]: https://twitter.com/aclysma +[@phaazon]: https://github.com/phaazon +[blend]: https://github.com/lukebitts/blend +[blender]: https://blender.org +[Garden]: https://epcc.itch.io/garden +[shadows-tweet]: https://twitter.com/seratonik/status/1169106102710988801 +[live]: https://nuria.itch.io/live-rust +[@oliviff]: https://twitter.com/oliviff +[tennis]: https://iolivia.me/posts/6-months-of-rust-game-dev +[tennis-1]: https://twitter.com/oliviff/status/1168556346431692800 +[tennis-2]: https://twitter.com/oliviff/status/1172912164488843265 +[Alex Butler]: https://twitter.com/bigabgames +[Robo Instructus]: https://steamcommunity.com/games/1032170/announcements/detail/1604892840079306082 +[robo-news]: https://steamcommunity.com/app/1032170/allnews +[@MrVallentin]: https://twitter.com/MrVallentin +[rx]: https://cloudhead.io/rx +[@cloudhead]: https://cloudhead.io +[deios]: https://kickstarter.com/projects/dungeonfog/project-deios-dungeonfog-mapmaker-suite-for-worldbuilders +[deios-reddit]: https://reddit.com/r/rust/comments/d487dr/were_looking_for_a_rust_graphics_programmer +[imgui-inspect]: https://github.com/aclysma/imgui-inspect +[minimum]: https://github.com/aclysma/minimum + ## Popular Workgroup Issues in Github +- [#36 "Adoption of Rust over time in existing game codebases"](https://github.com/rust-gamedev/wg/issues/36) +- [#48 "Placement New"](https://github.com/rust-gamedev/wg/issues/48) +- [#49 "Branch prediction hints (i.e. Likely/Unlikely)"](https://github.com/rust-gamedev/wg/issues/49) +- [#51 "Using wasm-bindgen for games"](https://github.com/rust-gamedev/wg/issues/51) + ## Meeting Minutes @@ -69,11 +585,66 @@ or [join the next meeting][join]. +- [winit](https://github.com/rust-windowing/winit): + - [Issues tagged as "Good first issue" and “help wanted”][winit help wanted]; + - [Issues tagged as "Blocking a release"][winit blocking]; +- [gfx-rs's "contributor-friendly" issues][gfx issues]; +- [wgpu's "help wanted" issues][wgpu-help-wanted]; +- [luminance's "low hanging fruit" issues][luminance-fruits]; +- Request from Amethyst: + ["The renderer-agnostic GUI library “Iced” by @hecrj looks *so* good. + If someone wants to make this work with Amethyst please get in touch with us! + (or just do it...)"][amethyst-iced-help]. + +[winit help wanted]: 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 +[winit blocking]: https://github.com/rust-windowing/winit/issues?utf8=✓&q=is%3Aissue+is%3Aopen+label%3A%22Blocking+a+release%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 +[amethyst-iced-help]: https://twitter.com/AmethystEngine/status/1169922826033336320 +[@hecrj]: https://twitter.com/hecrj + ## Bonus +Just an interesting Rust gamedev link from the past. :) + +[![a scene with sand, water, a tree, flowers, and fire](/assets/newsletter-002/sandspiel.png)][Sandspiel] + +**[Sandspiel]** is a falling sand game by [@MaxBittker] +built in late 2018 using Rust (via WASM), WebGL, +and some JS glueing things together. + +> Sandspiel is a pixel physics simulation sandbox where +> you can paint with elements, conduct experiments and build your own world! +> +> Elements include Ice, Water, Sand, Lava, Fire, Oil, Plant, Fungus, +> and many more! +> +> The goal was to produce an cellular automata environment that's +> interesting to play with and supports the sharing and forking +> of fun creations with other players. +> Ultimately, I want the platform to support editing and uploading +> of your own elements via a programmable cellular automata API. + +The history of the game and the development process are documented in a great +**["Making Sandspiel"](https://maxbittker.com/making-sandspiel)** blog post. + +[The source code is available on GitHub](https://github.com/MaxBittker/sandspiel). + +The game's community is still active: check +[@sandspiel_feed feed of uploads](https://twitter.com/sandspiel_feed). + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/a6v0p1/sandspiel_a_falling_sand_game_built_in_rustwebgl), +[/r/programming](https://reddit.com/r/programming/comments/a6zxou/sandspiel_a_falling_sand_game_built_in_rust), +[hacker news](https://news.ycombinator.com/item?id=18696291)_ + +[Sandspiel]: https://sandspiel.club +[@MaxBittker]: https://maxbittker.com + ------ That's all news for today, thanks for reading! diff --git a/assets/newsletter-002/amethyst-imgui.gif b/assets/newsletter-002/amethyst-imgui.gif new file mode 100644 index 000000000..7627c3d14 Binary files /dev/null and b/assets/newsletter-002/amethyst-imgui.gif differ diff --git a/assets/newsletter-002/asteroids-demo.gif b/assets/newsletter-002/asteroids-demo.gif new file mode 100644 index 000000000..7dca14df8 Binary files /dev/null and b/assets/newsletter-002/asteroids-demo.gif differ diff --git a/assets/newsletter-002/deios.jpg b/assets/newsletter-002/deios.jpg new file mode 100644 index 000000000..993f5aaaf Binary files /dev/null and b/assets/newsletter-002/deios.jpg differ diff --git a/assets/newsletter-002/disconnect-console.png b/assets/newsletter-002/disconnect-console.png new file mode 100644 index 000000000..944070931 Binary files /dev/null and b/assets/newsletter-002/disconnect-console.png differ diff --git a/assets/newsletter-002/doom-bsp-wasm.png b/assets/newsletter-002/doom-bsp-wasm.png new file mode 100644 index 000000000..3c8a859bf Binary files /dev/null and b/assets/newsletter-002/doom-bsp-wasm.png differ diff --git a/assets/newsletter-002/dooskington-devlog-5-screenshot.jpeg b/assets/newsletter-002/dooskington-devlog-5-screenshot.jpeg new file mode 100644 index 000000000..addf56f28 Binary files /dev/null and b/assets/newsletter-002/dooskington-devlog-5-screenshot.jpeg differ diff --git a/assets/newsletter-002/garden.jpeg b/assets/newsletter-002/garden.jpeg new file mode 100644 index 000000000..34ee28d51 Binary files /dev/null and b/assets/newsletter-002/garden.jpeg differ diff --git a/assets/newsletter-002/gfx-logo.png b/assets/newsletter-002/gfx-logo.png new file mode 100644 index 000000000..e0cc9047b Binary files /dev/null and b/assets/newsletter-002/gfx-logo.png differ diff --git a/assets/newsletter-002/github_actions_ci.gif b/assets/newsletter-002/github_actions_ci.gif new file mode 100644 index 000000000..cb759f009 Binary files /dev/null and b/assets/newsletter-002/github_actions_ci.gif differ diff --git a/assets/newsletter-002/hex-fov.jpeg b/assets/newsletter-002/hex-fov.jpeg new file mode 100644 index 000000000..90af43fcf Binary files /dev/null and b/assets/newsletter-002/hex-fov.jpeg differ diff --git a/assets/newsletter-002/iced.gif b/assets/newsletter-002/iced.gif new file mode 100644 index 000000000..9cf7edf3d Binary files /dev/null and b/assets/newsletter-002/iced.gif differ diff --git a/assets/newsletter-002/imgui-inspect.png b/assets/newsletter-002/imgui-inspect.png new file mode 100644 index 000000000..b8886b5ce Binary files /dev/null and b/assets/newsletter-002/imgui-inspect.png differ diff --git a/assets/newsletter-002/live-cli.png b/assets/newsletter-002/live-cli.png new file mode 100644 index 000000000..9a7e1e85d Binary files /dev/null and b/assets/newsletter-002/live-cli.png differ diff --git a/assets/newsletter-002/live2d-cubism.png b/assets/newsletter-002/live2d-cubism.png new file mode 100644 index 000000000..04e3cba09 Binary files /dev/null and b/assets/newsletter-002/live2d-cubism.png differ diff --git a/assets/newsletter-002/minimum.png b/assets/newsletter-002/minimum.png new file mode 100644 index 000000000..347607b52 Binary files /dev/null and b/assets/newsletter-002/minimum.png differ diff --git a/assets/newsletter-002/mun-logo.png b/assets/newsletter-002/mun-logo.png new file mode 100644 index 000000000..ec3757c53 Binary files /dev/null and b/assets/newsletter-002/mun-logo.png differ diff --git a/assets/newsletter-002/proc-dungeons.png b/assets/newsletter-002/proc-dungeons.png new file mode 100644 index 000000000..33a492e11 Binary files /dev/null and b/assets/newsletter-002/proc-dungeons.png differ diff --git a/assets/newsletter-002/recall-singularity.jpeg b/assets/newsletter-002/recall-singularity.jpeg new file mode 100644 index 000000000..3ff56943d Binary files /dev/null and b/assets/newsletter-002/recall-singularity.jpeg differ diff --git a/assets/newsletter-002/rltk-rs-example-06.gif b/assets/newsletter-002/rltk-rs-example-06.gif new file mode 100644 index 000000000..3d2bd704d Binary files /dev/null and b/assets/newsletter-002/rltk-rs-example-06.gif differ diff --git a/assets/newsletter-002/robo.jpg b/assets/newsletter-002/robo.jpg new file mode 100644 index 000000000..42099d37f Binary files /dev/null and b/assets/newsletter-002/robo.jpg differ diff --git a/assets/newsletter-002/rox_clone_attack.png b/assets/newsletter-002/rox_clone_attack.png new file mode 100644 index 000000000..a94ea9388 Binary files /dev/null and b/assets/newsletter-002/rox_clone_attack.png differ diff --git a/assets/newsletter-002/rx.gif b/assets/newsletter-002/rx.gif new file mode 100644 index 000000000..26159ae69 Binary files /dev/null and b/assets/newsletter-002/rx.gif differ diff --git a/assets/newsletter-002/sandspiel.png b/assets/newsletter-002/sandspiel.png new file mode 100644 index 000000000..1ff5c9d4e Binary files /dev/null and b/assets/newsletter-002/sandspiel.png differ diff --git a/assets/newsletter-002/shadows.gif b/assets/newsletter-002/shadows.gif new file mode 100644 index 000000000..1a61494e5 Binary files /dev/null and b/assets/newsletter-002/shadows.gif differ diff --git a/assets/newsletter-002/space-shooter.gif b/assets/newsletter-002/space-shooter.gif new file mode 100644 index 000000000..7c237179d Binary files /dev/null and b/assets/newsletter-002/space-shooter.gif differ diff --git a/assets/newsletter-002/splines.png b/assets/newsletter-002/splines.png new file mode 100644 index 000000000..2162c59dd Binary files /dev/null and b/assets/newsletter-002/splines.png differ diff --git a/assets/newsletter-002/stabman-overworld.png b/assets/newsletter-002/stabman-overworld.png new file mode 100644 index 000000000..ee0d59f84 Binary files /dev/null and b/assets/newsletter-002/stabman-overworld.png differ diff --git a/assets/newsletter-002/suzanne_lit.png b/assets/newsletter-002/suzanne_lit.png new file mode 100644 index 000000000..9640c0d7a Binary files /dev/null and b/assets/newsletter-002/suzanne_lit.png differ diff --git a/assets/newsletter-002/tennis-academy.gif b/assets/newsletter-002/tennis-academy.gif new file mode 100644 index 000000000..829d37278 Binary files /dev/null and b/assets/newsletter-002/tennis-academy.gif differ diff --git a/assets/newsletter-002/texture-synthesis.jpg b/assets/newsletter-002/texture-synthesis.jpg new file mode 100644 index 000000000..df25f62ee Binary files /dev/null and b/assets/newsletter-002/texture-synthesis.jpg differ diff --git a/assets/newsletter-002/vallentin-voxel-terrain.jpeg b/assets/newsletter-002/vallentin-voxel-terrain.jpeg new file mode 100644 index 000000000..4f9bf5f9f Binary files /dev/null and b/assets/newsletter-002/vallentin-voxel-terrain.jpeg differ diff --git a/assets/newsletter-002/veloren-town.png b/assets/newsletter-002/veloren-town.png new file mode 100644 index 000000000..1261c6a8e Binary files /dev/null and b/assets/newsletter-002/veloren-town.png differ diff --git a/assets/newsletter-002/wraith-def.jpeg b/assets/newsletter-002/wraith-def.jpeg new file mode 100644 index 000000000..7013e8708 Binary files /dev/null and b/assets/newsletter-002/wraith-def.jpeg differ diff --git a/assets/newsletter-002/xprite-demo.gif b/assets/newsletter-002/xprite-demo.gif new file mode 100644 index 000000000..142b12d45 Binary files /dev/null and b/assets/newsletter-002/xprite-demo.gif differ diff --git a/assets/newsletter-002/zemeroth.png b/assets/newsletter-002/zemeroth.png new file mode 100644 index 000000000..edf4102c6 Binary files /dev/null and b/assets/newsletter-002/zemeroth.png differ