Tuesday, 25 May 2010

Ultrablast is RELEASED!

I'm happy to announce that Ultrablast is now avaliable at the Appstore! You can visit the site at http://ultrablast.net/ to see some screenshots, a new trailer and more!

One coder, one musician and me did most of the work, two more artists, Martin and Teck, helped out with portraits and a boss and design ideas (and testing. Oh so much testing). Have a look!

Sunday, 14 March 2010

Small Update

Right, long time no post. A couple of things of note:

  • As mentioned earlier, I got a job at Codemasters and the game I'm working on has finally been announced; Bodycount.
  • We've got a new Speed Modeling Competition running over at Game Artist. It's a bit late to mention this now but there will be a Speed Texturing Competition starting next Friday and then we'll keep alternating between the two so do check in if you fancy a challenge :)
  •  I did get the nice apartment I viewed but it hadn't been cleaned for over 6 months when I moved in so I found some slugs in the kitchen as well as spiders and other creatures. Starting to get things under control now though, 4 months later...
  • Leamington has turned out to be a fantastic place. Lovely little city with a decent ammount of restaurants, activities, bars and pubs. And lots of nice co-workers so things are looking good. Being somewhat near London is bad though, I seem to have a tendency to head down at least once or twice a month. Stupid Swedish shop with tasty things I crave...
  • Ultrablast is still being worked on and we're almost done so soon, oh so soon it will be released! It's looking pretty dang good if  I may say so myself.
And that's it for now. Until next time...

Monday, 30 November 2009

Ultrablast is now official!

Ultrablast is an iPhone game we have been working on for some time and decided to submit it to the IGF Mobile competition. Deadline: 1st of December. Hence mad scramble to polish everything up to the last possible moment. But we did it and it's looking pretty hot if I may say so myself. Please, check out the trailer and leave a comment on youtube, facebook, twitter etc!

Trailer!          Facebook!          Twitter!

Lots of things have happened

It's been a while since I posted anything here and there's a perfectly valid reason for that. Actually, make that several reasons! In no particular order:
Game Artist is a nice forum that is part of the CGSociety family and is (of course) geared towards game art. Feel free to drop in and post some work or help a struggling artist with a bit of constructive criticism.
  • Resigned from Rebellion
While it was good fun to work with the people there, I felt it was time to move on. Will miss the people there though, great bunch of people.
  • Got a job at Codemasters Southam
Somewhat nervous but they have put out some really good games and their tech looks like it can deliver so I'm excited to get my hands on that and getting involved in things over there.
  • Found a flat in Leamington I really want to get my hands on
Now I just need to rob a bank to afford deposit, estate agent fees and all the other associated costs of moving houses... 
  • Went to Stockholm, Sweden and...
  • Celebrated 30th Birthday
A week-long vacation that included dinner with family and friends seemed  like a good way to celebrate. So I did. Good times were had by all!
Only managed to catch six movies but they were all pretty damn good. Short summary follows!

Okuribito (Departures) - Japanese movie about a cellist whose orchestra gets disbanded and moves back to his small home town and gets a new job. Doesn't sound like much but it is easily one of the best movies I've seen in ages. Not a dry eye in the theatre when I watched it

Map of the Sounds of Tokyo - Tragic love story between a spanish wine seller and a fish market worker. Very good as well and since it's a Catalanian director it's got an interesting mix of European and Japanese vibes going on.

Haeundae - Korean disaster movie where I actually cared about the main characters. Good mix of comedy, drama, action and decent effects

Shrink - Kevin Spacey plays a self medicating shrink that tries to fix himself and his broken patients. It was better than I expected and has some sweet moments. And a decent ending too in my opinion.

The Limits of Control - Jim Jarmusch. Beautifully photographed but don't ask me to describe it...

And lastly...

