[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fw: Layered architecture - wrong direction !!!




>> But there is MORE powerful multimedia architecture -
>> the object architecture of BeOS.
>> I suggest to implement a BeOS-like SDK.
> OK.  I am for one am unfamiliar with BeOS.  Could you give a basic
explanation
> of the arcitecture for us?

- Object-oriented thread-safe API (OWL-like framework on all levels from the
kernel)
- Pervasive multitasking (Almost all objects are threads.
 It provides quick reaction - reaction time on any user request is minimal.
 Of cause, it also provides large speed improvement on multiprocessor
systems.)
Some game-related classes are:
- BWindowScreen (full-screen mode)
- BDirectWindow (based on BWindow - windowed or full-screen mode)
The main function of these classes is DirectConnected() notification (vs.
Lock()/Unlock() of the directX).
When "connected", the windows can use DMA, etc; when reconnected - it must
reinitialize...
This way a class can subscribe to sound stream or all input messages (from
mouse, joystick, etc.)
- 3d kit is now in development :-(. Currently used OpenGL.

>> Total Annihilation has more powerful graphic engine for 2.5 strategies.
>> But this engine even theoretically can not be used as dynamic library
for,
>> say, warcraft
>> because of plain or layered architecture of these games.
> So evidently you are not talking about a lowish level "export some drawing
> primitves" type 2d engine, you seem to be talking about a kit that is
closer to
> the application, more games oriented.  What kinds of functionality are you
talking about, and
> how would you like to see it done?

I am talking about total object architecture on all levels from low to high.
It can help to solve the problem of code rewriting.

For example:
Let us say we want to write a 3d strategy.
It would be better to have 2d BSP-renderer, AI, etc as stand-alone modules
(activeX - sorry for comparison).
Then we want to implement new texture-mapping algorithm, 3d BSP on place 2d
and Voodoo 3 support.
Of cause, we do not want to rewrite these modules.
Object conception is designed especially for this situation:
"class Game : public P2dBSP" -> "class Game : public P3dBSP"
"virtual int NewTextureMapping ();"
"class MyWindow : public PWindow" -> "class MyWindow : virtual public
PWindow, virtual public Voodoo3Pen"
(The last construction is not fine.
May be, CORBA implementation of the objects is better?
May be, for Voodoo 3
        MyWindow::Pen = Voodoo3Pen"
will be enough?
The code is for prototype of proposal only.)

Yet note: DirectX has COM-based architecture.
I don't think, they really can use this ugly technology on low levels.
This is why Unreal requires voodoo graphics or a patch :-) to support
hardware acceleration.
But I think, they want to use COM interfaces on the high level, to allow
activeX-based games.

I'm afraid to make too specific proposals, because I have not any experience
in game development.
I can only try to suggest:
 - Some window/screen object.
 - Object to draw some graphics primitives.
 - OpenGL-compatible object (i.e., may be inherited)
 - Standard algorithms objects (texture-mapping, etc)
 - CORBA-based high level controls (as 3d engine, real-time strategy...)

The main idea is a single object mechanism.
* The objects may be equivalent to layers, UNTIL first change will be
required. *


            I hope, my suggestion is more clear now.
            And I hope it is possible :-).

                        Thank for attention.
                        Best regards.

                                    Alexander.



.