Original Post
Hello everyone, After several design layouts for my new engine, I think I came up with something promising. This engine is a commerically scaled engine, and is fairly large in size. Can others please critique my current layout? Please give me both positive and negative comments, posting suggestions and potental problems as well. This will help me improve the design layout for my upcomming 3d rpg. Heres the current layout...
A few things reguarding the design... -The Task Manager is based off the Enginuity series, and works the same way -The OSI ("OS Interface) Layer contains *all* system specific routines and methods. No other part of the engine should contain *any* system dependencies. -The user lets the OSI know what subsystems to initialize at startup (Simular to SDL). This insures if the user has a Playstation2 graphics module, the user could *not* start the graphics subsystem at engine initilization, and use the Module Manager to load it (and OSI to place it in the task manager) -Graphics/Input/Sound Interfaces are *NOT* abstract classes. They provide base functionality for software render/triggered input. that is, if no API is loaded for the Graphics SubSystem, then the base Graphics Interface class uses Software Rendering, and render the 3d world to a "surface". Because software rendering/input capture is system specific, the base interface classes are part of the OSI (OS Interface) layer. -The engine can use the Module Manager to load static and dynamic libraries (dlls) to load Graphics/Input/Sound Drivers if they want. These derive (and hence) override the base interface classes, so OpenGL, DirectX, SDL, FMod, et al hardware emulation would accure. -The *ONLY* singleton class is the engine Core class. Through the Task Manager, the user could create multiple graphics systems for rendering to seperate outputs, same for virtually any other, or even user defined, tasks. -The Misc. Routines contain collision detection, AI, Partical system classes that might not fit anywhere else. It also contains a pure static "EngineState" class which provides all error code information. The user could use this, with information from the Sciene Manager, to test collisions, perform AI, etc.. -Will provide multithreading support in the OSI (OS Interface) layer, and assembly code (if required). ENDIAN macros are defined within primary core object (as I know of a few places they could be usefull).
This is it. I am posting this here for suggestions, ideas, problems (of any kind--even minor, or potental ones) for feedback on my current layout. After about 4-some engine attempts, and studying several engines layouts (NeoEngine, Irrlch(sp?) I (Hope!) This will work very well in design. What do you think? Any response is welcome.
A few things reguarding the design... -The Task Manager is based off the Enginuity series, and works the same way -The OSI ("OS Interface) Layer contains *all* system specific routines and methods. No other part of the engine should contain *any* system dependencies. -The user lets the OSI know what subsystems to initialize at startup (Simular to SDL). This insures if the user has a Playstation2 graphics module, the user could *not* start the graphics subsystem at engine initilization, and use the Module Manager to load it (and OSI to place it in the task manager) -Graphics/Input/Sound Interfaces are *NOT* abstract classes. They provide base functionality for software render/triggered input. that is, if no API is loaded for the Graphics SubSystem, then the base Graphics Interface class uses Software Rendering, and render the 3d world to a "surface". Because software rendering/input capture is system specific, the base interface classes are part of the OSI (OS Interface) layer. -The engine can use the Module Manager to load static and dynamic libraries (dlls) to load Graphics/Input/Sound Drivers if they want. These derive (and hence) override the base interface classes, so OpenGL, DirectX, SDL, FMod, et al hardware emulation would accure. -The *ONLY* singleton class is the engine Core class. Through the Task Manager, the user could create multiple graphics systems for rendering to seperate outputs, same for virtually any other, or even user defined, tasks. -The Misc. Routines contain collision detection, AI, Partical system classes that might not fit anywhere else. It also contains a pure static "EngineState" class which provides all error code information. The user could use this, with information from the Sciene Manager, to test collisions, perform AI, etc.. -Will provide multithreading support in the OSI (OS Interface) layer, and assembly code (if required). ENDIAN macros are defined within primary core object (as I know of a few places they could be usefull). This is it. I am posting this here for suggestions, ideas, problems (of any kind--even minor, or potental ones) for feedback on my current layout. After about 4-some engine attempts, and studying several engines layouts (NeoEngine, Irrlch(sp?) I (Hope!) This will work very well in design. What do you think? Any response is welcome.