So, today i'm starting to explain the base concept of the ParabolaEngine!
When you start this 2D Game Engine, or, when you instance a ParabolaEngine object, you are automaticly setting a application-unique environment, like a mini operating system where everything will happen!
To be clear, after you instance and initialize the engine, it is a game environment, a bit like iOS or Android, and it can easily manage multiple games running, and dynamic loading of different games. This means you can compile all your games in a bundle with ease!
All your game code will be encapsulated in your game class, which shall inherit the engine's base game class, the GameCore. Right from the start, a GameCore can penetrate the environment and start running. Proper callbacks are set so that you only worry about saying 'what do draw' or what to 'update'.
From within your application, you get a chance to control if the environment will be noticeable or if the game will run normally, so the end-user is never aware that a engine is running in the back-office. Even if the game is taking control of all the execution, there is a chance to bring in engine's features directly on top of your game. This is possible because the engine provides some features a bit like "Windows Live for Games" and will overlay its own stuff on top of your game, if you allow it.
There is also this funny thing in the engine, the SourceBox. Its a pluggable package/directory with all the engine environment resources and it basicly works as a turn on/off feature on your games. If its there, you get some extra ui and features from the environment, if it is not, you get the minimal functionality.
Another funny thing is that any game running is being updated by the environment from a different thread, this means you can make "long lasting code" in your game updates and the drawing will keep going smoothly. Even allowing you to stop your update in a blocking situation, for example waiting for the user to input something in a little animated ui, giving the impression that nothing stoped at all! Of course this is not the optimal use and would block other running games updating too.
Other cool features, but not the only:
- Packages
- Resource Loading
- Localization
- Localized UI with a libRocket full integration
- Configuration files and Resource files
- Dynamic Key Binding
- Animation classes
- And way more!
Feel free to contact me anytime if you need information or if you are interested in using the engine! Stay tuned :)
No comments:
Post a Comment