- Blog -

Christmas Hol…i…day?

As usual it’s been pretty busy as of late. That plus the added heat-wave, christmas craziness, Boxing Day and the New Year coming up. It has been much more manic crazy then usual.

To help summarise the goings on. I’m going to use sub headings!

Website Updates

I’ve been spending a bit of time updating Elise’s website and the Redefinition Games website to support displaying projects and games in multiple layouts.

I ended up writing a WordPress plugin that manages the information it displays as well as lets you control how it gets displayed. I’m quite pleased with how it’s turned out. It still needs some work. The websites also need a bit of work, but it’s a lot better then what was originally in place. Especially for the Redefinition Games ‘Games’ section.

I’m also in the process of updating my own website, but when that gets done, I’m not sure. I’m hoping soon at least LoL

Moving Deathspuds to a Repository

After recently blowing up our Dropbox, we moved Deathspuds to a Repository on BitBucket. To summarise why, I’ll just say I’m probably never using Dropbox ever again, at least for something that large and increasingly delicate. The last few weeks we’ve been moving across and fixing problems, while trying to enjoy a much needed holiday away from our regular daily routines. So it’s been pretty juggle-y.

But so far it’s all looking good, and I can already feel the increase of productivity of using it.

Our Next Game

We’ve been working on it as much as we can considering the chaos of Christmas.

I’ve been updating some of the code in our now named “Red Framework” which we’ve had for a while. I’ve mostly been re-factoring it to fulfil the requirements for the current game.

A lot of the systems we have been developing, have only been tested in their own local test scenarios and some are very specific test cases, so there’s been some fleshing out of the usability of them. We’re hoping the more we do this, the less we’ll end up doing it for future projects.

Elise and I have also been talking in depth about the Game Design as well, which is pretty much worked out in terms of the core gameplay. I won’t be saying exactly what’s going on because we like surprising people.

The title you ask? Some of you may already know the title. If you don’t you may realise you always knew ; )

The Very Organized Thief

We’ve mostly been watching and taking on board everyone’s suggestions. And thinking about some things we would like to add to this version to keep it going a little. We won’t be doing any major changes to the games core mechanics. But we will hopefully add some things to give people a few laughs.

But for now, other plans are taking priority! No point making plans and not following them right? We do have a very good idea of what we are going to do with The Very Organized Thief, that much we can tell you ; )

———————–

So that’s basically what’s been going on for the last few weeks. Busy busy busy. I’ve managed to squeeze in a few hours of actually playing games for a change.

Currently replaying Final Fantasy VII on the PC reliving the nostalgia of my 1998 youth, chilling out with Proteus, and trying to find some time to delve deep into Eldritch. Check em out if you’ve got the time!

But that’s it from me for now. I hope everyone has had a awesome Christmas filled with good memories and presents. And I hope your New Year is grand!

-Alex

Puzzling Weekend – Jumping into JS

So this weekend I decided to suck it up, and learn Javascript. Well it wasn’t really a choice considering I need to learn it for my current class… … so this weekend, I decided to take Javascript more seriously!

For last few month, Elise and I have been talking about the prospect of setting up small jigsaw puzzle games on her website. Originally we’d been talking about doing it in flash because our point and click game actually has a jigsaw like puzzle in it, but we weren’t keen of the idea that the player was limited to a flash player view. We wanted to use the entire browser page, and doing that with flash didn’t really seem like a good idea.

So the objective for the weekend was to create a browser puzzle game, or at least get the core functionality in using HTML5 Canvas and Javascript. Also avoiding any low level coding… there’s enough of that going on in other parts of my life right now.

I’m also not very fond of Javascript. For a few reasons, probably some very old out-dated reasons. Type safety is it there or isn’t it, I don’t know! You can also allocate variables and data structures of any kind whenever and where you damn feel like it. Basically no high level standard to adhere to and a potential messy nightmare for a coding neat freak like me. Both of which can be easily dismissed considering a developer must enforce there own programming standards, not the language… the stuff above just makes it easier.

Anyway, last night I did a bit of browsing around just to see what other’s where doing with jigsaw puzzles. A lot we using Javascript and Canvas, and I even came across a good starting place tutorial here using PaperJS.

