<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AboutAI &#187; Programming</title>
	<atom:link href="http://aboutai.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://aboutai.com</link>
	<description>The Artificial Intelligence Community</description>
	<lastBuildDate>Tue, 03 Nov 2009 12:30:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Intelligent Mistakes: How to Incorporate Stupidity Into Your AI Code</title>
		<link>http://aboutai.com/2009/03/intelligent-mistakes-how-to-incorporate-stupidity-into-your-ai-code/</link>
		<comments>http://aboutai.com/2009/03/intelligent-mistakes-how-to-incorporate-stupidity-into-your-ai-code/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 16:36:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[realism]]></category>
		<category><![CDATA[stupidity]]></category>

		<guid isPermaLink="false">http://aboutai.com/?p=344</guid>
		<description><![CDATA[Twenty years ago, I was working on my first commercial game: Steve Davis World Snooker, one of the first snooker/pool games to have an AI opponent. The AI I created was very simple. The computer just picked the highest value ball that could be potted, and then potted it.
Advertisement
Since it knew the precise positions of [...]]]></description>
			<content:encoded><![CDATA[<p>Twenty years ago, I was working on my first commercial game: Steve Davis World Snooker, one of the first snooker/pool games to have an AI opponent. The AI I created was very simple. The computer just picked the highest value ball that could be potted, and then potted it.<br />
Advertisement</p>
<p>Since it knew the precise positions of all the balls, it was very easy for it to pot the ball every time. This was fine for the highest level of difficulty, but for easy mode I simply gave the AI a random angular deviation to the shot.</p>
<p>Toward the end of the project, we got some feedback from the client that the AI was &#8220;too good.&#8221; I was puzzled by this and assumed the person wanted the expert mode to be slightly less accurate. So I changed that. But then I heard complaints about the decreased accuracy, and again that the AI was still too good.</p>
<p>Eventually the clients paid a visit to our offices and tried to demonstrate in person what they meant. It gradually came out that they thought the problem was actually with the &#8220;easy&#8221; mode.</p>
<p>They liked that the computer missed a lot of shots, but they thought that the positional play was too good. The computer always seemed to be leaving the white ball in a convenient position after its shot, either playing for safety or lining up another ball. They wanted that changed.</p>
<p><a href="http://aboutai.com/wp-content/uploads/gameai_stupidity_0.jpg"><img class="alignleft size-full wp-image-347" title="gameai_stupidity_0" src="http://aboutai.com/wp-content/uploads/gameai_stupidity_0.jpg" alt="Intelligent Mistakes: How to Incorporate Stupidity Into Your AI Code gameai stupidity 0 " width="320" height="200" /></a>The problem was, there was no positional play! The eventual position of the white ball was actually completely random. The AI only calculated where the cue ball should hit the object ball in order to make that object ball go into a pocket.</p>
<p>It then blindly shot the cue ball toward that point with a speed proportional to the distance needed to travel, scaled by the angle, plus some fudge factor. Where the white ball went afterward was never calculated, and it quite often ended up in a pocket.</p>
<p>So why was it a problem? Why did they think the AI was &#8220;too good&#8221; when it was actually random?</p>
<p>Humans have a tendency to anthropomorphize AI opponents. We think the computer is going through a thought process just like a human would do in a similar situation.</p>
<p>When we see the ball end up in an advantageous position, we think the computer must have intended that to happen.</p>
<p>The effect is magnified here by the computer&#8217;s ability to pot a ball from any position, so for the computer, all positions are equally advantageous.</p>
<p>Hence, it can pot ball after ball, without having to worry about positional play. Because sinking a ball on every single shot would be impossible for a human, the player assumes that the computer is using positional play.</p>
<p><strong>Design or Code?</strong></p>
<p>Is this a design problem or a code problem? To a certain extent it depends on the type of game, and to what extent the AI-controlled opponents are intended to directly represent a human in the same situation as the player.</p>
<p>In a head-to-head game such as pool, chess, or poker, the AI decisions are very much determined at a pure code level. In a one-versus-many game, such as an FPS, there is some expectation that your opponents are generally weaker than you are.</p>
<p>After all, you are generally placed in a situation of being one person against countless hordes of bad guys. Other game genres, particularly racing games, pit you against a field of equal opponents. Here the expectation of realistic AI is somewhere between that of chess and the FPS examples.</p>
<p>The more the computer AI has to mimic the idiosyncrasies of a human player, the more the task falls to the programmer. The vast majority of the AI work in a chess game is handled by programmers. Game designers would focus more on the presentation.</p>
<p>In an FPS, the underlying code is generally vastly simpler than chess AI. There is path finding, some state transitions, some goals, and some basic behaviors.</p>
<p>The majority of the behavioral content is supplied via the game designers, generally with some form of scripting. The designers will also be responsible for coding in actions, goals, and responses that emulate the idiosyncrasies of human behavior.</p>
<p><strong>Heads Up!</strong></p>
<p>In some heads-up games, such as chess and pool, the computer has a huge advantage over the player. Modern chess programs such as Fritz are vastly stronger than nearly all human players.</p>
<p>In pool and snooker games, the computer can be programmed to never miss a shot. However, people want to play against an opponent that is well matched to their skills, and so there are generally levels of AI in the game that the player can choose from.<br />
Advertisement</p>
<p>The simplest way to introduce stupidity into AI is to reduce the amount of computation that it&#8217;s allowed to perform. Chess AI generally performs billions of calculations when deciding what move to make.</p>
<p>The more calculations that are made (and the more time taken), then (generally) the better the computer will play. If you reduce the amount of calculations performed, the computer will be a worse player.</p>
<p>The problem with this approach is that it decreases the realism of the AI player. When you reduce the amount of computation, the AI will begin to make incredibly stupid mistakes &#8212; mistakes that are so stupid, no human would ever make them. The artificial nature of the game will then become apparent, which destroys the illusion of playing against a real opponent.</p>
<p>Remember what we are trying to accomplish: We want people to have an enjoyable experience. No matter what the game, we want the players to feel challenged so that when they win, they feel a sense of accomplishment. We want them to feel that they were playing against an opponent who was really trying to beat them.</p>
<p>By reducing the amount of computation, we create an AI opponent that is trying to win, but has been crippled in a way that leads to unrealistic gameplay. But does the player actually care about what is going on under the hood? What if we don&#8217;t cripple our AI, but instead let it play at full strength, but have the AI deliberately throw the game?</p>
<p><strong>Throwing the Game</strong></p>
<p>In sports, &#8220;throwing the game&#8221; means one side makes a series of intentional mistakes that look natural, but result in losing the game. This behavior is rightly vilified by players and fans, as the agreement is that there be a contest between two equal opponents, or at least, two opponents who are trying equally hard to win.</p>
<p>But in computer games, it&#8217;s impossible to have an equal match. It&#8217;s humans versus machines. One side has an advantage of being able to perform a billion calculations per second, and the other has the massively parallel human brain.</p>
<p>Any parity here is an illusion, and it&#8217;s that illusion that we seek to improve and maintain via the introduction of intelligent mistakes and artificial stupidity.</p>
<p>The computer has to throw the game in order to make it fun. When you beat the computer, it&#8217;s an illusion. The computer let you win. We just want it to let you win in a way that feels good.</p>
<p>AI programmers need to get used to this idea. We are manipulating the game, creating artificial stupidity, fake stupidity. But we are not predetermining the outcome of the game.</p>
<p>We don&#8217;t set our AI with the intent to lose the game, but rather to give the human player a reasonable chance of winning. If the human plays poorly, the AI will still win, but the player will at least feel like she came close to beating a strong opponent, and thus feel like playing one more game.</p>
<p><strong>Hidden Handicapping</strong></p>
<p>Computer chess expert Steven Lopez (see Resources) describes how in human versus human chess, it&#8217;s acceptable for a high-ranking player to give a much lower ranking player an advantage at the start of the game by removing some of his pieces from the board before the game begins.</p>
<p>When the game starts, the master player and the novice player are still playing to the height of their abilities, and yet the game is more evenly balanced. The master player does not have to play &#8220;stupid&#8221; in order to give the novice player a chance.</p>
<p>However, humans playing against a computer do not like to be given an advantage in this way, and prefer to play the full board against an AI opponent of approximately their skill level.</p>
<p>The programmers of Fritz hit upon a solution that involved the AI deliberately setting up situations that the human player could exploit (with some thought) that would allow the human to gain a positional or piece advantage. Once the human player gained the advantage, the AI would resume trying to win.</p>
<p>At no point here is the AI actually dumbed down. If anything, there is actually quite a bit more computation going on, and certainly more complexity.</p>
<p>The goal of the AI has shifted from &#8220;win the game&#8221; to &#8220;act like you are trying to win the game, but allow the human to gain a one-pawn advantage, and then try to win.&#8221; The AI needs to be more intelligent in order to appear less intelligent.</p>
<p><strong>Poker AI</strong></p>
<p>When I programmed the AI for Left Field&#8217;s World Series of Poker, the AI computation was basically the same for each difficultly level.</p>
<p>The computer would calculate the odds of winning based on the known cards, and an estimate of the opponent&#8217;s hand strength based on betting history. The odds would then be used to calculate a rate of return, which would be used to decide if they would fold, call, or raise.</p>
<p><a href="http://aboutai.com/wp-content/uploads/gameai_stupidity_1.jpg"><img class="alignleft size-full wp-image-348" title="gameai_stupidity_1" src="http://aboutai.com/wp-content/uploads/gameai_stupidity_1.jpg" alt="Intelligent Mistakes: How to Incorporate Stupidity Into Your AI Code gameai stupidity 1 " width="300" height="224" /></a>There were many special case rules and exceptions, but that&#8217;s the basics. The AI players would all make the same extensive computations, running tens of thousands of simulated hands through an evaluator to calculate the rate of return.</p>
<p>After these calculations were performed, only then would the differentiation be performed. At that point, the best players would play their best move, and the weak AI players would make intelligent mistakes.</p>
<p>For weak poker AI, an intelligent mistake consists of figuring out what you should do, and then not doing it, so long as not doing it does not make you look stupid.</p>
<p>For example, if the human player just put in a big raise, yet you know there&#8217;s a 75 percent chance your hand is the best, then an intelligent mistake would be to fold. The odds are the AI would win, yet we are simulating a weak human player, and weak human players often fold to a large raise when they are unclear on their odds.</p>
<p>Conversely, weak human players often call when their chances are weak. It&#8217;s a natural thing to do and allows us to reduce the strength of the AI player, without it looking artificially stupid.</p>
<p>These intelligent mistakes were implemented in a probabilistic manner. The fake-stupid AI would not always fold when the human player seemed to be bluffing &#8212; it was just more likely to.</p>
<p>This worked very well in the highly random game of poker, because the player could never tell in any individual situation if the AI was actually making a mistake.</p>
<p>Since the AI was still performing its full set of millions of calculations, it never made mistakes that were inhumanly stupid, but the layer of artificial stupidity brought on by increased recklessness was enough to even the playing field and give the weak and average human players an enjoyable game.</p>
<p><strong>Artificial Inaccuracy</strong></p>
<p>In pool and in shooters, the computer AI is blessed with an omniscient accuracy. The shooter AI knows down to the billionth of an inch exactly where you are, and could shoot your hat off your head from five miles away. Similarly in pool, the AI knows the position of every ball and can calculate where every ball will end up before it takes a shot.</p>
<p>When I implemented my snooker AI, it could perfectly pot any ball off two cushions, and would almost always get a perfect break of 147 every time it played (except when it potted the white due to its lack of positional play).</p>
<p>It was obviously not a fun opponent to play against, so even at the highest levels, the accuracy had to be reduced, and the cushion shots had to be restricted to getting out of snookers.</p>
<p>Simply reducing the accuracy of the AI is not always the best way to improve gameplay. As I found with the &#8220;positional play&#8221; in snooker, random outcomes that happen to favor the computer are perceived as being intentional. If the ball ends up in a good place, or the poker AI makes a lucky call and wins on the river, it can be perceived as unfair or even cheating.</p>
<p>So instead of reducing the accuracy, I&#8217;d suggest, as in chess, we increase the accuracy. In order to provide an exciting and dynamic game, the AI needs to manipulate the gameplay to create situations that the player can exploit.</p>
<p>In pool this could mean, instead of blindly taking a shot and not caring where the cue ball ends up, the AI should deliberately fail to pot the ball and ensure that the cue ball ends up in a place where the player can make a good shot.</p>
<p>In a shooter, the enemy aliens should not simply randomly break from cover &#8212; they should sometimes break from cover when the player is close to them and panning toward them. They should &#8220;accidentally&#8221; throw themselves into the line of fire to make the game more interesting.</p>
<p><strong>Luck of the Draw</strong></p>
<p>Playing against a perfect opponent is no fun. But playing against a crippled opponent is no fun either. To create more interesting gameplay, we have to introduce the concepts of artificial stupidity and intelligent mistakes.</p>
<p>Intelligent mistakes seem like failings on the part of the AI, but are actually carefully calculated ways of throwing the game that make it more entertaining for the player. This does not remove the challenge, as the player still has to have a certain level of skill.</p>
<p>For the programmer, adding intelligent mistakes is much more complex than simply reducing the accuracy of the AI, but provides a much more rewarding experience for the player.</p>
<p><strong>Resources</strong></p>
<p>Liden, Lars. &#8220;Artificial Stupidity: The Art of Intentional Mistakes,&#8221; in AI Game Programming Wisdom 2, Charles River Media, 2004. http://lars.liden.cc/Publications/Downloads/2003_AIWisdom.pdf</p>
<p>Lopez, Steven. &#8220;Intelligent Mistakes,&#8221; Chessbase News, 2005. http://www.chessbase.com/newsdetail.asp?newsid=2579</p>
<p>Source:</p>
<p>http://www.gamasutra.com/view/feature/3947/intelligent_mistakes_how_to_.php</p>
<p><em>[Neversoft co-founder West presents a thought-provoking look at improving the believability of AI opponents in games by upping their use of "intelligent mistakes", in a piece originally written for <a href="http://www.gdmag.com/">Game Developer magazine</a>.]</em></p>
<img src="http://aboutai.com/?ak_action=api_record_view&id=344&type=feed" alt="Intelligent Mistakes: How to Incorporate Stupidity Into Your AI Code  "  title=" photo" />]]></content:encoded>
			<wfw:commentRss>http://aboutai.com/2009/03/intelligent-mistakes-how-to-incorporate-stupidity-into-your-ai-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IBM Research Partners With EU AI Consortium to Speed Up Mobile Web Design Time</title>
		<link>http://aboutai.com/2008/08/ibm-research-partners-with-eu-ai-consortium-to-speed-up-mobile-web-design-time/</link>
		<comments>http://aboutai.com/2008/08/ibm-research-partners-with-eu-ai-consortium-to-speed-up-mobile-web-design-time/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 16:25:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[toolkits]]></category>

		<guid isPermaLink="false">http://dev.aisolver.com/?p=49</guid>
		<description><![CDATA[IBM is announcing a collaboration with European Union partners at the GNU Compiler Collection (GCC) Summit to develop new software that will improve performance and drastically cut down time-to-market of mobile web applications. Specifically, partners of the Milepost project &#8212; (MachIne Learning for Embedded PrOgramS opTimization) &#8212; are developing advanced artificial intelligence technology that automatically [...]]]></description>
			<content:encoded><![CDATA[<p>IBM is announcing a collaboration with European Union partners at the GNU Compiler Collection (GCC) Summit to develop new software that will improve performance and drastically cut down time-to-market of mobile web applications. Specifically, partners of the Milepost project &#8212; (MachIne Learning for Embedded PrOgramS opTimization) &#8212; are developing advanced artificial intelligence technology that automatically learns how to best optimize newly developed programs for embedded processors in mobile devices.</p>
<p>This May, IBM released a study which revealed 80 percent of consumers would prefer a service provider that gave them more choice in the applications and services available on their mobile device. For developers, the study points to how consumer demand for customization and personalization will drive the need for projects like Milepost to enable a faster path to market for new mobile applications.</p>
<p>Today&#8217;s mobile hardware designs are rapidly changing and current hand-crafted approaches to mobile software development are no longer sustainable. The project&#8217;s partners have released a prototype version of their software at the GCC Summit showcasing successful preliminary results. Within one month, Milepost was able to improve the performance of a state-of-the-art complier by 10 percent &#8212; something that would normally take several years to accomplish.</p>
<p>&#8220;The Milepost solution uses artificial intelligence and machine learning to understand what kind of compiler optimizations are optimal for use with each new hardware design,&#8221; explained Mike O&#8217;Boyle, Professor of Computer Science at the University of Edinburgh and Project Coordinator for Milepost. &#8220;This will help completely automate compiler construction and enable more rapid code design of hardware and software &#8212; dramatically reducing time to market in these systems.&#8221;</p>
<p>With each generation of reconfigurable architecture, the compiler development time increases and the performance improvement achieved is at risk. As high performance embedded systems move from application specific ASICs to programmable heterogeneous processors, this problem is becoming critical. Compiler designs simply can&#8217;t keep up with so many different kinds of new processors.</p>
<p>&#8220;Milepost is realizing the vision of customized hardware with tailor fit software,&#8221; noted Dr. Bilha Mendelson, Manager of Code Optimization Technologies at the IBM Haifa Research Lab. &#8220;Aside from shorter design cycles, Milepost opens new opportunities by enabling engineers to leap ahead and work with more experimental hardware. Opening the compiler infrastructure and combining it with machine learning techniques enables us to generate several sets of optimizations sequences for each hardware application area.&#8221;</p>
<p>As part of the project, IBM Research is working to take advantage of new architectural improvements. &#8220;There is something very rewarding in accomplishing significant optimizations through cooperation with the EU community,&#8221; continued Mendelson. &#8220;This collaboration between industry, academia, and the research community has enabled us to embark on bold and adventurous research projects that are producing real measurable results.&#8221;</p>
<p>Milepost partners are in the midst of a three-year program, at the end of which, they expect to release a fully robust version of their compiler optimization software into the GCC main product. The Milepost GCC version will be available to everyone in the open source community and is scheduled for release in June 2009. The project consortium includes the IBM Haifa Research Lab, Israel; the University of Edinburgh, UK; ARC International Ltd., UK; CAPS Enterprise, France; and INRIA, France.</p>
<p>For additional information contact:</p>
<p>Steven Tomasco<br />
IBM Media Relations<br />
Office: 914.945.1655<br />
Cell: 917.687.4588<br />
stomasc@us.ibm.com</p>
<p>Chani Sacharen<br />
IBM Media Relations, Israel<br />
Tel: 972-4-8296166<br />
Fax: 972-4-8296117<br />
sacharen@il.ibm.com </p>
<img src="http://aboutai.com/?ak_action=api_record_view&id=49&type=feed" alt="IBM Research Partners With EU AI Consortium to Speed Up Mobile Web Design Time  "  title=" photo" />]]></content:encoded>
			<wfw:commentRss>http://aboutai.com/2008/08/ibm-research-partners-with-eu-ai-consortium-to-speed-up-mobile-web-design-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel says to prepare for &#8216;thousands of cores&#8217;</title>
		<link>http://aboutai.com/2008/07/intel-says-to-prepare-for-thousands-of-cores/</link>
		<comments>http://aboutai.com/2008/07/intel-says-to-prepare-for-thousands-of-cores/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 16:27:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[multicore]]></category>

		<guid isPermaLink="false">http://dev.aisolver.com/?p=53</guid>
		<description><![CDATA[Intel is telling software developers to start thinking about not just tens but thousands of processing cores. Intel currently offers quad-core processors and is expected to bring out a Nehalem processor in the fourth quarter that uses as many as eight cores.
But the chipmaker is now thinking well beyond the traditional processor in a PC [...]]]></description>
			<content:encoded><![CDATA[<p>Intel is telling software developers to start thinking about not just tens but thousands of processing cores. Intel currently offers quad-core processors and is expected to bring out a Nehalem processor in the fourth quarter that uses as many as eight cores.</p>
<p>But the chipmaker is now thinking well beyond the traditional processor in a PC or server. Jerry Bautista, the co-director of the Tera-scale Computing Research Program at Intel, recently said that in a graphics-intensive environment the more cores Intel can build the better. &#8220;The more cores we have the better. Provided that we can supply memory bandwidth to the device.&#8221;</p>
<p>On Monday, an Intel engineer took this a step further. Writing in a blog, Anwar Ghuloum, a principal engineer with Intel&#8217;s Microprocessor Technology Lab, said: &#8220;Ultimately, the advice I&#8217;ll offer is that&#8230;developers should start thinking about tens, hundreds, and thousands of cores now.&#8221;</p>
<p>He said that Intel faces a challenge in &#8220;explaining how to tap into this performance.&#8221; He continues: &#8220;Sometimes, the developers are trying to do the minimal amount of work they need to do to tap dual- and quad-core performance&#8230;I suppose this was the branch most discussions took a couple of years ago.&#8221;</p>
<p>Now, however, Intel is increasingly &#8220;discussing how to scale performance to core counts that we aren&#8217;t yet shipping&#8230;Dozens, hundreds, and even thousands of cores are not unusual design points around which the conversations meander,&#8221; he said.</p>
<p>He says that the more radical programming path to tap into many processing cores &#8220;presents the &#8216;opportunity&#8217; for a major refactoring of their code base, including changes in languages, libraries, and engineering methodologies and conventions they&#8217;ve adhered to for (often) most of the their software&#8217;s existence.&#8221;</p>
<p>&#8220;Eventually, developers realize that the end point is on the other side of a mountain of silicon innovations&#8230;Program for as many cores as possible, even if it is more cores than are currently in shipping products.&#8221; </p>
<p>http://news.cnet.com/8301-13924_3-9981760-64.html?part=rss&#038;subj=news&#038;tag=2547-1_3-0-5</p>
<img src="http://aboutai.com/?ak_action=api_record_view&id=53&type=feed" alt="Intel says to prepare for thousands of cores  "  title=" photo" />]]></content:encoded>
			<wfw:commentRss>http://aboutai.com/2008/07/intel-says-to-prepare-for-thousands-of-cores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intel converts Quake Wars to ray-tracing</title>
		<link>http://aboutai.com/2008/06/intel-converts-quake-wars-to-ray-tracing/</link>
		<comments>http://aboutai.com/2008/06/intel-converts-quake-wars-to-ray-tracing/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 18:44:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algorithims]]></category>
		<category><![CDATA[raytracing]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://dev.aisolver.com/?p=94</guid>
		<description><![CDATA[Up until yesterday, Intel was showcasing its ray-tracing research using Quake 3 and Quake 4, which were nice demos, but did not exactly reflect fresh software. Over past several months, the company has been working one converting Enemy Territory: Quake Wars and we have to admit that the results are quite impressive.
Intel demonstrated ET: Quake [...]]]></description>
			<content:encoded><![CDATA[<p>Up until yesterday, Intel was showcasing its ray-tracing research using Quake 3 and Quake 4, which were nice demos, but did not exactly reflect fresh software. Over past several months, the company has been working one converting Enemy Territory: Quake Wars and we have to admit that the results are quite impressive.</p>
<p>Intel demonstrated ET: Quake Wars running in basic HD (720p) resolution, which is, according to our knowledge, the first time the company was able to render the game using a standard video resolution, instead of 1024 x 1024 or 512 x 512 pixels. Seeing ETQW running in 14-29 frames per second in 1280&#215;720 has brought up our hopes for Intel&#8217;s CPU architecture, since we do not believe that CPUs would deliver a similar performance when rasterizing graphics. For the record, the demonstration ran on a 16-core (4 socket, 4 core) Tigerton system running at 2.93 GHz.</p>
<p>The game itself was vastly expanded when compared to original title. Intel’s Daniel Pohl showed how the engine now shoots three million rays in all directions, enabling collision detection based on rays alone.</p>
<p>Also, during the conversion, some effects were integrated by default, even if they had not been planned. One of those effects was fog shadow on the floor and physically-correct refractions of water. If you ever dived into a swimming pool or sea and looked up, you could have seen that the world is distorted. Now, ET: Quake Wars has the very same effect.</p>
<p>An impressive part of demonstration was looking at glass surfaces. Glass now reflects the environment to the tiniest detail &#8211; no LOD trickery here. Seeing a 200-window portal was quite an impressive demonstration of a situation when you are shooting rays into the environment. Check out our gallery to get more detail on this demo.</p>
<p>The icing on the cake was that the game was actually demonstrated running on a 64-bit Linux operating system. Intel stated that with ray-tracing, the company now supports 32-bit and 64-bit versions of Linux and Windows operating systems. We&#8217;ll see what will happen with Mac OS X support, but that should be on the cards as well. </p>
<p>Source:</p>
<p>http://www.tgdaily.com/html_tmp/content-view-37925-113.html</p>
<img src="http://aboutai.com/?ak_action=api_record_view&id=94&type=feed" alt="Intel converts Quake Wars to ray tracing  "  title=" photo" />]]></content:encoded>
			<wfw:commentRss>http://aboutai.com/2008/06/intel-converts-quake-wars-to-ray-tracing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codeplay: Portable High-Performance Compilers</title>
		<link>http://aboutai.com/2008/01/codeplay-portable-high-performance-compilers/</link>
		<comments>http://aboutai.com/2008/01/codeplay-portable-high-performance-compilers/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 18:27:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[multicore]]></category>

		<guid isPermaLink="false">http://dev.aisolver.com/?p=78</guid>
		<description><![CDATA[Codeplay’s Sieve C++ Parallel Programming System is a scalable programming system aimed at those who need to create C++ code suitable for use on a multi-core processing environment. The Sieve System consists of an extension to a C++ compiler, a multi-core linker and a runtime to schedule the processes.
The Codeplay Sieve C++ partitioning system has [...]]]></description>
			<content:encoded><![CDATA[<p>Codeplay’s Sieve C++ Parallel Programming System is a scalable programming system aimed at those who need to create C++ code suitable for use on a multi-core processing environment. The Sieve System consists of an extension to a C++ compiler, a multi-core linker and a runtime to schedule the processes.</p>
<p>The Codeplay Sieve C++ partitioning system has been built on top of our proven VectorC C++ core technology. </p>
<p>Source:</p>
<p>http://www.codeplay.com/technology/sieve.html</p>
<img src="http://aboutai.com/?ak_action=api_record_view&id=78&type=feed" alt="Codeplay: Portable High Performance Compilers  "  title=" photo" />]]></content:encoded>
			<wfw:commentRss>http://aboutai.com/2008/01/codeplay-portable-high-performance-compilers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
