Wednesday, December 15, 2010

TR0N planning (for Dec 17 2010)

Looking to get together a few people for TR0N opening night here's what everyone replied:

Joel No
Andrew No

Saturday, November 27, 2010

IT adventures at home

At home I have a reasonably complicated network 11 devices in total that need to connect to our network. Our network consists of 3 routers and 1 wifi access point (not the primary gateway like most home setups).

There are a total of 7 devices on the hard line and the remaining 4 exist purely on wirelsss.

Once a network gets this large some level of network management is required. In our network setup each zone exists in it's own IP range (still on the same subnet) and wireless is served in it's own subnet entirely.

The 3 routers have divided duty as:


The gateway is the most powerful of the 3 routers it's duty is to take care of QoS and firewall duties. As well as run the DHCP.

the internode is the linking point that distributes traffic it primarily operates as a switch and access point joining the wireless network to the primary network. It exclusively handles wireless traffic and isolates it from the network.

The downlink connects to the home server. The downlink also performs additional QoS functions as it is connected to the home server. The server is often throttled during peak times when other clients need to utilize more bandwidth.

With all this network management I was horrified when some random Chinese programs some family members installed just took down the entire network by using every last drop of upload bandwidth.

I recently discovered 2 offenders on my network PPStream and UUSee both are chinese P2P streaming programs and both analyse how much bandwidth you have in the upload channel and attempt to use up all of it. Unfortunately on modern routers with QoS still can't set a static maximum upload per host rule. Or more ideally the rule will be written as:

Allow burst traffic for up to 5 min (upload unrestricted). Then:
Throttle any additional upload from that host until their upload is less than 50% of the allotted cap.

Essentially a host would have to be transmitting past a set rate say more than 70% of your total upload capacity for a full 5 min before the throttle kicks in and it fixes the situation. Normal browsing wouldn't trigger this gaming wouldn't trigger this as most games don't have very high upload demands unless your the server. VoIP should get through just fine. And P2P software that allows the user to set limits would also work just fine. But those Chinese streaming software are particularly nasty and there's very little you can do to limit their rates.

Failing to communicate effectively to less technical users that they were essentially making our network unusable I resorted to a software solution. "NetLimiter 3 Lite" is employed currently on a trial basis to see if it can resolve the situation. Net limiter is unique in that it allows you to throttle on the client and on a per software basis. The offending pieces of software are now given a reasonable amount of bandwidth to work properly and so far the network seems to have recovered.

I'd recommend giving it a shot if your the network admin and you have control over client machine administration.

Friday, November 12, 2010

Javadoc Rant

Javadoc is this wonderful invention. It allows a programmer put a comment into their code above the methods they are writing in order to generate automatic API documentation. But it’s simplicity is also a curse often times Javadoc descriptions are absolutely awful.

And in some cases Javadoc descriptions which are suppose to contain how and why you would use something serve to only remind a programmer what the method name was called. For example in the GXT API for google web toolkit extra widgets we have this excerpt:


public TreeStyle getStyle()

Returns the tree style.
the tree style


Hmm… I think most programmers can guess the that from reading the method. But what is a style? In particular what is a TreeStyle? What does it define?

Almost all JavaDocs I’ve come across so far suffer from lack of information. If any JavaDoc users out there are listening. The reason many programmers flock to languages like C# is the documentation is gold. Javadoc is a great technology but if it is to compete Javadoc writers need to not only state what the method does but also mention why you may want to use it.

In addition almost every MSDN documentation I’ve seen to date gives at least one example of the method in practical use so the programmer has no doubt as to how to use that API. Ask yourself when’s the last time you saw a useful example inside a Javadoc?

Technology is great Javadoc is incredibly easy to generate, but the ease of use leads to very poor documentation. Most JavaDocs are an afterthought and it’s highly disappointing.

Sunday, July 25, 2010

Windows Auto-Updaters

