Sign in to follow this  
  • entries
    298
  • comments
    1135
  • views
    231360

Modularity++

Sign in to follow this  
HopeDagger

92 views

Why re-invent the wheel every single time? If I can get away initializing Direct3D once, why not grasp desperately at that straw? ;)

The idea I'm going towards is that I can save myself a lot of time in both this current project I'm going for and future projects if I take the time to write a game engine the first time, that's modular and can be reused. I've lost count of the number of tile engines I've written in Delphi. *shiver*

Since I love Greek letters so much, it will be hereafter be dubbed, the "Beta2D Game Engine", or just "Beta2D". Rolls off the tongue, right? Right?

This 2D engine will be comprised of several components, which will essentially be plug-and-play, and should function mostly without the need of the others. Most of the components, like video/input/sound will be built upon the existing DirectX libraries (Direct3D, DirectInput, DirectSound, etc), but at a higher level, and with more functionality. This includes stuff like fading effects, or easier sound loading/playing. It also means that I'll be able to start pumping out a much higher number of games after its written, which is a wonderful thing. :)

So here's the general listing of what components Beta2D will consist of:

-> BetaScreen (resolution, bitdepth, screen clearing, bg colour, fading, etc)
-> BetaCache (cache of 'Image's, with functions for adding/removing)
-> BetaSpriteEngine (list of 'Sprite's, calls each's Update/Draw/Collide methods, maybe some culling)
-> BetaFont (bitmap font engine; loading, drawing, colours, size, etc)
-> BetaSound (loads and plays sounds)
-> BetaTimer (calculates FPS, delta value, and calls timer function)
-> BetaInput (holds data of keyboard and mouse input)
-> BetaTileMap (camera and array for drawing tile maps)
-> BetaParticleEngine (hm.. perhaps a particle engine? :P)
-> BetaPrimitives (drawing primitives, like: rects, ellipses, polygons, etc)

I had originally planned on doing this with another library like Allegro or OpenGL/SDL, but DirectX is the path I'd like to try to follow. Should be interesting. :)

Tonight's goal is to get the basics of BetaScreen working, which will include creating a Win32 window and initializing Direct3D. As well as encapsulating the begin/end commands for the scene.

If there's any interest in a high-level library like this by the time it's done, I'll probably release it on my GD.NET webspace or somesuch -- maybe some actual documentation :P -- or go opensource and toss it on SourceForge. We'll see how it goes. :)
Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now