<?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>Hazel McKendrick &#187; Screw The Nut</title>
	<atom:link href="http://hazelmckendrick.com/journal/tag/screw-the-nut/feed" rel="self" type="application/rss+xml" />
	<link>http://hazelmckendrick.com</link>
	<description>Programming and Games Technology Portfolio</description>
	<lastBuildDate>Tue, 07 Sep 2010 23:07:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>How We Make Games</title>
		<link>http://hazelmckendrick.com/journal/how-we-make-games</link>
		<comments>http://hazelmckendrick.com/journal/how-we-make-games#comments</comments>
		<pubDate>Mon, 24 Aug 2009 19:06:07 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[dare to be digital]]></category>
		<category><![CDATA[Dare To Be Digital]]></category>
		<category><![CDATA[digital colony]]></category>
		<category><![CDATA[group project]]></category>
		<category><![CDATA[pollen]]></category>
		<category><![CDATA[Screw The Nut]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Some Assembly Required]]></category>

		<guid isPermaLink="false">http://killercodingninjabunny.com/?p=1313</guid>
		<description><![CDATA[Unless you&#8217;re new around here, you&#8217;ll have heard that over the summer I was working on Pollen with Digital Colony. The team of five was composed of three programmers (myself, Ian and Kieran) who had worked together before, along with two artists (Jess, and Abi who also took on the role of team leader). Our [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/fish.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/fish-300x129.jpg" alt="fish" title="fish" width="300" height="129" class="aligncenter size-medium wp-image-1319" /></a> </p>
<p>Unless you&#8217;re new around here, you&#8217;ll have heard that over the summer I was working on Pollen with <a href="http://digitalcolony.co.uk">Digital Colony</a>.  The team of five was composed of three programmers (myself, Ian and Kieran) who had worked together before, along with two artists (Jess, and Abi who also took on the role of team leader).  Our previous project, Some Assembly Required, experienced mentors had introduced us to Scrum and given us advice throughout the development process.  Moving on to work on Pollen we had a fair idea of what had worked for us and areas we could improve. <span id="more-1313"></span></p>
<p>&nbsp;</p>
<h2>It&#8217;s Kinda Like Scrum &#8230;ish</h2>
<p>        Before we began developing Some Assembly Required, our first group project, we all did some reading on agile development and in particular on Scrum.  As I&#8217;m sure most people can guess &#8211; actually following a development methodology in practice is nothing like learning about it in theory.  Although we continuously refined the way we worked and organised the project, having a framework on which to base our development made a huge difference.</p>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/USEspider.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/USEspider-300x129.jpg" alt="USEspider" title="USEspider" width="300" height="129" class="aligncenter size-medium wp-image-1322" /></a></p>
<p>&nbsp;        </p>
<h2>Using A Wiki</h2>
<p>        Partway through our first project we started using a wiki to track development, and we haven&#8217;t looked back since.  Of course there are benefits to storing a spreadsheet or text document in source control, using a physical board or using specific management software, but wikis have several important features for us:</p>
<ol>
<li>We can access it from anywhere with an internet connection.</li>
<li>It&#8217;s easy to share with anyone looking over the project, unlike a file stored in source control.</li>
<li>There&#8217;s little overhead in terms of setting it up and creating sortable tables.</li>
<li>Wikis support mixed media and internal links &#8211; you can easily connect pages about the areas you are working on.</li>
<li>Unlike fully fledged project planning software, all formatting is self imposed &#8211; you can easily change what information you store and how you use it.</li>
<li>We can keep all the information for bug tracking, priority lists and game design in one location.</li>
</ol>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/target1.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/target1-300x129.jpg" alt="target1" title="target1" width="300" height="129" class="aligncenter size-medium wp-image-1320" /></a></p>
<p>&nbsp;    </p>
<h2>Priority Is King</h2>
<p>        Although each programmer on the team had ideas about how they would like to specialise, let&#8217;s face it we&#8217;re all pretty inexperienced.  We all have strengths and weaknesses, but in terms of areas of the codebase, no-one had a huge advantage in terms of experience.  In most respects we were interchangeable.</p>
<p>        Because of this, we were able to assign work based purely on priority.  By that I mean we could split the work we had committed to into tasks, each with an individual time estimate, then sort them by importance.  Each time we completed an objective, we could simply pick up the next most important &#8211; regardless of what area it related to.</p>
<p>        This helped ensure no-ones work was blocked &#8211; for example we wouldn&#8217;t be stuck waiting for a piece of physics code in order to continue.  It also meant we could all work on the game framework initially, build up gameplay throughout the project and the focus on polish and graphics towards the end.  </p>
<p>        A more mixed blessing was the way that we all had to get experience with every area of the codebase.  As far as I see, this was fantastic in terms of experience.  We all had to get used to writing code that we knew other programmers would read and alter, and with modifying and expanding the work of others.  It ensured no-one &#8220;owned&#8221; an area of the codebase or became precious about their work being changed, and made sure we got used to writing maintainable code.</p>
<p>        At the same time though, specialising would have allowed each of us to focus on one area and possibly get a fuller understanding of it.  Also, as students, it would have given us separate pieces of code to declare as our own and a simpler answer to the question &#8220;So, what part did you work on?&#8221; than &#8220;All of it!&#8221;.</p>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/USEhonets.png"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/USEhonets-300x129.png" alt="USEhonets" title="USEhonets" width="300" height="129" class="aligncenter size-medium wp-image-1321" /></a></p>
<p>&nbsp;  </p>
<h2>Keep Aligned With The Entire Team</h2>
<p>        Working on Some Assembly Required, one of the biggest problems on the project was the extent to which various team members were separate.  Before work began on Pollen, we talked about using Scrum for the entire team.  As soon as work began though, it became apparent that it wasn&#8217;t going to work out.</p>
<p>        Having two artists, one 2D and one 3D, made it difficult to simply sort work by priority.  Each task had to be carried out by one particular person, often in a particular order or going back and forward between artists (such as when texturing).  Instead, we simply agreed which stories were going to be a priority in a given week, and decided which art assets and programming tasks would come of this.  </p>
<p>        At the beginning of the project, our 3D artists Jess made some placeholder assets: a sphere, a box and a billboard, as well as assets to test animation and texturing approaches.  This made it easy to simply apply textures stating what an object was until it could be replaced with a final asset &#8211; we were never waiting on an object being produced or exported.  </p>
<p>        Part of the way through the project, we started assigning time each week towards ensuring any new assets produced were working in the game correctly.</p>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/bees3.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/bees3-300x129.jpg" alt="bees3" title="bees3" width="300" height="129" class="aligncenter size-medium wp-image-1317" /></a></p>
<p>&nbsp;    </p>
<h2>Stay Flexible</h2>
<p>        One of the best aspects of working on a small team with complete control, and also of short iterations, is the extent to which you can adapt the development process.  We tried things that didn&#8217;t work, for example for a while we tried to keep graphs of our progress.  At the end of the day we just didn&#8217;t find them useful &#8230;so we just stopped. Nothing lost.  At the same time though we also tried, for example, creating tasks that averaged at most 3 hours rather than 5 or 6, and that made development easier for everyone.  There was plenty of room to experiment.</p>
<p>        The same goes for design.  No member of the team, on either project I&#8217;ve been part of, was an experienced game designer so needless to say we learned a whole lot as time went on.  Although both projects were only ten weeks long, we still had time to make large changes to our original designs &#8211; for example trying and scrapping touch screen support, or adding puzzles based on throwing rocks once we had a feel for the mechanic.</p>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/08/boss.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/08/boss-300x129.jpg" alt="boss" title="boss" width="300" height="129" class="aligncenter size-medium wp-image-1318" /></a></p>
<p>&nbsp;      </p>
<h2>Nothing Is Perfect</h2>
<p>        Of course, even though the last project went fairly smoothly from a development perspective, there is still a lot about our methods we could improve and a number of things we&#8217;d do differently if we were to begin another game.  I hope to cover more about what didn&#8217;t work for us, and what we intend to rethink in a specific Pollen postmortem, but until then I&#8217;d love to hear from you.  What problems or benefits can you see about the way we work?  How does it compare to yourself or your team?</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/how-we-make-games/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screw The Nut Videos</title>
		<link>http://hazelmckendrick.com/journal/screw-the-nut-videos</link>
		<comments>http://hazelmckendrick.com/journal/screw-the-nut-videos#comments</comments>
		<pubDate>Thu, 28 May 2009 16:00:41 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[group project]]></category>
		<category><![CDATA[Screw The Nut]]></category>
		<category><![CDATA[Some Assembly Required]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://killercodingninjabunny.com/?p=1040</guid>
		<description><![CDATA[We finished the university term with our showcase on Friday, with final year students demonstrating their dissertation projects, and each third year project team showing off their game. So now that everything is over with, I&#8217;ve added a page in my portfolio about the game. You can also download the finished executable from there. The [...]]]></description>
			<content:encoded><![CDATA[<p>We finished the university term with our showcase on Friday, with final year students demonstrating their dissertation projects, and each third year project team showing off their game.  So now that everything is over with, I&#8217;ve added a page <a href="http://killercodingninjabunny.com/demos/prototype-game-some-assembly-required">in my portfolio</a> about the game.  You can also download the finished executable from there.</p>
<p><center><object width="480" height="385"><param name="movie" value="http://www.youtube.com/p/B11B25C5B388F8DD&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/p/B11B25C5B388F8DD&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></center><br />
The playlist includes a highlight video, the game intro, a progress video from earlier in development, the character animations, and then the complete 10 minute walkthrough. Enjoy!</p>
<p>Apart from that, right now I&#8217;m just focussing on XNA and C# in preparation for Dare, and trying to decide upon a topic for my dissertation.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/screw-the-nut-videos/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Some Assembly Required So Close To Completion Update</title>
		<link>http://hazelmckendrick.com/journal/some-assembly-required-so-close-to-completion-update</link>
		<comments>http://hazelmckendrick.com/journal/some-assembly-required-so-close-to-completion-update#comments</comments>
		<pubDate>Tue, 31 Mar 2009 00:50:05 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[BBC]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Other Abertay Students]]></category>
		<category><![CDATA[platformer]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[Screw The Nut]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[Some Assembly Required]]></category>

		<guid isPermaLink="false">http://killercodingninjabunny.com/?p=877</guid>
		<description><![CDATA[As you may previously have read, this year my team &#8220;Screw The Nut&#8221; has been working on a 3D platform game through the BBC&#8217;s prototype project and the University of Abertay Dundee, &#8220;Some Assembly Required&#8221;. Our final hand-in to the BBC is tomorrow so I thought I&#8217;d take this time to build a little suspense [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_879" class="wp-caption alignleft" style="width: 310px"><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/03/ourgamelooksweeeeeeeeet.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/03/ourgamelooksweeeeeeeeet-300x225.jpg" alt="So many particles." title="ourgamelooksweeeeeeeeet" width="300" height="225" class="size-medium wp-image-879" /></a><p class="wp-caption-text">So many particles.</p></div><br />
As you may previously have read, this year my team &#8220;Screw The Nut&#8221; has been working on a 3D platform game through the <a href="http://whitespaceabertay.blogspot.com/2009/01/bbc-prototype-finds-success-in-white.html">BBC&#8217;s prototype project</a> and the <a href="http://www.abertay.ac.uk/">University of Abertay Dundee</a>, &#8220;Some Assembly Required&#8221;.  Our final hand-in to the BBC is tomorrow so I thought I&#8217;d take this time to build a little suspense before I share the final game-play videos and let you see a few screenshots.</p>
<p>The game itself sees Warran T. Void, a lost and damaged little robot, wake up alone in a factory.  By collecting new parts from vending machines he can rebuild himself with new abilities, allowing him to overcome obstacles and progress through the game.  Our prototype level introduces you to a pair of suspicious character who instruct you to climb a giant construction robot and collect pickups for them, and playing as the naive Warran you enthusiastically oblige. </p>
<p><div id="attachment_878" class="wp-caption alignright" style="width: 310px"><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/03/buddies.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/03/buddies-300x240.jpg" alt="Would you trust these gentlemen? - experimenting with full screen effects." title="buddies" width="300" height="240" class="size-medium wp-image-878" /></a><p class="wp-caption-text">Would you trust these gentlemen?</p></div>
<p>These are all taken within the last week as we built our level and did some final testing.  It&#8217;s been really awesome to see our game go from a series of platforms on a plane into a full, playable prototype level as it was only recently that we were able to bring all our art assets and platforming sections together into one application.  As you can see, we went a little overboard with bloom, particle effects and shiny things however our actual focus throughout development has been on gameplay mechanics and the physics behind this.</p>
<p>The game was implemented over a period of two and a half months, that&#8217;s ten week-long development iterations, following on from general story and game-play designs we worked on late last year.  A lot has changed from our original ideas &#8211; in particular splitting the BBC&#8217;s &#8220;interactive narrative&#8221; brief into two parts consisting of this game and a separate research project &#8211; but we&#8217;ve kept the core mechanics and level in tact.</p>
<div id="attachment_880" class="wp-caption alignleft" style="width: 310px"><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/03/test.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/03/test-300x225.jpg" alt="Did we mention our level is also a robot?" title="test" width="300" height="225" class="size-medium wp-image-880" /></a><p class="wp-caption-text">Did we mention our level is also a robot?</p></div>
<p>The team itself consists of ten third-year students: five programmers including myself, two artists, two producers and a sound engineer.  We also had the assistance of programmers from the BBC, and a mentor from <a href="http://www.realtimeworlds.com/">Real Time Worlds</a>.  This made a huge difference to the project in terms of organisation and development and keeping on track, as well as handling technical problems with our codebase, and (at least as far as I&#8217;m concerned) has given us far more experience to carry over to our future projects than we would have gained on our own.</p>
<p>So, fingers crossed for our demo tomorrow and our showcase later in the term (which I believe is open to the public, more details will follow if that&#8217;s the case) and hopefully we&#8217;ll have a final video prepared for you soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/some-assembly-required-so-close-to-completion-update/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Not Quite Coding At The Speed Of Thought</title>
		<link>http://hazelmckendrick.com/journal/not-quite-coding-at-the-speed-of-thought</link>
		<comments>http://hazelmckendrick.com/journal/not-quite-coding-at-the-speed-of-thought#comments</comments>
		<pubDate>Fri, 13 Mar 2009 10:37:53 +0000</pubDate>
		<dc:creator>Hazel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[pseudocode]]></category>
		<category><![CDATA[realtime worlds]]></category>
		<category><![CDATA[Screw The Nut]]></category>
		<category><![CDATA[students]]></category>

		<guid isPermaLink="false">http://killercodingninjabunny.com/?p=769</guid>
		<description><![CDATA[Last Saturday, the programmers from Screw The Nut (Andrew, Deji, Ian, Phil and I) took part in the first Realtime Worlds student programming competition. It was the first time any of us had attempted something like this, so although we had some vague plans before the day began, we didn&#8217;t really know what to expect. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/03/img_20731.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/03/img_20731-300x225.jpg" alt="img_20731" title="img_20731" width="300" height="225" class="alignright size-medium wp-image-773" /></a>Last Saturday, the programmers from Screw The Nut (<a href='http://www.andrewglass.co.uk/'>Andrew</a>, Deji, <a href="http://icopland.swifthost.net/">Ian</a>, <a href="http://nistur.com/">Phil</a> and I) took part in the first <a href="http://www.realtimeworlds.com/">Realtime Worlds</a> student programming competition.  It was the first time any of us had attempted something like this, so although we had some vague plans before the day began, we didn&#8217;t really know what to expect.</p>
<p>The basic format of the competition was that around seven teams from various universities were each given one computer between the five members.  After a basic practice question to check we could correctly read the output and would be able to submit our answers, we were given three hours to solve three further problems. Finally, at the end of the day we were tasked with writing AI for a spaceship to complete an Asteroids-like game, which the competed against the other teams.</p>
<p>For each of the three questions our team managed to agree upon a solution and write out the psuedocode required to implement it.  What really took time was actually writing out and testing our solutions.  Being so pressed for time really emphasises the amount of overhead involved in writing in C++.  Creating functions involves either writing prototypes for them or ensuring they&#8217;re all written in order, and finding one again means using Ctrl-F or searching through the file.  The obvious way to make things neater would normally be to create multiple files, but that becomes almost unthinkable when you consider the overhead involved in writing headers.  Then you come to testing the project &#8211; the compile time really adds up.  Don&#8217;t get me wrong, all the teams were working in the same conditions (we were also given the option of using C# &#8211; I&#8217;m not sure if this would have improved the situation or not), but at any rate, at the end of the three hours we only had one solution to submit.</p>
<p><a href="http://killercodingninjabunny.com/wp-content/uploads/2009/03/img_20751.jpg"><img src="http://killercodingninjabunny.com/wp-content/uploads/2009/03/img_20751-300x186.jpg" alt="img_20751" title="img_20751" width="300" height="186" class="alignleft size-medium wp-image-774" /></a></p>
<p>The second section of the competition (creating the game AI) went better. Knowing we would be short of time we focused on creating the most simple working solution we could &#8211; staying in one position, rating asteroids based on several criteria and shooting the highest rated one.  As it turns out, most of the criteria we calculated were almost useless, or even hindered the spaceship &#8211; far more important than anything else was shooting the closest asteroid to the player.  Our ship did very well in round one, but unfortunately we hadn&#8217;t considered what would happen at the end of the level when no asteroids remained, and we crashed out of the competition leaving two ships to continue through the next rounds.</p>
<p>At the end of the day things were looking a little bleak &#8211; we had had fun but given all the teams had successfully submitted more solutions than us and we knew ours wasn&#8217;t perfect, so we were hugely surprised to find we came in 3rd place, winning Amazon vouchers.  Hopefully the competition will take place again next year as we now have a far better understanding of how we&#8217;d take part.</p>
<h3>Things we learned:</h3>
<ul>
<li>Don&#8217;t enforce time limits for each problem unless things aren&#8217;t working &#8211; one working solution is better than several non-working solutions.</li>
<li>A quick solution which works in most cases is better than a perfect lengthy solution which will take a long time to implement.</li>
<li>Don&#8217;t try to solve problems at the computer &#8211; just type up pseudocode.</li>
<li>There are tasks one person can do while the rest of the team is working on the first solution, for example reading in the input into data structures.</li>
<li>Global data works just fine.</li>
<li>Working with people you know well is far easier than getting a group together &#8211; no matter how brilliant they are.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://hazelmckendrick.com/journal/not-quite-coding-at-the-speed-of-thought/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
