<html>

<head>
<title>loonygames presents: Anatomy of a Video Game</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
a { text-decoration: none; }
a:hover { color:000000;  text-decoration: underline; }


</style>
</head>

<body bgcolor="#FFF4D0" link="#3333FF" vlink="#000000" alink="#000000">
<center>
</center>
<table width="100%" border="0" bgcolor="#3596B3" height="58">
  <tr> 
    <td height="69" width="29%" align="left" valign="top"> 
      <div align="left"> <font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b><i><img src="../../images/logo_new.jpg" width="182" height="63" border="0" usemap="#logoa"> 
        </i></b></font></div>
    </td>
    <td height="69" width="29%" align="center" valign="top"> <center>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-2373963192914918";
/* 468x60 */
google_ad_slot = "3417104156";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center>
 
    </td>
  </tr>
</table>
<table width="100%" border="0" bgcolor="#3596B3" height="29">
  <tr> 
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../about.1"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b><font size="2">about</font></b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../feedback.1"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>feedback</b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../archives/index.html"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>archives</b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <b><a href="../../../submissions/index.html"><font color="#FFFFFF" face="Arial, Helvetica, sans-serif" size="2">submissions</font></a></b></td>
  </tr>
</table>
<div align="center"> <br>
</div>
<table width="100%" border="0">
  <tr> 
    <td width="72%"> 
      <h5><b><font face="Arial, Helvetica, sans-serif">//<a href="../../../index.html"><font color="#7C420E">loonygames</font></a>://<a href="../index.html"><font color="#7C420E">issue 
        2.8</font></a>://<a href="index.html"><font color="#7C420E">Anatomy of a 
        Video Game</font></a>://<a href="index.php"><font color="#7C420E">1</font></a>, 
        <a href="index2.php"><font color="#7C420E">2</font></a>, <a href="index4.php"><font color="#7C420E">3</font></a>, 
        <a href="index4.php"><font color="#7C420E">4</font></a>, 5, <a href="index6.php"><font color="#7C420E">6</font></a><a href="index6.php"><font color="#7C420E"></font></a>, 
        <a href="index7.php"><font color="#7C420E">7</font></a>, <a href="index8.php"><font color="#7C420E">8</font></a></font></b></h5>
    </td>
    <td align="right" valign="middle" width="28%"> 
      <div align="right"> 
        <h5><a href="http://www.loonygames.com/includes/printme.pl?url=/2.8/feat/&amp;withimages=yes"><img src="../../images/icons/print01.gif" width="27" height="27" align="baseline" border="0" alt="switch to printer-friendly version"></a></h5>
      </div>
    </td>
  </tr>
</table>
<br>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr> 
    <td align="center" valign="top" width="25%"> 
      <table border="0" width="99%" bgcolor="#D7B582" align="center" bordercolor="#E0E0E0">
        <tr> 
          <td align="LEFT" valign="TOP" width="100%"> <font color="#000000" face="Arial, Helvetica, sans-serif" size="2"> 
            <!--#exec
cgi="/includes/rand_quot.cgi"--> </font> <p><webdog><font face="Arial, Helvetica, sans-serif" size="2" color="#0022A8"><b><font color="#693A0C">What's 
           new today:</font></b></font> 
          
<p><b><font face="Arial, Helvetica, sans-serif" size="2"><a href="../../../index.html" target=""><b><font color="#00025E">New!!!</font></b></a><br></b>
  The archives have been cleaned up, dead links fixed, and the printable versions restored! Also, don't miss the new comments on the main page!</font></p>

 
<p><b><font face="Arial, Helvetica, sans-serif" size="2"><a href="../../2.15/feat/index.html" target=""><b><font color="#00025E">Livin' 
  With The Sims</font></b></a><br></b>
  theAntiELVIS explores the wild and wacky world that is Will Wright's <b>The Sims</b>, 
  asking the inevitable quesiton, &quot;is <b>The Sims</b> the first step toward a virtual 
  life where everyone is Swedish?&quot;</font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif" size="2"><a href="../../2.15/pixel/index.html" target=""><b><font color="#00025E">Pixel 
  Obscura </font></b></a></font><font face="Arial, Helvetica, sans-serif" size="2"><br>
  Josh Vasquez on <b>Omikron: The Nomad Soul</b>.</font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif" size="2"><a href="../../rl/index.html" target=""><b><font color="#00025E">Real 
  Life </font></b></a></font><font face="Arial, Helvetica, sans-serif" size="2"><br>
  Check out our newest comic strip, <b>Real Life</b>! Updated daily!</font></p>
