Animation, Motion, & Terrain v3
Exofactory is now available on Steam! If you are interested in the game I would encourage you to consider wishlisting it there.
Overview
There were a few major goals that were met. The game is now animated, we have some resources, and the terrain system is getting closer to "done". Not the most productive time period, but we are moving forward.
Additionally, I did give a presentation at Bornhack 2025 about creating games in Bevy with Rust, but it is not yet available. When it is, I will include it in a future dev blog.
Animation
We now have animations in the game! Animating in Bevy was quite the fun thing to learn. The thing that saved the day (and a ton of work hours) was the bevy ecosystem, namely the excellent Bevy/Blender plugin Skein by Chris Biscardi. He is doing a ton for the Bevy community and I see his work everywhere.
Skein is both a Bevy and Blender plugin that enables the 3D artist to add Bevy components (if you are not familiar with Bevy, think of components as a sort of tag or label) to parts of the 3D asset. When the asset is exported as a glb/gltf file those components are exported with as part of the file.
Skein on the Bevy side sees those embedded components and makes them available in Bevy's Entity Component System. This saves a ton of time and boilerplate code.
Programmatic Control of Lifter Animation
We are using Skein to add components to animation "bones" so animation can be controlled in a programmatic way, reacting to game events instead of just going through an animation loop. We are using these primarily in the Lifters as shown above.
Motion Transitions
In addition to more interesting programmatic animation we are using Bevy's animation graph system. This lets us change from one animation cycle to another smoothly without jitter or visual artifacts. Above you can see the exoframe go from walking to idle in a smooth continuous way.
Resources
We now have resources! We are starting with iron and copper. Soon we should see some machines start to get to work!
Above we see copper ore and bars. This should be pretty common in game and will be used to make many things including low power wires.
Above we see iron. I quite like the details on the top of the bars. Given we play as an AI, I could see the AI liking the design too.
Terrain v3
The Bevy space is full of halfborn, unmaintained, and poorly documented terrain level of detail (LoD) systems. You will see a ton of terrain LoD systems everywhere but I found none that were maintained, had the features I needed, and were documented in a clear way. Resultingly Exofactory now has its own LoD implementation. It's relatively naive, but meets the base requirements I need. These being:
- Spawning and despawning terrain based on the location of multiple cameras.
- Swapping in higher and lower resolution meshes and textures based on the location of said multiple cameras.
- Handling LoD for terrain details like foliage or stones.
- Doing all of this in a performant Bevy native ECS way.
Level of Detail System Testing
Above you can see the test terrain I was using to test this LoD system. Green being the tile under the active camera, yellow being the higher resolution mesh tiles, red being the low resolution mesh tiles, and the red being despawned as it goes further away.
This is a MUCH stronger foundation for terrain, but sadly a lot of my past terrain work needed/needs to be re-written. Good news is that the terrain v3 system is very tunable for aesthetics or performance. Even on my old 11th gen intel laptop iGPU I was able to tune things to run at 60fps with the full view distance. This being said this will probably change as more gets added.
Terrain v3 with only base colors
Here we can see a more developed (although still very bare, texture-less, and empty) version of the reworked Terrain v3 system with full LoD functionality. The textures and other detail will be added on GPU via shader and that is not included here, but we have the base colors and that gives an idea of what textures we can expect. Once we add terrain details I think the terrain will look amazing.
Conclusion
Given the time frame I wish I could have gotten more done. This being said what I did do was impactful and makes the game more playable, and more importantly at this stage, more test-playable. No longer are we seeing stutters when crossing terrain tiles. It's smooth and pleasant. The animation is cute too and adds a lot of life to a formally still world.