If anyone from Microsoft reads this I have a pretty simple feature request for Windows 8. Windows desperately needs some for of auto-update api. On my current Win7 install right now I have this situation:

Chrome: has their own updater

Firefox: has their own updater

Winamp: has their own updater

Flash: has their own updater

Digsby: has it’s own updater

iTunes: has their own updater

… etc.


Aside from all these programs requiring memory resident services in order to maintain the periodic update check the main annoyance is that each of these updates bug you at different times through a different interface about the programs they know about.

Since updating and patching for security flaws is a common thing in the modern application world this would be a big benefit to users of Microsoft products if there’s a centralized way of alerting the user of new changes. If it could be listed along with the standard windows update interface all the better (maybe a third party applications section).

I would submit to Microsoft directly but it doesn’t appear they have a feature request page in a casual search of the Microsoft Windows divisions site.

Wednesday, July 14, 2010

Reading Android XML Resources

I’ve been playing recently with some Android development and recently I needed to load an XML resource (for API 3). I was very surprised to find that Android doesn’t have a super easy way of loading XML resource files.

The XMLPullParser works but it’s very bare metal and does leave quite a bit to be desired. So I decided to go ahead and create a generic XML parser that all android developers can use (and improve).

public class XMLData {
    public String mValue;
    public XMLData mParent;
    public List mChild;
    public XMLData(String value, XMLData parent) {
        mParent = parent;
        mChild = new ArrayList();
        mValue = value;

First we establish a base XML data structure I decided to keep things simple here so I'm not at all doing anything about attributes if you wish to handle attributes you need to add a new ArrayList for attributes.

Now that we have our basic XML data type we can start create a class to read it:

    public static XMLData Load(XmlPullParser parser) {
        XMLData xmlModel = null;
        XMLData currentNode = null;
            int eventType = parser.getEventType();
            while (eventType != XmlPullParser.END_DOCUMENT){
                String name = null;
                    switch (eventType)    {
                        case XmlPullParser.START_DOCUMENT:
                            xmlModel = new XMLData("root", null);
                            currentNode = xmlModel;
                        case XmlPullParser.START_TAG:
                            name = parser.getName();
                            if (name != null) {
                                XMLData dataNode = new XMLData(name, currentNode);
                                currentNode = dataNode;
                        case XmlPullParser.TEXT:
                            name = parser.getText();
                            if (name != null) {
                                XMLData fieldNode = new XMLData(name,currentNode);
                        case XmlPullParser.END_TAG:
                            name = parser.getName();
                            currentNode = currentNode.mParent;
                    eventType =;
        } catch (XmlPullParserException e) {
            Log.e("ParseEx", e.getMessage());
        } catch (IOException e) {
            Log.e("IOEx", e.getMessage());

        return xmlModel;

So let's back up for a second and look at what this does. We start off by first executing:

int eventType = parser.getEventType();

This reads off our first tag for the XMLPullParser.what follows is the main while loop.

There are 4 Major event types we are concerned with:


START_DOCUMENT and END_DOCUMENT denote the beginning and end of the document when we get a start we concern ourselves with initializing the XMLData so we can start to build an XML tree.

START_TAG and END_TAG denote when each of the tags expand. On a START_TAG we prepare ourselves to traverse into the ENTRY by creating a new XMLData.

 case XmlPullParser.START_TAG:
             name = parser.getName();
             if (name != null) {
                XMLData dataNode = new XMLData(name, currentNode);
                currentNode = dataNode;

dataNode in this case is the newly created node ready for traversal. We then perform currentNode = dataNode remember that we are now traversing down the node.

On END_TAG we do one and only one thing we go up one level from our tree structure. This is accomplished with the following code:

         case XmlPullParser.END_TAG:
            name = parser.getName();
            currentNode = currentNode.mParent;

Finally we have TEXT in which we read off the actuall data of an element:

     case XmlPullParser.TEXT:
         name = parser.getText();

         if (name != null) { 

             XMLData fieldNode = new XMLData(name,currentNode);

Hopefully this tutorial breaks down an easy way to access your XML data. If you want to use XMLData right away you can grab it here! I haven't decided what license I'll release it under but I'm thinking it'll be under the same license as Google SDK.


Monday, June 28, 2010

iTunesMonitor 2.5 (Update)

I've recently updated iTunesMonitor to 2.5 status you can find the original description here (The download link was updated there as well).

The main difference is it now respects Windows 7's UAC controls so no more crashing due to permission issues. Keep in mind you will need .NET framework 4 to run this now.

Among other nice features 2.5 iTunesMonitor finally gives iTunes the ability to work with your media keys even when iTunes does not have focus for those die hard iTunes users.

The system is "install free" meaning as long as you have iTunes installed detection and launching is automatic.

Download iTunesMonitor 2.5

Saturday, June 26, 2010

On the streets of G20

G20 started getting dangerously close to my house so I decided I should see if there was any immediate danger. Well I’m not going to caption but here’s what it looks like on the streets.
HPIM6537 HPIM6547HPIM6548

As tensions build the police fire rubber bullets into the crowd you can spot a rubber bullet near the end of this video.

After firing the rubber bullets the crowd gets rowdy and pushes back.


And as soon as the cops back off the Hooligans camouflaged into the rest of the crowd set fire to yet another police cruiser.

HPIM6565 HPIM6567 HPIM6575 HPIM6576 HPIM6577 HPIM6581

You can all make up your own captions about the event it should be somewhat self explanatory.
I’ll make it clear that I don’t support the actions of the violent protesters the peaceful ones were around but they’ve been largely overshadowed by the few violent ones.

Monday, May 17, 2010

Learning Unity a Beginner's Prespective

First I should probably give everyone a little background. I'm a Programmer by trade not an artist so I approach things from a programming standpoint. Me and a friend of mine recently decided that we would like to make an attempt at producing an indie game title.

After some of the ground work had been established we decided that it's would be an appropriate time to take a look at some toolkits. The Unity Game Engine has been recieving a lot of praise from the indie crowd recently. I felt it was appropriate to at least give it a fair evaluation.

Arriving from a programmer's background the first thing one would notice is that Unity is built somewhere in between the artist and programmer tools. Although I would place unity more heavily towards the artist side of the game development. The first hurdle a programmer will find is that a lot of the terminology is geared towards the artist so it may be hard to figure out what "bones" are or the concept of a "scene" is.

Once you get beyond that and start your own project you find another lacking area of Unity the tutorials seem to span. "This is the UI" and "Here's an advanced tutorial that we expect you to know how to use the toolkit well" but nothing in between. What I was looking for as a coder is "this is your first unity level" but there really wasn't any tutorial that ran you through creating a box with the player in it and giving it some basic lighting.

In this area unit could be improved upon. If the tutorial exists then it really wasn't made that clear where you could go and find it.

As a programmer game development for us works as follows. Build Rough Game Mechanic concept --> Make ugly place holder graphics --> Test game concepts --> Refine and acquire final art assets. Unity however doesn't work this way. Any object you want to put into Unity must be first drawn in your 3D modeller package. Unity does not include any form of "primatives" you can just drop in. This basic disconnect forces people used to the programming model to adhere to the unity work flow model of: Build rough art assets --> Drop into unity --> Attach scripts --> Test gameplay --> Refine models.

Admittedly to non artists this model can seem Alien often times we use code to compensate for the fact that we don't understand how to use all the features of the complex 3D modelling packages such as rigging, bones, mesh deformation, and particle effects.

Overall though for a first look Unity may seem baffling at first but I can definitely see signs that once you get a hold of how to appropriately utilize the tools unity definitely seems to speed up the "concept / code / test" cycle we are used to. I only caution the programmers about to be introduced to this tool to be cautious and be aware that when they first start they will be baffled in what appears to be a tool designed for artists.

Flash programmers would be well aware of this concept that the editor doesn't assist the coders instead it's somewhat expected the coders use their own coding environments to get the job done.

Mass Exodus of Facebook

It's interesting from a long ago Facebook quitter to observe this new mass exodus that is now occurring. 4 Months ago me and my group of friends discussed privacy concerns over Facebook and since then deactivated our accounts.

It would seem that the world is catching up to our tech savvy movement. Recently in the last few weeks the Internet has been in an uproar about privacy concerns over Facebook. Facebook has introduced a service that allows you to be logged in to share data over various services. Once again like all Facebook introductions everything is defaulted to public for their entire network.

As the patterns build up it seems to all point to what me and my friends assumed 4 months ago. Facebook it would appear doesn't really care about privacy and will never learn from their mistakes. The act of opening all your personal information to the public is not a mistake so much as a conscious business strategy. It is very much to Facebook's benefit to make all your information public. As such they will continue to try and open up every last piece of data you put on it until you finally delete your account.

Thursday, May 06, 2010

Best RC I've seen today

Ok it might not fly well but I love it anyways.

And here's a star fighter from my child hood video game "descent" the Pyro GX

This one is impressively detailed (can't tell if it's the same one) but hats off to the builder he really made this one shine

Tuesday, April 06, 2010

Vesaero Maiden

The first Maiden flight went somewhat bad I realized too late that the prop I was using is too big for the motor and the plane come down with a lot of smoke.

However if you want to check out the brief flight video I have it here.

Early impressions are the plane flies rather well it does some really hard banking turns it definitely follows the “super maneuverability” design of the initial concept.

With enough power these hard banks won’t be a problem the plane does exhibit some pitch up tendencies at higher speeds which will need to be examined.

Thursday, April 01, 2010

PS3 Firmware 3.21 Update Process Impressions

Like may people out there I was a bit disappointed when I heard that firmware 3.21’s only feature was the removal of Linux. I used it from time to time but I will admit it was not in steady use on my system for day to day operations.

That said I disagreed heavily with Sony’s underhanded approach of removing features that were obviously advertised on the side of the box my unit came in.

This is not about Sony’s update decision however there are plenty of posts on the internet about that, this is about the update process.

First off if you have another OS installed before you update you are required for format your HDD. Formatting your HDD removes all user settings, saved games, movies, music and photos you’ve loaded on. For me that’s 60GB.

I looked around for a “Just delete Other OS partition and resize” option but alas there was none.

Any sane user at this point would offload the data to a backup hard drive. So I went to the backup utility and selected backup to external HDD. This is where Sony’s lack of care for this release is made obvious the backup will take 2 hours to complete. I’m guessing since I’m in the middle of it that the restore will also take 2 hours.

4 Hours for a firmware update is by far the worst customer experience ever. I’m sure I’m not the only one that’s greatly disappointed in Sony for this.

It would’ve been possible to just wipe the OTHER OS partition and expand the main partition without losing user data. But no, Sony decided that he customer’s time is not really worth anything.

A very poor rollout Sony as much as I’m usually negative about Apple, their iphone and ipod releases are done far better. Major releases although they wipe your phone, automatically make sure everything is back the way you left it before the update is done.

In order to ease customer suffering Sony could’ve also implemented a prompt to insert an external HDD and have the user data reloaded when the update was complete. But to be honest a simple delete partition and resize main partition would have been much more effective and much faster.

Take note people this is NOT how to update consumer devices.

Monday, March 29, 2010

Vesaero Plans

Some of you have expressed interest in these plans. I am planning on open sourcing these plans. Standard Creative Commons license applies.

I haven’t planned initially to open source the project so these plans will come up slowly as I have time to digitize and plan out how to best present them to you for building.


first up is the primary wing. Measurements are in CM. My plane is scaled up with a factor of 4.7. That means that to obtain the full scale wingspan you take 15cm as listed in the diagram and multiply by 4.7 to obtain 70.5cm (15 x 4.7 = 70.5cm).

To get the angled wings you will need to use the wing scaffolds during build while gluing to obtain the correct angle on each wing. Cut each bend leaving a tiny bit of material then fold back to expose a gap. Use the scaffolds to obtain the correct angle of the gap then fill the gap with hot glue.

The vertical stabilizers (v-tail) I created ad-hoc but I’ll try and digitize a version here as well.

Sunday, March 28, 2010

Vesaero Post Flight Test 1 Modifications


Lol I had a duh moment. The Vesaero is designed to look like a jet I should’ve clued in that that means it will also fly like a jet. First flights have shown that the Vesaero has an average cruise speed of 50 km/h. This is a tad high for a beginner with zero flight experience.

There are also some minor flight issues as well. For one the plane has a nasty habit of stalling once you get down to 10 km/h speeds. Flaps alone don’t seem to provide enough lift.

The dihedral which doesn’t look like a lot ended up being a very obvious flight characteristic the plane loves to self-right itself in flight. although this is great for the beginner I can see how more advanced pilots would struggle to keep a plane like this on knife edge. The intension however was never to build the plane for knife-edge moves so this wasn’t a bit surprise.

The position of the v-tails also puts the v-tail at risk of deep-stalling. A condition that is common to planes with controls surfaces that could be blocked by the wing during high angles of attack.


The Final design oversight has to do with super maneuverability. Saying Vesaero is agile is an understatement. Vasaero’s wing design and CG is modeled after an 3D helicopter. It’s CG balance point is located exactly where the cord of the wing is the thickest. Designing the plane this way makes the plane very easy to pitch, as well as roll.

The plane is super maneuverable in that too much pitch input from the pilot will cause the plane to “over-G” and over AoA quickly rapidly bleeding off airspeed without warning until stall is achieved. In this respect Vesaero handles very much like a Su-37 when they do the mid-air flips.

The key difference is the Su-37 and all other modern jets have a thrust to weight ratio of over 1.06:1 the best I can estimate my jet is only producing a power to weight of around 0.6:1 which puts it in line with jets of yester-year like the F-4 phantom.

All most of this means is that the plane is more capable than the pilot can currently handle so I’m putting in some modifications to make it behave more like a glider and less like a jet.



In order to slow down the jet I realized that I needed to decrease wing loading in order to increase “float”. I’ve tapped on removable wing extensions for this purpose. The wing extensions serve to double the length of the wing adding to the lifting surface. Care has been taken to maintain the proper CG even with the extension. The new body to wing ratio is now ~0.5:1 (almost double wingspan to body length).

Also after the first few test flights I noticed that just foam on the control horns was starting to wear out so these have also been improved to be much more rigid by adding plastic reinforcement members.



The new servo arrangement has RC helicopter like levels of rigidity and should help control the plane a lot snappier.

One minor consideration that needs to be tested in this new setup is the trainer wings add a lot of wing-span but fail to move the aileron controls out more this could lead to decreased control in roll.

In terms of damage resistance the airframe is very resistant to damages the V-tails clear the ground making hitting them during a crash near impossible. The nose cone is double reinforced and designed to deform a very severe crash had the plane drop nose first 3 stories straight into the ground the nose was easily repaired after. The modular design of the nose cone has also seen very nice crash repair characteristics. Often time only 1 or 2 panels need to be re-cut from foam for the repair but not all of them.

Overall I’m pretty happy with the design the one thing that needs to be improved is the power plant it feels somewhat underpowered to be able to call itself a jet. I also definitely need a much wider space to test it in the future as this plane likes to go fast.

Vesaero build log 3

More work on Vesaero 2 days ago I managed to finish building the nose cone.

Originally I decided to go with a 2D profile design but with more thought I decided this wasn’t going to be cool enough for a “Vortex” build.

So I popped into Google Sketch-up and came up with this nose design:


nosecone2 nosecone2-splitLnosecone2-splitM

The original Google sketchup work file can be found here if you want to take a closer look.

So with a lot of careful cutting of each of the triangles and a lot of gluing the finished Vesaero build looks as follows:









Sunday, March 14, 2010

Multiplayer Gaming Console vs PC

Me and a friend had an interesting discussion concerning multiplayer gaming experiences on the console vs the PC. We looked at several areas of both technical details and also personal subjective experiences with the community on both and below is some of what we feel is a representative list of average experience differences you can expect on both.

Game Size

We found that the console game size ranged from the average 4vs4 to a max of 8vs8. PC’s on the other hand started at around 8vs8 and seemed to reach their upper limit close to 25vs25 for many games that we tried.

Because of these differences we found that console multiplayer maps often placed players in a much smaller environments forcing players to run into each other more often.

PC environments especially the ones chosen for larger matches tend to be quite expansive and often required a level of team co-ordination in order to win.

On the flip side these same maps don’t scale well when there’s only a 4vs4 game. Think of games like TF2 these games only start to be playable at 8vs8 on the PC.


Player Mentality

One major difference is the player psyche of the console gamer and the PC gamer. We found that often times PC gamers lean more towards a true team co-ordinated effort vs what we found in consoles where although everyone is playing together there is no communication as to common strategy.

Worse still was we found that in many “team” based console games players would purposely undermine you in order to appear higher on the scoreboard rather than assist each other to come up with an overall victory.


Player Communication

This one was interesting before I played on the xbox 360 I always assumed that since everyone had a mic it was used to great effect in games. This turned out to be very untrue most games (I’m looking at you MW2) communication consists of complaints random burping noise or your one friend trying to tell you some useful info before he’s abruptly cut off by the next pre-pubescent teen in a rage scream because they just got killed.

PC communication is tricky although almost all games released now have mic support many still prefer to use the keyboard and do so to high efficiency. It is a bit disconnecting when half your players are typing and half ar talking. However the quality of in game chat is dramatically different the talkers are usually people that are actually talking about tactics or actively participating in how the game is unfolding. In almost all cases random people you meet are helpful and civil. The text chats can sometimes have bad comments thrown around but these are far easier to ignore and it would appear that these people are far to embarrassed to take their jack-assery in to pollute the voice channel.



Xbox live is a fenced garden that you have to pay monthly for. Admittedly it’s a lot more populated than PSN I found that for several games on PSN matchmaking would just be unable to pair you up with someone due to lack of players for games just a few months after launch. The possibility of hosting your own server where the server op can play with the rules a bit is also gone.

In contrast because almost all PC’s are internet connected. Current games number in the thousands you’ll never have problems with match making. However things like a shared friend list and joining a friends game are less than automated on the PC unless you have steam.


Extended Play

Consoles simply don’t have the capability of creating more content for the game by the users. Aside from a select few examples consoles are purely you play what the publishers want you to play and that’s that.

True multiplayer PC gaming however has always had a hand in the modding scene in fact a lot of the best game ideas come to us first as experimental game concept ideas. With people running custom servers player driven content is loaded onto these custom servers and then players around the world tired with the stock experience can just go nuts with mods. Mods can sometimes be extremely entertaining but also completely mis-understood by publishers do it will never make it into a DLC.



This article really wasn’t suppose to point finger or conclude anything. It’s main purpose is to point out that the two platforms just from their heritage has some different expectations to them. I think it’s these gaps that PC gamers and Console gamers will never really see eye to eye.

Monday, March 01, 2010

Build Log 2

Well today I finally got off my lazy ass and started to build the full sized version of VESAREO RC foam plane.

You can see from the pictures that it’s a manageable size when it’s fully built I’m not there yet right now I’m having issues figuring out how to mount the motor onto the main foamie frame.

The whole plane so far is built using hot melt glue which would come apart if I use it to attach the motor. Ideally I would like some form of firewall or motor mount so I can easily remove the motor. Something like a box the motor can fit in and screw onto the box itself as long as it doesn’t transfer heat would be hot melt glued to the plane.

So far in the interim here’s what it looks like.



Wednesday, February 17, 2010

Vesaero foamie comes alive

Today I started a new project I decided after much procrastinating that I was finally going to make an effort into bringing Vesaero foamie to life.

I started off a few weeks ago with nothing but a sketch.


Here I determined what was going to be  the overall look of the plane and how the mechanics might work. Also had many mental discussions with myself trying to figure out how I would work out weight issues and balance. No to mention where the control servos go.

Finally I decided what would make more sense is to just go for a profile build and work from there.

Because this is my first build and this is not an easy plane geometry wise I decided I needed to build a scale model in order for me to understand how the pieces will go together for the profile plane.




So now with the prototype scale model in place the serious planning on the first full scale build can begin… Damn this is exciting I love the look of the mini model too.

Thursday, February 04, 2010

Dell battery Died for Good

Well after several conditioning runs today the battery decided it wasn’t going to charge anymore. After opening it up and forcing a few more manual charges the battery finally developed a failure.

Now when you plug it into the laptop instead of getting the battery status you get “Error Communicating with Battery” suggesting the SMART charging circuit is damaged. I guess it won’t hurt to keep these cells around for some other projects but I guess they are no longer good for laptop use.

It does seem suspicious that each battery lasts only slightly over a year and dell only offers a 1 year warranty on it’s battery. It’s almost as if there’s an internal timer that’s programmed to fail after a year.

If anyone else has a Dell 9400/e1705/ or XPS 1710 and would like to tell us about your battery experience feel free to comment.

Wednesday, February 03, 2010

Laptop battery acting up.

My Dell laptop battery is acting up again. It's giving me the 4 amber 1 green flashes suggesting temporary battery failure. Last time this was fixed with a couple of full conditioning charges.

(full discharge and charge cycles)

I'll do a few more but it is taking significantly longer to charge than discharge.

Friday, January 29, 2010

A Theme For Your Life

Periodically in our lives we come across music that seems to best describe our situation at this time. With my thesis defense finally booked and the end date in sight I feel like this is an epic battle to the finish line.

I just happen to at the same time run across this track which conveys perfectly if my life had a theme song this would be the montage background song that would go along with this event.

Epic Song Of Thesis

Sunday, January 03, 2010

Game Developments Thoughts

I haven't updated here in a while I've recently been busy with my current employer developing a casual video game for the PC market. A lot of details are NDA so I'll try and keep that info from landing on here.

Suffice to say after several tech considerations we decided that the most appropriate platform (read not best) would be flash with action script 3.

In the last month I've been plagued with flash surprises that just astound me. For one flash is the only language that when you add an object that's already on the stage to another container that's also on the stage the original reference disappears from the first container?! This is a bit of an oversight since you will no longer be able to do instancing. Worse still there's no built in .clone operation for display objects so you'll have to start writing your own workarounds for this. Again oversight.

Performance wise we've been discovering flash isn't great for example one effect we wanted to do is a full screen lens blur. To make the CPU requirements low we decided we were just going to pre-process a blurred version of the image and alpha blend the clear version into the blurred one... Guess what full screen alpha blending with 2 images on flash is painfully slow and we had to ditch the idea, in favor of a static staged blend animation.

Progress on this project is pretty good everything is on schedule I'll be throwing in more of the art assets this week. The game is starting to finally look right moving past just a mechanical place holder and starting to take the final form of the game.

There's a lot of "what flash doesn't have this?" that I've been collecting I'm going to see if I can post some here and discuss why it feels like an oversight.