WaveEngine 3.0 Preview 2

New features

We’re excited to announce the release of WaveEngine second preview. In this new preview, the whole engine uses .NET Core 3.0, so all WaveEngine libraries are .Net Standard 2.0 and new project templates are .NET Core 3.0. You can just get .NET Core by simply upgrading to Visual Studio 2019 16.3.

Furthermore, you can now run your WaveEngine projects with Vulkan, DirectX12 or OpenGL/ES graphical backends. In the new WaveEngine launcher, you can choose your favorite backend to work.

Continue reading WaveEngine 3.0 Preview 2

New FileMesh, MaterialComponent and MeshRenderer components

In the new WaveEngine 2.4.0, the model load process has been improved, so there are some important changes that you should know when working with models.

The following components are deprecated. You will able to use them in WaveEngine 2.4.0 by retro-compatibility but they will be removed in a future release.

  • Model
  • ModelRenderer
  • MaterialsMap

These have been replaced by the following components:

  • FileMesh: This component replaces the Model component and allows loading of a single mesh inside a model.
  • MeshRenderer: This component replaces ModelRenderer drawable3D.
  • MaterialComponent: This component replaces MaterialsMap component. It is marked as “AllowMultipleInstances” so you can add multiple MaterialComponent instances to an entity.

Continue reading New FileMesh, MaterialComponent and MeshRenderer components

WaveEngine 2.3.1 to 2.4

This article is a brief guide to solving the majority of problems that you will find when you upgrade your game project from WaveEngine 2.3.1 version to 2.4.

Although WaveEngine has an upgrade tool that runs when you open an old game project with the current WaveEditor 2.4, you can find some issues listed below.

An important point to bear in mind is that Model, ModelRenderer and MaterialsMap components are deprecated, so you should begin to use FileMesh, MeshRenderer and MaterialComponent respectively. For more details, you can read the following article.

TaskSchedule

WaveEngine 2.3.1

  
WaveServices.TaskScheduler.CreateTask(preloadAction);

WaveEngine 2.4

  
WaveBackgroundTask.Run(preloadAction);

WaveEngine 2.3.1

  
WaveServices.Dispatcher.RunOnWaveThread(() =>

WaveEngine 2.4

  
WaveForegroundTask.Run(() =>

Network extension

WaveEngine 2.3.1

  
networkService.HostMessageReceived

WaveEngine 2.4

  
networkService.MessageReceivedFromClient

WaveEngine 2.3.1

  
networkService.ClientMessageReceived

WaveEngine 2.4

  
networkService.MessageReceivedFromHost

Find Entities

WaveEngine 2.3.1

  
entity.FindAllChildrenByTag("Enemies");

WaveEngine 2.4

  
entity.FindChildrenByTag("Enemies", true);

 

Appear and disappear effect in WaveEngine

In this article, I’m going to show how to create a cool effect to make the NPCs in your game appear or disappear. One of the issues that you need to resolve when you kill an enemy in your game is how to hide it from your scene. Unless, of course, you want to pile up enemy bodies.

We are going to create a custom shader in WaveEngine for our aim. If you do not already know it, we recommend reading this article before you start.

Follow the steps to create the project effect.

Continue reading Appear and disappear effect in WaveEngine

Nine Patch in WaveEngine

What is Nine-Patch?

A Nine-Patch is an image format that adds extra information on an image file, defining what parts of it should be scaled (and which are not) when the image is rendered in a larger or smaller size. This technique was introduced in the Android SDK and is very useful for creating UI components like buttons, panels, containers, etc.

Using this technique, you can define the background of multiples UI components like panels or buttons with the same image asset. You can also create large panels with a reduced image asset so is very useful for optimizing your project resources.

Continue reading Nine Patch in WaveEngine

What’s new in Wave Engine Saw Shark (2.3.0)

New WaveEngine 2.3.0 (Saw Shark) brings a lot of new features. Although our main new feature is the new Physics 2D engine, we will expose all the new features and improvements of this version.

New Physics 2D Engine integration

WaveEngine 2.3.0 (Saw Shark) includes a native wrapper for Box2D up to 60% faster compared to our last physics engine. Furthermore the new API is faithful to the Box2D API so you can port any Box2D sample to our new WaveEngine API. 

Read this article for more details.

Box2D physics engine

Continue reading What’s new in Wave Engine Saw Shark (2.3.0)

WaveEngine 2.2.1 to 2.3 Cheat sheet

In the last WaveEngine 2.3.0 version has been added Box2D physics engine as native integration. It allows a lots of new physics features and a better performance but it brings many API changes.

WaveEditor has a Upgrader Tool that automatically upgrade your project files to last WaveEngine version but doesn’t modify your source code. So you can find some issues after upgrade your project.

This article brings you a list of common issues and how to solve them:

RigidBody and Colliders

WaveEngine 2.2.1

  
new RigidBody2D() 
{ 
      PhysicBodyType = PhysicBodyType.Static 
});

WaveEngine 2.3.0

  
new RigidBody2D() 
{ 
      PhysicBodyType = RigidBodyType2D.Static
});

Continue reading WaveEngine 2.2.1 to 2.3 Cheat sheet

Improving performance of my Wave Engine games (2/2)

This article is the second part of how to improve performance of my Wave Engine games. So if you do not know it yet, I recommend you read the first article before you start.

In the first article we showed how Wave Engine´s render works and how many draw calls are need to render entities. In this second article we are going to review two interesting techniques that allow you to reduce the number of draw calls to render your scenes.

Static Batching

This technique allows you to group many meshes on a single mesh so the engine will be able to render multiples entities as one.  But some limitations exist that we need to know before we use it:

  • It is necessary to mark your entities as Static, this means that these entities cannot be translated, rotated or scaled when running your
  • All entities must share the same material instance.

To mark an entity as Static you can set the Static checkbox on Wave Editor´s Entity Details Panel:

Continue reading Improving performance of my Wave Engine games (2/2)

Improving performance of my Wave Engine games (1/2)

In this article we are going to review some graphic concepts that will help you to improve performance of a Wave Engine game. We will make use of Visual Studio 2015 Graphics Diagnostic Tool so if you do not already know it, we recommend to read this article before you start.

Your games performance depends on a lot of factors, in this article we focus on drawing performance and some features you must know if you want to improve it.

Wave Engine’s Rendering System

Wave engine uses Light-Pre pass Deferred Rendering system to represent dynamic lights starting from version 2.0.  This technique is very powerful because allows you to render multiple dynamic lights but it is more expensive than using lightmaps to represent static lights, so you must choose what technique is more appropriate to use for your game.

We are going to research how many “draw calls” are need to draw a simple Entity with texture without dynamic lighting:

Continue reading Improving performance of my Wave Engine games (1/2)