I found myself writing a Vector3 class today and it suddenly occurred to me - how many times have I written this class in my career as a game developer? Too many is the answer. So why am I writing it again? The answer is simple - because the previous versions didn’t belong to me they belonged to the company I was working for at the time. Sure, you could argue that there are a lot of versions of this particular class (or indeed probably of any general purpose class you can think of) on the web but the problem is they usually have some god awful open source licence attached to them that needs a lawyer to interpret, so in the end it becomes easier just to re-write.
How different is a Vector3 class I write now going to be from a version I wrote for somebody else? Code style will change and perhaps I have learned a few more optimization tricks but in the whole it won’t be that much different and when it comes down to it how can I prove that it is different? This is the major problem with IP protection and coding. I know that I have repeated pretty much the same code for the different companies I have worked for because I have a pattern of coding that is my ‘comfort zone’ and I don’t tend to move away from it often. I have had a few ’senior’ coders attempt to get me to adopt a coding style more akin to what their view of code is but I usually just say sorry and I will remember to follow the coding style bible from now on - but I don’t of course. I have the view that as long as code is readable by other coders then that is okay. Attempts to mould a coder into another working practice is likely to reduce their productivity. Why should this be so? A lot of people will try to convince you that coding is a science and there are rigid rules and forms that must be followed and sure - there are but I would call those people Software Engineers and perhaps they are more suited to a very regimented way of working. However I view ‘coding’ as a creative art rather than science and as a result every artist has a way that works for them and if they try to alter that way to conform to others then they tend to lose that creative spark that allows them to perform the magic that they do. Unfortunately this way of thinking has led me to trouble in the past. I was described in one interview as being ‘Cavalier’ in my coding and the rationale behind this was that I don’t plan what I do. This of course was nonsense and I do in-fact plan everything I do in the same way that a great artist plans a painting or a sculpture. My form of planning is a notebook I carry around with me all the time. This notebook contains lots of drawings of code flow and game designs. I don’t do anything without planning it first but that is not a constraint but more of a single part of the jigsaw that is coding as an art-form.
This would of course horrify the technical director of Introversion - he is more what I would call a Software Engineer and a damn good one at that.
Perhaps this is the real reason I re-write a lot of code rather than re-use it. The pleasure comes from the craft of creation rather than the end result itself?
I have come across a lot of obscure error messages spat out by compilers and assemblers throughout my career as a coder but yesterday I met the best. XCode 3.1 decided to let me know that I had forgotten to flesh out a member function prototype by simply displaying the error message ‘Possible candidates are’ and then the name of the function. It didn’t take long to discover why I was getting this message and to correct it but that has to rank as one of the most obscure error messages. Kudos for almost solving the error but it would have been more useful to tell me there was an error and then post this message.
So, Spore Galactic Edition arrived this morning through the post. I quickly unwrapped it, through the disk in the drive and installed it. 17 mins later I can launch it. The first thing it asks you for is the serial code so I entered that and then I am treated to a nice Maxis animation and the Spore main menu appears. I then create an account, wait and then a message appears telling me that Spore is unable to verify my activation code so all online privileges have been removed.
WTF!?!
I try again - same results.
Eventually I give up and give EA a call and guess what - the Spore Servers have fallen over and they should be back up and running in 5 hours time. Way to go EA! What’s more you go onto their support forums and there are a lot of people in the same situation.
Edit:
Just got an email from EA over this:
“Thank you for contacting us here at Electronic Arts Customer Support.
We deeply apologise for the inconvenience that you are currently experiencing with SPORE. It appears that there is an ongoing issue with the accounts server and the registration process for the game. We would like to inform you that we are already investigating this concern and in the process of resolving this issue. For updates with regards this concern, you can visit the SPORE site at http://www.spore.com.
We appreciate your continued patience and understanding in the meantime.”
******* UPDATE **********
The Spore servers are now online
My iPhone game remains in the Itunes Connect ‘review’ status. Last time it took them a week to find what they classify as a bug. I have heard from other developers that they got refused on items like version numbers not being matched in the games .plist file. While it is understandable that they want all the information to be complete I think the review process should be a dialogue between the developer and Apple rather than the opaque process they currently have in place. My main worry is that the halt the process on the first bug they find rather than compile a list of bugs to give to the developer to fix before the game goes into the next review stage. Imagine the worse scenario, i.e. that you have n bugs that means at this rate you would have n weeks of review. I have heard the argument that it’s up to the developer to make sure that their games are bug free. In the case of the actual code then I agree but when it comes down to Apple’s requirements for the game the documentation is not all that clear about what ‘has’ to be done so the developer can honestly believe that their application is complete when they submit. Another annoying aspect of this is that if you go onto the app store at the moment there are plenty of apps on there where the comments are full of ‘it crashes the iPhone’ or ‘it doesn’t work’ - how did these apps pass the review stage?
So how can Apple make this process easier for the developer and themselves?
when you supply your application to the app store you should get assigned an account manager and this is somebody you can contact in relation to your application. Now this may seem like an over-kill but look at it this way. Apple are probably swamped with games currently going through the review process and by making the review process a dialogue with a consistent person Apple can reduce their workload of apps waiting to be reviewed. The argument for this is that not all bugs should be classified the same. A simple art change bug can be fixed in moments by the developer so the account manager can inform the developer of the issue, the developer fixes it and the account manager continues from where they left off. At the moment it appears that you get informed of the bug, you fix it and then submit your app to be reviewed and the process starts from the beginning again with somebody else. If however if it is a major bug like a crash bug then I would argue that is a strong case of putting the app through the review process again.
Apple could make the whole process a little more transparent by supplying more information on the app status page other than a coloured ‘light’ and a word. It says the game is in review but it doesn’t give an estimated time to completion or anything else that is useful - at the moment the developer really does feel left in the cold to wonder if Apple are actually doing anything. If it’s in a queue then show its queue number - something to give more feedback about what is happening.
On the whole Apple have done a better job than I expected and this is their first generation of the process and I am sure that it will get better but for the moment it’s very painful and not at all clear enough for the developers out here trying to make a living and add value to an already fantastic product.
Is anybody else going through this process at the moment and would like to share your experience of it? Perhaps your experience is better than mine and a few other developers I have spoken to?
Since I accidentally ended up with a 80Gb PS3 the other day I decided that I might as well go an pre-order LittleBigPlanet - so I have
While I have some fears over MM pulling this off to the level of hype it had been getting I am going to support them in this since the industry desperately needs it in order to get out of it’s ‘me too’ loop of game development.
Attending Alex Evan’s talk at Develop this year was an eye opener, especially when Alex opened the talk with ‘We made all the same mistakes that Lionhead did’. See that scares me - mainly because I used to work for Lionhead and I remember what it was like to be a coder there. Don’t get me wrong, Lionhead was a fantastic place to work and has some amazing talent there but one factor that was missing at my time there was planning and it appears this is what Alex is referring to. One of the exciting aspects of working for Lionhead was the relative freedom to experiment with different systems and techniques in coding however this was also its downfall because you found that you had a lot of code that was written, dumped, written again, dumped again and written yet another time. An example of this was a newspaper system I was working on for the console verison of the Movies. I found after we dumped it that at least three or four other coders had implemented the same kind of system and also had theirs dumped - not because it was bad code but because once it was coded it was decided that it didn’t really fit and then they dumped it only to be re-coded when somebody declares that ‘wouldn’t it be great if we had a newspaper system in the game?’. This kind of iterative re-factoring is expensive to projects and I have seen it at a lot more games companies that just Lionhead and I am sure I will see it again. The way Alex was telling it he seemed to believe that LBP had it bad and as a result they are having to pull stupid hours to finish it. His one advice to everyone - place constraints and adhere to them.
So why could this spell doom for Little Big Planet? Mainly because what you end up with on these types of projects is a mixture of messy code masquerading as design that sometimes works but often doesn’t. It worries me that the innovation that is Little Big Planet will not be able to deliver on its basic promise of a social networking game because the approach to delivering that vision was flawed. We need Little Big Planet to be different and we need it to be damn good if we are to change how this industry keeps pumping out ‘me-too’ games.
The ray of sunshine we have is that Alex has a brain the size of a planet so he should be able to pull the game out of the quagmire it appears to be in.
At last I have it - iPhone Developer Status!
I got an email recently from Apple telling me that I should hear about my iPhone developer status application soon. I have had an application in since the iPhone came out but because I am based in the UK it’s only recently that they opened it up to the rest of the world. I am sure there are not going to be any hitches in the process because the application consists of clicking a single button - no questions asked. Only thing is it’s taking forever. Ironically I know of people who have got their developer status and haven’t even got an iPhone so wont be making anything for it whereas I got my iPhone as soon as they came out and have been itching to make a cool game for it.
So come on apple - where is my developer status?
It’s simple. If you are carrying a knife then you are intending to use it so you get life if caught with it.
We need to stop this senseless slaughter somehow.
So here I am catching up on my fix of CSI:New York when they find a blog being updated in real time and one of the CSI’s turns around and says:
“I’ll make a GUI interface in Visual Basic and see if I can track down his IP address”
I just love it when these shows just come up with technical jargon that means absolutely nothing.