Homebrew OpenArenaNX - OpenArena port for Nintendo Switch

faithvoid

Active Member
OP
Newcomer
Joined
May 18, 2020
Messages
29
Trophies
0
Location
Tkaronto
Website
accela.design
XP
176
Country
Canada
So I guess I've been on a bit of an free ioquake3 engine game porting spree lately, so alongside my VoyagerNX (Star Trek Voyager Elite Force: Holomatch) release I've decided to also port OpenArena over to the Switch! Also includes a q3a branch for playing regular Quake III Arena, which you can download under the Releases section on GitHub as "Q3ArenaNX".

20211009_100312.jpg


I know ioquake3-nx already exists (and I used a bit of it's code to port OA) but it requires Quake III, which costs money, so here's a fantastic, fully free alternative, using ioquake3 1.36 + OpenArena 3.00a. Also this port is currently more up-to-date with the main ioquake3 branch, contains an experimental new gyro library compatible with the last HID refactor, and includes keyboard + mouse support. All Quake III / OpenArena custom maps and mods that don't require dynamic libaries (aka .dll/.so files) should work with this version, but there may be dragons. I successfully tested Bid for Power which worked apart from some wonky keybindings and missing textures on some maps, but Urban Terror spat out a ton of errors trying to join a game.

Known Bugs:
  • Virtual keyboard shows up upon every launch. Not a big deal, but a slight nuisance to some people probably.
  • Sleep mode causes the game and sometimes Horizon to crash. This seems to happen in a lot of ioquake3-based ports, and I'm working on diagnosing it.
  • Really epic battles can cause the framerate to dip on larger maps regardless of graphical settings. I'll try to work on optimizations, but I can't guarantee I can do a ton about it. Changing the resolution to one below 720p via the q3config.cfg file may help a touch.
  • You tell me.
Here's the download link for version 0.7.6 + OpenArena game files (392mb, around 420mb unzipped), and here's the GitHub repo! Just extract the .zip file to your /switch/ folder, copy over the baseoa folder from an OpenArena installation or .zip if you're using the GitHub release, run it with HBMenu (with R, not album) and you're ready to start fr4gg1ng n00bs on the battlefield.

Also thanks to popular demand, an updated version of ioquake3 (named Q3ArenaNX) can be found alongside all current OpenArena releases. This build works well w/ multiplayer, singleplayer, mod support (again, without dynamic libaries) and basic gyro controls.

Controls:

Gyro controls can be enabled from the controls section of the main menu settings.
  • Left Trigger - Jump
  • Right Trigger - Attack
  • Left Bumper - Crouch (or brings up keyboard when text fields are selected)
  • Right Bumper - Next Weapon
  • X - Use
  • Y - Taunt / Toggle Console (menu)
  • A - Select
  • D-Pad Left + Right - Weapon Select
  • D-Pad Up - Zoom
  • D-Pad Down - Toggle Console (in-game)
  • Minus - Scores
  • Plus - Menu
  • Left Stick In - Vote No
  • Right Stick In - Vote Yes
Changelog:

Oct 14, 2021 - Released version 0.7.7
  • Gyro now automatically detects whether the user's controller is in handheld or wireless mode and adjusts the axis accordingly. Haven't tested with a pro controller, but would imagine it should work fine, as the fix specifically targets handheld mode. This means apart from finding slightly more natural gyro defaults for both handheld and wireless mode, the end user can enjoy seamless gyro controls between input methods.
Oct 13, 2021 - Released version 0.7.6
  • Rewrote fgsfdsfgs's sdl_input_nx.c from ioquake3-nx to reference current HID refactor names, therefore enabling basic gyro support. (albeit incomplete due to no automatic switching of yaw axis between controllers.)
Oct 12, 2021 - Released version 0.7.5.1
  • Implemented alpha-status code for gyro support and released an alpha build with gyro support. It works (at least on Handheld), but may feel janky at times and could lead to unknown issues. I've been testing it and it's...okay, but I could definitely use feedback and assistance, as I don't even use gyro in first-party games.
Oct 7, 2021 - First released version (v0.7.5) of OpenArenaNX and Q3ArenaNX.
 
Last edited by faithvoid,

faithvoid

Active Member
OP
Newcomer
Joined
May 18, 2020
Messages
29
Trophies
0
Location
Tkaronto
Website
accela.design
XP
176
Country
Canada
Stupid question maybe but does Team Arena work?
According to the ModCompat section of the OpenArena fandom wiki, Team Arena should work as long as you rename the Team Arena missionpack folder to something else like missionpack2, but you may encounter missing textures here and there. I don't see why it wouldn't work on this version, but I'll give it a shot myself to verify and report back.
 
  • Like
Reactions: fatsquirrel

faithvoid

Active Member
OP
Newcomer
Joined
May 18, 2020
Messages
29
Trophies
0
Location
Tkaronto
Website
accela.design
XP
176
Country
Canada
Hey everyone! The people have asked and I'm here to hopefully begin delivering! I spent a few hours re-writing a bunch of fgsfdsfgs's sdl_input_nx.c gyro code to be compatible w/ the latest libNX and released alpha builds of OpenArenaNX, Quake3ArenaNX and VoyagerNX with experimental gyro support, if people could test any of them out (especially anyone who's played ioquake3-nx) and give me feedback (and if other programmers can go over the sdl_input_nx.c file), that'd be swell, since I don't even use gyro controls in a lot of first-party games so I'm not sure how where to begin tweaking it to feel more natural. (And if you don't like the gyro controls you can disable them from the settings in the main menu!). You can find the new releases on my GitHub!
 
Last edited by faithvoid,

The_Chaotician

Well-Known Member
Member
Joined
Feb 9, 2017
Messages
130
Trophies
0
Age
34
XP
528
Country
This is amazing, I’ve been struggling to get Q3 working in HOS properly (closest I had was OpenArena on my Android partition).

Works perfect with the steam version of Q3A.

Only question I have is how to enable invert look - options in the menus to do so don’t work.

Thanks for your hard work!
 
  • Like
Reactions: faithvoid

faithvoid

Active Member
OP
Newcomer
Joined
May 18, 2020
Messages
29
Trophies
0
Location
Tkaronto
Website
accela.design
XP
176
Country
Canada
This is amazing, I’ve been struggling to get Q3 working in HOS properly (closest I had was OpenArena on my Android partition).

Works perfect with the steam version of Q3A.

Only question I have is how to enable invert look - options in the menus to do so don’t work.

Thanks for your hard work!

I'm super glad to hear everything's working well! It seems to me the reason that the previous releases of ioquake3 on HOS don't work anymore is because they attempt to call input functions that don't exist anymore, causing the Switch to immediately freak out. So after a week of studying the source code of ioquake3, ioquake3-nx, and the HID libraries for the Switch and testing various changes it was pretty simple to get up and running again!

I checked for myself and I see what you mean, the joystick controls don't have a menu option for inverting them, only mouse and gyro at the moment. The only way I know of at the moment to invert the look with the joysticks is by editing the q3config.cfg file so that the j_pitch value is inverted (ie; -0.007 instead of 0.007). Typing that into the console followed by "/in_restart" MAY work in-game, but I haven't gotten it to work on-the-fly. I'll see if hopefully in a future build I can add a menu option to switch the option.
 
  • Like
Reactions: The_Chaotician

bruteX

Active Member
Newcomer
Joined
Sep 29, 2021
Messages
29
Trophies
0
Age
38
XP
71
Country
Germany
Hey, Just wanna say that there is no gyro setting in pause menu while in game (q3). Also the rotation speed (turning) could be faster. Could you add a slider setting for that?
 

faithvoid

Active Member
OP
Newcomer
Joined
May 18, 2020
Messages
29
Trophies
0
Location
Tkaronto
Website
accela.design
XP
176
Country
Canada
Hey, Just wanna say that there is no gyro setting in pause menu while in game (q3). Also the rotation speed (turning) could be faster. Could you add a slider setting for that?

Hey! I'm hoping to implement gyro settings into the pause menu + a few other Switch-specific sliders by release 1.0, I'm still working out the best way since the original menu code is implemented via QVMs from fgsfdsfgs's version of ioquake3-nx. Thanks for the suggestions!
 
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: https://imgur.com/gallery/SJushW8