Saturday, March 14, 2009

Small Update

I've mostly been busy with work, perhaps I will talk about that a bit. At my work I develop iPhone games, for the most part I like it. The iPhone is a good platform for development not because of the SDK or the IDE but because it is an embedded device that feels like programming for a computer. What I mean by that is that your not really limited like most consoles, you have tons of ram (128mb), you have language choices (c, c++, obj-c), the processor is pretty fast (620mhz arm?), it has a floating point unit (good for 3d), has 3d hardware acceleration supported by OpenGL ES, it also has OpenAL. So overall it feel like I'm just programming for an older computer. The best part about this is that the device is standardized meaning that you can tune your program for the hardware and know it's going to run the same on everything.

So what am I doing at work? I can't give out specifics however I have developed two projects and updated a third (only been there three weeks). Recently however I've been moved off making games and focusing on making an engine since unity has quite a few issues (random hickups, large application sizes and overall buggy experiance). So far I've done some nifty things and learned quite a bit. The biggest hurdle right now is 3d, while I have dabbled in it quite a bit I usualy only use OpenGL for 2d. Luckly I know the math and general ideas, I am just lacking the experiance and some of the common "gotchas". So far I have a nice scene graph system going, 3d static models and 3d skeletal animations (I think thats quite good for a week of work).

My first approach to making the engine was in C++. I somewhat like C++ even tho it's not a very modern language. It allows me to access the machine directly for performance when needed, class/namespaces are decent for organization (although my thoughts on these change quite a bit), it has a good standard library and boost adds most everything else missing from the STL. For these reasons I wanted to go with C++ however, I ended up going with straight C.

Why straight C? C is more portable and it has been requested of me to make it portable in case we decided to branch out to other platforms. C doesn't suffer as much of a performance hit as C++, sure you can use C in C++ however it takes away from the point of C++ being a higher level language and you can't enforce people not to use virtual class, inheritance and other things that are slow and common in modern C++. Also like I've said C is more portable, gcc is good but it's not on all platforms. I've worked on other embedded devices which claim to have a C++ compiler but all they really add are classes and many things are either different or broken between compilers. The last reason I have for using C is the ability to use another language for the main game code and C for the base engine (yes scheme is on my mind), it seems there are quite a few languages that can compile to C, use C libs and many scripting languages work better/more supported with C.

Anyways enough of the flamewar, hopefully this should be enough to hold people over until I get more time to play with scheme.

No comments:

Post a Comment