One of the biggest hurdles for me was avoiding low level programming and finding the right framework to build the game in. So I started with PaperJS since the tutorial was using it. It was somewhere to start at least.

I quickly began to question some of the rational for doing certain things. It felt really odd to use, at least from where I was coming. It was also difficult to debug in doing some weird things with how it manages scripts and calls them from within the framework itself. For example, error on line 11404 in a 110 line script. Also why reclassify Javascript as Paperscript (i’m sure there was a reason but it just seemed odd because it was basically just Javascript). I got put off by PaperJS relatively quickly, at least out of the box. Probably a little to quickly but regardless it was a good reason to actually look around for something else.

I did a little more searching and I ended up coming across KineticJS. It felt well structured and relative straight forward to use, except I couldn’t quite figure out how to mask a bitmap with a vector path. Or at least to got to the point where I couldn’t be assed writing ‘config’ array structures into things and cutting and pasting non-kineticJS code into it. It was getting a little to low level to quickly, so I moved on. Also it required a script type tag called “deferred” and needed to be called AFTER canvas, rather then in the HTML header. Once again, out of the box I was a bit put off.

The above two also had what I would say, ‘fair’ documentation. Not exactly something that really helps you understand it completely but it was there kind of documentation. But this bring me to one of my rules. If I have to Google someone else’s blog to find out some stuff that should be in the documentation, it puts me off. Its easier to find the frameworks website and it’s documentation then it is to find that random article that you forgot to bookmark or is buried 8 menus deep in your bookmark folder only to find that the page itself has moved else where or the site is down (for-good). And if the documentation is a bit half ass, your only making people want to leave.

After a bit more searching I came across EaselJS. Jackpot goldmine. I felt instantly at home with EaselJS mainly because it uses a very similar design to core flash objects using Display Objects, Containers, Shapes and Bitmaps. The documentation also made it a million times easier to figure out what was possible without having to dig for it in random holes. It even has additional frameworks for various other things you might want to do, such a PreloadJS and SoundJS just to name a few. In other words, a little less screwing around. Also, no crazy random script ‘type’ tags.

The result of this weekend is the picture below. A basic puzzle that you can move pieces around and snap them into place, and move around each individual grouping of pieces and snap them together into place. There is still a few things that need to be done and some features that will probably be added before its completely useful, but it’s a good start! The puzzle picture is also one of Elise’s drawing. You can check out her works here.

puzzle01

Granted that this was my first serious trip into doing Javascript and I only really glazed over the first two frameworks to get to a favourite third. (I’m probably going to go back to PaperJS and KineticJS just to try out some things). Javascript wasn’t as bad as I thought it would be. I think coming into Javascript from various other languages, and applying what I’ve learned from those languages helped in understanding what can be done, what shouldn’t be done and what could be gotten away with in Javascript. If I had no prior experience in a programming language, I can definitely say it isn’t an environment where you can learn or understand important programming standards, or at least not easily. It’s a very free-for-all language I guess you can say.

In all I feel a lot more confident about Javascript and using Canvas.

More posts hopefully in coming weekends. And maybe even some code!

Procrastination Week

Another web assignment and another week before it’s due. So I’m procrastinating, recently returning to Facebook to find that it is completely different yet again.

My current assignment is to create yet another website using interactive elements to help enhance the user experience through the use of JavaScript. Basically crap that moves and does awesome looking things without pissing off people visiting your website.

I have also been sneaking off from time to time to talk development with Elise and working on things I shouldn’t be focusing on, at least in the light of how much I need to do for this assignment *pulls collar*… like Redef development related things.

Looking at the calender it appears we’re approaching the part of the year where all hell likes to break loose. Inanimate objects begin to float around on their own, people go a little crazy because a full moon is out and time itself seems to jump in such a way that Christmas always feels like its just a month away. So what better time of the year would it be for everything you are working on to start moving from a collage of shapes and colours, to actual forms… right? LoL

