There are many facets to developing a game. Most games consist of the following:
1) A rendering engine. This is the presentation layer and provides scene-graphs, math, particle effects, post-processing effects, and a whole host of other things. Unreal is such an engine. A good free rendering engine is Ogre
2) A sound engine. This takes care of processing sound effects (usually handling it in 3D space), and streaming audio. An excellent free audio-layer is OpenAL.
3) Video compression/playback (E.g BINK) if your game requires it. A free version is Theora.
4) Networking. This is something that might well be written in house, or got off the shelf like the other components, e.g. Raknet.
5) Scripting. It doesn't always make sense to have the entire game written in C/C++/Java. Sometimes the logic and flow of a level is easier to describe in a scripting language which makes changing it on the fly without recompilation much easier. Good candidates are LUA, Python and even Squirrel. LUA is used by World of Warcraft for example and is easy to bind to C++. Civ4 uses Python.
Obviously some or all of these can be written in-house, but it make sense from a cost point of view that if it has been done well already, why bother? You also need some software to edit your assets (3D Studio Max for 3D, for example, Blender if you want a good, solid, free package).