Dev Blog

Level generation


Time to start putting all these bits together, the prefab editor is coming along nicely and we need to start thinking about how those prefabs join together to procedurally generate levels.

The levels have a 'widget' that is placed at the join points for each prefab, this gives hints to the generator where to join the next prefab on, then its a simple bounds check and rotation to connect bits of the level together.

Oh yeah, probably need to stop/limit the amount of prefabs to join at some point, otherwise we just keep going in one direction until we hit the max prefabs limit. Ooops

After adding a branch limit, might as well 'cap' off the end of a branch if there is room.

Finally, the editor now supports setting the bounding box for the prefab by hand, so that we can tighten the bounds to the join points, otherwise bits of the model like the rocks under a platform could make it hard to join a section onto anything else.

Still some possible bugs lurking around but its now building some fairly interesting levels, next we need to build a lot more prefabs =D

Player movement / animation


Now that things look fairly nice, how about we actually try to make some progress on the actual game? Using the physics collision and picking system from the editor we can throw one of the creatures in there and have him run around a bit =D

He has a little trouble climbing steep stairs but not a bad start at all.

And some animation states for good measure... ROOOAARRR!!

Editor Part 10


Now that we've got a fancy Image Based lighting setup, lets update the editor and try out some skyboxes..

Image Based Lighting / Materials


Time to dive back into some rendering tech.

Image Based Lighting, a great technique for cheating. We all know GPUs are incredibly powerful right? Well they still just aren't powerful enough so we'll have to do some more approximation cheats again.

Take a nice skybox, blur the crap out of it (technical term) and project it back into your scene and based on your nice BRDF material system you can apply some of the sweet skybox colour and get some pretty decent looking lighting quite cheap.

Then when you realise you aren't using smooth normals on your models, it'll look a little better :P

Finally add a smattering of SSAO and voila, not bad.

Editor Part 8/9 - UI Sliders!


The UI element train keeps on barrelling down the track, hello UI sliders, so simple, so obviously needed. The power!

And a new bit of level to play around with, a town area maybe?

Editor Part 4/5/6/7


Yeah yeah, fell behind a bit on the dev log bit but lets move past that eh?

Lots more work done on the editor. Placing lights, being able to "pick" them and move them around, aww yiss.

Drag selection for all the entities..

Rotating around each axis and cloning! All things that QuakeEd had 20 years ago :P

Oh my, looks like some proper(-ish) ui elements and an example of a level layout.

Editor Part 3


Lights are now movable, wasn't too bad. There is now the concept of 'helper' objects you can attach to a light so you can represent a light with some basic geometry and have a picking target.

The next issue will be to work out more finer grained picking, the current picking uses AABBs for the models, so if a model has a tall point, the top of the AABB is pretty high. This causes issues with trying to pick objects inside its bounds.

The question is whether to build some kind of picking stack to allow you to move further down the targets hit by the ray, or wait until the physics engine is plugged in and I have better collision detection on the models.

Editor Part 2


The slow plod towards a usable editor continues, look at all the movement and stuff! You can even throw random lights in at the cameras position, not that you can move or even delete them yet, oh yeah because I didn't think about having some kind of picking for lights, because who needs that eh?

Dithering About


The great graphics lie continues! You put all this effort into rendering stuff in high dynamic range, funky tone-mapping, fancy bloom effects and all that jazz and when it comes down to it, you have to smash all that quality into a 8-bit per component image for your monitor to display. The real victim of this bit-depth massacre is our poor flat shaded gradients, just look at that horrible banding -

Turns out, just like everything else in graphics rendering, you can cheat! Also turns out that dithering is still a thing :P

By applying just a smidge of noise to each pixel after your gamma correction can work wonders.

Keeping warm


There comes a time in every little renderers life when they just want to savagely waste CPU and GPU time by throwing hundreds of completely throw away sprites on the screen. Today is that day, break out the marshmellows.