<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<rss version="2.0">
 <channel>
  <title>Competition Diary - trailblazer</title>
  <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary</link>
  <description>Competition Diary - trailblazer</description>
  <managingEditor> (trailblazer)</managingEditor>
  <language>en</language>
  
  <item>
   <title>Rematch</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Rematch</guid>
   <pubDate>Mon, 19 Sep 2005 06:59:33 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Rematch</link>
   <description>&lt;p&gt;Any clue when the next PyWeek will be?&lt;/p&gt;</description>
  </item>


  <item>
   <title>what the kiwi game does</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/what_the_kiwi_game_does</guid>
   <pubDate>Mon, 12 Sep 2005 20:05:14 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/what_the_kiwi_game_does</link>
   <description>&lt;p&gt;Just a quick note on the comments. We don't have much of a game here. We basically aimed really high on this project, and just ran out of time. We didn't manage to check in much of a game, so of course we're not going to win this contest. However, I think we do have some interesting technology here.&lt;/p&gt;

&lt;p&gt;Here's what's going on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;2d physics engine&lt;/b&gt;: pyODE is a 3d physics engine, so we had to trick it into handling our 2d room. We ended up building something like an ant farm: everything is happening inside a 640x480x32 unit space, with walls all around holding everything in place. When you press left or right, you're actually applying a force to the kiwi, and he stops because the atmosphere applies resistance. At one point he was able to kick around a soccer ball and it would bounce around realistically, but that didn't quite get integrated with the level editor.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;angled platforms&lt;/b&gt;: the world consists of arbitrary rectangles loaded from an SVG file. We hit a big snag here dealing with svg's transformation matrices. I was up a whole night reading about linear algebra trying to get it working, but never quite nailed it, so we had to fall back to non-rotated platforms. Unfortunately, even these disappeared from the room in the release version.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;metabolism&lt;/b&gt;: kiwi's can't fly. Since this kiwi can, thanks to his hyped up metabolism. The price is that he has to eat a tremendous amount of food for this power. Fat stores and glucose actually behave sensibly, and he can even eat food. We just didn't have time to get the speed right, or to get food into the level. I added a quick hack to force-feed him invisible food just to keep him from starving in the release version, which is why the glucose meter goes up on it's own. He still still starves if you fly too fast though. The original idea was to make him change shape as he got fatter and slimmer, and to incorporate weight changes into the gameplay, but we didn't get that far.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;console state machine&lt;/b&gt;: the menus, dialogs, high score system, and the game it self are all modelled using the State design pattern, with separate objects for each. So one console is always running, and it just swaps out these state objects as things happen. This turned out to be a really clean way to model a game.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;model-view-controller architecture&lt;/b&gt;: the model consists of geometry and bodies in the physics engine, whereas the view tracks these objects and moves the sprites around on screen accordingly. Eventnet and the event handlers in the individual state objects act as the controller.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;nice sound/music system&lt;/b&gt;: illium did all this single handedly so I'm not 100% sure how it all works, but using it was very easy, and the code is worth investigating&lt;/li&gt;

&lt;li&gt;&lt;b&gt;inkscape scripting&lt;/b&gt;: inkscape is an open source svg drawing tool and part of our project was getting inkscape to break the levels down into foreground and background PNG fies, and extracting the geometry/object layer as a simplified svg. It looks like inkscape could be a great level editor once we get this working.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Much of the system is also written in a semi-literate style, with test cases and documentation interspersed throughout the code. That's part of what the trailblazer concept was about, though that part didn't quite go off the way I'd expected.&lt;/p&gt;