Regardless, this week is hopefully the calm before the onslaught of work that needs to be done in the coming months. The number of new experiences that will be bombarding us will be terrifying, exciting and hopefully leads us to doing even more visible things. So expect a bunch of things to be coming out of nowhere in the next few months! Fingers crossed!

 

Completely Flat Out

So I’ve been keeping myself extremely busy lately. After some re-organizing of what needs to get done and shuffling about schedules, things are progressing better then they have been.

I recently been working on my tools framework again. It’s going well. It had been a while since I last worked on it and it needed a bit of love. It also felt like a good time to just step back a little while from the big projects going on and just unwind. I know, a strange way to unwind.

So I revised a large part of project and content management in the framework. It’s now much simpler to set-up projects and manage content in any tool/editor/application it gets used on. It’s a general purpose content framework with a primarily focus on tools development for games.

I rewrote a large chuck of TED, the Tile Editor I made a while ago, to take advantage of this system as a test and it’s working pretty well. Although some bits are now broken, all the resources are shared to be easily accessed and re-used when creating scenes within the scope of a project. I also added a splash screen and some useful diagnostic tools.

TED - The Tile Editor Splash

I’ve also been writing a fair few articles in my spare moment. Mostly when I’ve been out and sitting at our local plaza (mall). Some aren’t that good yet and pretty much all of them need to be reviewed and revised. But I’m slowly working through them hopefully to make them good enough, and useful enough to be released and read. All in good time.

On top of that I’m also finalising my website assignment for submission. It’s coming along pretty well but I have a feeling I’m going to scrap the “store” part of it once it’s all marked and one and make it into something more useful, at least that’s the current plan.

If I find some extra time, I may spruce up this page. Maybe.

So as usual. Keeping myself extremely busy and still hoping to bring something useful to this space soon.

On an Uncontrollable Break

So I’m in bed, sick with the flu, trying to preoccupy myself with writing and thinking about what movies I might need to catch up on. I still haven’t seen the new star trek movies which is pretty old now but for me, it will be new.

Until last Friday things were busy as usual.

Another milestone for project DeathSpuds has been completed. This milestone saw the implementations of barriers and doors, the base code for flying enemy AI and persistant level data saving.

The barriers were designed to take into account resistance to certain types of damage. Such as being able to use a flamethrower on a barrier that melts, but is resistant to regular bullets. It’s nothing fancy, but it should pose some interesting challenges for the types of weapons that will be made available and the barriers responses to these weapons.

The Flying enemy is currently a basic implementation. Rather then using the Unity NavMesh, its using a Node Graph which is built as part of the AI System that was used with the Freeplay Demo and prior to us having pro licenses. The node graph is so we can control the navigation of an enemy through 3 dimensions of space which are basically waypoints which contain specific properties. Currently they fly around aimlessly trying to reach a particular node, and the buzz about in the space defined by those nodes. You can also shoot them down. Eventually it will support behaviours much like regular enemies such as attacking and patrolling.

The system for the persistant level data is pretty standard. It correctly writes out an XML data file which we can visually be read and checked of any issues in the writing process. The system is also designed and structured in a way to allow for multiple file formats to be supported, such as reading and writing to generic text or binary. This is something pretty important considering we don’t want people to be able to modify these files and cheat the game as it will also be apart of storing the level information for the player’s save game. And writing out to a file format such as binary is a good way to minimise that.

Since milestone completion, I’ve been mostly in bed, trying to get better and helping Elise with some T-shirt designs for a Minecraft competition. Occassionally doing some typing. And catching up on some games and movies that I’ve been meaning to watch for a long time.

I have also been working on a game and doing some re-work thanks to some recent trends which has been keeping me extremely busy. The jist is that releasing our flash framework as well as providing tutorials for it and other flash components is not what I would consider a viable thing to be doing right now.

In the last few month Adobe has been making a few changes with Flash that don’t necessarily align with the goals of some flash developers. Leaving some of them with a bitter taste in there mouth. Unity has also dropping support for there Flash Add-on which doesn’t signify good news.

