Wheel

Having done a few projects I decided that I wanted to make something more advanced. I have an interested in the Rust programming language, and so I wanted to create something in Rust and I wanted to make something interactive like a game. The Rust game development framework Bevy would allow me to make a game in Rust, and so I decided to use it to make an almost-game.
I chose to make the character a wheel, because I wanted to start with the simplest possible thing, and a wheel is about as simple as it can get. It’s convenient, it rolls around and can turn. A wheel rolling by itself is believable enough in a virtual environment, and it’s the simplest thing that moves, by spinning and turning.



Since starting I have thought that it would be cool to add three other wheels and some kind of buggy. This may be something that I come back to at some point.
A game with human characters or even cartoon human-like characters is too ambitious. I’ve since realised that it’s so hard to draw and animate anything, let alone a realistic person, that the modelling is far more difficult than programming the logic for the same things.


In terms of programming, the Learning Curve is reasonable, the framework is quite self-explanatory and there are usually online resources to help with different things.
Creating the camera and coding how it follows the wheel in 3rd-person was fun. Allowing the wheel to pull away from the camera a little bit or making the camera chase the wheel full-speed during a turn was really neat. I had a bit of difficulty working with the rotations and translations, although fortunately there were online examples of combining transforms that I could adapt to my code, and it’s relatively simple.

At the start there was no scene. I had a checkerboard pattern floor that the wheel flew around. Next I added a flat plane desert environment. To make the sand more believable I added sand particles. Afterward I wanted terrain with hills, so I copied someone’s example terrain generator. It was ideal, as it added not just dynamic terrain but also waving grass blades.
Adding physics to handle the terrain was easy, there is a library that handles object intersections, built specifically to work with the framework. This dramatically reduced the scope of what needed to be programmed.
Later on I added rain. My rain is actually using randomised models for the drops, instead of particles. To further improve upon them I could add some rain drop particles. The rain is much more believable than my cutout clouds.



I found that the dynamic terrain worked really well, however my preference would be to create the environment by hand so that everything in the scene is in my control. Where dynamic content would work well is in adding object complexity to designated places in a scene. Say you want some bricks or grass in a bespoke—dynamic system, you could mark where the bricks and grass should be added and have a dynamic system create them.
Overall the Wheel was an interesting project to work on.