Combat Flight Simulator Prototype in Unreal 5 + JSBSIM

The first step err flight is always the most difficult one…
Short video with results of a prototype (no sound) using JSBSIM and UNREAL 5.
Video shows F-15E model (by Vigilante) as pawn with JSBSimFlightDynamicsModel plugin being controlled by myself. Joystick input from X52 Flight Stick via Raw Input plugin.
F-15E flown by AI (also with JSBSimFlightDynamicsModel ) being controlled by a simple PID controller (self written in BP) to keep altitude.


Nice. I just started implemenration, have it compiled and ready ti go.

Did you implement ArcGis or Celsium?

I implemented the whole DYI project initially to see how it works. Then I started another one from scratch shown in the video, where dropped any streaming landscape from Celsium since I wanted to use my own landscape. Besides, Cesium is for free up to some Gb streaming, what in the long run may be a problem depending on your development budgtet. The paid version is beyond what I can afford and it is not clear for me how is the price plan for a game later (did not have time to check).
(you need an account for Arcgis, which I dont have)

I didn’t know about Cesium, I have it installed and used but really will not need it for my application. I tried compiling Arcgis and got an account but it crashed the system and I haven;t bothered, again not for me.

I did the DIY as well. Then switched over and started using the UErefferenceapp as my template. Saved a lot of work.

Thaks for the reply

Have you noticed the speed of the F15 only goes around 600kt when in reality it should be 1433kt max which is about 1640mph?

I incorporated the F16(since you did the F15) using the default structure and engine specs in JSBSIM I only get around 600kt as well. I did a straight dive and was able to get 800kt but the aircraft started shaking.

It may be some setting to change since the default pawn was made on a 787-8 basis. Or there could be something incorrect in the HUD calculations and I was actually doing the 1660kt of the F16 which is about Mach 2 for it.

I’ll probably start looking tomorrow, just curious if you noticed it as well.

I did not pay attention to the speed in my first try. I am not sure the unreal plugin is passing the afterburner as command to the JSBSIM. Were you using AB? Otherwise you cant to those speeds over Mach 1 in straight flight at low level.

About the shaking, it is a problem with the update of the JSBSIM: As a physics model involving numerical integration (RK4/5), the component should run at fix time step and independent of the engine tick.
You can set that via blueprint for a component. I set 100Hz and JSBSIM ran without any issues.

I have not tried AB yet. I only set my joystick up for basic flight. I may try that today.

thanks for the tip on the component, I will try that as well and see if it works. If I get the AB to work I’ll let you know.

Whoa… Got the AB to turn on. Talk about thrust!

I’ll post in a minute what I changed.

Set the BP for the Engine to augmented = True. That activates the AB itself.

Then go the Engine XML file you are using. Make sure augmethod is set to 2. 2 sets up Throttle so that when Throttle = 2 afterburners are activated.

Option 1 works as well. but not as well as the 2 method for now (probably just understanding for now).

Lastly, I set ThrottleData MaxValue to 2.0. That got the plane moving up to around 760 in straight flight, so I will play a little more later tonight and try setting it to 3 or 4 till I get the top thrust speed I need for that plane. Not sure this is the best way, but at least it seems to work. If it does there should be a way to have a formula figure out what this value should be based on known values.

Currently, I am using a joystick with a single throttle, I do not have anything to set FULL throttle and a separate AB switch.

EDIT: I did get time to change the value to 3 on the ThrottleData and increased the AB to 1000. This should allow the creation of controlling the AB thrust incrementally as well.

On a side note, I am not finding where/what I need to change for the shaking. When you have time would you mind showing me a little more on how you implemented that?

Sorry for the delay. here is how you run any component with a fixed time step:
Set Component Tick Interval and put a 0,01.


Hello, I’m trying to get JBSim setup. Is there anything specific I have to do. For example, I’m adding throttle to the engine command and my aircraft does not move.

Make sure you follow the DIY guide or download the UEreferrenceapp from gihub and compile and get it running before you try to change or add your own aircraft.

Very nice.

@Magnum164 Hey, I recently also incorporated the F16, and using the latest version of the JSBSim plugin for unreal - which sets a constant update rate of 120hz to the FDM - plus forcing a constant FPS on unreal, the oscillations around 550 knots were completely eliminated. So, if you are still having problems with the oscillations, I’d recommend to just download the new plugin version, and setting a top FPS on unreal (can be done with the console command t.MaxFPS).

That said, it seems that I nevertheless hit roll oscillations again at 1160 knots :pensive: I wonder what those are about… Is it a problem with the FDM’s integration frequency again? Or are those to be expected also in reality? Or is it due to some other problem…?

I don’t know. Could be but I no longer plan to use JSBSim. I was reading about the issues incorporating Open Source in games and decided not to pursue it any further. PLus the fact support on integration is limited for game integration.

For open source simulations, it seems great.

Hi,I m new,I want to konw,how to make the JSBSim Movement componet link to the Actor Componet Target?

You can add in the same way you add to a pawn. Go inside your actor/pawn, and add the component. It will only work if you have correctly added the JSBSIM plugin to UE5. Otherwise it will not appear.
General instructions on how to use components with actors can be found here:

Congratulations! The flying feels so smooth! I plan to make a future Combat Flight Simulator Game, but with a more arcade aproach, like Ace Combat Series.

I want to add some control,but the JSBSIMmove componet cant link to the function,is it need add something in the functon?