Basically the player’s viewpoint in Containment is one of a ‘radar’ style blueprint of an installation so the lines you can see below are the walls of a room that shimmer in the same way that the holograms do in films like Star Wars (where the idea was sparked from). There are two flavours of Containment being toyed with at the moment. The first was originally intended for single player and would have been the version written for WiiWare and the second is a Multiplayer RPG type affair.
]]>I like many indie developers before me started out in the games industry. I have served for over 10 years in various companies ranging from Kuju Entertainment to EA with my proudest achievement being the networking code for Mutant Storm Empire for PomPom. I learned a hell of a lot during that time and thought it was time to break free and give being an indie a go. I got a little side tracked from this and found out the hard way that unless you have a lot of funding you need to work for other people while working away on your own business - which is what I did.
I am not the only one in this situation. I know of at least one other indie developer who has far more experience than myself who is also expecting a rejection because of the office issue.
The most ironic thing is that in a home office you are pretty much going to find somebody there all the time whereas at an office it’s going to be vacant for most of the night and prime target for break-ins. In fact, at one developer I worked for we were encouraged to take the computers home at night because they kept being broken into.
I have since been told that the rejection letter I got was a blanket letter they send to all rejections.
]]>
“Thank you for your interest for Authorized Developer status for Wii. We
have completed our evaluation of your application and are unable to offer
your company Authorized Developer status at the present time.
In evaluating developers, Nintendo looks for relevant game development
experience. In addition, Nintendo looks for secure business facilities,
sufficient equipment and staffing, financial stability and other
attributes that would distinguish the developer.
Nintendo provides Authorized Developers with highly confidential
information and many of Nintendo’s Licensees rely on recommendations and
referrals by Nintendo to Authorized Developers. For these reasons,
Nintendo exercises a very high level of discretion in approving only a
select number of applicants.
In accordance with our policies, we are not able to re-evaluate requests
for developer status for at least six months. Again, we appreciate your
interest, and welcome any questions or concerns you might have regarding
this decision.
Best regards,
Software Development Support Group & Licensing Department
Nintendo of America & Nintendo of Europe”
The C++ application had to be multi-threaded. The reasoning behind this was that http requests and responses are not real-time, it can takes seconds to process one transaction. I couldn’t have a 3D display pause while the app went off and updated the database so I put the actual database communication code into another thread. When something is needed from the database or the database needs to be updated a transaction is sent to the comms thread which processes it and gets the result. The comms thread itself blocks while waiting for the results but it means the main thread of the application can proceed. The user still has to wait for the results but at least the simulation continues smoothly while those results are coming in. Each communication is a transaction and each transaction is a C++ class derived from a base Transaction class. They all share a common interface composed of three functions called:
Begin
Update
FInish
Update is the actual function that performs the http communication with the server while Begin and Finish are used to provide house keeping tasks. An example of this is player registration. Currently to join the game the player has to register with the Containment Computer and this is done like:
Register user password
While this transaction is being processed we don’t want the player to be able to type the same line in again so in the Begin function the keyboard console is turned off and in the Finish function it is turned on again. So as you can see those functions can be used to provide a measure of serial flow in the game execution. The alternative would have been to deal with duplicate transactions going through at the same time.
Incoming transactions are placed into an ‘in’ list while processed transactions are placed on an ‘out’ list with critical sections being employed to stop concurrency issues raising their ugly little heads. The critical section is entered, the item removed from the list and the critical section is left and the transaction is then processed. This means that very little time is spent in the critical section which hopefully means very little stalls in the main thread or the communications thread.
]]>It has been 13 years since I left college and started working in the IT sector and after all that time I have finally come to the conclusion that you should never believe an employer when they say that they want your opinion or your contribution to their business because at the end of the day you are merely a resource. In my case they want my programming skills. They don’t really want what comes with it they simply want me to sit down and write the code that they dictate. They are not interested in anything else I or you have to offer.
It’s sad but its true. Anything else they tell you the contrary is an illusion. They may actually believe they mean it when they say it but when it comes to the crunch the reality is that you are simply employed to provide them with the resource that they are missing that caused them to hire you in the first place.
My problem is that this is not enough for me. It has even got to the stage where I tell people at the interview that I am not content to simply be a resource - I want to put all my effort into the whole business in order to make it successful. I have a lot to offer and I will work all the hours to be a success since its in my nature to succeed. And you know what? They still hire me knowing this because they believe at the time that this is the person they need. However, get through that door and from day one it is clear that you are still just another resource.
When I was young I was convinced that I did not want to be yet another person who was merely ‘waiting to die’ and by that I meant get up in the morning, go to work, come home, eat dinner and spend the rest of the night sitting in front of the TV. I thought people who did that were typically people who did menial jobs such as cleaning, or construction work. The sad ironic truth is that in reality my life as a programmer is no different than theirs. Our tasks may be different but our patterns are exactly the same. So why aren’t I cleaner or a construction worker? I honestly don’t know. One could argue its the pay but quality of life and satisfaction mean a lot more than pay surely?
So here I am in a new job and I am reminded of the old lyrics from ‘The Who’: Meet the new boss same as the old boss. Don’t get me wrong, I like them as I have liked all my previous bosses (with exception to one who was a complete dick-head) but when I look into their eyes all I see is them looking at their shiny new resource…
So I am going to shut-up now and just get on with my life being a resource.
[edit]
I will have to say that I recently joined the ranks of a well known indie developer and they do seem to operate differently so there is hope.
[/edit]
]]>#include “test.inc”
when it should have been:
#include “test.inc”;
Can you spot the difference? Cunning eh?
It’s amazing. Rather than tell me there was a problem with this line it reported strange errors to do with variable declarations and turned out to be a bitch to find. Of course, what this really boils down to is that I really depend on the compiler to catch stupid syntax errors for me and when I don’t have a compiler such as in this situation I get stupid errors.
You live and learn.
]]>To get things started here is an image of the test app for Containment that I created over a year ago and sparked off the game as it is now: