This commit is contained in:
gferg 2002-01-09 20:45:52 +00:00
parent 75226c157f
commit a30a080ea8
2 changed files with 14991 additions and 14648 deletions

File diff suppressed because it is too large Load Diff

View File

@ -18,14 +18,15 @@
</affiliation>
</author>
<revhistory>
<!-- <revhistory>
<revision>
<revnumber>0.9.1</revnumber>
<date>2002-01-03</date>
<revremark>Converted to docbook</revremark>
</revision>
<revnumber>0.9.2</revnumber>
<date>2002-01-09</date>
</revision> -->
<!-- previous versions get their own <revision> tag -->
</revhistory>
<!-- </revhistory> -->
<pubdate>v.0.9.2, 2002-01-09</pubdate>
<copyright>
<year>2001</year>
@ -113,7 +114,7 @@
6.1. RTFM!
6.2. Look For Updates
6.3. Newsgroups
6.4. Google
6.4. Google Group Search
6.5. Debugging: Call traces and core files
6.6. Saved Games
6.7. What to do when a file or library isn't being found
@ -781,9 +782,21 @@ under Linux. </para>
<sect1><title>Definitions: Video Card and 3D Terminology</title>
<para>We'll cover some terminology that you'll see when reading about games in
general. This stuff prolly isn't crucial to actually getting a game working,
but will help when deciding what hardware is best for you.</para>
<para>We'll cover terminology that you'll see when reading about video cards
and games. This stuff isn't crucial to actually getting a game working, but
will help when deciding what hardware and software options are best for
you.</para>
<sect2><title>Textures</title>
<para> A rendered scene is basically made up of polygons and lines. A
texture is a 2D image (usually a bitmap) covering the polygons of a 3D
world. Think of it as a coat of paint for the polygons. </para>
</sect2>
<sect2><title>T&amp;L: Texture and Lighting</title>
@ -797,19 +810,153 @@ but will help when deciding what hardware is best for you.</para>
</sect2>
<sect2><title>AA: Anti Aliasing</title>
<para> Anti aliasing is the smoothing of jagged edges along a rendered
curve or polygon. Individual pixels are square objects, and drawing an
angled line or curve with them will result in a &ldquo;stair-step&rdquo;
effect, also known as the &ldquo;jaggies&rdquo;. This is when pixels
make, what should be a smooth curve or line, jagged. AA uses
computationally expensive filtering techniques to smooth out these jagged
edges. This can improve a game's visuals, but can also dramatically
degrade performance. </para>
<para> AA is actually used in a number of situations, For instance, when
you magnify a picture, you'll notice lines that were once smooth are now
jagged (try it with The Gimp!). Font rendering is another big
application for AA techniques. </para>
<para> AA can be done either by the application itself (as with The Gimp
or the XFree86 font system) or by hardware, if your video card supports
it. Since AA is CPU intensive, it's more desirable to perform it in
hardware, but if we're talking about semi-static applications, like The
Gimp, this really isn't an issue. For dynamic situations, like games,
doing AA in hardware can be crucial. </para>
</sect2>
<sect2><title>FSAA: Full Screen Anti-Aliasing</title>
<para> FSAA is "Full Screen Anti-Aliasing". Anti-aliasing is an artist's
technique for rendering an image, scaling it to a larger resolution and
then rescaling it back down to the smaller resolution. This has the
effect of eliminating the "jaggies"; random pixels that make curved
surfaces look uncurved or broken. FSAA dramatically improves a game's
visuals but can degrade overall performance by lowering the framerate
since the video card has to render multiple images for every task.
<para> FSAA is &ldquo;Full Screen Anti-Aliasing&rdquo;. It usually
involves drawing a magnified version of the entire screen in a separate
framebuffer, performing AA on the entire image and rescaling it back to
the normal resolution. As you can imagine, this is extremely CPU
intensive. You will never see non hardware accelerated FSAA. </para>
</sect2>
<sect2><title>Mip Mapping</title>
<para> Mip mapping is a technique where several scaled copies of the same
texture are stored in the video card memory to represent the texture at
different distances. When the texture is far away a smaller version of
the texture (mip map) is used. When the texture is near, a bigger one is
used. Mip mapping can be used regardless of filtering method (see
below). Mip mapping reduces memory bandwidth requirements since the
images are in hardware, but it also offers better quality in the rendered
image. </para>
</sect2>
<sect2><title>Texture Filtering</title>
<para> Texture filtering is the fundamental feature required to present
the sweet 3D graphics. It's used for a number of purposes, like making
adjacent textures blend smoothly and making textures viewed from an angle
(think of looking at a billboard from an extreme angle) look realistic.
There are several common texture filtering techniques including
point-sampling, bilinear, trilinear and anisotropic filtering. </para>
<para> One thing to keep in mind is that when I talk about `performance
hits', the performance hit depends on what resolution you're running at.
For instance, at a low resolution you may get only a very slight hit by
using trilinear filtering instead of bilinear filtering. But at high
resolutions, the performance hit may be enormous. Also, I'm not aware of
any card that uses anisotropic texture filtering. TNT drivers claim they
do, but I've read that these drivers still use trilinear filtering when
actually rendering an image to the screen. </para>
</sect2>
<sect2><title>Point Sampling Texture Filtering</title>
<para> Point sampling is rare these days, but if you run a game with
`software rendering' (which you'd need to do if you run a 3D accelerated
game without a 3D accelerated board) you're likely to see it used. </para>
</sect2>
<sect2><title>Bilinear Texture Filtering</title>
<para> Bilinear filtering is a computationally inexpensive but low
quality texture filtering. It approximates the gaps between textures by
sampling the color of the four closest (above, below, left and right)
texels. All modern 3D accelerated video cards can do bilinear filtering
in hardware with no performance hit. </para>
</sect2>
<sect2><title>Trilinear Texture Filtering</title>
<para> Trilinear filtering is a high quality bilinear filter which uses
the four closest pixels in the second most suitable mip map to produce
smoother transitions between mip map levels. Trilinear filtering samples
eight pixels and interpolates these before rendering, twice as much as
bi-linear does. Trilinear filtering always uses mip mapping. Trilinear
filtering helps eliminate the banding effect that appears between adjacent
MIP map levels. Most modern 3D accelerated video cards can perform
trilinear filtering in hardware with little or no performance hit.
</para>
</sect2>
<sect2><title>Anisotropic Texture Filtering</title>
<para> Anisotropic filtering is the best but most CPU intensive of the
three common texture filtering methods. Trilinear filtering is capable of
producing fine visuals, but it only samples from a square area which in
some cases is not the ideal way. Anisotropic (meaning `from any
direction') samples from more than 8 pixels. The number of sampled pixels
and which sampled pixels it uses depends on the viewing angle of the
surface relative to your screen. It shines when viewing alphanumeric
characters at an angle. </para>
</sect2>
<sect2><title>Z Buffering</title>
<para> A Z buffer is a portion of RAM which represents the distance
between the viewer (you) and each pixel of an object. Many modern 3D
accelerated cards have a Z buffer in their video RAM, which speeds things
up considerably, but Z buffering can also be done by the application's
rendering engine. </para>
<para> Every object or pixel has a stacking order, like a deck of cards.
When objects are rendered into a 2D frame buffer, the rendering engine
removes hidden surfaces by using the Z buffer. There are two approaches
to this. Dumb engines simply draw far objects first and close objects
last, obscuring objects below them in the Z buffer. Smart engines will
calculate what portions of objects will be obscured by objects above them
and simply not render the portions that you won't see anyhow. For
complicated textures this is a huge savings in processor work. </para>
</sect2>
</sect1>
@ -827,116 +974,123 @@ but will help when deciding what hardware is best for you.</para>
XF86Config (or XF86Config-4) file. </para>
<sect2><title>Getting information about your X system</title>
<sect3><title>Probeonly</title>
<para> There are many ways to get information about your X system. A
popular method is using probeonly. From a console (and without X already
running), type: </para>
<para> There are many ways to get information about your X system. A
popular method is using probeonly. From a console (and without X
already running), type: </para>
<screen>X -probeonly 2> X.out</screen>
<screen>X -probeonly 2> X.out</screen>
<para> Yes, that's a single dash; so much for standards. The output of
X goes to stderr, so we have to redirect stderr with "2>" to a file named
X.out. This file pretty much has everything there is to know about X.
Go ahead and look at it. It's chock full of useful information. It's
crucial that you know the difference between the different the various
markers: </para>
<para> Yes, that's a single dash; so much for standards. The output
of X goes to stderr, so we have to redirect stderr with "2>" to a file
named X.out. This file pretty much has everything there is to know
about X. Go ahead and look at it. It's chock full of useful
information. It's crucial that you know the difference between the
different the various markers: </para>
<screen>
(--) probed (**) from config file (==) default setting
(++) from command line (!!) notice (II) informational
(WW) warning (EE) error (??) unknown.
</screen>
<screen>
(--) probed (**) from config file (==) default setting
(++) from command line (!!) notice (II) informational
(WW) warning (EE) error (??) unknown.
</screen>
<para> Here's an example of what useful information I can glean from my
output: </para>
<para> Here's an example of what useful information I can glean from my
output: </para>
<para>I'm running at 16 bpp color:</para>
<para>I'm running at 16 bpp color:</para>
<screen>(**) TDFX(0): Depth 16, (--) framebuffer bpp 16</screen>
<screen>(**) TDFX(0): Depth 16, (--) framebuffer bpp 16</screen>
<para>X has detected what my videocard chipset and videoram are:</para>
<para>X has detected what my videocard chipset and videoram are:</para>
<screen>
(--) Chipset 3dfx Voodoo5 found
(--) TDFX(0): VideoRAM: 32768 kByte Mapping 65536 kByte
</screen>
<para> As I said, it's all here. Sometimes it's hard to find what
you're looking for. Also, if X is already running, you'll have to kill
it first, and sometimes you don't want to have to do this. There are
other ways of getting information about X, but I don't think any of them
have the wealth of knowledge that this method gives. We'll cover them
shortly. </para>
<para> As I said, it's all here. Sometimes it's hard to find what
you're looking for. Also, if X is already running, you'll have to kill
it first, and sometimes you don't want to have to do this. There are
other ways of getting information about X, but I don't think any of
them have the wealth of knowledge that this method gives. We'll cover
them shortly. </para>
<para> On Debian (and perhaps other distros?) the output of startx goes
to the file /var/log/Xfree86.0.log, so you don't have to do the
"-probeonly" business. </para>
<para> On Debian (and perhaps other distros?) the output of startx goes
to the file /var/log/Xfree86.0.log, so you don't have to do the
"-probeonly" business. </para>
</sect3>
<sect3><title>Getting info about your setup: xvidtune</title>
<para> xvidtune is your friend when your X screen is shifted a little bit
too far to the right, or if the vertical length is too small to fit on
your monitor. However, it's a great diagnostic tool also. It'll give
you: </para>
<para> xvidtune is your friend when your X screen is shifted a little
bit too far to the right, or if the vertical length is too small to fit
on your monitor. However, it's a great diagnostic tool also. It'll
give you: </para>
<itemizedlist>
<listitem><para>the hsync/vsync range specified in your XFree86Config file
</para></listitem>
<listitem><para>the 4 horizontal and 4 vertical numbers which defines your
videomode (the 1st horizontal/vertical numbers gives the screen resolution).
These 8 numbers will tell you which modeline your X uses. See the XFree86
Video Modetiming Howto for more information.</para></listitem>
<listitem><para>the "dot clock" your videocard is running at.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<listitem><para>the hsync/vsync range specified in your XFree86Config file
</para></listitem>
<listitem><para>the 4 horizontal and 4 vertical numbers which defines
your videomode (the 1st horizontal/vertical numbers gives the screen
resolution). These 8 numbers will tell you which modeline your X
uses. See the XFree86 Video Modetiming Howto for more
information.</para></listitem>
<listitem><para>the "dot clock" your videocard is running at.</para>
</listitem>
</itemizedlist>
</sect3>
</sect3>
<sect3><title>Getting info about your setup: xwininfo</title>
<para> xwininfo tells you all sorts of information about X windows. And
actually, your "background" or "root" window is considered a window too.
So when xwininfo asks you to click on the window you want the information
on, click on your background. It'll tell you things like: </para>
<para> xwininfo tells you all sorts of information about X windows.
And actually, your "background" or "root" window is considered a window
too. So when xwininfo asks you to click on the window you want the
information on, click on your background. It'll tell you things like:
</para>
<segmentedlist>
<seglistitem><seg>Screen resolution</seg><seg>Width and Height</seg>
</seglistitem>
<seglistitem><seg>color bpp </seg><seg>Depth </seg>
</seglistitem>
</segmentedlist>
<segmentedlist>
<seglistitem><seg>Screen resolution</seg><seg>Width and Height</seg>
</seglistitem>
<seglistitem><seg>color bpp </seg><seg>Depth </seg>
</seglistitem>
</segmentedlist>
<para> and a few other things which are interesting but not immediately
relevent to our subject, like "Window Gravity State" which tells where
new windows tend to be placed by the window manager. </para>
<para> and a few other things which are interesting but not immediately
relevent to our subject, like "Window Gravity State" which tells where
new windows tend to be placed by the window manager. </para>
</sect3>
<sect3><title>Other sources of information</title>
<para> xdpyinfo gives cool stuff, like X version and loaded extensions
(invaluable when trying to see what's missing, like GLX, DRI,
XFree86-VidMode, etc.). </para>
<para> <command>xdpyinfo</command> gives cool stuff, like X version and
loaded extensions (invaluable when trying to see what's missing, like
GLX, DRI, XFree86-VidMode, etc.). </para>
</sect3>
<sect3><title>Getting information about your 3D system</title>
<para> glxinfo gives lots of useful information about OpenGL (whether
direct rendering is being used or not, the currently installed versions
of glx and mesa), vendor/renderer strings, the GL library files being
used and more. </para>
<para> glxinfo gives lots of useful information about OpenGL (whether
direct rendering is being used or not, the currently installed versions
of glx and mesa), vendor/renderer strings, the GL library files being
used and more. </para>
</sect3>
@ -1194,23 +1348,31 @@ happens when I press the left arrow key twice", then you're in business.
<sect2><title>Google</title>
<sect2><title>Google Group Search</title>
<para> Every post made to usenet gets archived at this website. The
archive used used to be called deja (www.deja.com) but it was bought by
google. Most people still know the archive by "deja", so I'll call it that
for now. </para>
<para> Every post made to Usenet gets archived at Google. This archive used
to be at <systemitem role="url">www.deja.com</systemitem>, but was bought by
Google. Many people still know the archive by &ldquo;deja&rdquo;. </para>
<para> You are not a true Linux user until you use deja to fix a problem.
It's almost an absolute certainty that whatever problem you have with Linux
(whether gaming related or not) has already been asked about on deja.
Moreover, chances are very good it has been answered. Not once, not twice,
but many times over. If you don't understand the first response you see
(or if it doesn't work), then you'll almost certainly have many other
replies to read and try out. Deja should be one of your first reactions to
any problem. </para>
<para> It's almost absolutely certain that whatever problem you have with
Linux, gaming related or not, has already been asked about on Usenet.
Moreover, chances are nearly equally as certain that the answer has been
posted on Usenet. Not once, not twice, but many times over. If you don't
understand the first response you see (or if it doesn't work), then try one
of the other many replies. If the page is not in a language you can
understand, there are many translation sites which will convert the text
into whatever language you like, including <systemitem role="url">
http://www.freetranslation.com</systemitem> and <systemitem role="url">
http://translation.lycos.com</systemitem>. My web browser of
choice, Opera (available at <systemitem role="url">http://www.opera.com
</systemitem> allows you to use the right mouse button to select a portion
of text and left click the selection to translate it into another language.
Very useful when a Google group search yields a page in German which looks
useful and my girlfriend (who reads/speaks German pretty well) isn't
around. </para>
<para> Go straight to the advanced search and point your browser to: </para>
<para> The Google group search has a basic and advanced search page. Don't
bother with the simple search. The advanced search is at
<blockquote><para>
<systemitem role="url">http://groups.google.com/advanced_group_search
@ -1218,24 +1380,22 @@ happens when I press the left arrow key twice", then you're in business.
</para></blockquote>
<para> It's easy to use. For example, if my problem was that Quake III
crashed everytime Lucy jumps, I would enter on the "Find messages with all
of the words" textbox:</para>
crashed everytime Lucy jumps, I would enter on the &ldquo;Find messages with
all of the words&rdquo; textbox:</para>
<screen>linux quake3 crash lucy jumps</screen>
<para> or if you can't get sound to work on Unreal Tournament: </para>
<screen>linux UT sound problem</screen>
<para> you may want to include your soundcard in the search. There are
fields for which newsgroup you want to narrow your search to. Take the
time to read and understand what each field means. I promise you. You
won't be disappointed with this service. Use it, and you'll be a much
happier person. </para>
<para> There are fields for which newsgroup you want to narrow your search
to. Take the time to read and understand what each field means. I promise
you. You won't be disappointed with this service. Use it, and you'll be a
much happier person. Do note that they don't archive private newsgroups,
like Loki Software's news server. However, so many people use Usenet, it
almost doesn't matter. </para>
</sect2>
<sect2><title>Debugging: call traces and core files</title>
<para> This is generally not something you'll do for commercial games. For