I'm Robert, the programming-half of Bork3D Games. We're two guys who have been working on an iPhone title in our spare time. We recently released for iPhone "Anytime Golf: Magic Touch" and I'm proud to proclaim it uses bullet physics. We use it for simulating the flight dynamics of the golf ball, sphere/trimesh collision and ray casts.
Bullet translated great to the iPhone. We had to reduce some of the default memory pool sizes to save memory--but other than that we're pretty much running vanilla bullet.
And the iPhone runs it well. There's only one "cheat" we did to improvement performance... When the character is swinging to hit the ball there's a lot of stuff going on: character animation, sound effects.. not to mention the massive glob of terrain we're rendering. Once the ball is transitioned to flight the iPhone has a lot of work to do. I discovered that I can dynamically reduce the fixedTimeStep interval passed to bullet in these circumstances and still get convincing results. After the camera transition we render a different character model to save ms and crank up the physics precision. By the time the ball is ready to collide with terrain everything is right where it should be.
The only portion of our physics we don't get completely from bullet is our rolling friction model. But bullet made this pretty easy to implement. Whenever I get a collision callback I have some code that tries to guess if its a rolling contact or a bouncing contact, and if its a rolling contact I engage an algorithm that starts applying linear and angular dampening based on the impacted material. It took a bit of fine-tuning but I think the results are convincing.
I'd like to give a shout to everyone on the forum who helped me along the way, I couldn't have done this without you. Erwin, ola, pico, Alex, RobW... thanks a bunch you guys, you're awesome!
And of course, a very special thanks to everyone who's contributed to bullet... especially you Erwin!
You can learn more about the game on our website: http://bork3d.com