IMHO a good place to begin is:

a) With Unity3D. There are lots of tutorials and free to use assets as well as code to use and learn from.
b) Modding existing games to learn how they function...