PDA

View Full Version : Game Programming Show


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

deix15x8
10-01-2006, 10:47 PM
It seems like to small of niche to make a show for. Maybe if this new XNA thing from Microsoft takes off and allot of average people start creating games it will be popular. They could even show user created xbox games but as of now not enough people would benefit from it.

ax
10-02-2006, 01:59 AM
Maybe just a general gaming show, but more like a g4 icons type of show. How they use to talk to game developers and things?

seen
10-02-2006, 02:00 AM
I think that you're on the right track Wookie. It is only a niche audience because people think that it is too hard. Even most of the experienced programmers I know think that it is way above their head.

What I think has to be done for a show like this is:
Explain the fundamentals to the interested kids, yes they are kids (teens to early 20s) who will be primarily interested in this.
Don't just jump into virtual inheritance and dynamic memory management.
Don't focus only on people from the open source community, odds are that they have already read the latest paper on emulating ray tracing with refractive shaders.
Follow Andre La Mothe's methods. I've read a lot of his books and he has evolved greatly from the beginning when he used to use ASM and low level pallette tricks all the time to writing a short Idiot's book for windows game programming with simple but cool sprite games. Make the end goal to be a simple sprite game. Don't blow up your goals and give the kids false hopes of designing the next super duper engine from scratch. That's not what they want to do anyway. They want to design, but you have to show them that without the code it won't work and the code won't write itself.

Ok now lets be positive,
Here's the course:
1) Preview the possibilities and the cool end result (possibly in the show's intro)
2) Assume they know algebra, refresh it. Introduce trigonmetry in some places.
3) Teach very basic OOP. Relate game aspects and characters to classes.
4) Show the game loop and timing.
5) Introduce sprites. Use API to draw (Allegro or SDL)
6) Introduce sound.
7) Simple AI, or better no AI at all(reserve for later more advanced show.)
8) Finally build the game.

It is important for this process to be very interactive looking and result oriented, as you show the result of your work at the end, and it better freaking move or make sounds. Can't make this into a boring ass lecture for graduate CIS students. This is entertainment first. We have to spark the interest in creative individuals, even if they don't end up doing games, at least they won't be financial analysts.

Seen