flipCode - Tech File - Alex Champandard [an error occurred while processing this directive]
Alex Champandard
Click the name for some bio info

E-Mail: alex@base-sixteen.com



   01/05/2002, A.I., Websites and Voxels


Once again I find myself apologising for the lack of updates, but this time not only for myself but for the rest of us techfile owners who haven't updated since last June! Yes, it's a pitiful effort, as a techfile should really be considered a commitment... but then again, it's not quite as bad as neglecting an entire column! (Right, enough cheap digs... I hope those concerned get the point ;)

Despite my lack of updates, I've not been completely dead to the world. For those of you that haven't been following the news lately, I've started a brand new site dedicated to Artificial Intelligence. I've also finished a big step in my academic curriculum, started working on more A.I. oriented projects, and done a bit of voxel stuff. I'll talk more about all this in reverse chronological order, since the latter is probably going to interest more of you.

Voxel Landscapes and Adaptive Refinement


A few months ago, prompted by my discovery of a fascinating new area, I think I reached a certain lassitude with computer graphics. I'd been doing that stuff for quite a bit, and despite the challenges, it only seemed to be more of the same. Polygons above all just oozed that "It's already been done before" factor, or rather more "There's nothing new to see here, move along!"

That said, voxels still seem to have my interest spiked, probably because they're so refreshingly different, and there's very little stuff out there about them. I've been dreaming up an adaptive refinement scheme over the past year, and I've finally found time to sit down and code it. To my surprise, it only took me a couple days to get it polished and optimised algorithmically... I guess the long premeditation phase paid off! It's a nice feeling to be able to sit down and just do it, which makes me regret my good old days of demomaking even more! Also, the low-level aspect of the software rendering, using palletised textures, dealing with dithering myself was an extremely satisfying feeling.

I've also radically changed the rendering phase, in order to take advantage of my new contribution to the field (pardon the pun ;) of voxel landscape engines. Sub-voxel accuracy allows complete elimination of the famous popping effect. It's based on sub-pixel and sub-texel accuracy, but enhanced to deal with the voxel grid representation. Basically, I don't interpolate along the ray anymore, but use the major axis and find all the line's intersections with the voxel grid. This is slightly slower, but the hierarchical scan-culling algorithm I'm working on should make all this worthwhile.

Adaptive Voxel Refinement

The adaptive refinement works in a top down fashion. Slices of 16 pixels wide are first scanned, and areas with strong changes are refined recursively according to the detail threshold. This allows areas up front to be rendered as large interpolated spans, whereas the high detail distant mountains are rendered as vertical lines (with cache optimisations of course ;)

Top Down View of the Ray Casting

The engine is still 4 DOF, but I've coded everything with 6 DOF in mind. The ray casting code is flexible enough to be plugged directly into a 6 DOF adaptive rendering scheme, with the sub-voxel accuracy and everything! I'm not sure when I'll get round to that, since this version of the engine needs polishing a bit more beforehand. No doubt I'll ponder about it for a year beforehand ;)

Higher Education


I've finished my third year, and from an objective point of view, you could say I did well. However, I was disappointed... which is difficult to explain without sounding like an arrogant prick, so I'll just brush over it. That said, it's also relevant for the "Should I go to University?" thread that was running in the forums a few weeks ago.

The work I was given in my course was sometimes interesting (mostly patronisingly trivial practical computer knowledge ;), partly challenging (heavy maths modules), but rarely ever got my full attention (due to graphics, flipCode and so many other things going on :) To that extent, I don't believe I really deserved some of my high marks in those modules. Together with that, I poured my heart into some of the courses, and not only enjoyed them but also understood the subjects in a thorough practical fashion (hardware project: difficult but fun, real-time system design). But, a combination of bad luck and complete randomness made me scrape the bottom. A reason why I was miffed and baffled.

With me being so cynical about all this, I doubt my contribution to the discussion of going to University/College will be of much use. But, I hope some will welcome my experience... take the following based on a self-taught programmer, who's been involved in computers for 3/4 years.

  • Don't expect to get a job in the games industry on completion of your course, companies are looking for practical experience.
  • Do avoid the pure computer games programming courses: academics teaching practical stuff is a recipe for disaster.
  • Don't go to University to perfect one of your computer skills, get a book! Cheaper, clearer and less patronising.
  • Do expect to pay a lot of money and spend a lot of time for a stamp on your CV.
  • Don't forget that University is all about the people, join in and enjoy.
  • Do combine computer science with something else, maths, physics, electronics... It's good experience, more rewarding.
  • Don't expect any women on your course.
  • Do try to welcome the academic approach, and blend it into your practical approach.
  • Don't expect to learn anything from lectures, boredom and vegetating lecturers get in the way.


Hope that helps!

Artificial Intelligence


Well, I've been swept off my feet by a new topic. I welcome the interest and change. My life focus recently has been on revolutionising bot navigation, see some screenshots of my work over on my Bot AI page. There's still a bit to be done, but the level learning part of the code is bullet proof... I like working with the Q2 engine as a development platform, but having a constant interface from C to C++ is a hassle. I can't wait for Doom2k! I'm hoping to move onto higher level learning very soon, once I have written up the navigation part of my thesis.

My new AI site has also been keeping me busy. I really enjoy the process of improving the site graphically as well as the interface. Writing the content is also fun, but sticking to one article a week is quite difficult. I've been at most 4 days late... eek! But hey, it's all good ;)

Anyway, Happy New Year, and feel free to contact me if you want a good discussion!





  • 01/05/2002 - A.I., Websites and Voxels
  • 03/05/2001 - State Of The Art Character Animation
  • 01/24/2001 - Alternate Programming Languages
  • 01/11/2001 - The Sound Of Silence
  • 09/20/2000 - Engine prototypes, yet more landscape LOD and hard body physics
  • 07/13/2000 - Good Practice (TM)
  • 06/13/2000 - Revision Week Indeed
  • 04/11/2000 - Escape From Inactivity ;)
  • 01/05/2000 - Generic Shaders
  • 12/03/1999 - Start Of Term: Lots Of Good Intensions :)
  • 10/06/1999 - Dynamic LOD, Landscape Generation and much more...
  • 09/22/1999 - Water Contest Entry: Rendering Raytraced Refraction with 3D Hardware
  • 09/16/1999 - More About Bezier Patches And Fractals
  • 08/11/1999 - The Right Landscape Engine For You!
  • 07/12/1999 - Leftovers From The Contest: Fixing TP7's Runtime Error 200 bug
  • 07/01/1999 - Introduction

  • This document may not be reproduced in any way without explicit permission from the author and flipCode. All Rights Reserved. Best viewed at a high resolution. The views expressed in this document are the views of the author and NOT neccesarily of anyone else associated with flipCode.

    [an error occurred while processing this directive]