Archive

Posts Tagged ‘development’

Gamification Doesn’t Always Make Sense.

January 20th, 2012 2 comments

When I first started hearing about achievement systems I honestly thought they were a total waste of time. I usually play games just for the sake of playing them, not because I want to have some kind of meta-performance tracker that I can show off to my friends. I did start to warm to them when the encouraged novel or interesting kinds of game play like many of the achievements in Team Fortress 2 did. It wasn’t long after achievements caught on that the whole gamification movement took hold and all new start ups started adding game features to their products.

Now I wasn’t immune to this either. When I was working on Lobaco I thought it would be a great idea to add in some achievements in order to encourage people to participate in local discussions. Indeed I was going to take it a couple steps further and have things like local leader boards and titles based on your overall score in a particular area. All of these things were done in the name of increasing user engagement as many studies and successful start ups have shown that game like elements keep people coming back. Of course everyone then saw it as the panacea to their ills and game elements started appearing in places that they really shouldn’t.

I came across one such example this morning in my usual troll for blog fodder. Microsoft, for some strange reason, decided to code up an achievement system for Visual Studio, their flagship development environment. It looks to be an extension to Visual Studio itself and currently only works if you’re coding with Visual Basic or C# (arguably the most common languages though). There’s dozens of achievements already in there and even a leaderboard of the top 15 people who’ve gained the most achievements. Taken at face value I can see this being a good thing by encouraging good programming habits through achievements.

Microsoft’s implementation is anything but that.

Many of the achievements are either pointless, inane or actively encourage bad coding habits. 50 projects in a solution? A class that has every kind of scope in it? I can foresee situations where these things might happen (but they still shouldn’t) and it begs the question as to why these were added in. The flip side of this is people creating one shot projects in order to get these achievements (which everyone on the leaderboard has done) which makes the achievements even more meaningless. Indeed the whole idea just seems like a poorly thought out attempt at getting into the gamification scene, one that will be rightly ignored by most proper developers.

Just like in Lobaco where adding in game elements didn’t make complete sense (at least not at the great expense of other features, which it did) there are many times where the gamification of something just plain won’t work. If the core of your idea is based around a game idea then it probably makes sense to include achievements. If it does not then realistically you shouldn’t be adding them in until you’ve done everything else possible to deliver a good product/service to your end users. Attempting to keep people interested with cheap tricks like gamification won’t work if the underlying product has no redeeming value, nor if the core use of the product isn’t a game mechanic itself. The sooner people realise this the better as the spread of crappy, tacked on game mechanics is really not doing anyone any favours.

Diablo III on Consoles? Colour me Intrigued…

January 11th, 2012 No comments

One of my most hotly anticipated games for this year, and I know I’m not alone in this, will be Blizzard’s Diablo III. I can remember the days of the original Diablo, forging my way down into the bowels of the abandoned church and almost leaping out of my chair when the butcher growled “Aaaahhh, fresh meat!” when I grew close to him. I then went online, firing up my 33K modem (yes, that’s all I had back then) and hitting up the then fledgling Battle.Net only to be overwhelmed by other players who gifted me with unimaginable loot. I even went as far as to buy the only official expansion, Hellfire, and play that to its fullest revelling in the extended Diablo universe.

Diablo II was a completely different experience, one that was far more social for me than its predecessor. I can remember many LANs dedicated to simply creating new characters and seeing how far we could get with them before we got bored. The captivation was turned up to a whole new level however with many of us running dungeons continuously in order to get that last set item or hoping for that extremely rare drop. The expansion pack served to keep us playing for many years after the games release and I still have friends telling me of how they’ve spun it back up again just for the sheer thrill of it.

Amongst all this is one constant: the torturous strain that we put on our poor computer mice. The Diablo series can be played almost entirely using the mouse thanks to the way the game was designed, although you do still need the keyboard especially at higher difficulties. In that regard it seemed like the Diablo series was destined to PC and PC only forever more. Indeed even though Blizzard had experimented with the wild idea of putting StarCraft on the Nintendo64 they did not attempt the same thing with the Diablo series. That is up until now.