Black Dynamite -  Awesome stuff, a love letter to the blaxploitation genre. Completely crazy story too with a nice twist at the end. For your aural pleasure, they've gone and put the whole soundtrack online: http://www.blackdynamitemovie.com/music

  • Writing notes on a blogpost about working abroad that I need to research a bit more before posting
This is a post I've had in my head for a while and I have several pages of notes in my little Moleskine notebook (I'm not being pretentious, they really are quite nice to use!) that I need to translate into a coherent post. And I also want to do some research on visa requirements in the US for example so I can make some informed arguments about the pros and cons of  having a degree or not. And various other things that are important to look for when moving countries. I've done it twice so hopefully I will have something useful to say about it...
The GAMC is a small competition with some nice prices, open to anyone who feels like participating. At the moment the theme is to model and texture a jet engine turbine thing from a loose concept and the winner will get the Character Modeling 3 from Ballistic as well as one year CGSociety and CGTextures membership. Not too shabby.
  • Made a somewhat silly farewell letter together with a colleague
We both love Team Fortress 2 so what better way to show that than to make a Saxton Hale-style farewell letter? Especially since we were leaving within a week of eachother.

The way we did this was to create the template, print it out, tick the (in)appropriate boxes, get some coffe stains on it, fold it up and then scan it for some further touch ups and Bob's your uncle. Got a Photoshop psd template file if anyone wants to create their own letter...

So yeah, lots of stuff has been going on but it's calming down a bit now so I'm hoping I'll be able to post a bit more frequently again. And there's one last bit that I haven't shown... But will in a minute! Honest!

Monday, 26 October 2009

Fellow Developer Blogs

Since this blog is mostly about art I thought I'd share some links to a few blogs by other developers for those interested in what game development is like. There are quite a few developers blogging so this is just a small sample, there are a lot more out there that I haven't had time to read yet. Without further ado...

The Further Adventures of Oddbloke 

A quite funny blog written by a programmer. Quite varied and this post does describe what it's like to work in a studio quite well: http://www.danceswithferrets.org/meeblog/?p=456

What Your Fellow Man is Capable Of

This is written by a gamedesigner and has some very insightful articles on what makes games fun. He also talks about how you can make a game more fun by paying attention to what's been done before and what actually works as well as other random bits and bobs


Excellent blog about life and work for a westerner working in Japan. Sadly he hasn't updated it in a while but there is an extensive archive that is well worth reading if you are the least interested in working in Japan.

Double Fine 

Not really a blog but Tim Schafer posts a lot of random stuff on the Double Fine News section which can be quite amusing. For example this post which shows some of his rejection letters and the completely awesome application that got him a job at Lucas Arts.

Warren Spector 

Warren Spector is a legend and sadly he doesn't update all that often but it's still worth a look.

Raph Koster

Raph Koster has been working in this industry for a long time, mostly relating to Virtual Worlds and MMOs.


Makers of Uplink, Darwinia and more talk about the development, the business of being an independent developer and they are very open about the cash flow problems they have faced and how they overcame them. Some really cool R&D there too!

There are tons more out there so go forth and explore the links from the blogs listed above!

Late additions:

Joel On Software

The article linked above is titled "12 steps to Better Code" and while it's not games industry specific, it can probably benefit programmers, if nothing else as ammunition when talking to managment about improving procedures etc. Worth a read even if you're not a programmer since it will give you a better understanding of what they are up to over in the code-bay and why it might be a bad idea to interrupt them when they are working.

Thursday, 1 October 2009

Creating metal surfaces

 wrote this short text some time ago to help people when they were creating metal surfaces and thought it could do with being reposted here. I've also added a section on reflections at the end so without further ado...

Creating metal surfaces

This is just a couple of things I keep in mind when creating metal surfaces. They are by no means set in stone, it's just a few things I've noticed might help when creating metal surfaces for next (well, current really) gen use.

