| 
				   | 
				
| (27 intermediate revisions by 2 users not shown) | 
| Line 1: | 
Line 1: | 
 | Terminus Est is John's awesome space shooter.  See [http://soloforge.com his Soloforge website].  |  | Terminus Est is John's awesome space shooter.  See [http://soloforge.com his Soloforge website].  | 
 | 
  |  | 
  | 
 | Mike is hoping to help John build Terminus under linux.  Here's John's "getting started" list...  |  | Mike is hoping to help John build Terminus under linux.     | 
 |  | We'll need fmod and SDL.  | 
 | 
  |  | 
  | 
 |  There is some stuff in here on getting set up to build SDL apps with
  |  | [[Terminus SDL and fmod under linux]] (done)  | 
 |  KDeveloper: http://gpwiki.org/index.php/SDL
  |  | 
 |  
  |  | 
 |  You will need SDL, plus the SDL_image and SDL_gfx support libs.  
  |  | 
 |  Available from: http://www.libsdl.org/index.php
  |  | 
 |  
  |  | 
 |  And the FMOD sound system from http://www.fmod.org.
  |  | 
 | 
  |  | 
  | 
 | Typically I'll be using either Fedora or Gentoo during my porting effort.
  |  | [[Terminus autotools setup]] (done)  | 
 | 
  |  | 
  | 
 |  | [[Terminus Making the code portable to linux]] (done)  | 
 | 
  |  | 
  | 
 | '''FEDORA'''
  |  | Go to [http://soloforge.com Soloforge] for the latest updates!  | 
 |    |  | 
 |    |  | 
 | '''1''' Install SDL and fmod:
  |  | 
 |    |  | 
 |  yum install SDL-devel
  |  | 
 |  yum install SDL_gfx
  |  | 
 |  yum install SDL_gfx-devel
  |  | 
 |  yum install SDL_image
  |  | 
 |  yum install SDL_image-devel
  |  | 
 |  yum install fmod
  |  | 
 |  yum install fmod-devel
  |  | 
 |  
  |  | 
 |  Mar 19 22:42:01 Installed: SDL_gfx.i386 2.0.13-2.2.fc4.rf
  |  | 
 |  Mar 19 22:45:23 Installed: SDL_image.i386 1.2.4-1.2.fc4.rf
  |  | 
 |  Mar 19 23:11:05 Installed: fmod.i386 3.74.1-1.2.fc4.rf
  |  | 
 |  Mar 20 21:22:26 Installed: fmod-devel.i386 3.74.1-1.2.fc4.rf
  |  | 
 |  Mar 20 21:24:32 Installed: alsa-lib-devel.i386 1.0.10-27.rhfc4.at
  |  | 
 |  Mar 20 21:24:41 Installed: SDL-devel.i386 1.2.8-4
  |  | 
 |  Mar 20 21:24:41 Installed: SDL-devel.i386 1.2.8-4 
  |  | 
 |  Mar 20 21:27:59 Installed: SDL_gfx-devel.i386 2.0.13-2.2.fc4.rf
  |  | 
 |    |  | 
 | Mike's comments will occasionally be <span style="color:orange">marked in orange</span>, John's comments <span style="color:green">in green</span>, when we're not feeling lazy.
  |  | 
 |    |  | 
 | <span style="color:green">
  |  | 
 | Huh.  Does that yum app go out and get the latest version too?  Slick.
  |  | 
 | I will get some source control up and running today.
  |  | 
 | </span>
  |  | 
 |    |  | 
 | <span style="color:orange">
  |  | 
 | Yep it auto-updates everything to the latest stable versions, including tracking down dependencies.
  |  | 
 | </span>
  |  | 
 |    |  | 
 |    |  | 
 | '''2''' Grab the source - John is using subversion - very l337!
  |  | 
 |    |  | 
 |  yum install subversion
  |  | 
 |    Mar 20 20:00:03 Installed: subversion.i386 1.2.3-2.1
  |  | 
 |  
  |  | 
 |  cd development
  |  | 
 |  mkdir terminus
  |  | 
 |  cd terminus
  |  | 
 |  svn checkout http://xxxxx/terminus/
  |  | 
 |    |  | 
 | and there it is!
  |  | 
 |    |  | 
 |    |  | 
 | '''3''' Build it
  |  | 
 |    |  | 
 | sdl-config tells you what you need on the gcc command line:
  |  | 
 |    |  | 
 |  [m@thedigitalmachine terminus]$ sdl-config --libs 
  |  | 
 |  -L/usr/lib -lSDL -lpthread
  |  | 
 |  [m@thedigitalmachine terminus]$ sdl-config --static-libs
  |  | 
 |  -L/usr/lib -lSDL -lpthread -lm -ldl -lasound -L/usr/X11R6/lib -lX11 -lXext
  |  | 
 |    |  | 
 | So let's try this:
  |  | 
 |    |  | 
 |  g++ main.cpp -o main `sdl-config --cflags --static-libs`
  |  | 
 |    |  | 
 | Here's what we got so far:
  |  | 
 |    |  | 
 |   In file included from system.hpp:17,
  |  | 
 |                   from startup.hpp:8,
  |  | 
 |                   from main.cpp:8:
  |  | 
 |  util/audio.hpp:82: error: syntax error before `*' token
  |  | 
 |  util/audio.hpp:145: error: `FMOD_SOUND' was not declared in this scope
  |  | 
 |  
  |  | 
 |    |  | 
 | <font style="color:orange">
  |  | 
 | Looks like the version of fmod that Fedora wants to pull down is old (3.74).  I believe we need to go with FMOD Ex 4 (4.03.03 as of this writing).  I will pull down the code from fmod.org and build a local version.
  |  | 
 | </font>
  |  | 
 |    |  | 
 | <font style="color:green">
  |  | 
 | Hmmm... There are two versions of FMOD Ex, the C and the C++ version.  I had to use the C version because the C++ version is not compatable with Dev-C++ and MinGW.  Check and make sure that you have the C version of the lib installed too.
  |  | 
 |    |  | 
 | FYI, here is my linker options:
  |  | 
 |    |  | 
 |  -lmingw32 -lSDLmain -lSDL -mwindows
  |  | 
 |  ../../Dev-Cpp/lib/libSDL_image.a
  |  | 
 |  ../../Dev-Cpp/lib/libfmodex.a
  |  | 
 |  ../../Dev-Cpp/lib/libSDL_gfx.a
  |  | 
 |    |  | 
 | <br>Try this:<br><br>
  |  | 
 | Download the linux tar.gz from http://www.fmod.org<br>
  |  | 
 | Notice there is both a fmod.h and an fmod.hpp in the inc dir.<br>
  |  | 
 | Put into the compile path, the compiler should compile in the correct one (fmod.h) since that is what is in my files.<br>
  |  | 
 | There are two .03 files in the lib dir, is one of those the C version of the lib and the other the CPP?
  |  | 
 | </font>
  |  | 
 |    |  | 
 | <font style="color:orange">
  |  | 
 | OK I'm getting to the bottom of this.  :>  Looks like FMOD Ex 4 is not open source.  The download includes pre-built libraries but no source code.  The "makefile" just copies the pre-built libraries into place.  I think that will be OK but I have to make sure I know what it's doing.  From the "makefile" script: 
  |  | 
 |    |  | 
 |  VERSION    = 4.03.03
  |  | 
 |  LIBDIR     = api/lib
  |  | 
 |  HDRDIR     = api/inc
  |  | 
 |  DESTLIBDIR = /usr/local/lib
  |  | 
 |  DESTHDRDIR = /usr/local/include/fmodex
  |  | 
 |    |  | 
 | I am going to uninstall Fedora's fmod 3.74 then try the makefile.
  |  | 
 | </font>
  |  | 
 |    |  | 
 | <font style="color:green">
  |  | 
 | FMOD is the one "pay for" piece to the game.  The built-in SDL sound libs were problomatic.  That, and FMOD allows me to use a compressed XM file format that will save me about 5M off my downloadable size.  I think that I will pay about $100 per OS license, once for Win, once for Mac, and once for Linux.  To me, it was a close call, borderline, but in the end I deemed it worth it.
  |  | 
 | </font>
  |  | 
 |    |  | 
 | <font style="color:orange">
  |  | 
 | Sounds good to me.  Removing the older (open-source?) fmod:
  |  | 
 |    |  | 
 |  yum remove fmod
  |  | 
 |   Removing:
  |  | 
 |    fmod                    i386       3.74.1-1.2.fc4.rf  installed         431 k
  |  | 
 |   Removing for dependencies:
  |  | 
 |    fmod-devel              i386       3.74.1-1.2.fc4.rf  installed         1.8 M
  |  | 
 |    |  | 
 | Then, I believe I won't need to run the "Makefile", I should be able to use the libraries and includes from my local copy, with a little stupid trickery.
  |  | 
 |    |  | 
 |  cd /home/m/development/terminus
  |  | 
 |  ls
  |  | 
 |    fmodapi40303linux  fmodapi40303linux.tar.gz  terminus
  |  | 
 |  ln -s fmodapi40303linux fmod
  |  | 
 |  cd fmod/api
  |  | 
 |  ln -s inc fmod
  |  | 
 |  cd ../../terminus
  |  | 
 |  g++ main.cpp -o main `sdl-config --cflags --static-libs` -I../fmod/api/ -L../fmod/api/lib/libfmodex.so
  |  | 
 |    |  | 
 | Getting further...
  |  | 
 |    |  | 
 |  /tmp/cc4ahy85.o(.text+0x12): In function `main':
  |  | 
 |  main.cpp: undefined reference to `TeSystem::Start()'
  |  | 
 |  /tmp/cc4ahy85.o(.text+0x22):main.cpp: undefined reference to `TeStartUp::Execute()'
  |  | 
 |    |  | 
 | </font>
  |  |