Today there are multiple sources reporting that Diablo III will indeed be coming to consoles. As Kotaku points out the writing has been on the wall for quite some time about this but today is the day when everyone has started to pay attention to the idea. Now I don’t think there’s anything about the Diablo gameplay that would prevent it from being good on a console, as opposed to StarCraft (which would be unplayable, as is any RTS on a console). Indeed the simple interface of Diablo’s past would easily lend itself well to the limited input space of the controller with few UI changes needed. What concerns most people though is the possibility that Diablo III could become consolized, ruining the experience for PC gamers.

Considering that we’re already got a beta version of Diablo III on PC it’s a safe bet that the primary platform will be the PC. Blizzard also has a staunch commitment to not launching games until their done and you can bet that if there were any hints of consolization in one of their flagship titles it’d be picked up in beta testing long before it became a retail product. Diablo III coming to consoles is a sign of the times that PC gaming is still somewhat of a minority and even titles that have their roots firmly in the PC platform still need to consider a cross platform release.

Does this mean I’ll play Diablo III on one of my consoles? I must say that I’m definitely curious but I’ve already put in my pre-order for the collector’s edition of Diablo III on the PC. Due to the tie in with Battle.Net it’s entirely possible that buying it on one platform will gain you access to another via a digital download (something Blizzard has embraced wholeheartedly) and I can definitely see myself trying it out just for comparison. For me though the PC platform will always be my primary means by which I game and I can’t deny my mouse the torturous joy that comes from a good old fashioned Diablo session.

Sortilio: Because Sorting Media Isn’t Hard.

December 19th, 2011 No comments

My post last week about the trials and tribulations of sorting ones media collection struck a chord with a lot of my friends. Like me they’d been doing this sort of thing for decades and the fact that none of us had any kind of sense to our sorting systems (apart from the common thread of “just leave it where it lies”) came at something of a surprise. I mean just taking the desk I’m sitting at right now for an example it’s clear of everything bar computer equipment and the stuff I bring in with me every day. The fact that this kind of organization doesn’t extend to our file systems means that we either simply don’t care enough or that it’s just too bothersome to get things sorted. Whilst I can’t change the former I decided I could do something about the latter.

Enter Sortilio.

So my quest last week proving fruitless I set about developing a program that could sort media based on a couple cues derived from the files themselves. Now for the most part media files have a few clues as to what they actually are. For the more organized of us the top level folder will contain the episode name but since mine was all over the place I figured it couldn’t be trusted. Instead I figured that the file name would be semi-reliable based on a cursory glance at my media folder and that most of them were single strings delimited with only a few characters. Additionally the identifier for season and episode number is usually pretty standard (S01E01, 2×01,1008, etc) so that pulling the season out of them would be relatively easy. What I was missing was something to verify that I was looking in the right place and that’s where I TheTVDB comes in.

The TV Database is like IMDB for TV shows except that it’s all community driven. Also unlike IMDB they have a really nice API that someone has wrapped up in a nice C# library that I could just import straight into my project. What I use this for is a kind of fuzzy matching filter for TV show names so that I can generate a folder with the correct name. At this point I could also probably rename the files with the right name (if I was so inclined) but for the point of making the tool simple I opted not to do this (at this point). With that under my belt I started on the really hard stuff: figuring out how to sort the damn files.

Now I could have cracked open the source of some other renaming programs to see how they did it but I figured out a half decent process after pondering the idea for a short while. It’s a multi-stage process that makes a few assumptions but seems to work well for my test data. First I take the file name and split it up based on common delimiters used in media files. Then I build up a search string using those broken up names stopping when I hit a string that matches a season/episode identifier. I then add that into a list of search terms to query for later, checking first to see if it’s already added. If it’s already in there I then add the file path into another list for that specific search term, so that I know that all files under that search term belong to the same series. Finally I create the new file location string and then present this all to the user, which ends up looking like this:

The view you see here is just a straight up data table of the list of files that Sortilio has found and identified as media (basically anything with the extension .avi or .mkv currently) and the confidence level it has in its ability to sort said media. Green means that in the search for the series name it only found one match, so it’s a pretty good assumption that it’s got it right. Yellow means that when I was doing a search for that particular title I got multiple responses back from TheTVDB so the confidence in the result is a little lower. Right now all I do is take the first response and use that for verification which has served me well with the test data, but I can easily see how that could go wrong. Red means I couldn’t find any match at all (you can see what terms I was searching for in the debug log) and everything marked like that will end up in one giant “Unsorted” folder for manual processing. Once you hit the sort button it will perform the move operations, and suffice to say, it works pretty darn well:

