NOTE: In the process of putting together this post, I discovered both the game PhaseShift, and a fantastic theme for it based on RockBand 3. PhaseShift appears to be everything I was looking for in modifying FoFix and a WHOLE LOT MORE. I pressed on with this post for two main reasons:
- It might serve to help anyone else who may be interested in continuing on with more development on FoFix
- I had a lot of fun getting everything together and just seeing it work from source.
Still, I highly recommend checking out PhaseShift and the themes that are available for it. There seems to be a lot more work going on with it these days than any of the other rhythm games out there.
If you haven’t played it, Frets on Fire is a RockBand clone from back around 2009. You can read more about the genesis of the game here.
It’s written in Python and open source, so there have been a number of mods made to the original game over the years.
By far the best, in my opinion, is the Frets on Fire X mod, usually called FoFix. Tons of great changes and improvements, plus a fantastic looking theme called ‘RockBand’.
The unfortunate part is the FoFix (and Frets on Fire in general) appear to have fallen by the wayside in terms of people working on them. That’s really too bad, as
it’s a fantastic game which works quite seamlessly.
Still, as good it as it, it could always be better, right?
Features
Really, all I set out to do was add code to the song selection list that would show what instruments were available in each song, without having to actually pick the song and then getting a “This song has no drum part” message. Pretty simple stuff. But this is Python, and open source, and while I’ve worked with open source before, Python was a new beast for me to tangle with.
Getting Organized
If you’re like me, you already have a copy of FoFix installed, it’s just that you run the EXE version of the game, and not the source code version.
If you want to make any changes, you’ll need to be running from the source code itself. That’s what all this is about.
First things first though. This all might not be strictly necessary, but I don’t want to wreck my playable install of the game, so…
- Copy the entire FoFix installation to somewhere else, I created a folder called FoFix35 (since 3.121 was the current version). However, If you have a LOT of songs in your \data\songs folder, don’t copy all of them. There’s no need. Just a few will do. So, at this point, you should have 2 root folders somewhere:
\FoFix (your original Frets On Fire X installation)
\FoFix35 (the copy, minus most of the songs) - Create a \FoFix35\src folder if it doesn’t already exist (this is where you’ll want the source files)
- Create a \FoFix35\installs folder (this is where I downloaded all the necessary files, see the next section)
The Downloads
Download all these files into the installs folder you created above.
First, the code. You’ll likely want the most recent, active version of FoFix, which, as far as I can tell is 3.121
https://codeload.github.com/fofix/fofix/zip/Release_3.121
Python (Duh, right? You’ll need the 2.6 version)
https://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
PIL (Python Imaging Library, you’ll want 1.1.6, not 1.1.7!)
http://effbot.org/media/downloads/PIL-1.1.6.win32-py2.6.exe
PyAudio
http://people.csail.mit.edu/hubert/pyaudio/packages/pyaudio-0.2.4.py26.exe
PyGame (I used the 1.9.2a version, but if that doesn’t work for you, try installing 1.9.1 over it)
http://www.lfd.uci.edu/~gohlke/pythonlibs/zit7bosa/pygame-1.9.2a0.win32-py2.6.exe
http://pygame.org/ftp/pygame-1.9.1.win32-py2.6.msi
PyOpenGL
http://www.lfd.uci.edu/~gohlke/pythonlibs/zit7bosa/PyOpenGL-3.1.0b2.win32-py2.6.exe
PyOpenGL Accelerator
http://www.lfd.uci.edu/~gohlke/pythonlibs/zit7bosa/PyOpenGL-accelerate-3.1.0b2.win32-py2.6.exe
PyWin32
http://softlayer-dal.dl.sourceforge.net/project/pywin32/pywin32/Build216/pywin32-216.win32-py2.6.exe
The Win32 Dependency Pack
https://fofix.googlecode.com/files/fofix-win32-deppack-20130304.zip
And finally, NumPy (Note: you’ll want this version in particular, older versions didn’t work for me)
Installing Everything
First, unzip the Source code zip file into the \src folder you created above. When done, you should have
\FoFix35\src\midi
\FoFix35\src\scripts
\FoFix35\src\win32
plus a bunch of *.py files in the \FoFix35\src folder itself
Next, dblclick the Python installation exe and work your way down the list above, till you get to the Win32 dependency pack. Just accept the defaults and you should be able to just install each one after the other.
The dependency pack itself is a zip file that needs to be unpacked in a specific spot.
The zip contains a root folder, ‘deps’. This ‘deps’ folder should be unpacked into:
\FoFix35\src\win32
such that when you’re done, you end up with:
\FoFix35\src\win32\deps
and this deps folder contains ‘bin’, ‘include’ and ‘lib’ folders.
Finally, finish up with the numpy package.
Checking it out
If everything has gone well, you should be able to navigate to
\FoFix35\src\scripts
and run
RunFofFromSources.bat
FoFix should compile and open its normal intro window.
If it doesn’t, be sure to check the log file
\FoFix35\src\fofix.log
This should give you a pretty good indication of what’s gone wrong.
Wrapping Up
If things do go wrong, first check the log I mentioned above.
I ran into several issues while working through this process.
- I got the wrong versions of some libraries, based on outdated information on the web (Yeah, this post might eventually end up in that same boat!).
- I started with the wrong version of Python (2.4, you need 2.6).
- NumPy gave me some issues, in that I didn’t have the right version.
- The Python Imaging Library I had to back out to an older rev to get functioning
I stuck with the 32bit version of everything. It might be possible to get 64 bit working, but I didn’t go that route.
I’ve played FoFix for almost 4 years now, using 2 Ashley Rock Axe wireless controllers, as well as a Red Octane wireless drum controller. Great fun! And now I can experiment with some Python coding to boot!