&lt;p&gt;So anyway, we didn't finish and what we have doesn't look like much, but check under the hood and you might find that there's some interesting stuff going on. We're planning another week long sprint to happen in a few weeks. Meanwhile, I'm hoping to have time this week to at least get the levels loading so we can actually play!&lt;/p&gt;
</description>
  </item>


  <item>
   <title>close, but no cigar</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/close__but_no_cigar</guid>
   <pubDate>Sun, 04 Sep 2005 10:28:28 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/close__but_no_cigar</link>
   <description>&lt;p&gt;well. it's over. we didn't quite ship a working game, but we did show off a lot of stuff. No food or eggs or ladders or even the soccer ball... But we did get backgrounds, a transparent status display, music, metabolism (though we're faking feeding the kiwi food automatically) and semi-real physics.&lt;/p&gt;

&lt;p&gt;We were hoping to get at least the soccer bal it into the final release but it got traded in for loading levels from a file. Even then we only managed to get two in, and one of them doesn't work. :/&lt;/p&gt;

&lt;p&gt;So, we won't be winning a contest, but we do have the makings of a cool game here. There's already been some talk on IRC about continuing the project and restrategizing for the next pyweek. We're going to try and meet up tomorrow on #trailblazer around 8PM EST to talk things over.&lt;/p&gt;

&lt;p&gt;Thanks everyone for all your hard work! I know *I* had a blast and learned all kinds of things. I hope you guys had fun too.&lt;/p&gt;

&lt;p&gt;Okay, hope to see you all tomorrow. I'm going to get some sleep.&lt;/p&gt;

</description>
  </item>


  <item>
   <title>Kiwi Soccer</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Kiwi_Soccer</guid>
   <pubDate>Sun, 04 Sep 2005 05:43:35 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Kiwi_Soccer</link>
   <description>&lt;p&gt;Well, I don't know if our team will finish the entry in time for the contest but we will finish it. Our team leader is out of commision as I'm writing this (exhaustion) and I only have one helper. We'll do our best and if we don't get it out in time at least we'll know more for next time and will have had &lt;b&gt;fun!&lt;/b&gt;&lt;/p&gt;</description>
  </item>


  <item>
   <title>kiwi soccer and metabolic status bars!</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/kiwi_soccer_and_metabolic_status_bars</guid>
   <pubDate>Sat, 03 Sep 2005 23:53:55 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/kiwi_soccer_and_metabolic_status_bars</link>
   <description>&lt;p&gt;
Another all nighter, and I guess I'm not going to sleep until the contest ends. Finally tied a bunch of our pieces together. This isn't a level, just a test environment. Illume and I agreed kicking the little test box around was lots of fun so I made it into a soccer ball! 
&lt;/p&gt;

&lt;a href="http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/statusbars.png"&gt;&lt;img alt="screenshot" src="http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/statusbars.png?display=thumbnail"&gt;

&lt;/a&gt;</description>
  </item>


  <item>
   <title>gravity demo (click screenshot for movie)</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/gravity_demo__click_screenshot_for_movie</guid>
   <pubDate>Tue, 30 Aug 2005 22:04:34 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/gravity_demo__click_screenshot_for_movie</link>
   <description>&lt;p&gt;
&lt;a href="http://blazeofglory.org/demos/gravdemo/gravdemo.html"&gt;&lt;img src="http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/gravdemo.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Well, I've been up all night... Yesterday we had a 2D world drawn in inkscape, saved to SVG, and extruded into 3d space for pyODE. That mostly works, except I think the y coordinates are off a bit for the platforms.
&lt;/p&gt;

&lt;p&gt;What this is showing is that we can now take that world and map sprites to each object in the physics demo. Also, we can render sprites in layers.&lt;/p&gt;

&lt;p&gt;Lots of other stuff is shaping up too, but I'm too tired to tell you about it right now. Maybe someone will post to the blog... :)&lt;/p&gt;</description>
  </item>


  <item>
   <title>I give you...</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/I_give_you</guid>
   <pubDate>Tue, 30 Aug 2005 11:23:58 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/I_give_you</link>
   <description>&lt;p&gt;A screenshot!&lt;/p&gt;
&lt;img src="http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/wafflehouse.jpg"&gt;</description>
  </item>


  <item>
   <title>steady on a new course</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/steady_on_a_new_course</guid>
   <pubDate>Mon, 29 Aug 2005 21:07:35 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/steady_on_a_new_course</link>
   <description>&lt;p&gt;Adam made a good case for the feasibility of using pyODE for 2d physics, so we agreed to go for it. Dillon and I investigated how to get pyODE and PGU talking to each other, and realized we didn't need tiles anymore. Real physics opens the door to a world of hills and slopes and funny angles. Instead of a tile editor, we're just going to draw our levels in &lt;a href="http://inkscape.org/"&gt;inkscape&lt;/a&gt;, with a special layer of simple rectangles to describe the room to pyODE.&lt;/p&gt;

&lt;p&gt;So Dillon and I shared a scren for a few hours (along with various helpers) and worked out the code for parsing rectangles from an svg file and the plan for turning them into 3D boxes for pyODE. Once we could see how things were going to fit together, Dillon went off to work on the next step: displaying the screen in pygame.
&lt;/p&gt;

&lt;p&gt;Sean drew our main character: a slick looking kiwi bird - see the concept art in the gallery on &lt;a href="http://blazeofglory.org/"&gt;blazeofglory.org&lt;/a&gt;. Last I heard he was off to do some animation.&lt;/p&gt;

&lt;p&gt;David disappeared for a few hours, only to surprise us all later with a working version of the metabolism engine!&lt;/p&gt;

&lt;p&gt;Meanwhile, fellow entrant Rene Dudfield (illume on here) found himself with too much client work on his hands, and too little time to complete his entry this week, so with Richard's approval he's now the sound and audio lead for team trailblazer. Welcome, Rene!&lt;/p&gt;

&lt;p&gt;As for me, I &lt;i&gt;think&lt;/i&gt; I've finished the room loader - I had some major confusion when it came to mapping svg's 2d rotation matrices to pyODE's 3d world. In any case, we've got a Room object now with some ode objects for Adam to work with.&lt;/p&gt;

&lt;p&gt;So: a lot of progress today. With luck we'll be moving things around the screen tomorrow. :)&lt;/p&gt;
</description>
  </item>


  <item>
   <title>new concept art</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/new_concept_art</guid>
   <pubDate>Mon, 29 Aug 2005 04:15:38 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/new_concept_art</link>
   <description>&lt;p&gt;
I just posted some new concept art based on last night's discussion in the gallery on &lt;a href="http://blazeofglory.org/"&gt;blazeofglory.org&lt;/a&gt;. 
&lt;/p&gt;
</description>
  </item>


  <item>
   <title>pgu: the movie</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/pgu__the_movie</guid>
   <pubDate>Sun, 28 Aug 2005 17:58:32 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/pgu__the_movie</link>
   <description>&lt;p&gt;I made a video demo of phil's game utilities to orient our graphics folks. Probably old news to most of you guys if you're reading this... :) &lt;a href="http://blazeofglory.org/demos/pgudemo/pgudemo.html"&gt;You can watch it here.&lt;/a&gt; (about 8 minutes / 6MB)
