<?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>gamedevelopment &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<atom:link href="https://jessewarden.com/tag/gamedevelopment/feed" rel="self" type="application/rss+xml" />
	<link>https://jessewarden.com</link>
	<description>Software &#124; Fitness &#124; Gaming</description>
	<lastBuildDate>Mon, 08 Jul 2013 14:43:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://jessewarden.com/wp-content/uploads/2016/08/cropped-Lambda2-32x32.png</url>
	<title>gamedevelopment &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<link>https://jessewarden.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>One Game A Month &#8211; February Postmortem: Thuldanen Maestro</title>
		<link>https://jessewarden.com/2013/03/one-game-a-month-february-postmortem-thuldanen-maestro.html</link>
					<comments>https://jessewarden.com/2013/03/one-game-a-month-february-postmortem-thuldanen-maestro.html#comments</comments>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Tue, 05 Mar 2013 15:43:11 +0000</pubDate>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[1gam]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[coronasdk]]></category>
		<category><![CDATA[gamedevelopment]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[onegameamonth]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[thuldanenmaestro]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=3496</guid>

					<description><![CDATA[I&#8217;ve entered into the One Game a Month party. It&#8217;s like Ludum Dare, a challenge to make, and most importantly FINISH, a game in a set amount of time based on a theme. What makes #1GAM unique is you have an entire month and it spans an entire year. They have a thriving Twitter and [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I&#8217;ve entered into the <a href="http://www.onegameamonth.com/">One Game a Month</a> party. It&#8217;s like <a href="http://www.ludumdare.com/compo/">Ludum Dare</a>, a challenge to make, and most importantly FINISH, a game in a set amount of time based on a theme. What makes #1GAM unique is you have an entire month and it spans an entire year. They have a thriving <a href="https://twitter.com/search?q=%231gam%20%23onegameamonth&amp;src=hash">Twitter</a> and <a href="https://plus.google.com/communities/117275686212402755276">Google+ group</a>.</p>
<p>I&#8217;ve entered strictly for learning purposes and to see if I can actually finish something. Game development is surprisingly very different from application development, and it&#8217;s nice to feel really stupid again.</p>
<p><span id="more-3496"></span><strong>Synopsis</strong></p>
<p>You&#8217;re a dwarven treasure hunter piloting a gnome sphere powered by music on Thuldanen, 2nd layer of Esheron, the plane of war. The plane has floating cubes with caves inside, and the 2nd layer, Thuldanen, is notorious for having many treasures left over from the ever-happening wars above. They turn to stone after a time, so you have to be quick&#8230; this includes if you go outside of the sphere.</p>
<p>The sphere is powered by colored crystals, and each color has a different element that unlocks different powers. You start with black, gravity, to roll and jump the sphere. Later you get blue, electricity, to power the explosive grappling hooks to traverse over the more rough terrain full of impassable refuse. The gameplay isÂ similarÂ &#8220;<a href="http://disney.go.com/wheresmywater/">Where&#8217;s My Water</a>&#8221; where as you learn a new power&#8217;s abilities, you can start to combine them to defeat each new level&#8217;s complexity.</p>
<p>I was inspired by the game <a href="http://en.wikipedia.org/wiki/Loom_(video_game)">Loom</a> which utilized a simple interface of music notes to basically do everything in the game. Some songs you knew, some you had to memorize, and some you had to simply find on your own. That, and I like dwarfs fighting orcs and goblins on their home turf with an axe or just rolling over the whole lot with a giant metal sphere, for the sake of getting pimp treasure, all the while attempting to do so quickly so you don&#8217;t turn to stone.</p>
<p><iframe src="http://www.youtube.com/embed/t6BeszhLF9c" height="360" width="640" allowfullscreen="" frameborder="0"></iframe></p>
<p><strong>Thuldanen Maestro Goals</strong></p>
<p>My goals with Thuldanen Maestro were to make a smaller scoped game than myÂ JanuaryÂ entry in the hope I could finish it. Additionally, I wanted to follow the month&#8217;s theme of &#8220;music&#8221;.</p>
<p><strong>Actual Results</strong></p>
<p>I didn&#8217;t finish.</p>
<p>&#8230; but it&#8217;s playable and feels&#8230; well, almost like a real game. I had sketched out 7 levels that utilized at least 2 crystals, and started getting pretty challenging and cool. Instead, I Â fell down the rabbit hole that is <a href="http://www.youtube.com/watch?v=Fy0aCDmgnxg">game juicing</a> (polishing). I didn&#8217;t know this ahead of time, but in retrospect it makes sense, it&#8217;s a lot like perfecting code that&#8217;ll never be perfected.</p>
<p>Even so, I was really happy with how it turned out. This isÂ definitelyÂ a game I want to come back to in 2014 first and git-r-done proper. My girls wanted to play this one during development a lot more than the first one.</p>
<p><strong>What Went Wrong</strong></p>
<p>First problem, I lost 18 days. I&#8217;m a adult, run a business, do business trips, have taxes, and 2 kids. And I got a flu I think for 10 days. And <a href="http://www.beachbody.com/product/fitness_programs/best_sellers/p90x.do">I workout</a> at least 1 hour, 5 days a week. All conspired to use the most amount of my time during the shortest month of the year.</p>
<p>Second problem, too much polish. I spent too much time in art land, when I should just be doing programmer art and hiring an artist to the real stuff.</p>
<p>Third, while it&#8217;s a music driven game, I had no time for music itself, and no time for sound effects, nor the dialogue I wanted to create.</p>
<p>Fourth, I didn&#8217;t even get to create proper buttons for moving the dwarf around, nor time to create enemies for him to fight (although the fight code IS in there&#8230;). That game didn&#8217;t really need &#8217;em but it DID need the stone bar; the progress bar that slowly shrinks before you turn to stone if you get out of your sphere. Without, you have no sense of urgency, and less of a desire to roll around in the sphere to explore andÂ experimentÂ with notes.</p>
<p><strong>What Went Right</strong></p>
<p>I&#8217;ve fallen in love with <a href="http://coronalabs.com">Corona SDK</a> because they make <a href="http://box2d.org/">Box2D</a> easy. You can do it in Flash which has some great implementations, but it doesn&#8217;t run on mobile devices at all. However, I&#8217;ve always felt compelled to make level editors because I never know how to properly generate the requiredÂ geometryÂ for Box2D. However, creating non-concave shapes, and MULTIPLE convex shapes toÂ assembleÂ a concave one was&#8230;Â ridiculous.</p>
<p>&#8230;until I found out about <a href="http://www.codeandweb.com/physicseditor">PhysicsEditor</a>. Holy. Drastically changed, sped up, and improved my workflow. That and I have little need for level editors on the smaller games. Now I can create un-even terrain for side-scrolling levels and all kinds of crazy shapes for terrain, both static and interactive.</p>
<p>I also found out PhysicsEditor has a friend called <a href="http://www.codeandweb.com/texturepacker">TexturePacker</a>. Now it&#8217;s uber-easy to create sprite sheets, and edit AND re-edit them vs. using those insanelyÂ unwieldyÂ and hard to write JSFL scripts for Fireworks. The workflow with After Effects was great as well.</p>
<p>I made my package structure only 1 level deep this go around and started the code base from scratch only pulling in classes/libs when I needed them. This made a massive difference in the speed of iteration. That said, it&#8217;s merely a work around for the lack of tooling.</p>
<p>While I suck at art, I really liked the <a href="http://browse.deviantart.com/?qh=&amp;section=&amp;global=1&amp;q=steam+punk">Steam Punk</a> style for the game. Victorian era steam tech works great with gnome engineering and dwarven grit.</p>
<p>Even during the first play iteration tests (you create a build just to see how the game feels to play), it felt like a game I&#8217;d actually want to play. I was CLOSE!</p>
<p><strong>Key Takeaways</strong></p>
<p>Like any n00b who isn&#8217;t a n00b in other things, I realize I still don&#8217;t know what I don&#8217;t know. Things likeÂ PhysicsEditor make curious what other earth shattering tooling or techniques I don&#8217;t know about that could drastically speed up my development process.</p>
<p>I didn&#8217;t use <a href="http://trello.com">Trello</a> as much this go around because I knew what needed to be done since the scope was smaller. I feel like that&#8217;s a good sign. That said, I could feel when I was spending too much time on a task because it was fun vs. actually needed. Not sure how to fix that since I&#8217;m doing this for fun.</p>
<p><strong>Conclusion</strong></p>
<p>March: Smaller scope, focus on more levels, just a little polish. Maybe team up?</p>
<p>The <a href="https://github.com/JesterXL/Thuldanen-Masestro">source code</a> is up on Github and you can <a href="https://play.google.com/store/apps/details?id=com.jessewarden.ThuldanenMaestro#?t=W251bGwsMSwxLDIxMiwiY29tLmplc3Nld2FyZGVuLlRodWxkYW5lbk1hZXN0cm8iXQ..">install on your Android device here</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jessewarden.com/2013/03/one-game-a-month-february-postmortem-thuldanen-maestro.html/feed</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>One Game A Month &#8211; January Postmortem: PlaneShooter</title>
		<link>https://jessewarden.com/2013/03/one-game-a-month-january-postmortem-planeshooter.html</link>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Tue, 05 Mar 2013 15:30:51 +0000</pubDate>
				<category><![CDATA[Google Docs]]></category>
		<category><![CDATA[1gam]]></category>
		<category><![CDATA[corona]]></category>
		<category><![CDATA[coronasdk]]></category>
		<category><![CDATA[gamedevelopment]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[onegameamonth]]></category>
		<category><![CDATA[programming]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=3494</guid>

					<description><![CDATA[Introduction I&#8217;ve entered into the One Game a Month party. It&#8217;s like Ludum Dare, a challenge to make, and most importantly FINISH, a game in a set amount of time based on a theme. What makes #1GAM unique is you have an entire month and it spans an entire year. They have a thriving Twitter [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" style="padding-right: 8px;" alt="" src="http://jessewarden.com/archives/blogentryimages/onegameamonth/jan/planeshooter-blog.jpg" width="320" height="320" align="left" /><strong>Introduction </strong></p>
<p>I&#8217;ve entered into the <a href="http://www.onegameamonth.com/">One Game a Month</a> party. It&#8217;s like <a href="http://www.ludumdare.com/compo/">Ludum Dare</a>, a challenge to make, and most importantly FINISH, a game in a set amount of time based on a theme. What makes #1GAM unique is you have an entire month and it spans an entire year. They have a thriving <a href="https://twitter.com/search?q=%231gam%20%23onegameamonth&amp;src=hash">Twitter</a> and <a href="https://plus.google.com/communities/117275686212402755276">Google+ group</a>.</p>
<p>I&#8217;ve entered strictly for learning purposes and to see if I can actually finish something. Game development is surprisingly very different from application development, and it&#8217;s nice to feel really stupid again.</p>
<p><span id="more-3494"></span><strong>Snynopsis</strong></p>
<p>PlaneShooter, a 1942 clone, was all about the story, improved plane engine &amp; weapon customizations, and taking advantage of improved graphical hardware. You play Kay, the protagonist, who flies a P90 Lightning aircraft modified for cargo. Her Dad, O, a former military pilot, and her battle bandits at their latest town of delivery. They slowly uncover a plot that leads to war with an ending that leads you to the 2nd version of the game.</p>
<p>I really liked how you could personalize even a 1940&#8217;s era plane with tech that was available around then, yet still leave room for the fantasy element to give itÂ otherworldlyÂ powers.</p>
<p><iframe src="http://www.youtube.com/embed/S-3jVFYTr2o" height="360" width="640" allowfullscreen="" frameborder="0"></iframe></p>
<p><strong>PlaneShooter Goals</strong></p>
<p>My 2 goals with PlaneShooter was simple: finish a game I&#8217;d been working on for 8 months in my spare time, and hopefully learn more about the marketing/business side. I had a bonus goal of finally getting a chance to juice a game, ie polish.</p>
<p>It was basically a 1942 clone with a story behind it with extra side-scrolling levels to help in character and story development. Additionally, you could customize your plane between levels. Finally, the game had on going dialogue either during the game or it would pause at key points.</p>
<p><strong>Actual Results</strong></p>
<p>I didn&#8217;t finish.</p>
<p>I managed to get the game 99% there with 2 levels. I did get an intro screen, game play, reasonable interaction, aÂ semblanceÂ of scoring, reasonable programmer art, and an end screen.</p>
<p>I had created a script and recorded audio content + sound effects for 8 levels. Â I had completed all theÂ mechanicsÂ for drag and drop of upgrading your plane. This includes the speed + weapon power adjustments, etc. TheÂ achievementsÂ were half done, and scoring was 99% there, I just had some persistence challenges I was working through. None of which made it in the game, hah!</p>
<p>The intro screen and end screen were not completed and used the wrong art, but I made them functional to call it a day. All planes had 1 hit points except the bosses which was not planned.</p>
<p><strong>What Went Wrong</strong></p>
<p>I&#8217;m still learning, so this is all conjecture.</p>
<p>I believe my story scope added a ton of work. While I believe it made/will make the game actually fun to play, it required a significant amount of audio work man hours, including 4 days of purely just scripting writing. If I removed the entire story element, removed the plane weapon/engine customizations, and focused strictly completing levels + art, I may have had a game that felt more complete. That wasn&#8217;t the kind of game I wanted to create, though.</p>
<p>All in all, audio took up 60% of my entire work effort. Music creation, dialogue recording &amp; editing, and sound effects. Whoops. I sure had fun, though.</p>
<p>Conclusion: That level of scope was not something I could complete in a month.</p>
<p><strong>What Went Right</strong></p>
<p>Taking a year old code base with 8 months worth of work and yelling at it, &#8220;You&#8217;ll be frozen in a month&#8221; was a great feeling. Many of us programmers have ideas laying around, dozens of them, that are left unfinished. Some don&#8217;t need to beÂ completed, but others&#8230; yes. So over all that part really felt good to attempt to get some closure.</p>
<p>Secondly, I learned a ton. I read a lot about game design process, re-opened a lot of the artistic tools I haven&#8217;t really used professionally in 10 years (Photoshop, After Effects, Reason, Audition, etc). I got to spend significantly more time in them. Some things I remembered, but others I had to learn while under such a short deadline. I also learned new ways to put them into a workflow.</p>
<p>Third, the processes I did use SEEMED to pan out fine:</p>
<ol>
<li><span style="line-height: 16px;">think up idea</span></li>
<li>write it down, sketch it out</li>
<li>write up a list of goals, tasks, and scope</li>
<li>code the things I don&#8217;t know</li>
<li>create art &amp; audio</li>
<li>implement</li>
<li>bug test</li>
</ol>
<p>That general process seemed to work great, and while there were some kinks, it proves that the general way of build games is a lot like software; you do a hybrid approach of <a href="https://www.google.com/search?q=waterfall&amp;aq=f&amp;oq=waterfall&amp;aqs=chrome.0.57j0l2j5j62l2.1048&amp;sourceid=chrome&amp;ie=UTF-8">Waterfall</a>Â and <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile</a>, the requirements (heavy on the pen &amp; paper since they are cheap to undo/redo), and then you iterate on 4-7. I think I just put a too huge idea into the process.</p>
<p>Fourth, although not complete, I could taste I was getting close on some things, but I also started to get a better sense of how much work polish actually is. Additionally, some polish you don&#8217;t actually know about until you get the idea solid. Sometimes getting the idea solid is an actual prototype WITH assets in it to play with.</p>
<p>Fifth, <a href="http://coronalabs.com">Corona</a> actually worked with tons of assets and code. As a long time Director/Flash/Flex developer who grew up in tincy runtimes using dynamic languages and learned how much &#8220;better&#8221; it was to have a mature one with a strongly typed language&#8230; it was nice to have success with a non-mature runtime with a loosely typed language, <a href="http://www.lua.org/">Lua</a>.</p>
<p>Sixth, it was interesting to see where architecture got in the way, and where it didn&#8217;t, but more importantly WHEN it was too early to implement. People have written volumes about <a href="http://en.wikipedia.org/wiki/You_aren't_gonna_need_it">Y</a><a href="http://www.codinghorror.com/blog/2004/10/kiss-and-yagni.html">A</a><a href="http://www.skorks.com/2009/08/does-yagni-mean-you-ignore-the-obvious/">G</a><a href="http://c2.com/cgi/wiki?YouArentGonnaNeedIt">N</a><a href="http://codebetter.com/jeremymiller/2009/02/17/a-quick-example-of-yagni-simplest-thing-possible-in-action/">I</a>. They&#8217;re usuallyÂ exhaustedÂ Java developers who have found a job doing Ruby in a different company with good medical benefits. YAGNI, like all things software, is an on-going learning process. Building things only when you need them is a given, but it&#8217;s when is it too early, too late, how much do you build, etc&#8230; that&#8217;s the challenge.</p>
<p>Seventh, Chris gave us no deadline for January&#8230; which allowed me to learn my lesson. Sort of.</p>
<p>Eight, taking a 5 year old and having her do dialogue actually worked out well. We did all 8 levels in one sitting which took about 40 minutes with a few re-takes and 2 glasses of water. I was very impressed with Adobe&#8217;s <a href="http://www.adobe.com/products/audition.html">Audition</a> and howÂ quicklyÂ I could batch my hundreds of assets all with my effects applied. It&#8217;s a bit unstable, though, and I have to reinstall when the audio drivers get corrupted.</p>
<p>Nine, I actually liked most of the code. I suffered from a lot of left over ideas in the code which meant navigating it was a little challenging, but it is starting to be clear which parts of architecture I like and help. I lived and died by my game loop, and since Corona doesn&#8217;t have one built in, I was impressed you could build an entire game based on one. That, and <a href="http://box2d.org/">Box2D&#8217;s</a> collisions were solid.</p>
<p>Ten, <a href="https://soundcloud.com/jesterxl/planeshooter-level-1">creating</a> <a href="https://soundcloud.com/jesterxl/planeshooter-level-2-jungle">music</a> went quite well, and the timing was also just luck as well for theÂ crescendo&#8217;sÂ to hit when you reach the mini-bosses.</p>
<p><strong>Key Takeaways</strong></p>
<p>Over all, #6 was directly the result with the lack of tooling. While my package names, ways to build classes in Lua, and other architecture patterns were legit, wading through it and modifying it was way more challenging than it is in otherÂ languagesÂ that have mature tooling and IDE support. This in turn adjusted how much architecture I implemented, where, and when.</p>
<p>For example, yes, long descriptive package names are helpful, prevent you from having to think where things are, and really organize your code. However, in Lua and <a href="http://www.sublimetext.com/">Sublime</a>&#8230; they&#8217;re a pain in the ass to navigate and change. Once you want to refactor something, even with unit tests the entire effort is on you; you get no help from the IDE nor runtime what you forgot unless you&#8217;ve left asserts with descriptive error messages everywhere. That is a HUGE burden on a developer under a tight deadline.</p>
<p>Additionally, I learned that a lot of the <a href="http://www.robotlegs.org/">Robotlegs</a> code IÂ borrowedÂ you don&#8217;t need in Corona SDK because it has a built in event bus that works fine. You don&#8217;t often need to create sequestered event buses, 1 is fine. That and <a href="http://martinfowler.com/articles/injection.html">Dependency Injection</a> isn&#8217;t worth it merely because the language doesn&#8217;t support it; you&#8217;re better off just following a convention, much like jury-rigging <a href="http://puremvc.org">PureMVC</a> to act like Robotolegs by firing created and destroyed events in the View&#8217;s so the framework can add the required Mediators.</p>
<p>I spent 5+ years ensuring I don&#8217;t use global variables in my code, and another 5+ years ensuring you don&#8217;t create too many Singletons once ActionScript went to a class based language. Now, I&#8217;m always using the same 2 globals in my games and they&#8217;re really useful and make the code readable. It&#8217;s still not good practice, but for quick iterations and speed, they&#8217;re legit. Having to pass the same 2 variables into 99% of my classes externally isÂ ridiculous&#8230; it got a lot worse with composition. I no longer judge those who use _G intentionally.</p>
<p>Organizing my tasks into <a href="http://trello.com">Trello</a> quickly pointed out how much work I had left. If I kept tabs on my tasks, I could quickly judge if I was off track (doing the wrong tasks), or if I was going to have too much work. That, however, took a lot of discipline&#8230; when the whole reason I&#8217;m doing this is for fun.</p>
<p><strong>Conclusion</strong></p>
<p>Feburary: Smaller scope, focus on more levels.</p>
<p>The <a href="https://github.com/JesterXL/PlaneShooter">source code</a> is up on Github. You can <a href="https://play.google.com/store/apps/details?id=com.jessewarden.PlaneShooter">install on Android here</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
