The Great (?) Game Codng Resource Thread! Help!


skeezix

Internal Development
Joined
Mar 11, 2003
Messages
8,070
Website
www.codejedi.com
Figured I'd fire up a thread and see who replies.. I'll edit and put summaries in this top post.

Puta one sentence description, URL, platform and category (IDE, library, tool, URL..)

let us know your favorite IDEs, text editor, sprite and animation editor, 3d modeller, audio libs, sites for art and audio, networking libs, frameworks, alternate languages/interpreters, anything you find useful :)

alot of people won't have haerd of the libs some of us might take for granted.

(I know it's lame of me to post withOut starting, but I'm typing on my phone :) also, if this is a success, we can add to wiki..)

jeff

let's stick to things that assist in indie game authoring. Financial modelling is great fun and all, but leave it to somewhere else ;)
 
Sorry if this is cheating, but I there was a not-dissimilar thread over on the Indiegamer Forums. I humbly submit a link to it. There are some nice goodies in there so far...

http://forums.indiegamer.com/showthread.php?t=19911
 
Here's what I use for all my game-like or multimedia projects:

Music: Phonon for applications that need it to work decently most of the time, GStreamer for applications that need it to work amazingly all of the time and be ridiculously flexible, too. GStreamer is a bitch to figure out, and the documentation is somewhat lacking. I have a couple of Qt classes laying around that make it easier to work with, but in most cases I think Phonon will work for decoding and playing music quickly.

Sound effects: OpenAL was decent last I tried it. SDL has its own sound API, but it's not very intuitive. There's also SDL_Mixer, but again, I haven't tried it in a while.

2D CPU-generated graphics: SDL, always. If you need things to happen pixel-by-pixel with the flexibility of the CPU, SDL is there for you. Qt can probably replicate the pixel-by-pixel access with one of their image classes, but it's much easier to throw together an SDL / console application than a full Qt / GUI application if you just want to draw fractals or something.

3D GPU graphics: SDL with OpenGL and the GL Extension Wrangler. GLEW gives you easy access to GLSL and whatever else Khronos is too silly to have in the official GL spec. It makes everything way simpler once it's hooked up, and it's automatically imported in all my OpenGL projects as part of my homemade graphics engine.

3D Modelling: Blender, of course. It's a little hard to learn, but the documentation is decent and you can use Python to script it. It's extremely flexible, and you can even make raytracings of your game models from within it, for cutscenes or whatever.

Programming languages: C++ with Lua scripting. Lua isn't as powerful as Python, but it's probably faster and it's great for the little things like configuration files. If you learn Lua, you can save yourself a week of re-inventing the config-file wheel. And then later on you have the same language for scripting.

IDE: I just use Kate (KDE Advanced Text Editor) with a terminal and hand-written Makefiles. I'm too lazy to learn any of the zillions of other build systems. Except qmake, which I use for GUI applications, because Qt almost requires it. If you prefer GTK applications, Geany is very similar to Kate in scope. There's also Code::Blocks, which has some SDL and OpenGL example projects built-in, and I think there's a Windows port.

OS: I use Linux, but you can also use FreeBSD or even Mac OS X if you have to. I don't know if Haiku has any GPU acceleration yet, but I suspect they have SDL or something similar, so you can probably make some CPU-rendered games on there. Dunno what Haiku has for text editors.

Joysticks: Luckily, joysticks have a standardized USB interface, and you only need like 3 or 4 lines of SDL to initialize ANY joystick. I have a Logitech Atk3. It's only $30 or so, and it's fun for controlling 3D demos, but not necessary. It has 2 stick axes, a rather lame throttle axis, and a bunch of buttons, and works perfectly with SDL in any operating system. So don't ever worry about joystick support. It's right there.

Game engines / frameworks: I used Irrlicht for a little while, but they seem to have a lot of little glitches, and I'm not sure how good their model format is. OGRE is ridiculously complicated. I ended up writing my own graphics library, and it's also mediocre, but in different ways. It's not ready for release at all. So, sorry, but I can't recommend any game engines. Blender Game Engine does exist, but I haven't tried it. It would have the advantages of built-in GLSL, 100% Blender integration, great community support, and the Bullet physics engine, but I haven't played with it yet.

