wookie
10-01-2006, 07:59 PM
I posted this in the thread on the Programming Show but I thought I'd start a new thread since it is a tangent from the other thread. One sure fire idea for a programming show would be to focus on cutting edge game and graphics programming techniques. There is wide interest in game programming at all skill levels and it is still the one programming field where there is a steady stream of new black magic being invented.
If I were producing the show, I'd focus on existing games and do segments with "how did they do that" themes. I'd pull in alpha nerds from all over the game industry to explain how things were done.
I've been a (professional) game programmer in the industry as an advanced/core technology programmer for years now. From my personal experience, a lot of the cool stuff in games can be explained without getting into the actual code. The trick to being a good game programmer is understanding the design of the various engine subsystems: game object management systems, inter-object communication, game logic system design, and organizing your data so that it is easy to feed through your shaders to get the cool effects. You also have to understand database design and realtime programming. All of those topics can be explained in words and whiteboard sessions (aka design diagrams).
This show by its nature would be pretty advanced when covering new techniques (e.g. parallax mapping, accumulated lighting, dynamic shadow approximation, etc) but could also have short "bootstrap" segments that cover basic terminology and game engine structure to help break down the wall of terminology.
The format of the show would be to discuss a piece of a game engine explaining why it is needed, what it does, and what are the know approaches that have been used in published games with a discussion of their compromises and tradeoffs. The goal would be to communicate the tribal knowledge that all game developers eventually learn after being in the industry a while. It's that tribal knowledge that allows game developers to stay employed while also making it hard for non-game developers to break into the industry.
Here are some show ideas:
- I think the first show should kick off with a roundup of cool new graphics techniques coming in the latest XBox360 and Wii titles, explaining which graphics libraries they used and what engines are underneath. The "bootstrap" segment would be on explaining UV texture coordinates and how textures are mapped onto models.
- An episode covering basic game engine architecture. Basically all engines have a game object management system, an inter-object communication mechanism, an animation system, a game-logic system, a sound system, an input system, a game data database and a graphics pipeline. There is also likely a custom memory manager and streaming data loader. The "bootstrap" segment would be on writing a basic shader in hlsl and cg.
- An episode covering a design for a game data database. The foundation of all games rests on the database. It is crucial for games these days to have data well organized and streamable. Cover the strategy for generating dynamic load maps for organizing the data such that the data most likely to be loaded next is close to the data that was just loaded. Basic database design is should also be covered along with the loading characteristics of a DVD drive (i.e. sometimes it is faster to read the unneeded data between two pieces of needed data than it is to read one bit of data and seek to the next bit of data and read it.)
- An episode on the various open source game dev libraries for PS2, Xbox, GB/GBC/GBA, DS, PSP, and GP2X. Getting your windows/linux box set up for development on your chosen platform, and how to use emulators for debugging. It would also be cool if it covered the options for getting your games on the actual hardware (e.g. coders cables, flash roms, mem cards, iso's, etc).
- There should probably be an episode on game tools. It would cover the tools out there for 3D graphics, pixel graphics (for mobile platforms), and animation packages. One thing I haven't seen on the open source market is a good game data database managment system. There aren't any tools out there for storing all of your data with a good streaming library that your engine can use to load data. I don't know why one hasn't been written yet. IMO, it is a huge oversight of the open source game coders. It is a rather generic piece of code that can be (re)used in many different engines, on different platforms.
I've run out of time. but I could fill 20 or more episodes that walking through the complete design of a modern engine and graphics pipeline architecture. It would be cool if there was an open source engine developed along the way as the show was being produced. If there was an engine people could download along with the episodes, the code wouldn't have to be shown on the show. The show could focus on design discussions and examining the trade-offs of various possible solutions for each piece of an engine.
Oh yeah, and there could be a parallel (or follow on) project where all of the same topics are covered but in the context of mobile gaming platforms. Again, from my personal experience, the same topics are relevant but a mobile gaming environment is more simple in some areas and more complex in others. It'd be cool to develop an open source engine for GBA or GP2X while covering the topics in the mobile context. Maybe this would be "season" two.
Cheers,
Wookie
If I were producing the show, I'd focus on existing games and do segments with "how did they do that" themes. I'd pull in alpha nerds from all over the game industry to explain how things were done.
I've been a (professional) game programmer in the industry as an advanced/core technology programmer for years now. From my personal experience, a lot of the cool stuff in games can be explained without getting into the actual code. The trick to being a good game programmer is understanding the design of the various engine subsystems: game object management systems, inter-object communication, game logic system design, and organizing your data so that it is easy to feed through your shaders to get the cool effects. You also have to understand database design and realtime programming. All of those topics can be explained in words and whiteboard sessions (aka design diagrams).
This show by its nature would be pretty advanced when covering new techniques (e.g. parallax mapping, accumulated lighting, dynamic shadow approximation, etc) but could also have short "bootstrap" segments that cover basic terminology and game engine structure to help break down the wall of terminology.
The format of the show would be to discuss a piece of a game engine explaining why it is needed, what it does, and what are the know approaches that have been used in published games with a discussion of their compromises and tradeoffs. The goal would be to communicate the tribal knowledge that all game developers eventually learn after being in the industry a while. It's that tribal knowledge that allows game developers to stay employed while also making it hard for non-game developers to break into the industry.
Here are some show ideas:
- I think the first show should kick off with a roundup of cool new graphics techniques coming in the latest XBox360 and Wii titles, explaining which graphics libraries they used and what engines are underneath. The "bootstrap" segment would be on explaining UV texture coordinates and how textures are mapped onto models.
- An episode covering basic game engine architecture. Basically all engines have a game object management system, an inter-object communication mechanism, an animation system, a game-logic system, a sound system, an input system, a game data database and a graphics pipeline. There is also likely a custom memory manager and streaming data loader. The "bootstrap" segment would be on writing a basic shader in hlsl and cg.
- An episode covering a design for a game data database. The foundation of all games rests on the database. It is crucial for games these days to have data well organized and streamable. Cover the strategy for generating dynamic load maps for organizing the data such that the data most likely to be loaded next is close to the data that was just loaded. Basic database design is should also be covered along with the loading characteristics of a DVD drive (i.e. sometimes it is faster to read the unneeded data between two pieces of needed data than it is to read one bit of data and seek to the next bit of data and read it.)
- An episode on the various open source game dev libraries for PS2, Xbox, GB/GBC/GBA, DS, PSP, and GP2X. Getting your windows/linux box set up for development on your chosen platform, and how to use emulators for debugging. It would also be cool if it covered the options for getting your games on the actual hardware (e.g. coders cables, flash roms, mem cards, iso's, etc).
- There should probably be an episode on game tools. It would cover the tools out there for 3D graphics, pixel graphics (for mobile platforms), and animation packages. One thing I haven't seen on the open source market is a good game data database managment system. There aren't any tools out there for storing all of your data with a good streaming library that your engine can use to load data. I don't know why one hasn't been written yet. IMO, it is a huge oversight of the open source game coders. It is a rather generic piece of code that can be (re)used in many different engines, on different platforms.
I've run out of time. but I could fill 20 or more episodes that walking through the complete design of a modern engine and graphics pipeline architecture. It would be cool if there was an open source engine developed along the way as the show was being produced. If there was an engine people could download along with the episodes, the code wouldn't have to be shown on the show. The show could focus on design discussions and examining the trade-offs of various possible solutions for each piece of an engine.
Oh yeah, and there could be a parallel (or follow on) project where all of the same topics are covered but in the context of mobile gaming platforms. Again, from my personal experience, the same topics are relevant but a mobile gaming environment is more simple in some areas and more complex in others. It'd be cool to develop an open source engine for GBA or GP2X while covering the topics in the mobile context. Maybe this would be "season" two.
Cheers,
Wookie