<HTML>

  <title>loonygames Feature: Bugs!</title>
<body bgcolor="#FEFFEC" link="#000000" vlink="#000000">
<div align="CENTER">
  <div align="CENTER">
    <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>
  </div>
  <div align="CENTER">
    <table border="0" width="600">
      <tr> 
        <td width="261" height="105"><img src="../../images/next_logo_sml.jpg" width="251" height="94" usemap="#map" border="0"> 
        </td>
        <td width="92" height="105" align="LEFT" valign="MIDDLE"> 
          <p><font face="Arial, Helvetica, sans-serif" size="-1">- <a href="../index.html">Contents</a><br>
- <a href="../../../about.1">About</a><br>
            - <a href="../../../submissions/index.html">Submissions</a><br>
            - <a href="../../../feedback.1">Feedback</a><br>
            - <a href="../../archives/index.html">Archives</a></font></p>
        </td>
      </tr>
    </table>
  </div>
  <table border="0" align="CENTER" width="600">
    <tr> 
      <td width="172" height="936" align="LEFT" valign="TOP"> 
        <table border="0" width="172">
          <tr> 
            <td height="1194" align="LEFT" valign="TOP"> 
              <p><font color="#0000FF"><b><font face="Arial, Helvetica, sans-serif" color="#0000CC">volume 
                1, issue 22</font></b></font></p>
              <p><font color="#0000FF"><b><font face="Arial, Helvetica, sans-serif" color="#0000CC"> 
                </font></b></font></p>
              <p>  <p><font face="Courier New, Courier, mono"><b><font color="#339900" face="Arial, Helvetica, sans-serif">Today 
                in loonygames:</font></b></font></p>

<P><font color="#000000" face="Arial, Helvetica, sans-serif" size="-1">New!!</font><font face="Arial, Helvetica, sans-serif" size="2"> The Archives have been cleaned up, fead links fixed, and printable versions restored! Also, don't miss the new comments <a href="../../../index.html">on the front page</a>!</font></p>
              
<P><font color="#000000" face="Arial, Helvetica, sans-serif" size="-1"><a href="../../2.15/feat/index.html" target="">Livin' 
  With The Sims</a></font><font face="Arial, Helvetica, sans-serif" size="2">: 
  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="-1"><a href="../../2.15/pixel/index.html" target="">Pixel 
  Obscura</a></font><font face="Arial, Helvetica, sans-serif" size="2">: Josh 
  Vasquez on <b>Omikron: The Nomad Soul</b>.</font></p>
<P><font color="#000000" face="Arial, Helvetica, sans-serif" size="-1"><a href="../../rl/index.html" target="">Real 
  Life</a></font>: <font face="Arial, Helvetica, sans-serif"> <font size="-1">Check 
  out our newest comic strip, Real Life! Updated daily!</font></font></p>
<P><font color="#000000" face="Arial, Helvetica, sans-serif" size="-1"><a href="../../uf.1" target="">User 
  Friendly</a></font>: <font face="Arial, Helvetica, sans-serif"> <font size="-1">Updated 
  daily!</font></font></p>


</p>
              
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><b><font color="#339900">Related 
                Links:</font></b></font></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><a href="http:/home/loonygames/loony.timedoctor.org/content/1.12/feat/">When 
                It's Done!</a>: Rowan &quot;Sumaleth&quot; Crawford looks at the 
                game development process. </font></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><a href="../../1.16/guest/index.html">Game 
                Interface Design</a>: Harry &quot;Het3&quot; Teasley of Valve 
                Software shares his expertise on interface design.</font></p>
              
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><b><a href="http://www.berda.com/loonygam.htm">T-Shirts</a>: 
                </b>Stylin' loonygames t-shirts from Berda Compugrafix!</font></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><b><a href="../../../artwork.1">Artwork</a>: 
                </b>Hey, dig the artwork on <b>loonygames</b>? We're selling some 
                of the original art.</font></p>
              <p><!--#include virtual="/includes/shooters.htm" --></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><b><font color="#339900">Feedback:</font></b></font></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1">You've got 
                an opinion...voice it! Drop a line to our <a href="../../../feedback.1">Feedback</a> 
                column...you could end up with a free T-Shirt!</font></p>
              <p><font face="Arial, Helvetica, sans-serif" size="-1"><b><font color="#339900">Random 
                Feature :</font></b></font></p>
               
