Friday, November 7, 2008

Frets on Fire: A love-hate relationship

Hello everyone. My name's Rick and I'm here to post my random randomness.

One thing I'd been wanting to say for a long time is that Python sucks. Or actually, Python programs suck. Maybe it's that it's relatively easy to learn Python, that python programs reek of newbiness. And the program I'll use to demonstrate this is... Frets on Fire. Regarding code quality, Frets on Fire sucks.

Don't get me wrong, I *LOVE* Frets on Fire. I even purchased my own Playstation 2 guitar controller to play with it (for only $49.99 + the PS2-USB adapter). But still, the game is a crashing/hanging mess.

So what are the problems I've seen so far?

* Video support. I tried to run the program on a 1024x768 LCD screen and all I got was blank video. I needed to search in the forums and edit the .ini file manually, add a [Video] section, and on the [Video] section I had to add a line saying: "Fullscreen = Off".

* Next, sometimes (I'm using version 1.2.512) the whole program hangs when I happen to press "esc" because I realized I didn't want to change an option. What kind of programmer doesn't take into account the ESC button?

* Next comes the handling of the song packs. I happened to download a song pack from the internet so I could play my favorite songs. I unpacked the rar files according to the description, and guess what happened? I got a python exception!

C'MON! Just because you couldn't read the title doesn't mean you have to crash the WHOLE PROGRAM!
Ok, let's calm down, and try to find out which song title has weird characters on it. One by one of the 179 songs. Finally, after a whole day of searching, I finally... gave up. I decided to move the songs out of the songs directory and copy them one by one to see which ones DID work. This is much safer. But seriously, it's frustrating to get an error just because you didn't find a file.

* Also, some of the songs came with a "guitar.ogg" file instead of a "song.ogg" file. So whenever I try to hear a preview and the song doesn't exist, I get another exception. ARGH! How hard is it to say "if there's no song.ogg, search for guitar.ogg instead"? It's a damn "IF" instruction.

Now I have to copy them manually.

* Next comes the fact that the programmer for Frets on Fire didn't program for GNU/Linux, but Windows only (note that I'm using a debian distro). So now I have to deal with not one, but TWO directories: /usr/share/games/fretsonfire/data/songs and ~/.fretsonfire/songs. Guess what happens when the game can't find the corresponding file to a song directory. I ended up wiping out ~/.fretsonfire/songs completely and turn it into a symlink pointing to the other directory.

If that wasn't frustrating enough, then come the mods. The fretsonfire.net website has a link to (GNU/)linux builds of fretsonfire, but guess what? It sends me to the same page than the windows file. What am I supposed to do with a friggin' .exe file? One of the virtues of python is that it's SUPPOSED to be cross-platform. So here comes a Windows amateur coder, and starts imposing this "it's my way or the highway" philosophy of installing programs.

So I finally got a GNU/Linux install of the FoFiX (formerly MFH mod) modified version of frets on fire, which I had to patch manually by decompressing the patch file - on another folder, ugh. And unfortunately, it doesn't support the ORIGINAL option "enable key tapping". I have carpal tunnel syndrome, and having the keys pressed for a long time hurts. I guess we should rename the mod from "MyFingersHurt" mod to "MyCarpalTunnelHurts" mod.

Why do I have to cope with all these amateurs delivering defective code... WHICH IS NOT MAINTAINED!!?? I'm still waiting for the next update of Frets of Fire.

* About some recent bugs in 1.2.512, guess what the author said: "Oh, that bug belongs to one of the libraries we use, and it's out of our control". In C++, you could just copy the current version and embed it in your own program.

So why do Python programs keep giving me headaches, while C++ programs don't?
Sigh. I miss the "configure / make / sudo make install" ritual. It made things so easy.

If you agree with me that Python Sucks, and/or that Frets on Fire needs a remake, please visit this thread: http://cboard.cprogramming.com/showthread.php?p=795950#post795950 . There's a guy wanting to do a Frets Fire clone in C++. Go give him a hand.

1 comment:

Lysdestic said...

Wow, a bit harsh. Not to mention the fact that you can't read much.

Hammer-ons are supported in FoFiX, you just didn't look hard enough.

Give it another go, FoFiX is pretty freaking active and well-supported. I'm a Linux user too, and I can say, running from the source isn't that tough.

If it makes you feel better, debs will be available once the switch to python2.6 is complete.

http://www.fofix.googlecode.com