Of course it’s your standard hacked-together-over-the-weekend type deal with a lot of not quite necessary but really nice to have features left out. For starters there’s no way to tell it that a file belongs to a certain series (like if something is misspelled) or if it picks the wrong series to tell it to pick another. Eventually I’m planning to make it so you can click on the items and change the series, along with a nice dialog box to search for new ones should it not get it right. This means you might want to do this on a small subset of your media each time (another thing I can code in) as otherwise you might get files ending up in strange folders.

Also lacking is any kind of options page where you can specify things like other extensions, regex expressions for season/episode matching and a whole host of other preferences that are currently hard coded in. These things are nice to have but take forever to get right so they’ll eventually make their way into another revision but for now you’re stuck with the way I think things should be done. Granted I believe they’ll work for the majority of people out there, but I won’t blame you if you wait for the next release.

Finally the code will eventually be open sourced once I get it to a point where I’m not so embarrassed by it. If you really want to know what I did in the ~400 odd lines that constitute this program then shoot me an email/twitter and I’ll send the source code to you. Realistically any half decent programmer could come up with this in half the amount of time I did so I can’t imagine anyone will need it yet, unless you really need to save 3 hours :P

So without further ado, Sortilio can be had here. Download it, unleash it on your media files and let me know how it works for you. Comments, questions, bugs and feature requests can be left here as a comment, an @ message on Twitter or you can email me on therefinedgeek@gmail.com.

Unity and Windows Phone 7: Microsoft’s Short Sightedness Damages Their Platform.

November 15th, 2011 No comments

Cross platform development is one of those things that I’ve seen done dozens of times before but rarely do I see anyone get it right. I understand the allure of doing so, heck my most creative forms of procrastination came from experimenting with these ideas, but the fact remains that more often than not they’re going to be a total waste of your time. I do have one exception to this rule however and that comes in the form of the cross-platform game engine Unity. Where other libraries promise compatibility and a wide range of functions Unity actually delivers on these with little compromise. Couple that with their ridiculously good pricing model and awesome dev environment and it’s hard to fault the product. Indeed all the shortcomings I found were, as far as I could tell, limitations of my programming expertise.

For games developers Unity offers the chance to have one code base for all platforms with only minor tweaking required once you want to deploy the project to your chosen platform. This is great because initially you can focus on one platform and then once you’ve verified your product there it doesn’t take much to port it to the new platform. It’s no surprise then that you’ll find many Unity based games in both the Apple and Android app stores. Figuring that Unity was going for all round platform domination I thought it was only a matter of time before I saw that the library would support Windows Phone 7, even though it’s still in its nascent stages.

As it turns out however that won’t be happening:

The Unity engine does not support Windows Phone 7 because of restrictions placed on Microsoft’s mobile, the CEO of Unity Technologies has said.

“But we’re looking at Windows Phone 8 and hopefully it will be easier to work on that system,” he said.

In an interview with Develop, to be published soon, Helgason explained Windows Phone 7 “is a relatively closed system so you can’t run native content, which means we can’t really support it”.

The “closed” nature that David Helgason (CEO of Unity) is referring to is the fact that if you want to put a game on the Windows Phone 7 platform you need to have coded it in either Silverlight or Microsoft’s XNA framework. Unity then approached Microsoft to see if they could get an exemption from this rule (as well as access to some private APIs which would be required for their libraries to work) however Microsoft turned them down. This means that Unity and all the games built on top of it are banned from being released on this platform, save for a full rewrite of the code. In response Unity has turned their sites towards Windows 8 which will be a lot more friendly for them thanks to the WinRT framework

This feels like a pretty big misstep from Microsoft. Windows Phone 7 hasn’t been gaining any momentum and it’s overall smart phone market share (that includes Windows Mobile devices) has been taking quite the battering dropping to a low of 1.6%. Whilst I won’t go as far to say that Unity would be its saving grace it definitely wouldn’t hurt to have that available as an option for games developers looking to develop for the Windows Phone 7 platform. Indeed since Unity supports coding in C# I’d hazard a guess that there would be quite a few who’d be willing to give it a shot just because it would be easy for them to learn. Heck I know I did.

