In WaveEngine 2.3.1 we have added a new adapter on Windows for OpenGL, this allows WaveEngine developers to run their games using DirectX and OpenGL on Windows. This will be really handy to adapt their assets (like shaders or textures) faster to our OpenGL platforms (Linux, MacOS, iOS and Android).
In this article we will learn how components resolve their dependencies with other components and how the custom attribute [RequiredComponent] works.
Entity and Components
As you know, an Entity represents a logic element of our game and it is an empty box where you can put component insides which define what the entity can do.
The logic hierarchy is handle by the EntityManager which stores the struct of all the entities in our scene. For example:
In this article we will describe how the WaveEngine initialization cycle is. It is very important to know this in order to avoid issues inserting some loading code in the incorrect method.
We will create a new project to analyze how this works.
We started developing WaveEngine more than 4 years ago with the idea to make live easier for game developers in their mission to create games for the current mobile ecosystem (fragmented into many devices, languages, APIs and operating systems) simplifying cross-platform development difficulties.
We love C# and we focus all our efforts in building an easy and fast Framework to create native games and apps on mobile devices using the latest .NET version. To achieve this we used the .NET Framework on Windows Phone and Mono through Xamarin on iOS and Android. Currently WaveEngine supports more than 8 platforms and developers can use our Wave Visual Editor and Visual Studio, Xamarin Studio or Monodevelop on Windows, Linux or MacOS to create games for all supported plataforms.
Image Effects are very often used to enhance the final look of our games, in WaveEngine we have worked to create an Image Effect extension with the common image effects used in games and optimized for mobile devices. So the default values used for each of these effects are tested in iOS, Android and Windows Phone devices, but you can change these to get more quality results if you target other platforms like Windows, MacOS or Linux.
For WaveEngine 2.0 we decided to change our render to allow users to have more control on lighting. The big challenge here was how to offer a better lighting system and still support old mobile devices with OpenGL 2.0.
The render system in WaveEngine 1.4.2 is known in computer graphics as Forward Rendering. It is fast, simple but limited since you cannot use for example more than 4 to 8 lights per object (there are some techniques that try to simulate more lights but do not give good quality), and you need to write a large amount of shaders to support some combinations efficiently.