Theophile Alsac    gameplay developer

Second-year student in Game Design & Programming at Isart Digital Paris, I am currently looking for an internship for the period from May to August. Contact Linkedin.

Rafale Flight Simulator

Project realized in connection with my studies.

I worked on this project with a game art student, but I wrote all the code myself. The chalenge for me on this project was to find the good information and create a clean documentation to maximise time I spend on the codding part.

At the beginning of the project, I searched for resources on the web and organized them into the diagram shown above.

I structured the entire system to minimize dependencies between the different forces. I separated all elements that could modify the base lift, drag, and thrust from the main code structure. This allows for easy deactivation of these elements and simplifies debugging if necessary.

Halfway through the time I had planned for my research, I couldn't find the information I needed to manage the modifications of forces caused by yaw, roll, and pitch. I decided to start coding to see if I was on the right track.

During this first coding session, I primarily implemented the plane's forward movement. My research was generally successful, but there was one issue. The Lift Coefficient was based on the calculated Lift, but when I tested the plane at an airspeed of 130 m/s, it started to behave like a rocket. I reviewed an Excel sheet with all the necessary data and began disabling values to identify the problem. Eventually, I discovered that the issue was with the Lift Coefficient. I searched for a solution and found that I could replace it with the plane's mass multiplied by gravity.

I finally solved this problem, but another one appeared: in the video, when I pitch the plane down, it slides but doesn't go to the floor. Overall, all my research on the forces applied to the plane during turns was incorrect. I had suspected this, and it was one of the reasons that made me start coding without having all the answers.

So, I start a new research session.

During my first coding session, I gained a better understanding of how the plane flies and what I need to do. I now needed information about the calculation of these elements. I found a lot of outdated documentation, but it was too simplified to be useful in my program.

After many hours of searching, I finally found the documentation I needed. However, I only had one day left to code in order to stay within the required time limit. Below is an example of the mathematical function I needed to implement to ensure it was physics-friendly.

As you can see, I needed to define many elements before applying the pitch physics. I started with the first point: how to define the center of gravity of a plane in motion. Like I noticed with the lift coefficient, I couldn’t just place arbitrary values to solve the equation.

I found a NASA document explaining how to define the center of gravity.

I tried to implement it and almost succeeded in setting it up, but time started running out.

Then, I decided to try solving it with non-physical values to show something working for my project presentation.

This story is not finished. This project is very important to me, and I wish to complete it successfully.