&lt;/p&gt;
</description>
  </item>


  <item>
   <title>bug tracker, cvs instructions</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/bug_tracker__cvs_instructions</guid>
   <pubDate>Sun, 28 Aug 2005 13:17:40 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/bug_tracker__cvs_instructions</link>
   <description>&lt;p&gt;
We've got the cvs repository and bug tracker set up. See &lt;a href="http://blazeofglory.org/"&gt;blazeofglory.org&lt;/a&gt; for the links (cvs instructions including a movie are on the wiki)
&lt;/p&gt;
</description>
  </item>


  <item>
   <title>Trailblazer Website</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Trailblazer_Website</guid>
   <pubDate>Sun, 28 Aug 2005 09:10:06 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/Trailblazer_Website</link>
   <description>The trailblazer site is in place at &lt;a href="http://BlazeOfGlory.org"&gt;BlazeOfGlory.org&lt;/a&gt;. Feel free to stop by and get info on us. We also have the irc.freenode.net #traiblazer channel open all week if you're still looking for a team (doubtful).</description>
  </item>


  <item>
   <title>was the whole team supposed to register? :)</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/was_the_whole_team_supposed_to_register</guid>
   <pubDate>Sat, 27 Aug 2005 08:14:35 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/was_the_whole_team_supposed_to_register</link>
   <description>&lt;p&gt;
I hope this is okay. We've got about 11 people on my team, but only the one team entry (except for one guy who already had an account here). Do I need to get everybody into the system?
&lt;/p&gt;
</description>
  </item>


  <item>
   <title>kickoff meeting 7pm EST #trailblazer on irc.freenode.net</title>
   <guid>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/kickoff_meeting_7pm_EST__trailblazer_on_irc_freenode_net</guid>
   <pubDate>Sat, 27 Aug 2005 08:08:54 +1000</pubDate> 
   <link>http://www.mechanicalcat.net/tech/PyWeek/1/entrants/trailblazer/diary/News/kickoff_meeting_7pm_EST__trailblazer_on_irc_freenode_net</link>
   <description>&lt;p&gt;
We're having an open welcome/orientation meeting at 7pm EST in #trailblazer on irc.freenode.net ... If anyone's still looking for a team, feel free to swing by.
Sorry for the short notice.
&lt;/p&gt;
</description>
  </item>

 </channel>
</rss>