The most common problem with normalmaps for metal is that it's easy to overdo it. Depending on the engine you are using, you might not be able to get sharp, crisp normalmaps unless you use fairly large texture sheets so for the most part, the fine grainy detail will have to be left to the specular. Scratches and such do work however and usually need to be in the normalmap to make it look convincing (just keep in mind that texture compression might ruin the really fine scratches, those that are just one or two pixels wide).

Below is a compilation of different types of painted metal surfaces:

As you can see, painted metal can look very different depending on what type of paint it is and what it has been subjected to. It's important to decide what type of paint your surface has been painted with since it will affect both the normal and the specular maps. Having a history in mind when you create the textures is useful since it will help you decide how to treat it. Is it an old surface with lots of scratches, new with a few dents, so old the paint has started to flake, was it painted without being cleaned up first so you have really lumpy paint, has it been polished often? Having a history will also make the object look a bit more interesting rather than "generic metal box #6". This is of course not mandatory, it's just a mental exercise that might help when creating the textures. I should add that having a history in mind works for any kind of texturing, not just metal surfaces.

A common mistake is to create a normalmap that has a lot of noise in it but this makes the surface look more like leather/elephant hide than metal. If the texture is a 2048 instead of say, a 1024, the noise might have looked more like the grainy paint above but in most cases, it won't look like convincing metal. What I would do is to tone the noise down considerably and just keep the scratches where the paint has been scratched away to reveal the metal. What we need to keep in mind however, is that scratches that are just a few pixels wide will most likely look lumpy and not very pretty once the texure has been compressed. So keep larger scrathes, dents etc in the normalmap but be careful with the finer detail.

In addition to that, a specular with fairly high contrast can work well since paint is usually fairly matte and non-reflective (there are of course exceptions, it is as always down to what type of surface you want to mimic) whereas scratches can be very shiny since the metal surface beneath the paint shows through. Another little tweak can be to make the diffuse colder. Sometimes a texture can have a fairly warm feel, with brown and almost light orange tones as a base which can make it feel slightly wooden. By simply changing the hue on the base colour layers so they are more blue-tinted it can feel more metal-y. It's a cheap trick but it works. It is also important to tweak the specular curve of your material since the way a game engine renders the light shining on your material can have a large impact in addition to your textures.

When it comes to the specular, it's almost better to put a lot of the fine detail there rather than in the normalmap for the reasons outlined above. Some detail needs to be in the normalmap and mimicked in the specularmap, such as scratches while otheres shouldn't be in the specular at all. One such example is if you have a plain metal surface that has been dented. Again, this depends on what kind of effect you want. If it's a recent dent, there won't have been time for dirt and dust to collect so it hasn't become dull yet. If it's an old dent, it will be less shiny than the surrounding areas since it won't have been cleaned as well as the rest of the surface. And just to add to the confusion, some things should be in the specular but not the normalmap such as oily surfaces, grease marks, handprints etc. This is where the idea of having a history of the objects comes in handy again. Has the object been manhandled a lot, dropped, left to stand in an oilslick etc. All these things combine to make the surface look interesting and if you put the right detail in the right map, it will look fantastic.

