Project OutFox Alpha 4.12.0 released!

Happy 2022! We’re celebrating the new year with the second half of our second anniversary celebration, Alpha 4.12.0! This build includes some bug fixes and improvements over 4.11.0, and also introduces a few major changes which we will go over right now:

Unicode support

Alpha 4.12 has very long overdue extended character support in the file handlers. BMS and DTX files use different encodings to .SSC and .SM simfiles, and in the past, they often showed up as garbage characters, or mojibake characters which could not be easily read into the game. A simple fix for this was to convert the simfile into UTF8, but with many hundreds of files, this is not reasonable to ask of players.


Captured using Alpha V DTX theme in development.

This build correctly can detect the encoding with no user interaction, and will load them as expected into the correct game mode, including:

  • ANSI/Windows Extended (SMA/BMS/DWI/KSF)
  • SHIFT-JIS (BMS/BME/PMS/DTX/GDA/TJA)
  • UTF-8 (DTX/BME/SSC/SM/OTO)
  • UTF-8 BOM (GDA/DTX)
  • UTF-8 Extended (TJA/BME/DTX)
  • UTF-16 (DTX)
  • UTF-16LE (DTX)
  • UTF-16LE BOM (DTX)
  • UCS-2 (DTX)

Songs taking advantage of this change will take a little longer to parse and load on startup, but there will be opportunities to optimize it.

Game modes

Throughout 2021, Project OutFox began to position itself as a multi-game engine, designed to be more of a working museum dedicated to preserving the history of rhythm gaming. We have been building upon and fixing game types that were inherited from the StepMania codebase, as well as implementing new game types that have never been implemented in StepMania before.

Alpha 4.11 and 4.12 respectively include two major new game types that we hope you’ll have fun exploring and making content for:

smx

Alpha 4.11 introduced initial support for smx, a simulation of Step Revolution’s StepManiaX - a five-panel game type that uses a similar layout to dance, except with a center panel. We have also implemented beat bars in this mode that show the locations of stops and BPM changes.


To help support Step Revolution and the official StepManiaX game, we ask that you not rip or use official assets and songs from the game in OutFox. We will not support the arcade game’s timings (this mode plays best with the ITG timing windows) or file format, so please do not ask us to add them! The winter update to OutFox Serenity Volume 1 will add smx charts, and you can author your own smx charts in the editor.

kb7

On Alpha 4.12, we have removed kb7, a mode that was originally developed by the SSC. There were many players who wanted it to be more than it was, but the mode was generally used by a small set of players, and the original creators of the mode also wished for it to be retired when we got the chance. We salute the mode and what it did for StepMania at the time.

But fear not, keyboard players, as we are proud to present…

kbx

kbx is a revamp and rewrite of the kb7 mode, aimed at players that wanted a specific down-scrolling game mode, but with different sets of columns. We of course have varying modes with different sets and styles already, but there was no actual option to have things set in one specific place and one specific mode for it.

kbx supports 1 to 15 columns, and is a single-player mode. It will eventually get its own theme and other mechanics, but for now, it will fallback to our usual theme, but this does not make it any less playable!

We have decided to follow the playstyle of ez2 and o2Jam-styled games, but with our own little twist on things as is common with OutFox modes. In the future, there will be options to set this mode up to how you prefer, with styles and timing/scoring modes available to change up and adjust as always. The default noteskin for kbx is based upon the synthwave aesthetic, and this look will carry into its eventual theme as well. To help you learn and become comfortable with this mode, some of the noteskins are set up to display the key binding for each column below it.

Another unique aspect about this mode is that it will automatically autogen charts for existing songs too; i.e. songs with dance-single charts will show up as autogen 4K charts, pump-single and smx-single will show up as autogen 5K charts, dance-double will show up as 8K, etc.

To make this mode more accessible, we have also included a chart modifier that allows you to replace LiftHolds with normal holds. This was based on feedback from players, who felt that how they are used in charts may increase difficulty or make the game overly punishing.

Our default keyboard mappings can be seen below, but as always everything is completely remappable! You can also assign controllers, MIDI input, drums, DJ controllers, pads, etc. to this and play in any way you like!

To help improve performance, kbx does not support using modifiers in the same way that other modes such as dance does. You may be wondering why we took the time to write a “slimmer” Player Options for this mode. In honesty, there are a lot of things happening in the background we don’t use in some modes, and we wanted to try out turning some of these things off to see how it works with the game and performance styles.

OTO parser

We have also begun work on an OTO parser to enable osu and osz file support! We support the mania mode (3) at this time (we were unable to finish the taitai (1) support in time, it will come soon). The game reads them and can play them with synched video and BG changes, but we do not support osr or osb at this time.

Place song folders with OTO files into a group folder as you do with other simfiles, and they will be parsed as kbx charts. This mode supports multiple difficulties per folder, and will not make some versions ‘disappear’ as the old versions did. If there are multiple different songs in the same folder, the OTO parser can read and differentiate between the chart and its song/background, meaning you do not need to swap out anything or move stuff to individual folders. We will look into making this option available to other modes in the future. This new parser is based off of the .chart parser using line by line, splitting up each section into its own loading function.

