Monday, 16 January 2012

Physics

There are 1002 balls in that picture. Feel free to count, I checked.
Revision was *so* interesting that I took some time out to make that. Still not handling rotation, input or meshes yet (hence spheres, only bouncing vertically).

Next week's post will probably be non-existent, given that I will have 4 exams in as many days.

Charlie

Monday, 9 January 2012

One Year

It's been about a year now since I started blogging every week - I'm not sure yet, but it might be a good time to take a break, at least until exams are over.

In this time, I've:

  • Applied to University
  • All but finished a 3D printer
  • Learned about, written the sframework and renderer for a game engine
  • Taken my AS-level exams and the DT A2 exam
  • Torn down and bought the parts for an electric moped
  • Helped shoot much of Yaseen's film
  • Obtained the electronics and most of the physical parts for the quadrotor

So it's been pretty productive. Maybe this year I'll actually finish some more of these projects though!
Charlie

Monday, 2 January 2012

Skeletons loaded!

So, I worked on skeletal animation and audio with varying degrees of success. Below is my second attempt (the intended model is shown somewhere below - it's a Hellknight from Doom):

Not as beefy as the designers intended...?

Which, whilst bad, isn't as awful as my first attempt:

Aforementioned first attempt. Don't laugh...

Whilst it was looking almost humanoid, clearly something wasn't quite right. Since an unfortunate number of points were getting crushed towards the centre, and the head was the worst-affected, I thought it might be due to my rotation code. After disabling that and changing the direction in which the model is "wound" (clockwise vs anti-clockwise winding of points on the faces), I had the following:

Ugly but better...

Finally realising a couple of pathetically silly mistakes (the transformed points being in the order w,x,y,z but instead using w, x,y and throwing away the z component, explaining the x-crushing, and doing the multiplications in reverse order), I was able to get the following:

Success...
The edges of each skeleton are fuzzed because, like nearly everything, my anti-aliasing is now in a buggy, ghostly half-finished state (which is good - bug-hunting is much more fun and satisfying than writing from scratch, and jaggies are worse than the ghosting). The balls in the scenes (around the feet) are some more testing code I couldn't be bothered to switch off - they're sound emitters, moving around the scene emitting sound, as you might expect a sound emitter to do. I'm not going to spend any more time on skeletons until time management is done better, so that it'll know what frame and sub-frame of animation to play.

I've also changed how lighting attenuation functions - now, an artist can define how lights fall off with distance. The next thing on the list is physics - I've had some basic motion working in the engine but it's still very, very broken at the moment.

Progress list: 

Still not started ,or architected terribly and completely broken
  • Physics/game logic/scene management/trees
  • Shadowing
  • Skybox and Water shaders.
  • HUD
  • Environment mapping
Partially broken or significant work needed:
  • Audio, particularly spatial and streaming
  • Speed of lighting, especially stencilling ops - avoid them using FragCoord, minimise calculations wherever possible.
  • Skeleton interpolation
  • Intersection
  • Resource/update/download/network management
To improve:
  • Antialiasing
  • Time manager
  • Light equation/materials/BDRF used 
  • Input and key binding (ties in with game logic)
To touch up:
  • Model Format/Optimisation
Of those, gameplay, physics, skeleton and sound are all that still need work before the game is playable for development purposes. If people are willing to play audio-less with a ball for a character, it's almost playable right now - as soon as I sort the physics problems I've been having, I'll have a controllable ball interacting with the world.

Charlie