<?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>#AltDevBlogADay &#187; Deano</title>
	<atom:link href="http://www.altdevblogaday.com/author/dean-calver/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.altdevblogaday.com</link>
	<description>Each day a little more #gamedev love</description>
	<lastBuildDate>Thu, 17 May 2012 03:06:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Being There?</title>
		<link>http://www.altdevblogaday.com/2012/01/27/being-there/</link>
		<comments>http://www.altdevblogaday.com/2012/01/27/being-there/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 11:35:29 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[Bizdev]]></category>
		<category><![CDATA[General Interest]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=23487</guid>
		<description><![CDATA[<p>The vast majority of the games our industry make are virtual. Computer software that transports us to other worlds shown to us via a video screen and controlled via clever little gadgets. And yet we develop them and limit them with physical limitations, for most people (the 80-90% who are able bodied) this is often seen as a good thing but what about the disabled community?</p>
<p><a href="http://www.altdevblogaday.com/2012/01/27/being-there/" class="more-link">Read more on Being There?&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The vast majority of the games our industry make are virtual. Computer software that transports us to other worlds shown to us via a video screen and controlled via clever little gadgets. And yet we develop them and limit them with physical limitations, for most people (the 80-90% who are able bodied) this is often seen as a good thing but what about the disabled community?</p>
<p>I’ve been disabled for the last few decades and have done degrees, played thousands of games, got a job and worked my way up to senior positions all whilst being disabled, due to my vocation from a very young age to make video games. The only requirements I knew were being that I can operate a keyboard and mouse enough of the time to transfer the stuff in my brain into a game.</p>
<p>However the last few years have started to show real issues to me with our industry due to a culture that excludes many disabled people. From devices like the Kinect or Wii fitness to the promotion of the idea that people have to develop physically together, we are driving away many valuable minds that are ideally suited to making games. Whilst doing that we are also throwing away some of the 10-20% market share of people who are less able to play games requiring explicit physical features.</p>
<p><span id="more-23487"></span></p>
<h3>Whats the problem?</h3>
<p>Whilst I doubt a post on AltDevBlogADay is going to convince Microsoft that Kinect only games are a bad idea, I hope that by exploring some of the real problems I have as a disabled game developer to this audience, they might at least make able bodied developers think.</p>
<p>For me personally (and I know in general for a lot of people in the disabled community), the biggest issue is the “Being there” problem, whilst we make virtual worlds and situations, we have an extreme bias as an industry towards physical proximity in the production of games. Most companies insist you work in the office, often moving desks so people who work together are close together, brain storm and important meetings are done with everybody in a room. Its a system thats been shown to work and most people don’t need to think whether its required or could be improved on, until that very proximity becomes problem which for many developer never occurs and so they think its the only option.</p>
<h3>Being There</h3>
<p>Within the last few years, my health has deteriorated to the point that even using mobility aids (like crutches or a wheelchair) I simply cannot get to places at specific time easily. I’m effectively housebound, as an example at the time of writing (end of January 2012) I’ve been outside my house twice this year, both times to get Dental treatment. I have to work around my health, which may mean doing work at odd hours, when the problems have dimmed enough to work at my best. However my ability to do what I love (making games) has gone up since I became house bound, as all those normal things have gone away leaving me the time to take my skills to a level I never had 5 years ago. Effectively I’m just a brain connected to the net (I&#8217;m always there even when I shut down into myself due to pain etc.), I’d like to think I have a very capable brain (hopefully proved over the titles I’ve worked on) but the ability to get the studio everyday or attend a conference is out of the question.</p>
<p>But hey we work in a digital always connected world, so that wouldn’t cause any problems, would it?</p>
<p>Well it does, and to be honest, theres great doubts in my mind if I’ll be able to work in the AAA industry any more going forward, even as my abilities and skills in making games are going up, the use of them outside my own space has become harder. Its not just a matter of things like being able to work from home (which is of course a necessary start) but the willingness of the various parts of the job to incorporate a non physical entity. When you look under the veneer of respectability and minimum required by various equality rules, you quickly see how we assume ‘normal’ physical presence.</p>
<p>Its Game Jam 2012 weekend, great idea with support from IGDA and big sponsors, so be an ideal fun experience for everyone who want to make a game right? Erm so whats this about site and attendance? Ah yes thats right, clearly being able to physically get particular places at certain times is a requirement for someone to make a virtual game!</p>
<p>Game developer conferences requires attendance and having been to one when I was a bit fitter, I can tell you it not easy even when you can walk on crutches and attend, let alone if you can’t physically attend.</p>
<p>Job interviews are typically in person…</p>
<p>In an age of HiDef video cameras, even motor controlled, when was the last brain storm meetings you attended that was truly set up for a virtual presence?</p>
<p>Instant Messages and video conferences means that someone not there is instantly contactable, just as easy as shouting across the office but having teams in close proximity is usually high up the production list, so much that its no uncommon for desks to be moved as projects change.</p>
<h3>Why?</h3>
<p>A simple answer is physical presence is easy. Most managers, producers and senior people are able bodied and can give you examples where getting everyone in a room solves a problem quickly. They can easily tell whose pulling there weight if they walk past there screen every now and again. Conferences know that can get the right atmosphere, with everyone there in person, its a known easy solution that works for most of the people who make the decisions.</p>
<p>Indeed only recently has technology advanced to the point that we can have virtual conferences, that we can talk (by text or voice) to someone half a world away as easily as next to us. And even now these cost money, and require a concerted effort to do. From making sure the video conferences and net connections are working well enough, to security and VPN access issues, it requires a real buy in from the top to the bottom to accept a virtual staff member as a full member of the team. The current norm, is that if there is any support for virtual presence, it will be as a second class citizen. Doing odd-jobs or restricted interaction with the proper staff members who are on-site. Usually you will be expected to be <em><strong>glad</strong></em> that your even treated as a second class citizen, because at least you’re been allowed to work from home or watch conference materials at a later date.</p>
<p>Its important to get this clear, we are talking about people who have equal skills to make games but are just stopped from doing that to there full ability based on things completely separate from those skills. And hopefully most people reading will understand that, that is no difference from not being promoted due to your colour or paid equally because of your sex, we need to embrace everybody who has the talent to do the job. Perhaps a good example, is that most companies and most conferences are hostile to someone like Professor Stephen Hawkings, and yet would anyone not like to have some with the quality of his mind on there team?</p>
<p>I don’t know how many disabled game developers there are, I’ve never seen any statistics, but I suspect its a lot lower than the 10-20% of the population who are considered disabled. As it seems unlikely that we will get anytime soon, to a point where a disabled developer who suffers from these problems gets up the the levels required to make changes, it will be upto the entire community of both able and disabled developers to make it possible to build an environment where all the skill to make games is the quality of someones mind not the quality of there health.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2012/01/27/being-there/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Never ask if its possible, ask how long</title>
		<link>http://www.altdevblogaday.com/2011/10/29/never-ask-if-its-possible-ask-how-long/</link>
		<comments>http://www.altdevblogaday.com/2011/10/29/never-ask-if-its-possible-ask-how-long/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 13:15:15 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[Bizdev]]></category>
		<category><![CDATA[General Interest]]></category>
		<category><![CDATA[game development]]></category>
		<category><![CDATA[player experience]]></category>
		<category><![CDATA[Production]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=19490</guid>
		<description><![CDATA[<p>One piece of advise I always give, is never ask if something is possible, ask how long it will take.</p>
<p>To a good developer, everything is possible. Programmers know that (almost?) everything is doable with significant time to develop, their is almost always some new way of doing something that hasn&#8217;t yet been invented. So if you ask is this possible, the correct answer is (in 99.999999%) of the cases, yes. Exactly the same for design, art and all the other fields.<br />
For example:<br />
Is it possible to paint the roof of a massive church with an amazing stunning visage that will last for centuries and be considered a masterpiece, well yes (see the Sistine Chapel), you just don&#8217;t want to know how long or how much it will cost.</p>
<p><a href="http://www.altdevblogaday.com/2011/10/29/never-ask-if-its-possible-ask-how-long/" class="more-link">Read more on Never ask if its possible, ask how long&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>One piece of advise I always give, is never ask if something is possible, ask how long it will take.</p>
<p>To a good developer, everything is possible. Programmers know that (almost?) everything is doable with significant time to develop, their is almost always some new way of doing something that hasn&#8217;t yet been invented. So if you ask is this possible, the correct answer is (in 99.999999%) of the cases, yes. Exactly the same for design, art and all the other fields.<br />
For example:<br />
Is it possible to paint the roof of a massive church with an amazing stunning visage that will last for centuries and be considered a masterpiece, well yes (see the Sistine Chapel), you just don&#8217;t want to know how long or how much it will cost.</p>
<p>The more interesting question, &#8220;is how long will it take?&#8221;, if the estimate involves the words, &#8220;I know how to do or X seems to do that quite well&#8221;, then with luck the production team can sleep soundly. However if it&#8217;s considered &#8220;not sure I&#8217;ve seen anybody do that before&#8221;, then ignore any time estimate, its research and while given infinite time and resources likely solvable, infinite tends to upset spreadsheets.</p>
<p>Unfortunately many producers can&#8217;t handle that honest unknown assessment, Its ingrained into them that, &#8220;we need estimates, we need milestones&#8221; which make no sense at all for research. Research can take wrong paths and simply not go forward at any track-able pace, so the concept of milestones fail (a milestone is meant to show a linear extrapolation towards the result, but in research situations it&#8217;s not necessary linear progression, so extrapolating based on milestones is dangerous at best).</p>
<p>This leads to a fairly reasonable answer that then no business can do research. After all how can you cost something that&#8217;s unknown?</p>
<p>Well if you step back and reject some traditional thoughts about production, its is indeed doable. </p>
<p>1. Trust &#8211; you can only let those you trust, not to waste time, to have the lateral thinking and insight needed and the mindset of &#8216;playing&#8217; with the field. Hiring a researcher is hard, as those qualities are often only noticeable after you&#8217;ve seen someone through the fire of a product release, the only other guide, is have they done research elsewhere. That trust is vital, as you have to know they are working on the problem and have to ability to evaluate if something can be done (and honest enough to tell you). A good researcher may spend 6 months on a promising idea, to find it falls down at the last hurdle and that problem is fundamental and will take a long time to work around and so suggest its not worth continuing.</p>
<p>2. Cost &#8211; you need to realize that the cost of research (in games anyway) is mostly salary which you do know, the only unknown is how long you&#8217;re paying for them to find something. Once you&#8217;ve decided that someone is in a research role, how long it takes becomes to a certain degree unimportant. The cost is fixed, the outcome is variable. The hard part comes from where you place that cost in project based costing, my advise is usually to treat it the same what you cost HR staff and other non project related people, its simply a cost of doing business, making sure your studio is pushing frontiers in areas the company feels is right for them. To make it more palatable (at least in UK and Europe) there are tax breaks and even grants to encourage research, having researcher roles on the books makes that much easier to claim back.</p>
<p>3. Not dependent &#8211; you have to decouple it from any important dependencies, if you&#8217;ve sold your project to a publisher on a research topic, your risk level just went sky-high. Research should feed back into products when its ready not when its needed. Its always tempting to promise something amazing that&#8217;s halfway through its research, but try to avoid it, wait till everyone has decided &#8220;this works in all cases and is awesome&#8221;, before selling it to clients.</p>
<p>4. Inquiring mind vibe &#8211; without milestones, how do you know they are doing anything? Well its usually easy, a researcher will talk and ask questions to other people, when you ask them hows it going, they will get manic or depressive and go into a long explanation of whats currently good/bad. As a producer you don&#8217;t even have to understand, all you have to know that quiet is a bad sign. Research is inherently about the thrill of discovery and telling someone is a hard thing to keep in, if they are quiet (whether happy or depressed) its generally a bad sign (though not just a one-off quiet period, give it a little while, everyone has bad days/weeks!).</p>
<p>5. Communication &#8211; Even failed research is often very enlightening, so a great way of understanding where things are, is to encourage communicating with the rest of the company/team etc. However try not to do regular director or management presentations, let them speak to there peers who will understand it. Often things just aren&#8217;t presentable in a nice form except to people who understand the field well. Mini tech presentation in lunch hours, or wiki with work in progress notes and feedback comments, allow you to get those not in research also stretching their mind and hopefully speeding the research up as more brains is always better (ask any zombie ;) ). Its good to show everyone (especially those paying the bills!) when something is demonstrable, but forcing it to fit some non research schedule, doesn&#8217;t help the research. Nothing wrong with asking &#8220;got anything laymen can see&#8221;, but just allow the answer to be, &#8220;erm no not yet&#8221;.</p>
<p>6. Feel useful &#8211; After a piece of research is done, find someway quite quickly of using it or at least acknowledge its usefulness. A research piece on a new control system might not be applicable for the current games, but how about a mini game using it or a conference/blog post on it? A piece of graphics research might be too demanding now, but books and conferences allow it to be useful in the wider sense. Often the idea of giving something away after paying the research is hard to swallow, its hard enough to convince that paying for a researcher can be useful, let alone then giving those results to your competitors for free! But usually the secondary effects, of improved company PR and status, having others improve and adapt it and just that it will improve team morale are worth it. The other fact is that often its the researching itself not the results itself which are most valuable. When you do come to use the results, having the person who knows it from top to bottom and all the caveats is the ideal situation. The worst situation is to bury the research after its done, nothing says &#8220;why bother?&#8221; more than spending some time on something to see it put away like the Ark in the first Indiana Jones.</p>
<p>Having people doing research is a really good way of getting experienced staff brains working on stuff that really stands out. Some people might like it just as a break after a long hard project, others it&#8217;s a career move that doesn&#8217;t mean management or a the burdens of continual shipping.<br />
Most good games developers are creatives, letting them explore that away from the often soul-destroying reality of shipping products with its harsh rules of cuts, marketing decisions and other fun elements that we all love about the &#8220;business&#8221; is a great way of keeping talent and keeping fresh ideas flowing through a company.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/10/29/never-ask-if-its-possible-ask-how-long/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hit me with your Raytracing/Rasterizer stick</title>
		<link>http://www.altdevblogaday.com/2011/10/13/hit-me-with-your-raytracingrasterizer-stick/</link>
		<comments>http://www.altdevblogaday.com/2011/10/13/hit-me-with-your-raytracingrasterizer-stick/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 12:47:17 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Visual Arts]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=18681</guid>
		<description><![CDATA[<div style="width: 60%;float: left;text-align: justify">With my apologies to the late great Ian Dury for the title, today I&#8217;m getting violent and hitting innocent triangles for fun :O</p>
<p>The Raytracer versus Rasterizer debate often portrays the two systems as radically different ideas, with one fundamentally better than the other. However to a large degree they do exactly the same job, just phrased differently. What they both try to solve is <em><strong>hits</strong></em>, which is one of the key aspects of many systems in a game, but with a particular importance and focus for the visual side of things.<br />
<span id="more-18681"></span><br />
I define a hit as the intersection between an extruded ray or volume and some geometry in the scene. To demonstrate lets set up a really simple scene (I&#8217;m sure we all wish our real scenes were this simple!), that consists of a render-target of 2&#215;2 pixels (the checkerboard grid in the pictures) and 1 or 2 triangles (coloured red and blue). Green pointy cylinders represent intersection test, hitting if they have gone through the triangles.The ray tracer shown below, traces its rays <em><strong>from</strong></em> the render-target and each one separately calculates if it has intersected the triangle, in this picture, 3 hit, 1 missed.</p>
<div style="font-size: 80%;text-align: center"><a href="http://altdevblogaday.com/wp-content/uploads/2011/10/raytrace_example.jpg"><img class="alignnone size-full wp-image-18682" src="http://altdevblogaday.com/wp-content/uploads/2011/10/raytrace_example.jpg" alt="4 rays leave a framebuffer (res 2x2) and 3 intersect with a triangle" width="100%" /></a>Raytracer firing into a scene, 3 hit the triangle</div>
<p>A rasterizer works the other way, effectively tracing from the triangle surface <em><strong>towards</strong></em> the render-target.</p>
<div style="font-size: 80%;text-align: center"><a href="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_example.jpg"><img class="size-full wp-image-18683" src="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_example.jpg" alt="A triangle with 3 green hit indicators, intersects a 2x2 render-target, with 3 of the pixels being hit" width="100%" /></a>A rasterizer generates 3 hits on a render-target&#8221;</div>
<p>Even from this very simplistic version, its easy to see why a rasterizer can be seen as more efficient, only pixels in the render-target that are physical covered by each triangle are considered, whereas (in a naive) ray tracer, every pixel must test every triangle to know. In practice its various forms of coherence which make the real performance difference for both algorithms, however for now lets just call that an implementation issue and move on.</p></div>
<p><a href="http://www.altdevblogaday.com/2011/10/13/hit-me-with-your-raytracingrasterizer-stick/" class="more-link">Read more on Hit me with your Raytracing/Rasterizer stick&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<div style="width: 60%;float: left;text-align: justify">With my apologies to the late great Ian Dury for the title, today I&#8217;m getting violent and hitting innocent triangles for fun :O</p>
<p>The Raytracer versus Rasterizer debate often portrays the two systems as radically different ideas, with one fundamentally better than the other. However to a large degree they do exactly the same job, just phrased differently. What they both try to solve is <em><strong>hits</strong></em>, which is one of the key aspects of many systems in a game, but with a particular importance and focus for the visual side of things.<br />
<span id="more-18681"></span><br />
I define a hit as the intersection between an extruded ray or volume and some geometry in the scene. To demonstrate lets set up a really simple scene (I&#8217;m sure we all wish our real scenes were this simple!), that consists of a render-target of 2&#215;2 pixels (the checkerboard grid in the pictures) and 1 or 2 triangles (coloured red and blue). Green pointy cylinders represent intersection test, hitting if they have gone through the triangles.The ray tracer shown below, traces its rays <em><strong>from</strong></em> the render-target and each one separately calculates if it has intersected the triangle, in this picture, 3 hit, 1 missed.</p>
<div style="font-size: 80%;text-align: center"><a href="http://altdevblogaday.com/wp-content/uploads/2011/10/raytrace_example.jpg"><img class="alignnone size-full wp-image-18682" src="http://altdevblogaday.com/wp-content/uploads/2011/10/raytrace_example.jpg" alt="4 rays leave a framebuffer (res 2x2) and 3 intersect with a triangle" width="100%" /></a>Raytracer firing into a scene, 3 hit the triangle</div>
<p>A rasterizer works the other way, effectively tracing from the triangle surface <em><strong>towards</strong></em> the render-target.</p>
<div style="font-size: 80%;text-align: center"><a href="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_example.jpg"><img class="size-full wp-image-18683" src="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_example.jpg" alt="A triangle with 3 green hit indicators, intersects a 2x2 render-target, with 3 of the pixels being hit" width="100%" /></a>A rasterizer generates 3 hits on a render-target&#8221;</div>
<p>Even from this very simplistic version, its easy to see why a rasterizer can be seen as more efficient, only pixels in the render-target that are physical covered by each triangle are considered, whereas (in a naive) ray tracer, every pixel must test every triangle to know. In practice its various forms of coherence which make the real performance difference for both algorithms, however for now lets just call that an implementation issue and move on.</p>
<p>However this simple view quickly encounters a complication, when you have multiple triangles all hitting the same pixel, which one (or ones) deserve to actually colour the render-target?</p>
<div style="font-size: 80%;text-align: center"><a href="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_2tri.jpg"><img class="alignnone size-full wp-image-18686" src="http://altdevblogaday.com/wp-content/uploads/2011/10/rasterizer_2tri.jpg" alt="2 triangles rasterize into a 2x2 frame buffer, which colour goes in where they overlap?" width="100%" /></a>2 triangles rasterize but collide where the overlap the same frame buffer pixel</div>
</div>
<div style="width: 38%;float: right;background: #C0C0C0">
<p style="text-align: center"><strong>Ray tracing or casting?</strong></p>
<p style="text-align: justify;margin: 1%">Ray casting generally refers to firing a single ray and recording where this primary ray has hit, whereas ray tracing generally refers to the more advanced use of secondary rays and also the lighting path tracing that goes with it. This article is some-where in the middle, whilst I talk about multiple hits, and therefore primary and secondary rays I&#8217;m not talking about any of the lighting calculation, purely about the geometric solutions rather than complete renderer. Same for rasterizers, this is purely about the hit determination and not about all the other goodies that go into making a decent rendered image.</p>
</div>
<div style="width: 38%;height: 1%;float: right"></div>
<div style="width: 38%;float: right;background: #C0C0C0">
<p style="text-align: center"><strong>Naive theory versus practise</strong></p>
<p style="text-align: justify;margin: 1%">Lot of the discussion in this article, is deliberately naive and the most simplest of implementation, this may cause some to say its unbalanced. Saying a ray tracer checks each triangle versus each pixel just isn&#8217;t how most ray tracer work, however it is true in the highest, simplest description. I&#8217;ve not intended to suggest that the discussion here is by any means a good implementation, indeed I&#8217;m trying at least to start with to ignore implementations as many of the problems have been solved by clever people and algorithms. Nobody would build a ray tracer or rasterizer like described here, except for educational purposes. However sometimes stripping down something to its most naked form, allows you to see further and clearer than before. At least that&#8217;s my hope&#8230;</p>
</div>
<div style="width: 38%;height: 1%;float: right"></div>
<div style="width: 38%;float: right;background: #C0C0C0">
<p style="text-align: center"><strong>Simplified Glossary for this only!</strong></p>
<p style="text-align: justify;margin: 1%">Ray &#8211; an infinitismal thin line with a start point tracing a long a vector.<br />
Fragment &#8211; A hit from an intersection, but may not be related to final pixel colour in a render-target<br />
Pixel &#8211; An area on a render-target that can be coloured from geometry in a scene.<br />
Hit &#8211; An intersection on the surface of some piece of geometry along a trace vector to/from a pixel<br />
Index of Refraction (IOR) &#8211; How light direction is altered when passing through translucent sufraces. 1 is unaltered from the input vector.<br />
Render target &#8211; a rectangle grid of pixels that together form an image</p>
</div>
<div style="width: 38%;height: 1%;float: right"></div>
<div style="width: 38%;float: right;background: #C0C0C0">
<p style="text-align: center"><strong>To infinity and beyond!</strong></p>
<p style="text-align: justify;margin: 1%">Once you see the ray tracing and rasterization are two sides of the same coin, you can start to explore using the hardware we have to better effect. We have GPU with massively fast rasterizers, that also have huge ALU compute power which is ideal for ray intersection algorithms. Which is why this is all about hitting not how you determine the hit.</p>
<p>With high end D3D11 class hardware, we are almost full circle back to the software 3D days just with massive GPUs to help us. The question (that I suspect will take years to even begin to explore) is if, just using it to add a few effects to the traditional GPU / rasterizer pipeline (economically for a production engine this is all you can do at the moment) or rejecting rasterization and moving to ray tracing completely or something different from these two dominant paradigms, will be a path to better game visuals.</p>
<p>I personally have no doubt it will be the last option, something different but borrowing from many different existing paradigms including rasterization and ray tracing. I&#8217;ve been playing with my home research engine and top end D3D11 hardware as min spec, there are just <strong>too</strong> many possibilities. There are pages of forgotten papers and algorithms from the 70s and 80s, and ideas that haven&#8217;t been used probably due to the &#8216;insane&#8217; expenses back before the massive CPUs and GPU we have today.</p>
<p>Hopefully I&#8217;ll get to describe them in future, but rasterizing without z-buffers sure makes us old gits feel young again, I&#8217;ve taken to listening to 80s music just to make the vibe right ;)</p>
</div>
<div style="width: 100%;float: left;text-align: justify">Whilst the picture covers the rasterizer case, ray tracing has the same problem but with one major advantage. As the ray tracer casts from the render-target through each triangle at each pixel, each pixel has a list of all the possible fragments that might make up its colour. So its fairly easy to choose some rule to decide, the simple obvious one is closest fragment to the pixel wins and the pixel takes on its colour.</p>
<p>Rasterizeration means each triangle fragment doesn&#8217;t know where fragments from other triangles are, so without some additional outside communication, the frame buffer pixel will simply have to be happy with submit order or random colouring. The Z or depth buffer is a simple solution to first hit determination for rasterization, each render-target pixel keeps track of the depth of the closest hit so far, if a new fragment hit is closer, then update the colour and depth, if its further away just discard that fragment. The Z buffer provides a way of each triangle communicating with every other triangle in an extremely limited way, saying per pixel if this triangle is closer than any other.</p>
<p>The result is that for first hit, both ray tracing and rasterization have what essentially the same solution, just sort the fragments and pick the closest, the main difference is that with rasterzation with a Z buffer, the pixel on the render-target <em>only </em> has access to the first hit, whereas in ray tracing it has access to <em>all </em> the fragments along the trace vector. Of course for first hit detection you don&#8217;t care about fragments further than the closest so ray-tracing has no advantage over rasterization for this case.</p>
<p>But when you do (transparency, volume effects, etc.) ray tracing has this nice property, except its mostly not as useful as often assumed. Most people claim ray-tracing <em>naturally</em> handles things like shadows, refraction and other advanced effects but if you&#8217;ve read above, its not clear where this natural ability comes from, the only major difference we&#8217;ve noted is that each pixel has a list of fragments along its trace vector. Which only helps for transparency which has an Index of Refraction of 1, that is when the transparency transfer colour but does not alter its path. To change its path, or to check another trace vector, you need another ray. Which is of course is what a ray tracer does, each hit can optionally fire off additional rays (secondary rays) that trace a different vector, check if its visible from a light source, or even just to add extra samples to improve the anti-aliasing. Its a nice system, but perhaps controversially its not any more natural to ray tracing than it is to rasterization, as in almost all the cases its used in ray tracing its purely to find a first hit along the newly spawned ray which both systems are equally capable of. From a high level point of view, its as natural to rasterize out to a new render-target along the new trace vector to obtain exactly the same info. Ignoring performance, its just as correct to &#8220;spawn render-target for trace&#8221;, as it is to &#8220;spawn ray for trace&#8221;.</p>
<p>In practice tracing a new ray is often much simpler and faster, which is why these effects are largely restricted to ray tracers currently.</p>
<p>However both sides of the coin, are starting to look at other ways of looking at the hit problem to perform better or add extra capabilities. And that is where things are starting to get interesting&#8230;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/10/13/hit-me-with-your-raytracingrasterizer-stick/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why do people play and enjoy games?</title>
		<link>http://www.altdevblogaday.com/2011/09/17/why-do-people-play-and-enjoy-games/</link>
		<comments>http://www.altdevblogaday.com/2011/09/17/why-do-people-play-and-enjoy-games/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 09:42:06 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[#gamedev]]></category>
		<category><![CDATA[General Interest]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=16518</guid>
		<description><![CDATA[<p>Though there can be many answers to that question, perhaps the simplest answer is <em>escapism</em>.</p>
<p>No matter whats occurring in your life many people enjoy the ability to escape to somewhere else for a few minutes or an hour or two and just forget about real life for a bit.  Whether its scoring the winning goal in a football game or racing in an F1 car, shooting terrorists in a FPS or defending the realm against an evil wizard, that ability to skip to someone else is a compelling reason to spend time and money for most people.</p>
<p><a href="http://www.altdevblogaday.com/2011/09/17/why-do-people-play-and-enjoy-games/" class="more-link">Read more on Why do people play and enjoy games?&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Though there can be many answers to that question, perhaps the simplest answer is <em>escapism</em>.</p>
<p>No matter whats occurring in your life many people enjoy the ability to escape to somewhere else for a few minutes or an hour or two and just forget about real life for a bit.  Whether its scoring the winning goal in a football game or racing in an F1 car, shooting terrorists in a FPS or defending the realm against an evil wizard, that ability to skip to someone else is a compelling reason to spend time and money for most people.</p>
<p>Some may challenge the idea that games are anything more than a money making business, that all they do is make money and teach how to shoot and act irresponsible. I fundementally disagree, and whilst there are portions of the game development community who care not for there audience, the majority know and enjoy the fact that, first and foremost we are entertainers. I hold little patience for those who see game development purely as software development like any other or its just like writing business software, for me that misses what we actually do, creating worlds that entertain people, letting them experience to places and do things that help even for a short time escape reality.</p>
<p>The tag line of the once great RPG maker Origin was “We create worlds”, which should be the tag line of the entire industry, for it describes what we do fundamentally. Unlike almost all other escape mediums whether it be books, films or tv, games are interactive, for once you direct what happens which ultimately makes the escapism so much more powerful, its not just sitting back and absorbing someone elses heroism or ideas of how things should go.</p>
<p>The logical extension of that therefore is the people who need games to escape the most are those whom real lives are challenging.<br />
For an abused child, the ability to play football on there console with their hero might just be the thing that allows them to survive the horrors around them.<br />
For someone who is house bound due to illness, killing zombies can be the release that stops them going stir crazy, the social contact in an MMO guild might be a needed friendly chat to help cope with illness and pain.<br />
A parent who has spent hours tending to children at their worst, might need a few minutes escape to Peggle to calm down and relax enough to deal with the rest of the day.<br />
Even a well paid middle aged office worker, might need to release the pressure of business in a bad economy, by a few hours late at night shooting in an FPS to stop them going postal for real.</p>
<p>But we have a long way to go, social inclusion is if anything going backwards at the moment. The blogs and experiences of many female gamers attest to huge sexism rampant in many online communities. Most minorities will attest to similar issues, admitting your gay in an online game would almost guarantee abuse. Disabled gamers along with the verbal insults other minorities suffer in the games they can play, find many games simply exclude them completely being unplayable unless you are a picture of health and ‘normal’ function.</p>
<p>Currently the industry ignores it, there is no real business data about how much damage it causes to the bottom line and yet it can take considerable costs to fix so the easy option is to ignore. Having male and female characters (that aren’t wearing metal bikinis) to play, costs art and animation time, extra space on disk/download and even extra writing if done well to at the very least de-genderise the dialog. Ensuring online community uphold the normal social norms and protect people from bullying would be required (in most real communities, shouting “tits or GTFO” wouldn’t be acceptable but its likely the first things most women get if they don’t hide there gender online). Providing proper audio cues for the blind, requires more than just subtitling the movies. Proper controller remapping support and ensuring the game can be tweaked to allow other forms of disabilities to play even more so.</p>
<p>The question the industry should be asking asking is, is it worth it? How many female gamers are there and would be if treated properly, how many disabled gamers are there wanting to buy our products?<br />
From a strict business point of view, it would take economic data that I simply don’t have, though my gut feeling is that it probably would be worth it. However from an entertainment/enjoyment point of view, it easily makes sense, if our prime reason for developing games is to entertain and let people escape, then the more people who can get that via our medium the better.</p>
<p>Ultimate even if its not strictly a win economically in the short term, it may well be in the long term, the more gaming as entertainment becomes inclusive and the norm, the more money will eventually flow into the industry coffers.</p>
<p>The question therefore becomes, how do you achieve the changes needed for inclusion to happen, when the majority of the money men who ultimately decide what can be made, are likely affluent white fit males who care more about the company share holders than the entertainment and escape value of the games they fund and sell?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/09/17/why-do-people-play-and-enjoy-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Timing is Everything?</title>
		<link>http://www.altdevblogaday.com/2011/07/15/timing-is-everything/</link>
		<comments>http://www.altdevblogaday.com/2011/07/15/timing-is-everything/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 10:43:46 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[#gamedev]]></category>
		<category><![CDATA[Bizdev]]></category>
		<category><![CDATA[General Interest]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=11559</guid>
		<description><![CDATA[<p>A common argument from publishers recently, is that a titles success is dependent on its release date. The concept that if you release in the same week as &#8220;Huge IP 6 : return of the WW2 zombies &#8220;, your doomed to the bargain bin of life.</p>
<p><a href="http://www.altdevblogaday.com/2011/07/15/timing-is-everything/" class="more-link">Read more on Timing is Everything?&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>A common argument from publishers recently, is that a titles success is dependent on its release date. The concept that if you release in the same week as &#8220;Huge IP 6 : return of the WW2 zombies &#8220;, your doomed to the bargain bin of life.</p>
<p>Most recently the same argument has been put forward by Take 2 for the reason <a title="MCV" href="http://www.mcvuk.com/news/read/interview-christophhartmann-2kgames/082216/1" target="_blank">Bioshock 2</a> didn’t sell as much as hoped.</p>
<p>So is that it?</p>
<p>Is the only thing that guarantees success or failure of smaller IPs, is the timing its released in?</p>
<p>Well erm no, sorry this is an excuse for a marketing mistake. If you produce a good game and market it correctly timing is irrelevant (excluding date specific tie ins like Olympics), because if its good and has a presence; people will buy it at some point if you remind them.</p>
<p>Borderlands is a great example, one of my favorite games of all time and I have no idea when it was released. Being (like most adults) busy it was released under my radar, but a few months later a few people still mentioned how good it was and in particular a friend who I team play with a lot, suggested it had awesome co-op. So it was brought and since then I’ve also brought all the DLC and Borderlands 2 is an instant buy&#8230; but probably not on day of release, I’ll buy it when I can play it, when life, work and friends meet with a gap in my schedule.</p>
<p>Bioshock 2 is a bad example, I loved Bioshock 1 (I even own 2 copies, the 360 I played first and then brought it again on PC), but I don’t own Bioshock 2 (yet). There has been no chatter amongst my friends, no real excitement or suggestions I need to play this or any reminders.</p>
<p>tbh I thought it hadn’t been released yet :O</p>
<p>As such I haven’t got round to it, I’m sure I will (in fact oddly the article will properly remind me to pick it up soon) but there has been no push to remind me that I should buy it.<br />
Mass Effect 2 did and was picked up but not in the week it came out. Even today, your far more likely to hear someone mention how good Mass Effect 2 is and if you hadn’t played it, get a shocked look and “you must play this”.</p>
<p>Everybody who games, sometimes gets excited by a title and wants it on the day of release. However I bet most adults who game don’t only buy a game in week 1 and 2. They will get it, *if* they have heard good things, and are reminded when they have time to pick up and play a game.</p>
<p>So if Take 2 think it was the timing, it wasn’t, it was your marketing.<br />
Remind me every month its out and make it good so people are talking about it.<br />
Stop thinking that blowing your load in 1 week and then nothing else is a good marketing strategy, its not and I doubt ever has been.</p>
<p>Games aren’t films, they don’t have premiere, short movie release, DVD then TV time depreciation.</p>
<p>Games release and then stay as good as they were for at least a year. So use that fact, take you marketing budget and split it into 10 chunks over the year. Sure your headline figures won’t be as good, but if your have good word and mouth and reviews, you get 10 chances to remind someone to pick it up, as fresh to the gamer as the day it was released!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/07/15/timing-is-everything/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The future is fluffy!</title>
		<link>http://www.altdevblogaday.com/2011/07/01/the-future-is-fluffy/</link>
		<comments>http://www.altdevblogaday.com/2011/07/01/the-future-is-fluffy/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 06:46:40 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
				<category><![CDATA[General Interest]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://altdevblogaday.com/?p=10108</guid>
		<description><![CDATA[<p>Extra Fluffiness is coming to games dev, without a single kitty pic!</p>
<p>We are all going to have to learn and live with the cloud. A word that already has a million different connotations and usages before we even entered the mix, type cloud into Google and endless amounts of tech blogs and info on the the subject will pop up.</p>
<p><a href="http://www.altdevblogaday.com/2011/07/01/the-future-is-fluffy/" class="more-link">Read more on The future is fluffy!&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Extra Fluffiness is coming to games dev, without a single kitty pic!</p>
<p>We are all going to have to learn and live with the cloud. A word that already has a million different connotations and usages before we even entered the mix, type cloud into Google and endless amounts of tech blogs and info on the the subject will pop up.</p>
<p>The first use of the word &#8216;cloud&#8217; in IT,  is the original hardware based one, making normal server a little bit more fluffy.</p>
<p>At the heart of the idea of the cloud, is that a server can stop being a concrete fixed thing and instead become some nebulous slightly undefined thing on the internet, with no hard edges and the internals obscured from the outside world.</p>
<p>You no longer have a file server, consisting of a big chunky server with a fixed name and IP filled with disks and now have a storage cloud with a name and IP that&#8217;s made from N virtual servers with lots of disk or a SAN.<br />
Of course many cynical old IT and techies will point out that the old fashioned file server were actually usually made of N servers, so in fact whats the difference and isn’t this just a whole load of buzz word renaming, to sell some nice new emperors clothes?</p>
<p>And those cynics are to a certain extent right! (watch the hate mail come in from all the new cloud vendors ;) ) but they are also wrong, there is something new here as well (phew letter bombs won’t be posted to me!), whats new is the fluffiness (hence the title).</p>
<p>Take the storage cloud example, to the users and applications it presents a simple storage API and that&#8217;s it. All the nuts and bolts are hidden, if I need to stripe across extra disks, or even servers, the users never know. If I need to move all the data onto new servers, the users never know. They see and interact the edge of the cloud and what lies within is opaque.</p>
<p>That&#8217;s important as it allows the cloud to expand and contract, change and update without requiring the clients to be any the wiser. Which means it can now start to be something permanent, something you can add to your games and not have to worry about how your data is stored.</p>
<p>Okay i’ll write more about the cloud in future, but to increase the fluffiness quotient here&#8217;s a kitty picture!</p>
<p><a href="http://altdevblogaday.com/wp-content/uploads/2011/07/yuki_cute_small.jpg"><img src="http://altdevblogaday.com/wp-content/uploads/2011/07/yuki_cute_small-1024x768.jpg" alt="" width="632" height="474" class="alignnone size-large wp-image-10109" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/07/01/the-future-is-fluffy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t scrimp on Hardware!</title>
		<link>http://www.altdevblogaday.com/2011/05/31/dont-scrimp-on-hardware/</link>
		<comments>http://www.altdevblogaday.com/2011/05/31/dont-scrimp-on-hardware/#comments</comments>
		<pubDate>Tue, 31 May 2011 15:43:07 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
		
		<guid isPermaLink="false">http://altdevblogaday.org/?p=7149</guid>
		<description><![CDATA[<p>Whilst true of all disciplines I expect, I&#8217;ll talk about this one purely from a coder perspective, mostly because as a code lead, over the years the efficiency of the team has been something I&#8217;ve spend a lot of time thinking about.</p>
<p><a href="http://www.altdevblogaday.com/2011/05/31/dont-scrimp-on-hardware/" class="more-link">Read more on Don&#8217;t scrimp on Hardware!&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Whilst true of all disciplines I expect, I&#8217;ll talk about this one purely from a coder perspective, mostly because as a code lead, over the years the efficiency of the team has been something I&#8217;ve spend a lot of time thinking about.</p>
<p>There are many aspect of team efficiency, but this article is going to focus on the easiest to implement. Which is simply &#8220;Open you wallets and buy the best, hell no, buy better than the best&#8221;. This makes sense in big budget AAA projects, where often spending the money is the easiest, fastest and most available why of improving efficiency NOW. Its not necessarily the best but its one that can be implemented with almost no downtime and no other resource costs except cash (and IT infrastructure). A cash solution is rare in large projects where communication, acquiring staff, deadlines and morale are all significant issues affecting efficiency but also much harder to solve.</p>
<p>Often saving a bit of money on HW is seen to make sense for the project (a penny saved, etc.), but its a false economy IMHO, in fact I&#8217;d go as far as to say, the best hardware is more important than the millions your likely to end up spending on AAA marketing. Because marketing has to have something to sell, and the easier way you can make a better product is to make your most precious asset (your team) happier and more productive.</p>
<p>Some of course will say, with a decent hierarchical, incremental  build system, building your game shouldn&#8217;t require crazy hardware as you shouldn&#8217;t be compiling many files at once for a typical  small update, to which I say&#8230; true and also aerial porcine encounters  do happen (they do honest!). Its not that you can&#8217;t solve it in  software, its just you won&#8217;t. Its hard to maintain, its expensive  man-power wise and that cost goes up the more productive the team is  and then it only helps if you really aren&#8217;t changing a major underling  system. The reality is, the spider web of files will mean that most  people will be compiling a significant number of files at once, a fair  portion of their working day.</p>
<p>So optimize and pay for the worse case (which is the only case I&#8217;ve ever encountered), your build complexity will grow exponentially as the projects evolves. Now don&#8217;t get me wrong, there is much to be done and <strong>should</strong> be done in software to reduce build times but it doesn&#8217;t reduce that fact that good hardware == faster in almost all cases. And faster == more stuff done AND happier team members.</p>
<h2>How MUCH?!</h2>
<p>So i&#8217;ve convinced you to throw money at the problem, awesome! So then what should you buy?</p>
<p>This is where I&#8217;m likely to scare the managers reading this who until now have been smug thinking &#8220;we do that! we are awesome&#8221;. Outside my job I also (some where along the line, not sure where) got involved with serious hardware, the stuff you don&#8217;t buy, you build (or pay someone else to build), the stuff enterprises pay tens or hundreds of thousands of pounds and dollar for software support contracts per year :O</p>
<p>Now i&#8217;m not suggesting you spend that on software contracts, because tbh your programmers will likely love fiddling with a decent system but I do think you need to start thinking in that league as regards hardware. Start with a rough £10,000 or $15,000 budget per programmer per couple of years on hardware only, and your approaching what I call &#8216;good&#8217;.</p>
<h2>So what should I get for that kind of cash?!</h2>
<p>Suspect I&#8217;ve not got many left this far down this article, but here comes the more precise side of things.</p>
<p>Ignoring build distribution for the moment, building any large games consists of three main bottlenecks</p>
<ol>
<li>Memory &#8211; how much stuff I can fit in</li>
<li>Cores/HW threads &#8211; how many things can I build at the same time</li>
<li>Disk &#8211; how fast can I get stuff into memory so my cores can work on it</li>
</ol>
<h2>Memory</h2>
<p><strong>Memory = normal usage + ~1 GiB per core + RAM Disk for temp files + cache for all source code, tools, the game, etc. at the same time!</strong></p>
<p>So lets justify that,</p>
<ul>
<li>Normal usage is running IDE, web browser, email client, etc. Currently I find 8GiB is about right, as usually enough to run your PC build/tools/Debugger whilst actually building.</li>
<li>1 GiB per core, my current rule of thumb is that to compile happily the compiler likes about 1 GiB of workspace, particularly true with large projects and templates (like boost), some compilers are much more frugal than others but others can be crazy wasteful. Given 1 GiB per core gives you the head room for the bad boys of the compiler world. You want 1 GiB per core, because we are going to make sure that every bit of the platform is ready so that no time is wasted, every core is going to used at the same time.</li>
<li>RAM Disk, compilers are chains of operations, that write out lots of temporary or rebuild-able files. You know that, the compiler knows that, but most filesystem don&#8217;t have a way of saying (except via tmpfs type systems, which essentially we are creating manually) we are writing, but if I lose it all its not really that important. No matter what disk architecture you go for, minimizing writes that don&#8217;t need to be persisted will maximise its performance. A RAM Disk makes this easy, you direct all your .lib, .obj, .pdb, .exe, etc. files that can be rebuilt to your temporary RAM Disk, this means 99% of your writes are now free of disk bottleneck and running at the fastest speed possible. When you reboot your system or it crashes worse case you have to rebuild them all, however most RAM disk have to option to writes permanent storage out on shutdown, so except for crashes it appears as normal very fast drive.</li>
<li>Cache, the best place to read your files is from your disk cache. 99% of your source files won&#8217;t change each compile, so they can sit in your systems file cache lovely. But you need enough to fit all the files your compile references AND all the other things you might be running inbetween. A common dev cycle is compile, debug, compile, debug, ad finitum. Which means you want enough cache for not only the development files but also any non-streamed files on disk (depending on platform, files to the console might go through system cache or not, but best to assume that will go through cache) and the debugger and other things that will fill you cache during the build/debug cycle.</li>
</ul>
<p>The key take away point, is that if you don&#8217;t have enough memory to support your cores/hw threads, your wasting your CPUs time, and if you don&#8217;t have enough memory for cache/RAM Disk, you are forcing your disks to over extend themselves also slowing your development process down.</p>
<h2>Core / HW Threads</h2>
<p><strong>Cores / HW Threads = number of files that can be build + 2</strong></p>
<p>Practically you are going to be limited by how many cores and threads you can buy in a single system. The +2 is to maintain system responsiveness even under heavy load, in practice it doesn&#8217;t matter as we generally have more files than cores.</p>
<p>Cores and HW threads, actually do your compiling and building, so the more you have the more in theory you can get done at once. So as long as you have the disk and memory to feed them well enough, you want the most you can buy. This is where you leave the common world of desktops, its time to take a walk over to server aisle of the shop.</p>
<p>The reason is 2P or not 2P (4P!), no not a misquote of Shakespeare but the P stands for processors, because whilst you might get single processor with up 12 HW threads in x86 land, thats just not enough. Given the characteristics of iterative builds, as long as we the RAM we scale fairly horizontally (number of cores) well. So more processor sockets,the faster stuff gets done.</p>
<p>Current a 2P Xeon system will get you 32 HW threads, a 4P AMD system will give you 48 HW threads. Thats ALOT of processing power over a bog standard &#8216;workstation&#8217; and it really shows in building and compiling. Its may seem expensive, but it makes development much more pleasant and efficient, if a build takes too long, coders will loose their place &#8220;in the zone&#8221; (lolcat&#8217;s is just too damn addictive). The faster they get back to the problem, the better.</p>
<p>The other point in favor of server hardware is reliability, as a general rule, servers system run for months and months without an issue. That often can&#8217;t be said for &#8216;extreme&#8217; desktop platforms.</p>
<p>There are several issues,</p>
<ol>
<li>Its not representative of PC gamer rigs, if that a problem, simple add another PC gamer box to you devs desk.</li>
<li>Noise, servers are designed to run in data centers, where ear protectors are standard equipment in many cases. Not ideal for your quiet office, there are two solutions, one keep all the machines in a quiet room and use keyboard/mouse/video/audio/usb extenders to each desk or buy special quiet server cases to set at the coders desk. Of course there is always fashionable ear protectors as well&#8230;</li>
</ol>
<h2>Disks</h2>
<p><strong>Disk = (low write speeds (yay for RAM DISK) + high read speed to fill the disk cache ) + fast boot/load + fast source control update (fast small file reads and writes)</strong></p>
<ul>
<li>If you&#8217;ve set up the RAM sizes as indicated above, normal building won&#8217;t actually need the disk much as it will be largely in RAM</li>
<li>We all like things to boot and load fast, and also for those first or full build situations we do want that to be relatively fast</li>
<li>Source control system can be nasty for filesystems, often checking and updating gigabytes spreading across hundreds of thousands of files. Lots of IOPS and out of order r/w are good</li>
</ul>
<p>Two solutions here, 1 for each programmer and one for a small group.</p>
<ul>
<li>Each programmer is simple, buy a few PCI-E SSD and RAID10 them together. This gives you your boot and local disk, fast enough to fill your RAM cache at break neck speed. Shouldn&#8217;t need to be too big, as most things will live in the next item.</li>
<li> Amongst a small group of developers, connect a SAN via 10GB ethernet or infiniband to each machine, a SAN is a machine on the network which only job is to provide very fast, very safe storage. Each SAN has its own complete system of caches and software to allow out of order delayed writes (safely), so that the main limit is network throughput, hence the 10GiB networks. Also using RAID replication and ERC technology means data can survive disk failures and other problems. There are stupidly expensive enterprise SANs which cost ouch amounts of cash, however luckily that&#8217;s all smoke and mirrors to a large degree. Using a system like OpenIndiana, with some SSDs, a dozen spinning rusts (AKA traditional hard drives) and perhaps a DDRDrive accelerator, you can for moderate amounts, have speed and iops to spare, all sitting in a nice little server connected directly to a bunch of programmers machines via a fast network.</li>
</ul>
<h2>In conclusion</h2>
<p>CFO and bank managers will hate me, but I stick by my belief that your staff, your team are the most important part of any project, and that means buying them the best equipment so that they spend there time using that talent and not watching busy cursors and build outputs scrolling slowly up the screen.</p>
<p>Their is more to hardware than whats here, from displays to build  machines, project progress displays, video conferences, etc. this has  just been the focus on the very smallest but most personal part of a  realistic hardware capitol expense for making worlds.</p>
<p>Today to buy a 64GiB RAM, 48 Core AMD workstation with multiple PCI-E SSDs per programmer is going to come as a shock, as we have got used to skimping on hardware, forcing the team to with work with little better than gaming platforms. Its never been true in many other performance computing sectors, and we need to realize thats what we do, we make some of the most complex performance software in the world. Just be glad we don&#8217;t need arrays of super-compute machines to build our worlds, well yet&#8230;</p>
<p>Its worth noting this isn&#8217;t just a spend spend spend article (well it is but&#8230; :P), I&#8217;ve spent  years looking into this aspect of builds and the basic approach here  works for lower expense systems to. Coder systems need balance, lots of cores on their own won&#8217;t cut it, RAM and disks are equally important, so even lower down the cost scale, don&#8217;t just accept an office or gamers rig, we have very different performance characstics than normal machines.</p>
<p>Perhaps next up is the much  harder topic of software and configuration for build systems, if only  that was as easy as spend spend spend!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/05/31/dont-scrimp-on-hardware/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Practise makes perfect</title>
		<link>http://www.altdevblogaday.com/2011/05/02/practise-makes-perfect/</link>
		<comments>http://www.altdevblogaday.com/2011/05/02/practise-makes-perfect/#comments</comments>
		<pubDate>Mon, 02 May 2011 06:38:43 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
		
		<guid isPermaLink="false">http://altdevblogaday.org/?p=4995</guid>
		<description><![CDATA[<p>Just a short one, as a) I&#8217;m late and b) i&#8217;ve been making a game, from scratch in &#60; 48 hours!</p>
<p>LudumDare is a regular make a game in 48 hours compo, that Number 20 has just finished.</p>
<p><a href="http://www.altdevblogaday.com/2011/05/02/practise-makes-perfect/" class="more-link">Read more on Practise makes perfect&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Just a short one, as a) I&#8217;m late and b) i&#8217;ve been making a game, from scratch in &lt; 48 hours!</p>
<p>LudumDare is a regular make a game in 48 hours compo, that Number 20 has just finished.</p>
<p>The rules are simple, 48 hours, 1 person, based on a theme announced at the start. All code/art/sounds must be generated in those 48 hours. Only exceptions are pre-published libraries (the source must be available before the start, so others can use).<br />
At the end of the 48 hours publish it on the web (with source) and my the best man/women/robot/alien/kitteh win!</p>
<p>Many professional game developers may think, this isn&#8217;t useful for them after all they work with millions of dollars projects with team of hundreds but thats only true if your are a specialist. If you are multi-discipline particularly with one foot in game design, then the intense crucible of such a short period of time is great mental exercise.</p>
<p>The ability to come up with an idea, implement it and more importantly change it is a skill and like all skills practise makes perfect.</p>
<p>For my entry, I would twice have to make radical changes to keep things moving. The first happened early and was having to accept the first idea, was just too complicated and needed down sizing, the second was caused by a failure to get one key design concept practically working.<br />
I had chosen colour blending as a key operations (red + blue = ???), but getting a stable mixer that fitted how we expect colours to change was harder than I expected, so 12 hours before release I had to scrap it.</p>
<p>Is the game, a shining example of art, design, sound or code? Nope, but its simple puzzle mechanic made real. I can already see many many things, but I thikn with polish it would make a fine mini-game&#8230; and being done in about 36 hours (I needed my sleep!) thats imho a good thing!</p>
<p>A total of 300 people submitted a game, which means 300 people where able to build a small interactive experience in a weekend. Many/All of these are more complicated and fun than most of the mini-games, AAA games add in!</p>
<p>My entry is Liquid Choices and you can play here<br />
<a title="My LD48 Entry - Liquid Choices" href="http://blog.deanoc.com/wp-content/uploads/2011/05/tricolour.swf"><img src="http://blog.deanoc.com/wp-content/uploads/2011/05/liquid_choice.jpg" alt="Liquid Choice game" />LD48 &#8211; Liquid Choices</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/05/02/practise-makes-perfect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>State of the Nations</title>
		<link>http://www.altdevblogaday.com/2011/04/16/state-of-the-nations/</link>
		<comments>http://www.altdevblogaday.com/2011/04/16/state-of-the-nations/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 09:26:58 +0000</pubDate>
		<dc:creator>Deano</dc:creator>
		
		<guid isPermaLink="false">http://altdevblogaday.org/?p=4144</guid>
		<description><![CDATA[<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">More  than ever, the game development process has fragmented into nation  states with theological and ideological differences, the three great  traditional super-powers are joined by four smaller areas all jockeying for  power and influence.</span></p>
<p><a href="http://www.altdevblogaday.com/2011/04/16/state-of-the-nations/" class="more-link">Read more on State of the Nations&#8230;</a></p>
]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">More  than ever, the game development process has fragmented into nation  states with theological and ideological differences, the three great  traditional super-powers are joined by four smaller areas all jockeying for  power and influence.</span></p>
<p style="text-align: justify"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;text-decoration: none;vertical-align: baseline"><span id="more-4144"></span>The nations</span></p>
<ul style="text-align: justify">
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Artopa</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Codeish Empire</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">United Designers of Gamerica</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Soundan</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Testania</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Managerance</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">PRazil</span></li>
</ul>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">The  <em>Codeish Empire</em> is the oldest, with arcane practices and traditions the  reasons for which, are long lost in the mists of time. It is by far the  largest supplier of Code in the world, but other nations do sometimes  provide small amounts. This precious resource powers the entire world,  so gives them considerable influence. However the Codeish Empire  struggles to maintain its prestige, as increasingly  the precious resources of Performance and Memory it once controlled have  become less important in the global economy.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Artopa  appeared soon after the Codeish Empire moved into the game arena, at  first a seemingly minor role providing small amounts of Graphics to the  mighty Codeish Empire, this has now grown to be the dominant requirement in  the world and with the power that comes from that. However much  resources is spent skirmishing on the borders with the Codeish Empire,  over the disputed border of Toolland and ResourceBudgtaina. This is  especially fierce in the rich but wild region of Consolica.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">The  <em>United Designers of Gamerica</em> were once a part of the Codeish Empire,  but split in the revolutionary war of the 90s. Since then they believe  they have a mandate to rule the other nations as the keepers of the holy  Gameplay. Often the power Artopa holds baffles them, with the value of  Graphics trading much higher than Gameplay in many markets. This has  lead to extremists, the </span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">IDA  (Indy Design Army),</span><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline"> who believe in a no Graphics future, however even with some notable successes, this has  yet to have a wide ranging effect on the balance of power. Sharing the  heritage with Codeish Empire, means close ties with many in the old land  and indeed dual citizenship is not unknown, however there is often a  feeling that the Codeish Empire wishes to re-absorb them, which can lead  to some distrust and friction.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline"><em>Soundan</em> like Artopa is appeared at roughly the same time, however unlike Artopa  never managed to grew into a super power. Land mass is much smaller,  often only covering a tenth of the size of its bigger brethren, but its  maintains a strong degree of power as the exclusive producer of the Audio  resource.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline"><em>Testania</em> has a large low tech economy that the other nations frequently require  access to on a seasonal basis. Even though required by the other  nations, the value placed on it is low. Also it has a highly migratory  population, with many citizens leaving after short stays, some emigrate  to other nations which helps there local economies at the expense of the  local Testania economy.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline"><em>Managerance</em> is a loose federation of the countries of Produceration and Managerance,  with little natural resources, the economy is primarily taking the raw  products produced by the other nations and amalgamating them into a  better overall product. However the consumers of its goods are often  fickle and demanding, which combined with the supply difficulties of  acquiring the raw goods from the other nations leads to regular  failures. However successes can lead to the highest standard of living  in the world.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline"><em>PRazil</em> is a closed state that keeps largely to itself. Distrusted by most of  the other nations, its hides its inner working from sight. Offset from  the rest of the world, it has gained much power in recent years principally by asserting that only it really understand the worlds  markets, and as such demands tribute to apply its magic hidden formula  to the other nations output. Strangely its citizens do not often consume  the products it works with. Its influence is felt world wide but a  border with Managerance causes the most activity there.</span></p>
<p style="text-align: justify"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;text-decoration: none;vertical-align: baseline">The multinationals</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Whilst  most of the inhabitants are happy to live in the confines of a single nation, a few brave  souls cross the borders, as diplomats easing the tensions between nations. Their ability  to understand and work with two different cultures helps avoid many  skirmishes and wars, and increasingly seen as a key method in a stable  peaceful world.</span><br />
<span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Some peoples are born in one nation, but go study and work in another. Examples include (but not limited too)<br />
</span></p>
<ul style="text-align: justify">
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Technical  Artists, cross the boundaries between Artopa and the Codish Empire,  providing code solutions for artists and translating the arcane language  of the Coders into Artopian.</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Technical  Designers, make Gameplay directly in the language of the Coders without  the confusion of the translations most designers work in.</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Art Manager / Art Producers, try bringing order to the free process of the Artopian soul.</span></li>
</ul>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Perhaps  the strangest and most confusing bunch are those who have no single  parent nation. Happy and fluent in multiple nations cultures, they combine the  best (and worst) of each nation. However with this great power comes a  loneliness of never truly being accepted by any nation, a life of vagrancy never settling in one place for long. They are  rarely allowed to be truly multinational at any one time, instead forced  to flip and choose a single nation home at any one moment.</span></p>
<ul style="text-align: justify">
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Designer  Programmers are a breed that it fluent in both languages and cultures.  One moment considering the implications of balancing the resource  feedback loop to the difficulty level, the next wondering if moving from  a tree structure to an array will be more cache friendly.</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Art  Designers bring an eye for the beauty to the rules of interactivity,  producing work that often bring surprising game-play by virtue of  artist quality.<br />
</span></li>
<li><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Design  Managers, the people use the constraints of management and balancing  the books to enhance the design by knowing the limits instead of  cutting features.</span></li>
</ul>
<p style="text-align: justify"><span style="font-size: 12pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: bold;font-style: normal;text-decoration: none;vertical-align: baseline">Final Words</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Obviously  this is a slightly humorous look at the tensions and interplay between  the disciplines, but it does sometimes seem like we are at war with ourselves. As a Designer Programmer of more years than I care to remember, I&#8217;ve  certainly seen frustration and opportunities missed due to bad  communication, mistrust and sometimes open hostility between the groups.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">At  the moment we see a few Technical Artists and Technical  Designers roles, but it is rare to see any for the deeper dual  discipline people. I once was employed in such a role, and within days  internal politics and fear about the carefully controlled departments,  meant that I was asked to change to a Programmer helping designer role, the development structure simply could not  consider someone who was equally at home, and wished to work in both departments equally. Literally the border between the nations was closed.</span></p>
<p style="text-align: justify"><span style="font-size: 11pt;font-family: Arial;color: #000000;background-color: transparent;font-weight: normal;font-style: normal;text-decoration: none;vertical-align: baseline">Huge  amounts of talent and resources is IMHO wasted by the strict departmentalisation and specialisation that most companies use. Of course many people are happy to live in a single nation, but  anybody who feels even the slightest inclination to see how the other  sides live, I&#8217;d suggest to go for it. The more we throw off the labels and  borders that we ourselves have placed, the more productive and higher  quality games we will make!</span></p>
<p style="text-align: justify"><span style="font-size: medium">So next time someone suggests a programmer can&#8217;t design, that an artist can&#8217;t be technical or a designer can&#8217;t manage</span></p>
<p style="text-align: justify"><img class="posterous_plugin_object posterous_plugin_object_image" src="http://posterous.com/getfile/files.posterous.com/temp-2011-04-09/irkIAsJsAdtCqDArfGJzDnrnhAlknEFHysJjhrimFbwkBAfynAkepeCmJFjG/RageFace.jpg.thumb100.jpg?content_part=mJxgqyAEJgAjqaHhpceF" alt="" width="244" height="244" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.altdevblogaday.com/2011/04/16/state-of-the-nations/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

