I need a 3D engine for my iPhone project. I've hacked together my own 2D engines for rendering and physics in the past, but I have done very little OpenGL, and all the time I spent hacking around in the Quake, Quake2, Quake3 engines was focused on game logic and AI. This means that it is hard for me to define suitable requirements upon which to discriminate between available iPhone 3D engine middleware.
Requirements
Generally, I think my needs are modest (although still too rough to prepare a feature matrix comparison):
- 3D rendering and rigid body 3D physics
- Demonstrated iPhone integration and deployment (technically possible and apple has permitted deployment)
- Low polygon counts regarding world entities, robust physics simulation (one creature as a dozen or so cuboids connected by simulated muscles)
- Facility to execute physics simulations in a/the world without rendering (at the same time as rendering would be really nice but implausible given the hardware)
- Programmatic management of 3D world entities (definition, instantiation, post-simulation manipulation)
- No cost (I don't mind open sourcing my project if it is permitted by the conditions of the Apple AppStore)
Two clear candidates have emerged that may satisfy my needs, as follows:
- SIO2 Interactive, SIO2: An opensource (LGPL) game engine for the iPhone. It uses the Bullet physics library and 3D objects and scenes are prepared using the opensource tool Blender. The project offers many tutorials (16) some of which are screencasts. The project also boasts a healthy number (15) of deployed iPhone applications available in the AppStore. The engine has a free version that imposes a flash screen (advertisement for the engine), an indie version is available without this restriction for $50USD. The volume of developer documentation in the form of tutorials is great, although the seeming dependence on Blender to prepare the 3D models and scenes used by the engine may be a deal breaker if there is no programmatic workaround.
- Oolong Game Engine (on google code): An opensource (MIT License) game engine for the iPhone with some credibility given that it was developed in large part by Wolfgang Engel, Rockstar Games' lead graphics programmer. It uses the Bullet Physics Library for 3D physics and fluid studios for memory management. It has seemingly been used in a small number of titles (3?) currently available in the AppStore and proposes that it was used as the basis for the iTorque Game Builder. The source code comes with a number of demonstrations, although developer support documentation and tutorials are really lacking, and the mailing list is quite empty. This might be an engine for hard core developers.
I came across four engines that missed the cut only because of an associated cost or maturity. I may reconsider selecting one of these engines if (and only if) it can be demonstrated that their adoption will save me time (or money - yes I'm keeping timesheets) on this project.
- Unity 3D Engine (Unity Technologies): A cross platform engine that offers iPhone integration features and support. A large number of titles use the engine and presumably some of which are available in the AppStore. The core engine costs $199.00USD (Indie) plus there is a cost of $399USD (Basic) for iPhone integration totalling at least $600USD to get up and running. The cost buys support both in terms of documentation and a company that will return your support emails and calls. The engine looks slick and it seems a lot of people are using it.
- tTGB - the iTorque Game Builder (Garage Games): The Torque engine has been ported to the iPhone and is offered as two products: iTGB for 2D games which is available now for $500USD (presumably built on the old TGEA platform), and a planned but as yet un-released T3D that presumably will have iPhone support. The software is both a builder software for making the game (WYSIWYG 2D editor) as well as an engine and packing tools for deploying your game. As with Unity 3D, the cost of iTGB is for the documentation and human support, and also like that engine it looks really slick. It was unclear to me how may titles have been built using this product and are available in the AppStore.
- Ston3D Engine (ShiVa): The Ston3D engine offers iPhone integration support as a free add-on after purchasing the core product called ShiVa for $169.00GBP (about $244USD). ShiVa is a Windows-based game development product (like the Torque product) and offers a crippled free version that prevents publishing created games. A number (at least 8) of iPhone titles have been released based on the engine and are available in the AppStore.
- CubicVR Engine (on sourceforge): An opensource (LGPL) game engine with no clear stable builds (only SVN access). There are some iPhone demonstration projects provided with the source code. It uses the Bullet physics library and supports other mobile and console platforms. The code base is seemingly the basis for the Pocket Hoops game in the AppStore. The project does not seem very mature and there are no clear tutorials or support documentation for starting a game project. As such, it did not make the cut.
I came across a number of related projects that partially addressed some of my needs, but ultimately were out of scope. They are listed here for completeness, or in case I miss-interpreted the projects.
- Irrlicht Engine: An opensource engine with a reasonably large community. At least one iPhone game has been released based on a private port of this engine although judging from some discussions, the port does not appear to have been released.
- Cocos2D: A very cute 2D iPhone engine that uses the Chipmunk physics engine. Offers a FAQ and development best practices. The platform boasts a heap of games based on the engine and if I decide to go 2D instead of 3D, I'll give this engine serious consideration.
- UtopiaGL: A private 3D iPhone engine project by Kevin Doolan. He does not appear to have plans on releasing the code although is tale of development is worth the read.
- Icarus Studios: No product yet, but they have some cash behind them and were mentioned on VentureBeat.
- Living Arcana: Lots of early discussion (2007) about building an opensource 3D engine for the iPhone, appears to be vapor.
- Yeti3D: A port of an engine by Derek John Evans for the Gameboy Advance. Ported and released as a product by Marco Giorgini called iPac3D. Does not use OpenGL. It seems it was for jailbroken phones (accessible via Installer).
- Cube: A first person shooter computer game (wikipedia entry) was ported to the iPhone and is available in the Apple AppStore for free. The engine is opensource (zlib/libpng License) and the source code for the port is available. This is not an iPhone 3D engine and was not appropriate or mature enough to be in scope.
Some alternatives popped into my head while 'deep googling' this problem and I thought I'd list them in the event I do decide to re-scope the project.
- Write my own: One option that I briefly considered and dismissed given the time it would consume is to write a 3D rendering engine myself. I might be able to piece together the things I need from tutorial sites like Nehe and OpenGL ES. For the physics I could use an off-the-shelf solution like Box2D (used for Rolando) or Bullet.
- Port an engine: There are many great 3D engines out there just ready and waiting to be ported to the iPhone. May of the communities of those engines have manifest demand, are discussing, or have already started the porting process like Irrlicht, OGRE, and Allegro. Frankly, I do not have the current chops or inclination to get into a port.
- Use a Quake: Both the opensource (GPL) Quake and Quake III Arena game engines have been ported to the iPhone and are available on jailbroken phones via Cydia. Both engines are 3D, have long histories of community involvement (mods and engine ports), and the source code of their ports are available (quake4iphone and quake3-iphone). Also, id Software might be releasing these titles officially soon enough. I've had experience with these engines before, but not regarding the simulation and rendering of arbitrary programmatic generated world entities. As such I may have more trouble than a conventional 3D engine in trying to shoehorn non-quake techniques into the engine (maybe a good fallback position).
As a warm up I was thinking of writing some tutorials on how to compile and deploy wolf3d, doom, quake, and quake3 for the iPhone. I suspect they will not be too hard to write given the sources are out there, and I expect it'll provide a good opportunity for getting up-to-speed on the environment.
Regarding my choice of 3D engine, I want to go with Oolong for as long as possible and fallback to SIO2 if progress proves too slow. I have booted the sample programs from both projects in the iPhone simulator, and have started to get a feeling for how one might map the algorithms and data structures from morphology evolution research into a 3D world. This brief research into available engines gives me some alternatives if the scope of the project changes or if I get fed up and decide I require developer documentation and support. I'm looking forward to starting the build early next month, after I finalize some GUI and algorithm designs.
Check out a similar round-up by Matthias Gall from September 2008 entitled "3D Engines on iPhone / iPod".
Please drop me a comment or email if you know of any further 3D engines or related resources.


12 comments:
Thanks for linking back to me even though my list has become outdated pretty quick. Didn't recognize SIO2 raised charges in the meantime.
Good luck with your endeavor.
Matt
I may be incorrect, but my impression is that the GPL and the LGPL are incompatible with the AppStore as they both require the user not only being given access to source, but being able to load it, at no additional cost beyond that of the app. Additionally, I'm not sure that the IPhone even has dynamic linking support.
@digitalbreed no probs mate, thanks for the support.
@Indy I don't think your statement can be correct. I have come across many apps that are available in the appstore that link in LGPL 3d engines (see some of the games listed on the websites of various LGPL engines), physics engines and in some cases (wolf3d) are completely GPL'ed. Further, I'm sure you are aware that linking LGPL code does not mean you have to release your code under the same license - this is only the case if you change the code you are linking in.
I infer that LGPL is cool, although further reading suggests there may be issues with GPL. Nevertheless Wolf3d by id Software is GPL'ed (v2) and in the app store - it will be interesting if Apple and/or the FSF challenge it.
There is an interesting discussion on this issue here: Can GPL iPhone apps exist? (March 2008), and here: iPhone SDK Trumps GPL: No Open Source Software (April 2008)
I don't think you are right about LGPL being kosher. As I recall, the LGPL is only more lenient than GPL in the case where you link the functionality in dynamically to your app via a loadable DLL mechanism. As far as I know, you can't access a DLL from an iPhone app (and it's annoying enough dealing with static libraries).
I have personally asked a copyright holder using the LGPL to write a separate license for the case where only static linking was technically possible. So either I wasted my time, or you are mistaken.
@Indy and @Glenn Howes - OK guys, I'll take an in-depth look at this. It may only impact the license I choose to release my source code under.
Oolong (my current choice of engine) is released under a seemingly viable license agreement - the MIT License.
I'll look deeper, this is the kind of thing that can come back and bite you in the ass.
Why free software and Apple's iPhone don't mix
@Indy:
"I may be incorrect, but my impression is that the GPL and the LGPL are incompatible with the AppStore as they both require the user not only being given access to source, but being able to load it, at no additional cost beyond that of the app"
General consensus appears to be that as the code itself has no conditions attached but device development is gated by Apple, GPLv2 is compatible with iPhone coding long as you make your source available, but GPLv3 is not because it falls afoul of the anti-Tivoisation provisions.
In the real world, I believe that the WordPress native iPhone application was the first released under GPL ... before the NDA was lifted even! And there's been a whack of GPL projects since, most notably recently the Wolf3D source. Since nobody's got their panties in a bunch about that enough to sue so far as I'm aware, it looks like you have pretty solid precedent as a defense if you do choose to use GPL code.
Thanks for the post! I've been looking for some information on 3D engines for the iPhone and I found this to be very comprehensive and helpful.
Thx!
Excellent post. I've added a link to it on my http://iphoneresources.aribraginsky.com list. I too am most likely going to be focusing my efforts on Oolong for the time being.
Cheers!
I was in this same position awhile ago. Oolong spoke to me first because that's what I was used to using, a low level, some quirky tools engine that is free. Unity hit me from the other side, a good tool chain, but higher level than Oolong + a cost. That cost turned out to be nothing as our first game made back the purchase price in a week. Not only that, we got to market much faster using Unity vs Oolong. I can see the benefits of both engines, but Unity is a good, viable option.
Good review!
For iPhone games - my choice Unity engine, and I know good company, Vita-Mobile (vita-mobile.com), who can develop games with Unity engine.
Post a Comment