The problem stems from the requirement of Stage3D originally being planned to enforce “royalty” payments of the runtime to developers who are also using another service known as Domain Memory, basically these two services together allow for improved performance of Stage3D, apparently. In terms of a business plan this is reasonable, but not when the means of enforcing such a plan is undeterminable. This plan was eventually cancelled in the end because there was a lot of speculation about how it could of possibly have been enforced, when these two services are free to use by themselves but not when together. The general sentiment from a lot of developers was that it’s not possible. The whole thing since then has Flash feeling unloved, and unsupported.

So I will be porting the code out of flash and into another language putting most of the grunt work into a perl script or even C# to handle the majority of the conversion. But sometime in the future, not right now. It’s unfortunate considering that flash has been a very useful language to use to develop a lot of our ideas and we will continue to use it, but it has become an uncertainty in what we would like to deliver in the future, or our grand plan.

But until time permits, I’ll been focusing more energy into developing Unity based games.

I was also sick a few weeks beforehand, not for very long or as exhausting as the current flu is but caused by something moderately humorous.  It came about around the time of the live XBox One announcement, which I was watching. Lets just say I was less then pleased with what they were offering, considering where I’m from is Australia and the service they talked about meant nothing to me. Although some of the features I found genuinely interesting and would love to see how it panned out for the future of the device, the whole experience left me feeling literally ill. I ended up in bed with a fever that night, freezing cold, and with burning temperature (of rage!!). Coincidence? Possibly! I was down for a day and back to normal the next! Regardless, hopefully XBox One is not as bad as some of it all sounds, and Microsoft is putting a lot of work into it. So there’s no denying that the release of the XBox One will make for an interesting year. We’ll all see how it goes.

But that’s enough from me I guess, this is gotten to be quite long and I suppose this is what happens when I don’t update regularly. So I’ll leave here.

Hope everyone is looking after themselves!

MNDCrp Framework – Part 1

This is something I’ve been meaning to write for a while. It has been one of those things that I’ve been mostly writing for more so then writing about it, it seems. But finally I have a little bit of time to talk about it.

What is MNDCrp?

MNDCrp is a framework I’ve been working on for quite sometime. Currently it is a rather extension component-ised library written in AS3. It has also been written in such a way to ignore certain AS3 norms to be portable by code conversion to most object based languages, like Java, C# or C++. It also allows us to piece together a custom engine relatively quickly and is currently the core for several engines and extended frameworks we’re currently using at Redefinition Games.

Where did it all start?

It started when I got pissed off at my old framework and just wanted to write something in pure C using OpenGL as the Renderer. I ended up writing a really low level library that handled shaders, animation and other types of content. It had a Maya exporter and a content compiling pipeline written in C# for it as well to help get content into the environment.

I kind of just threw it together over a few days, and I really just wanted to build something from nothing after the design of my previous engine, which I had mention was pissing me off, become pretty much impossible to experiment in. The work on MNDCrp was basically an excuse to get away and just experiment with things that just had no room to come out in. To essentially just take all my ideas and dump them into a code. Hence the name, MNDCrp.

(Yes I do regret naming it that, but it has unfortunately just stuck)

It turned out pretty well. The whole experiment resulted in a better understanding of what I would consider as “common” and re-usable behaviour to create custom engines that utilize a framework. Although I never really ended up building a complete engine using it. It did lead me away from my old framework into a much better direction.

I eventually ended up porting some of the code to AS3 in a more object based form when I started to focus my attention more on Web Development using Flash. iOS at that time (not sure how it is now) I felt was more of a place for good developers to go and die then to make a successful business from. “There’s better places to start then in a mass grave” I think I remember saying.

I drew a lot inspiration from existing frameworks and engines I had used in the past when creating MNDCrp. I mainly built components that I found to intuitive to use and not just something that had that “tacked on for functionality” feel about it in existing frameworks.

I also spent a lot of time naming class objects and variables appropriately. This is something I consider to be pretty important when it comes to being able to work with a framework quickly and easily. Using the correct terminology and having a clear distinction between names of things is key. I’ve all to often used existing frameworks and engines that call objects obscure things that don’t make sense, or clearly indicate the purpose or function of an object and/or function. Then having to refer to documentation that’s either, non-existent or poorly explained. Its never fun.

The framework still has a lot of work to done with it. The more I work with it the more I revise it to be easy to use and usable in general. It’s taken a lot of time but it’s has slowly come together into something I hopefully intend to share in the near future.

Why not just release it for people to use and have it revised that way through feedback?

I often think about this and truth be told, we’re still exploring it’s possibilities at Redefinition Games. And we’d like to deliver something first that is awesome and a great showcase for the framework before we do. There are other reasons but that’s the most prominent one I can think of.

But yes, that’s part one of the MNDCrp framework.

Hopefully I’ll find some time to talk about the other part that goes with it, such as the tools and other libraries built of the same ideas. But until then, that’s all for now.

Keeping Busy – Deathspuds, Animation & Painting

So I’m hoping to make “things I’ve been up” to a more regular thing on my blog. It has been pretty hard finding time to write and revise some good useful articles which I’m hoping to post soon. But until then, rather then writing something useful. I figure I’ll just write what I’ve been up to. At least that way this thing gets used and maybe some of the stuff in it may be useful, and/or even interesting!

So what’s been happening recently.

I’ve recently completed Milestone 3 for DeathSpuds. 

This milestone saw the implementation of Enemies which can melee and/or shoot projectiles at the player while moving through a level. The behaviour was a little bit whacky at first, mainly because I tried to condense the melee and Projectile shooting into a single Attack State but it just made it as confusing as the AI was behaving.

I ended up splitting the Melee and Projectile shooting into 2 separate AI States. It made more sense considering the Enemy would either do one or the other or both. And it was easier to determine when to switch between or leave these states by checking per state, rather then all in one.

The enemies also avoid walls now to. The also find a way out when they get backed into a corner.

Enemies that also just specialize in shooting projectile will also maintain there distance, running away when you get to close. Ones that can do melee will move in if you get to close to them. At the moment it’s set to be 3/4 of the closest possible firing distance. I’ll probably end up tweaking this or even making it an available factor in the Unity inspector to get better control over this distance.

This milestone also saw the implementation of enemies spawners, such as enemies spawning from a point and out of the ground. This presented a small problem with Unity’s Mecanim, which is handling all of our animations. It just doesn’t give you much control over using a single Mecanim Animator Controllers which defines the animation behaviour of a character given certain values, at an initial starting state. Forcing you to duplicate the controller file, renaming it, and setting a different starting state.

For example, one of our enemies can spawn out of the ground and also just be standing idly in the scene. But in order to do that, your need to define 2 specific Animator Controllers for the 2 different types of starting states. The controllers are basically identical, accept one has it’s initial starting state as “Idle” and the other as “Spawning”. It would be nice if it were possible to force a particular state onto the animator for purposes such as this.

I know it doesn’t sound like much but imagine making adjustments to one and having to duplicate and set the starting state. Now imagine doing that a hundred times with just minor adjustments over a long period of time. It would get quite annoying.

In all the Enemies are pretty fleshed out and it’s going quite well. I can see some issues popping up which I’ll probably address if and when they arise, such as line of sight  of projectile shooters with enemies blocking the way. But it could just be a matter of making them simply move their position, I doubt it… but here’s to hoping it is.

There was a whole bunch of other things which went in. A lot of which was for to improve performance at run-time for the first level. Which Josh has made to look damn awesome. But I’ll leave it that for now.

Today, I also integrated some core animation components into my flash framework. It hasn’t been much of a priority before because most of what I was doing with flash was being driven by code or physics. Since I’ve been working on point and click / hidden object engine, having a means to control animations and animatable things has become pretty important.

My goal was to have an item you clicked from the scene move themselves into the foreground, and spin and fade into your inventory. I ended up implementing an Animation Manager that let you pass in Animates, basically animations that define a particular behaviour, such as spinning and fading. Basically setting values on this animates and passing it to the Animation Manager will cause the animation to occur.

I also had to make sure that it was pretty easy and straight forward to do for people who may end up using this engine the future. Mainly Elise. The way you use it was kind of inspired by how you use [UIView beginAnimation] in the iOS Core Animation Framework. Of course what I’ve implemented is nothing compared to how Core Animation actually works. But I based my design purely on it’s ease of use, minus the static call.