<p align="CENTER"><img src="../../images/thumbs/pok.jpg" width="96" height="96" align="MIDDLE"></p><p><font face="Arial, Helvetica, sans-serif" size="-1"><a href="../../1.41/feat/index.html">Put a Little Love in Your Pocket!</a>: Trying to understand <B>Pokemon</b>? Our loony editor got to the bottom of the GameBoy phenomenon.</font></p>

              <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>

            </td>
          </tr>
        </table>
      </td>
      <td width="428" height="936" align="LEFT" valign="TOP"> 
        <p align="center"><font face="Arial, Helvetica, sans-serif" size="+3" color="#0022A8">Bugs!</font></p>
        <p align="right"><font color="#804000"><b><font face="Arial, Helvetica, sans-serif">By 
          Jeff &quot;<a target="_self" href="mailto:jeff@solomania.com">nonick</a>&quot; 
          Solomon</font></b></font></p>
        <p align="RIGHT"> 
          <script language="JavaScript">

<!--
       function gotoSite(obj)
          {
          var s;
          s=obj.options[obj.selectedIndex].value
                         location.href=s;
          }
// -->

</script>
        </p>
        <p><font face="Arial, Helvetica, sans-serif">That we’ve 
          become so accustomed to buggy software is testimony to the fact that 
          the computer industry in general is still at a very underdeveloped and 
          frontier-like phase of existence. More established industries, like 
          consumer electronics and automobiles, operate in dramatically different 
          ways in regard to product failures.</font></p>
        <p></p>
        <p><font face="Arial, Helvetica, sans-serif">For one, 
          there are far fewer instances of &quot;buggy&quot; radios, toasters, 
          pens, or even cars. This is not to say that products in other industries 
          don’t malfunction or always ship in perfect condition. There are problems 
          with nearly every complex product on the market. However, these industries 

          typically take a more extensive and comprehensive approach to quality 
          assurance, and operate on timetables that allow them to take more time 
          to market for their products.</font></p>
        <p></p>
        <p><font face="Arial, Helvetica, sans-serif">In the computer 
          industry, where release dates are often set ambitiously and continuous 
          upgrades are the rule, there’s often less time to exhaustively test 
          a given title. It’s not that quality assurance is not taken seriously, 
          but rather, the basic nature of software is fluid. While a team of engineers 
          working on a new razor blade can sit back and relax for a while once 
          the product has been completed and sent to market, a software release 
          is little more than the process of officializing and distributing a 
          given version of source code. Once this happens, work often continues 
          on the product; new features are added, problems are fixed, and so forth. 
          There is, in other words, no single &quot;final product.&quot;</font></p>
        <p></p>
        <p><font face="Arial, Helvetica, sans-serif">Plus, in 
          this age of growing Net connectivity and user-savvy, companies often 
          assume that, if need be, they can distribute patches for buggy software. 
          For most other product types, this option doesn’t exist. A malfunctioning 
          product can either be repaired by a technician or recalled. Toaster 
          heater element 1.01, which fixes the spontaneous neutering problem with 
          1.0, will never be a reality.</font></p>
        <p></p>
        <p><font face="Arial, Helvetica, sans-serif">So, what 
          exactly <i>is</i> a software bug? It could be the result of a programmer’s 
          typo; a glitch that occurs when software is forced to run on hardware 
          that isn’t fully (or properly) supported; a problem that arises from 
          poor software design in general; or a zinger that pops up because designers 
          failed to ask enough &quot;what ifs?&quot;.</font></p>
        <p></p>
        <p><font face="Arial, Helvetica, sans-serif">All of these 
          scenarios count as bugs. Depending on who you talk to, you’ll get a 
          different answer as to a technical definition. Many developers, for 
          example, consider the phrase &quot;Y2K bug&quot; to be a misnomer because 
          the problem arises from an intentional decision to use the two digit 
          date system, as opposed to four. While this scenario can wreak havoc 
          when calculations extend beyond the year 2000 (or when a variety of 
          other situations occur), many people don’t consider the problem to be 
          a <i>bug</i>, per se, because it isn’t an unintentional failing on the 
          behalf of the developer. If, however, the Y2K problem was caused by 
          a compiler glitch, or something along those lines, then it would classify 
          as a bug according to this technical definition.</font></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">To most people, 
          however, it doesn’t matter what is causing the problem. Basically, from 
          a user’s perspective, anything that prevents a program from running 
          the way it’s supposed to can be classified as a bug.</font></p>
        <p align="JUSTIFY"></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">Likewise, 
          regardless of cause, anything that causes a program to malfunction needs 
          to be fixed. I spoke with designer Harry Teasley of Valve Software about 
          the issue, and he had some interesting things to say. My first line 
          of questioning revolved around the mechanics of dealing with bugs if 
          and when they appear. Basically, I wanted to hear about the process 
          that developers go through to test for, isolate, and fix bugs. Harry 
          told me in a very clear, concise manner. And now, he’ll tell you, too:</font></p>
        <blockquote> 
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif"><i>...bug finding is an 
            everyday thing in all game companies. People are constantly playing 
            the game, as new content is added, and in this constant playing, they 
            hit bugs. They get annoyed. A bug database gets added to, and the 
            people responsible for fixing the bug go through the database, and 
            do work in order to claim they fixed the bug. The bug is then sent 
            back to the person who reported it, for them to verify whether or 
            not it was indeed fixed.</i></font></p>
          <p><font face="Arial, Helvetica, sans-serif"><i>This happens a lot. 
            At a point somewhere within sight of the project deadline, product 
            features are locked, and the bug fixing begins in earnest. It becomes 
            the main focus of the development team, who divide their time between 
            playing the game looking for things to fix, looking for things that 
            were supposedly fixed, and fixing things. The bugs are prioritized, 
            and the Class A bugs, the crash bugs or progress-stopping bugs, are 
            fixed first. The rest are prioritized according to a variety of factors, 
            and are fixed as they can be.</i></font></p>
        </blockquote>
        <p align="JUSTIFY"></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">Me again. 
          The basic development process works almost like a building construction 
          project. The very early stages involve raw materials that in no way 
          resemble an actual building. Concrete, glass, plastic, and so forth. 
          Then, the fundamentals are put up: the basic structure, without windows, 
          doors, wires, or toilets. Once the &quot;skeleton&quot; is up, the construction 
          workers can actually move about inside the house and work on it from 
          a variety of angles. While it may not be pretty, you can start to see 
          the form of a building taking place. Eventually, after a good deal of 
          poking around, the building is finished.</font></p>
        <p align="JUSTIFY"></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">Software 
          development works in much the same way. A game begins as a collection 
          of parts that are constructed individually. For a while, the &quot;game&quot; 
          remains solely a collection of files that are slowly built up to a point 
          where they can finally be connected and executed in a rudimentary fashion. 
          At this point, the primary program files can be linked and, theoretically, 
          the game &quot;exists&quot; in a basic, rough form. The developers can 
          &quot;play&quot; the game, to some extent, and begin to iron out problems 
          and push it toward completion. From here on in, they’re poking and prodding, 
          trying to add polish and smooth out the rough edges.</font></p>
        <p align="JUSTIFY"></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">There isn’t 
          a magic moment when a software project is &quot;finished.&quot; Rather, 
          there is a period of time when the developers consider the program to 
          be &quot;feature complete,&quot; and focus their time solely on trying 
          to find problems that they had not anticipated. This process is especially 
          important for console games, which can’t be patched. If a Playstation 
          or Dreamcast game slips out the door with some serious problems, there 
          is little a company can do to solve them. Once again, Harry Teasley:</font></p>
        <p align="JUSTIFY"></p>
        <blockquote> 
          <p><font face="Arial, Helvetica, sans-serif"><i>On consoles, bugs are 
            much more of a pain, but they're also easier to handle. The game only 
            runs on one kind of hardware, and doesn't have to share with any other 
            programs, so you really know exactly what you're dealing with. Compared 
            to the uncertainty of hardware configurations in the PC world, it's 
            a paradise.</i></font></p>
          <p><font face="Arial, Helvetica, sans-serif"><i>Bug fixing is more intense, 
            though, because once a game is submitted for testing at the console 
            manufacturer, it had best not have any bugs or the consequences are 
            more dire than on the PC. Games enter a queue, and get rigorously 
            tested for 90 days or so, and if anything is found that needs to be 
            fixed, it gets kicked out of the queue and has to be resubmitted, 
            and start the 90 days of testing all over again, regardless of how 
            far it got the first time through. A perfectly rational system, but 
            it can also be very nerve-wracking, and expensive.</i></font></p>
          <p><font face="Arial, Helvetica, sans-serif"><i>That kind of zero-tolerance 
            for bugs attitude can only work on platforms where the hardware is 
            invariant and there is no ability to self-publish software (the console 
            manufacturer approves all games for publication, and controls production.)</i></font></p>
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif">So, if you’ve ever wondered 
            why it seems like console games are less buggy than their PC cousins, 
            now you know. They test those games more extensively, and the developers 
            have fewer variables to work with in regard to compatibility.</font></p>
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif">Some day, hopefully, the 
            PC landscape will advance and simplify a bit to the point where game 
            developers don’t have to fret as much about the &quot;Wild West&quot; 
            of system configurations and hardware interfaces. This panacea may 
            come in the form of a more streamlined approach to operating system 
            design, or in some other initiative brought about by the recent onslaught 
            of open source &quot;let’s make PCs work right, already&quot; projects.</font></p>
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif">Until then- and even after 
            something like that- we’ll have to live with the fact that almost 
            all software is going to have bugs. The real solution lies in the 
            approach developers and distributors take to fixing them. As the computer 
            industry matures and advances, it’s inevitable that companies will 
            be held more accountable for flaws that are found in their products. 
            Most people are simply unwilling to accept the fact that software 
            bugs are commonplace, and many don’t have the patience or means to 
            patch their software.</font></p>
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif">At the same time, software 
            distribution will continue to advance to the point where most programs 
            are delivered- and even maintained- automatically through the Internet. 
            The Windows Update feature in Windows 98- for all of the flack it 
            gets- is a good example of initiatives that are being taken to create 
            software that is &quot;self-healing.&quot; Eventually- hopefully- 
            bugs will be fixed automatically.</font></p>
          <p>&nbsp;</p>
        </blockquote>
        <p><font face="Arial, Helvetica, sans-serif">On a final note, I’d like 
          to cut through the gloom and doom and bring Harry back to comment on 
          one of his &quot;favorite&quot; bugs. Fortunately, not all bugs are 
          evil:</font></p>
        <blockquote> 
          <p>&nbsp;</p>
          <p><font face="Arial, Helvetica, sans-serif"><i>A favorite bug of mine 
            was in a Harrier flight sim MicroProse did several years ago: you 
            could hover upside down and drop bombs into space. There was some 
            hemming and hawing about how &quot;we don't need to fix that, no one 
            would ever try to do it, anyway,&quot; but I believe more rational 
            folks prevailed. One thing you learn very quickly is that the things 
            you are certain players will never discover get reported on the fan 


            pages within 48 hours of the game hitting the stores.</i></font></p>
        </blockquote>
        <p align="JUSTIFY"></p>
        <p align="JUSTIFY"><font face="Arial, Helvetica, sans-serif">We all know 
          the truth in that.</font></p>
        <p align="RIGHT">&nbsp; </p>
        <p align="RIGHT"><font face="Arial, Helvetica, sans-serif" size="-1"><i>- 
          Jeff Solomon is a regular contributor to loonygames.</i></font></p>
        <p align="RIGHT">&nbsp;</p>
        <p></p>
        <p align="RIGHT">&nbsp;</p>
      </td>
    </tr>
  </table>
  </div>
<map name="map">
  <area shape="rect" coords="32,38,226,76" href="../../../index.html" target="_self">
  <area shape="rect" coords="12,79,125,94" href="http://www.bluesnews.com" target="_self">
 
</map>
<table border="0" width="600" align="CENTER">
  <tr> 
    <td><i><font face="Arial, Helvetica, sans-serif" size="-2"><b>Credits:</b> 
      Illustration &copy; 1999 Dan Zalkus. Bugs! is &copy; 1999 Jeff Solomon. 
      All other content is &copy; 1999 <a target="_self" href="http://www.loonyboi.com">loonyboi 
      productions</a>. Unauthorized reproduction is strictly prohibited, so don't 
      try it...we've got insecticide, baby.</font></i></td>
  </tr>
</table>
</HTML>
