diff --git a/content/news/049/8bit-yt.jpg b/content/news/049/8bit-yt.jpg new file mode 100644 index 000000000..dc7dbdc37 Binary files /dev/null and b/content/news/049/8bit-yt.jpg differ diff --git a/content/news/049/bevy-bd.png b/content/news/049/bevy-bd.png new file mode 100644 index 000000000..1ca54540a Binary files /dev/null and b/content/news/049/bevy-bd.png differ diff --git a/content/news/049/cnc.png b/content/news/049/cnc.png new file mode 100644 index 000000000..9d5a7859e Binary files /dev/null and b/content/news/049/cnc.png differ diff --git a/content/news/049/hackerpg.gif b/content/news/049/hackerpg.gif new file mode 100644 index 000000000..d346f3432 Binary files /dev/null and b/content/news/049/hackerpg.gif differ diff --git a/content/news/049/hw-invaders.jpg b/content/news/049/hw-invaders.jpg new file mode 100644 index 000000000..9f66665e8 Binary files /dev/null and b/content/news/049/hw-invaders.jpg differ diff --git a/content/news/049/index.md b/content/news/049/index.md index edd31c68d..6e3d01cd9 100644 --- a/content/news/049/index.md +++ b/content/news/049/index.md @@ -1,7 +1,7 @@ +++ title = "This Month in Rust GameDev #49 - August 2023" transparent = true -date = 2023-09-16 +date = 2023-10-20 draft = true +++ @@ -9,6 +9,8 @@ draft = true + + Welcome to the 49th issue of the Rust GameDev Workgroup's monthly newsletter. [Rust] is a systems language pursuing the trifecta: @@ -36,10 +38,8 @@ Feel free to send PRs about your own projects! - [Tooling Updates](#tooling-updates) - [Library Updates](#library-updates) - [Other News](#other-news) -- [Popular Workgroup Issues in Github](#popular-workgroup-issues-in-github) - [Discussions](#discussions) - [Requests for Contribution](#requests-for-contribution) -- [Jobs](#jobs) + +### [Mage Rush][magerush-itch] + +![Title + "Press Z to start"](magerush.png) + +[Mage Rush][magerush-itch] ([GitHub][magerush-src]) by [@schweller] +is a micro vampire-survivors-based game made with Macroquad for LOWREZJAM. + +> The session runs for 4 minutes and your goal is to survive. +> You have an unlimited dash (no cooldown) and a very unbalanced +> "difficulty management" system. +> There are three different types of enemies: +> +> - A little slime that chases the Mage; +> - A flying Bat, that spawns from left or right of the Mage; +> - An evil plant-turret that shoots projectiles at the Mage. +> +> After killing enemies, you earn XP and can level up, eventually. +> Leveling grants you a passive upgrade. There are 6 distinct in total. + +You can [play the web build on itch.io][magerush-itch]. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/15s1i28/magerush)_ + +[magerush-itch]: https://iinacho.itch.io/mage-rush +[magerush-src]: https://github.com/schweller/vs-demake-lowrezjam2023 +[@schweller]: https://inacio.dev/about + +### [HackeRPG][hackerpg-itch] + +![GIF: a hacker uses a routine to run towards enemy and attack it](hackerpg.gif) + +[HackeRPG][hackerpg-itch] is a WIP action game where you play as a developer +who needs to fight viruses and bugs with coding in real-time. + +August's updates include: + +- In-game IDE improvements: scrolling, autocomplete. +- More in-game language feature: variables, daemons, ifs. +- New commands: raytrace, sleep. +- New enemies: duck method, trojan horse, and 5G tower. +- Reworked upgrade system: all upgrades are hardware ones now. +- The hacking system: it's now possible to control enemies with using viruses. + +Full devlogs: [#2][hackerpg-log-2], [#3][hackerpg-log-3], +[#4][hackerpg-log-4], [#5][hackerpg-log-5]. + +[hackerpg-itch]: https://fellow-pablo.itch.io/hackerpg +[hackerpg-log-2]: https://reddit.com/r/hackerpg/comments/15gxjqu/hackerpg_devlog_2 +[hackerpg-log-3]: https://reddit.com/r/rust_gamedev/comments/15tjrub/hackerpg_devlog_3 +[hackerpg-log-4]: https://reddit.com/r/rust_gamedev/comments/165bmcc/hackerpg_devlog_4 +[hackerpg-log-5]: https://reddit.com/r/rust_gamedev/comments/167y0qh/hackerpg_devlog_5 + ## Engine Updates ### [goku] @@ -296,6 +431,43 @@ _Discussions: [/r/rust](https://reddit.com/r/rust/comments/165luwu/intro_goku)_ [goku-docs]: https://lados-organization.gitbook.io/goku [goku-dis]: https://discord.gg/9TAMqdRyED +### [Rezcraft][rezcraft] + +![blocky terrain and lots of UI dialogs on top: block editor, +app's settings, etc](rezcraft.png) + +[Rezcraft][rezcraft] is a voxel engine written in Rust using wgpu +that supports both native and wasm targets. + +Features: + +- Parallelized world and mesh generation. +- Efficient meshes using [greedy meshing][greedy-meshing]. +- Easily add custom textures and blocks, modify block types at runtime. +- Colored lighting system, sunlight. +- Configurable through in-app settings. +- Native only: transparency and save game system. + +Check out the demo without installation [in the browser][rezcraft-web]. + +[rezcraft]: https://github.com/Shapur1234/Rezcraft +[rezcraft-web]: https://shapur1234.github.io/Rezcraft-Demo +[greedy-meshing]: https://0fps.net/2012/06/30/meshing-in-a-minecraft-game + +### Bevy + +![Bevy's logo with party popper emojis](bevy-bd.png) + +[@cart] released [a blog post][bevy-3y] about the third birthday of the engine with +a reflection on the reached milestones and notable achievements, various metrics, +areas of improvement, future plans, and a call for similar reflection posts +from the Bevy community members. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15nnsba/bevy_third_bd)_ + +[bevy-3y]: https://bevyengine.org/news/bevys-third-birthday +[@cart]: https://mastodon.social/@cart + ## Learning Material Updates ### [Failing to build P2P Multiplayer Pong with Bevy][chrisbiscardi-vid1] @@ -329,6 +501,57 @@ Google Play Store. [mobile-bevy-post]: https://nikl.me/blog/2023/notes_on_mobile_development_with_bevy_2 [android-workflow]: https://nikl.me/blog/2023/github_workflow_to_publish_android_app +### [Faux Pixel Art][faux-pixel-art] + +![A test scene render with a donut, a cone, and Blender's Susanna converted +to dithered pixel-art](oklab_dithered.png) + +[@cosbdev] wrote [a blog post on his approach to faking pixel art][faux-pixel-art]. + +> A long-time dream of mine has been to make a game that uses shaders +> to display 3-dimensional worlds in a classy pixel-art style, +> much like what [@t3ssel8r] has been doing for a while now. +> The appeal was to introduce more advanced techniques +> from the world of 3D graphics into the pixel-art style +> (think lights and shadows, global illumination, refractive materials, etc.) + +The post guides you through setting up Blender scene with pixel filter, +mapping colors to a [palette], +improving the picked colors with the [Oklab][oklab] color space, +and adding dithering for colors and the alpha channel. + +[faux-pixel-art]: https://davjcosby.github.io/all-published/miscellaneous-tech/faux-pixel-art-with-blender,-rust,-fancy-color-spaces-and-'borrowed'-algorithms +[@cosbdev]: https://twitter.com/cosbdev +[palette]: https://lib.rs/palette +[@t3ssel8r]: https://youtube.com/@t3ssel8r +[oklab]: https://bottosson.github.io/posts/oklab + +### [Bare Metal Space Invaders][bare-invaders] + +[![Demo of the working game displayed on a TV screen](hw-invaders.jpg)][bare-invaders-vid] +_[A video][bare-invaders-vid] of the game running on RPi 3B+ +and connected to a monitor with an HDMI cable._ + +[@FedericoPonzi] has [published an article][bare-invaders] on writing +a Space Invaders clone in Rust on Raspberry PI without an OS. + +The article covers setting up a Cargo project, +decoupling the OS code from the game logic code, +implementing a Space Invaders clone in Rust, +basic units that were implemented in order to support the game on a bare metal, +strategies used to improve the code speed and reach a good frame rate. + +The author has also attached some links to resources that they've collected +while putting this project together, as well as some additional resources +that could help you get started on undertaking similar projects. + +The final source code [can be found on GitHub][bare-invaders-src]. + +[@FedericoPonzi]: https://fponzi.me +[bare-invaders]: https://blog.fponzi.me/2023-08-13-bare-metal-space-invaders.html +[bare-invaders-src]: https://github.com/FedericoPonzi/bare-metal-space-invaders +[bare-invaders-vid]: https://youtube.com/watch?v=s18WNg2zbgw + ## Tooling Updates ### [Space editor](space_editor) @@ -354,6 +577,27 @@ and open to contribute for everyone, be it with suggestions, bugs or PRs. [space_editor]: https://github.com/rewin123/space_editor +### [mimiron] + +![demo of the card lookup output](mimiron.png) + +[mimiron] by [@asibahi] is an cli tool to look up Hearthstone cards that +feeds up on the official Blizzard API (you need to have your Blizzard API +credentials as environment variables or as an ".env" file) +and therefore, in theory, always works and always has the official +\- and updated - data for all cards. +Features: + +- Look up constructed cards by name and/or text. +- Look up BG cards by name and/or text. +- Get a card list from a deck code. +- Compare two decks using their codes. + +_Discussions: [/r/rust](https://reddit.com/r/rust/comments/15jqgmf/cli_hearthstone_cards)_ + +[mimiron]: https://github.com/asibahi/mimiron +[@asibahi]: https://github.com/asibahi + ## Library Updates ### [Dexterous Developer][dexterous_developer] @@ -406,9 +650,64 @@ nanogltf comes with a a GL2+/Metal glTF miniquad-based [gltf-models]: https://github.com/KhronosGroup/glTF-Sample-Models [glTF]: https://khronos.org/gltf -## Popular Workgroup Issues in Github +### [unrust] + +[![YouTube preview: Rust code and corresponding C# code](unrust-yt.jpg) +][unrust-yt] + +[unrust] by [@gamedolphin] is an experimental Unity package that lets you +create Rust+Bevy games while using Unity as an editor and graphics frontend. + +> You write your game in bevy, define authoring components, +> and use the full power of the Unity editor to design your scene +> in an almost completely behind the scenes workflow! +> Only works on linux right now, but more coming soon! + +Also, [@gamedolphin released a video][unrust-yt] that takes you through +the basics of using unrust and talks about some of the things +they've encountered while working on it. + +_Discussions: [/r/rust_gamedev](https://reddit.com/r/rust_gamedev/comments/164e5ka/unrust)_ + +[unrust]: https://github.com/gamedolphin/unrust +[unrust-yt]: https://youtube.com/watch?v=-KE3HRgdETs +[@gamedolphin]: https://github.com/gamedolphin - +### [rivet] + +![rivet's admin panel: list of lobbies](rivet-splash.png) + +[Rivet][rivet] ([GitHub][rivet-gh], [Discord][rivet-dis], [Twitter][rivet-twi]) +is an open-source multiplayer game server management solution +made with Rust and Nomad. +Features: + +- Everything is accessible from an easy to use GUI, CLI, or API. +- Serverless Lobbies for auto-scaling game lobbies. +- Flexible matchmaker for placing players in lobbies with no wait times. +- CDN for hosting assets and webpages with a custom domain + or provided rivet.game subdomain. +- Game Guard for DDoS mitigation and managed WebSocket SSL, TCP+TLS, and UDP. +- Streamlined DevOps for teams. +- Unified logging & monitoring & analytics. +- No downtime deploys with easy rollbacks. + +[Here's a quick video guide][rivet-vid] on how to deploy a multiplayer game +in 1 minute. [And here][rivet-docs] you can find an extensive documentation +on building games with Rivet. + +Rivet has just recently went open-source and [@NathanFlurry] shared +[a handful of notes][rivet-r-rust-ann] about tools they've been +attempting to use while building Rivet. + +[rivet]: https://rivet.gg/ +[rivet-gh]: https://github.com/rivet-gg/rivet +[rivet-vid]: https://youtube.com/watch?v=qtzSrmmflHI +[rivet-dis]: https://discord.gg/aXYfyNxYVn +[rivet-twi]: https://twitter.com/rivet_gg +[rivet-docs]: https://rivet.gg/docs/general +[rivet-r-rust-ann]: https://reddit.com/r/rust/comments/15vgx1u/rivet +[@NathanFlurry]: https://github.com/NathanFlurry ## Other News @@ -416,21 +715,59 @@ nanogltf comes with a a GL2+/Metal glTF miniquad-based - Other game updates: - [Tribes][tribes-devlog] got multiplayer support, new art and economics rework. + - exocave - an FPS about exploring a subterranean world - + [got initial support for water voxels dynamics][exocave]. + - Digital Extinction's recent updates include + [new sound effects, god mode][de-10], and + [further progress has been made on multiplayer and networking][de-11]. + - [@TerryBrash is working on a cool looking minimalistic twin-stick shooter][@terrybrash] + with rogue-like elements and "crazy enemy density". +- Other learning material updates: + - [PhaestusFox released more Bevy tutorials on YouTube][@PhaestusFox]: + mostly about integration with Rapier. + - [@squid] wrote [about running a Bevy game in SvelteKit][bevy-svelte-kit]. +- Other tooling updates: + - [bevy_overture_maps] is an example of integration between + [Overture Maps][overture-maps] and Bevy ([video][bevy-overture-video]). +- Other library updates: + - [@tech0tron shared an article][oceanman] about their experience + of building a toy wgpu-based renderer. + - [bevy_mod_raycast] is a small Bevy plugin for mesh ray casting. [tribes-devlog]: https://uvizhe.im/posts/tribes-p2 +[exocave]: https://twitter.com/bencarru/status/1692948311383138492 +[de-10]: https://mgn.cz/blog/de10 +[de-11]: https://mgn.cz/blog/de11 +[@terrybrash]: https://twitter.com/terrybrash/status/1691532596994314240 + +[@PhaestusFox]: https://youtube.com/@PhaestusFox +[bevy-svelte-kit]: https://sneakycrow.dev/blog/2023-07-30-bevy-game-in-svelte-kit +[@squid]: https://cybre.gg/@squid + +[bevy_overture_maps]: https://github.com/alexichepura/bevy_overture_maps +[bevy-overture-video]: https://youtube.com/watch?v=nnRdNHLJxXs +[overture-maps]: https://overturemaps.org + +[oceanman]: https://tech0tron.net/oceanman-v0.4 +[bevy_mod_raycast]: https://github.com/aevyrie/bevy_mod_raycast + + ## Discussions +TODO + +- "Someday, maybe, we will be game" ([1](https://reddit.com/r/rust_gamedev/comments/15w2ir8/someday_maybe_we_will_be_game_i_hope)) +- "Do you write performance tests" ([1](https://reddit.com/r/rust_gamedev/comments/161eaoc/do_you_wirte_performance_tests_for_your_game)) + ## Requests for Contribution -## Jobs - - +TODO ------ diff --git a/content/news/049/magerush.png b/content/news/049/magerush.png new file mode 100644 index 000000000..62c382356 Binary files /dev/null and b/content/news/049/magerush.png differ diff --git a/content/news/049/mimiron.png b/content/news/049/mimiron.png new file mode 100644 index 000000000..ecaf923d4 Binary files /dev/null and b/content/news/049/mimiron.png differ diff --git a/content/news/049/oklab_dithered.png b/content/news/049/oklab_dithered.png new file mode 100644 index 000000000..fd883df00 Binary files /dev/null and b/content/news/049/oklab_dithered.png differ diff --git a/content/news/049/rezcraft.jpg b/content/news/049/rezcraft.jpg new file mode 100644 index 000000000..3019df731 Binary files /dev/null and b/content/news/049/rezcraft.jpg differ diff --git a/content/news/049/rivet-splash.png b/content/news/049/rivet-splash.png new file mode 100644 index 000000000..ca7dc5385 Binary files /dev/null and b/content/news/049/rivet-splash.png differ diff --git a/content/news/049/unrust-yt.jpg b/content/news/049/unrust-yt.jpg new file mode 100644 index 000000000..461d9d605 Binary files /dev/null and b/content/news/049/unrust-yt.jpg differ