In reality Windows Phone 7 has a lot of other hurdle to overcome before it can be considered a serious competitor in the market but Microsoft can’t afford to throw away any potential advantage it can get. Not working with Unity only serves to damage the Windows Phone 7 platform as it has demonstrated success on every platform it’s available on. Unity developers then may have to wait for Windows 8 and the corresponding Windows Phone release before they can think about coming across onto Microsoft’s platform but I feel that may be too far off, and the damage has already been done.

The Memristor: Moore’s Law Gets a Jolt.

October 10th, 2011 No comments

The computer (or whatever Internet capable device you happen to be viewing this on) is made up of various electronic components. For the most part these are semiconductors, devices which allow the flow of electricity but don’t do it readily, but there’s also a lot of supporting electronics that are what we call fundamental components of electronics. As almost any electrical enthusiast will tell you there are 3 such components: the resistor, capacitor and inductor each of them with their own set of properties that makes them useful in electronic circuits. There’s been speculation of a 4th fundamental component for about 40 years but before I talk about that I’ll need to give you a quick run down on what the current fundamentals properties are.

The resistor is the simplest of the lot, all it does is impede the flow of electricity. They’re quite simple devices, usually a small brown package banded by 4 or more colours which denotes just how resistive it actually is. Resistors are often used as current limiters as the amount of current that can pass through them is directly related to the voltage and level of resistance of said resistor. In essence you can think of them as narrow pathways in which electric current has to squeeze through.

Capacitors are intriguing little devices and can be best thought of as batteries. You’ve seen them if you’ve taken apart any modern device as they’re those little canister looking things attached to the main board of said device. They work by storing charge in an electrostatic field between two metal plates that’s separated by an insulating material called a dielectric. Modern day capacitors are essentially two metal plates and the dielectric rolled up into a cylinder, something which you could see if you cut one open. I’d only recommend doing this with a “solid” capacitor as the dielectrics used in other capacitors are liquids and tend to be rather toxic and/or corrosive.

Inductors are very similar to capacitors in the respect that they also store charge but instead of an electrostatic field they store it in a magnetic field. Again you’ve probably seen them if you’ve cracked open any modern device (or say looked inside your computer) as they look like little circles of metal with wire coiled around them. They’re often referred to as “chokes” as they tend to oppose the current that induces the magnetic field within them and at high frequencies they’ll appear as a break in the circuit, useful if you’re trying to keep alternating current out of your circuit. 

For quite a long time these 3 components formed the basis of all electrical theory and nearly any component could be expressed in terms of them. However back in 1971 Leon Chua explored the symmetry between these fundamental components and inferred that there should be a 4th fundamental component, the Memristor. The name is a combination of memory and resistor and Chua stated that this component would not only have the ability to remember its resistance, but also have it changed by passing current through it. Passing current in one direction would increase the resistance and reversing it would decrease it. The implications of such a component would be huge but it wasn’t until 37 years later that the first memristor was created by researchers in HP’s lab division.

What’s really exciting about the memristor is its potential to replace other solid state storage technologies like Flash and DRAM. Due to memristor’s simplicity they are innately fast and, best of all, they can be integrated directly onto the chip of processors. If you look at the breakdown of a current generation processor you’ll notice that a good portion of the silicone used is dedicated to cache, or onboard memory. Memristors have the potential to boost the amount of onboard memory to extraordinary levels, and HP believes they’ll be doing that in just 18 months:

Williams compared HP’s resistive RAM technology against flash and claimed to meet or exceed the performance of flash memory in all categories. Read times are less than 10 nanoseconds and write/erase times are about 0.1-ns. HP is still accumulating endurance cycle data at 10^12 cycles and the retention times are measured in years, he said.

This creates the prospect of adding dense non-volatile memory as an extra layer on top of logic circuitry. “We could offer 2-Gbytes of memory per core on the processor chip. Putting non-volatile memory on top of the logic chip will buy us twenty years of Moore’s Law, said Williams.

