NOTE: This page is no longer being updated and has not changed since October 13, 1998. I'm leaving it up as a reference, but please do not contact me regarding broken links, new resources, or anything else. Thank you. (October 22, 2001)Note: Also, I take no responsibility for anything that happens to you or your computer because of the information contained in the documents below. A lot of them involve low-level assembly language programming, and whenever you work that close to the machine, there's always a chance something will go badly wrong.Source Code and Libraries Other People's Code
Mesa 3D - A 3D graphics library with an API very similar to that of OpenGL. Runs under mutiple operating systems.
Allegro - A game programming library for use with DJGPP in writing 32 bit DOS programs. Has support for SVGA, sound, various graphics formats, some 3D routines, graphics primitives, and lots more.
XSharp22 - A Mode X graphics library by Michael Abrash. Includes general graphics routines as well as 3D routines. Even does texture mapping, shading and lighting.
CD-ROM Programming FAQ - Lots of very useful info on programming the CD-ROM drive. Helpful for things like writing your own CD playing program.
Adding Languages to Game Engines - Or... how a self described "lazy programmer" built the powerful scripting language used in making Jedi Knight: Dark Forces 2. @Gamasutra
The rec.games.programmer FAQ - An introduction to the rec.games.programmer newsgroup. Has recommendations on what to post, as well as links to other sites.
Graphics Programming - A good introduction to mode 13h, line drawing, sprites, and the palette. Includes source code in pascal with inline assembly. @Chris's Page
Mode 13h
Introduction to Mode 13h. - An introduction to mode 13h, an easy to use, 320x200x256 VGA mode. Has lots of source code in Pascal with inline assembly.@PCGPE
OpenGL Man Pages - Man pages for every function whose name starts with "gl" or "glu". The index pages look like ftp sites, but the information is still easy to find.
OpenGL 1.2.1 Specification (pdf) (ps) - Be patient, these are multi-megabyte files.
Direct X Example - A guide to setting up your first direct draw program, including basic Windows commands. Written for people used to DOS programming. @Omar's Game Programming Page
Double Buffering - A technique for getting rid of flicker in your games. This is a tutorial on top of a header file. However, the header file might not work without some modifications. @Jay's Game Programming Page
Dirty Rectangles - A modification to double buffering designed to increase speed by only copying those parts of the double buffer that changed since the last frame. @Jay's Programming Page
Tilebased Game Techniques - A good introduction to tilebased games. Uses a linked list to store information about each tile. This gives you better efficiency and more flexibility.
A Line of Sight Rule - A way of determining if a unit can hit another unit despite obstacles between them. Takes into account the elevation of the terrain. @The WASTE page.
Rotating Objects Using Quaternions - A guide to using quaternions (sort of 4D complex numbers) to do 3D rotations. They have advantages over other methods of storing rotations. The biggest is probably ease of interpolation. @Gamasutra
Game Technology Explained - Explanations of some complicated 3D game programming stuff. Lots of advanced techniques.
World Modeling - Discusses different ways of representing your game's world.
Z-Buffering - An introduction to z-buffering, a method of drawing 3D objects correctly. It tests the z-coordinate of each pixel to be drawn to see if it is closer than the previous pixel drawn to that location. @Strange Creations
Binary Space Partitioning Trees - Calculates a tree used for hidden surface removal. This is useful for things like Quake levels that don't change much while the program is running. That way all the calculation occurs before you run the program.
S-Buffering FAQ - A method sort of like z-buffering, but for scanlines.
Influence Mapping - A comp.ai.games thread on influence mapping. This technique involves determining the influence of friendly or enemy units on each tile of your game.
Gnuchess - A description of gnuchess's board evaluation function.
MiniMax Algorithm - A searching algorithm used for the AI in games like chess or tic-tac-toe. Assumes that each player always makes the best available move, and determines the best move for the computer. @The AIM page.
x2ftp - A really nice ftp site full of great info.
Chris Programming Chamber - A really nice page. Has a good introduction to graphics programming, as well free source code in pascal. Also contains links to other nice pages.
3D Engines List - A list of lots of 3D engines. Has links to homepages for lots of different engines.
Game Developer Magazine - A magazine with lots of source code online. Unfortunately, most of it doesn't make sense without the articles, but it still helps. They also added threaded discussion about game programming.