Friday, October 3, 2008

Dev Library and Nix Niceties

One last little brief. This time, a little bit on how I work.

First of all, I use GCC on every platform. Windows (via MinGW, and sometimes Cygwin), OS X (XCode is GCC hidden behind an IDE), and Linux.

As I work, I always have my text editor open (UltraEdit on the PC), and a Shell/Terminal Window open. For the most part, all I'm typing in the Shell/Terminal is "make run" (or up, enter), but I enjoy having the freedom to do wackier things here and there.

With my latest project, I've separated my content building process from my game building makefile. By that, the file "makefile" actually includes the file pc_makefile. In the future I could cleverly call all 3 of my makefiles from "makefile" (art_makefile, embed_makefile, pc_makefile/nix_makefile). I'd like to eventually add dependacy generation to my UI embedding site, so that may sneak in then.

Version control I use TortoiseSVN. It integrates right in to Windows explorer (and most of the Open/Save Dialogs of Windows Apps). So from a folder, I can merely right click and SVN Update or SVN Commit my changes. I do this quite often from my "open file" dialog.

My current target device is the iPhone, which is an OpenGL ES based device. GL ES is for the most part compatible with desktop OpenGL (i.e. SDL+GL), but there are a couple functions that need to be #ifdef'd (so far just 1 in my code).

But rather than using straight up GL, I'm using it through a custom general purpose graphics wrapper library. I've worked with a number of non GL API's in the past, so extra effort has gone in to making it's design suitable for wrapping other API's like DirectX or GX.

Each platform requires slightly different startup code, or libraries to link. The iPhone requries some Objective C wackyness. The PC build's code is verbatum the same the the Linux one, but I have a few different libraries to link. But the body of the game is exactly the same for everything. Some extra API calls were added to my wrapper library to emulate equal behaviors on both. Though a PC can't technically multi-touch... or at least I'm not doing it (mouse party, WinTab).

I didn't have much time to benchmark the Aspire One, but one thing I do know is it ran the PC port of my game really fast. Where on the iPhone, I'm nearly 60 fps. The tests I did on my brothers Aspire One ran at least double that. So as a proxy platform for iPhone development, it works.

That's it for now. Unless I get more crazy inspiration, I wont be back until next weekend, when I finally unbox it and start doing stuff.

No comments: