<?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/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:rawvoice="http://www.rawvoice.com/rawvoiceRssModule/"
>

<channel>
	<title>KwartzLab Makerspace &#187; games</title>
	<atom:link href="http://www.kwartzlab.ca/tag/games/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kwartzlab.ca</link>
	<description>Home of Kwartzlab Makerspace in Kitchener/Waterloo, Ontario</description>
	<lastBuildDate>Sun, 19 May 2013 23:30:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
<!-- podcast_generator="Blubrry PowerPress/4.0.7" -->
	<itunes:summary>Regular discussions with hackers, makers and artists at the Kwartzlab Makerspace. We talk about what projects people are working on, what events are coming up and how you can get involved.</itunes:summary>
	<itunes:author>kwartzlab</itunes:author>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.kwartzlab.ca/wp-content/uploads/powerpress/light_box_logo.jpg" />
	<itunes:owner>
		<itunes:name>kwartzlab</itunes:name>
		<itunes:email>podcast@kwartzlab.ca</itunes:email>
	</itunes:owner>
	<managingEditor>podcast@kwartzlab.ca (kwartzlab)</managingEditor>
	<itunes:subtitle>A hackerspace radio show</itunes:subtitle>
	<itunes:keywords>kwartzlab, hackerspace, makerspace, diy, hardware, software, maker, hacker, artist, roundtable</itunes:keywords>
	<image>
		<title>KwartzLab Makerspace &#187; games</title>
		<url>http://www.kwartzlab.ca/wp-content/uploads/powerpress/light_box_logo.jpg</url>
		<link>http://www.kwartzlab.ca</link>
	</image>
	<itunes:category text="Technology" />
	<itunes:category text="Arts" />
	<itunes:category text="Games &amp; Hobbies">
		<itunes:category text="Hobbies" />
	</itunes:category>
		<rawvoice:location>Kitchener, ON</rawvoice:location>
		<item>
		<title>DIY Card Game: Monster Mages</title>
		<link>http://www.kwartzlab.ca/2012/03/diy-card-game-monster-mages/</link>
		<comments>http://www.kwartzlab.ca/2012/03/diy-card-game-monster-mages/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 13:00:16 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[hackathon]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2284</guid>
		<description><![CDATA[Earlier this year at Guelph Game Jam 2, I decided to go analog and build a card game with real, physical cards. After the 8 hour jam, I ended up with a quick little game called Monster Mages, heavily inspired by aspects of Dominion and Magic: The Gathering. Since 8 hours really isn&#8217;t a lot [...]]]></description>
				<content:encoded><![CDATA[<p>Earlier this year at <a href="http://guelphgamejam.com/">Guelph Game Jam 2</a>, I decided to go analog and build a card game with real, physical cards. After the 8 hour jam, I ended up with a quick little game called Monster Mages, heavily inspired by aspects of <em>Dominion</em> and <em>Magic: The Gathering</em>.</p>
<p><a href="http://www.kwartzlab.ca/2012/03/diy-card-game-monster-mages/card_game/" rel="attachment wp-att-2285"><img class="size-full wp-image-2285 aligncenter" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/card_game.png" alt="Monster Mages" width="600" height="398" /></a></p>
<p><span id="more-2284"></span></p>
<p>Since 8 hours really isn&#8217;t a lot of time to build a game, I did a bit of prep work the night before by building a set of <a href="https://github.com/malexw/Card-Game-Template">blank playing cards</a> to use as templates. The design is based on the layout of cards from Dominion, with a card name across the top, a short description across the bottom, and the rest of the space divided evenly between a picture and long description.</p>
<p><a href="http://www.kwartzlab.ca/2012/03/diy-card-game-monster-mages/blank_cards/" rel="attachment wp-att-2286"><img class="size-full wp-image-2286 aligncenter" src="http://www.kwartzlab.ca/wp-content/uploads/2012/03/blank_cards.png" alt="Blank cards" width="600" height="398" /></a></p>
<p>I printed the templates on white 199 g/m^2 card stock from the local office supply store and cut out 216 blank cards by hand. Real playing cards seem to be a bit heavier (around 320 g/m^2), but the card stock seemed to work well enough for prototyping purposes. I also used a set of card protectors usually used by Magic players to make it easier to handle and shuffle my home made cards. It also prevented players from seeing what their opponent was holding, since the thin cards are slightly transparent.</p>
<p>Before creating any cards, I wrote a bit of python code that would let me simulate my card game, so that I could try and make sure the game was fair. The contents of the card game are defined in a separate JSON file, which I was hoping would let me reuse the python code for future card game design work, but I ended up writing so much game-specific code into the python that it&#8217;s not really feasable to reuse it.</p>
<p>If you&#8217;re interested in building your own version of Monster Mages, you can get a deck list and rules from <a href="https://github.com/malexw/Monster-Mages">the project&#8217;s github page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/03/diy-card-game-monster-mages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winter-een-mas 3</title>
		<link>http://www.kwartzlab.ca/2012/01/winter-een-mas-3/</link>
		<comments>http://www.kwartzlab.ca/2012/01/winter-een-mas-3/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 20:38:43 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[games]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=2243</guid>
		<description><![CDATA[Join Kwartzlab on Saturday, January 28 between 12:00 PM and 12:00 AM for our third annual Winter-een-mas Celebration! Winter-een-mas is a holiday for gamers, spanning from January 25th through the 31st, and celebrated by spending time playing games with friends and family. We hope you&#8217;ll join us for this free event &#8211; featuring twelve hours [...]]]></description>
				<content:encoded><![CDATA[<p>Join Kwartzlab on Saturday, January 28 between 12:00 PM and 12:00 AM for our third annual Winter-een-mas Celebration!</p>
<p><a href="http://www.kwartzlab.ca/2012/01/winter-een-mas-3/poster/" rel="attachment wp-att-2244"><img src="http://www.kwartzlab.ca/wp-content/uploads/2012/01/poster.png" alt="Winter-een-mas 3 poster" width="612" height="792" class="alignnone size-full wp-image-2244" /></a></p>
<p>Winter-een-mas is a holiday for gamers, spanning from January 25th through the 31st, and celebrated by spending time playing games with friends and family. We hope you&#8217;ll join us for this free event &#8211; featuring twelve hours of gaming goodness &#8211; playing classics from Settlers of Catan to Halo.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2012/01/winter-een-mas-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 9 &#8211; Game Over</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-9-game-over/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-9-game-over/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 20:30:16 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=1004</guid>
		<description><![CDATA[The beginning of Day 9 marked a change in our goal planning. Up until the end of Day 8, our development was still targeting the path laid out in our original design doc on Day 0. While we knew after about Day 5 that we weren&#8217;t going to meet all our goals, it wasn&#8217;t really [...]]]></description>
				<content:encoded><![CDATA[<p>The beginning of Day 9 marked a change in our goal planning. Up until the end of Day 8, our development was still targeting the path laid out in our original design doc on Day 0. While we knew after about Day 5 that we weren&#8217;t going to meet all our goals, it wasn&#8217;t really until Day 9 that we stopped and talked about our revised target. Considering what we had (and more importantly, what we didn&#8217;t have), we changed the core of our game to better suit our development timeframe. Instead of &#8220;evolving a powerful dungeon-crawling character&#8221;, our game was going to be about &#8220;destroying as many enemies as possible before dying&#8221;.</p>
<p>With that key change in mind, we set out our goals for Day 9:</p>
<ul>
<li>Get the in-game targeting system running for targeted spells</li>
<li>Create some textures for the player, enemies, and items</li>
<li>Develop a particle system to show spell effects</li>
<li>Complete as many cool spells and abilities as possible</li>
<li>Make some effort to balance the game (currently too easy)</li>
</ul>
<p><span id="more-1004"></span></p>
<p>Much of the targeting system was fairly straight forward. Thanks to the code cleanup I had done over the past few days, taking control of the camera independant of the player was pretty quick, and Ryan&#8217;s code for managing input was easy to tie into.</p>
<p>Textures were a bit more challenging. I created a texture for a stone wall using The GIMP, but once I got it into the game, I noticed that it looked muddy when we weren&#8217;t up close. I&#8217;m not an artist, so it is unfortunately probably the best we can hope for. When it came time to do textures for the player and enemies, we were getting close to midnight. Instead of creating them myself, I found a Creative Commons licensed <a href="http://0x6a61686e.deviantart.com/art/Custom-Roguelike-Tileset-163583349">texture set on Deviantart</a>, and did a little bit of tweaking. I only created one texture for the enemies, but we got some colour variation in them by assigning them a randomly coloured material in OpenGL to tint them.</p>
<p>I also created a mesh for stairs &#8211; in the game, a set of stairs takes to up to a fresh batch of more skilled enemies. I defined the verticies of the mesh by hand since that was faster than creating them in a 3D modeling program and writing an importer for a file format like OBJ (though on reflection, I could have used the STL loading code from my <a href="https://github.com/malexw/3dc">3dc project</a>).
<p>Ryan was able to get a handful of new skills implemented, such as drain life, eagle eye, cripple, and haste.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/Tb4UopPh6yg?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>After finishing up those skills, Ryan moved on to some basic game balance. He started by decreasing the amount of health the player starts with &#8211; we originally had inflated it to help with testing. He also decreased the chance that a health potion will drop from 100% to around 10%, since they were far too easy to aquire. Around this time, he also implemented an leveling and experience system. For every enemy that the player kills, they get a small amount of experience points. When they get enough points, they gain a new level, which increases their basic attributes and refreshes their health and mana.</p>
<p>Day 9 is over, and so is our little experiment. It&#8217;s been a great nine days, and I learned a lot. I&#8217;d even consider doing it again, though I don&#8217;t think I would do it from scratch. It&#8217;s a great way to learn, but if the goal is to build something awesome, I think it&#8217;s better to start with at least a simple 3D engine. But these discussions are best saved for our wrap-up blog post &#8211; stay tuned for that!</p>
<p>Finally, here are links to the <a href="https://github.com/NineDayGame/NineDayGame/downloads">Linux binaries</a> and the <a href="https://github.com/NineDayGame/NineDayGame">GitHub repository</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-9-game-over/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 8 &#8211; mad skillz</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-8-mad-skillz/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-8-mad-skillz/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 17:11:17 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=989</guid>
		<description><![CDATA[We&#8217;ve wrapped up our penultimate day on this project. However, there isn&#8217;t much time for reflection &#8211; in order to have something fun and playable for the final day, we need to push hard on Day 9. The goals for Day 8: Finally finish up the in game menu system Create the options and home [...]]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve wrapped up our penultimate day on this project. However, there isn&#8217;t much time for reflection &#8211; in order to have something fun and playable for the final day, we need to push hard on Day 9. The goals for Day 8:</p>
<ul>
<li>Finally finish up the in game menu system</li>
<li>Create the options and home screens</li>
<li>Add the ability to target locations for spells</li>
<li>Add some new spells to show off targetting</li>
<li>Add some different dungeon features, like doors (time permitting)</li>
</ul>
<p><span id="more-989"></span></p>
<p>I am happy to say I finally got around to doing that in-game menu system for item management. That&#8217;s been on the to-do list for so long it&#8217;s embarassing; but it&#8217;s done now, and I can move on to other things. We decided to cancel work on the options and home screens. We&#8217;re in a huge time crunch for Day 9, and we&#8217;ve decided to switch gears and get back to focusing on building really cool, educational stuff. Windows and screens need not apply!</p>
<p>Ryan had great success in developing new skills and the targeting system on the ASCII side of things. Complementing the spin attack, we now have: precise strike, giant swing, flaming hands, and heal. He also threw together this demo video of the new skills:</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/FUxumuxwV9g?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>I also revised our design doc a bit, to account for the amount of remaining time. I cut out a lot of features that we won&#8217;t have time to add. I also added in a bunch of new text to describe in more detail some of the features we have already added. Better late than never, I guess?</p>
<p><a href="http://www.eng.uwaterloo.ca/~mawillia/9dg/design_doc_8.pdf">Design Doc, Day 8</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-8-mad-skillz/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 7 &#8211; A Snail&#8217;s Pace</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-7-snails-pace/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-7-snails-pace/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 18:58:21 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=981</guid>
		<description><![CDATA[I&#8217;ve been feeling the effects of my early design decisions over the past few days. With this being the most involved game engine I&#8217;ve written, I&#8217;ve definitely suffered from the lack of experience, meaning most of Day 6 and 7 needed to be spent correcting those problems. This means that on the 3D side, a [...]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been feeling the effects of my early design decisions over the past few days. With this being the most involved game engine I&#8217;ve written, I&#8217;ve definitely suffered from the lack of experience, meaning most of Day 6 and 7 needed to be spent correcting those problems. This means that on the 3D side, a bunch of the requirement that we&#8217;ve needed to implement are far overdue, and are hurting our chances of meeting the Sunday deadline. The goals for Day 7 were:</p>
<ul>
<li>Finish the code cleanup in the 3D engine</li>
<li>Finish building the menu system for inventory and character management</li>
<li>Begin work on the options screen</li>
<li>Finish the action scheduler</li>
<li>Write the functions to handle combat</li>
</ul>
<p><span id="more-981"></span></p>
<p>Thankfully, I managed to complete all the code cleanup that needed to be done in the 3D engine. The problem was that so much game logic was in there that we would have needed to start writing a whole bunch of APIs inside the engine for controlling the game, which means the engine would be much less portable. With these changes, I feel pretty good that we could pull out the engine and use it to save us 4 or 5 days of work on a future game!</p>
<p>Unfortunately, I got hung up implementing menus due to my imperfect knowledge of C++, the language we&#8217;re developing in. I haven&#8217;t seen enough of the <a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612">Design Patterns</a> to know them by heart, so much of the day ended up being spent consulting <a href="http://stackoverflow.com">StackOverflow</a> and <a href="http://www.amazon.com/Effective-Specific-Improve-Programs-Designs/dp/0321334876/ref=dp_ob_title_bk">Effective C++</a>, two resources that I can&#8217;t recommend highly enough.</p>
<p>Ryan made slightly better progress than I did, finishing off the action scheduler and continuing to work on the combat systems. He also implemented our first special ability, the spin attack, that hits all nearby enemies.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/1_xrhd1BJhc?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-7-snails-pace/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 6 &#8211; The Numbers Game</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-6/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-6/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 19:34:55 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=971</guid>
		<description><![CDATA[Role-playing Games (RPGs) are all about the numbers. Quantifying attributes, calculating armor values, computing damage after mitigation; It&#8217;s a thing of beauty for data geeks. Up until Day 6, we had enough on our plate to worry about just getting the world to work without thinking about the calculations and equations that are integral to [...]]]></description>
				<content:encoded><![CDATA[<p>Role-playing Games (RPGs) are all about the numbers. Quantifying attributes, calculating armor values, computing damage after mitigation; It&#8217;s a thing of beauty for data geeks. Up until Day 6, we had enough on our plate to worry about just getting the world to work without thinking about the calculations and equations that are integral to it. But, finally, it&#8217;s time to bust out the Excel spreadsheets, power up the calculators and do some math. The goals:</p>
<ul>
<li>Select a stat system and implement it</li>
<li>Build a scheduler to handle attack speed (i.e. calculate who attacks first)</li>
<li>Develop an API to help optimize our world&#8217;s rendering</li>
<li>Create an OpenGL menu system for inventory management</li>
<li>Begin work on the options screen</li>
</ul>
<p><span id="more-971"></span></p>
<p>The stat system we ended up selecting was one I designed a few months ago to allow for heavy character customization. Each character has eight attributes: strength, constitution, magic, wisdom, dexterity, discipline, intelligence, and speed.</p>
<table>
<tr>
<td>
<p><strong>Strength</strong></p>
<ul>
<li>Increases the damage done by physical attacks, such as hits with a sword or arrow</li>
<li>Increases the hero&#8217;s vulnerability to some damage types, such as poisons</li>
</ul>
</td>
<td>
<p><strong>Constitution</strong></p>
<ul>
<li>Reduces the damage taken from physical attacks</li>
<li>Reduces the hero&#8217;s vulnerability to some damage types, such as poisons</li>
</ul>
</td>
</tr>
<tr>
<td>
<p><strong>Magic</strong></p>
<ul>
<li>Increases the damage done by magical attacks, such as spells</li>
<li>Increases the hero&#8217;s vulnerability to magic</li>
</ul>
</td>
<td>
<p><strong>Wisdom</strong></p>
<ul>
<li>Reduces the damage taken from magical attacks</li>
</ul>
</td>
</tr>
<tr>
<td>
<p><strong>Dexterity</strong></p>
<ul>
<li>Increases the accuracy of melee attacks, physical or magical</li>
</ul>
</td>
<td>
<p><strong>Discipline</strong></p>
<ul>
<li>Increases the accuracy of ranged attacks, physical or magical</li>
</ul>
</td>
</tr>
<tr>
<td>
<p><strong>Intelligence</strong></p>
<ul>
<li>Increases the likeihood and damage done by critical strikes</li>
<li>Increases the hero&#8217;s chance to parry attacks</li>
</ul>
</td>
<td>
<p><strong>Speed</strong></p>
<ul>
<li>Increases the attack rate of the hero</li>
<li>Increases the hero&#8217;s chance to dodge attacks</li>
</ul>
</td>
</tr>
</table>
<p>Credit where credit is due: Ryan came up with the mechanic of having strength and magic increase the damage taken by their respective damage type, which seems like a cool mechanic.</p>
<p>With this system, it&#8217;s easy to create many of the classic RPG classes. For example, the mage/wizard in our system would pick up magic, wisdom to counter the increased damage from magic, discipline, and intelligence for critical hits. A mage from the <em>Fire Emblem</em> series could be represented by taking more speed than intelligence to increase dodge chances.</p>
<p>But this system also allows for some character styles that are harder to model with a classic D&amp;D system, like the Templar from <em>Dragon Age</em>, who in our system would have strength, constitution and dexterity, like a warrior, with extra wisdom to defend against magic users. Or consider the spellsword, a prestige class from D&amp;D. In our system, the hero would want high strength, magic, and dexterity, modelling a character who fights at melee range with a mixture of swordplay and wizardry.</p>
<p>Ryan began work on a scheduler to handle attack timing. The scheduling system takes inspiration from the way an operating system scheduler works, with processes (or in this case, characters) delaying themselves based on an &#8216;action cost&#8217;, before transitioning to a ready queue and executing the ability. All actions in the game world, from moving to resurrecting dark gods, get scheduled by this system. The result is that our game isn&#8217;t exactly turn-based like a traditional roguelike. Instead, action unfolds more like it does in <em>Final Fantasy</em>, and very fast characters could potentially get multiple actions in a row, especially if those actions have a very low action cost.</p>
<p><img src="http://www.eng.uwaterloo.ca/~mawillia/9dg/day6_new_ui.png" alt="New UI elements created during Day 6" /></p>
<p>The screenshot above shows some of the new UI elements I created on Day 6: a health meter (top left) and list of available abilities (bottom right). Overall, the 3D system is progressing slowly. While attempting to implement menus, I realized that some of the design decisions I had made earlier in the project were going to hurt the development of our UI. Early on, I was rushing development by throwing a lot of game logic into the 3d game engine itself. This came to be a problem when designing the menuing system because menus have a foot in both worlds &#8211; they&#8217;re rendered by the engine, but the only sane way to try and control them is to have a handle to them outside the engine.</p>
<p>The upshot is that I spent a lot of time refactoring code yesterday to fix those design errors. The downside is that the time spent fixing those problems is time that could have been better spent creating art assets, learning how to use OpenGL&#8217;s stencil buffer, or writing a particle engine. Day 7 will be busy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 5 &#8211; Hump Day</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-5-hump-day/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-5-hump-day/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 18:51:26 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=963</guid>
		<description><![CDATA[Day 5 marks the midpoint of our development cycle, coincidentally falling on a Wednesday. I think we&#8217;ve come a long way in just the first half of the project &#8211; the trick will be continuing that pace of development over the second half. Day 5&#8242;s goals were a bit more modest compared to previous days. [...]]]></description>
				<content:encoded><![CDATA[<p>Day 5 marks the midpoint of our development cycle, coincidentally falling on a Wednesday. I think we&#8217;ve come a long way in just the first half of the project &#8211; the trick will be continuing that pace of development over the second half. Day 5&#8242;s goals were a bit more modest compared to previous days. On the OpenGL side, I&#8217;m getting to a point where most of the development I&#8217;m doing is the kind of work I&#8217;ve never done before with this tech, so progress feels like it&#8217;s slowing down.</p>
<ul>
<li>Write an AI routine to make the dungeon enemies seek out and attack the player</li>
<li>Create a text console in OpenGL for game feedback</li>
<li>Develop the in-game character sheet and inventory windows (time dependant)</li>
</ul>
<p><span id="more-963"></span></p>
<p>Ryan had a head start on developing the AI system from Day 4, meaning it was mostly tuning and bug-fixes that needed attention. The enemies use an <a href="http://en.wikipedia.org/wiki/A*_search_algorithm">A* search algorithm</a> to find a path around the dungeon. Enemies that can &#8220;see&#8221; the player will move towards and attack him. Enemies that can&#8217;t see the player instead move around the map and explore (internally, the enemies can only &#8220;see&#8221; as much of the terrain as a human player can). The AIs also occasionally attack each other, but that&#8217;s a bug, not a feature!</p>
<p>On the OpenGL side, I managed to get a text console showing up. This was a bit more involved than I had anticipated; I needed to learn how to load and interpret a font from a bitmap, then I needed to figure out how to display a static, flat UI element over top of the 3D parts. <a href="http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=17">Lesson 17 of the NeHe Tutorials</a> proved to be invaluable for that. Jumping off of the work for the text console, I did some initial work towards creating the character sheet and inventory windows, but there&#8217;s nothing demoable yet.</p>
<p>Ryan put together a demo video of our progress at the end of Day 5. Check out how the AIs chase the player around the map. The text console that is now visible in the lower left corner of the screen was added today. This is also the first movie we&#8217;ve posted that shows the enhanced lighting system developed on Day 4.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/ZTzV0zflIbs?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>While we&#8217;re on the downhill slope towards the end, it doesn&#8217;t feel like that to me. There&#8217;s a lot of work ahead of us in order to meet our deadline, and the 12 to 14 hour days are exhausting. I feel like Day 6 will be a good day to take a break and remind ourselves why we&#8217;re doing this, but I&#8217;m not sure how to do that&#8230; We&#8217;re a block away from the EA Games office in Kitchener &#8211; anyone know if they give tours?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-5-hump-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 4 &#8211; Lint Remover</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-4-lint-remover/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-4-lint-remover/#comments</comments>
		<pubDate>Wed, 23 Feb 2011 19:55:20 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=954</guid>
		<description><![CDATA[After 3 days of solid development time, Day 4 called for a bit of clean up in the 3D engine code. It was work that needed to be done, but unfortunately not the kind of material that makes for a good blog post. The goals for the day were more nebulous, and performance a bit [...]]]></description>
				<content:encoded><![CDATA[<p>After 3 days of solid development time, Day 4 called for a bit of clean up in the 3D engine code. It was work that needed to be done, but unfortunately not the kind of material that makes for a good blog post. The goals for the day were more nebulous, and performance a bit harder to measure.</p>
<ul>
<li>Rewrite the way the engine generates maps to improve performance</li>
<li>Refactor the lighting code to make it easier to add random lights in the dungeon</li>
<li>Fix the camera motion so it tracks the player better</li>
<li>Change calls that pass and store 3 separate float values to use our Vector3f object</li>
<li>Clean up redundant #includes</li>
<li>Comment, comment, comment</li>
<li>Break out engine and input-specific code from the main() method to their own objects</li>
<li>Clean up any other code that would be worthy of submission to <a href="http://thedailywtf.com">The Daily WTF</a></li>
<li>Develop an inventory management system</li>
<li>Finish off the 2D menu system in the ASCII environment</li>
</ul>
<p><span id="more-954"></span></p>
<p>Ryan pushed ahead and finished off his menu system in the 2D environment, and was able to tie that in with the inventory management system. He even made a video:</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/-0ip-TGRnUs?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>[Ed: WordPress is having trouble embedding this video. My apologies, loyal reader, if it doesn't show up for you.]</p>
<p>The refactoring of the 3D code, however, is much less glamourous. I was able to meet a few of the objectives, like the lighting refactoring and fixing the camera code. I quite like the way the new lighting system lights up the environment around the player, and reminds me a lot of the way fog of war works in real time strategy games like Starcraft.</p>
<p><img src="http://www.eng.uwaterloo.ca/~mawillia/9dg/day4_lighting.png" alt="Screenshot of the new lighting system in Day 4" width="640" height="480" /></p>
<p>I think that if I had laid out a bullet point list like the one above, I may have made better progress by moving from one point to the other, without needing to think about what to work on next. I&#8217;ll try this with tomorrow&#8217;s development.</p>
<p>There&#8217;s still a lot of code to clean up, but we&#8217;re out of time. I&#8217;ll have to settle for continuous refactoring as we push ahead with new features over the next 5 days.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-4-lint-remover/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 3 &#8211; Need a Light?</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-3/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-3/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 18:16:09 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Member Blogs]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=942</guid>
		<description><![CDATA[Day 3 continued the trend of setting goals that were just slightly out of reach. They say you&#8217;re not supposed to set unreachable goals, but it feels like, given the time crunch we&#8217;re in, making these tight schedules keeps us working as hard as possible. The goals for Day 3: Set up the camera to [...]]]></description>
				<content:encoded><![CDATA[<p>Day 3 continued the trend of setting goals that were just <em>slightly</em> out of reach. They say you&#8217;re not supposed to set unreachable goals, but it feels like, given the time crunch we&#8217;re in, making these tight schedules keeps us working as hard as possible. The goals for Day 3:</p>
<ul>
<li>Set up the camera to follow the player around the world</li>
<li>Add texture mapping support to the engine</li>
<li>Add support for lighting to the engine (if there&#8217;s time)</li>
<li>Add support for items in the dungeon, and the ability to pick them up</li>
<li>Add an inventory management system</li>
</ul>
<p><span id="more-942"></span></p>
<p>The only goal that we didn&#8217;t meet on Day 3 was the inventory management system. Ryan had to leave early, but I think we could have done it if we had been able to work all day.</p>
<p>Though the other goals were technically accomplished, I&#8217;m not particularly happy with the progress on the engine features. For example, in our demo video you can see that the camera doesn&#8217;t perfectly track the motion of the player.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/d5YsGXKag_M?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>The lighting system is also quite primitive. In order to add things like random torches scattered around the room, there will need to be some work done towards cleaning up the engine code. However, this refactoring and cleanup needs to happen anyway, so perhaps we can kill two birds with one stone on Day 4.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nine Day Game, Day 2 &#8211; ASCII Massacre</title>
		<link>http://www.kwartzlab.ca/2011/02/nine-day-game-day-2-ascii-massacre/</link>
		<comments>http://www.kwartzlab.ca/2011/02/nine-day-game-day-2-ascii-massacre/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 18:50:18 +0000</pubDate>
		<dc:creator>Alex W</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.kwartzlab.ca/?p=900</guid>
		<description><![CDATA[Day 2 began around noon at Kwartzlab, on the second day of the Global Synchronous Hackathon. We were feeling ambitious, and laid out another 3 goals for the day: Get the random levels rendering in 3D (for reelz this time) Add texture support to the engine Add combat and inventory systems In all, we were [...]]]></description>
				<content:encoded><![CDATA[<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/v0GQX4sNWAA?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>Day 2 began around noon at Kwartzlab, on the second day of the Global Synchronous Hackathon. We were feeling ambitious, and laid out another 3 goals for the day:</p>
<ul>
<li>Get the random levels rendering in 3D (for reelz this time)</li>
<li>Add texture support to the engine</li>
<li>Add combat and inventory systems</li>
</ul>
<p><span id="more-900"></span>
<p>In all, we were only able to meet about half of our goals for the day. We did finally get the world showing up in 3D (one of yesterday&#8217;s goals), and Ryan added a skeletal combat system.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/wEtpvJOkVsU?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>We did end up trading off some of our development time to add in the &#8220;blood splatter&#8221; effect seen in the videos. (Can ASCII graphics be rated PG?) Ryan also did some more experimenting with the libtcod libraries we&#8217;re using and came up with an interesting multiple camera system for the ASCII environment.</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='640' height='390' src='http://www.youtube.com/embed/_s2mzLPTssQ?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>The goals of texture support and inventory systems, unfortunately, are getting pushed to day 3.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kwartzlab.ca/2011/02/nine-day-game-day-2-ascii-massacre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
