I have worked in IT all my life, the first 10-15 years as a programmer so I understands that process.
I realize that there is a lot of work to be done in planning the game, the graphics, the sound and so on.
But from the purely programming aspect:
For games on PC, it can be simply a matter of
( code, compile, test & debug ) repeat
However, for consoles and handhelds, how do they do it, are compilers available. Is the development done on workstations and then the executable uploaded to the console. If so, what kind of workstation, PC or Unix/Linux.
Also, when I read a review of a game, they will often mention that said game is based on such and such an “engine”.
What is an “engine”, is it already prepared code that can be tailored and compiled or is it already compiled and the developer simply needs to supply parameters or scripts for.
Probably you can do both. Since you’re a programmer, think of an engine as a series of API’s provided to game developers that allow them to program on a higher level. Much like when programming Windows, Microsoft has provided higher level functionality to encapsulate low level processes. (e.g. To move and resize a Window, you basically only have to supply the x and y coordinates of the new window to the API function. The code underneath the API will handle the layout of the entire frame covered by the window, calculate the sizes, and call the appropriate Paint() function to draw it. You don’t care about the behind the scenes stuff, you just want your Window moved an resized. Engines essentially do the same thing.
Though, I don’t have any experience actually programming any games, so someone else could probably describe it a bit better.
I work for PlayStation. (Although not as a programmer.)
The programmers work on PCs. They write their code in C or C++. When they want to test it they run it on a “dev kit” which is a special version of the PS3 hardware. It’s a big box that looks like a PC except it has all the normal front panel ports of a PS3.
Both the PC and the dev kit are connected to the LAN. You run a monitor program on the PC that connects remotely to the dev kit. You use the monitor program to upload your compiled executable to the dev kit. The dev kit can be configured in a variety of ways to spit out debugging information back to the monitor program. Since dev kits are expensive they are often shared between several developers in a studio.
Other consoles have similar development environments. For example, the PSP dev kit is a regular PSP with a thick cable permanently connecting it to a box with extra electronics. That box connects to the LAN.
An engine is a set of libraries with a documentated API. You link them in to your code when you compile it. Usually the engine is modular, allowing the team to only use the parts of it they need.
Nintendo DS development is similar to PSP; code is written on a PC and loaded directly to a DS for testing using a nitro blue box. The nitro can also write to a cartridge for portable testing, but doesn’t provide as much (if any) debugging info.
we always referred to that as the umbilical cord. Thing sucked, though it lets you view your PSP on a monitor rather than straining your eyes staring at a PSP for 12 hours a day. Still, the cord makes the unit noticeably heavier and it’s not very flexible.
also, if I remember correctly, X360 dev kits ran around $20,000 and PS3 were a bit more expensive, like up in the $25-30k range. I was once testing for the devs cause they couldn’t for the life of them reproduce a bug and one of 'em walked in on me with my feet resting on top a ps2 dev kit, he was not pleased (I repro’d the bug for him though)
When you say the code is in C or C++, I assume it is a special version, possibly part and parcel of the “dev kit”, not something like MS Visual Studio, am I right?