To put this in perspective Intel’s current flagship CPU ships with a total of 8MB of cache on the CPU and that’s shared between 4 cores. A similar memristor based CPU would have a whopping 8GB of on board cache, effectively negating the need for external DRAM. Couple this with a memristor based external drive for storage and you’d have a computer that’s literally decades ahead of the curve in terms of what we thought was possible, and Moore’s Law can rest easy for a while.

This kind of technology isn’t you’re usual pie in the sky “it’ll be available in the next 10 years” malarkey, this is the real deal. HP isn’t the only one looking into this either, Samsung (one of the world’s largest flash manufacturers) has also been aggressively pursuing this technology and will likely début products around the same time. For someone like me it’s immensely exciting as it shows that there are still many great technological advances ahead of us, just waiting to be uncovered and put into practice. I can’t wait to see how the first memristor devices perform as it will truly be a generational leap ahead in technology.

 

Ideas, Execution and Achieving Your Goals.

September 7th, 2011 No comments

Imagine a social gathering, you’re familiar with most of the people there but not all of them so you’ve been engaging with some small talk so you don’t spend the next 4 hours being that weird guy in the corner. Amongst the varying commentary about weather, local sports teams and what have you inevitably the conversation turns to what you all do for a living. Now for most people this is usually a one liner followed by a few back and forths over a few minor details and then it’s off to the other topic of conversation. There are some notable exceptions of course usually when your job is in an industry like IT, medical or (one of the more recent additions to this club) app development. If you dare mention you’re in one of these industries it’s highly likely that someone will launch into a description of their problems or start giving you ideas for their great iPhone app.

Being someone who fits into 2 of these categories (IT and a budding app developer) I get this kind of thing all the time, especially when I’m visiting a friend of a friend who I haven’t met before. Mostly it’s pretty harmless and I don’t mind taking some time out to help people as long as it doesn’t become a recurring theme. Of course IT problems don’t usually exist in isolation so more often than not I’ll be called upon again to come back at which point I usually tell people my going rate and watch the problem evaporate rather quickly. What a lot of people fail to realise is that whilst we might do something for a living we don’t necessarily enjoy doing it out of work, especially if we’ve just spent our whole day doing it.

It’s for that reason alone that I don’t bother people with questions about their professions in a social setting, kind of a common courtesy from someone who knows what they’re going through. I’ll admit it’s not easy sometimes, especially if I have an idea for a project that I want someone to work with me on, but there are much better ways to approach someone than accosting them the second you find out that they could be useful to you.

New app ideas are probably the worst out of the lot as many people are convinced their ideas are fantastic and all they need is you for a couple hours to just bang it out for them. Luckily for me I can tell them that the last app I tried to develop took about a year and barely lead anywhere but even that doesn’t deter some of the more enthusiastic punters. It’s even worse that I completely understand their motivations too as I tried hard to get other people excited about the idea but inevitably you can only talk about something for so long before people just don’t want to hear about it anymore.

It’s for that exact reason that I haven’t been talking at all about my most recent project, except in the most general terms. There’s also a multitude of other factors as well (like first mover advantage, which I believe I have in this case) but it also comes down to a the fact that talking about your goals triggers the same neurological response as actually completing them. Thus I feel those who are approaching me to develop an idea for them have already got what they needed (that feeling of completion) and attempting to follow the idea to its conclusion is usually an exercise in futility. 

Even though we’re all familiar with the old adage of “Genius is: 1% inspiration, 99% perspiration” the opposite seems to hold true for commonly held opinions about ideas. The notion that all it takes is an amazing idea to realize your dreams (made worse by the fact that people think iPhone apps are just so damn easy to make) and so the second they get something they think is novel suddenly the hard part is over. Being someone who’s had 50+ of those “amazing” ideas and only been able to execute a couple of them I can tell you the easy part is getting an idea, the hard part is tuning out everything else and working solidly on that idea for months on end. So you should really ask yourself “Would I be willing to work on this day in day out in order for it to succeed?” and if you’re answer is anything but an unconditional yes then you should wonder why others would bother to work on it with you.

Unreasonable Expectations and Arbitrary Boundaries.

August 10th, 2011 No comments

