Post Memorial Day Update

I've been chipping away at Antiutopia's collision system, adding some cool new features, also putting me another step closer to becoming live on Steam.

May 27, 2026
Antiutopia
Steam
Collision

A Little Late

I hope everyone had a fun and safe Memorial Day weekend, enjoying some parades and fireworks while also appreciating and honoring our service members. It's thanks to these individuals that games like Antiutopia can be just that—games!

I finally got around to finishing up the requirements for the Store Page on Steam, and now I'm simply waiting for the review process. Once I finally have the store page live, I'll be able to update the appropriate links on its game page.

On the development side of things, earlier in the development process I threw together a lot of magic numbers, and on top of that, the client.cpp file soon became quite monolithic. So I decided to set up some simple struct files, as well as split up client functions into appropriate .cpp files. In hindsight, this probably should have been done earlier, but being a solo developer, it wasn't really a priority.

I've also made quite the leap in collision handling. Players now have multiple collision components attached to their character, allowing for features such as headshots and body damage.

An occurring issue I've had since the start was players being able to "push" their weapon through wall models. This is due to all the models being rendered in true 3D space, whereas other games typically fake the first-person arms and weapon.

I always thought this was a cheap approach and avoided the fake 2D display most games typically use. I decided a cool solution to this was lowering the weapon itself when the player moves into a wall. An additional collision box covers the general area of the gun in their hands; when this box detects a wall collision, our player now lowers their weapon!

I assumed since I figured out how to attach the weapon to the hand, attaching the other hand to the weapon would be simple. This proved to be a little more difficult than I had anticipated, and I was in for quite a few trips to the coffee machine.

My player model doesn't have a single "hand" bone. Instead, it has a forearm bone that splits up into the individual wrist and finger bones. I really did not want to redo my model, animations, weight painting, etc. Instead, I used a combination of the forearm and upper arm bones, then used those in an iteration loop to simulate the hand being locked to the gun's handle. The iteration loop is a very lightweight form of inverse kinematics, using multiple passes to refine the alignment.

Now, since the weapon is attached to one hand and the other hand is attached to the weapon, I can simply call a function to rotate the right arm down slightly, causing the effect of the weapon itself being lowered. It's a really neat effect I'm glad I added in, and I hope it's one of those smaller details real gamers will appreciate.

Another issue I had was that, since the player can look up and down, the camera could move outside the collision box. Players could therefore "look" through walls by leaning forward into them. The player's head collision sphere acts as an additional barrier to provide a soft-overlap fix.

That's about all for now. Keep an eye out for more updates!
- Nick

← Back to Devlog