flipCode - Tech File - Conor Stokes [an error occurred while processing this directive]
Conor Stokes
(aka DirtyPunk)
Click the name for some bio info

E-Mail: cstokes@crytek.com

   07/08/2000, Various Loose Ends To Hang

Well, I've been meaning to do an update for a while, as many things have happened, I've just been pseudo-busy doing quasi-important sorta things and not managed to do this. But now, I force myself to walk the path I must tread. Yeah, it is that much of a labour guys, do you know how much work it is to come up with an creative techfile this many times :)

Anyway, I do have a column update coming along, and as soon as I get around the hectic lifestyle I've been leading, I'll get it out. But first things first, the major change that has come about is that I have left Crytek. It was a friendly parting, on good terms. It was initiated by me, because of the hectic schedule I am running. It was slowly killing me, and with picking up another unit next semester, I didn't think I could handle it effectively. As for now, I'm not really certain of the full direction I'm heading in though. Part of me yearns to be an academic/researcher, but I do love the practical challenges confronting games developers.

Still, what can be said but, things happen. Well, life roles forwards in its lumbering but incoherantly drunk stumbly fashion.

Speaking of which, I have 2 projects in the works. An Engine, named BitchSlap (after one of #flipcode's favourite words - It also means I get to use BS as a class prefix... With a reason for once), and a ray tracer called, HQR (in a rather uncreative acronym - I'll let you decide what it means). I've started off working more one the engine project, but now I'm working more on the ray tracer project. Although, I only really did architecture and renderer work on the engine. The architecture (which I will explain a bit later) is fairly flexible.

I've decided to up the ante a bit, and make this engine as well designed as possible. As to which, I've started the abstraction and classification process. Now, engine design is the area most people starting out with fall down. Engine design is not merely the way you code, but its the paradigms you use, the things you tie yourself down to etc. So, I'm going to dedicate this part of the techfile to discussing the engine design process, as I see it - A much neglected part of the whole production process - Most often left as traditional software engineering and never given a chance of its own.

I've come across the fact that engines actually exist mainly in 3 major abstracted areas. As a play on freudian psychology, I named these 3 parts; the Engine, the Super-Engine and the Imp. In short...

The Engine is the interfaces, the environment variables and the base structures (You may wish to call these the protocol, as they are generally the things passed from interface to interface as messages). This is a naturally abstractable part of the code, and is basically the definition which ties together the Imp (implementation) into a cohesive mass.

The Super-Engine could also be called the fat controller, as it does just that. The Super-engine does things like handling environment variables and the loading of modules, the setup of execution lists, exception handling, memory handling, security and base informations. The Super-Engine basically takes the Engine and runs it. It is like the OS to the programs/modules running in your engine.

The Imp is simply the implementation. The raw code which does specific tasks, usually some form of I/O (even rendering counts as I/O) or an algorithmic task/Response. The imp is based on what is defined in the Engine.

Treating these as seperate parts which work together as an engine helps provide a way of designing an architecture that is flexible yet robust and easy to work with. Understanding that you can lay the super engine, then the engine and finally the imp out easily is the key to setting your engine as a well laid out hierachy of perfectly meshing well controlled parts.

Conor "DirtyPunk" Stokes

  • 12/29/2000 - Techfile From Somewhere Different
  • 10/10/2000 - Some Fun, And A Cameo Appearance
  • 08/10/2000 - Déjà vu - And I've Done It Before
  • 07/08/2000 - Various Loose Ends To Hang
  • 05/15/2000 - The Way To Hit A Ball With A Bat. Or Not
  • 03/28/2000 - The Fine Art Of
  • 02/13/2000 - A Life Time of Learning, Teaching and Eating M&Ms
  • 12/09/1999 - Strangeness And Wondering If You Are Taking Innovation A Tad Too Far
  • 11/12/1999 - How to Break Exam Tension? Update Your Techfile
  • 09/14/1999 - Lots of Ramblings, personal things and comments on why SNFU
  • 08/23/1999 - Trials and Tribulations of Being Cerebrally Defunct
  • 07/29/1999 - Quick Update about Stuff and Things
  • 07/25/1999 - I'm Back Baby
  • 07/01/1999 - Is it so? Or am I just a Psycho Babbling Mental Hobo, who's Brain has No Home?
  • 06/25/1999 - Another Couple of Things
  • 06/17/1999 - I Am A Naughty Little Boy ;( But I Have A Way To Make Up
  • 06/16/1999 - What the hell? A new data structure for visibility? I don't know, I haven't heard of it.
  • 06/05/1999 - A Little Right Brained
  • 05/12/1999 - A Couple O Things
  • 05/08/1999 - Pre Computable Nice Visibility Sets
  • 05/04/1999 - More on Volumetrics
  • 04/30/1999 - Generic Update
  • 04/27/1999 - Spherical Volumetric Rendering (Mapping)
  • 04/25/1999 - Fractal Curves, Emulation Of Nature
  • 04/25/1999 - Claustrophobic Irony Level Loading and Manufacture
  • 04/24/1999 - Visibility Ramblings
  • 04/21/1999 - Why Software Rendering Is Not Dead
  • 04/17/1999 - Optimizing For Specific 3D Hardware

  • 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]