There’s an old saying that goes something along the lines of “The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man“. As someone who had lived much of his life trying to learn the rules of the world so I could work within them the notion that being unreasonable about something would be the catalyst for progress was initially met with harsh scepticism. However I began to notice that the ones who actually managed to enact change were in fact those who were making unreasonable demands, not just of others but also of themselves. They also seemed to flourish within boundaries, seeming to be far more capable working with some kind artificial constraint than they were with completely open ended problems.

I really started to believe in this whole progress comes from being unreasonable idea when I started working on my own projects and I started running up against things that people had never come across before. Now for us .NET developers it’s pretty much guaranteed that you’re not the first one to run up against a certain problem since there are so many people out there developing with it. However following on from that idea you’ll tend to find then that if people can’t find a solution to particular issue they’ll instead find some other way of achieving the same goal that’s been done before. This is the double edged sword of Microsoft’s black magic and it definitely traps the wise programmers in the loop of adapting themselves instead of trying to make changes to the world they’re operating in.

I had this recently when I was working on my latest project. I was working with an ASP.NET MVC 3 site and I had set up the web site to make multiple calls back to the server in order to retrieve the data it needed. Now this worked well to get it off the ground but anyone looking to optimize a website will tell you reducing the number of calls to your server will lead to much better performance, for both the client and your server. Eliminating all these calls and wrapping them up into the @Model of the view for this part of the website would do that, but I had no idea of how to get the same results as I had done with the multiple requests. After searching, hacking and testing several different things I eventually found myself with a very workable solution and I was left for many more ideas for improvements to the site.

Now had I been more reasonable with my expectations I would’ve instead just kept on doing what I had been doing (since it was functional) and wouldn’t have dared to consider changing. Indeed I sat on the whole idea for a day before pulling the trigger on it, precisely because of the amount of rework that was involved in doing so. However the changes I made will make it far more easier going forward since it allows me to work in the areas I’m much more comfortable with rather than fooling around with technologies I’m still in the process of understanding. Sure going the other way might have been a better learning experience but I’ve learnt quite a lot in the process of overcoming the goal I set myself, perhaps more than I would have should I have continued down the same path.

Having unreasonable expectations frees you from being constrained by perceived limitations, allowing you to push to the very limits of what is possible. Arbitrary boundaries help to limit the problem space considerably enabling you to focus more clearly on the ultimate goal rather than getting stuck in the multitude of minutia. Combining these two ideas has helped me push past my own limitations in many aspects of my life, from coding to fitness and even to unlocking my hidden creative self. So I put it to you to start being more unreasonable in your expectations and using arbitrary limitations as enablers rather than blockers to progress.

The Game Length Conundrum (or Time Flies When You’re Having Fun).

July 21st, 2011 No comments

Just over a year ago I wrote a post exploring my own experiences with games of varying length and the gaming community’s views on what constitutes a good game length. At the time I strongly felt that gamers, as a whole, were annoyed with the trend for AAA titles to shoot for shorter lengths, feeling they were being cheated since they were no longer getting the same amount of value as they used to. For me personally the shorter lengths were actually somewhat of a blessing as 20+ hour games, whilst usually quite enjoyable, would take me weeks to finish at my usual rate of play. Thus I tended to favour the slightly shorter games that could be done in a single intense weekend which made titles like Heavy Rain feel far more intense and immersive than they otherwise would have been. 

The last year, for me at least, hasn’t seen my view on game length change much. I still balk at games I know that will take a long time to finish but if the hype and recommendations from friends are good enough I’ll make the investment in them anyway. It probably doesn’t help that I’ve become something of a Starcraft 2 fiend of late which soaks up a good portion of my gaming time which tends to push me towards the sub 10 hour bracket length bracket. Unlike me however it seems the gaming community, or at least some game developers, now believe the trend is towards such shorter titles:

The likes of social and casual games, particularly the cheap games available on mobile, have changed the expectations of gamers, the panel concluded. By gamers are paying less money, there’s less need to create 10-hour-plus gaming experiences, because consumers no longer feel shortchanged. This could be particularly beneficial for self-publishing indie developers, they said, who could charge less but gain a larger percentage of sales. 

I usually draw a line in the sand between what I call traditional gamers¹ and those who just play games when it comes to points like those stated above. Social and casual games typically don’t attract traditional gamers (and yes I’m talking out my ass on this, if you have figures to the contrary please share) and I believe the opposite is true for traditional console and PC releases. However with the gamer population seeming to age at a rather rapid rate (it felt like only last year that the average age was 30) there may be a tendency for traditional gamers to trend towards more casual-esque games simply because they can’t afford the same time investment they used to.

