This is a crosspost from AltDevBlogADay.org (http://altdevblogaday.org/2011/05/10/so-you-want-to-be-a-graphics-programmer/).

Recently, a university undergraduate asked me on twitter for advice on becoming a graphics programmer within the games industry. I wrote a fairly detailed email response and thought the information was good enough to make an article for AltDevBlogADay. This is all my personal opinion of course.

If you’re at university, you should research whether there’s a programme to do a summer or year long internship at a games studio. There was nothing like that when I was at the University of Liverpool ’97-’00 (or I wasn’t aware of it), but I’ve seen people come through that kind of programme with much greater practical game development knowledge and it goes a long way towards persuading an employer to take you on. EA, Lionhead and other large companies tend to run this sort of programme so look on their job pages too. Beware that sometimes companies don’t respond to intern applications for various reasons (team is deep in crunch, budget spent elsewhere, etc) and places are extremely limited.

Your best bet is to make a graphics demo, either on your own or with a small group of people. You learn more by doing than by just reading. Pick a modern graphics technique that interests you and implement it. Even better, do more than one. This is also great training for motivating yourself to get a project finished which is often the hardest part of games development, for all disciplines. Make sure you’re prepared to talk in detail about the choices you made, performance (in milliseconds, not frames per second!), quality, alternatives and trade offs in a job interview.

When I was in university I did a straight computer science course - there were barely any games courses available back then, but I still think that employers still value computer science graduates above games graduates as there’s a perception that you learn a greater range of software engineering skills. This could be a misconception though, as games courses are a lot better than they used to be, but you may have to fight your corner in an interview and prove you know your stuff (and not just the curriculum you were taught).

Computer science courses also tend to be quite maths heavy (I would hope games courses are similar), which is vital for graphics programming. Make sure you understand homogeneous coordinates, matrix maths, dot products, cross products, quaternions, normal vectors, tangent bases, etc and how these things (and countless others) are useful for transforming and lighting geometry. Learn big O notation for algorithmic execution time, understand colour spaces, gamma correction, what high dynamic range means and so on. Learn some basic lighting models - Lambert, Phong, Blinn, etc.

Software

In my experience, Visual Studio is pretty much universal as a code IDE (except for Apple, Linux, Android and Nintendo games), though you can of course use your favourite editor if you really want to, as long as you know Visual Studio. There is a free Express edition available from Microsoft (http://www.microsoft.com/express/Windows/), so it won’t cost you any money to learn. The PS3 is a little different as there is a separate hardware specific debugger, but you should be able to learn that on the job.

You should be familiar with a source control system. Perforce (www.perforce.com) is a good choice as a lot of game studios use it and it’s free for single users. Try to learn it on a project with other people as merging, branching and integration are good skills to have. With all source control systems, similar concepts apply so it’s essential knowledge to have. Shockingly, my university course never mentioned source control and I was naive enough to believe that people just shared code over the network or on floppy disks.

As you’re unlikely to have access to devkits at home or in university, you’ll most likely be learning your skills on PC. In what may come as a surprise from someone with a decade’s game development experience, I don’t know much OpenGL as there’s never been a pressing need for me to learn it. Most PC games use DirectX, though if you learn DirectX 11, make sure you also learn DirectX 9 as it’s still current for Xbox 360 and many PC games still use it to support the dwindling, but still large Windows XP market. DirectX 10 is completely superseded by DirectX 11, so it is not worth learning (you can write DirectX 11 games for DirectX 10 hardware, and even DirectX 9 hardware).

It’s also definitely worth learning a graphical debugger. PIX for Windows isn’t as good as the Xbox 360 version, but there are fantastic free alternatives (Intel GPA - http://software.intel.com/en-us/articles/intel-gpa/, Nvidia Parallel Nsight - http://developer.nvidia.com/nvidia-parallel-nsight). These tools are not just for performance tuning on the GPU - they’re also for debugging your draw calls, working out why something doesn’t draw, why it looks wrong, and so on. You can also learn about how a GPU works as you can see all the renderstates, shaders, meshes, textures, etc for any draw call in a frame and really understand what the GPU is actually doing with the data you give it.

Other Duties

As a graphics coder you’ll probably have to do some tools work too, working with mesh compilers, animation compilers, plugins for Maya/3DS Max or in-house editors for the artists to use. Remember that your job is to provide technology to support the artists in their daily work, so it needs to be presented in a friendly manner. If you give your art team a tool that lets them tweak some coefficients of a fancy rendering algorithm and they have no idea what the numbers mean, they probably won’t use it. Also, technical artists are your friends - they’re the best people to talk about requirements for artists and to work out the best workflow for the content creators.

It’s also good to learn general performance and optimisation techniques as this often falls to the graphics/engine team to do. You probably won’t have to write any (or very little) raw assembler, but you ought to be familiar with what the C/C++ compiler is doing to your code, how to spot problems and what to do about them. For example, one of the biggest performance problem will be L2 cache misses (you lose hundreds of cycles per miss on all modern hardware), so learn techniques to reduce them (almost always changing the data, not the code is the fix).

Online Learning Resources

Online resources are a goldmine, and there’s much better stuff out there than there was when I was at university as a lot of companies publish papers on their techniques which are pretty useful stuff. A few examples…

http://www.valvesoftware.com/company/publications.html
http://publications.dice.se/
http://www.crytek.com/cryengine/presentations

Also there are a few good blogs posting regularly about graphics. A few good examples…

http://aras-p.info/blog/ - Lost in the Triangles. Aras Pranckevičius’s blog (a lead programmer for Unity).
http://www.realtimerendering.com/blog/ - Real Time Rendering has good information (also the book is a worthwhile read!)
http://www.humus.name/ - Another good graphics programming blog.

Make sure you read the relevant presentations from GDC (very useful) and SIGGRAPH (slightly less useful as a lot of it is for non-realtime graphics, but useful as a crystal ball for future techniques).

My last handy tip is that if you live near a big dev studio, find out which pub they go drinking at after work and join in on a Friday night. You’ll learn a lot just chatting with developers. You can also join twitter and talk to many games developers there who are willing to share their experience.

Keyboard Question MarkAs I said at the end of my last post, I was going to write an article listing all the little handy utilities/settings that make my life easier as a programmer, but in a change in schedule I've decided to postpone that and write about something I've been coding this week instead whilst it's still fresh in my mind.

As I'm writing my own engine, one of the first things that needs to be done is input processing. In the latest DirectX SDK, there are two options listed for input, namely DirectInput8 and XInput. DirectInput8 is long in the tooth, being over a decade old and has localisation issues as I'll discuss below. XInput is newer and is a cleaner API, but seems to exist entirely for using Xbox 360 controllers (presumably as an aid to porting) and supports nothing else. Neither seemed to be an ideal solution to me.

Twitter to the Rescue

I asked about this on Twitter and got a few replies suggesting I use the Raw Input API which I wasn't previously aware of. Richard Sim pointed me to this MSDN articlecomparing the APIs (in this case the example is reading mouse input). As you can see, the code for using Raw Input is a lot cleaner and simpler than DirectInput8. The article also says that DirectInput8 is built on top of the Raw Input API and uses a separate thread to capture the WM_INPUT messages, adding overhead in the process. It felt to me that using Raw Input directly was the better solution.

Using Raw Input

The MSDN documentation for the Raw Input API is missing a few things which I've had to dig around and find out for myself, so I'll explain what I've found out here. The basic process is that in your initialisation code you register the devices you'd like input from using RegisterRawInputDevices(), and then you receive WM_INPUT messages from the device in the Windows message loop from which you extract the actual keys/mouse input/etc. If you want to register for input from the keyboard, you would use the following code.

RAWINPUTDEVICE keyboard_device;
keyboard_device.usUsagePage = 0x01;
keyboard_device.usUsage = 0x06;
keyboard_device.hwndTarget = hWnd;
keyboard_device.dwFlags = 0;

BOOL ret = RegisterRawInputDevices(&keyboard_device, 1, sizeof(RAWINPUTDEVICE));

The question is - where on Earth do those UsagePage and Usage numbers come from? The MSDN documentation doesn't explain, but after a bit of digging I found out that they're part of the USB HID standard (pdf). On page 26 is table 1 for generic desktop devices, and the keyboard is device number 6, hence the numbers passed to the code above. For the mouse you would use page 1, usage 2. In fact, the Raw Input API lets you register multiple device at once as shown here.

RAWINPUTDEVICE keyboard_and_mouse_devices[2];
keyboard_and_mouse_devices[0].usUsagePage = 0x01; // Generic desktop page
keyboard_and_mouse_devices[0].usUsage = 0x06;     // Keyboard
keyboard_and_mouse_devices[0].hwndTarget = hWnd;
keyboard_and_mouse_devices[0].dwFlags = 0;
keyboard_and_mouse_devices[1].usUsagePage = 0x01; // Generic desktop page
keyboard_and_mouse_devices[1].usUsage = 0x02;     // Mouse
keyboard_and_mouse_devices[1].hwndTarget = hWnd;
keyboard_and_mouse_devices[1].dwFlags = 0;

BOOL ret = RegisterRawInputDevices(keyboard_and_mouse_devices, 2, sizeof(RAWINPUTDEVICE));

I have no idea why the API insists you pass the size of the RAWINPUTDEVICE struct as the final parameter, though it seems to be a common trait for Win32 API functions.

I think the MSDN docs explain actually getting the data well enough, so I won't repeat that here.

Once your application is registered to recieve WM_INPUT messages, it will also receive WM_INPUT_DEVICE_CHANGE messages whenever a device is added/removed from the system so you can print up "Controller Removed" messages, or switch to an alternate controller as your game requires.

Wrapping Up

I mentioned above that DirectInput8 has localisation issues. What I mean by this is that often in games you need to show the name of the key on screen in control select screens or tutorials. To do this you would use GetKeyNameText() which will return a string from a scan code. Unfortunately, DirectInput8 uses its own DIK_ enums for the keys, which don't exactly map onto scan codes. On previous games I've worked on, we've ended up with a large remapping table, with a few exceptions for various locales. The Raw Input API gives you the scan code directly as well as the virtual VK_ enum, so in theory this problem disappears (I still need to confirm this).

This is a crosspost from AltDevBlogADay - 

This is a crosspost from AltDevBlogADay - http://altdevblogaday.org/2011/04/10/workstation-setup-for-gamedevs/.

Greetings all! For my first post I thought I'd start with something I've been thinking about lately. As I'm preparing to leave "AAA" games development and become a fledgling indie, I need to set up my home office for maximum productivity and comfort. I don't have a facilities department to handle all of this for me, so here's my tips for comfort based on my experiences. I'll leave out the actual PC/Mac hardware itself and focus more on the ergonomic aspect of things. This article isn't meant to be authoritative (how could it be without reams of ergonomic data?) so I've avoided recommending specific products, but the general point is that you should try out a few things until you find what works best for you.

Chair - First and foremost, you need a good chair. I can't stress this enough after having lower back pain from working on a bad office chair a few years ago. If you can afford it (and have space in your home office), get an Aeron or whatever your favourite type of chair is. A really good chair may cost a lot at first, but you'll be sitting, slouching and wheeling around on it for a long time so it's a worthwhile investment. It's not something to skimp on. Make sure you take the type of chair for a test run (test sit?) if possible. A few seconds sat on one in a shop really isn't enough. If you know someone who has the chair you're thinking of buying, ask if you can spend an hour or so working on it to see how it works for you (although you may irritate them if you change the settings too much!). Last of all, make sure you're really happy with your choice before handing over your money.

I'm typing this article sat on a solid wooden Ikea Ivar borrowed from the dining room which is far from ideal, so I need to sort out a proper chair sooner rather than later!

Desk - A desk is easier to sort out. It just needs to be the right height (or adjustable) and big enough to put everything you want on it. Also it needs no obstructions underneath for your knees to accidentally bash against. I'm using an Ikea Galant which is a nice corner desk that fits nicely in the room I'm using, has adjustable height legs, is pretty strong (it is no problem for me to sit on it) and it is easily big enough for all the desktop equipment I need. Make sure you have measurements of the room you're going to use before buying so you can eliminate anything that won't fit quickly.

Monitor(s) and Light - A monitor should be big, bright, comfortable to read, well calibrated and more than one if possible. Make sure the height is set up so you don't strain your neck as you look at it. I'm counting light as part of this category as I think it is intrinsically linked to how well your monitor works for you. I like there to be a good level of ambient light in the room to avoid eye-strain from the monitors, but make sure the light is out of your field of vision or it will irritate you in your peripheral zone. Other people I've worked with (mostly artists and older coders), seem to have a preference for working in the dark - though I find that odd as it hurts my eyes after a while. I can (sort of) understand that way of working in the bad old days of curved, highly reflective CRT monitors as darkness would minimise reflections, but these days I think that is minimal. However, it is of course up to you how you light your room - whatever works best for you is most important.

Keyboard - You're going to need something you can type on for hours without causing pain to your wrists. Ideally you want your hands and forearms fairly flat on the desk and not bent upwards so your wrists aren't strained. Ergonomic, straight - it's up to you, but find something that works for you and doesn't cause pain after extended use. Also, you need to find a keyboard that has a key feel you like (how much travel, how "clicky" it is), sounds right (not too loud, not too quiet). Some keyboards also have extra buttons mimicking browser navigation, application shortcuts, volume control, etc. How useful these features are is debatable (I quite like having volume/mute buttons), but once again what works for you is best.

Mouse - Likewise, find something that fits your hand well, has all the buttons you need (mine is right hand shaped with two handy thumb buttons) and slides about the desk smoothly. Optical mice are all very good these days in terms of ability to read surfaces accurately so unless your desk is made of glass, you shouldn't need a mouse mat. Alternatively, you might be someone who prefers a pad, trackball or other pointing device - I only have limited experience with these so comments below welcome! I've recently bought a Wacom Bamboo pad and am getting used to using a pen as a pointing device (as well as for drawing lines and curves).

Headphones - As I'll be working in a house with two young children around, I'll need a way to block out the distraction of their noise whilst they are playing, so a good, comfortable set of headphones is important to me. Find some that don't hurt your ears and have good sound quality (I find cheap tinny sound tends to irritate after a while). Noise cancelling is an option, though on the ones I've tried, sound quality seems flatter (perhaps that's just me though).

Space - An odd thing to include, but I find that when I'm stuck on a problem, I like to pace back on forth whilst my brain is working on a solution. It's something I've deliberately refrained from at big companies as being watched by an office full of people stops my thought processes, but I do it at home (to the chagrin of my wife). Having an area you can do this without driving the people who live with you insane is probably a good idea!

I'd love comments on this article from people with suggestions of your own. For my next article, I plan to look at the software side of things - those little utilities that make my life as a programmer easier and more productive.

Fallout: New Vegas

| 0 Comments | 0 TrackBacks
Fallout: New Vegas

Image via Wikipedia

Shock! Horror! I've updated my blog for the first time in over a year. I've a theory that being on twitter has pretty much killed my blog, but I digress...

I recently completed Fallout: New Vegas, spending 50 hours playing (according to Steam). I'd definitely put it up there with my favourite games of all time, despite the well publicised technical flaws. However, my issue with the game is of a different nature. Spoilers inbound!

The ending (or at least the ending I chose) was deeply unsatisfying. In Fallout 3, I chose the sacrificial ending that left my character dead, but with a limitless supply of clean, and most importantly, radiation free water for the whole of the Capital Wasteland. This felt like the right thing to do and was a satisfying end to the narrative as a result.

In New Vegas however, I couldn't resist the lure of the Wild Card ending, whereby I took out the sinister Mr House, destroyed the horrible Caesar's Legion and turned New Vegas into an independent nation. This all sounds awesome, but my dissatifaction came from the treatment of the New California Republic (NCR) the game then forced upon me.

As the leader of a new independent New Vegas, my preference would have been to create a strong alliance with the NCR. I'd played their quest line as far as I could take it without sabotaging the Wild Card ending and was quite happy to work with them, but the game did not offer this as an option (in fact I was humorously surprised, and a little shocked when Yes Man took me literally when I asked him to throw the NCR general off the Hoover Dam). The game forced my hand - my only option was to send the NCR fleeing west again, or to tell my Securitron army to wipe them out, neither of which I wanted to do.

This was surprising to me in a game in which a major feature was the alliances between the various factions. Getting into Nellis Airforce Base and helping the isolationist Boomers onto on my side by floating an old bomber plane from the bottom of Lake Mead led to a Crowning Moment of Awesome when the very same bomber blew the Legion to hell as I was crossing the Hoover Dam in the final battle. I persuaded the Vault 19 Powder Gangers to join up with The Great Khans, who in turn I persuaded to leave the Legion and become independent themselves. Why in this case was there no option to ally with the NCR after my choice to make New Vegas independent?

Perhaps the game's writers were making the point that great power demands a great cost. I became the leader of New Vegas and as a result lost the group of people I'd been helping throughout most of the game. I think I'm going to have to change the canon of my playthrough and do the ending again, but this time play for the NCR. The Dead Money DLC is out on PC in a couple of days, so it's a good excuse to continue with the game.
Enhanced by Zemanta

2009 In Review

| 0 Comments | 0 TrackBacks

Yes, it's that time of year again! Well, actually I'm a couple of weeks late, but I've been ill and this is my blog, so ner!

Highlight of the year - Like last year, it's the birth of a child - my daughter to be precise! The birth itself was a lot quicker and easier than last time (for both my wife and myself!) and we were home by lunchtime the same day. Sleep has been more of a problem this time, though a lot of people have said that girls tend to be worse sleepers than boys - though this is anecdotal rather than proper data. My son's been learning his first words - proper words rather than random babbling. He seems to say "Oh dear" rather a lot though... As for next year, we're certainly not planning on having any more children so I'll have to think of something else for the 2010 review post.

Film of the year - Again, due to the responsibilities of parenthood, I haven't seen that many new films this year. Up is the best I have seen though, and also served as my first proper 3D film viewing, though that felt more like a gimmick than something I'd want to do all the time

Game of the year - Mass Effect. I'm probably cheating by including it here, but I did play the game in 2009 even though it was out the year before. This game has a ton of technical flaws, an irritating inventory system, awkward vehicle combat and other problems that would normally put me off, but the story, character and atmosphere just draw you in completely. I'm very much looking forward to the sequel that's out in a couple of weeks. Assassin's Creed was fun for a while, but ultimately annoyed me to the point where I didn't finish it. Trials HD was also fun, but required too much patience and skill for me.

TV of the year - This year I've really been getting into House, watching all five seasons on DVD, more or less back-to-back! I'm not normally a fan of medical dramas, but the quality of writing in House is exceptional, as is Hugh Laurie's performance. My favourite episodes are the stranger ones, usually the last couple in each season such as the bus crash at the end of season four (though the Amber clue was blatantly obvious to me) and where House becomes delusional at the end of season five, but we don't even know it until the last few minutes - one of the most powerful examples of TV for years.

As for other series', Lost is still really good and I can't wait for the final season. Dr Who/Torchwood took a different approach this year - rather than a full season of each, Torchwood did a rather good five part mini-series and Dr Who did four one-off episodes shown throughout the year - the first two of which were pretty rubbish I did think the return of the Timelords in the final two parter was a bit of an anticlimax, but the final poignant half hour was the best bit of writing Russell T Davies has ever done - shame it took him so long to get there. David Tennant's Doctor was often irritating (and utterly bipolar in character), but I'll miss him.

Book of the year - Ben Goldacre's Bad Science is a great eye opener - not just in terms of how science is misrepresented in the press, but in terms of the danger caused by pseudoscience and bad reporting of medical (or medicalised) stories. The chapter on AIDS denialism in South Africa is completely shocking. One of those books everyone should read.

Technology of the year - Android. I was so happy when I learned that Google were setting up against Apple's over-expensive, DRM ridden, walled in phone system with an open source, open to any application developers, open to any phone manufacturer, free (as in beer and freedom) operating system. My G1 phone is still going strong and whilst not quite up there with the latest models, having a Qwerty keyboard and an unlimited data plan has changed the way I use my phone forever.

Windows 7 is good contender, but doesn't win the award simply because it's what Vista should have been in the first place.

Conclusion - I was wondering whether to do a review of the noughties (or whatever people call em), but the mathematician inside me won't let me consider the decade over until 2011 - there was no year zero in our calendar. Also, I can't remember that far back.

Predictions for next year. Here I can say whatever I like and if it comes true I make lots of noise about it when it happens - if not, I pretend I never wrote it! I reckon Android will become more popular, certainly after the launch of the Nexus One phone, though the iPhone is so ubiquitous that I doubt it'll be buried for a long time (if ever).

I predict I'll still have two children at the end of the year. I have nothing but admiration for parents who have three or more children.

I also predict I'll like Mass Effect 2 a lot! There are a few interesting games that ought to come out in the next year - Alan Wake, Starcraft 2 (at least the first part of it) and Fable 3 of course (pre-order now!!!).

I want to try to lose weight (though being ill for the last couple of weeks has given me a nice headstart) and I also need to figure out an easy way to pay off the mortgage in one go...

I've recently started using a second PC at work which has proven useful. In order to simplify using two PCs simultaneously, I'm using some software called RemoteD in order to share the mouse and keyboard across both machines. RemoteD appears to have been written internally at the company I work for so isn't on the web, but it's similar to Synergy in that you are able to drag the mouse off the edge of the screen on your main PC and it will appear instantly on the other screen and behave as though it were connected to that machine. Drag it back and the mouse focus is back on the main machine. The keyboard focus will also change to the PC that the mouse is active on (though you still need a keyboard plugged into the second machine in order to get through the Windows Login screen). Some software of this kind even supports copying the clipboard from one machine to another.

I'm finding this way of working is very handy to get work done on one machine whilst the other is crunching away on something that'll take a long time, but it has got me thinking that this kind of machine sharing could be done in a better way. If there was a single (virtual?) instance of the OS shared across both machines you would be able to simply drag entire applications from one machine to the other just as you can across multiple screens on one machine and it would use up CPU/memory on the machine you drag it to.

I believe this kind of thing is already somewhat possible using virtual machines for each application and using a system that allows the images to be migrated live (as used in data centre replication), but I've never heard of the system being so closely integrated with the desktop in such a way. I'm not claiming for a second this would be trivial to implement, but it would be rather cool - especially if you can add/remove machines from the array at will. For example you could bring your laptop to your desktop PC, connect them up and drag your IDE from one to the other in an instant (or however long it takes to copy the memory space of the app + related files across a wireless connection), then take the laptop off somewhere else.

In the meantime, if anyone can evangelise their favourite Synergy-type software I'm open to recommendations.

And Another Thing...

| 0 Comments | 0 TrackBacks

The Hitchhiker's Guide to the Galaxy novels are much loved by many, and now there is a sixth book in the "trilogy" written by Eoin Colfer titled "And Another Thing...".

I'd never read any of Colfer's works before - presumably because they're aimed at teenagers and I generally avoid such works. I lie of course, as I've read all of the Harry Potter and the Keys to the Kingdom series, but I digress.

The new H2G2 novel takes place directly after Mostly Harmless and follows the characters escaping a doomed Earth (again) and generally being chased around the universe by the Vogons, who are hell bent on destroying every single human. Overall, I quite liked it - it didn't seem quite as inventive or inspired as Douglas Adam's works in places, and somehow "feels" different, but the story works well and the laughs are certainly there (much to my wife's annoyance when I was chortling away reading in bed while she tried to sleep). To criticise too much on minor style issues would be unfair to Colfer though, given the ridiculously high expectations placed upon this book. However, I feel the novel ended a little lazily, performing the vastly overused trick of setting up a definite sequel in the last chapters, rather than wrapping things up.

If you'd like to buy this book, please consider using this Amazon.co.uk link and I'll recieve a tiny commission at no cost to you which will help pay for the hosting of this site. Thank you.

Up & 3D Cinema

| 0 Comments | 0 TrackBacks

I saw Pixar's latest film, Up, last Friday. It is the first full length film I've ever seen in 3D, or DISNEY DIGITAL 3D as it pronounced itself.

The film itself is one of Pixar's best. It certainly shows a new found maturity to their filmmaking, bringing my wife and (presumably) a good proportion of the rest of the audience to tears. I, on the other hand, am a Northern English bloke hardened by a childhood working 28 hours a day down the mines, bricks for breakfast, living in a puddle, etc - therefore no film has ever had that effect on me (either that or I'm just emotionally stunted). The fact that a frankly surreal story idea works so well is testament to Pixar's excellent storytelling craft.

As for the 3D effect - I'm not completely convinced it's anything other than a short lived gimmick. It certainly works - the form of objects is realised surprisingly well and the circular (as opposed to linear) polarisation seems to negate the headache I was fearing. However, I kept finding myself distracted by the 3D effect and wasn't able to completely absorb myself in the film. Perhaps this impression will fade if 3D cinema becomes more commonplace.

Another problem which the film mostly avoided is a perceived lag that happens when there is a camera cut. Pixar seemed to be vary careful to keep the amount of parallax on the focus of the image roughly constant between cuts, but the editing on one of the trailers beforehand (some 3D CGI space thing) was jarring. Far too many fast cuts causing a noticeable delay whilst my eyes locked onto the new parallax. Maybe younger viewers are able to keep up better, but I'm a 30 year old boy - surely my eye muscles are still good!

Reading this post back, I've noticed that I haven't (yet) mentioned the graphics in the film, despite being a graphics geek and indeed a graphics programmer. Suffice to say they're so good you barely notice them - the few times I did think about it I saw flawless lighting, shading, the works. Sometimes I envy film effects people in that they have a lot more processing time at hand as opposed to games aiming to have everything rendered within 16⅔ or 33⅓ milliseconds depending on whether we're aiming for 60 or 30 frames per second.

Another technical oddity I noticed is that at the end of the credits (I hung around in case there was any extra bits at the end), there was a message saying that all final rendering had been done on Intel processors. I'm mildly surprised that Pixar aren't using any GPU technology such as NVIDIA's CUDA or OpenCL to accelerate things - perhaps because the cost and time required to port over their existing rendering software is prohibitive, despite the gains, so simply throwing more processors at the problem is a cheap way to improve rendering performance.

In the Night Garden...

| 0 Comments | 0 TrackBacks

One of the joys of having children is that you get an excuse to watch children's television again. One of my current favourites on CBeebies is "In the Night Garden...". The show is made by the same production company as Teletubbies and shares some of the earlier shows aesthetics - lots of lush green grass, constant sunny weather, happy costumed characters, etc. On the surface it's a very happy smiley show, but the more I think about it, the more the show's darker side is apparent.

Igglepiggle

The protagonist is a character called Igglepiggle, who is shown at the beginning of each episode falling asleep on a small sailing boat and dreaming about adventures with his friends in the garden. At the end of each episode he's reluctant to leave the garden and is then shown asleep in the boat drifting off into the distance. This got me thinking - far from being a happy character he's lost at sea in a small boat, most probably living on fish and re-condensed sea water. He's so lonely that his mind is dreaming/hallucinating about the garden and its characters in order to keep himself sane. The garden itself is of course on dry land and there are no streams or ponds - I guess Igglepiggle hates water after being adrift for so long.

Each character has a theme song which is sung when they first appear in the garden. Igglepiggle's simply states that his name is Igglepiggle, as though he is trying desperately to cling onto his identity. An instrumental version of his theme also serves as the opening/closing music for the show and is also sung by the Tittifers (brightly coloured birds) - it's almost as though the song is stuck in his head, haunting him.

If Igglepiggle is going insane with loneliness and the garden does not exist outside of his head, then we can think of the other characters as representative of different aspects of his personality. I think I've figured some of them out.

Upsy Daisy

Iggle Piggle's best (imaginary) friend is Upsy Daisy. A young woman who appears to be his girlfriend - they are often seen holding hands, hugging and kissing each other. She sings and dances a lot and seems to represent a happy distraction from Igglepiggle's plight - he clings to her to push his loneliness away and uses her as a mask from his breaking personality. Her theme emphasises that she is the only Upsy Daisy, perhaps showing that Igglepiggle is clingy and obsessive about her. Strangely enough, she sleeps in a wheeled seemingly sentient bed that sometimes follows her around or runs away from her.

Makka Pakka

This character is simple to work out. He represents Igglepiggle's obsessive compulsive side. He collects rocks and does all the cleaning in the garden, often washing the other character's faces. He is about half Igglepiggle and Upsy Daisy's height, perhaps indicating that this aspect of his personality is not dominant.

The Pontipines & Wottingers

The Pontipines are ten tiny red characters who live in a semi detached house. The other half of the house is occupied by the Wottingers. The Pontipines appear in the show far more frequently than the Wottingers and I think I've figured out why. The Pontipines and Wottingers appear to be the most intelligent characters in the garden and perhaps they literally represent Igglepiggle's brain. I think the Pontipines represent the right hemisphere and the Wottingers the left (matching up with the side of the screen their house is on). The Wottingers appear less often because IgglePiggle is right brain dominant. Further evidence of this is that the characters in the garden all lack good language skills (most can only say their own names). Language is usually controlled by the left hemisphere of the brain. The tiny size of the characters would seen to show that Igglepiggle's brain is in a bad state overall.

The Ninky Nonk and Pinky Ponk

These are the two forms of transport within the garden, a fast train and a slow airship respectively. Although apparently about the same size as Igglepiggle, they become large enough for the characters to ride on, though the size change is never shown. They perhaps show Igglepiggle's yearning to get off his boat and onto some other form of transport. The fast speed of the Ninky Nonk showing Igglepiggle's desire to move quicky rather than drifting slowly and the airship perhaps showing his frustration - he wants to get high enough off the water to see land.

Conclusion

I haven't figured out the rest of the characters yet, which is why I haven't mentioned them here. Of course, I'm sure the program makers had none of this in mind when making the programme - this is of course simply my analysis after thinking far to much about a children's television show. Perhaps I've got too much time on my hands...

James May's Lego House

| 0 Comments | 0 TrackBacks

I originally started writing this post over a month ago, but work suddenly went into overdrive and I never got round to finishing and posting it. Well, here it is!

Back in July, you may have seen the news that James May was planning to build a house out of Lego and live in it for a few days for a new TV show. I certainly did. He was looking for a few hundred volunteers to help out with the construction, and I also noticed that the event was taking place at Denbies Vineyard, only a short drive from my home.

I decided to sign up, though I wasn't expecting to get anywhere. A few days later I received an email saying that there was lots of demand and that people should turn up on Saturday morning and they would hand out tickets to those lucky enough to be near the front.

I had to do this! Playing with a vast quantity of Lego is something I've always dreamed of as a child and I could not pass up this opportunity. I contacted my friend Iain to see if he fancied coming along and he replied in the affirmative.

The Big Day

I awoke at 7am on Saturday 1st August and after a little while I dragged myself to the shower and made myself presentable for the day. My wife had agreed to give us a lift to the event, which was just as well because when we arrived at 8:30 the car park was overflowing. She dropped us off at the entrance and we walked the rest of the way.

We joined the rather long queue and tried to estimate how many people were ahead of us. The email from the producers said that there were 600 tickets available, but they would be able to give out more tickets if the weather permitted. The queue already stretched around three sides of the large main building at Denbies and was getting longer by the minute. We also noticed that we were in the minority of people who didn't bring children along - I would have brought my son along but he's too young for it and would probably try to eat the Lego rather than do anything useful.

The queue moved slowly forward. My wife texted me to tell he she had spotted James May in the centre of Dorking with a camera crew - Denbies lies on the edge of this town. The queue continued its agonisingly slow crawl, though the atmosphere was a happy one - if there's one thing the British know how to do well, it's queueing. There was no queue jumping, nor an impatient word. Even the children in the queue were entertaining themselves without causing a nuisance.

At last! Some excitement! A car drove along the queue with a camera crew hanging out of the back. We all dutifully waved as it passed, hoping that we would we would be amongst the lucky few not to end up on the cutting room floor. More excitement ensued a little later when the car appeared again and stopped by some shipping crates, the driver and his companion opening them and extracting some of the valuable plastic bricks we all wanted to get our hands on.

As we neared the front of the queue, we saw what was taking so long. People were having to sign release forms for their image to be used in the TV programme, though by this point they had started handing out the forms to people before they got to the front which helped somewhat. At about 11:30, three hours after joining the queue, we finally received our tickets for an hour's building at 3pm.

A brief interval for lunch at home and we were back queueing again (groan), only this time in the rain. Thankfully, the queue was much shorter this time as it was only for a pre-booked session. After a little while getting wet, James May himself came out of the marquee with a megaphone and told us all to stop standing around in the rain like a bunch of idiots and to come inside and get building. We didn't need telling twice!

It turned out we weren't actually going to be constructing the house, but building what amounts to house bricks out of Lego. This was a bit of a shame, but understandable considering the amount of people there. We were to construct hollow blocks made out of standard 2x4 Lego bricks measuring 12x6x8 bricks in total with no top or bottom. Very strong and light.

Iain and myself were quite competitive, trying to build as many blocks as we could in the time allotted. There was a frustrating hiatus in the middle where we ran out of Lego and had to wait for another crate to be retrieved from the stores, but we ended up well ahead of everyone else on our table.

After that, there was nothing for it but to buy some of the local wine and head home.

In the intervening weeks I have received more emails asking for help in the actual construction of the house, but unfortunately I've been snowed under with work (which as I noted above, is the reason for the delay in this post). I noticed in the local paper last week however, that the house is still not finished, so perhaps there is still an opportunity for more large scale Lego construction ahead.

I shall post again when I know when this will be on TV - I'm assuming the series is being prepared for the Christmas toy rush.