I’ll most likely be tweaking this over time and adding more features to it and even more animate types but overall I’m pretty happy with how it turned out.

I’ve also been doing some digital painting for the backgrounds in our game.

Point and Click Background 1

Elise did most of the line work for the painting. I’ve just been colouring it in. It’s a work in progress. We’re still working out the final look of some other areas, so some things are likely to change.

And that’s what I’ve been up to lately.

Sprite Sheets – Working Out Their Size

So I’ve been working with Elise making a 2D point and click / hidden object game. We’ve been slowly piecing our engine together looking at the tools we can leverage to help create the content, as well as revising our own existing tools to do some work for us.

Recently, I’ve been revising our sprite sheet generator. It’s probably one of the oldest and first things we’ve had in our arsenal of tools, and it certainly has been there before the great options we have these days as indie developers, such as TexturePacker. If you haven’t heard of it and your a 2D game developer, I really suggest you check it out.

Up til now, when we integrate our sprite sheet generator as part of our pipeline process, we specify a fixed size, throw all the images in, and sort using a Binary Sorting algorithm, and hope it all fit. If not, we make the sheet bigger. It was a very manual process, and our best size guessing algorithm rarely guessed the best size. In fact upon revising the code I wondered what the hell I was even trying to achieve in the first place. Either I was programming late at night or using someones suggestion from the internet.

Regardless, I threw out the old code and re-wrote it, and here’s what I came up with.

public const int MinOptimizeSize = 8;
public const int MaxOptimizeSize = 8192;

public static Size CalculateOptimalSize(SpriteSheet sheet)
{
// no sources?
if (sheet.Sources.Count == 0) return new Size(MinOptimizeSize, MinOptimizeSize);

// work out the sum of all source areas
int areaSum = 0;
foreach (SpriteSource src in sheet.Sources) areaSum += src.Area;

// if there is no area, then return something small
if (areaSum == 0) return new Size(MinOptimizeSize, MinOptimizeSize);

// find the size
int guessWidth = MinOptimizeSize, guessHeight = MinOptimizeSize;
int power = MinOptimizeSize;
while (power <= MaxOptimizeSize)
{
// compute the area of the power!
int powerArea = power * power;

// if the power area greater the the sum of all source areas?
if (powerArea >= areaSum)
{
// set the guess size
guessWidth = power;
guessHeight = power;

// find the minimum height to fit the area
while (guessHeight * (power / 2) > areaSum)
{
power /= 2;
}

// update the height result
guessHeight = power;
break;
}

// next power
power *= 2;
}

// return the size result
return new Size(guessWidth, guessHeight);
}

Sorry about the formatting, WordPress keeps removing it!

Basically what it’s doing is finding the total area of all source images and finding the minimum sized power of 2 square to fit it all. It then works backwards focusing on only the height, halving the height to see if the sum of the source areas can fit in in that. When it can no longer fit, the previous height is the one that will fit it all.

There are some cases where this result isn’t going to be able to fit everything perfectly, especially with arbitrary sized sprites, or you have sprites that are seriously huge. But for a starting place it’ll be close.

Once you have that size, there are additional checks you may want to do after you’ve worked it out. Such as evaluating the width and height of your sources images. By doing this you can determine the following.

  • Whether to swap the width and height values if you have more tall sprites then you have wide ones. This is because you are more likely to fit tall sprite sources inside a 512 x 1024 then your are in a 1024 x 512 sprite sheet.
  • Checking the size of the of each sprite source against the size of the “guessed” fit. This is because you may find that one or more of your image sources may exceed the dimensions of the “guess” itself, requiring you to make early adjustments.

There are a lot of other things you can do but that goes into your sorting method for your sprite sheet, which is another topic on its on. But the methods discussed here should give you relatively useful results for determine the initial size to fit your source images. And with that, to those who have stumbled in here, I hope you find it useful! Feel free to leave any comments or other suggestions below.

A Little Break

So I managed to give myself a break this weekend. A little one. It had been about 14 days since my last so when I started finding loose screws on the floor, its was definitely a sign I was past due for one.

