It depends on many factors, but I can recommend you some pieces of software and some pieces of advanced software:
First, if you are inexperienced, which seems to be true, take a look at http://www.3dgamestudio.com/.
This game engine plus its useful tools will help you get your hands dirty while producing commercial quality games. It is somehow cheap and uses C-script which is somehow like C/C++.
Second, after getting some experience designing and developing games, I recommend you to switch to Python (as the programming/scripting language) and Crystal Space 3D (as the game engine/resource manager) and Blender 3D (as the world/model editor). You can also use Gimp as a good image editor/manipulator.
Good luck designing and developing games...!