<p><font color="#000000" face="Arial, Helvetica, sans-serif" size="2"><a href="../../uf.1" target=""><b><font color="#00025E">User 
  Friendly</font></b></a></font><font face="Arial, Helvetica, sans-serif" size="2"><br>
  Updated daily!</font></p>
<p></webdog> </p>
 
            <p></p>
            <p> </p>
            <p></p>
            <!--#include virtual="/includes/includes/commerce_ssi.htm" --> 
            <!--#include virtual="/includes/includes/art_ssi.htm" --></td>
        </tr>
      </table>
      <br>
      <table width="100%" border="0" bgcolor="#D7B582">
        <tr bgcolor="#D7B582"> 
          <td> 
            <div align="center"> 
              <p align="left"><font size="-1"><font face="Arial, Helvetica, sans-serif" size="2" color="#0022A8"><b><font color="#00025E">Random 
                Feature:</font></b></font> </font> </p>
              <p><!--#exec
cgi="/includes/rand_thumb.cgi"--><i><font face="Arial, Helvetica, sans-serif" size="-2"> 
                </font> </i></p>
            </div>
          </td>
        </tr>
      </table>
      <br>
      <table width="99%" border="0" bgcolor="#D7B582">
        <tr> 
          <td> 
            <div align="center"> 
              <form method="get" action="http://www.google.com/custom" name="">
                <font face="Arial, Helvetica, sans-serif" size="-1"><b><font color="#339900">Search 
                the Archives!</font></b></font> 
               
                 <INPUT TYPE=text name=q size=12 maxlength=255 value="">
 <INPUT type=submit name=sa VALUE="Google Search">
 <INPUT type=hidden name=cof 
