Latest: adam_18jan2007.plan
This ( Black Engine) has been, like I've said all along, a HUGE learning experience for me. I have tried to plan as much of it as possible by talking to people and doing copious amounts of research, but at the same time I didn't want to just copy other engines. I wanted to know I could come up with these ideas on my own.

As I've been working with my Engine and reading and talking to people I have come with with a short list of things that must change. A sea change in fundamental design philosophies that should be used when making any component of the Engine. Now this will not effect many parts of the engine. In fact a lot of the engine really came out quite perfect IMHO. But the areas that need to change are as follows:

  1. Strict initialization phase required for ALL elements

  2. Stronger encapsulation for all classes resulting in more task oriented publicly exposed functions

  3. Re-implementing of scene graph to be less convoluted and more of a traditional Scene Graph implementation


Let me elaborate on each of these:
1. Strict initialization phase required for ALL elements: I had thought of this before any code was even laid down for the rewrite but wasn't sure if it was necessary. The idea was that there would be two phases to starting up the framework.
1. Instantiation
2. Initialization
Instantiation, all elements that are to be started with the framework would be instantiated but the constructors would do nothing else. Then after everything was done, everything would then enter the 2nd phase which is where all the things traditionally in the constructor would execute, assigning default values and such. The idea being if one element required a pointer to another this method ensures the other element exists already so the order of instantiation does not matter.

2. Stronger encapsulation for all classes resulting in more task oriented publicly exposed functions: This is really a sea change for me in OO design. My instinct has been to, while protecting the private date, still only providing basic access functions to it letting the other classes combine them into the more complex actions they needed thus being totally flexible. But what this is saying is to have much more simplified functions that describe a task rather then a data operation. So instead of having setVelocity(), setPosition(), there would just be a moveTo() function. A shift to this kind of thinking has already been implemented in the User class's control scheme.

3. Re-implementing of scene graph to be less convoluted and more of a traditional Scene Graph implementation: This has been a nagging aspect of the engine I have known from the beginning needed attention. Though it seems the longer I wait the better an idea in my head I get of what I want it to turn into. But now I think I have a very good idea of how to implement it which will result in a much cleaner design that is more logical.

That all being said, while a LOT of time has gone into theorizing about Black Engine very little work has been accomplished in the last ten days. I'm getting back to coding now. I have spend a LOT of time reading and talking to people about Collision Detection, and it is sure to be the hardest topic of the Engine, period. Looking at the time required to implement a proper algorithm, I am implementing a hold over so that I can get to the remaining topics left for the v.6 release. Those are:

  • Rudimentary Collision Detection

  • 2D classes

  • Unified texture manager

  • Configure file Service

  • Asynchronous logger


None of these are real time killers so I'm really hoping to bang these out in a couple days...

We'll see.

- Adam

Post a Comment
Your Name:
Your Comment:

Anti-Bot:
anti-bot

Commenting has been permanently disabled