{"id":64,"date":"2013-12-30T00:16:13","date_gmt":"2013-12-30T00:16:13","guid":{"rendered":"http:\/\/mjdarby.net\/blog\/?p=64"},"modified":"2013-12-30T09:12:34","modified_gmt":"2013-12-30T09:12:34","slug":"the-hullet-bells-part-2-getting-organised","status":"publish","type":"post","link":"http:\/\/mjdarby.net\/blog\/2013\/12\/30\/the-hullet-bells-part-2-getting-organised\/","title":{"rendered":"The Hullet Bells &#8211; Part 2 (Getting Organised)"},"content":{"rendered":"<p>Recently I embarked upon a quest: a quest to produce a platform game, the likes of which the world had never known. However, I got bored of that, but not before exercising my Python chops. Although I failed, I discovered the wonderful <a href=\"http:\/\/www.pygame.org\/\">pygame<\/a> library. Pygame is a Python wrapper for the ever-popular C++ <a href=\"http:\/\/www.libsdl.org\/\">SDL<\/a> library, which I had used before when working on a small game project with a group of university friends. Much like the project preceding this one, the university project died an untimely death, this time due to heavy college workloads.<\/p>\n<p>Still, both experiences provided a great number of learning opportunities, and during university a six month placement at a video game company let me take a peek under the hood of some pretty heavy AAA title stuff. I took what I learned then and tried to apply it to the platform game, but a general lack of interest on my part meant the project had no chance of survival.<\/p>\n<p>Thinking back, there&#8217;s only been two genres I&#8217;ve really ever fallen in love with: Platforming and shmups. Sure, I&#8217;ve had my flirts with RPGs, particularly JRPGs. As I&#8217;ve grown however, I just don&#8217;t find them nearly as charming as I used to. Recently, I went back to Final Fantasy 7 to give it a proper playthrough, this time around older and wiser. I figured I might be able to appreciate the combat and magic systems a bit more, because now I&#8217;m a more patient, understanding guy. Sadly, I also have a lot less time than I used to, and it turns out those systems never had any depth after all: It was all just grinding in the end, like pretty much every other RPG I&#8217;ve ever played.<\/p>\n<p>So I&#8217;ve come to appreciate the platformers and shmups. With less time to spend on leisure than ever before, it&#8217;s important to me that I maximise the enjoyment I get from the limited time I spend on games. Don&#8217;t misunderstand, I do branch out occasionally with new releases outside my comfort zone! But when I need to relax, being able to pick up a platformer and speed through it means a lot. The average shmup won&#8217;t take more than an hour per playthrough, so you already know in advance how long you&#8217;re likely to spend on it (Side note: There are some insane examples of shmups with multiple &#8216;loops&#8217;, meaning you start back and play through again on an increased difficulty level. These can take several hours to fully beat, and must generally be done in one sitting!).<\/p>\n<p>Why did my platforming game die? I&#8217;m not sure myself. I think there was a deadly combination of boredom and laziness. While I&#8217;d love to get in to the <a href=\"http:\/\/www.alljapaneseallthetime.com\/blog\/how-to-accomplish-great-things-small-victories-winnable-games\">Procrastination Formula<\/a>, that might be a topic for another time. The short of it is; I didn&#8217;t block time to get my teeth in to it, and when I did have time I wouldn&#8217;t develop the right features to bring it towards a minimum viable game. Rather, I spent time developing fluff features like ladders or tweaking values that could wait until later.<\/p>\n<p>This time around, there is a system. I intend to spend at least 25 minutes a day focused on this shmup engine, more if I&#8217;m on a roll. I have also mapped out some of the key requirements for what will constitute a complete shmup. In a somewhat mock-Agile approach, these requirements take the form of one-line user stories grouped by screen (title screen, game screen, options screen, etc.).<\/p>\n<p>Having once taken a half-day Agile course, I&#8217;m something of an expert on the topic. I can do away with that separation of product owner, scrum master and development team garbage because I am in fact all three!  Indeed, this is why I call this shaky approach &#8216;mock-Agile&#8217;, because I&#8217;m making a mockery of it. That said, taking parts of Scrum seems to work even for a one-man dev team. Here&#8217;s an example of the embarrassing list of requirements I came up with:<\/p>\n<p><strong>Title Screen<\/strong><\/p>\n<ul>\n<li>I want to be able to navigate a menu at the start of the game<\/li>\n<li>I want to be able to start the game via the menu<\/li>\n<li>I want to be able to quit the game via the menu<\/li>\n<\/ul>\n<p>It might look silly and insignificant, but this sort of thing keeps me on task and aware of what needs to be done. At this point, you may be wondering if I&#8217;ve even done any development yet, what with all the mocking and pondering. Well, take a look at this!<\/p>\n<figure id=\"attachment_68\" aria-describedby=\"caption-attachment-68\" style=\"width: 816px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mjdarby.net\/blog\/wp-content\/uploads\/2013\/12\/Early1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mjdarby.net\/blog\/wp-content\/uploads\/2013\/12\/Early1.png\" alt=\"The white box is the player, the green box is a baddie, and the blue one is a bullet! This is cutting edge stuff, guys.\" width=\"816\" height=\"638\" class=\"size-full wp-image-68\" srcset=\"http:\/\/mjdarby.net\/blog\/wp-content\/uploads\/2013\/12\/Early1.png 816w, http:\/\/mjdarby.net\/blog\/wp-content\/uploads\/2013\/12\/Early1-300x234.png 300w\" sizes=\"auto, (max-width: 816px) 100vw, 816px\" \/><\/a><figcaption id=\"caption-attachment-68\" class=\"wp-caption-text\">The white box is the player, the green box is a baddie, and the blue one is a bullet! This is cutting edge stuff, guys.<\/figcaption><\/figure>\n<p>Prior to finally buckling down and properly organising myself, I did a bit of development on and off, tearing bits out of the platform engine and transplanting them in to the shmup. In all, I estimate that about four to five hours of actual work went in to the shmup over the course of a month. It&#8217;s time to buckle down and make something. Next post I will give you a sneak peak behind the scenes of how I&#8217;ve structured the game. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Recently I embarked upon a quest: a quest to produce a platform game, the likes of which the world had never known. However, I got bored of that, but not before exercising my Python chops. Although I failed, I discovered the wonderful pygame library. Pygame is a Python wrapper for the ever-popular C++ SDL library, <a class=\"read-more\" href=\"http:\/\/mjdarby.net\/blog\/2013\/12\/30\/the-hullet-bells-part-2-getting-organised\/\">[&hellip;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,10],"tags":[],"class_list":["post-64","post","type-post","status-publish","format-standard","hentry","category-hullet-bells","category-rant"],"_links":{"self":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/posts\/64","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/comments?post=64"}],"version-history":[{"count":6,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/posts\/64\/revisions"}],"predecessor-version":[{"id":72,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/posts\/64\/revisions\/72"}],"wp:attachment":[{"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/media?parent=64"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/categories?post=64"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mjdarby.net\/blog\/wp-json\/wp\/v2\/tags?post=64"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}