diff --git a/content/news/052/bevypunk.jpg b/content/news/052/bevypunk.jpg new file mode 100644 index 000000000..5793c47e1 Binary files /dev/null and b/content/news/052/bevypunk.jpg differ diff --git a/content/news/052/egui_ratatui.jpg b/content/news/052/egui_ratatui.jpg index a1cee5a86..3e11e66c4 100644 Binary files a/content/news/052/egui_ratatui.jpg and b/content/news/052/egui_ratatui.jpg differ diff --git a/content/news/052/godot-rust.jpg b/content/news/052/godot-rust.jpg new file mode 100644 index 000000000..7cf0cd82d Binary files /dev/null and b/content/news/052/godot-rust.jpg differ diff --git a/content/news/052/godot-rust.png b/content/news/052/godot-rust.png deleted file mode 100644 index 3c3110bee..000000000 Binary files a/content/news/052/godot-rust.png and /dev/null differ diff --git a/content/news/052/gunbug.jpg b/content/news/052/gunbug.jpg index 126c9a289..075cc4a70 100644 Binary files a/content/news/052/gunbug.jpg and b/content/news/052/gunbug.jpg differ diff --git a/content/news/052/haalka.mp4 b/content/news/052/haalka.mp4 new file mode 100644 index 000000000..16000db7a Binary files /dev/null and b/content/news/052/haalka.mp4 differ diff --git a/content/news/052/index.md b/content/news/052/index.md index a7d0a7761..ddecd813d 100644 --- a/content/news/052/index.md +++ b/content/news/052/index.md @@ -31,20 +31,15 @@ Feel free to send PRs about your own projects! - [Announcements](#announcements) - [Game Updates](#game-updates) - - [Untitled Pixel Wizards Game](#untitled-pixel-wizards-game) - [Engine Updates](#engine-updates) - [Learning Material Updates](#learning-material-updates) - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) -- [Popular Workgroup Issues in GitHub](#popular-workgroup-issues-in-github) -- [Other News](#other-news) - - [Metalmancy @ OpenSauce](#metalmancy-opensauce) -- [Meeting Minutes](#meeting-minutes) -- [Discussions](#discussions) -- [Requests for Contribution](#requests-for-contribution) +- [Interviews](#interviews) +- [Blog Posts](#blog-posts) - [Jobs](#jobs) -- [Bonus](#bonus) -- [Future news](#future-news) +- [Misc. Links](#misc-links) +- [Future News](#future-news) <!-- Ideal section structure is: @@ -70,15 +65,14 @@ If needed, a section can be split into subsections with a "------" delimiter. ## Announcements +TODO: I'll be working on adding an email subscription this weekend, so I'll write about it here once that's done :) - Jan + ## Game Updates ### [Untitled Pixel Wizards Game][pixel-wizards] {{ embed_video(type="video/mp4", src="untitled-pixel-wizards-game.mp4", -caption="Enemies now perceive, pursue and attack.. and occasionally get burned to death.") }} - -[][pixel-wizards] -_Enemies now perceive, pursue and attack.. and occasionally get burned to death._ +caption="Enemies now perceive, pursue and attack.. and occasionally get burned to death.") }} [Untitled Pixel Wizards Game][pixel-wizards] is a local-multiplayer [Noita]-like platformer about killing baddies using spells powered by pixel physics. This month was focused on juicing up said baddies: @@ -99,19 +93,20 @@ killing baddies using spells powered by pixel physics. This month was focused on ### [Gunbug][gunbug] -[][gunbug] +[][gunbug] +_Gunbugs shooting at a bunch of eggplants_ Gunbug is a 2D online co-op horde survival shoot'em up game. -Gunbug focuses on shooting lots of enemies with lots of guns. It can be played +It focuses on shooting lots of enemies with lots of guns. It can be played solo or with up to 10 players. -It is built with the [Bevy] game engine. It uses [bevy_rapier] for ray casting, -[bevy_kira_audio] for audio, and [renet] for networking. iOS and MacOS versions -are built with [xbuild]. +It is built with [Bevy] and uses [bevy_rapier] for ray casting, +[bevy_kira_audio] for audio, and [renet] for networking. +The iOS and macOS versions are built with [xbuild]. -You can wishlist the game on [Steam][gunbug]. Playtests start in the upcoming -months. iOS and Android builds already work, but store pages don't exist yet. +You can wishlist the game on [Steam][gunbug]. Playtests start in the upcomingv months. +iOS and Android builds already work, but store pages don't exist yet. [gunbug]: https://store.steampowered.com/app/2946990?utm_source=this_month_in_rust [xbuild]: https://github.com/rust-mobile/xbuild @@ -124,7 +119,7 @@ months. iOS and Android builds already work, but store pages don't exist yet. ### [godot-rust] - + godot-rust ([GitHub][gd-github], [Discord][gd-discord], [Mastodon][gd-mastodon], [Twitter][gd-twitter]) by [@Bromeon] provides Rust bindings for the [Godot engine](https://godotengine.org/). @@ -156,8 +151,54 @@ _See also the [devlog article][gd-dev-june]._ [gd-twitter]: https://twitter.com/GodotRust [godot-rust]: https://godot-rust.github.io +### [Bevy 0.14 Release Candidate][bevy-0.14-rc] + + +_Sharp Screen-Space Reflections in Bevy 0.14_ + +The Bevy game engine is gearing up to release version 0.14. +The (probably) last release candidate is out now and ready for testing. +If you want to help out, +check out the [draft release notes][bevy-0.14-rc] and the [draft migration guide][bevy-0.14-rc-migration] and report any issues you find. + +[bevy-0.14-rc]: https://bevyengine.org/news/draft-bevy-0-14/ +[bevy-0.14-rc-migration]: https://bevyengine.org/learn/migration-guides/0-13-to-0-14/ + ## Learning Material Updates +### [Bevy Cheatbook][bevy-cheatbook] + +The community-beloved unofficial [Bevy Cheatbook][bevy-cheatbook] by Ida "Iyes" is a collection of Bevy tutorials, recipes and advanced documentation. +The cheatbook is currently in the process of being updated to Bevy 0.14 and now features the following new chapters: +- [Transform Interpolation/Extrapolation](https://bevy-cheatbook.github.io/cookbook/smooth-movement.html): + How to get smooth-looking movement on-screen for things you simulate in FixedUpdate +- [Internal Parallelism](https://bevy-cheatbook.github.io/programming/par-iter.html): + Multithreading within a Bevy system +- [One-Shot Systems](https://bevy-cheatbook.github.io/programming/one-shot-systems.html): + Systems that you run on-demand, not in a schedule +- [Background Computation](https://bevy-cheatbook.github.io/fundamentals/async-compute.html): + How to do processing that may span multiple frame updates and not hold up the game's framerate with long CPU work. + +[bevy-cheatbook]: https://bevy-cheatbook.github.io/ + +### [Game development in Rust with Macroquad][macro-learning] + +Olle Wreede of [Agical][agical] published a [complete guide][macro-learning] on +how to develop a classic 2D shoot 'em up game using the game library +Macroquad and the Rust programming language. + +It covers everything from a simple Hello World Macroquad application to adding graphics, audio, a shader, a graphical menu, +and how to release the game on multiple platforms. + +[agical]: https://www.agical.se/ +[macro-learning]: <https://mq.agical.se/> + +### Other learning materials + +- [Using tracing to profile a Bevy project](https://rornic.com/posts/using-tracing-to-profile-a-bevy-project/) +- [Bevycation of Brackeys First Game in Godot Tutorial](https://github.com/Occuros/bevycation_brackeys_first-game-in-godot): + A Bevy version of Brackeys' ["How to make a Video Game - Godot Beginner Tutorial"](https://www.youtube.com/watch?v=LOhfqjmasi0) + ## Tooling Updates ### [Rusty Playdate] @@ -226,15 +267,58 @@ educational software at a startup with no issues so far. [egui]: https://github.com/emilk/egui [erat_web]: https://gold-silver-copper.github.io/ -## Popular Workgroup Issues in GitHub +### [FMOD-oxide][fmod-oxide] + +Safe rust bindings to the FMOD sound engine. This crate tries to be as rusty and low-cost as possible, without comprimising on any APIs. +Certain APIs, such as loading banks from a pointer, are marked as unsafe, but are still available for use. + +[fmod-oxide]: https://crates.io/crates/fmod-oxide + +### [Bevy Lunex][bevy-lunex] + + +_Bevypunk: a recreation of Cyberpunk 2077's UI made with Lunex_ + + +Lunex is a path based retained layout engine for Bevy entities, built around vanilla Bevy ECS. +It gives you the ability to make your own custom UI using regular ECS like every other part of your app. +Notably, this includes world-space 3D UI! + +The above screenshot is from the [Bevypunk UI Web Demo][bevypunk], which includes a main menu and a character creation screen. -<!-- Up to 10 links to interesting issues --> +You can get started by reading the [bevy_lunex book][bevy-lunex-book]. -## Other News +[bevy-lunex]: https://github.com/bytestring-net/bevy_lunex +[bevy-lunex-book]: https://bytestring-net.github.io/bevy_lunex/ +[bevypunk]: https://idedary.itch.io/bevypunk + +### [haalka] + +{{ embed_video(type="video/mp4", src="haalka.mp4", caption="A Minecraft-like UI made with haalka") }} + +হালকা: _in bengali, haalka means "light" (e.g. not heavy) and can also be used to mean "easy"_ + +Haalka is an ergonomic reactivity library powered by the [FRP](https://en.wikipedia.org/wiki/Functional_reactive_programming) signals of [futures-signals](https://github.com/Pauan/rust-signals). +It is a port of the web UI libraries [MoonZoon](https://github.com/MoonZoon/MoonZoon) and [Dominator](https://github.com/Pauan/rust-dominator) +and offers the same signal semantics as a thin layer on top of bevy_ui. + +While haalka is primarily targeted at UI and provides high level UI abstractions as such, +its core abstraction can be used to manage signals-powered reactivity for any entity, not just bevy_ui nodes. + +[haalka]: https://github.com/databasedav/haalka + + +### Other Library Updates and Releases + +- [gdext-coroutines](https://github.com/Houtamelo/gdext_coroutines): Run Rust coroutines in Godot 4.2+ (through GDExtension), inspired on Unity's Coroutines design. +- [FunDSP 0.18](https://github.com/SamiPerttu/fundsp): FunDSP is an audio DSP ([digital signal processing](https://en.wikipedia.org/wiki/Digital_signal_processing)) + library for audio processing and synthesis. This release is a rewrite that adds no_std and SIMD support. + +## Interviews ### [Metalmancy @ OpenSauce][metalmancy_interview] - + _Arcade cabinet close up_ [Metalmancy][metalmancy_website] are creating custom and configurable arcade machines. Their flagship game [Thetawave] is coded in Rust. @@ -242,42 +326,71 @@ _Arcade cabinet close up_ Hyelim of [Framework][framework_website] interviewed Carlo and Joanna on their games and arcade machines at [OpenSauce][opensauce_website]. - - [metalmancy_interview]: https://www.youtube.com/watch?v=qUIAnZ0cvvo&t=291s [metalmancy_website]: https://www.micronote.tech/ [framework_website]: https://frame.work [opensauce_website]: https://opensauce.com/ [Thetawave]: https://store.steampowered.com/app/2427510/Thetawave -<!-- One-liners for plan items that haven't got their own sections. --> +### [Tiny Glade Developers Discuss Bevy, Proceduralism, Publishers & Cozy Games][tiny-glade-interview] + + +_An idyllic scenery made in Tidy Glade_ -## Meeting Minutes +To celebrate the release of Tiny Glade's [demo version][tiny-glade-steam], Pounce Light's Anastasia Opara and +Tomasz Stachowiak have joined 80 Level [in an interview][tiny-glade-interview] to discuss the game's history, proceduralism, +Bevy, Rust, self-publishing, and the "cozy games" genre. -<!-- Up to 10 most important notes + a link to the full details --> -[See all meeting issues][label_meeting] including full text notes -or [join the next meeting][join]. +[tiny-glade-interview]: https://80.lv/articles/exclusive-tiny-glade-developers-discuss-bevy-proceduralism-publishers-cozy-games +[tiny-glade-steam]: https://store.steampowered.com/app/2198150/Tiny_Glade/ + +<!-- One-liners for plan items that haven't got their own sections. --> + +## Blog Posts -[label_meeting]: https://github.com/rust-gamedev/wg/issues?q=label%3Ameeting +### [Dioxus Labs + "High-level Rust"][dioxus-post] -## Discussions +This post by the founder of [Dioxus Labs][dioxus-labs] is a direct response to +the recently published ["Leaving Rust gamedev after 3 years"][leaving-post] by LogLogGames. +If you've missed the original post, it has made its rounds as a well-written critique of Rust's gamedev ecosystem and shortcomings +inherent to the language itself. -<!-- Links to handpicked reddit/twitter/urlo/etc threads that provide -useful information --> +[Dioxus Labs + "High-level Rust"][dioxus-post] is a detailed response to the original post, outlining concrete steps to improve the situation +and signaling the author's readiness to fund the development of features they see as necessary for the ecosystem to thrive. -## Requests for Contribution +_Discussions: [lobste.rs](https://lobste.rs/s/dsqumn/dioxus_labs_high_level_rust), +[/r/rust](https://www.reddit.com/r/rust/comments/1dkzzn5/dioxus_labs_highlevel_rust/), +[Hacker News](https://news.ycombinator.com/item?id=40766805)_ + +[dioxus-post]: https://dioxus.notion.site/Dioxus-Labs-High-level-Rust-5fe1f1c9c8334815ad488410d948f05e +[dioxus-labs]: https://dioxuslabs.com/ +[leaving-post]: https://loglog.games/blog/leaving-rust-gamedev/ -<!-- Links to "good first issue"-labels or direct links to specific tasks --> ## Jobs -<!-- An optional section for new jobs related to Rust gamedev --> +Ubisoft Montreal is searching for an [online Rust programmer][ubisoft-job] +for an unannounced project. + +[ubisoft-job]: https://www.ubisoft.com/en-us/company/careers/search/743999993500090-programmer-online-unannounced-project + +## Misc. Links + +### Notable GDC talks + +- [Larian Cinematics: A Top-Down Look at Our Bottom-Up Approach in 'Baldur's Gate 3'](https://www.youtube.com/watch?v=MdmY9Mt-vz8&t) +- ['Valheim': Vikings, Roadmaps & Buying a Horse During Early Access](https://www.youtube.com/watch?v=YoOCUpdYYm4) -## Bonus +### Engine Newsletters -<!-- Bonus section to make the newsletter more interesting -and highlight events from the past. --> +- This Week In Bevy + - [Tiny Glade, VJ performances, and 2d lighting](https://thisweekinbevy.com/issue/2024-06-03-tiny-glade-vj-performances-and-2d-lighting) + - [Bevy 0.14-rc.2, Powerglove, and Soup!](https://thisweekinbevy.com/issue/2024-06-10-bevy-014-rc2-powerglove-and-soup) + - [Meshlets, Stable Interpolation, and Generalized ECS Reactivity with Observers!](https://thisweekinbevy.com/issue/2024-06-17-meshlets-stable-interpolation-and-generalized-ecs-reactivity-with-observers) + - [Water, Global Illumination, and UI toolkits](https://thisweekinbevy.com/issue/2024-06-24-water-global-illumination-and-ui-toolkits) +- This Week In Quads + - [`blocking_event_loop` on ios opengl/metal, Docker article, and libxkbcommon on NixOS](https://macroquad.rs/twiq/week5/) ## Future news diff --git a/content/news/052/metalmancy_interview.jpg b/content/news/052/metalmancy_interview.jpg new file mode 100644 index 000000000..98361d12e Binary files /dev/null and b/content/news/052/metalmancy_interview.jpg differ diff --git a/content/news/052/metalmancy_interview.png b/content/news/052/metalmancy_interview.png deleted file mode 100644 index 86fadca58..000000000 Binary files a/content/news/052/metalmancy_interview.png and /dev/null differ diff --git a/content/news/052/ssr.jpg b/content/news/052/ssr.jpg new file mode 100644 index 000000000..be7913609 Binary files /dev/null and b/content/news/052/ssr.jpg differ diff --git a/content/news/052/tiny-glade.jpg b/content/news/052/tiny-glade.jpg new file mode 100644 index 000000000..62f8a4eec Binary files /dev/null and b/content/news/052/tiny-glade.jpg differ diff --git a/content/news/052/untitled-pixel-wizards-game.gif b/content/news/052/untitled-pixel-wizards-game.gif deleted file mode 100644 index a86116dd6..000000000 Binary files a/content/news/052/untitled-pixel-wizards-game.gif and /dev/null differ diff --git a/templates/shortcodes/embed_video.html b/templates/shortcodes/embed_video.html index 598dc30b7..f9c9f0b77 100644 --- a/templates/shortcodes/embed_video.html +++ b/templates/shortcodes/embed_video.html @@ -5,7 +5,5 @@ #} --> <video controls autoplay muted loop> - <source - type="{{ type }}" src="{{ src }}" - onerror="parentNode.parentElement.innerText = 'Sorry, this video does not exist or your browser does not support the video codec. Try a different browser!'" /> -</video> {% if caption %}<em>{{ caption }}</em>{% endif %} + <source type="{{ type }}" src="{{ get_url(path=page.colocated_path ~ src)}}" /> +</video> {% if caption %}<em>{{ caption }}</em>{% endif %} \ No newline at end of file