Input

MIDI

Project OutFox’s portmidi driver has exited the beta stage on Alpha 4.12.0; this driver was written to accommodate the use of MIDI drumkits with the gddm mode. This was the first time that our engine contained a fully functioning cross platform MIDI driver, the previous semi-broken win32-midi being Windows-only. This new driver offers a 1 millisecond clock timer and near real-time input on Linux and macOS, but only supports one device connected to the system.

We are in the process of designing a MIDI-based FSR controller for modes which need it, as the MIDI system is currently the lowest latency for Windows-based systems. We hope to open source this in time, when the code is better (and Squirrel has the time).

The reason we kept it in beta for so long was there was an identified need to have a MIDI driver capable of supporting more than one MIDI input device, as had been requested by be-mu and gddm players, like DTXMania has, being able to add a second device to enable menu control, or to enable non-standard setups, for example pedals or ride cymbals from a second kit.

To assist with this need, we added another MIDI driver to the game, rtmidi. This driver allows for more than one device support compared to our portmidi driver, which is limited to a single device, like an e-drum kit, or a DJ controller. rtmidi allows for more than one device to be connected for two-player use, or for extra control for menu options for example.

The new rtmidi driver can be added to your Preferences.ini if you wish to use it:

# Windows

## portmidi - you only have one device
InputDrivers=portmidi,legacy,minisdl

## rtmidi - you have more than one device
InputDrivers=rtmidi,legacy,minisdl
# macOS (M1 and Intel)

## portmidi - you only have one device):
InputDrivers=portmidi,SDL

## rtmidi - you have more than one device):
InputDrivers=rtmidi,SDL
# Linux (x86_64/ARM/Raspberry Pi)

## portmidi - you only have one device):
InputDrivers=portmidi,SDL

## rtmidi - you have more than one device):
InputDrivers=rtmidi,SDL

Windows legacy input by default

If you have been reading the previous changelogs, we have been testing a slightly modified version of the old SM 4.x/5.x input driver for those that prefer the ‘feel’ of that era in input timing. Until the new GA driver is finished (we are waiting for the Q1 2022 Windows 10/Windows 11 update), we will set this driver as default from this alpha.

If you are on an established Preferences.ini, to use it you can follow the style above:

legacy (Windows Only)

InputDrivers=legacy,minisdl

You can also leave this blank, or add MIDI if you plan to play DTX or use a MIDI based input device in the future. You will need the minisdl input driver for your window and operating system controllers, it allows for a smaller footprint on the game, and for your Windows based playback this is important at the moment. It shows up in the ‘test input’ screen as ‘Window Handler (aux)’ so you have window controls, and full-screen etc support while keeping the base drivers compact. This driver will be default on all operating systems in due course, when the GA driver is complete.

If you however need to have an XInput supported device, or you have an advanced setup, you can reset the driver to how it was before this alpha with a simple change in your Preferences.ini:

SDL Driver (Windows Only)

InputDrivers=SDL

This will enable the support for the XInput system, and the legacy system in the default theme experimental options, (the UseOldJoystickMapping one) which will allow you to switch between the options.

If you use a ParaParaParadise controller you will need to add the Para Driver (Windows only right now!) before your options in preferences.

Legacy Driver (Windows Only)

InputDrivers=Para,legacy,minisdl

SDL Driver (Windows Only)

InputDrivers=Para,SDL

If you use a Reflex controller, you have several options, however it is best on Windows if you use the new legacy driver for now. To enable the Reflex controller, you need to add the following to your entry: (please note: You need legacy for keyboard input and to avoid HIDAPI problems!)

(Only one player is supported at this time, however if there is demand we can add more player support! Bug Squirrel for more information!)

Reflex Driver (Windows Only)

InputDrivers=Reflex,legacy,minisdl

If you have a Python 2/3 controller, like the above set up for the Reflex you can simply add your entry here, (remember to set up your COM ports etc as seen in the Windows Device Manager) and remember that this device is not seen in Windows 8 or higher due to the change in the way USB controllers became emulated.

Windows Only

InputDrivers=Python23IO,legacy,minisdl

If you have a RTIO controller, you need to add this as the other controllers, remember that legacy gives you keyboard and mouse support.

Windows Only

InputDrivers=Rtio,legacy,minisdl

Linux i386 and Windows 7 builds

For Alpha 4.12.0, we have produced a build for 32-bit Linux i386 systems, which supports systems as far back as Ubuntu 14.04. This build is something that we have not done in a while, so be sure to provide us with bug reports if you find any issues.

In addition, we have also produced a specific build for Windows 7, as the tools needed for us to build Project OutFox for Windows 11 are not quite compatible with older versions.

You can download these builds from the GitHub release page

Download

This is just a recap of the major, user-facing features and technical changes. You can read the full changelog on the Alpha 4.12.0 page on outfox.wiki.

As always, be sure to report any bugs you encounter on either our issue tracker or Discord. Be sure to provide us with as much information as you can whenever you report an issue. We won’t be able to fix bugs that aren’t reported to us.

Download Alpha 4.12.0