VALUE="LW:216;L:http:/home/loonygames/loony.timedoctor.org/content/images/logo1.jpg;LH:55;AH:center;S:http://www.loonygames.com;AWFID:13a298c7abe84fd0;">
<input type=hidden name=domains value="loonygames.com"> 
<input type=hidden name=sitesearch value="loonygames.com">               
</div>
              </form>

              <p align="left"><i> </i></p>
            </div>
          </td>
        </tr>
      </table>
    </td>
    <td width="75%" align="center" valign="top"> 
      <table width="90%" border="0" cellpadding="0" align="center">
        <tr> 
          <td width="50%" valign="top"> 
            <div align="center"> 
              <table width="98%" border="0">
                <tr> 

                  <td width="55%"> 
                    <div align="left"> 
                      <p><b><font face="Arial, Helvetica, sans-serif" color="#0000FF"><i><font color="#904C10" size="3">Anatomy 
                        of a Video Game</font></i></font></b><br>
                      <div align="right"> <font face="Arial, Helvetica, sans-serif" size="-1">By 
                        <a href="mailto:jsimpson@ravensoft.com">Jake Simpson</a></font></div>
                    </div>
                  </td>
                  <td width="45%" align="right" valign="top"> 
                    <h5 align="right"><b><font face="Arial, Helvetica, sans-serif" color="#00025E">Vol. 
                      2, Issue 8 <br>
                      January 10, 2000&nbsp; </font></b></h5>
                  </td>
                </tr>
              </table>
              <loonystart>
              <p align="left"><font face="Arial, Helvetica, sans-serif"><b><font size="+1">Sound 
                system</font></b></font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">These 
                days sound systems are getting more and more complex, what with 
                Dolby Digital 5.1 speaker systems, 3D sound systems, and 3D accelerated 
                sound cards. Add to that mix real time music mixing, midi playback 
                and environmental sound, and it starts getting really complicated. 
                Has anyone here ever seen a movie without all the incidental music 
                and sound effects? Looks really weird doesn&#146;t it? Well games 
                are no different. Sound and music are becoming more and more important 
                for scene and mood setting, as well as aural cues to what&#146;s 
                going on. In the PC world, there are three main sound systems. 
                Direct Sound - created by Microsoft. This is bad news, not only 
                does it not work correctly, when it does work its pretty hit and 
                miss. Plus the fact that its not supported under NT makes it the 
                worst choice. We use it as a fall back system in case all else 
                fails. Then there&#146;s EAX, created by Creative Labs, the people 
                that brought you the Sound Blaster, and most recently the 4 speaker 
                system Sound Blaster Live! This is a pretty damn good system, 
                with lots of built in effects, like echo, as well as sound reflection 
                and on the fly sound modification. Lastly there is the Aureal 
                A3D system. Like EAX, it&#146;s pretty good, with all the clever 
                stuff done to the sounds inside the card, rather than in software, 
                which is always good.</font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">These 
                days not enough is done with sound, it tends to be the last thing 
                that&#146;s thrown in at the last minute. On the other hand it 
                is a burgeoning discipline - we now have one programmer that is 
                dedicated to handling sound issues. Sound on the consoles and 
                in the arcade is handled a little differently. Again, like the 
                renderer, the sound system is always known in advance, which is 
                handy, since once you've written a sound system, you can use it 
                again and again, since sound systems are the one area of code 
                that traditionally doesn't change much between projects. One thing 
                to bear in mind though, is support of both sound compression systems 
                and multi-speaker support. Sounds are one the biggest memory hogs 
                we have in games. I use samples in our games that are bigger than 
                the entire memory of a Commodore 64. Since this is a memory waster, 
                we can either go with making the sample itself smaller by down 
                shifting the sample rate, a make it sound crap, and inspiring 
                the wrath of our sound designers, or we can investigate sound 
                compression systems. </font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">MP3 is 
                one that springs to mind, however, we do have to balance CPU time 
                required to decompress these samples on the fly with the rest 
                of the game. And for those interested, I don't know of anyone 
                that actually generates sound effects on the fly anymore, like 
                we used to have to do back in the dark ages. Lastly, in these 
                days of Dolby Digital and AC3, we are finding more and more people 
                with multi speaker systems. And we need to support them. While 
                its cool, it does actually have some practical game applications, 
                for instance in a four speaker system, you can actually hear where 
                some one is in 3D relation to you, which believe me, if your in 
                a crucial situation can spell the difference between wasting time 
                hunting for some one and not. We are just starting to get to the 
                point in games where we can start to do clever stuff like aural 
                occlusion, so if someone is behind a wall and shoots a weapon, 
                their sound is muffled. This is a subtle thing, but can be very 
                helpful. For this, of course, we need accelerated sound cards; 
                in much the same way we need accelerated 3d graphics cards. I 
                don't believe you'll see this kind of effect on this generation 
                of consoles, and in the arcade environment its pretty pointless, 
                since your not going to hear it in the din of an arcade, and the 
                speakers are too close together anyway.</font></p>
              <p align="left"> </p>
              <p align="left"><font size="+1"><b><font face="Arial, Helvetica, sans-serif">Control 
                mechanisms/physics</font></b></font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">How is 
                your game going to be controlled? Mouse? Trackball? Joystick? 
                Keyboard? Controller? There are many different ways to allow data 
                entry in a game. Being able to cope not only with the data entry, 
                but also translating it into meaningful responsiveness on the 
                screen is a key element of a good game. At the root of all the 
                other systems is the main controlling element that runs the game. 
                This is what scans the input devices, and translates what they 
                say into motion and activity on the screen. At the root of every 
                good game is a blazingly fast and extremely comprehensive input 
                system. </font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">Take <b>Quake</b> 
                for example, while not particularly fast, it has that extremely 
                useful and helpful console system. Its like having a dos shell 
                within a game. What you have to do is create an intuitive interface 
                between the player and the game. This is one area where we start 
                getting into game design rather than implementation, so rather 
                than discussing what controls are best, I'll talk about how we 
                implement them. For instance your game may use digital joysticks 
                as well as a normal mouse. You, as a programmer, have to figure 
                out a control system in your game that can handle both digital 
                inputs from a joystick - up down, left and right, and the analogue 
                input that you get from a mouse. </font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif">Not as 
                easy as it sounds, since they both have 'feel' right. Then of 
                course there is force feedback, something relatively new in the 
                games world. This is where your control mechanism reacts to events 
                occurring in the game via internal motors. For instance, getting 
                shot and the joystick jumping in your hand to reinforce this event. 
                Mostly events like this are tied to sound cues in the game. Most 
                always an event you need to be felt through force feedback has 
                a loud noise attached to it. All things that have to be taken 
                into account, and a bad or rushed implementation of this stuff 
                is probably responsible for more games failing that could have 
                been fun, than anything else.</font></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif"> Physics 
                are integral to the player movement system, since it affects how 
                the computer player responds to your commands and controller manipulations. 
                Something to be aware of here is that almost every non game developer 
                keeps going on and on about true physics systems making games 
                more realistic. Well, speaking as a developer, I&#146;m here to 
                tell you that true physics may be more realistic, but they definitely 
                are NOT more fun. If <b>Quake</b> or <b>NBA JAM </b>had real physics 
                in them, there is no way you&#146;d be running around at 40 miles 
                an hour from a standing start! Sometimes, what &#145;feels&#146; 
                right in a game has nothing to do with real physics. Actually, 
                the modification of true physics into &#145;game&#146; physics 
                makes a tremendous difference in game play, and the correct balance 
                of the two is definitely a skill. All of that is quite apart from 
                the fact that implementing a true physics system, with moments, 
                friction, forces and so on is pretty expensive when it comes to 
                floating point computation. It might be right, but its CPU expensive 
                and often not that fun.</font></p>
              <p align="left"></p>
              <p align="left"></p>
              <p align="left"></p>
              <p align="left"></p>
              <p align="left"></p>
              <p align="left"></p>
              <p align="left"><font face="Arial, Helvetica, sans-serif"><br></loonystart> 
                </font></p>
              </DIV>
            <div align="center">
                <p align="left"><font face="Arial, Helvetica, sans-serif"> </font><font face="Arial, Helvetica, sans-serif"> 
                  </font></p>
              </div>
              <table width="100%" border="0">
                <tr> 
                  
                <td width="50%"><font face="Arial, Helvetica, sans-serif"><a href="index4.php"><font color="#7C420E"><b><font size="+1">&lt;&lt;Prev</font></b></font> 
                  </a></font></td>
                  <td width="50%"> 
                    <div align="center"> 
                      <p align="left"></p>
                      <p align="left"></p>
                    </div>
                    
                  <p align="right"><font face="Arial, Helvetica, sans-serif"><a href="index6.php"><font color="#7C420E"><b><font size="+1">Next 
                    &gt;&gt;</font></b></font> </a></font> 
                </td>
                </tr>
              </table>
    
            </td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<br>
