We are glad to announce that Wave Engine 2.0 (Shark) is out! This release is a giant leap forward in our loved game engine.
New Wave Visual Editor
In August 2014 we began working on the new Wave Visual Editor 2.0 and, today, we are happy to announce the new editor has finally come true.
Available for download on Windows, Linux and Mac OS X platforms:
Wave Visual Editor has been developed using GTK# (you can read more details here if you are interested).
New Deferred Rendering Lighting System
For Wave Engine 2.0 we decided to change our render system to allow users to have more control on lighting. The big challenge here was how to offer a better lighting framework and still support old mobile devices with OpenGL 2.0.
This new system also allows us to introduce more types of light source:
More types are coming: area lights, 2D light sources, occluders and projectors.
New Project Template
One of the huge changes has been to incorporate SharedProject as project code in the new Wave Engine template. This new project type allows to create projects independently of the compilation platform and it is ideal for cross-platform solutions.
The new project template has a SharedSource folder and, inside of it, a Main folder, that contains your game code.
And, on the root folder, you can also find:
- Launchers folder with all launcher projects (for every platform).
- Content folder with all game assets.
- Packages folder with Wave Engine NuGet packages.
- Intermediate folder used to store temporal files.
- Weproj file is a project descriptor file and you can open it with new Wave Visual Editor.
- Solution files (.sln) for every platform.
New Resource management and Asset workflow
When you compile your solution, WaveEngine creates an auto-generate file called WaveContent.cs that contains all asset paths as constants following directory hierarchy. This allows to directly reference assets from the IDE without switching between Wave Visual Editor and the IDE.
Here you can find an example of the new WaveContent file:
public sealed class WaveContent
public sealed class Assets
public const string MyMaterial = “Content/Assets/MyMaterial.wmat”;
public sealed class Textures
public const string Dinosaur_png = “Content/Assets/Textures/Dinosaur.png”;
public sealed class Scenes
public const string MyScene = “Content/Scenes/MyScene.wscene”;
New Asset Viewer (and the new Sprite Sheet versions)
One of the biggest additions to Wave Visual Editor is the AssetViewer application, which allows to see and edit the different Wave assets (textures, models, sounds, cubemaps … and sprite sheets).
Aligned with Wave Engine 2.0, we have improved the Sprite Sheet format and include a new features:
- Animations. Now you can define the sprite sheet animations.
- TexturePacker integration inside the asset viewer tool.
New Wave Nuget Package System
In this 2.0 Release, all Wave Engine libraries are distributed through Nuget Packages, so it’s quite straightforward to keep updated to the latest Wave Version.
We’ve created several packages which names can be easily identified as the main Wave Engine libraries:
- WaveEngine. Main package, contains dependencies with the other main packages and the asset compilation targets. This is the only mandatory package that you need to use in your project.
New Material Editor
All Wave Engine 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
To allow editing materials, Wave Visual Editor has included a new Material Editor:
New Image Effects
We have improved the WaveEngine image effect library to offer our users new amazing post processing effects optimized for mobile devices. The complete list of the new effects is:
- Depth of Field
- Fast Blur
- Gaussian Blur
- Lens Flare
- Motion Blur
- SSAO (Screen Space Ambient Occlusion)
To give easy access to new image effects lens, you will find all of them in the ImageEffects static class.
Here is the complete source code of WaveEngine Image Effect Library:
New Kinect 2.0 integration
We are proud to present a new Extension for the last version of WaveEngine 2.0: Kinect for Windows v2.0 Extension.
This extension is very useful for adding NUI support to your games. Using WaveEngine Kinect for Windows v2.0 Extension you will:
- configure MS Kinect sensor source.
- get the WaveEngine textures for most sources.
- get the skeletons.
- get face information details.
But Microsoft Kinect is more than textures and skeletons, so if you need more features you can use all the power of the Microsoft Kinect for Windows v2.0 SDK.
WaveEngine Kinect Extension will expose the same objects than Microsoft Kinect SDK v2.0 to you can use everywhere you need. To use Microsoft Kinect v2.0 sensor the machine should meet the minimum system requirement for Kinect for Windows Software Development Kit (SDK) 2.0. This extension is only available on Windows.
New Networking API
This new library in WaveEngine comes to provide an easy way to manage the synchronization and communication in our games.
With it we can develop multiplayer games with an optimized API that allows us to communicate with other players and share the game state.
We have created a NetworkService that provides an API to create a host, which will manage the main game behaviour, search hosts in our local network, connect to other hosts and send and receive messages to and from the host of the game. One of the features that is interesting in this API is the possibility to manage the reliability of the communication. This feature permits us to control the bandwidth and latency of communication.
With the new service, we have a low level layer to communicate between players. But this new library provides a high level layer that allows us to work with entities and components to synchronize our game state.
The high level features are provided by the NetworkManager class, by which we can register an scene that contains the entities that we want to synchronize between players.
The NetworkManager allows us to add entities that we want to synchronize. These entities need components that have the synchronization logic. These components will inherit from NetworkSyncComponent, an abstract class that provide an clean way to specify when and what properties of our entity will be synced.
The NetworkManager provides two ways to add entities, using entity’s serialization and registering a factory method. Using a factory method, you have more control about the used bandwidth and the way of the entity is created.
New Social Services API
We have had time to attend to one of our preferred features in the roadmap, a social service for WaveEngine that come as a WaveEngine extension. It provides unified access to virtually every social feature available in Google Play and Game Center.
So, all you lucky Android and iOS devs got this WaveEngine extension just baked from us 😉
Until now, each WaveEngine project had to implement its own connection against its social service.
With this extension that is not required anymore, in an effort to unify and simplify the source code of all WaveEngine projects we provided this handy extension for these two popular mobile platforms.
More info comming soon
Updated TiledMap API
Tiled editor is a powerful tool that lets you build tile based maps. The extension “WaveEngine.TiledMap” supports this maps format with a set of components that provides map rendering capabilities and an easy interaction with the map properties and custom attributes.
WaveEngine 2.0 includes an updated component library that supports Tiled v0.12.0 that contains some new features:
- Several graphic bugs solved.
- Better TMX file parser.
- Hexagonal orientation maps.
- New properties “Stagger Axis” and “Stagger Index” for staggered orientation maps.
- Neighbours collection from a specified layer tile.
- Some other minor features.