There are a few choices.
UDK is a very established game engine. It's powerful, has a large community and can be downloaded for free. It's also used to create AAA-quality games, so learning it can be very useful if you ever plan on joining a video game studio. Even if the studio doesn't use UDK, they likely use some other tools, their own or similar to UDK. It's always a plus.
CryEngine is similar to UDK in many ways, but it's not quite as popular. Still, it's very powerful and there are plenty of guides on the internet. Like UDK, there's a free version to get you started immediately.
Unity 3D is a fairly capable engine. Not quite as advanced as UDK and CryEngine, but still good. Very customizable, I think.
Blender Game Engine is built into Blender 3D modeling program. It's not as refined as the others, but I'm sure a capable person can whip up something very impressive.
I've got a list of all sorts of free programs for game development on my website. You may also want to look into programming and 3D libraries for all the programming languages (Python, Java, C++, C# and so on). Just a word of warning, programming is a much rougher road than the others.