Yesterday was a damn awful day. We're less than four weeks to alpha and there is a mountain of work left to do. I assume that situation is the same at any other game studio. So I desperately trying to get on with my scheduled tasks, but I'm getting no chance as so many problems with stuff I'd finished ages ago are being brought to me. It got to the point where I felt like no single item that I've worked on in my eight months is still in the project in a working state. I went back to feeling exactly like I felt when I got ill; including waking up in the dead of the night half panicking about work and half panicking about the need to get back to sleep so I can deal with the next day. It frustrates me how one bad day (granted one of the worst I've had here) can put me straight back in that place.
Of course when I got ill last time everything seemed so crazy that I wasn't keeping up my journal so no-one knows what I'm on about. Back in February I had a run of three, maybe four weeks where I'd struggle to get any sleep. Exactly as last night I'd get to sleep initially, but at various points I'd wake up and find it very hard to get back to sleep panicking about work and the sleep deprivation I'd have to deal with the next day.
Eventually it got to the point where my partner demanded that I take a couple of days off and see a doctor. So reluctantly I did as I was told - reluctant as there was a Milestone coming up (isn't there always) but as you'll see that attitude was just another symptom. The doctor diagnosed me with depression caused by stress. This seemed completely illogical to me; after all I'd just got the perfect job, doing exactly what I'd always wanted to do. But it was pointed out - partly by the doctor and partly by my partner - that there would be stress inherent in any new job and it would be worse as I had so much to live up to having landed the ideal job. On top of that there was the stress of moving house, moving to a new place I didn't know and moving away from my group of friends. Also the stress from a close relative dying a month or so before.
Work was stressful at the time due to the dead lines and it being relatively new to me. Remember it is my first programming job and there was little direction from senior staff. There still isn't - I can't help feeling it would be nice once in a while for someone to take a quick look over your code to see if its up to standard, or point out things that aren't right, or could be done better - but thats perhaps another rant. The bottom line is that I knew this job would be stressful at times, I've had stressful jobs in the past and I thought I could handle it. So the fact that it had made me ill caused me some concern; was I somehow less able to do the job than everyone else in the studio? However, I suppose that it is too difficult to resolve whether stress from work caused me to be ill, or whether the other stressful things had caused me to be ill which had in turn caused me to be less able to deal with the stress at work.
It's been suggested to me that its a shame I didn't keep up my journal at the time, as at the very least I could look back to see how things were improving. So I guess having thought I'd put it behind me yet finding that a bad day yesterday can knock me back again has prompted me to write down how I feel and fill in what went before so hopefully I can look back at this and see that things are improving again.
Wow, it's been a very long time since I made a journal post. I guess I will have to go back and fill in the missing time autobiographically, rather than journalistically, at some point. However, for the time being I figure that I couldn't let E3 go by without a post. Clearly getting ready for E3 is a busy time for any studio, and its been no exception for me. I got tasked with getting the menus and in game HUD elements ready for the show. All went well; even if I was given a huge new feature to add in the final 'feature complete' week of development. That's the nature of the beast I suppose. The show itself went extremely well from 'the only gem in an otherwise dull Sony press conference' to the Gamespot Gamer's Choice Game of the Show award. Though its been hard work, its defiantly been worth while and I can't tell you how privileged I feel to have been a part of it during my first job in the industry. With any luck there will be less of a wait before my next post - no promises though as we've got to get the game finished now!
I hope everyone had a good Christmas and New Year. Mine has turned out to be a little less relaxing than I'd like, due to personal matters that I'll not go into here. As such my nerves are running higher than I'd hoped ahead of tomorrows start at the new job. Hopefully its all just stage fright and will dissolve once I arrive. All I can do now is check that I have everything ready for tomorrow. Train ticket - check. Head - check. Err. Oh well, that will have to do. However, it does feel extremely good to be starting 2006 on such a positive - with my first career job as my Dad puts it. I'm hoping I can post occasionally to my journal here on GameDev about how it is all going.
One thing I realised is that I've been very coy about mentioning the company I'll be working for and the title they are working on. Perhaps this was to avoid getting into trouble like the bloggers who've lost jobs after complaining about bosses on their blogs. More likely this was to avoid being accused of name dropping. So with this in mind I'll post hints for the company/title and see if anyone can guess it. The company had a very successful E3 in 2005 with their next-gen title.
Woohoo, today is my last day of work. And not just for Christmas. I got the job I interviewed for so no more general administration for me; from the New Year I'll be a junior games programmer. A very big thank you to everyone on the forums who's given me help and encouragement to get me here, and of course a big thank you to everyone who will help me for here on - as there's no way I'm done learning this stuff yet! Wishing everyone on GameDev a Merry Christmas and best wishes for the New Year.
The computer system at work is running painfully slow this morning, so not much work doing and a golden opportunity to post an update to the journal.
Not much programming done lately - very bad of me. Though I have been busy. I've had a week off on holiday. Very nice, thank you! Had a long weekend in Oslo, Norway. Since visiting friends in Sweden last year northern Europe has been opened up to us for holiday visits, as we Brits tend to think of going to southern Europe for warm holidays. Apologies to those countries that often get overlooked. I recommend giving them a visit if you've never considered them. Highlights included the Gustav Vigeland sculpture park, playing arctic explorer at the Fram museum, and playing Viking warrior at the Viking ship museum. This proving especially entertain for my girlfriend as some very basic genetic archaeology might suggest I was of Viking stock and her of Celtic stock so I was in for lot of ribbing for raiding and pillaging her ancestors. The remainder of the week spent visiting her immediate ancestors in Cornwall ahead of spending Christmas with mine.
The other exciting thing I've been busy with - and back on topic for those uninterested in my hols - is sending out job applications and attending interviews for games programming positions. I am very pleased that game dev companies are interested in my CV and demo. Fingers and toes crossed for a second interview with a company developing games for PS3 this afternoon. Hopefully, I'll soon be posting again with good news.
I've been reading a lot about scenegraphs in order to get a reasonable design for my current project. I thought it might help me to get some of the ideas straight in my head to think out loud. Perhaps you can set me right if I'm barking up any glaringly wrong trees.
All my objects will derive from a base object class; this includes the world, patches of the terrain, monsters and the player.
There is a logical relationship scene graph, whereby objects can have child-parent relationships with others. For example the World will contain the terrain and items, but also World>Monster>Weapon>dripping blood etc. relations are covered.
I'm also planning a spatial index. For this project it's a quadtree because all the action is on a height field based terrain. Pointers to the same objects as above are added to the appropriate node. This can then be used to speedup spatial queries: collision detection and AI. I guess that Monster>Weapon>Blood type relations are broken down and each object added to the spatial index on its own.
I believe operation is something like this: . Every object in the scene graph is iterated through and updated for movement, animation etc. . World matrices are combined for child objects, so that appropriate motion is made for Weapons held by Monsters etc. . Check to see whether objects have moved out of their spatial index node. If not move them to the correct node. Either pop the object from the current node and add them back at the top to filter down to the correct node, or pop them from the current node and try to place it in another child of the parent node, if this can't be done then move to a higher parent until it fits again. . Render based on the spatial index, culling branches that are not in the camera view frustum. Position is rendered using the world matrix that was stored while iterating the scene graph.
I've only got a couple of quick bits to talk about today.
I plugged the Perlin noise into the start of my terrain program and got some nice lumpy landscape. However, the lighting doesn't look correct. So I made a visual render of the vertex normals - which clearly aren't correct as you can see in the picture. I went backwards and forwards trying to decide if it was the vertex normal I was calculating incorrectly, or a bug in the code I'd used to visualise them, till my head hurt. Logically it can only be the former as the lighting looks incorrect. So in the cold light of day I am going to work through it a step at a time to get it right, rather than the previous method of rushing to the end and hoping it will work.
My second quick bit is my website, which I've just about finished. Ultimately I'll be sending it to prospective employers to try and gain a games programming position. If you've been reading my journal you will have seen the projects already, so I'd appreciate your thoughts on the site too. Criticism of the constructive variety preferred. Thanks.
I'm not talking about crashing drums and screaming like a banshee. I'm talking pseudo-random continuous functions employed for a natural look to computer-generated objects. In my case I want to use it for generating terrain and I'm going the route that a vast number of programmers go and using Ken Perlin's noise. I had been to all the usual suspects - Ken Perlin's own tutorial, Hugo Elias's often cited tutorial and Matt Zucker's FAQ - but still felt I was missing some small detail to my understanding. So I finally took the drastic step of reading Ken Perlin's Improving Noise SIGGRAPH 2002 paper. What a breath of fresh air! Usually academic paper are written in as obscure language possible in order that the subject is sufficiently obfusticated to prevent understanding by the reader - presumably in a bid by the author to appear extra clever. In contrast Ken's paper read well, was clear yet concise and explained the subject well. Importantly it came across as a paper written so that the reader would understand the subject: just as an academic paper should be written, but so very rarely are.
So here is a screenshot of my 2D Perlin noise. Though you've undoubtedly seen it all before I'm pleased with the result. Maybe you'll take a moment to read Ken's paper.
I took a half-day from work yesterday and used the time wisely to get my most recent finished project dusted off and packed up ready to be posted to the GD Showcase. Check it out here. In the meanwhile here are some screen shots to wet your appetites.
Check out the game and please let me know what you think.
What an incredibly, and appallingly, eventful fortnight it has been!
Saturday the 2nd was the Live 8 concert in Hyde Park. I get regular updates from Oxfam so I have been following the Make Poverty History campaign for some time; sending emails to politicians when asked and wearing a white wristband. There is still a lot that can be done so please check out the link. As such it was great to win tickets to the event and be able to take part in it, even if a small part of it (Just one of 150,000 people in the crowd). Highlights were R.E.M., though seen from very far back, The Who and Pink Floyd, both seen from much nearer the stage as huge numbers of teenagers left the site following Robbie Williams stint on stage.
Then on Wednesday the 6th the city I'm living and working in gets the nod for the 2012 Olympic games. All around London there were scenes of celebration with people partying in the street well into the night. I didn't take part myself, but there was plenty of excitement as my partner works for part of the London transport system and her department looks likely to get a number of interesting projects to improve the road network in the run up to the games.
Of course I doubt anyone is unaware of the events of Thursday the 7th. Clearly all terrorist atrocities are appalling and my thoughts are with those killed or injured. The thing that struck me with these attacks was how scared I was during the confusion of the initial reports as I attempted to contact everyone I knew elsewhere in London. With hindsight I could have been much calmer about it, as I know that the vast majority of people I was trying to contact would have been nowhere near the explosions. I guess this is true for the whole population of London, despite only around a thousand people directly affected by the bombs (and of course I'm not discounting this tragedy in any way by saying 'only' - one is too many), millions of people in London frantically contacted loved ones to find out if they were ok and let others know they were safe. Indeed this must have been the case all over the world as people checked in with relatives in London, or even with relatives in the UK. In fact as an aside I saw an interview with a gentleman in Baghdad who checked that a sister in London was safe, in stark contrast to their normal roles (not that there is anything 'normal' about bombs in any city). While not affecting my shock and horror felt at any other attack, I guess my point is that I did not know anyone in New York, or Madrid, or Bali, nor do I know anyone in Israel or Iraq or elsewhere, so although I know it shouldn't Thursday certainly felt different for me. Some might use the phrase 'brought things closer to home', but even that's not the right sentiment as there is no sense in which I thought those other events had no bearing on me.
Unaware of the events that would unfold later in the week I had taken the Tuesday off work. The main thing I worked on was to dust off the Tetris clone I posted an image from in my last journal entry, iron out a few last niggling bugs and get it ready to post as a GD Showcase entry. Although it's a project that I worked on a long time ago and was only really intended as a learning exercise the learning is all ultimately leading to my desire to gain work as a games programmer. As such its still quite a big step for me to post a playable version as I've generally kept my demos close to myself, so far only showing them to close family and friends. I hope people will enjoy it and give me some useful feedback (hopefully not too harsh or unfriendly feedback :D ). I had held back from posting it for a while following Thursdays events as it felt a bit strange or perhaps insensitive to post too close to those events. I guess that is a little irrational and, as is clear in London this week, life does move on. Please give it a try and let me know what you think.
Much to my surprise my first journal entry got read. Thanks guys. One of the comments asked for some screenshots, so I'll do my best to provide some. Today's is a bit of a practice run to have a go at uploading images to the GD web space and then posting them to the journal.
Here is a picture of my Tetris clone in action. This is a project I worked on quite some time ago. Everyone does a Tetris (or Pacman, or Asteroids, or Snake) clone when they start out as a learning exercise, and I am no exception. There's no exploding blocks, or ice world, or super power ups this is just a back-to-basics falling-block tidying-up game.
I finally got round to signing us a GD+ member of GameDev.net. As they've kindly given me a journal as part of the membership I thought I would mark this momentous occasion by making a journal post. I'm not entirely decided whether to make regular use of the journal, but it would seem remiss not to note the day I joined GD+ for posterity.