As I said in last year’s post the length of the game is usually quite irrelevant to the overall experience. My most recently completed title with 10+ hours of game play, L.A. Noire, was extremely enjoyable for the 22 hours I spent with it. Compare that with say Duke Nukem Forever which made 8 hours feel like 40 and it becomes quite clear that game length, whilst definitely an initial factor in my purchasing decisions, ultimately does little to affect my overall perception of the title. This does mean that I agree with one of the panel’s points though, rarely do I feel short changed now when a game only lasts 10 hours, especially if said game was a complete blast to play. If I’m honest I am spending more on games now than I have done previously (because I’m more honest now than I was back then, if you get my drift), but the price per game is usually a lot less than I used to pay thanks to Steam.

All that being said however I can’t deny the impact that social and casual games are having on the market. I might not partake of many of them myself (although Bejewled on my iPhone claimed a good 10 hours of my life) but an overwhelming number of people have and that tidal wide of people is changing the gaming landscape. Many developers are now realising the potential of the free to play, micro-transaction supported platform and independent game developers now have multiple viable avenues in which to push their wares. All this would appear to be pushing towards shorter, more easily consumed titles. However I personally believe that it will be limited to the non-traditional gamer market as they’re the ones driving the changes. Traditional gamers on the other hand seem to have no problem with longer titles, as long it’s appropriate.

¹Traditional gamers in my definition refers to those of us who would identify as a gamer in the demographic sense. For us traditional gamers it’s part of our identity as we’re involved in the gaming community in some way (whether that’s blog posts like these or being part of a gaming group like a forum or clan) and generally we’ve been gaming for a good portion of our lives. Social and casual gamers don’t tend to fit this mould instead seeing games as something of a distraction in the same vein as TV shows or movies. 

The Quest For Simplicity (or Who Pays For Rework).

July 12th, 2011 No comments

I can remember sitting in one of my university lectures a long time ago being taught about development philosophies. It was all pretty standard stuff, we were walked through the “traditional” methods of development (basically the once through, waterfall technique) and then brought up to speed on the more modern iterative approaches. However one little soundbite always stuck out in my head and that was when the lecturer asked us who pays for rework when a product doesn’t fit a customer’s expectations? The simple answer was you, the one who developed it and it’s something that always plays over in my head when I’m working on a project, especially those ones I do at home.

I’ve been paying extensively for rework with my latest forays into the world of game development. My regular readers and Twitter followers would’ve noticed that I cheerfully announced my success in cracking the stable orbit problem. Indeed in a round about way I had, basically my Unity scripts would push the planet around until it hit a stable orbit and afterwards would calculate the required velocity before turning off completely, letting the heavenly body orbit in a near perfect circle around its star. This worked for the 2 planets I had in there but unfortunately the equations I had developed didn’t generalize very well and adding in planets at random locations with random weights led to all sorts of wobbly orbits with planets meeting both fiery deaths and cold extinctions at the cruel hand of my orbit stabilizer. I was back to square one and I spent most of the weekend trying to figure out a fix.

Eventually I came back around to the idea that my smart-ass subconscious came up with a while ago. I had tried to implement it before but I gave up in frustration when the results I got were no different than from my far more complicated “find the angle between the sun and body, increment it a bit, find the new position, create a vector to it then apply force in that direction” when in reality the fault lied in the orbit stabilization code. All that pushing and pulling that made the orbit look stable was in fact imparting all sorts of wild forces on the poor little planet, when in fact the best way is just to simply let gravity do the work for you. With this in mind I re-implemented my perpendicular force calculations and then devised a rudimentary equation that combined the mass, radius and a fudge factor that let me hand stabilize the orbit. In the past attempting to do this stuff manually took me an hour or so per planet, with this revised code I was able to do one in minutes and have developed a new equation that is able to accurately send a planet into a stable orbit no matter where I place it in the game.

