I started with blender game engine, wich is fun, becouse its total trash, but it can be programmed with nodes, wich is a good intro, and also you crate the 3d models on the same program, wich is useful. Ive worked the most with UDK, and learnt unity for a contracts. And i didnt really liked unity a lot, i just feel its way too barebones, and at the moment you need something a bit complex, you better do everything yourself. going to that point, i almost prefer to create my own engine with OGRE than using Unity.