<?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>One Man Band Software</title>
	<atom:link href="http://ombsoft.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://ombsoft.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 03 May 2010 16:22:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Charity Project: Postmortem</title>
		<link>http://ombsoft.com/blog/?p=317</link>
		<comments>http://ombsoft.com/blog/?p=317#comments</comments>
		<pubDate>Mon, 03 May 2010 16:15:40 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://ombsoft.com/blog/?p=317</guid>
		<description><![CDATA[(Click for full-size) Recently I constructed an ID card management app for a charity near to where my parents live. The charity is called  Thera and whilst I&#8217;m not affiliated it with it in any way or form I hope they don&#8217;t mind me mentioning them here for educational purposes. Please note, however, that this [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ombsoft.com/blog/wp-content/uploads/2010/05/postmortemphoto.png"><img class="aligncenter size-medium wp-image-318" title="postmortemphoto" src="http://ombsoft.com/blog/wp-content/uploads/2010/05/postmortemphoto-300x160.png" alt="" width="300" height="160" /></a></p>
<p style="text-align: center;">(Click for full-size)</p>
<p>Recently I constructed an ID card management app for a charity near to where my parents live. The charity is called  <strong>Thera </strong>and whilst <span style="text-decoration: underline;">I&#8217;m not </span><em><span style="text-decoration: underline;"><span style="font-style: normal;">affiliated it with it in any way or form</span></span> </em>I hope they don&#8217;t mind me mentioning them here for educational purposes.</p>
<p>Please note, however, that this is a purely technical / &#8216;shipping&#8217; post-mortem. Thera have not explicitly selected my application for use yet &#8211; and they may well not use it at all. They&#8217;re reviewing multiple solutions (both commercial and non-commercial) but let&#8217;s hope they select the one developed entirely for free as a personal project: Because that&#8217;s exactly what it was. Whilst doing this fulfilled an assignment for my course, the assignment is completely formative. It doesn&#8217;t affect my grades or anything. Realistically I took this on because it was interesting.</p>
<h2><strong>So&#8230; What is it?</strong></h2>
<p>Previously (or currently, in fact) issuing ID cards at Thera was a manual process. The cards themselves turned out O-K but the workload involved creating them was huge &#8211; and not an effective process considering the advent of databases, automatic systems etc.</p>
<p>I created a small application to automate the card issuing process in about ~3 weeks. It couldn&#8217;t automate everything (you have to put employee details in it, for example) but after that it can filter and produce cards with the press of a button (with sequential serial numbers and everything)</p>
<h2>What went right</h2>
<ul>
<li><strong>Spending a large portion of available time on the low-level model and testing. </strong>Any programmer knows that wiring logic directly behind a UI (&#8216;magic button&#8217; anti-pattern, as it is commonly known) is a cardinal sin. With this in mind, for the largest amount of time (about ~2 weeks) the project was purely data and classes. No UI. Just the model and a bunch of tests. And this worked <strong>brilliantly. </strong>Why? Because when I came to make the UI, I already knew the stuff underneath was rock-solid. It made things easy to debug, and also easy to make changes.
<p>You may ask &#8220;Make changes, in what way?&#8221;. A very good example is v1.1 which I just finished. One of the major irritations was that I hadn&#8217;t fully fleshed out modification detection in v1.0. Every time you closed a form (whether you changed anything or not) it would ask whether to save changes. If my logic were a bit more tied up with the UI, this could have been seriously difficult to fix (or at least, any solution would be difficult to maintain). With the well separated model, doing this was a piece of cake &#8211; especially since every database entity inherited from a single class. I added a modification counter and checker into the base class (~20 lines) and in 5 minutes it worked. It was fantastic. This also leads me onto my next point&#8230;.</li>
<li><strong>&#8216;Rolling my own&#8217; turned out to be a good decision. </strong>Generally, creating your own custom <em>anything </em>is a bad idea, unless you&#8217;re in new, unknown territory. Which I wasn&#8217;t &#8211; my application was database-backed (SQLite) so everything had a pre-made-solution that could be found somewhere. The snag is, every solution to storing POJOs in databases (Plain-Old-Java-Objects to the uninitiated - i.e. instances of class &#8211; so painless syncing between what you&#8217;ve got the code doing and what is stored in the database) was either annoying and required additional files outside of the code (which I really didn&#8217;t want) or had issues with nested objects
<p>&#8216;db4o&#8217; was a top contender for a while &#8211; it was incredibly easy to sync in and out of the database without any external mapping or anything. But what bit it was that last point. Nested objects. It handles them, sure. But it&#8217;s a pain. You sort of have to be &#8216;aware&#8217; of what depends on what and sort out the order yourself. That&#8217;s great, but since this this application was very likely to grow quickly (as I found out new things Thera wanted) this was not a good solution for maintainability. So I rolled my own&#8230;</p>
<p>My base class &#8216;FieldMapObject&#8217; completely redefines how derived classes declare variables. When they&#8217;re built, they call &#8216;delcare()&#8217; with a variable name and type. The FieldMapObject remembers and stores it in a map along with type data and an initial value (null).</p>
<p>Now this probably <em>seems </em>like a stupid solution, but actually it had many unexpected upsides. One of which is the modification counter in the above point. Putting that directly into FieldMapObject meant it instantly worked for any entity that derived from it. No modifications needed. And debugging was made extremely easy. With everything being programmatically &#8216;known&#8217; by the class, it could automatically spit out printed lists of each variable and its current value. It even detected nested FieldMapObjects and spat out their data &#8211; appropriately &#8216;nested&#8217; in the text.</p>
<p>Along with this, I built &#8216;DataServer&#8217; a class which derived from the raw Storage class I had built (the raw storage simply ran SQL queries via JDBC/SQLite and built the initial tables when it detected the DB as empty). DataServer turned out really nicely &#8211; because everything inherited from FieldMapObject (well, DatabaseEntity in reality, but that was built on FieldMapObject) it had simple routines that covered any object &#8211; put() get() discard() and update(). In fact, update() was private &#8211; put() could automatically detect objects with a valid DB rowid (thanks to FieldMapObject) and update() when appropriate. get() and put() even cater for nested objects as mentioned earlier. By running through the declare()d fields in the FieldMapObject, it detected the dependencies and put() them first (which chained nicely with deep nested hierarchies).get() ended up being even smarter in fact &#8211; later in development every entity was given a &#8216;weight&#8217; (in memory). If DataServer was set to &#8216;shallow load&#8217; it would automatically skip nested fields that were deemed too &#8216;heavy&#8217;. (Keep in mind the DB was storing images &#8211; photos of the employees. So that&#8217;s really where it came into play. You don&#8217;t want a list of a 1000 employees causing a 1000 nested photos to be loaded)</p>
<p>Overall, rolling my own field mapping/dependency detection turned out great. You may think &#8220;this guy&#8217;s an idiot &#8211; he satisfied his own technology ego but doing this didn&#8217;t help the project&#8221; &#8211; in which case you&#8217;d be wrong. Spending this extra time on fetching and putting data made building the UI an absolute breeze. I mean it too &#8211; it was incredibly easy. There were a few rough edges to work around, sure, but 99% was extremely nice. I think making this system in this way made the end product far easier to produce &#8211; and as a result, less buggy and far more stable.</li>
<li><strong>Hand-crafted Swing code kicks the crap out of generated code. </strong>If I discarded everything I did on the project and started again for some reason, this one thing is the aspect I&#8217;d keep &#8211; and I will continue to keep on subsequent projects. Swing was kind of an unknown to me. Having used non-Java UI toolkits I was initially scared of hand coding UIs in it. Because normally, UI toolkits are horrible to hand code with. But eventually I bit the bullet and tried&#8230; and it was great. Granted, the UI is not the best designed thing on the planet. But it works, and it is easy to maintain. For one thing, I can read the code. It doesn&#8217;t depend on the stability of a poorly written UI designer either. It&#8217;s in the code. The only part of this I was so sure about &#8211; and I guess this applies beyond Java &#8211; is what is the <em>correct </em>way to lay out the reams of code that setup the UI? I split mine into functions which set up each respective part, but it still seems an unpleasant solution. Is there some accepted way to do this? But any way, using Swing manually was a good idea.</li>
</ul>
<h2>What went wrong</h2>
<ul>
<li><strong>Not thinking about how I would handle [UI] tables. </strong>The mechanism of dependency matching I used worked really nicely for a small group of objects. What I completely ignored (until I started developing the UI) is how I would get huge lists of employees into memory fast enough and efficiently enough to show in a table. My initial attempt was a miserable (and stupid) failure: get()ing every employee and dumping it into a List&lt;&gt;. Suffice to say that was slow as hell past ~1000 employees (Thera have about 2K employees by the way)
<p>I never really did &#8216;fix&#8217; this problem. That is, I worked around it. I coded an SQL query and a matching function in DataServer that returned the employees as a raw ResultSet. My JTable manually stepped through the result set and used the columns it wanted. This worked nicely from a speed point of view, but it was a stupid solution. It broke the niceness of the dependency and object system, meaning it will no doubt become hell to maintain if I don&#8217;t refactor it. The more horrifying thing is&#8230;. it made it into 1.1 as well. And&#8230; I built a new filter system which also assumes ResultSets. So I think that&#8217;s next on the hit list. Retrofit speed fetching into the object system without compromising it. It&#8217;s going to be difficult, to say the least</li>
<li><strong>Not realising I would need to update databases at some point, as well as building them. </strong>One of the first things I had going on the project was a system to detect what tables existed in the database, and build the ones that were missing (so for example, building the table structure automatically on a new file). It worked great. What I did not do at this point (and what I still haven&#8217;t done) is to take stock of the fact that eventually, I WILL need to change the tables on a file that is already <strong>full </strong>of data. And I won&#8217;t be able to just CREATE TABLE. I will have to alter it. What&#8217;s more is that my format is lacking any kind of versioning information. The application has no idea what version of tables are in the database. Ack. I think I&#8217;ll be targeting this for v1.1.1 if Thera decide to use it</li>
<li><strong>Relying too much on buttons in v1.0. </strong>In the first version, there were tons of buttons. View Card, Issue Card, Queue All, Dequeue All, Queue Selected etc. It was confusing unless using a large screen (which padded them out horizontally). For v1.1 I switched to a menu bar (as per the screenshot). Which worked great &#8211; all the Queue functions were kept together and so were the filters. The problem is, v1.0 completely lacked any menu bar, and the sudden change was both jarring and confusing for anyone but myself. I suppose the lesson here is to think ahead with what you&#8217;re <strong>likely </strong>to add &#8211; because after all, I only added a menu to make space for new commands (no more space for buttons). This comes to lack of foresight I suppose</li>
</ul>
<h1>Stats</h1>
<ul>
<li><strong>Total physical Source Lines Of Code (SLOC):</strong> 4602  (excluding field mapping library)</li>
<li><strong>v1.0 completed:</strong> 23/04/2010</li>
<li><strong>v1.1 completed:</strong> 01/05/2010</li>
<li><strong>Libraries</strong>: Swing, JCalendar control, SQLite JDBC, Swing layout extensions</li>
<li><strong>Subversion checkins/commits: </strong>~150   (~3 week development time from start to v1.0)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=317</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Designing and prototyping</title>
		<link>http://ombsoft.com/blog/?p=307</link>
		<comments>http://ombsoft.com/blog/?p=307#comments</comments>
		<pubDate>Wed, 24 Feb 2010 23:08:47 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://ombsoft.com/blog/?p=307</guid>
		<description><![CDATA[I&#8217;m really enjoying designing and building an application that I&#8217;d say is more &#8216;enterprise oriented&#8217;. Purely because enterprise software actually has a chance of being &#8216;perfect&#8217; &#8211; decent design, automated testing etc. Whereas games can never be this perfect &#8211; because fun can&#8217;t be designed that easily. It&#8217;s also not very easy to test for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m really enjoying designing and building an application that I&#8217;d say is more &#8216;enterprise oriented&#8217;. Purely because enterprise software actually has a <em>chance </em>of being &#8216;perfect&#8217; &#8211; decent design, automated testing etc. Whereas games can never be this perfect &#8211; because fun can&#8217;t be designed that easily. It&#8217;s also not very easy to test for (at least with say, JUnit). General software just has to&#8230; work. Which is fine by me</p>
<p>Currently I&#8217;m designing / prototyping &#8216;codename Spitfire&#8217;. It&#8217;s an idea I had during my ~2 years developing and maintaining a database system for a local charity (Voluntary Action Rutland). Suffice to say it is database related. And I&#8217;d also love for to be able to drop in the completed system as a replacement for the one I developed previously (with some alteration. And assuming it gets finished).</p>
<p>Back to my notebook for now&#8230;.</p>
<div id="attachment_312" class="wp-caption alignnone" style="width: 523px"><a href="http://ombsoft.com/blog/wp-content/uploads/2010/02/proto1.png"><img class="size-full wp-image-312 " title="Notebook" src="http://ombsoft.com/blog/wp-content/uploads/2010/02/proto1.png" alt="My notebook" width="513" height="432" /></a><p class="wp-caption-text">My notebook. I love arrows.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=307</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Both Java and University are&#8230;. awesome</title>
		<link>http://ombsoft.com/blog/?p=303</link>
		<comments>http://ombsoft.com/blog/?p=303#comments</comments>
		<pubDate>Thu, 11 Feb 2010 12:50:14 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Personal/Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://ombsoft.com/blog/?p=303</guid>
		<description><![CDATA[Yes, it has been far too long since my last post. I think the main problem was focus: leaving home for (Durham) University, and all focus on my side-projects was lost &#8211; rightfully so, in order to learn the ropes around uni. and get settled in on my course. For a long time, I simply [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, it has been far too long since my last post. I think the main problem was focus: leaving home for (Durham) University, and all focus on my side-projects was lost &#8211; rightfully so, in order to learn the ropes around uni. and get settled in on my course.</p>
<p>For a long time, I simply ignored coding and my projects &#8211; at least in my spare time. Very quickly things became dull (yes, that makes me a sad person). But I realise now that one of the great parts of having such an involved/interesting hobby/side-project is that it fills the void when everything else isn&#8217;t very good or interesting. Rather than thinking about some benchtest I failed, or how long the term is, I can put all that to the back of my mind and hammer out some code. It gives a focus when everything else has turned to shit, effectively</p>
<p>Well back on topic: I forgot about all that. So I neglected my code and my projects when I first got to uni. It made for a fun, but far more depressing time. When things were looking bad, there was no light at the end of the tunnel. I&#8217;m telling you&#8230; coding is a drug. It makes everything great&#8230;</p>
<p>So at the first chance I got, I immersed myself in code again. And now things are back to normal. I&#8217;ve also sorted out what I&#8217;m doing code and project wise, which is why I&#8217;ve made a return to the blog (without code, what&#8217;s the point in blogging on here? It&#8217;s the entire topic of discussion!)</p>
<h1>Java</h1>
<p>I was initially sceptical about Java. Even in my previous post I wasn&#8217;t entirely convinced. But now I&#8217;ve &#8216;seen the light&#8217;. Here are a couple of reasons:</p>
<ul>
<li>It makes application of decent SoftEng. principles really easy</li>
<li>You can make variable-argument functions with amazing ease (maybe I missed something, but I found this far from trivial in C/C++)</li>
<li>It helped me understand generics, even though C++ had templates (and Java generics are in fact more limited than templates. No idea why I never made use of templates properly)</li>
<li>It&#8217;s fast to develop in, but the syntax is not insulting or eye-bleed inducing (and it&#8217;s similar to C++)</li>
<li>It runs fast. The VM can push along some seriously complex things at damn quick pace! It surprised me &#8211; a lot.</li>
<li>You can try new (risky) things, and if they&#8217;re wrong, they&#8217;ll break immediately rather than appearing correct and breaking further down the line. (This one is difficult to explain but I would often implement something crazy in C/C++ thinking it was correct, only to find some horrible flaw in it weeks or months later. This doesn&#8217;t seem possible with Java)</li>
</ul>
<p>All in all, these reasons mean that unless I need to work with the raw underlying OS for some reason, Java is going to be my weapon of choice for pretty much everything else (and heck, I can even code JNI libs using C/C++ and plug them into my Java apps)</p>
<h3>Project status list</h3>
<ul>
<li>The Hive: Dead for now. (May be resurrected in Java)</li>
<li>IP summative project (BlackJack): Complete</li>
<li>IP formative project (&#8216;Wormhole&#8217;/Millipede with OpenGL): Work-in-progress. Could be released if it&#8217;s good enough / if it doesn&#8217;t become property of Durham Uni.</li>
<li>&#8216;Project Spitfire&#8217; (server/client &#8216;dumb terminal&#8217; style database engine): Prototyping</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=303</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java and attack of the rewrites</title>
		<link>http://ombsoft.com/blog/?p=165</link>
		<comments>http://ombsoft.com/blog/?p=165#comments</comments>
		<pubDate>Sun, 06 Sep 2009 14:02:27 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Personal/Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=165</guid>
		<description><![CDATA[Whoa&#8230; it&#8217;s been a long time since I posted here (as you presumably know) and a lot has happened, so let me just reel all this off. A-Levels I got ABBC in the end (A in Computing, B in History which was annoying, B in General Studies,  and C in Theatre Studies) which exactly matched [...]]]></description>
			<content:encoded><![CDATA[<p>Whoa&#8230; it&#8217;s been a <strong>long </strong>time since I posted here (as you presumably know) and a lot has happened, so let me just reel all this off.</p>
<h1>A-Levels</h1>
<p>I got ABBC in the end (A in Computing, B in History which was annoying, B in General Studies,  and C in Theatre Studies) which exactly matched my offer, so I&#8217;m off to Durham to study Software Engineering on the 3rd of October! <img src='http://ombsoft.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>It all seemed pretty anticlimactic afterwards, but I&#8217;m pleased it&#8217;s all done and it all turned out OK. Computing coursework seemed to have melted in marks somehow (an explanation of which would be very&#8230; <em>interesting </em>to say the least) but other than that, &#8220;meh&#8221; pretty much covers all bases. I need to go back to school at some point and just set the place on fire. Either that or thank teachers. No idea which one is more appropriate at the moment (with the recent &#8220;hubbub&#8221; over kids blowing up schools recently, I would like to clarify that was a joke, however)</p>
<h1>The Hive</h1>
<p>The Hive is currently a bit&#8230; bleh. Things were really going well and the gameplay was coming together (the fact there was anything testable meant it got further than the Wormhole remake, for example). I really did want to get it done and completely out of the way by about now (real deadline was 28th &#8211; which it <em>could </em>have hit) but I&#8217;ve just had no time to work on it as of late &#8211; more charity database stuff, driving lessons and general laziness (oh and <a href="http://en.wikipedia.org/wiki/Sid_Meier's_Alpha_Centauri">Alpha Centauri</a> binges) slowly eroded the available time. And of course, the longer a project is put on ice, the harder it is to get back &#8216;into it&#8217; again.</p>
<p>There is another issue too &#8211; before the time melted away, I was working on a very large change to the game. To make it easier and more rapid to develop, I decided to stop aiming for highly polished, epic platformer, and go for  more of an arcade theme. For example, I was removing separate levels, and made it so the levels &#8220;built themselves&#8221; over time like tetris blocks (so complete the aim and the level expands in size, rather than &#8220;changing screen&#8221; so to speak). There were tons more little tweaks which would have made it quicker to develop too, but it certainly has lost momentum either way. There are now a few options:</p>
<ul>
<li>Drop it. Stop development and give up. I don&#8217;t really want to do this, since a project to work on in my (now minimal) spare time is nice</li>
<li>Continue. Get &#8220;back into&#8221; development again on the current version. Whilst I think this is the easiest way to go about getting it done, it still has a long way, and leads me onto my next point</li>
<li>Change language. Simplification is great, but I think I&#8217;ve reached a plateau on the amount of time I have vs. the amount of time it takes to implement the game in C++. I&#8217;m leaning toward this option (explained more below) but I haven&#8217;t decided yet</li>
</ul>
<h1>Down with C/C++</h1>
<p>One of the reasons I learnt C++ was because most of the other languages I knew had become boring and tedious. The languages themselves were no longer interesting, and I had ended up repeating the same coding tasks again and again on each project. I leapt to C++, and the freshness and challenge was invigorating &#8211; I created a few of my most complete projects immediately after this phase &#8211; Wormhole and The Hive (game projects, at least. I have tons of other complete projects but they&#8217;re mainly tools and are not especially interesting to most people). And even though these games sucked, they got done. I should have continued<strong> </strong>this path (created crap that <strong>got done </strong>- because that way the quality would gradually increase)  but I didn&#8217;t. I shot for the moon and had a string of unfinished turd balls. One game became very nice looking and very nearly finished &#8211; Rockets. It was obliterated by hard drive failure, however, so one of my most promising games was snatched from me at the last hurdle (suffice to say that nowadays I have a backup system running continually every hour)</p>
<p>So what does all this mean? It means I&#8217;ve become too comfortable with C/C++. I&#8217;ve stopped concentrating on the challenge presented by actually implementing the games themselves, and I&#8217;ve become hung up on the elegance of the code itself. The language itself has stopped being challenging (not to imply I know it inside out &#8211; but I know enough for the tasks I do) so I&#8217;ve created new challenges out of nothing (perfecting code which the end user never sees, ironically). The game is no longer the highlight, purely because of the language I&#8217;m using. It has become a pillar&#8230; a safety blanket, if you will. As a programmer, I think one of the best things you can do is to continue challenge yourself to learn new things &#8211; and as it is, I&#8217;m learning very little. I&#8217;m simply applying what I&#8217;ve already learnt again and again.</p>
<p>What I need to do is move to something where the code itself is secondary (if not simplistic) so the game shines through. This removes the safety blanket, so I keep development down to bare necessities, rather than elegance. And so the project itself (and its completion) is more important than what makes it up (the code). Hopefully, this way, my projects are much more likely to succeed. At the moment, I&#8217;m experimenting with Java. Not only is learning it a completely new set of challenges (similar syntax but a completely different build/creation process) but it also makes my time input much more worthwhile (the code is inherently portable).</p>
<p>So&#8230; to conclude. I want to move away from C++. Native code has been fun, but I think games are quickly outgrowing their need for it on PCs. And my game projects certainly do not need the power provided by C++  - they need the flexibility and portability offered by Java more so. I haven&#8217;t decided exactly what to do with the Hive yet, but let&#8217;s wait and see&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=165</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paul Thurrott is the master of misinterpretation</title>
		<link>http://ombsoft.com/blog/?p=159</link>
		<comments>http://ombsoft.com/blog/?p=159#comments</comments>
		<pubDate>Tue, 09 Jun 2009 17:10:03 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[Personal/Life]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=159</guid>
		<description><![CDATA[This is somewhat of a &#8216;rant&#8217; and a point-by-point rebuttal of this post by Paul Thurrott, where he complains about the &#8220;reality distortion&#8221; of WWDC. Whilst I completely agree that Apple are the masters of hyperbole when it comes to obliterating competition (i.e. MS) Paul makes some of the most idiotic points ever &#8211; I [...]]]></description>
			<content:encoded><![CDATA[<p>This is somewhat of a &#8216;rant&#8217; and a point-by-point rebuttal of <a href="http://community.winsupersite.com/blogs/paul/archive/2009/06/08/wwdc-2009-time-for-a-reality-check.aspx">this</a> post by Paul Thurrott, where he complains about the &#8220;reality distortion&#8221; of WWDC. Whilst I completely agree that Apple are the masters of hyperbole when it comes to obliterating competition (i.e. MS) Paul makes some of the most idiotic points ever &#8211; I mean, an Apple conference is easy pickings for critique. But Paul<strong> </strong>manages to do it <strong>wrong</strong>. How on earth is that possible? Let&#8217;s find out.</p>
<blockquote><p><strong>75 million Mac OS X users. </strong>Apple claimed that the OS X user base magically jumped from 25 million to 75 million active users in two years. But it didn&#8217;t. It jumped to 35 million users. The other 40 million are using iPhones and iPod touches. So if there are 1 billion active PC users (and that&#8217;s an old figure), than OS X usage share right now is 3.5 percent. Everyone&#8217;s onboard with the math, right? 3.5 percent. &#8220;No wonder everyone is trying to follow in our footsteps,&#8221; Apple SVP Phil Schiller said. Right.</p></blockquote>
<p>Whilst Apple&#8217;s numbers could be dubious, this point is&#8230; pointless. &#8220;The other 40 million are using iPhones and iPod touches&#8221; -  which run OS X, yes. What&#8217;s your point, Paul? &#8220;So if there are 1 billion active PC users (and that&#8217;s an old figure), than OS X usage share right now is 3.5 percent.&#8221; Yes&#8230;?</p>
<p>I assume Paul is trying to purely dig in at market share percentage here&#8230; or at least I hope so, otherwise his points are rather dvoid of&#8230; point. This is an idiotic point of view to take, because it removes the perspective of that being 3.5% of <strong>one billion </strong>which is <span style="text-decoration: underline;">still</span> <strong>75 million. </strong>75 million is an absolutely massive number &#8211; yeah, sure, it may not parallel the PC market (which is multi OS, not to mention the most popular OS having an ~8 year leapfrog over OS X) but that&#8217;s still huge for a <strong>single</strong> hardware manufacturer, assuming the quantity of &#8220;hackintoshes&#8221; is negligible (The PC market is not a single manufacturer, in case you haven&#8217;t noticed, Paul). Paul, as ever determined to make Apple look bad, however, must present it as a percentage, and forgets the context of hardware (Apple being a hardware company is an extremely significant distinction)</p>
<blockquote><p><strong>Macbooks magically become Macbook Pros. </strong>Apple rebranded the 13-inch Macbook as the Macbook Pro and added SD slots across the line-up. FINALLY. I&#8217;ve only been asking for this handy little feature for, what, 6 years? The batteries are non-replaceable</p></blockquote>
<p>This is a valid point &#8211; but not really that valid. I don&#8217;t really give a damn what you want or need. How about raising the fact that by adding an SD card slot, the machines no longer match their desktop counterparts? That&#8217;s a much more useful (and objective) &#8220;beef&#8221; to raise, since the expected interopibility is destroyed. (Although it may well be a hint toward the features of the next generation of iMacs)</p>
<blockquote><p>Windows 7: &#8220;Even more complexity is present in Windows 7. The same old tech as Vista. Just another version of Vista.&#8221;</p>
<p>Snow Leopard: &#8220;We come from such a different place. We love Leopard, we&#8217;re so proud of it, we decided to build upon Leopard. We want to build a better Leopard, hence Snow Leopard.&#8221;</p>
<p>Um. They sound the same to me. Jerk.</p></blockquote>
<p>Here, Paul demonstrates his inability to read/listen. &#8220;Just <strong>another version </strong>of Vista&#8221; vs. &#8220;build a <strong>better</strong>&#8221; Leopard. Clearly Paul&#8217;s powers of inference are at simian levels, because it&#8217;s quite clear Apple are trying to imply they&#8217;ve improved Leopard, whereas MS are rereleasing the same OS without improvement (which is technically untrue, but the statement makes sense, and isn&#8217;t &#8220;the same thing&#8221; as Paul states it is. Learn to listen and infer, jerk)</p>
<blockquote><p>For the record, Snow Leopard looks just fine to me. It should, after three years of development on a point release.</p></blockquote>
<p>In a stunning case of irony, Paul forgets that Vista was RTM complete in 2006, making Win7 (assuming 2009 release) also a three year development for a point release. Epic fail.</p>
<blockquote><p><strong>Mac OS X is not fully 64-bit. </strong>While Windows users get 64-bit versions of Windows, Mac OS X users will, in Snow Leopard, get an OS in which most of the system is 64-bit, but many &#8220;non-major system apps&#8221; are still 32-bit.</p></blockquote>
<p>Yes Paul, well done. That&#8217;s called a <strong>strategy</strong>. A strategy that has been going on for the last few releases. Rather than switching directly, or releasing two separate versions of the OS, they&#8217;ve made x64 a transition for OS X rather than an outright change. Also, reversing the wording of something doesn&#8217;t make it right, Paul. It was stated &#8220;Major system apps&#8221; are now 64 bit &#8211; that doesn&#8217;t make the reverse true. It may have been, and this may surprise you Paul (it being a conference and all) that this was a key point of interest for the presentation (as in, it&#8217;s an achievement that these major system apps are 64 bit, considering the pain and effort required to bump them up to that level etc.). Overall, Paul has just ignored the point of seamless transition to try and make a petty point. Boo! I say.</p>
<blockquote><p><strong>Snow Leopard pricing. </strong>Apple is finally charging the right price for the latest in a long list of minor upgrades: $29 to Leopard users. This is exactly right, and should serve as inspiration for Microsoft. Seriously.</p></blockquote>
<p>Agreed (and not just because of the dig at MS)</p>
<blockquote><p><strong>iPhone 3.0. </strong>The iPhone is really popular, and let&#8217;s face it, it&#8217;s awesome.[...]</p></blockquote>
<p>No comment (I haven&#8217;t used an iPhone, this may be a valid point)</p>
<blockquote><p><strong>Apple needs to tone down the boring stuff. Look guys, here&#8217;s <em>another </em></strong>iPhone app.<strong> </strong>We get it. Move along, please.</p></blockquote>
<p>It&#8217;s a developer conference. Hence the name. What the hell were you expecting?</p>
<blockquote><p><strong>iPhone 3G S. </strong>Was curious what they were going to call the iPhone 3, since the iPhone 3G was the iPhone 2.0.</p></blockquote>
<p>No comment</p>
<blockquote><p><strong>Voice Control. (3GS only.) </strong>Apple copies Microsoft Sync, no one notices. And by the way, the notion of talking to a smart phone should be obvious. Just saying.</p></blockquote>
<p>I think the copying accusation is fairly moronic &#8211; not just because voice control is as old as mobile phones themselves, but because&#8230; well, maybe I&#8217;m a minority but what the hell is Microsoft Sync? If I have no idea what it is, I doubt Apple or the audience know what it is. Oh, and the idea/concept maybe obvious, but the devil is in the details &#8211; way to try and water down what is essentially extremely complex tech. at work, irrespective of how &#8220;obvioust&#8221; the initial idea is</p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=159</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exams, exams, code, exams, exams&#8230;.</title>
		<link>http://ombsoft.com/blog/?p=157</link>
		<comments>http://ombsoft.com/blog/?p=157#comments</comments>
		<pubDate>Tue, 19 May 2009 12:45:59 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[hive]]></category>
		<category><![CDATA[HUD]]></category>
		<category><![CDATA[party]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[publish]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[sale]]></category>
		<category><![CDATA[sold]]></category>
		<category><![CDATA[up]]></category>
		<category><![CDATA[weapons]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=157</guid>
		<description><![CDATA[A2 exams suck. Not necessarily because they are hard, but just because the quantity of things to remember is fairly diverse. And that means, unless I want to fail, I need to actually make use of the time I have to revise. So far it has been going well &#8211; this week is pure English [...]]]></description>
			<content:encoded><![CDATA[<p>A2 exams suck. Not necessarily because they are hard, but just because the quantity of things to remember is fairly diverse. And that means, unless I want to fail, I need to actually make use of the time I have to revise. So far it has been going well &#8211; this week is pure English history (1640-1685 / 1660-1685) and I&#8217;m already near the end of the commonwealth and the protectorate &#8211; so Charles II&#8217;s reign should fill out the rest of the time quite nicely.</p>
<p>Next week I move onto Stalin&#8217;s Russia (again). That&#8217;s going to be more date learning I think, since the synoptic nature of the paper leaves little actual &#8220;need to know&#8221; material. Provided I &#8216;get&#8217; the sources, everything should be fine. After the steady sailing of the history revision though, the blitz begins. Computing, whilst very easy, does need memorising. The mark scheme is a fickle thing, and I need to ensure I know the Welsh approved answers for everything.</p>
<p>Then I have to squeeze in Brecht, Our Country&#8217;s Good, The Rivals and generic synoptic stuff &#8211; yep, Theatre studies. The one A2 exam I thoroughly dislike, due its length.  After all this&#8230; who knows. At the moment, the time I have seems massive. It will soon shrink though, once I look over how much I need to do again :/</p>
<h2><strong>Where in the world is <span style="text-decoration: line-through;">Waldo</span> the Hive?</strong></h2>
<p>The Hive is sort of in limbo at the moment. It&#8217;s going well in general, but as exam revision revved up, the focus was lost a bit. Restarting development after exams may be tricky. Luckily though, the &#8216;vision&#8217; is all worked out. I know roughly where I need to go to get from A -&gt; Z and I know what&#8217;s missing. It&#8217;s just an issue of filling in the gaps.</p>
<p>Other problems have (or are going to) crop up though. I need to test on Vista. I need to create a proper sound caching mechanism, I need to get regular or semi-regular testing with newbies going,  I need to know whether the Hive is going to be of high enough quality to warrant a release party of some form (!!) or being sold (!!!) and whether it&#8217;s worth getting publisher/portal distribution (!!!!). These last few are really tricky to measure. In it&#8217;s current state it&#8217;s an instant no. But as the game starts to come together (most notable, I need to get the HUD, weapons, power ups, &#8216;shop&#8217; etc. working) it may have that glimmer of awesomeness. Or it may still be incredibly dull to play. Fun is hard to schedule. But I&#8217;m excited to see where this goes&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=157</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Having deadlines vs. Having bad deadlines</title>
		<link>http://ombsoft.com/blog/?p=153</link>
		<comments>http://ombsoft.com/blog/?p=153#comments</comments>
		<pubDate>Sun, 03 May 2009 09:57:47 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Personal/Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[deadline]]></category>
		<category><![CDATA[hive]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=153</guid>
		<description><![CDATA[The Hive is now progressing fairly well -  changes are coming in a rather steady fashion, and I have a fairly concrete list of taks to perform to get the game done. The only part of the contingency missing is level creation: but that&#8217;s something I can get others to help with, due to the [...]]]></description>
			<content:encoded><![CDATA[<p>The Hive is now progressing fairly well -  changes are coming in a rather steady fashion, and I have a fairly concrete list of taks to perform to get the game done. The only part of the contingency missing is level creation: but that&#8217;s something I can get others to help with, due to the level editor in the game.</p>
<p>The problem, however, is the release date. &#8220;When&#8217;s it out?&#8221;.  Deadlines are extremely difficult to construct &#8211; sure, you could take an arbitrary date, and use that. But that&#8217;s a stupid deadline: you need an <strong>informed </strong>deadline, that&#8217;s actually based upon tasks left (and gives you a bit of extra time for polishing off etc.). I could easily make a deadline like that (I think), but the big problem is life. Unlike a studio, or &#8216;pro&#8217; indie developers, the effect of every day life upon my work, and my work ethic, is very hard to predict. Combined with exams, it&#8217;s also a mixture for disaster &#8211; and I don&#8217;t want to commit to a solid deadline during the summer, since I have no idea what I&#8217;m going to be doing during the summer yet.</p>
<p>So how can The Hive be released without a deadline? I&#8217;m not sure really. The other problem I need to contend with is the &#8220;everything but&#8221; scenario. This happens each year after exams &#8211; I find that with a big glob of free time, I actually end up doing everything <em>but </em>the game. Annoyingly I also think of some amazing new game ideas mid way through constructing the current game (it&#8217;s really difficult to fight the urge just to move onto working on little segments of a new game&#8230;).</p>
<p>But I&#8217;m a bit more confident this time around. Because the end is actually in sight. As a rough estimate (without taking into account the effects of life + exams) I would say another <strong>month and a half </strong>on actual game code (Game entity logic, weapons, powerups, UI etc.) and another <strong>month </strong>on polish (Correcting niggly problems with control, improving playability and UI flow etc.) and level construction (this is a lot harder to predict &#8211; I need to use a week or so to design the levels first, because that isn&#8217;t done yet&#8230;)</p>
<p>That makes the provisional release date the <strong>28th of August</strong>. It&#8217;s likely that could be compressed quite a bit &#8211; or it may be overshot completely. It&#8217;s hard to predict what might happen during the summer. But I&#8217;m working on it..</p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=153</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Hive: Pre-Alpha 2</title>
		<link>http://ombsoft.com/blog/?p=145</link>
		<comments>http://ombsoft.com/blog/?p=145#comments</comments>
		<pubDate>Thu, 09 Apr 2009 16:36:54 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[alpha]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[lighting]]></category>
		<category><![CDATA[pre]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=145</guid>
		<description><![CDATA[I said I wanted to live up to &#8220;Release early, release often&#8221;, so here it is: another pre-alpha to screw with. Most importantly, this build does away with the half-baked lighting system of the previous pre-alpha (it could have been used to dramatic effect, but did not look convincing enough in most scenarios, especially due [...]]]></description>
			<content:encoded><![CDATA[<p>I said I wanted to live up to &#8220;Release early, release often&#8221;, so here it is: another pre-alpha to screw with. Most importantly, this build does away with the half-baked lighting system of the previous pre-alpha (it could have been used to dramatic effect, but did not look convincing enough in most scenarios, especially due to the 7 hardware light limit of GPUs &#8211; which applies unless I dabble with shaders or lightmap things. Neither of which I especially want to do)</p>
<h2>Pre-alpha 2 (090409)</h2>
<p><img class="alignnone" src="http://www.ombsoft.com/palpha2.PNG" alt="" width="379" height="405" /></p>
<p>The included level gets you triggering the collapse of honey blocks (the star blocks) and then collecting them. You also get to &#8216;play&#8217; with a physics-powered dynamic block (the red one).<strong> Although the exit will illuminate when you have all the honey blocks you won&#8217;t be able to go through it.</strong></p>
<p>Please read the included readme.txt so you are aware of the controls (particularly for triggering the button)</p>
<p><a href="http://dl.getdropbox.com/u/178495/Hive-Build-PreA_2.zip">Download here (Unzip and run)</a></p>
<h2>Changes in this build</h2>
<p>* Button hull fixed<br />
* Increased cell surface friction<br />
* Fixed kernel message pumps in Physics/World/EditorControl etc.<br />
* Exit now provides a high degree of friction<br />
* Routines and data for saving and loading state of triggered honey blocks<br />
* Shield surface now uses circular physics hull and provides 1+ friction<br />
* World actually Activate()es after load<br />
* Made the shield blocks into a walkable surface hex, rather than a &#8216;canopy&#8217; (easier to implement)<br />
* Added new button graphic + button pressed graphic<br />
* Body now has GetVisualNode()<br />
* Buttons actually work and respond to &#8216;E&#8217; (use key) and fire events when applicable<br />
* All objects attach their entity* ptr as user data to their physics hulls<br />
* FillCollisionBuffer() implemented<br />
* Honey blocks disappear and fire events too<br />
* World responds to button events and triggers honey block falls<br />
* Cleaned up honey block code<br />
* Added jump-ground sensor to player (no more double jumping)<br />
* Found a huge, nasty linked list bug in IronSpring (Fixed)<br />
* Added the dynamic Cell<br />
* Cells have alpha enabled now<br />
* Editor control skip/order change<br />
* Exit can now light up etc.<br />
* Honey blocks have lower density and friction (and restitution)<br />
* Level moderator added (Works out how many blocks need to be collected, fires events to enable the exit)<br />
* Added version details<br />
* Got rid of lighting<br />
* Subtle graphical changes to fix &#8216;black line&#8217; corruption<br />
* Drawing/updating only performed when active window (complete with PAUSED caption when inactive)</p>
<p>&#8216;Enjoy&#8217;</p>
<p><img src="file:///Users/David/Desktop/alpha2.PNG" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=145</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Screw it: Here&#8217;s a pre-alpha</title>
		<link>http://ombsoft.com/blog/?p=137</link>
		<comments>http://ombsoft.com/blog/?p=137#comments</comments>
		<pubDate>Mon, 06 Apr 2009 21:01:59 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Personal/Life]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[early]]></category>
		<category><![CDATA[hive.design]]></category>
		<category><![CDATA[often]]></category>
		<category><![CDATA[pre-alpha]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=137</guid>
		<description><![CDATA[I decided to dump my ideas of getting a completely original idea, and I bit the bullet: I started reimplementing a game I made a while back, called &#8220;The Hive&#8221;. The orginal sucked, but I wanted to fix its flaws. I wrote a quick plan in 15 minutes, started coding the game on Saturday afternoon, [...]]]></description>
			<content:encoded><![CDATA[<p>I decided to dump my ideas of getting a completely original idea, and I bit the bullet: I started reimplementing a game I made a while back, called &#8220;The Hive&#8221;. The orginal sucked, but I wanted to fix its flaws. I wrote a quick plan in 15 minutes, started coding the game on Saturday afternoon, and now I have a pre-alpha. I wanted to adhere to &#8220;Release early, release often&#8221;. So here it is:</p>
<h2>&#8220;The Hive&#8221; pre-alpha (no gameplay)</h2>
<p><img class="alignnone" src="http://ombsoft.com/preview.PNG" alt="" width="325" height="299" /></p>
<p><a href="http://dl.getdropbox.com/u/178495/Hive-Build-PreA-060409.zip">Download link (Dropbox)</a> &lt;- Unzip, and run the EXE. It isn&#8217;t antivirus scanned, but it is extremely unlikely it contains anything nasty. Run at your own risk.</p>
<p>Use arrow keys to move, and space bar to jump</p>
<p><strong>**THIS IS NOT FINISHED SOFTWARE. IT HAS BUGS. IT HAS ISSUES. APPROACH WITH EXTREME CAUTION**</strong></p>
<p>Release notes (as per RelNotes.txt in the ZIP):</p>
<ul>
<li> Runs at windowed 1024&#215;768 in Direct3D9 in 32 bit colour (by design)</li>
<li>Physics is fixed at once per millisecond [1/20] by 10 iteration timestep. If you experience very fast or very slow motion, please report a bug/issue.</li>
<li> The button object (a button with a downward pointing arrow) is currently &#8216;unjumpable&#8217;, since the physics hull is wrongly implemented as a box. Please do not report this as a bug (it&#8217;s a known issue)</li>
<li> Tapping the space bar to jump multiple times can result in &#8216;flying&#8217;. This is because the ground contact resolver is not yet implemented (so the game currently &#8216;guesses&#8217; when you&#8217;ve stopped jumping). This is a known issue.</li>
<li> The exit doesn&#8217;t work (this is simply an engine and motion test)</li>
<li>Falling off of the level structure will not end the game (no game over etc. just infinite falling)</li>
</ul>
<p>Please report any and all bugs you find! (Especially if the game is unable to start)</p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=137</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stumbling through the ideas fridge: &#8220;Bust or Bust&#8221;</title>
		<link>http://ombsoft.com/blog/?p=128</link>
		<comments>http://ombsoft.com/blog/?p=128#comments</comments>
		<pubDate>Fri, 20 Mar 2009 21:37:30 +0000</pubDate>
		<dc:creator>DavidR</dc:creator>
				<category><![CDATA[DavidR]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[bust or bust]]></category>
		<category><![CDATA[cold]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[vaporware]]></category>

		<guid isPermaLink="false">http://ombsoft.com/?p=128</guid>
		<description><![CDATA[Remember: These posts are discussing concepts and ideas. I&#8217;m not committing myself to completing these ideas by posting them here, they&#8217;re simply ideas I&#8217;m investigating. As mentioned previously I&#8217;ve been playing with tons of ideas &#8211; and I wanted to investigate a Worms-like game Initial playing with concept One barrier to creating games is originality.  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Remember: </strong><em>These posts are discussing concepts and ideas. I&#8217;m not committing myself to completing these ideas by posting them here, they&#8217;re simply ideas I&#8217;m investigating.</em></p>
<p>As mentioned previously I&#8217;ve been playing with tons of ideas &#8211; and I wanted to investigate a Worms-like game</p>
<h3><strong>Initial playing with concept</strong></h3>
<p>One barrier to creating games is originality.  Whilst I&#8217;m always trying to get a game <strong>done, </strong>there&#8217;s also the thought in the back of your mind that &#8220;If this gets done, I want it to have significant impact: I don&#8217;t just don&#8217;t want a generic clone. I want something that can stand up on its own&#8221;. It sounds stupid, I know &#8211; after ages without a decent input, I should really be desperate for ANY game, regardless of how original, to get completed successfully.</p>
<p>Unfortunately for the Worms concept, this ideal has remained fairly prevalent &#8211; it appears I won&#8217;t be happy working on anything unless my creativity for making new concepts is satisfied. I think it&#8217;s a good quality to have, but it doesn&#8217;t serve me too well in my current position. But, having some time, and some space to &#8216;play&#8217;, I decided my urge to do something creative, and warp the Worms concept, could be good</p>
<h3><strong>Games with meaning are pretty cool &#8211; or, could be</strong></h3>
<p>Recently, I&#8217;ve been learning a lot about Brechtian theatre &#8211; &#8216;Epic&#8217; theatre, that is designed to inspired, inform and educate. I decided, that whilst revising this, games should try and gravitate toward this idea too. This is much easier to achieve in games than Stanislavski&#8217;s ideas (see my <a href="http://ombsoft.com/?p=75" target="_blank">post</a> about that), so I thought I might actually try it out &#8211; a game that whilst fun, also presents an interesting meaning (or at least, &#8216;food for thought&#8217; &#8211; it isn&#8217;t necessarily direct education, as the piece/game could present conflicting ideas, and allow the audience/player to decide)</p>
<p>The result of this is my idea &#8220;Bust or Bust&#8221; &#8211; my rather naive , and not fully-formed, game concept regarding the current economic climate</p>
<h3>The concept</h3>
<p>In this game, there are very simplistic action-based mechanics. Think pac-man &#8211; collecting objects. In &#8220;Bust or Bust&#8221;, however, these objects are more symbolic. So whilst the gameplay is extremely simple, it is a distilled meaning of a greater idea (That the economic climate sucks, and people are taking advantage of it at our expense &#8211; being my main point)</p>
<ul>
<li>The player starts as a &#8216;neutral&#8217; person (average in appearance)</li>
<li>They are surrounded by a mountainous structure composed of blocks. Each block has a dollar sign on it, and is modeled as a physics body &#8211; so they can fly around, be broken off the &#8216;pyramid&#8217; structure etc. All the blocks together represent the economy.</li>
<li>If more blocks are being built, the economy is improving</li>
<li>If blocks are being destroyed / there are few blocks remaining, the economy is being destroyed</li>
<li>The player can choose <strong>either one </strong>as a goal</li>
<li>They collect &#8216;pellets&#8217;, which are actually &#8216;bail outs&#8217; in the game (I plan for these &#8216;pellets&#8217; to resemble pieces of paper, representing acts which give the player cash. Hence collecting these is a positive action, or at least, for the player)</li>
<li>Once the player has collected a certain quantity of &#8216;pellets&#8217;, they can use them to do something. My simplistic proof-of-concept, was that 5 pellets bought a bomb (which could be used to destroy economy blocks, and somehow benefit the player) and 6 pellets bought a hammer (which could be used to create economy blocks &#8211; helping the economy, and not necessarily the player). The point here is that it makes it more desirable for the player to exploit the &#8216;economy&#8217; because bombs are cheaper &#8211; they can get more for their pellets, and help themselves too. But the hammers are more expensive, and don&#8217;t help the player.</li>
<li>But, here&#8217;s the catch: Whilst the &#8216;bomb&#8217; provides the easiest <em>seeming </em>root, the hammers actually benefit the player in a more subtle way. Bear in mind that I envisage this is a single player &#8216;Soldat&#8217; type game &#8211; whilst trying to get the pellets, the players can shoot each other etc. &#8211; so the hammers, could, for instance, have the advantage of giving the player more protection (shields) or better weapons to fight the other players. And the bombs, while giving the player an advantage in money, could disadvantage them in other ways &#8211; make them swell up big and fat, making them a big slow moving target etc.</li>
<li>As the above point demonstrates, this probably means the best game play tactic would end up requiring &#8216;dabbling&#8217; &#8211; sometimes using bombs, sometimes using hammers. If the overall point of the game is to make money though (and say, the hammer users get a very small amount of cash per hammer use) then this could encourage interesting strategy. Player&#8217;s wouldn&#8217;t want to bomb all the time, because they get big and fat, and become easy targets (maybe dying loses you money?) whilst they wouldn&#8217;t want to &#8216;hammer&#8217; all the time either &#8211; because they don&#8217;t make nearly enough money.</li>
</ul>
<p>Overall, whilst this concept is still extremely &#8216;rough&#8217;, I think it could provide interesting gameplay, without completely forfeiting my original intention &#8211; meaning (It&#8217;s easy to exploit the economic situation if you&#8217;re in the position to do so -but it will have dire consequences. Fixing the economy is difficult in the short term, but has a massive advantage for all)</p>
<p>So, off to try it out! <img src='http://ombsoft.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://ombsoft.com/blog/?feed=rss2&amp;p=128</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
