Programming : Creating the game logic - and doing that well |
|
Alpha-blending and the Z-buffer [External article @ www.sjbaker.org]
|
Written 2002-01-06 UTC by
Steve Baker in Category "Graphics"
(Last Change: 2002-01-06 UTC)
|
|
|
Shock! - Horror!...
The Z buffer doesn't work for transparent polygons.
The problem is that the Z buffer prevents OpenGL from drawing pixels that are behind things that have already been drawn. Generally, that's pretty convenient - but when the thing in front is translucent, you NEED to see things that are behind it. |
|
Basic OpenGL Lighting [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Graphics"
(Last Change: 2002-01-05 UTC)
|
|
|
Many people starting out with OpenGL are confused by the way that OpenGL's built-in lighting works - and consequently how colour functions. I hope to be able to clear up some of the confusion. |
|
Callbacks in C++ |
Written 2000-05-29 UTC by
Bert Peers in Category "Other"
(Last Change: 2001-06-08 UTC)
|
|
|
An extensive tutorial on how to implement a flexible, typesafe callback mechanism in C++ |
|
Creating Your First SVGAlib/GGI Game |
Written 2000-05-29 UTC by
Alexandre Courbot in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
Step through the creation of a GGI/SVGA-based game with Alexandre
Courbot. He will explain every step of the way, so linux newbies are
certainly welcome. |
|
Creating Your First SVGALib/GGI Game: Programming And Library Specifics |
Written 2000-05-29 UTC by
Alexandre Courbot in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
Mostly useful for people coming from other systems, this part will help
you getting familiar with the Linux/Unix programming specifics. |
|
Creating Your First SVGALib/GGI Game: True Color Depths and Keyboard |
Written 2000-05-29 UTC by
Alexandre Courbot in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
In this final article about Svgalib and GGI you'll learn about true
colordepths, sprite conversions and basic input using the keyboard. |
|
Culling your scene to the View Frustum [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Graphics"
(Last Change: 2002-01-05 UTC)
|
|
|
OpenGL can correctly reject polygons that lie 'off the edge' of the screen - and clip those that straddle the edge of the screen, but the cost of transmitting all those vertices to OpenGL only to have them thrown away is pretty high.
You could write code to reject those polygons yourself - but that would be pretty pointless because it would probably take as long - if not longer - than OpenGL takes.
The optimal solution is to do a coarse level cull in your application - rejecting entire objects that lie completely off the screen - and let OpenGL do the fine-grained cull at the level of individual polygons. This approach will greatly speed up most OpenGL applications.
This paper describes one efficient method for attacking this problem. |
|
Dialog - a programming language for dialogs |
Written 2000-05-29 UTC by
Philipp Gühring in Category "Other"
(Last Change: 2001-06-08 UTC)
|
|
|
Dialog is a programming language, for dialogs with the user.
It was used in the trading-simulation "Würstelstand". This article
describes the development of Dialog and its applications. |
|
Euler Angles are Evil [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Physics and Math"
(Last Change: 2002-01-05 UTC)
|
|
|
Most people's first attempt at writing a camera/player movement routine do this kind of thing:
while ( 1 )
{
...read some angular velocities from a joystick or something ;
...add the angular velocities to the current angles ;
...convert current angles into a matrix ;
...invert the matrix ;
...put it onto the GL_MODELVIEW stack ;
...draw the scene ;
}
This doesn't work - or at least, it seems to work - but only for heading changes - and perhaps small changes in pitch and roll. You have just discovered that - and that's why you are reading this page - right? |
|
Fast Text in OpenGL [External article @ www.sjbaker.org]
|
Written 2002-01-06 UTC by
Steve Baker in Category "Graphics"
(Last Change: 2002-01-06 UTC)
|
|
|
Sooner or later, almost everyone finds the need to draw text using OpenGL. This text explains the basically three only ways to do this at the OpenGL level |
|
Graphics Programming Basics: A PCX Loader/Viewer (Part I) |
Written 2000-05-29 UTC by
Alexandre Courbot in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
The basics of graphical programming with Linux, using Svgalib and GGI.
Learn how to set a 8bpp video mode, how to draw most of the primitives
and how to load a PCX file. |
|
Graphics Programming Basics: A PCX Loader/Viewer (Part II) |
Written 2000-05-29 UTC by
Alexandre Courbot in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
The basics of graphical programming with Linux, using Svgalib and GGI.
Learn how to set a 8bpp video mode, how to draw most of the primitives
and how to load a PCX file. |
|
Joysticks - Implementation and Portability |
Written 2000-05-29 UTC by
Erik Greenwald in Category "Other"
(Last Change: 2001-10-14 UTC)
|
|
|
My goal here is to give you the ability to implement joysticks into
your videogames in an effecient and relatively portable manner. My
emphasis will be on Linux (2.0.x and 2.2.x), and FreeBSD (I think). |
|
Keyboards Are Evil [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Other"
(Last Change: 2002-01-05 UTC)
|
|
|
OK - so I hear you asking, what could possibly be evil about
keyboards (apart from the stoopid CapsLock key of course!).
Try this (Yes - NOW! - I'll wait while you do it...):
- Open a text entry window of some kind.
- Press down (and hold down) the 'E' key.
- Without letting go, press down (and hold down) the 'C' key.
- Now tap repeatedly on the 'U' key. Do you see any u's coming
out on the screen? No? I didn't think so.
- If you have an older keyboard, maybe you did see a 'u' - but
you probably see some m's too?!?
- Try typing some other characters - notice that some work
but some are either blocked or generate 'ghost' characters.
- Try holding down other pairs of keys and tapping on a third -
for almost any pair you choose, there are several other keys that
don't work.
Clearly this is a bad thing for programs that expect the user to
hold down keys to make things happen. Games with two players
using the keyboard at once are particularly vulnerable to this. |
|
Learning to Love your Z-buffer [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Graphics"
(Last Change: 2002-01-05 UTC)
|
|
|
One of the more common OpenGL programming problems that I see concerns the poor precision of the Z buffer.
Many of the early 3D adaptors for the PC have a 16 bit Z buffer, some others have 24 bits - and the very best have 32 bits. If you are lucky enough to have a 32 bit Z buffer, then Z-precision may not seem to be an issue for you. However, if you expect your program to be portable, you'd better give it some thought.
The precision of Z matters because the Z buffer determines which objects are hidden behind which others - and if you don't have enough precision to resolve the distance between two nearby objects, they will randomly show through each other - sometimes in large zig-zags, sometimes in stripes.
|
|
Making the game world independent of CPU speed |
Written 2000-08-13 UTC by
Erik Greenwald in Category "Other"
(Last Change: 2001-06-08 UTC)
|
|
|
The game world in modern games appears to run at speeds that do not
depend on the speed of the CPU. This is critical for a game that involves
network interaction between two computers of different speeds, as well as
providing the best possible experience the players machine can give. Once the
time delta (the amount of time it takes from one frame to the next) is
calculated, the physics and controls can be scaled against it, giving
the consistency necessary for a modern game. Two of the most common
languages for developing action-oriented video games are C and C++, so
we will explore how to implement a couple methods of finding the time
delta and FPS using these languages. |
|
Matrices can be your Friends [External article @ www.sjbaker.org]
|
Written 2002-01-05 UTC by
Steve Baker in Category "Physics and Math"
(Last Change: 2002-01-05 UTC)
|
|
|
What stops most people from getting friendly with matrices is that they look like 16 utterly random numbers. However, a little mental picture that I have seems to help most people to make sense of what's going on. Most programmers are visual thinkers and don't take kindly to piles of abstract math. |
|
Optimization Basics |
Written 2000-10-11 UTC by
Erik Greenwald in Category "Methodology"
(Last Change: 2001-06-08 UTC)
|
|
|
Many people seem to think that the best road to blindingly fast programs is to write as much as possible in assembly. Typically this results in buggy software that is actually slower than one written in a higher level language. Premature optimizations can cost huge amounts of time and effort. No optimization should occur before the program works without crashing or exhibiting weird behavior. |
|
Performance Of The Common Linux Compilers |
Written 2000-05-29 UTC by
Salvador E. Tropea in Category "Code Management"
(Last Change: 2001-06-08 UTC)
|
|
|
An LGDC article that compares the performance of gcc, egcs and pgcc
using the BYTE Magazine algorithms. |
|
Tricking GGI Into An 8-Bit Display Mode |
Written 2000-05-29 UTC by
Philipp Gühring in Category "Graphics"
(Last Change: 2001-06-08 UTC)
|
|
|
A bit of code helping to display
8-bit graphics everywhere (including 16 bit or 24 Bit X-Servers),
automatically with GGI. |
|
Writing Modifiable Games |
Written 2000-05-29 UTC by
Bert Peers in Category "Methodology"
(Last Change: 2001-06-08 UTC)
|
|
|
A look at different techniques for making games more configurable and extensible. |
|
|
|