Thursday 28 July 2011

New Cols


I've tweaked the colours tonight. They are brighter, and more complementing. They just go together better really. There are other lighting and shading effects I want to play with, but getting the base colours right was fairly high on the list.

Wednesday 27 July 2011

Sprint 16 Complete... 17 is underway


I can't really tell if 16 is complete or not. Its got an (NPE) crash, but that wasn't found until I said 'finished' so fixing the thing is technically the first part of Sprint 17. It feels horribly wrong to say 16 is complete now I know there is a bug though.

Either way, its heads-down on 16, which is checking/asserting some pointers but I don't have a repro so just can't be sure.

Monday 25 July 2011

The edge of the world...



This is what the edge of the world looks like. The green area was created first, with a Hills world generator, and the grexbox was filled in later after I had explored an area.

I was testing out the new Jetpack, which has an added 'hover' option - this allows you to fly around your constructions with ease. Its almost cheating though, there was something very real about building scaffolding to climb as you place a new row of bricks. Time will tell if its a good thing to have of if it'll fall by the wayside.

Sunday 24 July 2011

New rules

Here we can see the old baseplate edge issue has been squashed. Bricks can span between two baseplates now, which means your constructions can be grander and more detailed than ever before.

I've no idea how well it works, but the initial "this is how to do it" line has been crossed.

There are still CPU spikes when you walk around as baseplates are streamed in and out of memory - and actually they are worse now as overlapping bricks are resolved at the same time.

Building between baseplates was the main task in this sprint, so I'm going to hit the small items and have the next release ready to go as soon as I can.

Thursday 21 July 2011

One of these memory allocations is not like the other.


ChunkRenderer * Alpha = new ChunkRenderer_Debug( NULL );

ChunkRendererPtr Beta = new ChunkRenderer_Debug( NULL );

ChunkRendererPtr Charlie ( new ChunkRenderer_Debug( NULL ) );

Only one of those three is wrong, but only one of those three is right.

A couple of builders have been busy




Sprint 16 on its way


Both on its way and well underway.

I've 99% fixed the crash introduced in 15. It was memory leak, schoolboy error I know... Actually it was two memory leaks. One caused by me relying on the garbage collection sweep working, and the other I'm not so sure about. A boost::shared_ptr<> looks like the only reference to my object and that reference is cleared... but the dtor isn't called. In this instance I could 'just simply' not use a shared_ptr and the delete operator would do fine - but I want to get to the bottom of it.

As for the GC... Well, I don't have any GC which kind of explains why it failed. That was an easy fix.

Second to this, building between baseplates is in progress. I can safely add/remove bricks that span two or more baseplates. I think. They don't stream in and out of memory very cleanly, and phantom invisible or intangible bricks are sometimes the result as you move through the world.
However, the fix is to cleanly stitch together the two baseplates - accounting for the bricks that span - and all should be well.

Lastly, aside from a couple of minor points, the Jetpack is getting a little tweak based on some use and feedback. Its getting a cruise-control so you can hover at a constant height. I went through all sorts of physics models for it, and whether or not it should have some sort of limited fuel, propellant etc.. But right now its just going to be pretty much free, unrestricted flight.

Sunday 17 July 2011

Sprint 15 Complete

Sprint 15 is working, folks.
Here is the outline:

Fixed Framebuffer startup issue
Alt-Tab is working
Pressing Enter Twice on the main menu will no longer break the world load
A rare startup (NPE) crash has been fixed
Improved WalkRun movement controller
New Jump/Jetpack
Added config option for spherifynormals and clientradius
Fixed the 'invisible brick' startup bug.

*Very* pleased its over. Time to get cracking on 16.

The wise man knows he is a fool.


So I was trying to be clever, including supplying twizzle vector operators like Vector.XZY() that returns a transformed vector or Vector.XZX(). These give you some clever(ish) results for noise generation, geometry transforms and lighting. I was playing with them - a while ago now - and they've always just 'been there'... Until a typo, and now they have been banished. Causes a REALLY weird physics bug, getting the wrong transform from a matrix and I'm glad to be shot of it.

Secondly, that means I'm close to finishing Sprint 15. Really close.

Lastly - something I can't work on now even though I'm excited about it. After spending breakfast staring at a couple of minifigs from Collection #4, I worked out how to write the brick shader I was thinking of. Sometime in the past twenty years, the plastic used for (at least) minifig legs and probably all bricks has changed. Anybody notice the difference?
On reflection, I really like the new plastic. Its not fully opaque, which means the edges of bricks let a *tiny* amount of light through. This gives a sharp, crisp well defined edge that is ever so slightly lighter than the rest of the brick as if the edge is highlighted.

Its a very nice visual effect, and something that I couldn't put my finger on for ages. I really wanted that crisp edge definition but didn't want the geometry overhead of adding a bevel. In a bright room, its almost emissive as the edge between two faces not hit by the dominant directional light is still brighter than either face in a way that couldn't be achieved with a bevel.

I'd already decided to try adding a bevel using a normal map instead of geometry, but if I can add this effect too then I'll be very happy. Take a close look at an old and a new brick, you'll see what I mean.





Saturday 2 July 2011

Sprint 14 Complete

Sprint 14, which contained mainly render optimisations, is complete. Its difficult to hand-on-heart say its totally done but I'm content with the results for now. Vertex Transforms are down, the draw speed it way up, and I've added the first significant command line switches and config options - more will appear now the code to read them is in place.

There are a couple of bugs to wrap up the Pre-Prototype so sprint 15 will be a series of consolidation tasks before mainline features-first development continues. Signing off sprint 14 with a couple of known bugs feels pretty low, but they are the highest priority item in sprint 15 and I'll hit those first.

Other than ensuring stability, I haven't got much planned for sprint 15. There are some physics improvements to make so it'll be a good time to roll those in.