FoFiX 4.0.0 Development Thread

Discussion particular to FoFiX, its development, and themes
Forum rules
This topic is 2 years and 3 months old. Instead of replying, please begin a new topic, or search for another related topic that may be more suitable.
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Tue Mar 03, 2015 6:16 pm

raynebc wrote:Refactoring is a necessary burden, and the longer it's put off the worse it gets. Hopefully FoFiX can be revived someday. Even a new binary release would drum up some interest.

Very true, quite a bit would be required to do that right now. I would need to get back in contact with blazinggamer, and stump. We would also need to start tracking down and squashing a lot of the bugs the code has currently. Also personally i would like to remove a number of broken and unmaintained features.
Developer of clone hero, and Former FoFiX developer
Wiki Queen
User avatar
Five
Member
Posts: 247
Joined: August 26th, 2007
Location: Germany
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby Five » Sat May 02, 2015 6:15 pm

Last week I started playing again (used FoFiX for the first time, back in the old days I was still on FoF) and I just wanted to leave a big THANK YOU here to all the people who worked on this!
gyates08
Member
Posts: 14
Joined: March 2nd, 2015
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby gyates08 » Tue Oct 06, 2015 10:54 am

I still use FoFiX 3.121 and 4.0. Theyre great. Need both because certain songs only work with one or the other version, but theyre still great. Phase shift pisses me off for its lack of linux compatability. I would be happy to help out a real team debug 4.0 if theres a group interested. Ive written python and can read c++, so it would be a significant learning experience for me, but i know we could do it. maybe not a rewrite, but a crazy amount of bug fixing sounds highly possible.
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Tue Oct 06, 2015 4:38 pm

gyates08 wrote:I still use FoFiX 3.121 and 4.0. Theyre great. Need both because certain songs only work with one or the other version, but theyre still great. Phase shift pisses me off for its lack of linux compatability. I would be happy to help out a real team debug 4.0 if theres a group interested. Ive written python and can read c++, so it would be a significant learning experience for me, but i know we could do it. maybe not a rewrite, but a crazy amount of bug fixing sounds highly possible.


Well head on over to github and irc:
github repo: https://github.com/fofix/fofix
IRC Server: oftc.net
channel: #fofix
Here is the mibbit web interface: http://chat.mibbit.com/#fofix@OFTC