Elise got me onto a great thing this year which was keeping a log of the things you do in a day. Work related things of course, not really mundane related things otherwise that would just be weird. It really helps quantify just how much you are actually doing over a period of time and when any key events occur, like when you last gave yourself a break. It also clearly indicates just how much your performance drops off since then *pulls collar*.

A lot of this month for Elise and I has been focused on ourselves, mainly on health and motivation. No I’m not going to say “go running down your street” and “think rich” because that’s not really helpful. Unless you want to do that by all means run down the street screaming your rich.

We’ve been working behind the scenes on Redefinition Games for a long time now. The belief in what we are doing often dwindles at times, which is normal I guess with lots of creative projects and people (not just artist). So it’s really important to understand, and acknowledge, the effect that working all the time has on you. The key difference being the acknowledgement part. Knowing when you’ve burnt yourself out and not doing something about it is just outright silly.

Sometimes you may be acknowledging the fact you’re burnt out but what your doing is dismissing it, especially if your saying something like this “I’m really tired, but I still need to finish something off first” or “I’ve got to much work to do, and I need to get it done”. The right thing to so would of been to step back, give yourself some time unwind, think about something other then the work you need to do, and come back and tackle it again. I know it’s simple to say, and remembering to do that sometimes just as hard, but god damn it people. REMEMBER! It will improve your performance and ability to solve what ever challenges your working on/with.

So I gave myself a break this weekend, finally. Fourteen days straight of code, art and everything in between really takes a lot out of you. I ended up buying “The Cave”, a Double Fine game, on the PS3 (available on XBox360, PC). If you haven’t played, add it to the top of your things to do list!

The Cave is fantastic. It’s about 7 characters who seek something that they want, going into a cave to find it, reveals their story about how they get it. And all of them, have dark sided little secret. I’m not going to give to much away, so I’ll just leave it at there. A really charming game like most Double Fine games are. The stories are also quite funny. Lots of good one liners that’s for sure.

The Cave really reminds me a lot of point and click adventure games I use to play when I was kid on the good ol’ 486 computer. The only difference is its in platformer form (Super Mario style for you non-aficionados reading). It sounds strange and you wouldn’t think of putting those two types of games together. But it really does play pretty well and much like point and click adventure do, just minus the pointing and the clicking. It’s also simple and challenging enough to make you scratch your head without ridiculously obscure puzzles as a lot of adventure games suffer from. So if you got some time, a little bit of spare change, go give it a play. Your bound to enjoy it, especially over a shot break!

DeathSpudding

As usual I’m pretty busy. That never really seems to change.

But this week has been a fairly exciting week. I’ve been madly organizing and bashing out code for DeathSpuds again! YaY!

If you haven’t heard of DeathSpuds, it about a gun wielding metal biker bad ass potato who goes on a kick ass adventure to save his crew from a rival gang in twisted city. Created by Josh Sacco, who is the artist for the game, and also founder of Dead Leaf Games. Working on it is also Adam Taylor, who is mostly looking after the animations. He’s also a coffee fiend. And then there’s me, I’m handling most of the code and helping keep things as organized as possible.

Josh has been working on this for about a year now, slowly putting it together in his spare time. It was on display last year at Freeplay and if you were lucky enough, you could play the prototype demo that was on display.

The Freeplay demo is where I started to get more involved. Josh needed someone to handle the AI coding for the project because his other programmer would of been to busy to do to much else. Let just say sometimes the internet doesn’t always provide you the best things and this programmer, being sourced from the internet, was definitely not going to deliver. I ended having to pick up what was basically known existent just so we could be sure to hit Freeplay. It was quite a task but at the same time really showed us how well we could work together. We managed to jam out a pretty awesome demo in about 3 weeks. It was great. It had enemies, a boss, shooting, guts, audio, everything you’d want to see in a game.

After Freeplay things sort of winded down and Josh spent a lot of time working out the game and it’s design, discussing ideas through emails. It was basically a tennis match of emails.

It wasn’t until recently that I had time to spare and we finally worked out a contract to get me on board.

So now I’m working on it. w00t.