Ace Combat 7: Skies Unknown

4.0

Enjoying the landscape from the cockpit of a F-16
Enjoying the landscape from the cockpit of a F-16

Primary Buffer Panel

This is a game I have an absolute love/hate relationship with. It’s one of the first PC ports of the franchise and this really shows. One of my main issues with the games is it’s mediocre HOTAS support, forcing the player to crawl through .ini files manually to configure all buttons and axis. The other unforgivable issue is that this game basically supports only a FULL HD resolution of 1920x1024 and does not even have a FOV slider. This is a game meant to be played with HOTAS and a wide screen!

Anyway, for both exist mods. Speaking of I play this with a bunch of Macross mods and a FOV to get my VF-1 “fix”. I hear there’s also a hack to extend the resolution but that involves editing the binary with a hex editor, which I don’t feel comfortable doing since the address changes with each patch. Oh and the FOV mod somehow only works with Proton 8 for me. YMMV.

Launch parameters

The usual gamescope trick has not much merit here, since the game will simply not allow anything over 1920x1024. SBS is possible though.

I love to play many games with my XR glasses in Side-By-Side mode where each eye is fed with a slightly different camera position resulting in 3D depth perception.

This is similar to VR but does not offer e.g. a backchannel for head tracking. Some games, like Elite Dangerous, support this natively. Other games can be forced into a SBS like mode with ReShade and a plugin like SuperDepth3D or Rendepth Reshade. In theory are Reshade shaders compatible with vkBasalt but the depth stuff is apparently exempt from this rule so that is not an option. The approach works nicely with Proton though.

The reshade-linux repo is very useful to get you started but the required steps can be done manually too, of course.

You will need gamescope on top though, because the output has usually to be rescaled or the display ratio is completely off. This also depends on the glasses. Mine do FULL SBS so a resolution of 3840x1080 is excepted in the end.

For Elite Dangerous the correct settings would e.g. be:

gamescope -h 2160 -w 3840 -H 1080 -W 3840 –scaler stretch -e – %command%

Other games may require slightly different settings here. This is an example for Ace Combat 7: Skies Unknown with Reshade and the SuperDepth3D shader:

WINEDLLOVERRIDES=“d3dcompiler_47=n;dxgi=n,b;” gamescope -h 1080 -w 1920 -H 1080 -W 3840 –scaler stretch -b -r 60 -e – %command%

YMMV but the general idea should work with almost any game.

For the sake of completeness here is also my Input.ini located in drive_c/users/steamuser/AppData/Local/BANDAI NAMCO Entertainment/ACE COMBAT 7/Config/ configured to work with my custom DIY F-16 FLCS, Thrustmaster rudder, Cougar throttle and OpenTrack head tracking (joystick output):

[JoystickSetting]
EnableJoystick=True
EnableDeviceJoystick=True
EnableDeviceFlight=True
EnableDevice1stPerson=True

[JoystickMappingFormat]
HelpComment=" ObjectFormat"
HelpComment="     X, Y, Z, Rx, Ry, Rz, Slider[1-2], POV_[U, D, L, R][1-4], Button[1-32]"
HelpComment=
HelpComment=" ValueFormat"
HelpComment="     Object, Object:[P, N, R, C]...[P, N, R, C]"
HelpComment="         P:PositiveValue / N:NegativeValue / R:ReverseSign / C:ConvertRange(+1.0~-1.0 -> 0.0~1.0)"
HelpComment=
HelpComment=" MappingFormat"
HelpComment="     Value, Value1 [&, !, +, >, <] Value2"
HelpComment="         &:IfValue2!=0 / !:IfValue2==0 / +:AddValue / >:SelectLarger / <:SelectSmaller"
HelpComment=
HelpComment=" Example"
HelpComment="     Flight_Pitch=Y:R ! Button10"
HelpComment="     Flight_HatSwitchRight=POV_R1"

[Joystick-0402044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. F-16 Flight Control System
Flight_Gun=Button1
Flight_Missile=Button4
Flight_Weapon=Button10
Flight_Target=Button5
Flight_Radar=Button14
Flight_Flare=Button17
Flight_View=Button3
Flight_AccelerationDeceleration=
Flight_AutoPilot=Button12
Flight_Pause=
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=Y:R
Flight_Roll=X:R
Flight_Yaw=
Flight_Throttle=
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=Button4
UI_A=Button3
UI_X=Button1
UI_Y=Button5
UI_LB=
UI_RB=
UI_LT=Button15
UI_RT=Button9
UI_LeftStickPress=Button7
UI_RightStickPress=Button5
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:NR
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button12

[Joystick-B679044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. Thrustmaster Rudder
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=
Flight_Flare=
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=X
Flight_Throttle=
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=

[Joystick-B687044F-0000-0000-0000-504944564944]
ProductName=ThrustMaster, Inc. Cougar Throttle
Flight_Gun=
Flight_Missile=
Flight_Weapon=Button9
Flight_Target=
Flight_Radar=Button11
Flight_Flare=Button1
Flight_View=Button13
Flight_AccelerationDeceleration=Button7
Flight_AutoPilot=Button3
Flight_Pause=Button10
Flight_HatSwitchUp=POV_U1
Flight_HatSwitchDown=POV_D1
Flight_HatSwitchLeft=POV_L1
Flight_HatSwitchRight=POV_R1
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=Rx
Flight_CameraPitch=
Flight_CameraYaw=
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=POV_U1
UI_DPadDown=POV_D1
UI_DPadLeft=POV_L1
UI_DPadRight=POV_R1
UI_LeftStickUp=Y:N
UI_LeftStickDown=Y:P
UI_LeftStickLeft=X:N
UI_LeftStickRight=X:P
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=Button10

[Joystick-00000000-0000-0000-0000-504944564944]
ProductName=Opentrack
Flight_Gun=
Flight_Missile=
Flight_Weapon=
Flight_Target=
Flight_Radar=
Flight_Flare=
Flight_View=
Flight_AccelerationDeceleration=
Flight_AutoPilot=
Flight_Pause=
Flight_HatSwitchUp=
Flight_HatSwitchDown=
Flight_HatSwitchLeft=
Flight_HatSwitchRight=
Flight_Pitch=
Flight_Roll=
Flight_Yaw=
Flight_Throttle=
Flight_CameraPitch=X
Flight_CameraYaw=Y
UI_B=
UI_A=
UI_X=
UI_Y=
UI_LB=
UI_RB=
UI_LT=
UI_RT=
UI_LeftStickPress=
UI_RightStickPress=
UI_DPadUp=
UI_DPadDown=
UI_DPadLeft=
UI_DPadRight=
UI_LeftStickUp=
UI_LeftStickDown=
UI_LeftStickLeft=
UI_LeftStickRight=
UI_RightStickUp=
UI_RightStickDown=
UI_RightStickLeft=
UI_RightStickRight=
UI_Menu=

Head tracking

Ace Combat 7 does only support look-around with a gamepad / joystick. It also goes bonkers after a while and requires a game restart. I think this is because it tries to “auto calibrate” all the time and is eventually completely off when the tracker gets recentered externally by e.g. OpenTrack. Until then it works remarkable well. The forced “deadzone” in the middle is a little bit annoying, as it snaps the player camera back in place when coming to close to it.

Demo

Snippets of mission 11: Fleet Destruction / Operation Siren’s Song. In this mission Trigger gets to sink the Erusean Njord Fleet and destroy supply lines. It’s a rather long going mission with the option of doing own supply runs (which I did twice). Also flares.. I needed so many flares in this one.

Watch this video on YouTube PeerTube