Physics engines: I actually took one night and tried 3 of the most popular open-source physics engines: Bullet, Tokamak, and ODE. I couldn't get the Physics Abstraction Layer to compile. :( As I recall, one of them lacked documentation and had a completely ridiculous API, and another had poor documentation as a somewhat ridiculous API. Open Dynamics Engine has an intuitive API except for the collision callback thing, and their documentation is probably the best of the three. But they're still kind of weird, and I've yet to do anything useful with ODE.
Here's a video of me using ODE: http://blip.tv/file/3050202
I only have one cylinder because it took me fucking forever to get it oriented right and to get the collision thing going.

Sound editing: I haven't really done any, but Audacity is always there. I'm not a very good sound editor, and I don't have any effects to try it on, but Audacity is stable and exports to all the usual formats (Ogg/Vorbis, MP3, AAC, WAV, FLAC)
 
Here's what I use:

OS: Linux

IDE: Eclipse with C++ plugins (also for windows!)

Lib: SDL

I use the GIMP for any graphical stuff

...that's all you need!
 
I've been hearing about SFML.
Apparently it's meant to be like SDL, but a lot better. Supporting hardware acceleration, multiple windows and things like that.
Anyone know much about it?
 
  • Programming:
    • In C++:
      • Why: Because C++ is fast...
      • IDE: QtCreator. Even if I'm not using Qt, QMake or anything like that, QtCreator wins. It has built-in support for most SCMs including Git, it does code completion and refactoring like no other IDE does. And, if you use QMake (which doesn't mean that you have to use Qt) you gain access to 30+ build profiles for cross-compiling to various platforms.
      • Build system: Either CMake or QMake or Jam, don't really know. CMake has good dependency handling, QMake is good for cross-platform development, and Jam is so goddamn fast AND has cross-compilation built-in.
      • Core library: QtCore, which is like a replacement for Boost except better. Again, you don't need the rest of Qt to use QtCore. Gives you access to a solid collections library, the signals/slots system, a gazillion different algorithms (QSort, Knuth-Morris-Pratt etc etc)
      • Graphics: Raw OpenGL floats my boat: Speed, ease-of-use, no effective sprite limit ;)
      • Audio: OpenAL, because it's so intuitive. Phonon is also good but only available in KDE. SDL... yeah, it does the job, I guess. 3D positional sound would be a nice addition, though.
      • Physics: Bullet physics. It has a much better design than e.g. ODE.
      • Widget toolkit: I'll let you guess. You guessed Qt? Correct! Good for painting windows, good for in-game GUIs when you use OpenGL, good for HTML-based layouts when you use browsers (yeah, Qt does that too). There are just too many areas where it's useful.
    • in Java/Scala/any kind of JVM env:
      • Why: Because Scala is awesome while still being really fast.
      • IDE: Netbeans, IntelliJ, Eclipse. Maybe a slight + to Netbeans.
      • Build system: Maven, or if I use Scala, Simple Build Tool. Buildr is also an excellent tool, but it doesn't have that many Java-specific features.
      • Core library: The Scala core library (scala.jar). Includes two collection libraries (One that is functional-style + immutable, one that is mutable) that are completely inter-operable, Actor-style concurrency features, code annotation processing, Java interoperability, an IO library, access to mobile phone APIs, Swing widget wrappers, a complete combinator parsing library which can help you make anything e.g. ratpack parsers, Regex, JSON, and extremely integrated XML support, and so on.
      • Graphics: JOGL. An OpenGL interop library that lets you select between GL profiles at runtime. So, I can make one application that runs on the Pandora, 13-year old PCs, completely new PCs, Macs, Solaris boxes, etc, without recompliation. I just tell the system at runtime which GL profile I want to use, e.g. OpenGL ES 2.0, OpenGL ES 2.0 + OpenGL 2.0, only OpenGL ES 1.1, only OpenGL 1.1 and so on. Very useful. The library also helps you with debugging GL by letting you insert hooks before any GL call (you can print all GL calls that were called in order on the console for instance, which is *very* handy).
      • Audio: JOAL. Like JOGL, but for OpenAL.
      • Physics: JBullet. A port of Bullet to pure Java. Pretty nice, but not so usable on the Pandora for speed reasons (But if we get a JVM with JIT? Hmm...).
      • Widget toolkit: Swing, SWT, AWT, GWT, there are too many to count. Use whatever suits the situation.
    • In C#/VB.NET/Whatever:
      • Why: Because I like flame wars about Novell. And, because the CLI is so much faster than the JVM in theory, has much better native library interop capabilities, and so on.
      • IDE: MonoDevelop. There are only a few IDEs on Linux for *any* language that has more features.
      • Core library: The .NET core library, even though it sucks.
      • Graphics, Audio: OpenTK. Runs on any platform without having to carry around native library luggage. Like JOGL and JOAL combined, except even more awesome at times.
      • Physics: Probably Bullet, but there are many choices.
      • Widget toolkit: GTK#.
    • In Haskell
      • Why: Because I'm crazy like that. And, because Haskell is crazy fast while offering at least some kind of abstraction ;)
      • IDE: Leksah
      • Build tool: Cabal
      • Core library: the Prelude (duh)
      • Graphics: OpenGL (The Haskell interop library that makes some OpenGL calls a lot nicer) or OGL (A context-aware, unstable fork of OpenGL)
      • Audio: OpenAL
      • Physics: HBullet (A wrapper, not a port, of the C library)
      • Widget toolkit: Depends, but probably GTK
  • Images:
    • Inkscape for 2D. Don't like pixel art.
    • Blender + LuxRender for pre-rendered 3D. Very realistic images.
  • Audio:
    • I usually don't synthesize sound, but when I do, I use FL Studio (Not OSS!! OMG!). LMMS is simply not stable enough.
    • Ardor for mixing.
  • 3D Meshes:
    • Blender, duh.