<table width="100%" border="0" bgcolor="#3596B3" height="29">
  <tr> 
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../about.1"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>about</b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../feedback.1"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>feedback</b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <a href="../../../archives/index.html"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>archives</b></font></a></td>
    <td height="20" width="25%" align="center" valign="middle" bgcolor="#86531A"> 
      <b><a href="../../../submissions/index.html"><font color="#FFFFFF" face="Arial, Helvetica, sans-serif" size="2">submissions</font></a></b></td>
  </tr>
</table>
<table width="100%" border="0" bgcolor="#3596B3" height="29">
  <tr> 
    <td height="20" width="35%"><a href="../../../index.html"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><b><i>loonygames</i></b></font></a></td>
    <td height="20" width="65%"> 
      <div align="right"><font face="Arial, Helvetica, sans-serif" color="#FFFFFF"><!--#exec
cgi="/includes/rand_bot.cgi"--></font></div>
    </td>
  </tr>
</table>
<p><i><font face="Arial, Helvetica, sans-serif" size="-2">Credits: Illustration 
  &copy; 2000 <a href="http://www.3dpalette.com/dimension">Durrenberger David 
  (dines)</a>. This article is &copy; 2000 Jake Simpson. All other content is 
  &copy; 2000 loonyboi productions. Unauthorized reproduction is prohibited. So 
  don't do it, or we'll dissect you.</font></i></p>
 <map name="logoa">
  <area shape="rect" coords="52,47,112,59" href="http://www.bluesnews.com">
  <area shape="rect" coords="3,3,179,46" href="../../../index.html">
</map>
</body>
</html>
