Homebrew OpenArenaNX - OpenArena port for Nintendo Switch

faithvoid

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
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 GitHub repo! Just extract the .zip file from the latest release to your /switch/ folder, copy over the baseoa folder from an OpenArena installation (making sure not to overwrite any .cfg files), 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.

I also released a port of Star Trek Voyager: Elite Force - Holomatch for those interested! Bot matches are currently broken with controllers and gyro controls must be enabled manually, but it works well apart from that!

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

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
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

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
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

Hoist the Colours!
Member
Joined
Feb 9, 2017
Messages
205
Trophies
0
XP
1,410
Country
United Kingdom
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

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
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
30
Trophies
0
Age
40
XP
123
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

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
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!
 

bad361

Well-Known Member
Member
Joined
Jun 18, 2018
Messages
1,168
Trophies
0
Location
Moscow
XP
2,446
Country
Russia
hey, thanks for the port! works flawlessly, kinda weird that i missed this thread since ioquake3 hasn't been updated in a long time and doesn't work on latest FWs now...
 

FAKEdemicBioPYSCHONANOWAR

Well-Known Member
Member
Joined
Sep 26, 2021
Messages
207
Trophies
0
Age
35
XP
517
Country
Netherlands
How do i make this work with the files of ioquake 3?
github talks about "baseoa"
But ioquake3 has folder "baseq3"
I dunno what to do from here...
Also do I need to put files in"OpenArenaNX" folder or the "Q3ArenaNX" folder?

When I try to launch openarena nx or q3arenanx in hbmenu it loads with blackscreen for 5 secs then returns to hbmenu.. doesn't seem to work for me.
 

faithvoid

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
Country
Canada
How do i make this work with the files of ioquake 3?
github talks about "baseoa"
But ioquake3 has folder "baseq3"
I dunno what to do from here...
Also do I need to put files in"OpenArenaNX" folder or the "Q3ArenaNX" folder?

When I try to launch openarena nx or q3arenanx in hbmenu it loads with blackscreen for 5 secs then returns to hbmenu.. doesn't seem to work for me.

Download Q3ArenaNX from the GitHub page, extract the Q3ArenaNX folder in the .zip wherever in your /switch/ folder, and drag & drop your baseq3 folder from Q3 into the Q3ArenaNX folder, taking care not to replace any files when prompted. The Q3A installation instructions are on the q3a branch of the GitHub repo as opposed to the main branch, but apart from the folder names all the instructions for OpenArenaNX, Q3ArenaNX and VoyagerNX are pretty much identical. If it still doesn't work let me know and I'll double-check to make sure it's still working w/ the latest AMS + FW.

hey, thanks for the port! works flawlessly, kinda weird that i missed this thread since ioquake3 hasn't been updated in a long time and doesn't work on latest FWs now...

No problem, thank you so much for using this port! I had some free time a while back to figure out why ioquake3-nx wasn't working and it was pretty much solely due to a good chunk of HID commands being renamed or replaced in newer firmwares, so it wasn't too terribly difficult to make a few modifications to get things back up and running w/ the latest DevKitPro & documentation. :) I'm still hoping to improve a few things here and there in the future!
 
Last edited by faithvoid,

FAKEdemicBioPYSCHONANOWAR

Well-Known Member
Member
Joined
Sep 26, 2021
Messages
207
Trophies
0
Age
35
XP
517
Country
Netherlands
Download Q3ArenaNX from the GitHub page, extract the Q3ArenaNX folder in the .zip wherever in your /switch/ folder, and drag & drop your baseq3 folder from Q3 into the Q3ArenaNX folder, taking care not to replace any files when prompted. The Q3A installation instructions are on the q3a branch of the GitHub repo as opposed to the main branch, but apart from the folder names all the instructions for OpenArenaNX, Q3ArenaNX and VoyagerNX are pretty much identical. If it still doesn't work let me know and I'll double-check to make sure it's still working w/ the latest AMS + FW.



No problem, thank you so much for using this port! I had some free time a while back to figure out why ioquake3-nx wasn't working and it was pretty much solely due to a good chunk of HID commands being renamed or replaced in newer firmwares, so it wasn't too terribly difficult to make a few modifications to get things back up and running w/ the latest DevKitPro & documentation. :) I'm still hoping to improve a few things here and there in the future!
I put the folder baseq3 into the switch/A3arenaNX folder on sd card. I launch it but black screen and returns to HBmenu...
 

faithvoid

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
Country
Canada
I put the folder baseq3 into the switch/A3arenaNX folder on sd card. I launch it but black screen and returns to HBmenu...
Huh, just to check, are you launching via the album method or by holding R and launching a game? Since I'm like 95% sure this won't work in album mode due to memory constraints. If you can FTP or use another method of file transfer, there should be a crashlog.txt file in the Q3ArenaNX that might explain why it's crashing.
 

FAKEdemicBioPYSCHONANOWAR

Well-Known Member
Member
Joined
Sep 26, 2021
Messages
207
Trophies
0
Age
35
XP
517
Country
Netherlands
Huh, just to check, are you launching via the album method or by holding R and launching a game? Since I'm like 95% sure this won't work in album mode due to memory constraints. If you can FTP or use another method of file transfer, there should be a crashlog.txt file in the Q3ArenaNX that might explain why it's crashing.
Seems the file i moved with tinfoil MTP didn't move at all they ereverted or smthing. Anyway i moved them now, and it works! thnx
 

FAKEdemicBioPYSCHONANOWAR

Well-Known Member
Member
Joined
Sep 26, 2021
Messages
207
Trophies
0
Age
35
XP
517
Country
Netherlands
I notice the bot in the first real level is just ignoring me he never shoots me... and walks around picking up items... thats all he does.
Btw any tips on how to aim better, even with lowest mouse setting it is rather fast. No gyro aiming support also?
 

faithvoid

Well-Known Member
OP
Newcomer
Joined
May 18, 2020
Messages
49
Trophies
0
Location
Tkaronto
Website
virtual.dimensionless.space
XP
452
Country
Canada
I notice the bot in the first real level is just ignoring me he never shoots me... and walks around picking up items... thats all he does.
Btw any tips on how to aim better, even with lowest mouse setting it is rather fast. No gyro aiming support also?

Huh, that's weird, I haven't run into anything like that in my testing but I'll play a match tonight to see if I can replicate it. Gyro can be enabled/disabled from the Setup -> Controls menu in the main menu of the game (not the in-game/in-match menu at the moment) . Unfortunately there's no options to adjust the joystick sensitivity in-game (this is an issue with the ioquake3 engine in general since the joystick code is quite hacky, I'm hoping to implement some custom sliders eventually when I better understand .QVM code) but you can use the console commands "/j_pitch VALUEHERE" and "j_yaw VALUEHERE" to adjust the right-stick sensitivity, the defaults for yaw being -0.008 and pitch 0.007, or you can modify those values in q3config.cfg.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    Xdqwerty @ Xdqwerty: I hate myself