Might add something later.
 
Sofox said:
I've been hearing about SFML.
Apparently it's meant to be like SDL, but a lot better. Supporting hardware acceleration, multiple windows and things like that.
Anyone know much about it?
Daddy like, daddy like.

Also... I like Code::Blocks, but you knew that already.
language: C++
Engine: Penjin... but I am biased. :lol:
 
Last edited by a moderator:
I've used SFML, as somebody who likes to get down and dirty with the hardware, I didn't like it at all.

Also, best IDE is Visual Studio 2008. It's a professional IDE with all the features, you don't have to use MSVC (cus frankly, it sucks). Just the IDE kicks ass.
(I'm gonna end up having an argument with somebody for saying this...)

SDL Libraries
  • SDL 1.2
http://www.libsdl.org/download-1.2.php
  • SDL_image ( for MOST formats into SDL surfaces)
http://www.libsdl.or...ects/SDL_image/
  • SDL_mixer (sound library for SDL, doesn't work amazingly with C++)
http://www.libsdl.or...ects/SDL_mixer/
  • SDL_ttf (awesome font library for SDL)
http://www.libsdl.or...ojects/SDL_ttf/
  • SDL_gfx (good for extending SDLs graphical abilities, but you're better off using OpenGL)
http://www.ferzkopp....ent/view/19/14/

SDL Tutorials

  • Lazy Foo (need I say more?)
http://www.lazyfoo.n...rials/index.php
 
Wouldn't it be much better to link to larger communites about development (or game development in particular, like gamedev.net) as these pages usually have a HUGE collection of such links and possibly their own tutorials etc.
The only thing where a topic about coding in general would make sense would be if it was pandora specific: which languages, compilers, linkers, libraries/SDKs, .. are pandora compatible? how do they perform? how to get most power of the OMAP? how do I spend less time getting pandora controls right? .. such things.
After all, if this thread is continued it shouldn't be in the pandora section at all as it has nothing to do with the pandora. Games can be made for (almost) any system.
 
Jay --

I had considered that when I posted; to wit, I wanted to collect useful URLs like that as resources -- so in addition to handy libs and such, a good list of sites woudl be handy as well.

For instance -- at minimum, a post like this (and subsequent wiki updates) should link to such sites; but _what are they_? You get my drift ;) However, since we're the gp32x community I thought why not sumarize some of the best options people like, right here, since we're also mobile specific, and that adds a certain 'lean' to everything. We can use the same IDEs as everyone else, but perhaps something is better suited to some of our special requirements. Certainly our libs and environments _are very_ different. And of course, there are things we specifically need -- Codesourcery for instance isn't something the other sites care much about, but we do.

As to forum -- we don't really have a good 'cross forum' forum, so I put it here since this is more lively than some of the other subforums; this does not mean this is a final resting place.. it is a starting place to see if the thread has merit.

So .. gotta start somewhere ;)

To wit -- what are your favourite sites? tools? libs? Gotcha!

jeff

(Yep, I'll go through some of my bookmarks soon and add some of mine that are missing here, but so far some good stuff. Thanks to everyone for inputting .. anything we can do to help some of the newbies, and new visitors, is good.)

Surprised no one mentioned Fenix yet, or GLBasic :)
 
Well usually my preferred coding language is Delphi, for multiple reasons:
  • I learned it at school, so I had some knowledge and was quite skilled
  • The default Borland IDE is great
  • The default libraries are good and provide a good amount of functions for any need (some things you usually have to do yourself like file path handling or string handling routines, etc.)
  • The Borland compiler is pretty good and fast like hell
  • Created programs are pretty stable and don't crash on any little error (so if you try to load a non-existent file or try to write out of an array's bounds it will just throw an error message and exit the current function and after that continnue normal program execution)
