Frets on Fire X - FoFiX
This is Frets on Fire X, a highly customizable rhythm game supporting many modes of guitar, bass, drum, and vocal gameplay for up to four players. It is the continuation of a long succession of modifications to the original Frets on Fire by Unreal Voodoo.
Repository (GitHub): http://github.com/fofix/fofix
If you have the time please fill out our survey: https://goo.gl/4s2jjc
$ git clone git://github.com/fofix/fofix.git
Chat with us on IRC: #fofix on oftc.net (web interface)
Chat with us on Gitter
How to set yourself up to run from source
Table of Contents
- Checking out the latest code
- Notes on Python versions
- Setting up Python and third-party dependencies
- Compiling the native modules
- Building the translations
- Starting the game
- Making binaries
If you're reading this from the GitHub project view, you might want to clone the repository so you have your own copy of the latest source files. Otherwise, you have everything you need and so can skip this section. If you go the Git way, remember that some things might be broken or incomplete at any given time!
To clone this repository you can use the following git command:
git clone https://github.com/fofix/fofix.git
There's also [guide] to accessing the Git repository and interacting with other development resources.. [guide]: http://www.fretsonfire.net/forums/viewtopic.php?f=32&t=47966
As a warning when running from git, you will want to keep a separate folder containing the latest stable release. New features and fixes that become available from git might cause other issues affecting playability.
Python 2.7 is currently the lowest version we support. Anything below that has been dropped.
We do not currently support Python 3.x but we have been slowly preparing for the transition. 3.x breaks compatibility with 2.x in many non-trivial ways. Therfor we have a lot of work before we can make the jump. Fretwork will likely get full python 3 support first, and then the games.
Follow the instructions for your operating system.
Note We are in the process of switching to using virtualenv, so these instructions will change.
We recommend that Windows users use 32-bit Python 2.7. The instructions below are written in terms of 32-bit Python 2.7.
First, you will need Python itself. Go to the Python download page
and select the most recent 2.7.x release. The most recent 2.7.x at the
time of this writing is 2.7.10 (direct link). Again,
32-bit is recommended, even if you have a 64-bit system. Install
by double-clicking the .msi file, and be sure to remember which folder
you install Python to, as you will need to know for the next step.
(If you use default settings, Python should end up in:
Adding Python to the PATH
The python installer can automatically add python to the PATH variable, if the "Add python.exe to Path" option is selected in the install. If this was not selected during installation, follow the following guide.
You will need to add the Python installation folder to the PATH.
Open the Start menu, right-click on "Computer" ("My Computer" before
Windows Vista), and choose Properties. Go to the Advanced tab, then
click Environment Variables. Under System Variables, find where the
PATH" (or "
Path") is set, and double-click it to edit it.
Add a semicolon (
;) to the end of the existing value, then type the
folder name in after the semicolon. Click OK in each window until you
are out of System Properties.
Downloading and installing third-party dependencies
You will now need to download and install the necessary third-party dependency modules. Versions are the most recent available at the time of this writing. You may wish to check the project websites for more recent releases. If you do not use the links here, or if you are not using 32-bit Python 2.7, be sure you get packages appropriate for your Python installation.
The following packages are required:
PyWin32 (direct link to build 219)
numpy (direct link to 1.9.2)
pygame (direct link to 1.9.1)
PyOpenGL (direct link to 3.0.1)
Pillow (direct link to 2.9.0)
Cython (link to 0.23)
This is a Python Wheel, after downloading install it using pip:
pip install Cython‑0.23‑cp27‑none‑win32.whl
The following packages are optional:
pyopengl-accelerate (direct link to 3.1.0)
This will make PyOpenGL go a good bit faster. Highly recommended!
py2exe (direct link to 0.9.2.2)
This allows you to freeze the code into standalone EXEs for distribution. There's no advantage at all to doing so unless you're going to be distributing binaries.
pyaudio (direct link to 0.2.8)
This provides support for microphone input, which is required for vocal play.
Install all packages by double-clicking the .exe or .msi files that you downloaded.
Installing the Win32 Dependency Pack
Some code in FoFiX depends on external libraries written in C. The
win32/ directory contains build scripts, but it can be difficult to
get the proper environment set up to use them.
Since building and setting up these libraries can be difficult, we are
making available a prebuilt archive of everything you need to compile
FoFiX's native modules. Download the latest FoFiX Win32 Dependency Pack
from here and unzip it into the
win32/ directory. (The
deps/ directory in the archive should become
a subdirectory of the
win32/ directory.) Now you are ready to compile
the native modules.
Fretwork is our new initiative to share some code with a fork of FoF called Frets on Fire: Reborn.
Some code from this repo has been move out into fretwork. To install fretwork download the following wheel: (direct link to 0.1.1)
Then install it using the following command:
pip install fretwork-0.1.1-cp27-none-win32.whl
If you have previously installed fretwork make sure you download the latest release from above then following command:
pip install fretwork-0.1.1-cp27-none-win32.whl --upgrade
Mac OS X
This section will be expanded soon, but as it stands it is only possible to run from sources on osx. Packaging is broken.
Notes about distributions
The following instructions are generic and should work on most GNU/Linux distributions. We have added many specific notes about Debian and Ubuntu since those are the most popular distributions, but that does not mean that FoFiX won't work on other distributions.
Note: On many distributions (including Debian and Ubuntu), in all
places where the Python interpreter is called or a Python package name
python can be replaced by a specific version, e.g.
python2.6. Remember that if you do it once, you'll have to do it
If we do not mention your distribution here and you have helpful tips for getting FoFiX to work, please come into IRC and tell us about it. Or file a bug telling us about your procedure.
Installing required packages
The following are required:
- Python (tested with 2.6 on Ubuntu Karmic and Lucid)
- pygame (at least version 1.9 is required if you want MIDI instrument input or you're on x86_64)
- PyOpenGL (3.x)
- Python Imaging Library (PIL) or Pillow
- Python's development headers
- A C++ compiler
- The OpenGL, GLU, GLib, SDL, SDL_mixer, libogg, libvorbisfile, libtheora, libsoundtouch, and libswscale (part of ffmpeg) development headers
The following are optional (refer to the Windows instructions to see what each one is needed for):
- the GNU gettext tools (for translations)
For those of you on Debian or Ubuntu, this means installing the
libsoundtouch-dev, and if you want translations,
Cerealizer should be installed via pip
For Fretwork you should download the sourcecode of the latest release (over here), extract the files and run the following command:
pip2 install fretwork-0.1.1.tar.gz
This command may depend on how your distribution provides pip, and what python versions you have installed.
Some packages can be troublesome, so we have notes below about certain packages.
Note: If you end up custom-building any packages, it is not strictly necessary to install them system-wide. You can instead use the PYTHONPATH environment variable when starting FoFiX to allow Python to find them. For example:
export PYTHONPATH=~/pygame-1.9.1release/build/lib.linux-x86_64-2.6:~/pyaudio/build/lib.linux-x86_64-2.6 python FoFiX.py
About pygame 1.9.x
If your distribution has pygame 1.9.x in its repositories, then there you are.
If you're running Debian, you will find that there is no pygame 1.9.x package (not even in sid). Manually downloading and installing the appropriate package [from Ubuntu][ubu python-pygame] should do the trick. [ubu python-pygame]: http://packages.ubuntu.com/lucid/python-pygame
Those with other distributions can manually download and build the latest pygame release.
wget -c http://www.pygame.org/ftp/pygame-1.9.1release.tar.gz tar zxvf pygame-1.9.1release.tar.gz cd pygame-1.9.1release/ python setup.py build
It can be installed system-wide with (as root):
python setup.py install
Debian and Ubuntu don't have it in their repositories, but a package is available here if you're using Python 2.6.
Other distributions that lack pyaudio can find the source for it elsewhere on that page.
Some parts of FoFiX are written in C or C++. These must be compiled before you can start the game from source.
Make sure that you have a C compiler installed (see below if you don't
have one), then open a command prompt, use the
cd command to navigate
src directory in the source tree, then type
python setup.py build_ext --inplace --force
You will have to do this every time you receive changes to a
.pyx file after an update. Otherwise you
are in danger of weird crashes, and our first question will probably be
whether or not you rebuilt the native modules.
setup.py complains about any programs or libraries being missing,
check that you have installed all of the dependencies, and for Windows
users, that the Win32 Dependency Pack is unpacked in the proper location.)
As for making sure you have a compiler, read the section for your operating system.
Install Microsoft Visual C++ Compiler for Python 2.7 by going here. (If you happen to have any version of MSVC 2008, that will work just fine too.)
Versions other than 2008 will not work. Native modules for Python programs must be compiled with the same version of Visual C++ that was used to compile Python, and the official Python 2.6 and 2.7 releases were built with Visual C++ 2008. (Don't worry if you have other versions of any Visual Studio components installed - they can peacefully coexist.)
Mac OS X
Install Xcode. Someone with a Mac will have to expand this section.
Install the appropriate package from your distribution's repository.
Under Debian and Ubuntu, you want
This part is optional.
FoFiX's interface can appear in languages other than English. If you
want to try other languages, you must have the GNU gettext tools
available. (They are included in the Win32 Dependency Pack; under
Debian-like systems, install the
gettext package.) Then open a command
prompt, navigate to the
src directory in your source tree using the
cd command, and type
python setup.py msgfmt
to build the translations. Many are incomplete or outdated; improvements would be greatly appreciated. (We will write a more detailed guide on translating soon.)
If you make or receive changes to a
.po file for a translation you are
using, be sure to do this step again to make the game use the modified
Open a command prompt and navigate to the
src directory in your source
tree using the
cd command. Then type
The game will start from source.
Alternatively, if you're running Windows, you can merely double-click
src/scripts/RunFofFromSources.bat to run the game.
Follow the instructions for your operating system.
Unofficial binaries are completely unsupported and will warn the user accordingly when they are started.
If you installed py2exe, you can freeze the code into an EXE by
Be aware that whether you are running from source or EXE has negligible impact on performance except while the game is just starting up, and even then there is practically no difference. This means that there really is no point in creating the EXE unless you are going to distribute FoFiX to others.
Mac OS X
setup.py is py2app-aware. Someone with a Mac will have to expand
We don't support GNU/Linux binaries anymore. Just run from source for
now; we'll make the standard
python setup.py install do the right
thing sooner or later (certainly before 4.0 is released).