I have worked with Unity, UDK and the Cryengine 3, and to be honest, they both have their strengths. Unity: More suitable for small indie games, as they are much easier and faster to create than on other engines. UDK: The big gun. Very unfriendly (as I found it) and very static, but if you don't care for dynamic environments or the pain of developing in it, then it is for you. Cryengine 3: Might not contain as many development features as UDK, but is much easier and is 100% dynamic. This is the best engine in my opinion if you want to create games which are anywhere more than 2 week indie games. much friendlier than UDK, but there are not that many resources around, and many are outdated. Does not support Iphone/android/web games. For a large game I am creating, I choice Cryengine 3. It is by far the best engine in my opinion. But if you are looking to create a small game in a few weeks which is designed to reach a large audience, I would suggest Unity. I myself am using Unity to create a small project, simply because it will be faster and playable on web browsers.