Post-Jam Thoughts

I mostly joined the jam because I was excited about using bevy_jornet for a leaderboard. So I was a bit bummed yesterday when ~8 people had rated the game but nobody had actually made it onto the leaderboard... I think the controls were not explained adequately and some sort of mini tutorial would have helped a lot. Woke up to a full leaderboards and some semi-optimized times though, so that's exciting.

I really struggled to get music to work well on the web. (Same "stutter / catch-up" issue that some other jammers experienced). I tried a bunch of different workarounds (including swapping out `bevy_audio` for bevy_kira_audio) and the issue would seem fixed locally but would still show up on itch. I ended up playing the music at 0.01 volume for 4 seconds and then fading in, which hid the issue for me, but is pretty lame.

I also struggled quite a bit with rapier, but maybe that's user error. I could not get a ball collider to roll along a "flat" trimesh without bouncing around. My vehicle doesn't really have "wheels" and just applies an impulse when driving or jumping when both ball colliders are on the ground, so this bouncing was really not ideal. The vehicle could be mid-air for up to 10 frames and this resulted in "missed jumps" very frequently. I mostly fixed this by adding slightly larger sensor colliders to the wheels and using those to determine whether the wheels are on the ground for the purpose of jumping. This probably should have been extended to driving as well.

Several of us ran into this rapier bug, which was really bizarre and made me much less confident that rapier was solid.

This game was inspired heavily by Uniracers, and I'm not sure if I managed map that experience into a "real physics environment" well, but I think that things could be improved with some more work on my end. I may explore separating simulated "rolling friction" from "air resistance", and adding "downforce" so you stick better to the track while upside-down.

I continue to be very happy about using leafwing_input_manager, bevy_asset_loader, and bevy_inspector_egui. All are very easy to add on and worth their weight in gold.

bevy_ui_navigation was not as smooth. It's wasn't obvious at all how to match bevy's button behavior where there's a separate "clicked" and "hover" state. The docs and examples are extensive but none of the examples seem to actually tell you how to make your buttons do things. Prior to integrating it, I had a bunch of cleanly separated button systems. But I had to sort of throw that all into an input megasystem because there's just one NavEvent to react to. Still, the functionality this provides is very valuable. Having to put the gamepad down to navigate a menu with your mouse is not ideal.

Bevy 0.7 and 0.8 came with a big host of improvements. Combine Racers didn't really take advantage of most of these, but iter_many and SceneBundle were great ergonomic improvements. It was also great to see 3d animations and post-processing effects in many of the other submissions. On the other hand, I am on the fence about deref derives, which seem like a wash ergonomically and become a footgun for me with regard to change detection at one point.

One of the most enjoyable parts for me was trying to help out other jammers near the end. Maybe I should try a team-up next time!

Get Combine Racers

Download NowName your own price

Leave a comment

Log in with to leave a comment.