Prototype & Play Recap

While I continue to work behind the scenes, I'm still getting myself used to creating weekly updates.

June 23, 2026
Antiutopia
Prototype
Demo

Prototype & Play Recap

While I continue to work behind the scenes, I'm still getting myself used to creating weekly updates.

This past weekend I had the pleasure of meeting up with some other local game devs for a Prototype & Play event, where we all got together to demo and play each others games.
I got some really good feedback, as well as revealed a nasty memory leak which I quickly patched up. It was also cool to see what other people are working on!

I've spend quite a decent bit of time focusing on the player model, upgrading it from a slim, basic soldier- to an intimidating super-soldier!

I still have to implement animations; such as walking and jumping, and then begin working out some form of death animation/effect.

On the engine side; I made some much needed improvements to the rendering system- while its still using basic Phong- I messed around with the equations a bit to get a much better looking display, as well as the ability to handle additional materials from my GLTF loader. I really don't have plans to continue upgrading the rendering system- thats a bit out of scope for what this project was intended for. The original concept for Antiutopia is small files sizes, quick load times, and good performance. So I think its best to stick with it.

Another big fix I made was changing from simple sweep collisions for spheres into a raycasting system. All models for the player are rendered in true 3D-space; which means the player arms and weapon are not just 2D images placed over the screen. So when this comes to bullets- a few problems begin to arise.
I noticed that bullets would travel off-center from the crosshair; meaning players would have aim significally off-course to hit their target. Why was this happening?

It was pretty easy to figure out that since bullets are spawned at the weapons muzzle, which is off-center from the players view projection, they were traveling parallel to the crosshair.

Well, the solution, however; was a bit more complicated. First, I simply took the difference between the weapon direction and player direction, and then made the bullet eventually diverge to the target point off in the distance.

This brought up a new issue- if an enemy player is close up to us and we fire; our bullets are now way off from the crosshair.

Unfortunately, the final solution was to scrap this entirely, and move towards a raycasting system based on the players view projection. The line casting equations came mostly from Game Programming in C++ from Sanjay Madhav, and I essentially tweaked them to fit with my PhysWorld class.
Now, players cast out a line based on cameras view projection, and when we fire, we already know if the bullet is going to hit a player or not. Then the bullets trajectory is based on this information. Instead of simply using a distant target to converge to.

This allows headshots to become very stable and consistant! And also opens up the possibility of new features such as changing the crosshair color when its casted onto an enemy player.

Speaking of crosshair; when you are hit by bullets, there's now a simple damage indicator that points in the direction you were hit.

Controllers have also seen a massive upgrade as I managed to workout some movement/pitch bugs, and players can also now navigate menus using the D-Pad and A to confirm their selection.

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

- 6/23/2026

← Back to Devlog