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:
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:
None of these are real time killers so I'm really hoping to bang these out in a couple days...
We'll see.
- Adam
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:
- Strict initialization phase required for ALL elements
- Stronger encapsulation for all classes resulting in more task oriented publicly exposed functions
- 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
.plan Archive
.plan rss
adam_23feb2010.plan
adam_25sep2009.plan
adam_03may2009.plan
adam_07may2008.plan
adam_20nov2007.plan
adam_02nov2007.plan
adam_12oct2007.plan
adam_03oct2007.plan
adam_26sep2007.plan
adam_31jul2007.plan
adam_17jul2007.plan
adam_05jul2007.plan
adam_31may2007.plan
adam_16may2007.plan
adam_01may2007.plan
adam_28apr2007.plan
adam_11apr2007.plan
adam_08apr2007.plan
adam_03apr2007.plan
adam_31mar2007.plan
adam_29mar2007.plan
adam_29mar2007.plan
adam_26mar2007.plan
adam_04mar2007.plan
adam_27feb2007.plan
adam_08feb2007.plan
adam_02feb2007.plan
adam_01feb2007.plan
adam_28jan2007.plan
adam_27jan2007.plan
adam_26jan2007.plan
adam_22jan2007.plan
adam_18jan2007.plan
adam_06jan2007.plan
adam_28dec2006.plan
adam_22dec2006.plan
adam_17dec2006.plan
adam_14dec2006.plan
adam_28nov2006.plan
adam_26nov2006.plan
adam_24nov2006.plan
adam_11nov2006.plan
adam_02nov2006.plan
adam_31oct2006.plan
adam_25oct2006.plan
adam_19oct2006.plan
adam_16oct2006.plan
adam_09oct2006.plan
adam_28sep2006.plan
adam_24sep2006.plan
adam_21sep2006.plan
adam_23feb2010.plan
adam_25sep2009.plan
adam_03may2009.plan
adam_07may2008.plan
adam_20nov2007.plan
adam_02nov2007.plan
adam_12oct2007.plan
adam_03oct2007.plan
adam_26sep2007.plan
adam_31jul2007.plan
adam_17jul2007.plan
adam_05jul2007.plan
adam_31may2007.plan
adam_16may2007.plan
adam_01may2007.plan
adam_28apr2007.plan
adam_11apr2007.plan
adam_08apr2007.plan
adam_03apr2007.plan
adam_31mar2007.plan
adam_29mar2007.plan
adam_29mar2007.plan
adam_26mar2007.plan
adam_04mar2007.plan
adam_27feb2007.plan
adam_08feb2007.plan
adam_02feb2007.plan
adam_01feb2007.plan
adam_28jan2007.plan
adam_27jan2007.plan
adam_26jan2007.plan
adam_22jan2007.plan
adam_18jan2007.plan
adam_06jan2007.plan
adam_28dec2006.plan
adam_22dec2006.plan
adam_17dec2006.plan
adam_14dec2006.plan
adam_28nov2006.plan
adam_26nov2006.plan
adam_24nov2006.plan
adam_11nov2006.plan
adam_02nov2006.plan
adam_31oct2006.plan
adam_25oct2006.plan
adam_19oct2006.plan
adam_16oct2006.plan
adam_09oct2006.plan
adam_28sep2006.plan
adam_24sep2006.plan
adam_21sep2006.plan