ACE COMBAT™7: SKIES UNKNOWN

ACE COMBAT™7: SKIES UNKNOWN

50 ratings
TrackIR + Joystick in Ace Combat™ 7
By rickswan
Greetings Aces.
I have spent two days getting my new TrackIR 5 head tracker to work with Ace Combat™ 7, a game that does not (and probably never will) support it - along with a joystick that it also doesn't immediately support right out the gate. I finally found something that worked for me so I figured I would share the love in case it works for you!

Note that if you get this working for this game, it will probably work for just about any other game. Ace Combat™ 7 just happens to be a game that really benefits from the addition of this feature (if not for "high level play" then at least for immersion).

Anyway, are you ready to write a check your body can't cash? If so, then it's time to enter the danger zone.
2
   
Award
Favorite
Favorited
Unfavorite
Overview
Ace Combat™ 7 is an arcade-style flight action series with deep roots in console gaming. As such, it's not surprising that TrackIR - generally considered a "simulator" game peripheral - is not supported. The way around this is by basically tricking Ace Combat™ 7 into thinking our tracked head movements are the right analog stick of an Xbox 360 controller, lol.

You will need to install the following: TrackIR, VJoy, FreePIE, x360ce (plus Steam and the game, obviously). I have made sure to either mention or show in the screenshots the version of the software I am using at the time of making this guide, so if you are having difficulty, the version of the software you are using may be the culprit. I have no affiliation with any of the developers of these programs nor do I really know how any of them work, so if you follow this guide and still run into issues I may not be able to help much - but still feel free to leave a comment. Getting all this to work was kind of like black magic for me, but I learned a lot along the way.

I have also made another version of this guide as a general-purpose Steam guide (not specific to just this game), so hopefully it can aid the wider Steam audience. Thanks to Nocturnalverse for the suggestion! Here's the guide.

I am running Ace Combat™ 7 via Steam on a Sager Windows 10 model P770Z-G laptop with an i7-4790K 4.0GHz CPU, 32GB of Kingston DDR3 RAM, and an NVIDIA GeForce GTX 980M GPU.

Shout-outs
I didn't figure all this out on my own, so here is credit where credit is due:
With that out of the way, let's begin!
1. TrackIR
The first step is to set up TrackIR. Attach the tracker to a headset or hat, download the latest version of the software from http://www.naturalpoint.com/trackir/downloads, connect the IR camera to the computer (along with the TrackClip Pro if you have it), and run the software.
If you have a TrackClip Pro, select that option in the TrackIR software. If all goes well, you should see the 3D view tracking your head movements in this window.

You can mess with things like deadzone, sensitivity, etc. in this software but I won't cover that here. Next, we need a program that will make these head tracker inputs usable for our purposes.
2. vJoy
vJoy is "a device driver that bridges the gap between any device that is not a joystick and an application that requires a joystick."

Download and install vJoy from http://vjoystick.sourceforge.net/site/index.php/download-a-install
Once installed, run the vJoy configuration executable vJoyConf.exe


Although it's possible that you only need the Rx and Ry axes, I played it safe by leaving all the settings on. You should be good to go if your settings look like mine in the window shown, with "vJoyDevice: 1" active and "Enable vJoy" checked.
3. FreePIE
FreePIE (Programmable Input Emulator) is a C# utility for bridging and emulating input devices. We will be using it to run code I found online that takes the head tracking input from the TrackIR software and translates it into joystick movement for VJoy.

Download it from here: http://andersmalmgren.github.io/FreePIE/