but it has some drawbacks, which annoy me from time to time
  • horrible syntax
  • it tries to hide pointer handling from the user, which works quite well until you try to do more complex things and dig deeper, then this "simplification" can be a pain in the ass
  • it's Windows only as long as you don't use some external "fan-made" compilers (dunno how well they work)
  • It's not free, I am lucky I got it in school
You can't use it for games, but I can really recommend it for any kind of other little program (like a level editor). Creating a good looking program is easy and intuitive (that's probably why we learned it in school).

But one year ago I also learned C++ (initially to help the development of PandoraPanic) and currently I use Code::Blocks and Penjin (you can probably guess who is responsible for that).
C::B is good and has a lot of optional plug-ins, but there are some things which annoy me (mostly project management) and I might try Eclipse (or Visual Studio - can get that for free via my university :D ) one day.
Though for easy cross-compiling C::B probably is a very good choice.

As a novice to all this I can recommend what helped me and helps me every day:
foxblock out
 
I'm really enjoying GLUT right now and I'm hoping we get some support on the Pandora somehow with GLUT|ES or something similar.
 
I know this is a little off topic, but I'm really interested in making some simple programs and games when I get my Pandora. What would be really nice is a tutorial that shows you how to make and compile a simple "hello world" program from start to finish in beginner-friendly terms. Most of the development information in the Pandora Wiki seems like it has been written for people who already have quite a bit of programming experience.
 
amf66 said:
I know this is a little off topic, but I'm really interested in making some simple programs and games when I get my Pandora. What would be really nice is a tutorial that shows you how to make and compile a simple "hello world" program from start to finish in beginner-friendly terms. Most of the development information in the Pandora Wiki seems like it has been written for people who already have quite a bit of programming experience.
  1. Download the CodeSourcery ARM compiler from here. Click the "Download" link and choose the GNU/Linux version (because the Pandora runs Linux), then choose an installer for the OS that *you* are running e.g. "IA32 GNU/Linux Installer" if you're running Intel-Architecture 32-bit GNU/Linux.
  2. Write this in a file called "main.c":
    Code:
    #include <stdio.h>
    
    int main(const int argc, const char *argv[])
    {
        printf("Hello, World!\n");
        return 0;
    }
  3. Use the "arm-none-linux-gnueabi-gcc" executable that came with the CodeSourcery installation to compile the file, and compile the "main.c" file via "arm-none-linux-gnueabi-gcc -o helloworld main.c"
  4. You should now have an executable called "helloworld" that can be run on the Pandora; just copy it over.
 
Last edited by a moderator:
Will those directions work for windows as well? I have a feeling there should be more to it. If it's annoying to set up maybe I'll just run a linux partition or something.
 
DasFool said:
Will those directions work for windows as well?
Yes.

...but I would recommend to use Linux when developing for a Linux platform. The procedure above will produce a Pandora-compatible executable, which means that you won't be able to run it on a normal PC. So, it would be a good idea to either install Linux with gcc (easy) or Windows with MinGW (harder) so that you can test your program without copying it to the Pandora every time.
 
Last edited by a moderator:
I use gedit, geany, or Notepad++ for editing my source. The only feature I really care about is syntax highlighting.

I mostly work with C++. I like it because it's fast, flexible, and because I had already taken a few classes using it. I've made a few projects with Qt, but I use SDL and OpenGL for most of my game programming. Right now, I'm working with 2D sprites, so I use GIMP for that...Hmm, I don't think I'm using anything too unique.
 
Gerix said:
I use gedit, geany, or Notepad++ for editing my source. The only feature I really care about is syntax highlighting.
Notepad++ is definitely the best editor I've seen on only editor I've bothered with on Windows. (Windows is kind of short on good software) On Linux, kate and geany are very similar, but I use Kate as I prefer KDE / Qt applications, and it has multiple views built-in.
Someone might have already mentioned Inkscape for vector drawings (I think dflemstr). It's not a great program, but it works, and it exports PNGs and SVGs perfectly.
 
Last edited by a moderator:
Back
Top