I am only familiar with free open source or freeware and once I've used, so if you want commercial you can look to other posters who posted here.
You can try blender which you can get from
http://www.blender.org . You can make 3D games in the game engine and use python if you want to script to make more advanced games. You may have heard some bad comments about blender, but I would try to check it out again because they have gone far in development. You can make 3D games even without coding.
http://www.blenderartists.org is a great community that may help you if you want to start making games with blender.
Blender Game Engine Tutorial is also a good link if you want to start using blender and going directly to learning how to use the blender game engine if you haven't used blender at all.
You can also try game maker you can get at
http://www.yoyogames.com . It does have a built-in game language, but if you get pro you can exend it with dlls and stuff, not too familiar with that.
There is also construct which you can get
http://www.scirra.com/ . You can make directX games/apss with it. It also has python scripting for advanced users. Also has 60 plugins ranging from Tiled Background to Windows controls and a C plugins & behaviors SDK for expansion, you can check the site for more information.
I also just heard of
http://unity3d.com , which now provides a free version.
"Unity supports three scripting languages: JavaScript, C#, and a dialect of Python called Boo. All three are equally fast and interoperate. All three can use the underlying .NET libraries which support databases, regular expressions, XML, file access and networking." Quote from the site.
Those are all that I know of so far which you can use to make 2D/3D games. I'd probably give construct or game maker a shot if you want to try and begin to make games or just want to be a hobbyist game maker . You want to make 3D games then try blender or unity (along with a 3D modeler).
If you want to learn game making, you can go to a bookstore alike barnes and nobles and read books on the program/language you want to make games with. There are books on how to make games using certain programs, language and etc.
Just find a program or language you want to use to start developing games, then learn more about it with online communities or books.
But professional game designers usually develop games in a group. I know they use programs like maya or 3ds max for the 3D part, but not sure about what they use for programming,
You would usually want to brainstorm the idea for your game first before you touch any 3D modelling or programming software. What genre will the game be? Will it have a story? Characters? What type of gameplay you want in it? If this is just the first time you make video game sand just want to make video games as a hobby, then I'd start out with something simple. Think of what games you mostly want to make, then you can think of what program you may want to use. You can find software to make any type of games like the once I've mentioned, or you can look for software that makes specific type of games (ie RPG Maker for making rpg games) and etc.