Thursday, 7 March 2013

Thursday's Bits

Usual Bits and Bobs

As you might expect, emails and AGK tweaks kept the better part of the day pretty occupied. The evening was spent fiddling with networking cables as a recent power surge took out some of my kit. The later evening I started my presentation slides for GDC (only 20 minutes but I want to get it written and rehearsed before the big day).  Nothing to report, no bog eyed monsters, no needful things.

Midnight Strikes

As luck would have it, all my tweaks and tinkers finished squarely at 11:55PM which means I started my blog a few minutes before I was due to do a hew hours of Reloaded. My mission this night is to formalise the new object placement system in the editor (so I can draw a near infinite number of objects in the scene) and then once I have that, I can copy the globals, types and arrays over to a prototype to get the module/subroutine for the real time light mapping synced with it. The idea is that I can continue working on the light mapper using a fast prototype (i..e fast to compile) and only when it is perfect I can drop it into the editor, and of course drop it in from time to time to ensure it still syncs well.

This practise of making small prototypes that compile fast and are easy to navigate will be used for each of the new 'features' that will be going into Reloaded from scene occlusion through to massive explosions.

A mini-milestone for me will be the editor showing the entire scene from top down view without any culling of the world (no more shroud) and having it drop in baked light maps as I watch. Move a light, and just like magic have the light map do it's thing. And then to drop down and run around it, even as the light mapping is still being crunched.  Can I get it done for the weekend, who knows. Only one way to find out...

01:22AM : Boy, Dat's Fast!

Apart from battling with a two and a half minute wait each time I compile my source code, I have been enjoying myself. I thought I would interject my most recent buzz, when I stripped out all the 'static object building' of the old previewer code from the editor and just leapt directly into the scene as it was being edited.

Sure there are bits of editor graphic all over the place, but the speed was intense. I thought it was fast before, but this version as soon as you even think of touching the button it runs the test mode.  THAT is what I want to see in the final product.

I'm just about to move the editor object range to the end (around 70000 object indices in) and remove the shroud system, and then see what I have. The editor divides the world into layers for easier top down editing and I am keeping that as it's very cool. I will need to show those higher/lower layers of course in test mode so that's something to consider. I want to try and avoid looping through the entire set of scene objects each cycle, but I guess doing it once during set-up and clean-up is okay.

02:50AM : Look Ma, No Shroud!

I have now removed and forever banned the shroud system in the editor, so the entire screen is filled with the real objects and entities now, no longer will you see parts of the level represented by blue print graphics.

Another pretty cool tweak was removing the editor markers from the test level mode which suddenly made my little wonder all the more exciting. We're getting to the point now where we can 'almost' imagine we are running through the test game scenario you used to have to wait 5 minutes to play. As I am not adjusting any assets between editing and playing, the test level button remains completely instantaneous.  Just what we wanted.

The next task will be to move a part of this 'placing objects in the editor' behaviour into my prototype so I can sync the light mapping code with it. One obstacle I found was that the editor uses object instances (not clones) to represent the many objects in the scene. This is done for performance. The road block is that you cannot light map an instanced object (as it is really just a straight copy of it's parent).  My idea is to keep the instancing, but when the light hits it for light mapping, it turns it to a clone at that point. This way we can paint in the editor very fast (instanced objects), and the light mapping deals with small groups of objects as the light hits them (in batches I think). In theory, you will be able to paint quickly, the light mapped 'clone' objects follow seconds later and delete it also immediate of course. By maintaining slick fast controls for the user, and lighting coming in secondary, I can pretty much keep a good chunk of the code that is already in the engine.

Signing Off

Not going to stay up too late tonight as I am sure Friday will be a big 'close things down' day, and Friday night I will be jumping over to the Perceptual Computing universe to see if I can get voice conferencing, vertex transfer and a new board room graphic implemented in time for my next blog.  The critical goal is to turn the proto demo into a proto app, which means giving it a use. I have all the tools and code to hand, so it's just a case of doing the 'code' thing until it starts to look something like.

1 comment: