Which to use: Unreal vs. Unity vs. ID Tech
UDK, id Tech 3, and Unity are all vastly different tools.
With UDK, you have script-level access, not native. As such, you are somewhat limited in the modifications you can perform. Additionally, UnrealScript is extremely slow; as such, it's difficult to optimize any product you do end up creating.
Overall, it's not very well crafted for anything that drastically doesn't match Epic's product line.
id Tech 3 will give you C++ access. That being said, it's much older technology, the tools aren't as robust, etc. Personally, I've never used it; but, it's not something you're going to build a commercial product with (unless you're looking for something scaled back. Check out this list: http://en.wikipedia.org/wiki/Id%5FTech%5F3#Projects%5Fbased%5Fon%5Fthe%5FGPL%5Fsource%5Frelease).
As for Unity? It's a great place for a beginner/someone that doesn't want to have to delve into the complex details of an engine. Additionally, it's more flexible.
Can you release a triple-A title on it? No. That being said, you're not going to be using it for that.
With the ultimate goal of educating yourself without having to dive into C++, I'd highly recommend Unity.
Summary:
- UDK if you're going to build a game quite similar to Epic's product line. Doesn't give you much freedom.
- id Tech: old, gives you C++ access to flexible, super robust.
- Unity: easy, fast to work with, flexible. But not fancy enough for the AAA title that you're not building anyway.
