Could someone summarise the
programming languages and graphic
packages someone would use to make a
game on the scale of something like
Halo or Call of Duty!?
One important thing to remember is that software development is not a production line where you feed stuff into a program or tool and get a game out of the other side. It's a constant construction and modification process where a team of people are continually adding more and more to the software and refining the behaviour until it finally does something close to what they hoped for. It's important to realise this because some people think that they could make these AAA games themselves if only they had the correct program for it - but the programs are only the tools. You still need the team of experienced and knowledgeable craftsmen to work those tools and there's no getting around that.
But, you asked about the tools. There are very few standard tools, which might be surprising:
- Microsoft Visual C++, or some other C++ compiler if the platform requires it. Programmers use this to write the game logic. I'm not going to claim that you need to use the C++ language to make a AAA game these days, but for the most part, that is what is chosen. Much of that is because the 'knowledgeable craftsmen' I mentioned above have this as their language of choice, but probably more of it is because the AAA development studios have a large body of existing C++ code that they need to reuse to have any chance of making large games in short timescales.
- Adobe Photoshop. This is pretty much the be-all and end-all of 2D graphics. There are other, more creative tools artists may use, but they'll probably still need Photoshop anyway.
- 3DS Max or Maya. These are advanced 3D modelling tools that allow you to construct characters, vehicles, environments, etc. Artists work with this to sculpt the visuals for the game.
Beyond that, you'll probably have a game engine. This is not necessarily an off-the-shelf piece of software like Unity, Unreal, or the latest Id Tech engine, but basically refers to whatever lump of code you have at your disposal that has been used to previously make a game and which can be re-purposed to make your future game. Often it's a bit of a hybrid, as you might have licensed some 3rd party code for certain features but written much of your own around it. If you haven't done a big game before, this is where you have to make some choices about what external code to bring in, otherwise you'll spend far too much of your time developing technology and not much on the actual game.
There are various bespoke tools that sometimes come with specific game engines, or which are developed in-house. Level editors, particle effect viewers, archive creation tools, conversation tree designers, etc etc. All depends on what sort of games you make, what engine you're using, and whether you got around to making these tools in the past or whether you just stuck with hand-editing text files...
If all this sounds sadly vague then unfortunately that is the nature of the beast. There is no magical tool to automatically make AAA games (although UDK and Unity are getting close!) but there is a lot of experience in doing it, and a lot of prior code used for the purpose. Today's massive games are built on the games of 5 years ago. And they were built on the games of 10 years ago. And so on. But the good news is that going from small games to big games is just a series of incremental steps - as you understand the procedures better, the route to the top becomes a lot clearer.