Mario Morgenthum @morgenthum.bsky.social · 28/09/2026A 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/2026Saw 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/2026I 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/2026Your 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/2026I 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/2026runs 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/2026Released 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/2026morgenthum.dev/blog/weather...morgenthum.devA weather tablet for quest planningWild 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/2026It 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/2026I 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/2026The first "real" post on my new blog. morgenthum.dev/blog/introdu... #gamedev #rust #bevy #bevyengine #indiedev #rustlang #architecturemorgenthum.devHow to introduce layers into Bevy gamesA 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/2026Released bevy_xray, a TUI tool to visualize Bevy state hierarchies, plugin dependencies, and schedule configurations. crates.io/crates/bevy_... #gamedev #rust #bevy #bevyengine #indiedev #rustlangcrates.iocrates.io: Rust Package Registry 0174
Mario Morgenthum @morgenthum.bsky.social · 24/02/2026Examples: 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/2026With 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/2026On 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/2026The 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/2026I have published a documentation website for map_scatter: mapscatter.rs Check it out. #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlangmapscatter.rsmap_scatterRule-based object scattering for games and tools. 082
Mario Morgenthum @morgenthum.bsky.social · 17/01/2026map_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 #rustlangcrates.iocrates.io: Rust Package Registry 0114
Mario Morgenthum @morgenthum.bsky.social · 05/11/2025I 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/2025I 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/2025Released 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/2025It 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/2025Migrated 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/2025Oh, 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/2025Released bevy_map_scatter on crates.io. Crate: crates.io/crates/bevy_... Examples: github.com/morgenthum/m... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlangcrates.iocrates.io: Rust Package Registry 1184
Mario Morgenthum @morgenthum.bsky.social · 01/10/2025Jittered 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/2025After 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/2025Finally released map_scatter on crates.io! Crate: crates.io/crates/map_s... Examples: github.com/morgenthum/m... #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlangcrates.iocrates.io: Rust Package Registry 0186
Mario Morgenthum @morgenthum.bsky.social · 18/09/2025Candidate 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/2025The 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/2025A 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/2025I’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/2025Points 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/2025Working on final steps - documentation and examples! #gamedev #rust #bevy #bevyengine #procedural #indiedev #rustlang 281
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025Final polish is underway. Expect a release in a few days with docs and examples. 000
Mario Morgenthum @morgenthum.bsky.social · 28/08/2025If 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/2025Works 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/2025In 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/2025Of 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