In the new Wave Engine 2.0 version we have been working on very important changes on the project template. This changes are designed to improve the portability of Wave Engine game projects. In this article we will go over the changes of the project template and compare them with the version we had on Wave Engine 1.4.2, furthermore we are going to review the new metafiles that all Wave Engine developers must also know to understand Wave Engine process.
Wave Engine has been releasing several versions since the project started. In addition we allow our community to use our latest pre-release builds. This may cause a little mess when you are dealing with different projects/games with different versions at the same time. Which version should I suggest to install in all my team’s computers? What if I install more than one version at the same time?
To solve those problems we decided to update the Wave Engine default projects by using the NuGet package system.
NuGet is a free and open source package manager (initially designed) for Microsoft platforms and provided as a Visual Studio extension. It has gained popularity and it’s also integrated in Xamarin Studio and MonoDevelop.
If you take a glimpse of its web or its IDE extension you will find plenty of different libraries with different versions and dependencies.
One of the main features performed in Wave Engine 2.0 is the rewriting of the Material library. To afford tasks like the New Deferred Rendering, we soon realized that we needed to improve the existing material library.
All materials has been changed to work properly with the new Visual Editor, and work with the New Lighting System, so this is the new Materials list:
- Standard Material
- DualTexture Material
- Environment Material
As part of the plan of Wave Engine 2.0 to check over its features and following a process to constantly improve them, the new Wave Visual Editor gave us the opportunity to simplify a lot of things and make the development more enjoyable. One of them is the creation and use of sprite sheets textures and animating them.
What is a Sprite Sheet
If you are not familiarized with Sprite Sheets, don’t worry, this article will give you a brief explanation.
First of all we must differentiate between sprite, sprite sheet and animation concepts.
- Sprite is just a single 2D image, which can be added to our scene.
- Sprite Sheet is a group of different sprites put together into a one big image. They are necessary to speed up the process of displaying images on the screen because of its important impact on memory and performance. Packing algorithms are really important to keep the image as small as possible.
- Animation with sprites is using a sprite sheet and changing which sprite is rendered, changing every frame causing the animation illusion.
They are 2 key uses for the sprite sheets in your game or application:
- Sprite animations. For creating a 2D animated character (or object), so we have to pack all its frames as a way to make it easy to add on your project.
- Sprite Packaging. Using a sprite sheet with no animation, just to optimize memory and performance. We usually packs a lot of our scene sprites into a sprite sheet, and we use them in our scene, adding a sprite sheet but rendering only one of its sprites.
The new Wave Engine sprite sheet format is designed to satisfy all of them.
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.
Today the Wave Engine 2.0 private beta program was closed. During the development of the new version it has been very important to have support and feedback from the developer community. So, on January 30 2015 we opened a private beta program. Such allowed any game developer to subscribe for testing previous (alpha and beta) versions.
The welcome was amazing and in few days we had a long developer list prepared to send feedback and help us in reach our goal of creating a new great Engine version, useful to game developers community.
We are happy to announce that WaveEngine 2.0 will be publicly available on September 15th.
Our last stable version of WaveEngine (1.4.2) was released in November of 2014 and after that we decided to analyze all the feedback received from our users in the last year to design the future of WaveEngine.
And in January of 2015 we reorganized our talented team and begin working in this new ambitious version. These have been moths of hard work but the new version is just about ready to be published.
Today we introduce the first video in which you can see how the development of 2D games is with the new Wave Visual Studio 2.0. We have been working very hard on this part for an easy way to integrate both the 3D and 2D development as there is much diversity in our community of developers, existing those who usually develop 3D games but also who develop their games in 2D and even those who want to mix both 2D and 3D as in recent well known Rayman Origins and Rayman Legends.
We are glad to announce that WaveEngine 1.4.2 (Dolphin) is out! This release is full of interesting and useful features.
With TiledMap, develop 2D games in WaveEngine will not be the same anymore. Tiled maps have been used for a long time in games, now you can load and integrate TiledMap (.TMX) files, created by Tiled Map Editor (http://www.mapeditor.org/), the most popular map editor based in tiles. With Tiled, you can easily design your 2D map levels and run in WaveEngine like a charm.
The Transform components are used to store the Entity position, rotation and scale. In a 2D environment, Transform2D has more properties, such as Opacity, Rectangle, etc…
In WaveEngine 1.4 we have introduced a new Transform2D and Transform3D implementation, with great advantages:
- Real Parent/Child transform hierarchy.
- Local / Global position, rotation and scale properties.
- Apply 3D transforms to 2D entities.