Group 2 from 2014 had a physics-oriented game (lots of objects moving and bouncing around), so going with a physics engine made sense. They started with ODE, which didn't work out, and then switched to Bullet. Here is a description of their experience:
Calvin: Yes, I would use Bullet physics engine again. Several issues I ran into was more in choosing a library. Libraries like Tao.Ode, a C# wrapper for C++ ODE library, are outdated and riddled with bugs which I did not expect when I ported my logic from C++ ODE library. What I learned is to be mindful about the how well-maintained is the library and the issue tickets that they currently have. Also, using a library that has a user manual and example code helps immensely to learn the library quickly.
Ryan: I agree with Calvin, but will say you need to find a balance between getting features of your game for free from libraries and implementing them yourself. If we had started out just making our own simple physics engine instead of messing around with ODE, we would have been done weeks sooner with a version of our game we could tweak and understand because we wrote it ourselves.Every time you use someone else's code, you have to devote a portion of your time to understanding it, and if it implements a bunch of features you don't need, you're spending a lot of time doing things and investigating things that aren’t important only because they’re required by the library.
Erik: No. I had numerous problems with the engine and had to resort to basically exploiting physics to make it do what I want.
We rolled our own graphics, our own physics, and our own networking. I’m perfectly happy with our graphics, and from what I’ve heard, if you’re not doing physics simulation (which we certainly aren’t, realistic physics make a terrible platformer) then using Bullet will be a struggle, even if it gives us collision for free.
We used Bullet as our Physics library and it was a slightly rocky experience. Bullet has a high learning curve if you want to do anything more complex than basic rigid bodies in the world. Of particular annoyance was setting up proper character movement which is not very well supported by Bullet and we had to look at open source solutions to get a grasp of what to do. Overall, using Bullet was the correct decision as our game was heavily dependent on player physics and interactions. But our advice would be that if you end up using Bullet, to spend a lot of time reading the Bullet examples and playing around with the api through actual execution since documentation is scarce.
[Dan] We used Bullet as our physics library. It had poor documentation and sometimes the documentation was outdated. However, the examples were very useful in learning specific Bullet features. After spending a day or two, it was relatively easy to use and would probably use it again. Bullet's collision detection was very easy to figure out.
Physics engine: we figured that our physics would be fairly simple so using an engine like Bullet would have been excessive. Although we did struggle a bit with our custom engine, it is unlikely an engine like Bullet would have made physics easier since we would have only had ten weeks to get accustomed to and learn the physics engine.
Bullet engine: Took time to learn the Bullet engine (a moderate learning curve). Bullet engine also has some bugs/incomplete features for which we either had to find the appropriate patches online or we had to avoid certain implementations. For example, some functions in Bullet do not work as intended (searched on Bullet forums and came up as a bug). Some of Bullet is still in development....
Bullet Engine: Bullet is a powerful physics engine which can deal with complicated physics. However the learning curve is steep because of the bad documentations. I would not recommend use bullet unless your game need do some complicated physics logic which cannot be finished in ten weeks. And always use the latest version which has more supportive resource. Though the documentation of bullet does not help at all, there are still lots of resources online..
We used Bullet for our physics system. I would use it again if I were starting over knowing what I know now. Because using a library can be time efficient when making a large scene. For example, we made about more than 100 bounding boxes using 3d Max and we load them all at once using bullet. Without Bullet, I would have to calculate them by hand which could be a nightmare when building such a large scene. The down side of using it is that you need to compile this library first which can be really tedious.