New Wave NuGet Package System

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

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.

Integration with Wave Engine

NuGet is available both in Visual StudioXamarin Studio and MonoDevelop, so we can provide our engine through NuGet packages for all our development platforms. 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.
  • WaveEngine.Common
  • WaveEngine.Framework
  • WaveEngine.Components
  • WaveEngine.Materials
  • WaveEngine.Adapter

In addition we created the following packages for Wave extensions:

  • WaveEngine.ImageEffects
  • WaveEngine.TiledMap
  • WaveEngine.Analytics
  • WaveEngine.OculusRift
  • WaveEngine.Kinect
  • WaveEngine.Spine
  • WaveEngine.Vuforia
  • WaveEngine.Networking
  • WaveEngine.Social

Every package contains multiple compilation targets so the same package contains the files for every platform (Android, iOS, Windows Phone, etc.). This is really interesting if you are dealing with multiple platforms in your project.

New Wave template

To use the package managing advantage we have changed the template for our Wave Engine projects, so now it all works like this:

  • Creating a new Wave Engine project (File > New Project… in Wave Visual Editor main menu) will show a ‘New project dialog’:

  • You can select the Wave Engine version in the combo box. By default the last version appears first.

  • You can select the different platforms for your project (Windows, Mac OS, Linux, Android, iOS, Windows Phone and Windows Store… for now) just by clicking in their icons. However, do not worry for choosing them right now, you can always add/remove platforms changing the project settings later.

This process will create a new project with the main Wave packages referenced on it with the specified version. As soon as we compile the project it will download all the libraries and store them in the ‘{Solution Dir}/packages’ directory.

If you open your C# solution in your IDE (File > Open C# Solution… in the main Wave Visual Editor menu bar) you can check its NuGet packages:

  • Visual Studio: Right click on the project and click on the  button. This will show a dialog where you can see, add and remove the installed packages in the solution.

  • Xamarin Studio & MonoDevelop: In the Packages section of the project you will see all of the listed packages.

Nightly build

Our user can use the latest pre-release versions of our engine libraries as they have been doing until now. The good news is that we’re automatically uploading them as a MyGet package.

MyGet is a personal and enterprise NuGet hosting service used for many companies to provide their own NuGet repository for their own packages and libraries and pre-release versions. Our WaveEngine package source is:

To create a project using our nightly build we just have to:

  • Click in Edit > Preferences… in Wave Visual Editor.
  • In the Preferences dialog, check the AllowAlphaVersions checkbox in the NuGet area.

Now we will see the pre-release “nightly” versions once we create a new project and we will able to select them.

Wave Visual Editor automatically will connect to the MyGet source and download the packages in the project.

Setup MyGet source in your IDE

Although Wave Visual Editor will connect to MyGet source and download Wave for us, we may want to load them directly from your programming IDE: Maybe we want to add the nightly build on an existing project, or use them in a non template project. In that case you just have to configure your system NuGet configuration in this easy step:

We will continue revealing more WaveEngine 2.0 feature in the upcoming days.

Stay tuned at @waveengineteam and waveengine.net.

Leave a Reply

Your email address will not be published. Required fields are marked *