diff --git a/content/posts/newsletter-004/amethyst-logo.png b/content/posts/newsletter-004/amethyst-logo.png new file mode 100644 index 000000000..6d7116659 Binary files /dev/null and b/content/posts/newsletter-004/amethyst-logo.png differ diff --git a/content/posts/newsletter-004/antorum.jpeg b/content/posts/newsletter-004/antorum.jpeg new file mode 100644 index 000000000..315908847 Binary files /dev/null and b/content/posts/newsletter-004/antorum.jpeg differ diff --git a/content/posts/newsletter-004/asteroids-demo.gif b/content/posts/newsletter-004/asteroids-demo.gif new file mode 100644 index 000000000..b3dfc154a Binary files /dev/null and b/content/posts/newsletter-004/asteroids-demo.gif differ diff --git a/content/posts/newsletter-004/castles.jpg b/content/posts/newsletter-004/castles.jpg new file mode 100644 index 000000000..d99c9860e Binary files /dev/null and b/content/posts/newsletter-004/castles.jpg differ diff --git a/content/posts/newsletter-004/compact-space.png b/content/posts/newsletter-004/compact-space.png new file mode 100644 index 000000000..dfb912b26 Binary files /dev/null and b/content/posts/newsletter-004/compact-space.png differ diff --git a/content/posts/newsletter-004/conquest.png b/content/posts/newsletter-004/conquest.png new file mode 100644 index 000000000..e29ae4adc Binary files /dev/null and b/content/posts/newsletter-004/conquest.png differ diff --git a/content/posts/newsletter-004/dank_defence.gif b/content/posts/newsletter-004/dank_defence.gif new file mode 100644 index 000000000..3945d5128 Binary files /dev/null and b/content/posts/newsletter-004/dank_defence.gif differ diff --git a/content/posts/newsletter-004/embark.png b/content/posts/newsletter-004/embark.png new file mode 100644 index 000000000..b8e4d383b Binary files /dev/null and b/content/posts/newsletter-004/embark.png differ diff --git a/content/posts/newsletter-004/erasterra.png b/content/posts/newsletter-004/erasterra.png new file mode 100644 index 000000000..8f4e2670c Binary files /dev/null and b/content/posts/newsletter-004/erasterra.png differ diff --git a/content/posts/newsletter-004/fedor-defense.gif b/content/posts/newsletter-004/fedor-defense.gif new file mode 100644 index 000000000..b45f1abac Binary files /dev/null and b/content/posts/newsletter-004/fedor-defense.gif differ diff --git a/content/posts/newsletter-004/food_truck_cropped.jpg b/content/posts/newsletter-004/food_truck_cropped.jpg new file mode 100644 index 000000000..7bc7699b4 Binary files /dev/null and b/content/posts/newsletter-004/food_truck_cropped.jpg differ diff --git a/content/posts/newsletter-004/garden.jpeg b/content/posts/newsletter-004/garden.jpeg new file mode 100644 index 000000000..27c06ca6c Binary files /dev/null and b/content/posts/newsletter-004/garden.jpeg differ diff --git a/content/posts/newsletter-004/gh-gameoff.gif b/content/posts/newsletter-004/gh-gameoff.gif new file mode 100644 index 000000000..b98e4ed61 Binary files /dev/null and b/content/posts/newsletter-004/gh-gameoff.gif differ diff --git a/content/posts/newsletter-004/gh-gameoff.png b/content/posts/newsletter-004/gh-gameoff.png new file mode 100644 index 000000000..1141a3b41 Binary files /dev/null and b/content/posts/newsletter-004/gh-gameoff.png differ diff --git a/content/posts/newsletter-004/iced.gif b/content/posts/newsletter-004/iced.gif new file mode 100644 index 000000000..6ab6a9781 Binary files /dev/null and b/content/posts/newsletter-004/iced.gif differ diff --git a/content/posts/newsletter-004/index.md b/content/posts/newsletter-004/index.md index 7f0c96ee5..66b645289 100644 --- a/content/posts/newsletter-004/index.md +++ b/content/posts/newsletter-004/index.md @@ -3,7 +3,7 @@ title = "This Month in Rust GameDev #4 - November 2019" draft = true +++ - + Welcome to the fourth issue of the Rust GameDev Workgroup’s monthly newsletter. @@ -16,8 +16,13 @@ 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] +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 +[wgpu-v0-4]: https://reddit.com/r/rust_gamedev/comments/drcje5/wgpu04_is_out +[wgpu]: https://github.com/gfx-rs/wgpu +[gfx-hal-0.4]: https://reddit.com/r/rust/comments/dm89t2/gfxhal_version_04_release +[old-gfx-post]: https://gfx-rs.github.io/2019/10/01/update.html + +### Book: [Learn Luminance][luminance-book] + +[luminance] is a type-safe, type-level and stateless Rust graphics framework. + +This month, [@phaazon] released a ["Learn Luminance"][luminance-book] book. +Luminance's wiki was deprecated and the book is now the central reference +to onboard newcomers to use luminance as well as people +who would like to give luminance a try and who knows nothing about rendering. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/e3662k/learn_luminance_the_book)_ + +[luminance]: https://github.com/phaazon/luminance-rs +[luminance-book]: https://rust-tutorials.github.io/learn-luminance +[@phaazon]: https://github.com/phaazon + +------ + +Btw, [@resinten shared a video is working on a game using luminance][resinten-gif]: + +[![space ship pew pew](luminance-space-game.gif)][resinten-gif] + +[@resinten]: https://twitter.com/resinten +[resinten-gif]: https://twitter.com/resinten/status/1194825522418765826 + +### [Pixels][pixels] + +![Pixels logo](pixels.png) + +[Pixels][pixels] by [@kodewerx] is a tiny hardware-accelerated +pixel frame buffer based on wgpu. +It's supposed to be used for emulators, software rendering, +2D animations and games prototyping. + +Check out [the URLO announcement post][pixels-urlo-ann]. + +_Discussions: +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/drunej/announcing_pixels_hardwareaccelerated_pixel_frame)_ + +[pixels]: https://github.com/parasyte/pixels +[pixels-urlo-ann]: https://users.rust-lang.org/t/announcing-pixels-hardware-accelerated-pixel-frame-buffer/34326/1 +[@kodewerx]: https://twitter.com/kodewerx + +### [Metropolis][metropolis] + +[metropolis] by [@GuyL99] +is a high-level graphics renderer, with easy functions to use. + +> This crate should make graphics programming easy with functions +> like rect, ellipse, line, text, and such, +> and it's fast with 60-120 FPS on a bad computer. + +_Discussions: +[/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/e3lfr7/new_graphics_renderer_metropolis)_ + +[metropolis]: https://github.com/GuyL99/metropolis +[@GuyL99]: https://github.com/GuyL99 + +### [skulpin] + +[![physics demo video](skuplin.jpeg)][skulpin-video] + +^ Click to see [a demo video][skulpin-video]. + +[skulpin] by [@aclysma] provides an easy option for drawing hardware-accelerated 2D +by combining Vulkan and [Skia]. + +[skulpin]: https://github.com/aclysma/skulpin +[skulpin-video]: https://www.youtube.com/watch?v=El99FgGSzfg +[@aclysma]: https://twitter.com/aclysma +[Skia]: https://skia.org + +### [ultraviolet] v0.2 + +[ultraviolet] v0.2 were released by [@fu5ha]. +This release introduces [Bivectors] and [Rotors] and improved usability. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/dt9zhz/ultraviolet_02_released)_ + +[ultraviolet]: https://github.com/termhn/ultraviolet +[@fu5ha]: https://twitter.com/fu5ha +[SIMD]: https://en.wikipedia.org/wiki/SIMD +[Bivectors]: https://en.wikipedia.org/wiki/Bivector +[Rotors]: https://en.wikipedia.org/wiki/Rotor_(mathematics) + +------ + +![rayn fractal render example](rayn-render.png) + +Also, [Rayn v0.3 was released recently][rayn-v0-3] - it's a CPU-based +path tracing renderer focused on rendering SDFs (specifically fractals) +that is based on [ultraviolet]. + +[rayn]: https://github.com/termhn/rayn +[rayn-v0-3]: https://reddit.com/r/rust/comments/dxjn64/rayn_03_a_major_update_with_deeply_integrated/ + +### [Mun v0.1][mun-v0-1] + +![Mun logo](mun_logo.png) + +[Mun][mun] is a scripting language for gamedev focused +on quick iteration times that is written in Rust. + +> As a language, Mun is still far from production-ready, +> but this release gives you a glimpse of what +> natively supported hot reloading will look like in the future. +> The purpose of this release is to showcase our progress and gather feedback +> from those brave souls willing to try out Mun at this early stage. + +To get started, read [the Mun Book][mun-book] +and have a look at [Rust examples][mun-examples]. + +For the full roadmap of Mun, have a look at their [Trello board][mun-trello]. + +_Discussions: +[/r/rust](https://reddit.com/r/rust/comments/duw3ls/mun_v010_released)_ + +[mun]: https://mun-lang.org +[mun-v0-1]: https://mun-lang.org/blog/2019/11/11/release-mun-v0-1-0 +[mun-book]: https://docs.mun-lang.org +[mun-examples]: https://github.com/mun-lang/mun/tree/master/crates/mun_runtime/examples +[mun-trello]: https://trello.com/b/ZcMiREnC/mun-roadmap + +### [glsl v3.0][glsl-v3-0] + +[glsl] is a crate to parse GLSL formatted sources into a typed AST. +The crate exposes several methods, types and modules +to perform transformations on that AST, among outputting GLSL, +SPIR-V generation and visiting the AST with possible in-place mutations. + +[glsl v3.0][glsl-v3-0] was released by [@phaazon]: + +- the CPP directives (e.g. `#line`, `#pragma`, `#ifdef`, etc.) are now all implemented; +- improved parsing of deeply nested expressions; +- multiline annotations (\) is now supported as a best-effort; +- other bugfixes. + +[glsl]: https://crates.io/crates/glsl +[glsl-v3-0]: https://reddit.com/r/rust/comments/dw87um/glsl30_official_release_announcement + +### [SPIR-Q][spir-q] + +![example output](spir-q.png) + +[SPIR-Q][spir-q] is a lightweight [SPIR-V] query library. + +> SPIR-Q <...> can be very useful for dynamic graphics/compute pipeline construction, +> shader debugging and so on. +> SPIR-Q is currently compatible with a subset of SPIR-V 1.5, +> with most of graphics capabilities but no OpenCL kernel capabilities covered. +> Btw, SPIR-Q currently only depends on the Rust standard library. + +_Discussions: +[/r/rust](https://reddit.com/r/rust_gamedev/comments/e1ft1k/spirq_spirv_metadata_extraction_library)_ + +[spir-q]: https://github.com/PENGUINLIONG/spirq-rs +[SPIR-V]: https://en.wikipedia.org/wiki/Standard_Portable_Intermediate_Representation + +### [Iced: Beta Version][iced-beta] + +![Iced demo](iced.gif) + +[Iced][iced] is a renderer-agnostic GUI library focused on simplicity +and type-safety. + +This month, a [beta version of Iced was released][iced-beta]. +The most important new features are: + +- A [basic renderer](https://github.com/hecrj/iced/pull/22) + built on top of [wgpu]; +- A windowing shell powered by [winit]; +- A [web runtime](https://github.com/hecrj/iced/pull/17) + based on [dodrio] (try the tour on [iced.rs]); +- First-class [async actions](https://github.com/hecrj/iced/pull/62), + leveraging futures; +- New widgets, like [text inputs](https://github.com/hecrj/iced/pull/37) + and [scrollables](https://github.com/hecrj/iced/pull/35). + +Also, [Cryptowatch is now sponsoring the development of Iced!][iced-crypto] + +[iced]: https://github.com/hecrj/iced +[iced.rs]: https://iced.rs +[iced-beta]: https://reddit.com/r/rust/comments/e1jckj/iced_a_crossplatform_gui_library_new_release +[winit]: https://github.com/rust-windowing/winit +[iced-crypto]: https://blog.cryptowat.ch/2019/11/25/sponsoring-rust-gui-library-iced +[dodrio]: https://github.com/fitzgen/dodrio + +### Embark's Stockholm Rust Meetup and Newsletter + +![Embark logo white on black](embark.png) + +Videos from [Embark]'s Stockholm Rust Meetup arrived: + +- ["An Unholy Fusion of Rust and C++ in physx-rs"][embark-video-1] - + [Tomasz Stachowiak][@h3r2tic], senior software engineer at Embark, + details their experiences combining Rust and C++ code + during the creation of the physx-rs open source project + \[[/r/rust](https://reddit.com/r/rust/comments/du91t1/an_unholy_fusion_of_rust_and_c_in_physxrs)]; + +- ["Rust, Open Source, Game Dev"][embark-video-2] - + [Jake Shadle][@Ca1ne] explains how Rust, open source, + and game development fit together + \[[/r/rust](https://reddit.com/r/rust/comments/du9g5d/rust_open_source_game_dev_stockholm_rust_meetup)]; + +Also, [Embark started a newsletter][embark-news]. +Check out the first issue +["11/08/2019 - Rust, Blender, Hacktoberfest, and more: Newsletter 001 from Embark"][embark-news-1]. + +[Embark]: https://embark.rs +[embark-video-1]: https://youtube.com/watch?v=RxtXGeDHu0w +[embark-video-2]: https://youtube.com/watch?v=lpOg2nl3kr0 +[embark-news]: https://embark.dev/#newsletter +[embark-news-1]: http://eepurl.com/gI3v89 +[@h3r2tic]: https://twitter.com/h3r2tic +[@Ca1ne]: https://twitter.com/Ca1ne + +### [Creative Coding in Rust with Nannou][nannou-creative] + +![Nannou example screenshot](nannou.png) + +A beginner-level tutorial article teaching how to build a small demo +with the [nannou] creative coding framework. + +[nannou-creative]: https://dev.to/deciduously/creative-coding-in-rust-with-nannou-1lbl +[nannou]: https://nannou.cc + +### [RLTK][rltk-rs] & [Rust Roguelike Tutorial][roguelike-book] + +![Dungeon generation demo](rogulike-demo.gif) + +[The Roguelike Tutorial][roguelike-book] by [@blackfuture] +includes almost 60 chapters now and continues to grow! + +Some of the November's updates: + +- backtracking/persistent maps, +- dynamic colored lighting, +- town portals, and teleportation in general (including optionally affecting NPCs), +- cheat mode (for testing later maps). + +[roguelike-book]: http://bfnightly.bracketproductions.com/rustbook +[rltk-rs]: https://github.com/thebracket/rltk_rs +[@blackfuture]: https://patreon.com/blackfuture + +### [nes-rust][rust-nes-src] - WASM [NES] Emulator + +[![Screenshot of the NES emulator](nes-wasm.gif)][rust-nes-demo] + +[nes-rust][rust-nes-src] by [@superhoge] - +[NES]\(Famicom) emulator in Rust on the Web, compiled to WASM. + +Check out the [online Demo][rust-nes-demo]. + +[NES]: https://en.wikipedia.org/wiki/Nintendo_Entertainment_System +[rust-nes-demo]: https://raw.githack.com/takahirox/nes-rust/master/index.html +[rust-nes-src]: https://github.com/takahirox/nes-rust +[@superhoge]: https://twitter.com/superhoge + +### Amethyst + +![Amethyst logo](amethyst-logo.png) + +- [Blaine Price] is working on a “The Ten Top” game and shared a + ["Rustlang Up Some Grub at The Ten Top"](https://blaineprice.me/posts/rustlang-up-some-grub) + devlog about dependency graphs; + + ![food truck](food_truck_cropped.jpg) + +- ["[RFC Discussion] Legion ECS Evolution"](https://github.com/amethyst/rfcs/issues/22) + \[[/r/rust](https://reddit.com/r/rust/comments/duki8d/amethyst_legion_ecs_rfc), + [forum](https://community.amethyst.rs/t/legion-ecs-discussion/965)]; + +- [@mvlabat] posted + ["How can we improve custom shaders user experience?"](https://community.amethyst.rs/t/how-can-we-improve-custom-shaders-user-experience/1230); + +- ["Future of nalgebra and math in Amethyst"](https://community.amethyst.rs/t/future-of-nalgebra-and-math-in-amethyst/1228) + discussion; + +- ["Skepticism about Rendy"](https://community.amethyst.rs/t/skepticism-about-rendy/1221) discussion; + +- [A thread by @obiwanus about long link time](https://community.amethyst.rs/t/obiwanuss-long-link-time-feedback/1207); + +[Blaine Price]: https://blaineprice.me +[@mvlabat]: https://github.com/mvlabat ## Popular Workgroup Issues in Github +- [#50 "Linking Time"](https://github.com/rust-gamedev/wg/issues/50); +- [#51 "Using wasm-bindgen for games"](https://github.com/rust-gamedev/wg/issues/51); +- [#68 "Modding"](https://github.com/rust-gamedev/wg/issues/68); +- [#69 "Input Handling"](https://github.com/rust-gamedev/wg/issues/69); +- [#71 "Proof Of Concept Crate: Simplistic Bump Allocator"](https://github.com/rust-gamedev/wg/issues/71); +- [#73 "Membership Listing"](https://github.com/rust-gamedev/wg/issues/73); + ## Meeting Minutes @@ -94,24 +740,65 @@ or [join the next meeting][join]. -- [Add assets (graphics, levels, sounds) to Le Train Dispatcher][ltd-contributing] - +- [@kyren is looking for a new maintainer for "rlua"][rlua-maintainer]; +- [Add assets (graphics, levels, sounds) to Le Train Dispatcher][ltd-contributing]; +- [/r/rust: "Need help porting steam libraries to rust"][help-steam-libs]; +- [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]; + +[help-steam-libs]: https://reddit.com/r/rust/comments/diuqg7/need_help_porting_steam_libraries_to_rust +[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 [ltd-contributing]: https://itch.io/t/616119/contributing +[rlua-maintainer]: https://reddit.com/r/rust/comments/dyhylu/luster_lua_vm_in_rust_this_project_is_currently ## Bonus +Just an interesting Rust gamedev link from the past. :) + +[![Pascal Penguin logo](penguin.png)][penguin-video] + +^ _click to see the [release trailer][penguin-video]_ + +["Adventures of Pascal Penguin"][penguin-about] +by [Matthew Michelotti](http://luduminis.com) +is a 2D grid-based puzzle game with levels designed around slippery ice. + +> Push blocks and bounce off bumpers as you try +> to reach the crystal at the end of each level. +> Grab invisibility orbs to walk through solid objects. +> Build a safe path over boiling lava and ice-cold water. +> There are 40 levels spread out across 5 zones. +> Can you complete them all? + +Written using the [Gate][gate] game engine. + +[penguin-video]: https://youtube.com/watch?v=EgFr73AUwps +[penguin-about]: http://luduminis.com/pascal/about/ +[penguin-play]: http://luduminis.com/pascal/ +[gate]: + ------ That's all news for today, thanks for reading! -Want something mentioned in the next newsletter? -[Send us a pull request][pr]. -Feel free to send PRs about your own projects! - -Also, subscribe to [@rust_gamedev on Twitter][@rust_gamedev] +Subscribe to [@rust_gamedev on Twitter][@rust_gamedev] or [/r/rust_gamedev subreddit][/r/rust_gamedev] if you want to receive fresh news!