Tuesday 15 September 2009

No Deer For A Month

Homer: "You got it, no deer for a month"
Marge: "Did you say beer or deer?"

No blog for a month, August passed by unblogged. So this is megablog ... or not, as the case may be. But there is stuff and quite a bit of it.

Also no Swiss Toni this time ... or ... ever ... again.

I'd made a whole load of stuff, props and the such. And then gone back and resorted my original ultra-low poly car because all my newer stuff really made the very old models look bloody awful, so I need to bring a few of the older stuff up to scratch so it doesn't look out of kilter. Whilst I was at it, I stuck a little scripted flashing blues and twos in there, so the emergency lights loop a consecutive red to blue on. For dramatic exaggeration I slapped a "corona" on to the flashes, just a few intersecting planes of translucent texture. Though it makes a rather nice effect. The models now also have glass and an interior.

New motors ... still lowpoly, with a base texture for the body until I do something more

I'd set about populating my initial huge level with various new stuff, as well as blocking in the portals and zones, and then testing various versions/sizes/numbers of zoning. I'd also thrown a huge load of triggers out, controlling simgrouped lights for each area, turning them on/off as required with the player's progression/backtracking, and this saved a great amount of fps. Not having submeshes rendering when out of view would do the same, and I know there has been some talk amongst the devs on this, but in the meantime this proved a good performance boosting workaround.

The stuff is your standard low-poly sofa, bed, piping, consoles, wardrobes, toilets, showers, etc. As well as a host of monitors, some with helpful information like directions, and some with various scripted flashing messages using hidemesh rather than ifl. Also thought a bit more about player related gameplay, and decided to go old school, so no recharging health and you'll be able to carry 20 ridiculously large BFGs. However none recharging health means medkits, and I don't really fancy have tonnes of them lying around. There are plenty of games which have a finite amount of these things, meaning if you're not doing well, you can soon run out of supplies in the game world, making completion of a dangerous task impossible due to low health.

Aidstation with clear and amusing instructions - in Advanced and Basic Lighting

So I came up with the cunning plan to have AidStations dotted about my game world. A bit like HL2 does, but with infinite reuses - only it takes them 60 seconds to recharge. Fine if you're hurt and have to run back/forwards away from the danger to get healed, but rather more tense if you're being chased by a big beastie and are trying to avoid getting hit whilst the timer ticks down to recharge. I'd had a look at how the "heal" function in stock T3D worked, and it's really more of an incremental health increase, I fancied something a bit fast and made a simple setdamagelevel call during onCollision. Run into an AidStation when wounded and get up to 60 health back, the blue button turns amber and depresses, the AidStation is unuseable for 60 seconds. Plus it's got the instructions written on it, so the player will understand what is going on in-game even though they didn't read the readme.txt manual.

So, I'd pretty much populated my initial level, when pureLight gets released, which makes sticking stuff in a whole lot easier, and also makes Basic Lighting so much nicer. Not that we were going to buy it initially, T3D was this years' major purchase, and I'd set the rest of my cash aside to pursue the great British crusade of trying to kill myself with booze. But after trying the demo - and working through Blender's exporting issues - I was pretty damn impressed.

Hence no deer for a month ... or probably longer. Having said that we haven't got off to an auspicious start and there was much deer last week due to the English soccer team qualifying for next year's World Cup.

But we have got off to an auspicious start with pureLight, which is pureWin.

Basic Lighting with toneMaps now looks just like Advanced Lighting minus spec/normals, which is pretty damn excellent. To dip my toe, I have exported the first area of my big level, filled it out in Blender, minus any dynamic objects such as flashing screens etc which aren't in the screenshots - though I have placed the occaissonal amber or blue ambient glow on the lightmaps to show where they're going.

So the key for the screenshots is Advanced Lighting as the top image with Basic Lighting underneath. I divided the scene into just a few meshes, props/ablusions (all down one end for culling), props/area1 (almost everything which isn't wall/floor), props/bedroom (key point, requires extra stuff), emissive matierals (glowing numbers), translucent double sided materials (scrolling, floating console screens), and the main area geometry (everything you walk around on).

Then I slapped in a few lights, mimicking the illumination in the lightmaps, but also in Advanced Lighting it gets teh specular and normal maps to work. And it's this extra specular effect which makes the Advanced Lighting screenies look more 3D with the normals, and also a little brighter than the Basic Lighting, which is just using the lightmaps for geometry illumination. Of course anything without a lightmap (dynamic object like the player), still get the pointlights of the game engine shining on to them to provide illumination.

The ability to export an entire scene from Blender and have it arrive in the same XYZ in T3D with lightmaps is fantastic, no more messing around trying to line things up in the editor, no more worry about an absence of shadows, and objects looking too stuck on one another. I'm hardly going for realisim, but the painterly lighting effect that pureLight gives are opposingly subtle, dramatic and artistic.

It was also nice of the guys at PL to send me a better ASE plugin for Blender. I haven't had time to see what difference the newest PL version has with the Blender's terrible attempts to manage the Collada format, but hopefully Blender2.5 will address some of these.