Game Development Community

dev|Pro Game Development Curriculum

No Deer for a Month

by Steve Acaster · 09/15/2009 (6:32 pm) · 12 comments

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.

farm4.static.flickr.com/3481/3923305065_15ba55475a_o.jpg
New motors ... 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 setmeshhidden 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.

farm3.static.flickr.com/2670/3923240911_b846d283be_b.jpg
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 time based 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.

function aidstationdata::onCollision(%this,%obj,%col)
{
	if(isObject(%obj))
		{
			if (%col.getClassName() $= "Player" && %obj.inuse==0)
						{   
								if (%col.getDamageLevel() != 0 && %col.getState() !$= "Dead")
									{
									//%col.applyRepair(50);
									%maxheal = 60;
									%pain = %col.getdamagelevel();
									%heal = %pain - %maxheal;
									%col.setdamagelevel(%heal);
									%col.updateHealth();
									%obj.inuse = 1;
									%obj.setmeshhidden(button, 1);
									%this.schedule(60000,aidstart, %obj);
										%healing = %pain -%maxheal;
										%healed = %healing + %maxheal;
										if(%healed > %maxheal)
										{
										%healed=%maxheal;
										}
										echo(%healed @ "/" @ %maxheal @ " healed at AidStation");
									}
								else
									{
									//chill
									echo("AidStation not useable now");
									}
						}
					else
						{
						//chill
						echo("AidStation not useable now");
						}
		}

}


farm4.static.flickr.com/3465/3923240901_da0030daa5_o.jpg
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 year's 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 bloody impressed. Just watching it bake is a thing of beauty.

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.

farm4.static.flickr.com/3438/3923240905_592ac11fd7_o.jpg
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).

farm3.static.flickr.com/2613/3923240893_29359f716c_o.jpg
Then I slapped in a few lights, mimicking the illumination in the lightmaps, but also in Advanced Lighting it gets the 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.

farm4.static.flickr.com/3516/3923240883_6ac6eb367e_o.jpg
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 Thomas 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.

#1
09/15/2009 (7:43 pm)
Those screens look awesome.
#2
09/15/2009 (7:57 pm)
Wow, great progress, Steve. I was wondering what was up with you. I am way back on blogging myself. I even became an amethyst since my last one, see? And that's happened a while ago.

Love the AidStation design! :) I also think you've made an outstanding work making AL and BL look much the same. I guess this is at least partially thanks to pureLight. pureLight is my holy grail.. it always makes me remember how badly broke I am. :)

Btw.. I pretty much managed to forget about Toni, and have been leading a happy life ever since. Thanks for bringing him up once again..
#3
09/15/2009 (8:06 pm)
Quote:
pureLight is my holy grail.. it always makes me remember how badly broke I am. :)
Hence my sudden need for sobriety. It really does allow basic lighting to look great. Getting around 300fps in the BL shots.

Really, I don't know how you guys manage to do all this development and hold down a real life too!

Amused you remembered amethyst from the dulux paint colour charts. :)

Apologies for even briefly mentioning Toni, I had to check my last blog to see where I'd progressed to and ... uh ... there he was ... grinning at me.
#4
09/15/2009 (8:15 pm)
Awesome stuff, Rock on Steve!

One Bloke ... In His Bedroom ... Trying To Make Computer Games ...

I noticed you said "we"! Got Team?
#5
09/15/2009 (8:18 pm)
Good Blog Steve!

I actually dont mind the Basic Lighting at all with the PureLight Tonemaps, there are some areas that the Advanced Lighting does better...

Specifically SpecMaps and Darker areas, but other then that I'm impressed with the Basic Lighting and ToneMaps combined.

There are also a couple shots that I like the Basic Lighting better as well.

All-in-all, I personally would use Basic Lighting for the increase in performance based on the shots.
#6
09/15/2009 (8:22 pm)
@OmegaDog
Nah ... I just have delusions of grandeur and refer to myself in 3rd person ... just like the Queen.
#7
09/15/2009 (8:24 pm)
ROFL...
#8
09/15/2009 (8:44 pm)
ya, rofl
#9
09/15/2009 (10:18 pm)
Cool, good stuff :)
#10
09/16/2009 (1:33 am)
Looks great! And thanks for saying no to Toni!

I like the AidStation idea. I'm just so used to the Tribes style health over time thing that it's taken me until now to understand what Matt F was saying about instant health kits ;)

One of these days I would love to get half as much done -- so keep at it and we'll all live vicariously :D
#11
09/16/2009 (12:03 pm)
Coulden't help but noticing....

AID STATION:
1. Press Button
2. ???????
3. Profit!

If button is depressed,
please wait 60 seconds
For Service.

XD

Toni may be gone... But the ghost will still haunt your blogs... ;)
#12
09/16/2009 (12:41 pm)
Homer: No beer, no Tv make homer something something....

Marge: Crazy?

Homer: Dont Mind if I DO!

sorry couldnt help the inane simpsons quote, looking really awesome steve though just an observation but i think it would be cool if instead of returning the aid station is unavailable perhaps it would be better to tell the player how much time is left until the aid station is back online.