NWengine 0.9
|
NWengine is a game engine made with focus on modularity and customizability. It empowers developpers to build fast 2D games and graphics simulations, with the least depedencies possible.
It is written in C++ uses OpenGL API for rendering and targets only Windows for now.
The engine itself is called the Core, in contrst with the Editor which was present at early stages of development, both were not seprated. Now only the Core persists. If an editor is ever to be made, it will be a completely separate project which will use the Core to achieve its goals.
Everything in the Core is either a GameObject (only one fundamental class), a component, a system or a utility.
Component
and is attached to a GameObject.Asset
class to be able to load unload and manage resources. Examples of systems are Scene
, Sound
,Font
, Batch
, etc.Many systems use extensively static methods. This is a design choice that will be changed in the future as it limits the ability of the engine to be used as dynamic library. To avoid unacessary overhead, almost every member is public, setters and getters are written for high level classes to avoid unsafe access to data. Variables prefixed with underscore _
hints they are intended to be readonly or private. As this rule was added lately, nothing garuntees it is the case for every class.
As you may have noticed, the Core uses sometimes inheritance (for assets and components for example), however this is not a the general case. Inheritance is to be avoided as much as possible as it has unacessary overhead and makes the code less readable and harder to maintain.
Systems manage their memory and the memory used by the components they own. Systems can make use of methods Init
, Destroy
and SetUp
, each has a specific role that should be detailed in the technical documentation. Is is avoided to run logic in every type of constructor or destructors *(it wasn't the case in earlier versions though, and residue can still be observed in the code)*. As a consequence, initialization of objects and their destruction is done within custom methods (like those evoked bofore), and smart pointers are not used.
If you have any issue, bug, question, or suggestion related to NWengine, please report it in the corresponding section of the repository.
There are still many features the engine lacks, many bugs to be founded, and many improvements to be made, all contributions are welcome. A pull request should cover the following points:
Download your assets from the release page. You should then have a template project with premake5.lua
, the binary NWEngineCore64.lib
/NWEngineCore32.lib
and an include
folder with the headers architectured in a tree structure. A single NWEngineCore.h
is provided too, is is equivalent of having all the headers separetely, it is better for developpers who don't like big amounts of files and includes in their project. Once you have that, and you compile your the template compiles, you are ready to start programming yout first game powered by NWengine !