I found out yesterday that we are getting our hands on a proper screen recording device. When we do, we will finally have a video of BounceBack that does it justice!
Last night I was having a dabble with XNA’s content pipeline, trying to figure out how to create my own content processors. In the end I went through the whole process of importing an asset from file, processing the asset, writing it out to a .xnb (binary format) and then finally reading it back from a .xnb.
To sum that up, all of that except the reading is controlled by the Content project and it is done as an offline preprocessor step. The reading of the .xnb is the only part of the pipeline that happens at runtime. The way that it is done is quite neat too as none of the pre-processing code will end up in the final build’s code base due to it (and the Content project) being excluded from inclusion.
When I first got it working I couldn’t really see the point of it as it would have been easy to write one function in my code base that would read the file from whatever format I wanted it to. However, I can now see that it provides a nice, clean way to preprocess assets (for any number of reasons). It removes the need for a collection of other tools and consolidates them in a single place.
Aside from the content processors, I was hoping to find a way to make XNA let me keep my assets elsewhere (dropbox in this case) instead of the Content project folder. Previously I’ve had no other reason to store them elsewhere but now I do, version control (kind of). To add an asset to a XNA Content project, makes a copy of the asset in the Content projects folder. I was thinking I would have hack something in but it turns out is incredibly easy to do it. When you’re adding the asset, instead of clicking “Add” in the open dialog window you just click the drop down button and select “Add as link”. I reckon you can guess what it does by the name.
The next tool was a calculator to generate the tile code which identifies how each tile is linked to its surrounding 8 neighbours.
The first tool I decided that I needed was the ability to generate the paths (mainly curves in this case) across tiles for the cars. I originally created something before but I couldn’t remember how it worked so I created a new, better one based off of Bezier Curves. When it comes to generating the special case for the roundabout, I’ll have to make a copy of the tool and modify it a little.
NOTE: The red line is the Bezier Curve.
Last Summer (I think) I started work on a little tile based puzzle game written in XNA. The idea was simple. Get the cars from the entrances to the exits by drawing the road for them. However, you would have to work with special tiles that have different properties.
Watch the video and it’ll explain everything.
Now that the development of BounceBack is coming to an end (trying to get through Sony’s TRCs at the moment!) its good to look back on what we have done and have learned.
Before I started working on BounceBack my only experience with source control was that a couple of times a week I would back My Documents folder up to my external hard drive which has a program to manage 10 layers of file changes. So pretty useless when you consider the true power of source control. I’ll be honest and it took me a while to adopt the use it and I don’t think I’d be happy without it now. My current choice of source control is BitBucket which underneath uses Mercurial. Its free and easy to use (limited users linked to one project though).
Asset Version Control
For BounceBack we could have researched and found a free proper asset version control program but as we all had access to Dropbox, we decided to use it. By creating a global account for the studio, we all referred our university email addresses so we could bump the accounts storage space up to just under 5GB. As we had pretty fast internet connection in the studio it was perfect for us as soon as one change was made, everyone else got it pretty much immediately. It storages all changes to a file for up to 30 days which can easily be reverted to and also its simple to restore deleted files. Aside from use for assert version control, its perfect for 2GB (up to 18GB) free cloud storage for personal use (up to 1TB if you pay for it).
Its difficult to say exactly what I’ve learned when it comes to programming, but I have learned alot! Its been a really good experience working closely with two other programmers; they’ve taught me new things, being there when I needed help and hopefully I have taught them a thing or two.
During the development of BounceBack (since I joined) we have had access to a private studio. It has two dev machines, two art machines (one turned dev), 6 PSP dev kits and currently a PS3 dev kit. The computers were not linked to the uni network and we had free reign to do/install what we wanted, which was great! I think the experience would have been a lot different if we had to work in one of the uni rooms with other students. It was our own little space!
This experience has shown me that I would rather have a position in a smaller company/team where I have a bigger role/impact instead of just being another face/programmer in a large company. I want to work closely with talented people to learned and expand my knowledge.
Before working on BounceBack, my only experience with a dev kit was deploying XNA games to my 360 over my LAN. Not much of an experience really. So working with proper development kits has been useful and is something I will be doing in the future so it has been useful to see the whole process of setting one up, connecting with it, deploying, using, debugging on, getting annoyed with, flashing.
They are a nightmare. That is all.
The Process As A Whole
Its been a brilliant experience and I would have been unhappy to have missed out.
In the past month of development, BounceBack has come such a long way! We have Sony QA submission looming over us now with the release date expected to be sometime in July. Anyway, here is a bunch of new screenshots!