Of course, metals need to reflect something so having a good reflection map is the last piece of the puzzle. Here is where it can come down more to what looks good than what it would realistically reflect. Unless your surface is very clean you can get away with using a reflection that doesn't have anything to do with the setting. As long as it looks good, that's all that matters. It's also down to memory usage. If you take a cubemap for example, it's made from six separate images so the memory usage is fairly large for just a single cubemap. If you can reuse one cubemap on many surfaces you'll save memory which can then be spent on other things, such as higher resolution textures on selected objects. As always it's a trade off between what looks good and how much memory you have left for the shiny stuff. That's also why slightly dirty, painted metals is a bit easier to cheat with, you won't get a clear image of what the reflection looks like. Clean environments are always harder to get to look good and interesting in my opinion. By the way, a very good example of succesful clean environments is Mirrors Edge, it has great usage of lighting and a very clean style. Well worth a look for the visuals alone (apart from some of the fighting sequences, it's a good game in my opinion).

Since this whole text is about metal surfaces, I have to mention Dead Space. It has a very well designed look and the way they use specular and normalmaps in that game is almost exemplary of how to do metal surfaces right. The normalmaps are clean, crisp and there is very rarely any noise in them. It is a very well made game, excellent design on pretty much all levels. Great atmosphere, lighting, texturing and a good story with good voice acting. Speical mention goes to the integrated HUD and the sound design as it is, in one word; amazing. Playing it with headphones late at night was an expereince I won't forget any time soon. As an example of Dead Space texturing (and a cheap way to get more images into this post), here are two screenshots that show their restrained normalmaps and nice use of specular. It looks a lot better in motion, and the lighting is pretty much all dynamic so you'll see some really nice effects all through the game

Until next time...

Wednesday, 23 September 2009

Helpful Scripts That Help

One thing that helps a lot when working on environments are handy scripts. I've written a couple that some of us use at work that I thought I'd share and explain a bit about how they save time. We use 3dsmax so these are all macroscripts (except one) that you can bind to a hotkey, saving lots of clicking in the ui by automating some functions and adding some that you couldn't bind to hotkeys. If you want to find more scripts for 3dsmax, Scriptspot is an awesome resource. It's been around for ages and has a huge stack of scripts for almost anything you can think of. Two scripts that I always install wherever I go are Meshtools and CsPolytools, exceptionally useful for modeling, I could live without them but it would be a sad sad world. Now on to the scripts!


Macroscripts go into the 3dsmax\ui\macroscripts folder. You can find these tools under "Urgaffel"

  • urg_backfacecull.mcr - Toggles backface culling on and off for all selected objects. Usefull when you've imported a bunch of objects and you need to flip them. Also unifies the selection so if some objects are toggled  on and some off, this is a quick way of making them all have the same setting.
  • urg_bridge.mcr - This one is pretty neat if I may say so myself. It allows you to bind the Bridge command to a hotkey and will automatically adjust to the sub-object you are using (edge/border/face) and ignore everything else. For some reason the Bridge command isn't in the hotkey list so a co worker wondered if I could write a script which I gladly did.
  • urg_centerpivot.mcr - Does pretty much what it says, it centeres the pivot on all selected objects.
  • urg_originpivot.mcr - Moves the pivot point of selected objects to the origin, 0,0,0. Can be handy when you are exporting props to a game engine and you want the pivot to be on the "ground"
  • urg_resetxconvert.mcr - Resets x-form on all selected objects and then converts them to editable poly. Saves time when you have been moving, scaling and rotating things and just want a quick reset. Serves a similar function to Mayas Freeze transform if I remember correctly.
  • urg_uvwboxmap4.mcr - Applies a 4m x 4m x 4m box mapping modifier to selected polygons and selected objects. This is very very useful when roughing out an environment and you want to slap some textures on to see what it looks like. In most cases, using a 1024 texture for 4m is ok so you get a consistent pixel density as well. With a little bit of tweaking, you can have near final quality uv mapping in no time.
Script... Script

This particular script goes into 3dsmax\scripts\startup. 
  • urg_viewportsettings.ms - The same co worker who I wrote the Bridge script for wanted this little script so that 3dsmax would always start with the same layout and viewport settings. It's a simple script that can be easily adapted to whatever a person would want layout-wise, as long as there is a command for it.
Download the scripts in a tiny zip file here

These are just a few ways that I've tried to save some time by minimizing the ammount of clicking an artist has to do to perform simple, repetitive tasks. Personally I prefer to work with hotkeys since I won't have to hunt around in menus for the tools I need. It lets me keep the focus on the model and have the tools do the work instead of me working to find the tools! I hope you enjoy using them.

The scripts are provided as is and I take no responsibility for anything unexpected that might happen. They've been used in production and we haven't encountered any problems but just in case something does go wrong, please don't sue me :)