top of page

Specialization

Plane controls with mouse

​​

Design Philosophy

I've always been fascinated by planes and the art of flying. The feeling of soaring through the skies, the precision of controls, and the sheer freedom that flight provides, these are the elements that make aviation so captivating. When developing my own game systems, I strive to capture that same magic.

In many games, flight mechanics can vary significantly, and even subtle differences in controls can drastically alter the player experience. Finding the right balance is essential to delivering an intuitive, immersive, and enjoyable flight system. This is where my specialization comes in: designing precise and responsive plane controls using the mouse in C++ within the The Game Assembly Engine (TGE).

I focus on creating controls that feel natural and engaging. Whether it's adjusting the sensitivity of the pitch and yaw, fine-tuning the inertia, or ensuring smooth transitions between movements, every detail matters. The goal is to strike the perfect harmony between realism and playability, making sure that players feel in control while still experiencing the thrill of flight.

 

Why TGE?

I chose The Game Assembly Engine (TGE) as my development platform because it provided a smooth start with its graphics and mathematics. I was able to rapidly iterate and refine my flight model without compromising performance.

Issues

With my specialization, there's a lot of matrix and rotation calculations involved. I was already aware that this would likely be the area where problems could arise ... and sure enough, it did.

The issue came up when I tried to make the camera look at the airplane. I created a "look at" matrix and applied it as the camera’s rotation. The problem was that the matrix flipped, and suddenly the camera started rotating backward and looking at the plane—but from the wrong direction.

I thought quaternions might save the day, but they ended up getting incorrect data somehow, or the order of rotation angles got messed up. This led to the camera spinning around and ending up in weird orientations. It was really difficult to correct the individual axes afterward.

So I decided to start over and go with using pitch, yaw, and roll directly. That way, I always had control over each axis separately, and I could adjust them whenever and however I wanted. I also made it so the camera ignores the plane’s roll entirely. This gives a clearer view of the plane’s rotation and creates a much more grounded feeling, with the camera always staying upright.

I also implemented a simple physics system for the plane, consisting of gravity, drag, and lift, combined with the plane’s thrust. It adds a bit of realism to the movement, and that kind of detail can really be the cherry on top, making the controls feel way more satisfying.

​Another issue i had was how to implement the movement target crosshair. First i thought it could be a 3D vector and move its position with mousemovement. But i soon realized that the more a moved it to the sides, the crosshair got further away. I needed a way to make the crosshair always have the same range to the plane.

After giving it some thought, I decided to turn the target crosshair into a matrix. This allowed it to have both a position and a rotation, just like the plane. It sounded like a solid idea—and once I implemented it, it turned out to work really well. The plane could now easily rotate to follow the crosshair, which made the whole system feel much more intuitive.

Technical Implementation

  • Mouse-Based Flight Controls: Designed an intuitive input system that allows players to control pitch, yaw, and roll fluidly with minimal effort.

  • Custom Flight Physics: Developed a simple physics model that balances realism with accessibility, ensuring smooth and responsive flight dynamics.

  • Adaptive Sensitivity: Implemented variable sensitivity based on speed and altitude, enhancing the overall feel of the aircraft.

Final Thoughts

For me, game development is about capturing the essence of an experience. By focusing on intuitive mouse-based flight controls, I aim to create a gameplay experience that resonates with aviation enthusiasts and casual players alike. The journey of refining flight mechanics has been both challenging and rewarding, and I look forward to pushing these ideas even further in future projects.

If you're interested in my work or want to collaborate, feel free to reach out!

Skärmbild 2025-04-06 113448.png
bottom of page