It has recently become a very competitive business to supply indie game developers with a good working toolset to develop games. The three major contenders are Unity3d, UDK 3, and CryEngine. All have their strengths and weaknesses.
I have the most experience using Unity, and I quite like it. The built in features are customizable enough to quickly create gameplay (assuming you know some programming), but are structured enough to prevent you from hurting yourself too easily. This does of the downside in that you are a bit more restricted with what you can accomplish. You do not have access to the source code (without a lot of money), which means you’re stuck with their rendering structure and static objects. Not to mention that Unity falls short of the other two in terms of graphics quality by a lot. They have made quite a few improvements, but they have a long way to go.
I am specifically saying UDK 3 here because UDK 4 is on the horizon, and I don’t want it to be confused. UDK 3 is a very good engine. It’s relatively easy to use while being extremely powerful in what you can accomplish. Again, you do not have access to the source code, but communicating with C++ libraries using TCP connections is possible. It is not as easy to use as Unity (one of my teams issues with it turned into the phrase “Getting the Unreal out of the Unreal Development Kit”) as it was designed with an FPS in mind. The Kismet scripting engine is surprisingly powerful, especially if you have people on your team who do not know how to program. The graphics of UDK 3 are impressive if put into the hands of a talented modeler and texture artist, but more still can be achieved by CryEngine.
Another good thing about UDK 3 is that UDK 4 is almost out. It’s odd to phrase it like that, but if you are not experienced with UDK yet, starting with UDK 3 so you are familiar with it by the time UDK 4 comes out is probably a good idea.
CryEngine is pretty. VERY pretty. Seriously ridiculously pretty. Unfortunately that’s really all it has going for it. The world builder toolbox is fairly good, and getting things to look pretty in the first place is very easy, but it comes at the cost of a very small community, very few platforms it runs on, and requiring specialized talents (a programmer, a modeler, a texture artist, etc.). You can make a AAA game from CryEngine, but that is where you have to put your resources: into making a AAA game. It’s not really a prime choice for indie developers without significant ease-of-use tools, like a Kismet clone. I really like CryEngine (no really, it’s phenomenally pretty, I love those weather effects) but the amount of resources to get the full extent of it’s use is too much for a couple guys in a basement.