<?xml version="1.0" encoding="utf-8"?>
<feed
  version="0.3"
  xml:lang="en-GB"
  xmlns="http://purl.org/atom/ns#">
  <title>Acorn Arcade (Atom 0.3 feed)</title>
  <link
    rel="alternate"
    type="text/html"
    href="http://www.acornarcade.com/"
    title="Acorn Arcade"
   />
  <author>
    <name>Richard Goodwin</name>
    <url>http://www.houseofmabel.com/</url>
  </author>
  <tagline>Gaming news and views</tagline>
  <id>http://www.acornarcade.com/rss-atom03.php</id>
  <copyright
    type="text/plain"
    mode="escaped">(c) Acorn Arcade 2008.  All rights reserved.</copyright>
  <modified>2008-05-16T04:57:05Z</modified>

  <entry>
    <title
      type="text/plain"
      mode="escaped">Happy Birthday from Acorn Arcade!</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1171.html"
      title="Happy Birthday from Acorn Arcade!" />
    <author>
      <name></name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1171.html</id>
    <modified>2008-01-29T00:00:00Z</modified>
    <issued>2008-01-29T00:00:00Z</issued>
    <created>2008-01-29T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped"></summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><div style="text-align:justify;"><br />But whose birthday is it?</p><p>It's ours, of course!<div align="center"><img src="/images/aa10/title.jpg" title="Acorn Arcade 10th"/></div><p>Ten years ago today, Acorn Arcade officially opened to the public, as <a href="http://groups.google.co.uk/group/comp.sys.acorn.games/tree/browse_frm/thread/357bb5bc8d43ba5b/4311272d4140f35d?rnum=1&amp;hl=en&amp;_done=%2Fgroup%2Fcomp.sys.acorn.games%2Fbrowse_frm%2Fthread%2F357bb5bc8d43ba5b%2F99480da9ff35debf%3Flnk%3Dst%26q%3D%26rnum%3D3%26hl%3Den%26" target="_blank">this handily-archived newsgroup posting</a> shows. With Alasdair Bailey and Graham Crockford at the helm the site soon increased in popularity enough to warrant moving to its own domain name, <a href="http://www.acornarcade.com/" target="_blank">acornarcade.com</a>, and eventually to its own dedicated server, owned by our benevolent dictator Rich Goodwin. A few years later Acorn Arcade <a href="http://www.iconbar.com/Welcome_to_The_Icon_Bar/news1.html" target="_blank">gave birth to The Icon Bar</a>, which then in an ironic turn of events <a href="http://www.iconbar.com/Icon_Bar_and_Acorn_Arcade_relaunch/news1087.html" target="_blank">absorbed the content of Acorn Arcade in late 2006</a>, in order to give both sites a much-needed overhaul.</p><p>But what does all this mean?</div> <div style="text-align:justify;"><br /><a href="/images/aa/Cert.gif" alt="We am de best!" target="_blank"><br /><img align="right" src="/images/aa10/award.gif" title="We am de best!" alt="We am de best!" border="5"/></a>Well, despite the fall of Acorn, changing home, giving birth, and then getting eaten by our child, the <a href="/images/aa/Cert.gif" target="_blank">award-winning</a> Acorn Arcade is still here, and we hope that we'll be able provide you with news, reviews, downloads, help and support for at least another 10 years, even if we're not posting as many articles as we used to.</p><p>And speaking of articles, we've got a little surprise for you. When migrating Acorn Arcade's content into The Icon Bar's new article system we found a couple of folders on the server that looked like they hadn't been touched in years. And inside those folders we found some relics from times past - Acorn Arcade news archives stretching back to April 1998, and previews of MicroDigital's Mico and Acorn's ill-fated Phoebe machines. Since we were on a tight launch schedule for the new-look Icon Bar, the decision was made to hold these old articles back. After all, no-one except us knew about them. Predictably, we promptly forgot about the forgotten folders, until the topic of our 10th anniversary popped up in the staff forum. Luckily we were able to take a break from our rigorous schedule of <a href="http://steamcommunity.com/groups/iconbar" target="_blank">procrastinating podcast 6</a> in order to import the articles in time for today.</p><p>Also, with a little help from the <a href="http://web.archive.org/" target="_blank">Internet Archive Wayback Machine</a>, we've managed to get a couple of screen shots of previous designs of the site, which you may find interesting. Or not.<div align="center"><a href="/images/aa10/wood.png" alt="Wooden design" target="_blank"><img src="/images/aa10/wood.jpg" title="Wooden design" alt="Wooden design"/></a> <a href="/images/aa10/metal.png" alt="Metal design" target="_blank"><img src="/images/aa10/metal.jpg" title="Metal design" alt="Metal design"/></a></div><p> <h2>Forgotten news archives</h2><p><table><tr><th>1998</th><td><a href="/articles/News_archive_Pre-July_1998/news1196.html">Pre-July</a></td><td><a href="/articles/News_archive_July_1998/news1191.html">July</a></td><td><a href="/articles/News_archive_August_1998/index1187.html">August</a></td><td><a href="/articles/News_archive_September_1998/news1197.html">September</a></td><td><a href="/articles/News_archive_November_1998/news1195.html">November</a></td><td><a href="/articles/News_archive_December_1998/news1188.html">December</a></td></tr><tr><th>1999</th><td><a href="/articles/News_archive_January_1999/index1190.html">January</a></td><td><a href="/articles/News_archive_February_1999/news1189.html">February</a></td><td><a href="/articles/News_archive_March_1999/news1193.html">March</a></td><td><a href="/articles/News_archive_May_1999/index1194.html">May</a></td><td><a href="/articles/News_archive_June_1999/news1192.html">June</a></td><td><a href="/articles/Acorn_games_news/news1172.html">July-November</a></td></tr></table><h3>Forgotten previews</h3><p><a href="/articles/Phoebe_iunveiledi/news1170.html">Alasdair's Phoebe preview</a><br /><a href="/articles/Mico_User/news1167.html">Foggy's Mico preview</a> <br /><a href="/articles/ChopX_Preview/news1176.html">ChopX Preview</a><br /><a href="/articles/King_and_Country_Preview/news1180.html">King and Country preview</a> <br /><a href="/articles/Super_Snail_2_Preview/index1184.html">Super Snail 2 preview</a> <br /><a href="/articles/Toy_Chronicles_Preview/news1185.html">Toy Chronicles preview</a> <br /><a href="/articles/Wubble_Preview/index1186.html">Wubble preview</a> <h3>Other forgotten articles</h3><p><a href="/articles/ART_thingy_-_Who_are_these_strange_people/news1173.html">ART thingy - Who are these strange people?</a> <br /><a href="/articles/ART_Attack/news1174.html">ART attack</a> <br /><a href="/articles/ChiBER_RISC_OS_in_a_PC_box/news1175.html">ChiBER - RISC OS in a PC box</a> <br /><a href="/articles/Whats_happening_on_csag/news1177.html">What's happening on csag?</a> <br /><a href="/articles/Doom_and_Heretic_Updates/news1178.html">Doom and Heretic Updates</a> <br /><a href="/articles/Heretic_upgrades/news1179.html">Heretic upgrades</a> <br /><a href="/articles/Midlands_show_report/news1181.html">1998 Midlands show report</a> <br /><a href="/articles/NetStation_Gaming_update/news1182.html">NetStation gaming update</a> <br /><a href="/articles/PushyII_for_the_PlayStation/news1183.html">PushyII for the PlayStation</a></div></p><p><a href="http://www.acornarcade.com/comments/rss/news1171.html">9 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Merry Christmas from The Icon Bar!</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1166.html"
      title="Merry Christmas from The Icon Bar!" />
    <author>
      <name>Andrew C. Poole</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1166.html</id>
    <modified>2007-12-25T00:00:00Z</modified>
    <issued>2007-12-25T00:00:00Z</issued>
    <created>2007-12-25T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Well it's that time of year again. It hardly seems like a full year since we last wished all our readers a very Merry Christmas. Yet again, most of you are probably too busy downing the bottle of whatever-it-is that you found in the back of the cupboard, and stuffing yourself with mince pies to notice this post, but I'm still going to say it anyway.</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><img src="http://www.iconbar.com/tibtheme/default/logos/xmas_hills.gif" align="right" alt="[TIB Christmas Logo]" style="background:#aaaaff;" />Well it's that time of year again. It hardly seems like a full year since we last wished all our readers a very Merry Christmas. Yet again, most of you are probably too busy downing the bottle of whatever-it-is that you found in the back of the cupboard, and stuffing yourself with mince pies to notice this post, but I'm still going to say it anyway.</p><p>Merry Christmas to all our readers, and we hope you have a wonderful new year - whatever you're doing and however you're celebrating.</p><p><b>Links:</b><br /><a href="http://en.wikipedia.org/wiki/Christmas">Christmas</a> (Wikipedia)</p><p><a href="http://www.acornarcade.com/comments/rss/news1166.html">1 comment in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">SDL port of Asylum released</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1163.html"
      title="SDL port of Asylum released" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1163.html</id>
    <modified>2007-07-09T20:30:00Z</modified>
    <issued>2007-07-09T20:30:00Z</issued>
    <created>2007-07-09T20:30:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Hugh Robinson has contacted us to let us know that he's converted classic Acorn platformer Asylum to C, using the SDL library. With full support of original author Andy Southgate, Hugh's source code has now been released under the GPL, and is available to download from the SVN repository on the SourceForge project page.</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><img src="/news/images/asylum.gif" align="right"/>Hugh Robinson has contacted us to let us know that he's converted classic Acorn platformer <a href="http://asylum.acornarcade.com/">Asylum</a> to C, using the <a href="http://www.libsdl.org/">SDL</a> library. With full support of original author Andy Southgate, Hugh's source code has now been released under the GPL, and is available to download from the SVN repository on the <a href="http://sourceforge.net/projects/sdl-asylum/">SourceForge project page</a>.</p><p>Although a quick look at the source suggests to me that it's fully converted, there are still some bugs and compatability issues to sort out, so feel free to send any fixes Hugh's way if you manage to get the game running. Although the source to Asylum has been available on <a href="http://asylum.acornarcade.com/">asylum.acornarcade.com</a> for a few years now, this is the first known port of it to any other platform (and could potentially form the basis of a back-port to RISC OS, to produce a fully 32bit compatible version).</p><p><a href="http://www.acornarcade.com/comments/rss/news1163.html">3 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Oldschool Reviews - LASER</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1156.html"
      title="Oldschool Reviews - LASER" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1156.html</id>
    <modified>2007-04-09T08:00:00Z</modified>
    <issued>2007-04-09T08:00:00Z</issued>
    <created>2007-04-09T08:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">I figured it was about time for another oldschool review. This time I'll be talking about LASER, a game written by Mike Goldberg (and his cat) as part of his series of graphics programming articles in Acorn Computing magazine. The game was released on the subscription disc for the February 1994 issue of the magazine, along with a level editor so users could make their own puzzles.</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><a href="/news/images/oldschool/laser1.png" target="_blank" alt="LASER"><img src="/news/images/oldschool/laser1sm.png" width="120" height="118" align="right" alt="LASER"/></a>I figured it was about time for another oldschool review. This time I'll be talking about LASER, a game written by Mike Goldberg (and his cat) as part of his series of graphics programming articles in Acorn Computing magazine. The game was released on the subscription disc for the February 1994 issue of the magazine, along with a level editor so users could make their own puzzles.</p><p> <h3>The introduction</h3><blockquote>Eek! There appears to be a problem with the Sheepwell reactor - it keeps going critical and in hot weather melts down. You play the role of "Chin-up" Bill in his Laserdrive - the only man who can stop potential catastrophe by firing a laser bolt directly into the heart of the reactor thus causing a controlled(!) destruction of the whole plant. Of course it's not as easy as that as the reactor is protected by concrete blocks - some immoveable, others you can destroy with your laser. You'll have to deflect the laser round the blocks by strategic placing of mirrors which are not only portable but rotateable.</blockquote>Being a free game, the title screen isn't particularly snazzy, but it does get the point across, and features some of Mag's artwork. The screen has a simple two-frame animation for the background image, and the "LASER by MAG &amp; CAT" strapline scrolls across the bottom, leaving a trail behind via the magic of EOR plotting. After a few seconds the title vanishes, taking you straight to the action of the game.</p><p>Enough of the title screen, then. What about the game?<h3>The game</h3><p><a href="/news/images/oldschool/laser2.png" target="_blank" alt="The game"><img src="/news/images/oldschool/laser2sm.png" width="144" height="112" align="right" alt="The game"/></a>If you haven't worked it out yet, LASER is a game about lasers, mirrors, radioactive sheep, and the soon-to-explode Sheepwell reactor. The action is fairly simple - You have to navigate the maze-like level and position the mirrors so that you can fire a laser into the heart of the reactor before the time limit is reached. The problem lies in that you can only fire the laser from "safe" zones (those without the radiation hazard symbol), and there are both destructible and indestructible walls in the way as barriers. And the occasional two-headed sheep.</p><p>If you run out of time you are rather unceremoniously returned to the first level, but since there are only 8 levels in total, it isn't too much of a nuisance to have to redo them. Although the first few levels can be done on your first run through, the last few are quite tricky.</p><p>Although fairly attractive, the graphics for the game are also fairly simple. Having said that, the game is designed to run on the lowest common denominator (it will probably run on a 512K machine at a push), and the lack of detailed character animation (e.g. for moving between map squares) doesn't detract from the gameplay. Similarly, the sound effects are simple, yet effective, and there is no background music.<h3>The extras</h3><p><a href="/news/images/oldschool/laser3.png" target="_blank" alt="The editor"><img src="/news/images/oldschool/laser3sm.png" width="160" height="128" align="right" alt="The editor"/></a>As previously mentioned the game also comes with a level editor, which allows you to create your own levels (as well as take sneak peaks at the default ones). As with the game the editor is a simple single-tasking affair, using the keyboard to create and edit levels. You also get a few "cheat sheets", showing solutions to the last 4 levels of the game.<h3>The verdict</h3><p>LASER is a fun little game, one deserving its five minutes of fame on the Internet. Unfortunately it hasn't aged too well, and plays a bit fast on modern machines. Luckily all the code is written in BASIC, so apart from serving as a tutorial for writing simple BASIC games, it's also quite easy to slow the game down if it plays too fast for you.</p><p><a href="http://www.acornarcade.com/comments/rss/news1156.html">5 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Bob and Trev: Resurrection: Just in time</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1148.html"
      title="Bob and Trev: Resurrection: Just in time" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1148.html</id>
    <modified>2007-03-17T00:15:00Z</modified>
    <issued>2007-03-17T00:15:00Z</issued>
    <created>2007-03-17T00:15:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Previously, on Bob and Trev: Resurrection...</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><img src="/news/uploaded/batr6.png" width="178" height="171" alt="498 bytes free memory" title="498 bytes free memory" align="right"/><a href="/articles/Monster_AI/index1140.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote>Game over, man</p><p>The competition is nearly at an end, which can only mean one thing - tomorrow's article will be the conclusion, and will (hopefully!) feature a copy of the game to download.</blockquote>...<a href="http://www.phlamethrower.co.uk/riscos/batr.zip">and here it is</a>.</p><p> <h3>Does it work?</h3><p>Um, I think so. After not having quite as much time as I liked to get it finished and balanced today, I then remembered at 11:30 that I hadn't tested the exploding weapons yet. And then spent an age trying to work out why it wasn't working. It turns out I hadn't been very careful with my variable names, and some of the screen output code was overwriting variables which were being used to track what's in range of the explosion. Which made for an interesting round of debugging, where code which used to do <i>something</i> suddenly decided to get stuck in an infinite loop.</p><p>As such, I haven't been able to play the game to completion, or do enough playtesting to get the balancing right. And with my current screen telling me I have 498 bytes of RAM spare, I'm not even sure if the game will make it all the way to the end.</p><p>Now, please excuse me while I go outside and have a heart attack.</p><p><a href="http://groups.google.co.uk/group/rec.games.roguelike.announce/msg/04ace0c3731871e2">r.g.r.a release announcement</a><br /><a href="http://groups.google.co.uk/group/rec.games.roguelike.development/browse_thread/thread/be1f1c4fa1aae527/7f8b1ecdd3e3a64a#7f8b1ecdd3e3a64a">Original r.g.r.d thread</a><br /><a href="http://www.phlamethrower.co.uk/riscos/batr.php">Game web page</a>, with source available for viewing online</p><p><a href="http://www.acornarcade.com/comments/rss/news1148.html">19 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Monster AI</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1140.html"
      title="Monster AI" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1140.html</id>
    <modified>2007-03-16T00:00:00Z</modified>
    <issued>2007-03-16T00:00:00Z</issued>
    <created>2007-03-16T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Previously, on Bob and Trev: Resurrection...</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><a href="http://www.iconbar.com/articles/Combat/index1139.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote>Next time I'll be talking about monster AI. I'm not going to be creating an Einstein, but I will be able to talk about a few of the basic features I'm hoping to implement.</blockquote>But before I talk about monster AI, I might as well take the time out to talk about the time system that the game will use. Also, I don't have much other material for this article.</p><p> <h3>Time</h3><p>Just like with the combat system, I haven't really looked at roguelike time systems before. Obviously I know what the outcome is - some monsters move more often than the player, and others move less - but I don't know the exact mechanic or formulae behind it.</p><p>For <b>Bob and Trev: Resurrection</b>, the choice of time keeping system was fairly simple. The game would have a global 'turn counter', and the <i>speed</i> attribute of the monsters and player would determine how often they move. A proper roguelike time system would likely give each monster an internal timer, which counts down how many ticks are left until the monster can next move; this would allow certain actions to take more time to complete (or recover from) than others. But with memory an issue, I decided to go for an approach that only relies on the global clock:</p><p><tt>IF (time MOD speed)=0 THEN move</tt></p><p>Simple in design, and on the surface quite effective. However it won't correctly handle cases where the speed of a monster changes (i.e. a monster which slows down may get its next turn a lot sooner than it should), and depending on the scale of the time and speed values, a small change in speed may have a dramatic effect on how fast a monster moves (i.e. changing speed from 2 to 1 will cause a monster to move twice as fast).<h3>Goal-based AI</h3><p>Goal-based AI is a simple and effective method to make nasties in computer games more interesting. Each AI has a set of goals it can choose between (such as attacking the player or running away). The AI will stick with its current goal until such a time that it completes it, or deems another goal to have a higher priority. For <b>Bob and Trev: Resurrection</b>, I'm aiming to include four basic goals:<ul><li>Attack the player</li><li>Run away from the player</li><li>Collect items</li><li>Wander aimlessly</li></ul>For most monsters, the initial state will be "wandering aimlessly." But on seeing or being attacked by the player, the monster will switch to one of the other states - most probably the attack state. While in the attack state it will seek to get closer to the player, either (a) until it's within weapons range, or (b) until it's in an optimal fighting position. (b) is more complex, as it would include calculations such as trying to find a space where the monster can attack the player but the player cannot attack the monster.</p><p>If the player succeeds in damaging the monster to a certain threshold, or the player is significantly more powerful than the monster, the monster may opt to run away. There are many possibilities for a "run away" algorithm, but not all of them are simple enough to be suitable for BASIC running on a 32k BBC.</p><p>Similarly, there are many possibilities for a "collect items" goal. A monster could examine its surroundings and seek out the item it will find most helpful - such as weapons or armour. In reality I may not have the time to implement this fully, so a simple "move to nearest item and collect it" approach may be taken.<h3>Game over, man</h3><p>The competition is nearly at an end, which can only mean one thing - tomorrow's article will be the conclusion, and will (hopefully!) feature a copy of the game to download.</p><p><a href="http://www.acornarcade.com/comments/rss/news1140.html">No comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Combat</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1139.html"
      title="Combat" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1139.html</id>
    <modified>2007-03-15T00:00:00Z</modified>
    <issued>2007-03-15T00:00:00Z</issued>
    <created>2007-03-15T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Previously, on Bob and Trev: Resurrection...</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><a href="/articles/Visibility_and_pathfinding/index1136.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote>Next time I will be tackling combat. Having never written a roguelike combat system before, it will be an interesting exercise in deciding how mechanics such as strength and armour class will work, and attempting to get the numbers right first-time to reduce the amount of balancing required.</blockquote>Forsight, there.</p><p>Combat is an important aspect of all roguelikes. But having never looked at a roguelike combat engine in detail before, I don't really know much about how they work. Monsters have strength, dexterity, and armour class attributes, but how do those translate into how hard the monster hits with a weapon?</p><p>Note that a lot of the values and equations presented in this article aren't set in stone yet, and will require tweaking during play-testing. But hopefully I'll be able to shed some light on the different aspects of combat, and the thought processes involved in creating a balanced combat system.</p><p> <h3>Attributes</h3><p><i>Bob and Trev: Resurrection</i> has the following attributes that affect combat:<ul><li>Mass</li><li>Bludgeon multiplier</li><li>Bludgeon range</li><li>Properties: Explosive, sharp, etc.</li><li>Firing range</li><li>Armour class</li><li>Hitpoints</li><li>Strength</li><li>Dexterity</li></ul>Some of these attributes only apply to the attacker, some to the defender. Others apply to the weapon that is being used. But at its simplest, combat can be broken down into the following stages:<ol><li>Deciding if the target gets hit</li><li>Deciding how much force the target gets hit by</li><li>Deciding how much damage (in terms of hitpoints) that force inflicts on the target</li></ol><h3>Deciding if the target gets hit</h3><p>At its simplest, this involves comparing the dexterity of the attacker and the defender. If the attacker is more dexterous than the defender, he has a higher chance of hitting, and vice-versa. But wielding a weapon should also affects dexterity. And how do you measure the dexterity of a copy of Disk Duplicator 285 that's been launched at the player from a 5.25" floppy disc drive?</p><p>Time pending, I may design a system that takes all these factors into consideration. But for now, I'm sticking with the KISS approach:</p><p><tt>hitratio=(yourdexterity-theirdexterity)/10+0.5</tt></p><p>If the difference between your dexterity value and your targets dexterity is 5 or less, the above formula will return a value between 0 and 1, representing the chance of hitting the target. The result of RND(1) will then be compared against this value, to find out whether you do hit or not. If your dexterity is more than 5 points away from your target, it will result in one of two outcomes - always hitting, or not hitting at all.</p><p>Also of note is the <i>bludgeon range</i> attribute - this dictates the range of a wielded weapon. Mice and keyboards have long cords attached, so allow you to attack monsters more than 1 square away from you.<h3>Calculating the force</h3><p>This, thankfully, is quite simple. And is actually based around real science, instead of a load of madeup voodoo, like pretty much everything else.</p><p>Firstly, we can assume that the force the attacker is exerting on his weapon is proportional to his strength. We can also assume that the distance he moves his weapon before it hits his target is fixed - let's say a nice round 1 meter. Plugging these values into a few simple physics formulae gives the following result for the acceleration of the weapon:</p><p><tt>acceleration = strength*fcoef/mass</tt></p><p>(Where <tt>fcoef</tt> is a magical, to-be-decided value that will scale the strength of a monster into a force value)</p><p>Now that we have our acceleration, we need to work out how fast the weapon will strike its target. The <a href="http://www.glenbrook.k12.il.us/GBSSCI/PHYS/Class/1DKin/U1L6a.html">kinematic equations</a> come to the rescue at this stage, boldly stating that:</p><p><tt>v<sub>f</sub><sup>2</sup> = v<sub>i</sub><sup>2</sup>+2*a*d</tt></p><p>Rearranged and with our acceleration formula, this gives, for v<sub>f</sub>:</p><p><tt>velocity = sqrt(2*strength*fcoef/mass)</tt></p><p>And finally, one further equation (<tt>momentum=mass*velocity</tt>) will tell us how much kinetic energy, and thus how much force, the weapon will strike its target with:</p><p><tt>momentum = mass*sqrt(2*strength*fcoef/mass)</tt></p><p>But not all weapons are created equal. Weapons with sharp edges will undoubtedly do more damage, and a more rigid weapon will do more damage than a floppy one. Hence the introduction of the <i>bludgeon multiplier</i> - the momentum of the weapon is multiplied by this value to give the actual force of impact.</p><p>Also, the weapons which are flagged as bladed have a chance of doing extra damage - but the chance of doing this damage, and the amount of extra damage performed, is yet to be decided.</p><p>Also, you'll note that (apart from bladed weapons) the force of impact isn't particularly random. To fix this, I've merely added a random factor to <i>fcoef</i> (and factored in the 2 from the kinematic equation). The exact limits of this random factor are still yet to be decided.<h3>Calculating the damage</h3><p>So, we've determined that the target is going to get hit, and how much force he is getting hit with. Now we need to translate that to a hitpoint value we can remove from his health. The amount of damage reduction is related solely to the targets armour class. The higher the armour class value, the less damage should be done. Particularly, I'm after some nice curve that will cause weapons to do 100 damage to a creature with an AC of 0, and 0 damage to a creature with an AC of infinity. After a bit of cogitating, and messing around with one formula, I arrived at a completely different formula:</p><p><tt>damage = damage*a^(AC^b)</tt></p><p>By changing <i>a</i> and <i>b</i>, I can chance the characteristics of the damage curve. <i>a</i> can range from 1 to 0, and controls the curviness of the curve. <i>b</i> can be pretty much any positive number, and higher numbers will compress the curve further.</p><p>The only problem with the formula is that if <i>b</i> is even, a negative armour class will have the same performance as a positive armour class. This is bad, since it's potentially possible for the player to get stuck wearing cursed armour that gives him a negative AC - and I'd either want the formula to return 1, or some value above 1 to amplify the amount of damage he receives.</p><p>Also, if <i>b</i> isn't an integer, the result for AC 0 is undefined (Or, as BASIC puts it, "Logarithm range at line XX"). But that case (along with negative AC values) can easily be catered for with an IF statement.</p><p>After a bit of fiddling, I decided on some initial values for <i>a</i> and <i>b</i> - 0.95 and 1.3 respectively.<h3>Calculating the muzzle velocity of a 5.25" floppy disc drive</h3><p>Weapons which can take and fire ammo have a <i>range</i> attribute, dictating how far the ammo is fired. But how fast does the ammunition travel?</p><p>To start with, we can assume that the effect of air resistance on the projectile is negligible - i.e. the only force acting on it while it is airborne is that of gravity. We can also assume that all weapons are fired from the same height (Which we'll just say is 1 meter to make the calculations simpler). And by using another kinematic equation, we can find out how long it will take an object dropped from a height of 1 meter to hit the ground:</p><p><tt>d = v<sub>i</sub>*t+1/2*a*t<sup>2</sup><br />1 = 0+1/2*10*t<sup>2</sup><br />t = sqrt(5) =~ 2.23</tt></p><p>So, no matter what range a projectile has, we know it has a maximum flight time of around 2.23 seconds. We can then calculate the velocity, and thus the momentum, of the projectile by using the old stalwart <tt>speed=distance/time</tt> (Completely ignoring the effect of gravity on the velocity, of course).</p><p><tt>momentum = mass*range/2.23</tt></p><p>In reality, the 2.23 will probably need tweaking a bit, either to increase or decrease the effectiveness of firing ammo compared to just walking up to someone and hitting him with it.</p><p>For manually thrown objects, the situation is pretty much the same. However, the distance thrown needs to be calculated from the strength of the attacker and the mass of the projectile; using a formula which I'm yet to deduce.<h3>Next time</h3><p>...I'll be talking about monster AI. I'm not going to be creating an Einstein, but I will be able to talk about a few of the basic features I'm hoping to implement.</p><p><a href="http://www.acornarcade.com/comments/rss/news1139.html">7 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">Visibility and pathfinding</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1136.html"
      title="Visibility and pathfinding" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1136.html</id>
    <modified>2007-03-14T00:00:00Z</modified>
    <issued>2007-03-14T00:00:00Z</issued>
    <created>2007-03-14T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Previously, on Bob and Trev: Resurrection...</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><a href="/articles/The_level_generator/index1135.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote>...</blockquote>Yeah, looks like I forgot to write anything to lead onto this article.</p><p>Anyhoo, this article will be discussing visibility and pathfinding. Both are important aspects of many roguelikes, and both have some important implementation issues to try and overcome. Line-of-sight algorithms are a popular topic on <a href="http://groups.google.co.uk/group/rec.games.roguelike.development/">rgrd</a> - right now I can see two threads talking about LOS algorithms, and know of at least one other that talks about them.</p><p> <h3>Line of sight</h3><p>A roguelike typically uses a line-of-sight algorithm to calculate what the player can see, what monsters can see, and what should get hit by any area-of-effect events such as explosions. There are many different algorithms available, from brute-force ray casting, to the more optimised <a href="http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shadowcasting">recursive shadow casting</a>, or <a href="http://roguebasin.roguelikedevelopment.org/index.php?title=Extremely_fast_simplified_LOS">highly-specialised routines which rely on certain dungeon layouts</a>. Although fast routines obviously run faster, they are also likely to take more memory - either in terms of code or data. Since I initially thought my largest enemy was code size, I started off with a brute-force ray caster.<h3>The algorithm</h3><p>The algorithm scans from the player outwards, in the shape of a series of concentric squares, as follows:</p><p><!-- <tt>6666666666666<br />6555555555556<br />6544444444456<br />6543333333456<br />6543222223456<br />6543211123456<br />654321@123456<br />6543211123456<br />6543222223456<br />6543333333456<br />6544444444456<br />6555555555556<br />6666666666666</tt> -->
