Feature: Mesh-Batching
In my last post, which I admit was a while ago (this is because I've been adding loads of new features to Unholy Mess), I was ranting on about Mesh-Batching.
Well since that post, I've integrated Azzaman's Frustum detection and my Bounding Volume Hierarchy code, which means non-visiable meshes are actually not draw, which inadvertantly boosts the total number of meshes that you can play with in a scene to about 100 thousand, which is actually absolutely insane.
So as a result I knocked togeather a little video of an asteroid field, with some depth of field applied (DoF is very expensive, my little laptop cries and slows down to 30FPS), I also did a quick flocking algorithm and stuck some drones in to help give the scene a sense of scale, at which point I removed the DoF. Everything is happily rendered in full HDR !
Anyways, enjoy.
Friday, 21 March 2008
Project Update: Solar Flux
Sunday, 16 March 2008
Project Update: Solar Flux
Feature: Mesh-Batching
It's not as good as mesh instancing, but it's certainly quicker and easier to implement than mesh instancing.
On the 8th of april 2008, Solar Flux will be mock pitched, and our prototype demo shown to members of Team 17, so these last few weeks certainly are requiring that some corners be cut, so we can get our little presentation togeather. As a result, one of the features which we will be handling at a later date is mesh instancing, there just isn't time to get all the features into the game before the 8th of april. Without any form of instanced mesh rendering, its time to say goodbye to the idea of 10,000 asteroids on screen and approch the problem in a more pragmatic manner.
Thusly I've begun implementing a batch rendering technique, which is certainly adequete for now, on my meager laptop it begins to drop below 60FPS with 4000 meshes being draw, which is quite an improvement over the non-batched rendering result of about 800.
While 4000 meshes are available to be batched, it's more likely that the technique will only at most be used on 1000 meshes at this stage, but atleast we can render 1000 asteroids now, before that would have been a mere pipedream... Oh and did I mention that they're all normal mapped?
Friday, 29 February 2008
Project Update: Solar Flux
Feature: R.U.S.T. & Unholy Mess
Well I've done pleanty today, or should I say yesturday, well... It's still thursday for me in my head.
Anyways, I've fixed a bunch of bugs, highly exciting stuff honestly! It's quite frustrating if anything, because bug fixes don't always count for much outside of stability of the software... Well at times that is true, certain bug fixes actually get something new working.
As far as feature updates go, R.U.S.T. has an axis manipulation tool, which can be kinda handy, and now the material colouring selection is thankfully flawless.
Unholy Mess is a tool I haven't yet spoken about, it's basically a particle editing suite which allows for a user to generate and test particle effect settings before implementation in engine.
Heh, It's called Unholy Mess because it's initial incarnation was code wise, my idea of an absolute unholy mess. Infact it was so full of hacks I'm surprised it ran.
Anyways... Not very exciting I know, just bug fixes... Although, they should be finished at some point next week if things go well, so I shall profile them both in more depth when the time comes.
Tuesday, 26 February 2008
Project Update: Solar Flux
Feature: The Power of the Othala Engine Material System.
The Othala Engine boast a very capible and powerful material system which can be manipulated through the use of the R.U.S.T. tool which has been designed for use with the Othala Engine, materials can also be hand scripted and providing that the artwork is decent the results which can be yeilded from the engine I believe are very impressive.
It is worth noting that all the initial shader were written by the one and only Micheal Short. I have extended these base shaders to include extra effects. Mike has also written a bunch of post-processing effects which I will cover at a later date.
So on with the show.
We begin with the most basic shader avail to anyone when using the Othala Engine.
Ambient Colouring:
Textured Ambient Colouring:
This allows for a single texture to be placed onto a mesh. Such techniques may seem somewhat useless, but if you observe the first picture you will see that the mesh has subsections, and different effects can be placed onto each subsection, ambient textured colouring is especially useful with HDR for faking light emission.
Next we have the most basic complete lighting model.
Phong Based Per Pixel Lighting:

This is a basic method of treating a surface as if it is uniformly shiney. Note that the red centre isn't reflecting light, that is due to that part of the mesh being rendered using Textured Ambient Colouring.
Ashikhmin Specular:

Normal Mapping:

Normal mapping is fairly common in games nowadays, it allows for fine control to be place over how the surface reacts with the lighting, on a per pixel level. This requires a colour map and a normal map to be generated.
Phong based lighting with Specular Mapping:
By adding the specular map we can dictate how the light interacts with a surface. Nice result I think.
Ashikhmin Specular with Specular Mapping:
Normal Mapping With Specular Mapping:
When we add HDR to the scene as you would expect for such a game, the magic really begins to come alive.
Adding a new shader to the renderer is very straight forwards, so expect to see more material processes as time progresses.
And here's a video of all the effects rendered in full HDR. Though as I reminder I knocked the materials togeather in next to no time by hand, and didn't tweak the HDR settings, so some of them don't look anywhere near as good as they could.
Monday, 25 February 2008
Project Update: Solar Flux
Solar Flux: Othala Game Engine & Gebo Physics Engine
I've recently started the Bounding Volume Heirarchy for Solar flux. If you don't know a BVH is basically a Heirarchy tree which stores well pretty much whatever you want, withing a bunch of bounding volumes.
Building the generic bones was rather easy, and I'm impressed with the results this far, traversing the BVH is amazingly quick, I ran a few tests, and using a single thread it could traverse 80,000 nodes in 0.05 seconds, which considiering I haven't optermised it yet, I must say that's a fairly impressive number, and better still when rendering 100, 1500 polygon meshes using normal mapping and ambient colouring it only took 0.005 seconds.
I also finished up parts of the renderer, I've introduces effect technique manipulation and some new lighting methods. While the basic renderer is finished so to speak, you merely need to supply it with a mesh and something will render, that rendering usually takes place using predefined material and effect settings. I've added the ability to render meshes with external techniques and effects as well, so the engine doesn't require each mesh to have static effects, which isn't the case anyway, its purely for render speed that the extra memory is spent.
Solar Flux: R.U.S.T.
R.U.S.T. or The "Really Useful Shader Tool", is a basic material editor which is being built for use with the engine.
I switched out the method of material colouring assignment, so it uses a Colour Swatch, this should dramatically speed up the amount of time it takes to build a material for meshes. I also fixed some generic bugs lurking in the system.
R.U.S.T. still requires alot of work, and some of those tasks include Axis offsetting, Lighting manipulation, Null Correction and Particle Effect Assignment.
Saturday, 23 February 2008
Canalside Studios: Softography
So here are some projects I worked on at Canalside Studios, ahem, and a horrible year it was too...
G3 - Lead Programmer
G3 or Gravitas as it was often refered to inhouse was a Canalside Studios project which was bizzare to say the least. The only way to explain it, is as follows:
Take one cube, add some tetris style block upon its surface, add some bizzare characters, give them suction devices and send them off running after a ball in an attempt to suck the ball up and then shoot it at a target.
The official line would be that it was "cancelled due to lack of resources". Which is true enough, the project always needed more people than it had, the following video is a snippet of the generic features of the engine.
Status: Unfinished & Cancelled, percieved as a R&D project.
Yo Ho Kablammo! - Additional Programmer/Research and Development
The premise of "Yo Ho Kablammo!" is very simple.
Each player controls a pirate ship in a play arena, the premise is to score more points than all the other players, the player with the most points wins.
Players gain points by collecting mines, treasure, and blowing other players ships out of the water.The uniqueness of Yo Ho Kablammo! Is that when the player collects a mine, it is primed to the players colour, any other player which hits the mine then takes some damage as a result, the mines were thrown from a central island by a monkey.
A very successful project, it came second in the 2007 XNA Dream Build Play compitition, held by Microsoft in Seattle at their Gamefest conferance. In coming second in the compitition the project was offered a publishing contract.
Status: The game is still in production by core staff at Canalside Studios, but is due for release on the X-BOX Live! Arcade, at some point in the future.
Hexothermic - 2D Engine
A very simple puzzle game where the player attempts to cause a chain reaction and destroy all the atoms on screen.
The player is limited by the number of clicks which they can spend to change the state of the atoms, the atoms exited in 5 states, after the final state they explode sending out particles which are added onto the surrounding atoms, by causing a chain reaction all the particles on screen could be disposed of.
http://video.google.com/videoplay?docid=-8083171989016147682&hl=en-GB
Status: Unreleased.