Before we can use it, though, you need to make a file with code for FreePIE to use. To do this, open a simple text editor such as notepad and type the following:
def update(): yaw = filters.mapRange(trackIR.yaw, -90, 90, -vJoy[0].axisMax, vJoy[0].axisMax) pitch = filters.mapRange(trackIR.pitch, -90, 90, -vJoy[0].axisMax, vJoy[0].axisMax) vJoy[0].rx = yaw vJoy[0].ry = pitch if starting: trackIR.update += update
Save it as a python file, something like "trackir-rightstick.py" (shout-out to Zyrjello's guide). If you don't know how to save it as a python file, make sure Windows is showing file extensions[www.thewindowsclub.com] so you can save it with the .py suffix.

After you have made the python file, run FreePIE.
Go to File > Open > select the python file you made (after opening it once, you can go to File > Recent Files so you don't have to find it every time). The code should appear.
Next go to Script > Run script (or press F5).
If no error appears, you should be good, but there is a quick way to make sure...

When you installed vJoy, the vJoy Monitor should have been installed with it.
Open the monitor (JoyMonitor.exe)
When you open it, this is what you should see. You'll know everything is functioning properly up to this point if the red bars representing the Rx and Ry values move as your head moves - this means that the head movements from TrackIR are successfully being translated into the virtual controller!
4. x360ce
x360ce aka "Xbox 360 Controller Emulator" allows various controller devices to be combined and turned into one virtual Xbox 360 controller - so the TrackIR head tracker + joystick appear to the computer as one single Xbox 360 controller rather than two separate devices.

This is where my guide diverges from the others I've found, the reason being most other guides seemed to be using versions 3.2 or lower. I couldn't get it working until I tried using version 4+.

Download x360ce from here: https://www.x360ce.com/ and extract it somewhere safe. I believe in older versions of the software you had to place the x360ce.exe file in the game's directory, but that isn't necessary for the version I'm using. Run "x360ce.exe" as an administrator:

When you load x360ce for the first time the input options will probably be greyed out.

Adding the Game
Click "Add Game..." > add Ace Combat™ 7. You'll know you successfully added it if it shows up on the "Games" tab and in the "Game:" drop-down menu at the top.

If you are unsure of where Ace Combat™ 7 is located, in the steam library you can right-click the game > Properties > Local Files tab > Browse Local Files... for example, my game is located in D:\SteamLibrary\steamapps\common\ACE COMBAT 7.
Random Fun Tip: there's a program called "Everything.exe" that you can get from https://www.voidtools.com/downloads - this program indexes your hard drives and lets you search for any file or folder among all your hard drives instantly. If you had this program you could just type in "Ace7Game.exe" and "Everything" would immediately find it for you. Neat, right?
Now that you have added Ace Combat™ 7, x360ce creates a unique profile for the game.

Adding the Controller Devices (e.g. TrackIR & Joystick)
Next, go to the "Controller 1" tab, then click on the "Add..." button
(not to be confused with the "Add Game..." button!)

Here you should see the various input devices connected to your PC. Add the vJoy device (this is your TrackIR) and your joystick (my joystick is the SideWinder Force Feedback 2):


Mapping the Controller Devices to the Emulated XBox 360 Controller
You can now map the emulated controller's buttons.
X360WINDOW
There are three main ways to map your buttons:
  • Manually input buttons by selecting the drop-down menu next to a controller button and selecting the input button/axis name from a list
  • In the same drop-down menu you can select "Record", which then lets you press the button on your joystick that you want to assign to the corresponding xbox button
  • Select the "Auto" button at the bottom of the screen to automatically map every button
You'll probably end up doing a combination of all three, but you should probably start with "Auto" because it erases manually remapped buttons.

Joystick and TrackIR Settings
The joystick is mostly up to personal preference and is something you'll probably want to alt-tab between the game and x360ce to get just how you like it.

For the TrackIR (vJoy Device), all you need to worry about is mapping "Stick Axis X" to "Axis 4" and "Stick Axis Y" to "Axis 5". If all goes well, the right joystick will move as your head moves!

Finally, check "Enable 2 Mapped Devices (Combine)" which makes the emulated Xbox 360 Controller a device that Steam can recognize.
5. Steam Input
Aaand this is where it all finally comes together.

Preflight - Steam settings
In Steam, go to your library and right-click Ace Combat™ 7 > Properties:

In the game's properties window, make sure that "Enable the Steam Overlay while in-game" is checked and that "Use your global Steam Input settings" is selected. Then select "Close."

Next, go to Steam > Settings > Controller > General Controller Settings:

Make sure that Xbox configuration support is checked on.
The emulated Xbox 360 controller from x360ce should appear here as "Xbox 360 Controller". If you want to verify that it's the right one you can select the 360 controller > Define Layout:

you should see some telltale signs that this Xbox 360 controller is actually your joystick and TrackIR (such as if you select an option and it reacts to your head movement). select cancel and back out without saving changes. Exit the Controller Settings.

Next, go to View > Big Picture Mode.

Taxiing - booting up the game
In Big Picture Mode, go to your library > play Ace Combat™ 7. Once the game starts, open the Steam Overlay (Shift+Tab by default) > Controller Configuration > depending on whether or not you have another controller plugged in, you may need to select "Switch Controller" and manually choose the Xbox 360 Controller:

Now for the moment of truth. In Ace Combat™ 7, start a free mission > free flight and sortie so you can just fly around without distraction. If head tracking with TrackIR and your joystick are working, congratulations, the hard part is over!

Takeoff - tweaks
Finally, you're almost ready to take to the skies. The only thing left to do now is tweak the controls using Steam Input. In game, press Shift+Tab once again to enter the Steam overlay > select Controller Configuration > here you can tweak the inputs:

This has importance in Ace Combat™ 7: Skies Unknown because there are at least three actions (Autopilot, Flares, and Type-A High-G Turns) requiring two buttons to be pressed simultaneously.

This can be problematic if, for example, you configured yaw to be on the rotational Z axis. However, to activate autopilot you need to press Left Bumper and Right Bumper at the same time - something that is easy if they're two separate buttons on a controller, but something which is impossible if assigned to two opposite directions on the same axis of a joystick! With Steam Input you can configure a button to emulate pressing both bumper buttons at the same time.

Another useful tip for Steam Input, which is useful if you have a joystick with limited buttons, is to set up activators to do things like double press, long press, chorded presses, etc. For example, I have my controls configured so that pressing and holding a button initiates a High-G Turn, but double pressing it quickly changes the camera view. If you are interested in learning more about Steam Input's Activators, here's a link with more info.
Summary
... and voilà - the game thinks you're playing the game with just a regular old Xbox 360 controller, but in reality you could be playing with any theoretical combination, such as an infrared head tracker, HOTAS joystick, pedals, steering wheel, guitar hero guitar, joy-cons, arcade fight sticks, Dance Dance Revolution pad, lightgun, etc. The sky really is the limit.

Well I hope this helped somebody. I hope you haven't lost that loving feeling because now you can buzz the tower to your heart's content, and you can be my wingman anytime.
21 Comments
GpovveR 13 Jul, 2024 @ 5:27am 
Спасибо за гайд, так же через эти программы можно подцепить Tobii eye tracker 5
MassiveFire 7 Jan, 2023 @ 5:16pm 
--Cont--

Third and finally, the locked fov is the biggest drawback and dealbreaker for me. AC7 has the 1st person FOV locked to around 70, and there is no way to change it in game, at least not officially. This is wayyy too claustrophobic (at least for me) compared to other games. PW has a built in FOV slider, and it maxes out at 105. DCS has a dynamic zoom slider, and cranking it way back can give you a max FOV of about 120 (though most of the time you will be sticking to around 90-100 or so).

There is a cheat engine tool to change the FOV, but I don't feel comfortable using it, and there is absolutely no way I'm risking a ban of some sort by using it online/mp. Additionally, increasing the fov also comes with some side effects, notably that the HUD elements expand wayyy past the dashboard hud in your cockpit.

Quite a shame that PA managed to get VR working in AC7, but not headtracking for some reason.
MassiveFire 7 Jan, 2023 @ 5:16pm 
I got it working. However, be warned that there are a few things that makes this a far cry from actual headtracking.

First is the snapping deadzone. AC7 has a built in deadzone which translates into your view automatically snapping to the hud when you move close to it. Needless to say this can throw off your target tracking quite a bit. There is an anti-deadzone feature built into x360ce, and I was able to tune it so that it no longer snaps in front, but now the view is slightly "wobbly" in front.

Second is the degree of movement available. Yaw is quite good, as you are able to turn 180 degrees behind. However, pitch is locked to 90 deg both up and down. You can see this for yourself as even with a controller, you can't move the view past 90 deg up/down even when you max out the stick. This is quite limiting, given that in flight sims you sometimes crane your virtual neck back quite a bit more than that (say 100-120 deg) to track a target above you during a merge.

--Cont--
MassiveFire 7 Jan, 2023 @ 4:36pm 
I assume that since I'm using opentrack instead of trackIR, and because opentrack has a built in vjoy output, I don't need freePIE, right? Just get the output from vjoy through opentrack and pass it into x360ce?
Snacko 31 Dec, 2022 @ 9:15am 
Oh man!! I was going to buy this game in the Winter Sale, but what a hassle to setup your TrackIR. And joystick? And I need to learn my lesson with these XBox ported games.. Arg..
Friya 3 Aug, 2022 @ 10:42pm 
Thank you very much! :lunar2020hearteyesrabbit:
Cold Stoned Steven 20 Oct, 2021 @ 6:52pm 
I seem to have figured out how to combine the controllers thought it was differnt than you described. But I'm still stuck with the same problem of the combined controllers not showing up as a 360 controller in my steam controller settings.
Cold Stoned Steven 20 Oct, 2021 @ 6:25pm 
Hi i'm having issues with your guide, I don't see the button to combine the inputs like youre saying within x360ce, I do see something similar but i'm not sure I am doing it correctly. my flightstick+vjoy trackir show up in steam controllers but not the emulated 360 controller you described. Any chance you can walk me through it?
jknutah 17 May, 2021 @ 11:24pm 
Hi there, great guide thank you! But I need help - everything works great and tests fine, until after I start the game, Shift+Tab in BPM and got to Controller Configuration. It says that no controller is connected. And again, everything up to that point was done as described and tests as expected; I should have the X350 controller show up but it doesn't. Any ideas, or has anyone run into this? Thanks in advance!
Maxx_6dof 12 May, 2021 @ 7:25am 
Hi, I just started playing this game and I am loving it! But could you please tell me which axes your trackir is bound to in game? I'm using vjoy and freepie but am trying to edit the input,ini file accordingly. Already got my HOTAS Cougar working.
Thanks for your guide and thanks in advance for your help. Maxx, out.