Sign in

Mario Morgenthum

@morgenthum.bsky.social
33 followers 14 following 42 posts

Software architect at HUK-COBURG 💻 and math student 🧑‍🎓

PostsRepliesMedia
Mario Morgenthum @morgenthum.bsky.social · 28/09/2026
A first vertical slice of Wild Spikes. New lighting, sounds, and a small playable chapter. More on my blog: morgenthum.dev/blog/a-first... #gamedev #rust #bevy #bevyengine #indiedev #rustlang
085
Mario Morgenthum @morgenthum.bsky.social · 09/07/2026
Saw the examples and thought its more for low poly models. Is it simple to use for blocks/voxels?
100
Mario Morgenthum @morgenthum.bsky.social · 09/07/2026
I am curious: what tools do you use to create voxel-like 3d models for your game? not big Minecraft-style cubes, but more like Teardown. I am considering giving my hedgehog game wild spikes a voxel look. I need mac compatibility and user-friendliness. #gamedev #indiedev #bevy #voxel #teardown
1121
Mario Morgenthum @morgenthum.bsky.social · 09/07/2026
Your assets are great! Would love to build a small game with your assets using bevy. I could imagine a 3d asset pack with voxel-like models would be great. Some nature elements like rocks, flowers, trees and stuff .. like your nature kit, but in voxel style with composable elements? ❤️
010
Mario Morgenthum @morgenthum.bsky.social · 07/07/2026
I used Nomad Sculpt too, its a great tool. Highly recommended because (for me) it feels natural to sculpt with a pencil.
010
Mario Morgenthum @morgenthum.bsky.social · 30/06/2026
runs on my m4 macbook in debug mode without lod or other optimizations with around 100 fps. nice bevy 0.19 performance
010
Mario Morgenthum @morgenthum.bsky.social · 30/06/2026
Released version 0.5 of bevy_map_scatter, a rule based object scattering crate, with bevy 0.19 support and a brand new forest trail example that demonstrates 3d scattering with streaming. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1305
Mario Morgenthum @morgenthum.bsky.social · 21/03/2026
morgenthum.dev/blog/weather...
morgenthum.dev
A weather tablet for quest planning
Wild Spikes now has a weather tablet that shows a forecast, helping the player plan quests around dynamic weather conditions. Built as a standalone app and integrated through a separate crate.
010
Mario Morgenthum @morgenthum.bsky.social · 21/03/2026
It is split into a pure weather_app, which can run standalone, and a weather_tablet crate that renders the app on the display and handles integration tasks, for example colliders, etc.
011
Mario Morgenthum @morgenthum.bsky.social · 21/03/2026
I added a weather tablet to my game. I have dynamic weather in the game, and depending on the weather, some quests can be solved more easily. With the weather forecast, the player can plan their quests better. #gamedev #rust #bevy #bevyengine #indiedev #rustlang #architecture
2145
Mario Morgenthum @morgenthum.bsky.social · 10/03/2026
The first "real" post on my new blog. morgenthum.dev/blog/introdu... #gamedev #rust #bevy #bevyengine #indiedev #rustlang #architecture
morgenthum.dev
How to introduce layers into Bevy games
A look at the layered architecture behind Wild Spikes, my survival game built with Rust and Bevy. Strict dependency rules, clear boundaries, and why it matters.
0196
Mario Morgenthum @morgenthum.bsky.social · 09/03/2026
Released bevy_xray, a TUI tool to visualize Bevy state hierarchies, plugin dependencies, and schedule configurations. crates.io/crates/bevy_... #gamedev #rust #bevy #bevyengine #indiedev #rustlang
crates.io
crates.io: Rust Package Registry
0174
Mario Morgenthum @morgenthum.bsky.social · 24/02/2026
Examples: an LOD crate based on VisibilityRange (defaults for high/mid/low poly, overridable per asset), plus navmesh generation via bevy_rerecast + landmass_rerecast. New video mainly shows LOD + vegetation scattering (bevy_map_scatter)..
000
Mario Morgenthum @morgenthum.bsky.social · 24/02/2026
With that in place I could strip a lot of low-level Bevy specifics out of the game and push them into those mid-level abstractions. I'm also moving more towards a data-/asset-driven setup.
100
Mario Morgenthum @morgenthum.bsky.social · 24/02/2026
On the engine side I now have self-contained crates like camera, controller, behavior, weather, etc., with schedules/configuration properly encapsulated. I also added a runtime layer for settings, window creation, and other runtime concerns.
100
Mario Morgenthum @morgenthum.bsky.social · 24/02/2026
The last update was a while ago, so here's the current status: Over the last few weeks I've been working a lot on Wild Spikes and introduced a layered structure to keep technical details out of the game code. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1103
Mario Morgenthum @morgenthum.bsky.social · 17/01/2026
I have published a documentation website for map_scatter: mapscatter.rs Check it out. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
mapscatter.rs
map_scatter
Rule-based object scattering for games and tools.
082
Mario Morgenthum @morgenthum.bsky.social · 17/01/2026
map_scatter 0.4.0 is out! Streaming and Bevy 0.18 support. Check it out: map_scatter: crates.io/crates/map_s... bevy_map_scatter: crates.io/crates/bevy_... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
crates.io
crates.io: Rust Package Registry
0114
Mario Morgenthum @morgenthum.bsky.social · 05/11/2025
I still have a few issues with the lighting. The world still looks quite empty with just a few birch trees, mushrooms, and flowers, but that'll change quickly once I have some vegetation models. By the way, those elements were placed using bevy_map_scatter based on certain rules. #map_scatter
000
Mario Morgenthum @morgenthum.bsky.social · 05/11/2025
I switched my custom weather implementation to use Bevys atmosphere and sundisk features. I also added several atmosphere presets that I interpolate between during weather transitions - for example, from sunny to rainy #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1155
Mario Morgenthum @morgenthum.bsky.social · 21/10/2025
Released map_scatter and bevy_map_scatter in version 0.3.0! Serde and ron dependencies are now optional. crates.io/crates/map_s... crates.io/crates/bevy_... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang #avian3d #avian #map_scatter
0154
Mario Morgenthum @morgenthum.bsky.social · 07/10/2025
It uses the avian3d physics engine (also used in the game for general physics) to top-down raycasts to the ground, to find the height/y-coordinate for the trees.
020
Mario Morgenthum @morgenthum.bsky.social · 07/10/2025
Migrated the biome generation of Wild Spikes to bevy_map_scatter. Currently using a small scatter plan that only generates one type (one kind of tree). But everything works as expected! #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang #avian3d #avian #map_scatter
1246
Mario Morgenthum @morgenthum.bsky.social · 06/10/2025
Oh, because the relative link doesn‘t work on crates.io. Need to fix it, ty! Examples: github.com/morgenthum/m...
010
Mario Morgenthum @morgenthum.bsky.social · 06/10/2025
Released bevy_map_scatter on crates.io. Crate: crates.io/crates/bevy_... Examples: github.com/morgenthum/m... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
crates.io
crates.io: Rust Package Registry
1184
Mario Morgenthum @morgenthum.bsky.social · 01/10/2025
Jittered grid position candidates are filtered by a field graph using a simple texture. The scene features a camera with a Bloom component and 3D cubes with emissive colors. A separate system modifies the cubes Y-scale to create this effect.
000
Mario Morgenthum @morgenthum.bsky.social · 01/10/2025
After releasing map_scatter yesterday, I am working on bevy_map_scatter. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1173
Mario Morgenthum @morgenthum.bsky.social · 30/09/2025
Finally released map_scatter on crates.io! Crate: crates.io/crates/map_s... Examples: github.com/morgenthum/m... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
crates.io
crates.io: Rust Package Registry
0186
Mario Morgenthum @morgenthum.bsky.social · 18/09/2025
Candidate positions were generated with Poisson-disk sampling; grass uses a jittered grid. Actual species are placed layer by layer - trees first - by computing per-species probabilities from their own field-graph specifications.
010
Mario Morgenthum @morgenthum.bsky.social · 18/09/2025
The water is the double sine wave in the middle of the image. It was constructed using the crates Texture-trait to generate the texture programmatically.
100
Mario Morgenthum @morgenthum.bsky.social · 18/09/2025
A more concrete example using map_scatter: a forest with natural rules, such as "willows are more likely to be near water." #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1205
Mario Morgenthum @morgenthum.bsky.social · 17/09/2025
I’m not sure yet whether I should release map_scatter as engine-agnostic, or if I should first think more about bevy_map_scatter. I’d like to take the Bevy community’s knowledge into account for the Bevy crate.
000
Mario Morgenthum @morgenthum.bsky.social · 17/09/2025
Points are generated by a jitter grid (with no jitter, so it’s actually just a grid). The first texture is used as the basis for a Euclidean distance transform to calculate the points nearest to the text. These are then filtered with smoothstep and finally rendered as a PNG for this example.
000
Mario Morgenthum @morgenthum.bsky.social · 17/09/2025
Working on final steps - documentation and examples! #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
281
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025
Final polish is underway. Expect a release in a few days with docs and examples.
000
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025
If it looks too “generated”: use splat maps from texture paint (e.g., Blender) to drive or filter the rules - paint where to allow/boost/suppress types. Mix authored masks with procedural fields for control.
100
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025
Works great for 2D - and for 3D too: sample a top‑down position, raycast to terrain for height, then spawn models at the hit. Same rules, different consumer. See my previous post for a 3D in‑game screenshot.
100
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025
In the example, the rules (grass near river, trees away, mushrooms near trees) are ~250 LOC total. You write small field‑graphs (distance, smoothstep, masks) and compose them into stages/layers. That’s it - rules, not hand‑placed points.
110
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025
@bevy.org Announcing map_scatter and bevy_map_scatter: a tiny, engine‑agnostic toolkit for rule‑based object scattering on maps. Build field‑graph rules, run multi‑stage placement, get reproducible results. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1204
Mario Morgenthum @morgenthum.bsky.social · 26/08/2025
Of course, many species are still missing - just a first attempt.
000
Mario Morgenthum @morgenthum.bsky.social · 26/08/2025
@bevy.org First pass at procedural vegetation in Wild Spikes. Poisson-disk sampling generates candidates, then a FieldGraph (EDT/SDF with gates & modifiers) bakes per-chunk+halo rasters to compute final densities. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang
1236
Mario Morgenthum @morgenthum.bsky.social · 10/04/2025
@bevyengine.org Building Iggy's world! 🦔 #indiedev #gamedev #BevyEngine #rustlang
0252