Most of us that are left are in IRC, probably idle. However, if you stick around someone will eventually see you on, or if you mention me ill get a notification and should get back to you fairly soon(I'm mdsitton on irc).

I try to work on things when I'm not working other stuff, but I have several other projects competing for my spare time.
Also just btw, the more other people show interest for a project, the more i'll be motivated be to work on it.

So anything can be helpful, even if its just tracking down bugs.
Developer of clone hero, and Former FoFiX developer
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Wed Oct 21, 2015 4:41 am

So i think it is about time to post some(hopefully) interesting information about some recent major changes, the project is undergoing.

I have been slowly working to separate the "engine" components of FoFiX out into a library I have named fretwork. This should allow me to share it across different versions of the game. Currently i'm planning to use it on 3 versions: 3.X series 4.X series and a new FoF fork(named FoF: Reborn).

There are several potential advantages to this. If we include all Cython/C/C++ python extension module code in fretwork we can distribute precompiled versions of these modules within, allowing FoFiX to once again be ran from source without a compiler installed(on OSX and windows). We can also fix some issues mostly separate from game releases, for example midi sysex crashes. Another advantage which is something we have been planning to do for a long time now. It will provide a simpler path to python 3 compatibility. We would start by focusing efforts on making fretwork work across python 2 and 3. Finally It would give us the ability of making releases separately from the games, which I feel could also be useful a couple of ways.

Now a story about the FoF fork, and how it led up to all of this. Sometime in august I started thinking that it might be nice to take the original game, re-fork it and modernize it a bit for the FoF 10th Anniversary next year. I started cleaning a decent amount of code, nuking the leftover SVG rendering code and fixing some issues that have piled up over the years of neglect. Then I started to realize a decent chunk of the code was still quite similar in FoFiX, i have come to think that this is due to much of this code being locked behind python bytecode during several of the mods leading to FoFiX. So to ease maintainability I started thinking it might be good to move the code into a shared repo. I started talking about it with stump, and a few others on IRC to get their thoughts about the ideas(some already knew of the FoF work I was working on already).

They generally thought it was a good idea, and I moved the FoF fork to the FoFiX github organization. Spent a few hours finding a name and eventually decided on fretwork. I started by moving the minimum amount of code over to get the audio code into fretwork. That ended up being a decent chunk of code including: Audio, C audio back end, logging system, unicode helper module, and the task system. Nuked the code in fofix, and renamed tons of stuff to point to the new package. Currently FoF:Reborn only uses the audio code as I haven't had time to fully port over everything but i'll get there eventually.

Another project i have been working on separately from fofix/fof:R/fretwork is a new auto generated OpenGL binding for python. PyOpenGL is slow and pyglet's binding isn't updated very often. Currently I have it loading in the OpenGL XML registry and outputting code that uses ctypes to do the binding. I have nice plans for this project, and may even extend it to do other types of code generation(maybe cython code to help extend CMGL? who knows).

Here are links to the various projects:
FoFiX:https://github.com/fofix/fofix
Fretwork: https://github.com/fofix/fretwork
FoF:R: https://github.com/fofix/fof-reborn
pyogl: https://github.com/mdsitton/pyogl

Stump has also spoke about wanting to get a release out sometime next year(hopefully sooner rather than later), and I have mentioned me wanting to release another 3.x release to fix various issues and to update the code a bit(issue thread here). Blazingamer has also expressed interest at contributing again, but he has been busy with releasing a game of his own on commercially. Various others have expressed some interest in development, a couple have contributed pull requests, so thanks for that!

I have linked the FoFiX, fretwork, and FoF:R repos to a service called landscape.io which is a python code quailty analyser and tracker, it tremendously helps in tracking small errors. If you want to contribute find some issues on it, and submit a fix as a pull request. It should be a great way to slide into fofix development.
https://landscape.io/github/fofix/fofix
https://landscape.io/github/fofix/fretwork
https://landscape.io/github/fofix/fof-reborn

So I guess that is about it for this update. I would love to see some thoughts and feedback(it feeds my motivation :D).

Thanks, Matthew

Oh also I will be getting a PS4, Guitar Hero: Live, and Rock Band 4 this week. Should be interesting to attempt to get the controllers working :P
Last edited by weirdpeople on Mon Nov 30, 2015 8:23 am, edited 1 time in total.
Developer of clone hero, and Former FoFiX developer
ableeker
Member
Posts: 39
Joined: September 27th, 2007
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby ableeker » Sun Nov 22, 2015 9:03 am

I love it, great stuff! I'd like to install it, and test it, if that's OK. I understand it's very early work in progress. I know about computers, and a bit about programming, but I'm not very familiar with Python I'm afraid.

I've downloaded Reborn, and am trying to run it. I do have Python 2.7 installed, and as the install.txt says, I've installed the other stuff (pygame, pyopengl, pillow, numpy, cerealizer), and after installing the other stuff I've run

Code: Select all

pip install fretwork-0.1.1-cp27-none-win32.whl


The result of this is

Code: Select all

Installing collected packages: fretwork
Successfully installed fretwork


However, when I then run

Code: Select all

python FretsOnFire.py


it aborts with

Code: Select all

Traceback (most recent call last):
  File "FretsOnFire.py", line 75, in <module>
    from GameEngine import GameEngine
  File "H:\FretsOnFire\Downloads\fof-reborn-master\src\GameEngine.py", line 31, in <module>
    from fretwork.timer import FpsTimer
ImportError: No module named timer


That's odd, because

Code: Select all

pip install timer


gives me

Code: Select all

Requirement already satisfied (use --upgrade to upgrade): timer in c:\python27\lib\site-packages
Cleaning up...


Does anybody have any idea what's wrong here?
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Sun Nov 22, 2015 11:14 am

Sorry about that, i'm in the process of moving more stuff into fretwork, and haven't released a new version yet. Ill try to get that done sometime today.

There is a couple of issues i need to fix as well. Fretwork doesnt have the dlls it needs to run properly on windows in some cases, and i dont have any way of detecting what version of fretwork users have installed.
What i need to do now is to add a version check on reborn/fofix, and spit out an error when you have an older version installed. Then it should be good to go.
Developer of clone hero, and Former FoFiX developer
ableeker
Member
Posts: 39
Joined: September 27th, 2007
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby ableeker » Sun Nov 22, 2015 1:41 pm

No problem, I'll try again another time. Quite keen to try this version out! Anyway, it's simply great that someone's taking FoFix up once again, it's a great program.
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Sun Nov 22, 2015 1:45 pm

Ok everything is all setup now.
Go download and install the newest fretwork release:
https://github.com/fofix/fretwork/releases/

Code: Select all

pip install --upgrade fretwork-0.2.0-cp27-none-win32.whl


You will also want to make sure that you have the latest version of fof-reborn, so either pull the lastest changes if you are using git, or redownload it if you downloaded the source package.

-- Edit: Sun Nov 22, 2015 1:53 pm --

Also from now on ill make sure to do changes for newer versions of fretwork in another branch so this doesn't happen again. Then also I added a version check into the games so that the issue will be caught before it gets to importing various modules.
Developer of clone hero, and Former FoFiX developer
ableeker
Member
Posts: 39
Joined: September 27th, 2007
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby ableeker » Sun Nov 22, 2015 6:21 pm

Earlier today I'd noticed fretworks 0.2.0 was available. I've downloaded the latest version of fof-reborn as well, and reinstalled both just to be sure. I started fof-reborn, and this time it worked. It was FoF refactored. How cool is that!? Great stuff! I can't wait to see what's coming next.
User avatar
Rockslide
Member
Posts: 21
Joined: November 20th, 2009
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby Rockslide » Sun Nov 29, 2015 9:15 pm

Hello member weirdpeople. It is good to see someone creating a common new common cross version "core" named fretwork. I believe that is your goal correct? I would like to help you, but have no programming skills and don't know how to use github. I have a 2 yr. degree in computer use and am a fast learner. I would like to help in its development and maybe one of it's "modules" like FoF:Reborn or FoFiX. I have lots of free time and am sure i can figure out most of what I need to help. I can really only work on 2 project parts or I'll go nuts, lol. Just let me know if you want or need my kind of help. PM me if you like.

P.S. your landscape.io for reborn should read https://landscape.io/github/fofix/fof-reborn In your earlier post you put a m where the n should be. It brings up a page error.
weirdpeople
Member
Posts: 1105
Joined: August 16th, 2008
Location: Texas
Reputation: 15
Contact:

Re: FoFiX 4.0.0 Development Thread

Postby weirdpeople » Mon Nov 30, 2015 4:24 pm

Rockslide wrote:Hello member weirdpeople. It is good to see someone creating a common new common cross version "core" named fretwork. I believe that is your goal correct? I would like to help you, but have no programming skills and don't know how to use github. I have a 2 yr. degree in computer use and am a fast learner. I would like to help in its development and maybe one of it's "modules" like FoF:Reborn or FoFiX. I have lots of free time and am sure i can figure out most of what I need to help. I can really only work on 2 project parts or I'll go nuts, lol. Just let me know if you want or need my kind of help. PM me if you like.

P.S. your landscape.io for reborn should read https://landscape.io/github/fofix/fof-reborn In your earlier post you put a m where the n should be. It brings up a page error.

You sorta have it. Fretwork is the shared "module". However, its really just bits and pieces code from the games which are still similar enough to be merged together. The games are still basically standalone, fretwork acts like any other dependency for a python program.

So I wanted to start working on updating the original Frets On Fire so there is a decent playable version around for the 10th anniversary next year. Then at the same time i was also thinking about doing a new FoFiX 3.x release, but the branch was fairly broken since it hadn't been touched since 3.121 was released.
Basically the main goal for fretwork is to share as much code between them all to reduce the amount of development effort needed to maintain the games in the future.

Fixed the link thanks for mentioning that.

If you want to learn python here are a couple of good things to read through.
http://learnpythonthehardway.org/book/ (easier, slower paced)
https://docs.python.org/2/tutorial/ (Faster, more detailed about things if you decide to read the first link start reading this afterwards you will still learn stuff :tongue:)

I wouldn't just read these, go make things with python as you are going through, maybe some text based games or something. Then try to take your old code and "refactor" it to be better, more organized, and cleaner as you learn new things. It can take a while to get really good at python learning all of its quirks and stuff, but its easy to get off the ground quickly.

I also started learning python and programming specifically to help work on FoFiX :smile:
Developer of clone hero, and Former FoFiX developer
User avatar
Rockslide
Member
Posts: 21
Joined: November 20th, 2009
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby Rockslide » Sat Dec 05, 2015 10:16 am

Hello, I hate to sound like a drag, but I have tried hard to install your new work. I failed badly. It would help if I knew where and what versions of each of the required programs needed to make your updated programs assemble were found. I do have all the required software but something was wrong. The pip install command for one did not work. I was also wondering are all the programs you are working on still in the build state or are some still working versions. Meaning are some still playable after you I guess the word is "refactor" in fretwork. I know it is really early but if you clear up some of these issues you might get a little more support. Thank you for your time. I look for your response.
ableeker
Member
Posts: 39
Joined: September 27th, 2007
Reputation: 0

Re: FoFiX 4.0.0 Development Thread

Postby ableeker » Sun Dec 06, 2015 6:26 am

Rockslide, it IS possible to install and play Reborn, and it DOES work, but at the moment it's a bit fiddly.

First you have to have Python 2.7 installed. Then you have to install some libraries using the Python installation manager (PIP). Then you have to install the new framework weirdpeople has created. That can be done using PIP as well, but make sure you're installing 0.2.0. Then you download Reborn. There's no release, but that's OK, because you just run the current source from within Python. To do that, you open a command prompt, and go to the folder with the downloaded source, and then to subfolder 'src'. And as the final step, from within that folder, run 'python FretsOnFire.py'.

TADA, you're playing FretsOnFire!

-- Edit: Sun Dec 06, 2015 11:46 am --

I've just been playing Reborn on Windows 10, and it's working great! I don't know if this bug was already present in FoF (because the original doesn't run on Windows 10 whereas Reborn does!), but when I restart a song, the music doesn't start again from the beginning, while the notes do. If I quit the song, go back to the menu, and select the same song again, it starts and plays normally.

-- Edit: Sun Dec 06, 2015 3:21 pm --

And another thing. If I wait a bit on the song selection screen, the song starts playing. If I start the song while it's playing, the last note repeats a couple of times.

Return to “FoFiX”

Who is online

Users browsing this forum: No registered users and 21 guests