This solution was far more simple and elegant than what I had been trying to do previously but the cost in terms of rework was tremendously high. I’m lucky in this respect in that the client for this is just myself and my friend at the moment but had this been for someone else with whom I had a contractual relationship with that kind of rework would’ve been extremely costly. Of course I could try to make the client pay for it but ask anyone who’s gone back to a client asking for more money after saying they could do it for a certain price and you’ll usually be laughed out of the office, if not walked out of there by security.

Working around this isn’t easy as clients will usually want to have a strict set of deliverables and time frames which seems to rule out any iterative or agile development methodology. It also pushes a team dangerously towards suffering from analysis paralysis as you agonize over every requirement to make sure it’s covered off in the final product. A healthy amount of analysis is good for any project, especially if it makes the product easy to maintain or modify, but it’s also incredibly easy to fall into a never ending spiral of pointlessness. Thankfully however I’ve noticed that clients are far more receptive to the idea of milestones these days which lines up well with any iterative process, skirting around these problems easily.

Going after the most simple and elegant solution might seem like the best idea at the time but in my experience it’s those kinds of solutions that take the longest to achieve. It’s almost always worth it, especially if all you’re spending is your own time, but when you’re working for someone else they might not be so keen for you to spend inordinate amounts of time chasing your white whale solution. This probably explains why a lot of software contains incomprehensible code riddled with bugs, but that’s a whole ‘nother ball game and a blog post for another day.

When Realism Has No Place In Games.

June 16th, 2011 No comments

So I’ve decided to try my hand at being a game developer after spending way too many hours thinking about it and wanting to do something more exciting than developing yet another web application. This isn’t the first time I’ve tried my hand at developing games either, I did a semester long course in games development back when I was in university. That course still rates as one of the most fun and interesting semesters I ever spent there, especially when your games were put up against the harshest critics I’ve ever met: the lecturer’s two kids. After finishing that course however I never really continued to try and make games until a mate of mine introduced me to Unity.

For a straight up programmer like myself Unity is a bit of an odd beast. The Unity editor reminded me of the brief foray I had with 3D Studio Max back in college, as it sported many of the same features like the split screen viewport and right hand column with all object’s properties in it. It’s very easy to navigate around and it didn’t take me long to whip up a simple littlesolar system simulator, albeit one that lacks any form of gameplay or semblance of realism. Still being able to go from never having used the product before to making something that would’ve taken me weeks in the space of a single weekend was pretty exciting, so I started about working on my game idea.

So of course the first game I want to make is based in space and the demo I’ve linked to before was the first steps to realizing the idea. It was however very unrealistic as the motion of the planet is governed by simply tracing out a circle, with no hint of gravity to influence things. Additionally the relative sizes and distances were completely ludicrous so I first set about making things a little more realistic to satisfy the scientist in me. Doing some rough calculations and devising my own in game scale (1 unit = 1,000KM) I made everything realistic and the result was pretty tragic.

The sun took up the vast majority of the screen until you zoomed out to crazy levels, at which point I couldn’t find where the hell my little planet had gotten off to. After panning around for a bit I saw it hiding about 4 meters above the top of my monitor, indistinguishable from the grey background it sat on. Considering this game will hopefully be played on mobile phones and tablets the thought of having to scroll like a madman constantly didn’t seem like a fantastic idea, and I relegated myself to ditching realism in favor of better gameplay. My artistic friend said we should go for something like “stylized physics”, which seems quite apt for the idea we’re going after.

It might seem obvious but the idea of suspending parts of reality for the sake of game play is what makes so many games we play today fun. The Call of Duty series of games would be no where near as fun if you got shot once in the arm and then proceeded to spend the next hour screaming for a medic, only to not be able to go back into the mission for another couple weeks while your avatar recuperated.  The onus is on the developer however to find that right balance of realism and fantasy so that the unrealistic parts flow naturally into the realistic, creating a game experience that’s both fun and doesn’t make the player think that it’s an unrealistic (or unfathomable) mess.

I’m sure my walk down the game developer road will be littered with many obvious-yet-unrealized revelations like these and even my last two weeks with Unity have been a bit of an eye opener for me. Like with any of my endeavors I’ll be posting up our progress for everyone to have a fiddle with over in The Lab and I’ll routinely be pestering everyone for feedback. Since I’m not going at this solo anymore hopefully progress will be a little bit more speedy than with my previous projects and I’ll spend a lot less time talking about it :)