<style type="text/css">
.d6 {color: #aaa}
.d5 {color: #888}
.d4 {color: #666}
.d3 {color: #444}
.d2 {color: #222}
.d1 {color: #000}
.d0 {color: #f00}
.visblock tt {font-size:1.2em;font-weight: bold;}
</style>

<span class="visblock"><tt><span class="d6">6666666666666</span><br />
<span class="d6">6</span><span class="d5">55555555555</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">444444444</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3333333</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3</span><span class="d2">22222</span><span class="d3">3</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3</span><span class="d2">2</span><span class="d1">111</span><span class="d2">2</span><span class="d3">3</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3</span><span class="d2">2</span><span class="d1">1</span><span class="d0">@</span><span class="d1">1</span><span class="d2">2</span><span class="d3">3</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3</span><span class="d2">2</span><span class="d1">111</span><span class="d2">2</span><span class="d3">3</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3</span><span class="d2">22222</span><span class="d3">3</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">4</span><span class="d3">3333333</span><span class="d4">4</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">5</span><span class="d4">444444444</span><span class="d5">5</span><span class="d6">6</span><br />
<span class="d6">6</span><span class="d5">55555555555</span><span class="d6">6</span><br />
<span class="d6">6666666666666</span></tt></span>
</p><p>For each square in the sequence, a line is traced from the player to each point on the edge of the square. If the line makes it all the way to the end without hitting a solid object, the square is marked as being visible. So far, this is the same as a regular brute-force algorithm, apart from using a radial scanning order. The optimisation I've applied relies on this new scan order - for each radius, a set of flags are kept, indicating, for each side of the square, whether there was any tile that was visible. If no tile was visible on that edge during the previous iteration, then the algorithm assumes that no tile will be visible this time, either. When it reaches the state of no tiles being visible on any of the edges, the algorithm will terminate.</p><p>So far I've only using simple floating-point differentiation to walk trace the lines. A more advanced routine would use <a href="http://roguebasin.roguelikedevelopment.org/index.php?title=Breshenham's_Line_Algorithm">Bresenham's algorithm</a>, which will be many times faster. But, I suspect, not fast enough - the floating point version takes around 40-60 seconds to run on a BBC. And since it has to be performed after every movement the player makes, it's obviously far too slow for a playable game.<h3>Visibility, MK 2</h3><p>After panicing for a while and debating whether to change to another algorithm or produce an assembler version of the current one (most likely post-challenge), I came to my senses and realised there was a much simpler approach I could take. My dungeon (currently) consists of a series of rectangular rooms. If I treat doors as vision blockers (even when they're open), then the player's visibility will be limited to just the room that he's in. This means two things:<ol><li>Visibility information only needs to be recalculated when the player changes rooms (i.e. moves outside the currently visible area)</li><li>Calculating what's visible is just a case of finding the bounds of the current room</li></ol>Unfortunately the map generator disposes of the room list after it's finished making the map, so there's no direct way of finding the coordinates. But since the rooms are (currently) rectangular, finding their bounds is just a case of tracing 4 lines out from the player in the 4 cardinal directions. There are a couple of situations where the algorithm gets fooled into producing the wrong results (e.g. if the player moves from a visible door to an invisible door - instead of providing visibility for one whole room, it will provide visibility for half of two rooms), but overall the tradeoff was worth it. Now in its fully optimised state, it only takes 3-10 seconds to change room. 90% of that time is spent in screen updates, so the delay isn't too bad - it's clear to the user that the computer is doing something and hasn't hanged.<h3>Pathfinding</h3><p>Pathfinding will be used for monster movement. Without pathfinding, the monsters won't be able to follow the player very well if he tries running away. There are basically three approaches available to me:</p><p><table><tr><td>Algorithm</td><td>Accuracy</td><td>Speed</td><td>Memory usage</td><td>Code size</td></tr><tr><td><a href="http://en.wikipedia.org/wiki/A*">A*</a></td><td>Perfect</td><td>Medium</td><td>High</td><td>Low</td></tr><tr><td><a href="http://en.wikipedia.org/wiki/Breadth-first_search">Breadth-first</a></td><td>Perfect</td><td>Slow</td><td>Medium</td><td>Low</td></tr><tr><td>None</td><td>Low</td><td>Fast</td><td>None</td><td>Low</td></tr></table></p><p>Of the accurate algorithms, A* is definitely the fastest, but requires the most memory. Memory which is unlikely to be available. Breadth-first requires less memory, and can be used to build a map of the entire level, pointing the monsters towards the player - so will become faster as more and more monsters use it. The algorithm entitled 'none', however, only uses simple comparisons to try and guide the monsters towards the player. E.g. if the player is to the east, walk to the east. A couple of extra rules can be used to try and guide the monsters round walls or through doors, but that's about it. It definitely has the speed advantage, however - there is no route map to rebuild every time the player moves.</p><p>Since the dungeon is fairly simple in construction, and my memory requirements are so tight, I'll be using the 'none' algorithm. Currently, this involves just sending the monster towards the player, trying to head in a vaguely correct direction if it bumps into something, and then trying a random direction if that doesn't work.<h3>Next time</h3><p>..I will be tackling combat. Having never written a roguelike combat system before, it will be an interesting exercise in deciding how mechanics such as strength and armour class will work, and attempting to get the numbers right first-time to reduce the amount of balancing required.</p><p><a href="http://www.acornarcade.com/comments/rss/news1136.html">No comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">The level generator</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1135.html"
      title="The level generator" />
    <author>
      <name>Jeffrey Lee</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1135.html</id>
    <modified>2007-03-13T00:00:00Z</modified>
    <issued>2007-03-13T00:00:00Z</issued>
    <created>2007-03-13T00:00:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">Previously, on Bob and Trev: Resurrection...</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><a href="/articles/Static_game_data/index1133.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote><a href="/articles/How_to_fit_a_roguelike_in_32k/index1132.html">Previously, on Bob and Trev: Resurrection</a>...<blockquote>The current dungeon level.<br />For simplicity, I won't be having a scrolling map. This means that the largest level possible would be 40 by 25 tiles; in reality I'll only be using 40x22, as 3 rows will be required for displaying the players' status and game messages. And since the dungeon is fairly simple in design, I'll only need at most 1 byte per tile - so a full map of the current dungeon level will require 880 bytes of memory.</blockquote></blockquote>Until now, I haven't really gone into any detail about what the dungeon structure will be like. Since you don't find many BBC users in Gnomish mines, I realised quite early on that the traditional underground dungeon setting wouldn't work very well for this game. So instead I turned the game world on its head - you'll start at the bottom of a skyscraper and work your way up. In particular, if I have the time I'll make the first and last levels unique - the first level will be an underground parking lot, and the last level will be the rooftop, where you will find your nemesis (Don't ask me who he is - I haven't decided yet!) These unique levels will require only simple generators, but how will the office levels inbetween be generated?</p><p> <h3>The Office: A roguelike workplace</h3><p><tt>The Acron Suicide Clan Member hits!<br />####-####-########################-#####<br />#.........#..........#.........#.......#<br />#.>.......#..........#.........#.......#<br />#....@S...#..........#.........#.......#<br />|.........######-#########-#####.......|<br />#.........|....................|.......#<br />#####################-##################<br />#......................................#<br />#......................................#<br />|......................................|<br />#......................................#<br />#......................................#<br />#......................................#<br />#......................................#<br />|......................................|<br />#......................................#<br />#####-#####............................#<br />#.........#............................#<br />#.........#............................#<br />|.....&amp;lt;...#............................|<br />#.........#............................#<br />####-####-####-####-####-####-####-#####<br />Floor:XX &pound;123456 Hungry Conf<br />xx/yy ACXX StXX InXX CoXX DxXX WiXX ExXX</tt></p><p>Above is a fairly simple mockup of what the screen could look like while playing. Windows line the edge of the level; if he wants, the player could break through one of them and jump to his death. Or perhaps push a monster out. Doors seperate the different rooms. Rooms can contain furniture such as chairs and desks, interactable items such as water coolers and plant pots, and hidden traps to thwart any invaders. There will also be toilets, urinals, sinks and cubicle walls, to add some more variety to the design. But how can I generate the levels?</p><p>Luckily, I already have an algorithm that works quite well for indoor areas - it's the one I've <a href="http://www.iconbar.com/forums/viewthread.php?threadid=9891">discussed before</a> that's used by <a href="http://www.phlamethrower.co.uk/riscos/gaio.php">GAIO</a>. With a few tweaks, I can easily adapt it to generate office-like levels for this game.<h3>The algorithm</h3><p>The best way to describe the algorithm is in terms of how it differs from the GAIO algorithm. For example, it won't split a room if it's a thin corridor. But the more interesting differences are how the new algorithm deals with memory management.</p><p>The GAIO algorithm used a lot of scary linked list structures to maintain lists of rooms and edges. This resulted in the code being larger and more complex, and the algorithm using a fair amount of memory (Memory which simply won't be available on the BBC). Furthermore, BASIC doesn't really support dynamic memory allocation, so if it would all have to be done manually. There's also the rather archaic algorithm that randomly connects rooms until all rooms in the map can be connected.</p><p>I'm pleased to say that all these issues have been dealt with in the new algorithm. The memory requirements are even low enough for the algorithm to store its temporary data in the 1414 bytes of per-level object data (Which will be free for use, because the game will be halfway between levels at the time).</p><p>To start with, I'll talk about how it tackles the problem of room connectivity. Since I won't be having a way for the player to blast through walls, it's important for the player to have a route of doors leading from the start room to the exit room. But how can you generate a level which is guaranteed to have all rooms connected?</p><p>Take a look at the following diagram:</p><p><tt>......#########<br />......#.......#<br />......#.......#<br />##########-##########<br />#.....#.......#.....#<br />#.....#.......#.....#<br />#.....|.......|.....#<br />#.....#.......#.....#<br />#.....#.......#.....#<br />##########-##########<br />......#.......#<br />......#.......#<br />......#########</tt></p><p>By looking at it, you can see that all the rooms are connected. If we split the middle room, we could end up with the following arrangement:</p><p><tt>......#########<br />......#.......#<br />......#.......#<br />##########-##########<br />#.....#....#..#.....#<br />#.....#....#..#.....#<br />#.....|.A..#B.|.....#<br />#.....#....#..#.....#<br />#.....#....#..#.....#<br />##########-##########<br />......#.......#<br />......#.......#<br />......#########</tt></p><p>Suddenly, the rooms aren't connected anymore. The two on the right are inaccessible to the four on the left. The obvious way to reconnect them is to introduce one or more doors on the new edges - the three edges to the north, west, and south of room B. And if we turn any of those new edges into a door, the map will remain fully connected. And that's all there is to it - making sure that when a split is made, at least one of the new edges introduced is a door edge.</p><p>In reality, the algorithm works slightly differently. Assuming 3 new edges are created, it picks two random numbers from 1 to 3, and turns both those edges into doors. Sometimes it may pick the same number, sometimes it may pick different ones - thus ensuring that all rooms are connected without the level degenerating into a linear route or a fully connected graph where each room is connected directly to each of its neighbours.</p><p>The other major difference is how the room and edge lists are handled. Instead of storing them in linked lists, they are stored in linear lists. The room list starts at the bottom of the 1414 byte temporary memory block, filling it from the bottom up, and the edge list starts at the top, filling it from the top down. Some quick maths suggests that under normal circumstances the algorithm won't run out of memory - but if needed I can put in an extra clause to stop the room splitting algorithm when the buffer becomes full.</p><p>For each room, 5 bytes are stored - 4 bytes for the coordinates, and one byte for the room style (Empty, meeting room, 'office space', toilets, etc.). For each edge, 3 bytes are stored - 2 bytes contain the room IDs of the rooms the edge lies between, and the 3rd byte contains the flags (contains a door, contains window(s), etc.)</p><p>The splitting algorithm has also been changed slightly. The recursion used by the original splitting algorithm isn't needed, as it doesn't really matter which order rooms are split in. The new algorithm simply runs through the room list in order, repeatedly splitting the current room until it becomes too small. Each new room created is appended to the end of the room list.</p><p>Edge handling is slightly more compelx, however. Whereas each room in the GAIO algorithm maintained its own list of edges, the new algorithm only has one global edge list. The only way to get the list of edges for a room is to iterate the full list and check each edge individually. Although this will be slower, it simplifies the code significantly. In reality the loss of speed won't matter much, due to the small size of the levels, and speed gains made elsewhere (e.g. not relying on a seperate stage to connect rooms with doors).<h3>Room styles</h3><p>As mentioned above, I'm hoping to have a few different room styles. The room style will be determined by several factors - the size and shape of the room, and how many of its edges contain doors. For each style, there will be a different filler function - the function which creates the interior of the room. For example, the filler function for a 'toilets' room will split the room into a series of smaller toilet cubicles. These will only be 'virtual rooms' - i.e. no new entries will be added to the room or edge lists.<h3>Traps</h3><p>There will also be a few traps dotted around levels. These will start out as a special, 'hidden trap' tile, and only when a monster or the player walks over them will the game decide what trap to transform them into.<h3>Monsters and other items</h3><p>These will be placed randomly throughout the level. For each item and monster type, the static game data contains the probability of the item appearing, and the range of levels it can appear on. This means that the game can easily pick a random number between 0 and the sum of the probabilities, then scan through the type list to find out what item should be spawned. Monsters will have an experience level that increases in relation to the dungeon level. I'm also hoping to include monster inventory information in the static dungeon data; so that when a Stylophone Clan member is spawned, he will automatically be wielding a Stylophone.</p><p><a href="http://www.acornarcade.com/comments/rss/news1135.html">3 comments in forum</a>
</p>]]>
    </content>
  </entry>
  <entry>
    <title
      type="text/plain"
      mode="escaped">David Braben interviewed</title>
    <link
      rel="alternate"
      type="text/html"
      href="http://www.acornarcade.com/comments/rss/news1143.html"
      title="David Braben interviewed" />
    <author>
      <name>Phil Mellor</name>
    </author>
    <id>http://www.acornarcade.com/comments/rss/news1143.html</id>
    <modified>2007-03-12T13:30:00Z</modified>
    <issued>2007-03-12T13:30:00Z</issued>
    <created>2007-03-12T13:30:00Z</created>
    <summary
      type="text/plain"
      mode="escaped">David Braben, co-author of Elite, has been interviewed by the BBC technology programme Click at the Science Museum's Game On exhibition.</summary>
        <content type="text/html" mode="escaped" xml:lang="en" xml:base="">
      <![CDATA[<p><img src="http://www.iconbar.com/news/images/uploaded/braben.jpg" width="160" height="103" alt="David Braben" title="David Braben" align="left" hspace="5" />David Braben, co-author of <a href="http://elite.acornarcade.com/">Elite</a>, has been interviewed by the BBC technology programme <a href="http://news.bbc.co.uk/1/hi/programmes/click_online/default.stm">Click</a> at the Science Museum's Game On exhibition.</p><p>He discusses whether it is still practical for bedroom coders to write games: "<i>I'm a little skeptical - I hugely think it's a very good idea for people to be able to learn to program at home ... I was very lucky - machines like the Acorn Atom and BBC Micro were very easy to program. I was in the right place at the right time; it's much harder to get started now. So anything that people like Microsoft [<a href="http://en.wikipedia.org/wiki/Microsoft_XNA">XNA</a>] can do to encourage that is a good thing.</i>"</p><p>We also get to see a <a href="http://en.wikipedia.org/wiki/PDP-1">PDP-1</a>, a super computer used for space research in the 1960s, which ran one of the earliest computer games, <a href="http://en.wikipedia.org/wiki/Spacewar!">Spacewar</a>, on an oscilloscope.</p><p>Seems like the programme was recorded some time ago - they keep mentioning the Wii will be coming out soon, and the <a href="http://www.sciencemuseum.org.uk/exhibitions/gameon/">exhibition</a> finished in February - but it was broadcast last night and you can watch it again <a href="http://www.bbc.co.uk/mediaselector/check/player/nol/newsid_6430000/newsid_6430000?redirect=6430065.stm&amp;news=1&amp;bbwm=1&amp;bbram=1&amp;nbram=1&amp;nbwm=1">here</a></p><p><a href="http://www.acornarcade.com/comments/rss/news1143.html">12 comments in forum</a>
</p>]]>
    </content>
  </entry>

</feed>