Automation and continuous delivery with MonoGame

image

For a long time MonoGame had only spurious updates and not a lot of outward activity (as opposed to the frantic and sometimes chaotic internal goings on in the mass of community contributions), this garnered such comments as “Is MonoGame dead?”.

The team started a trend just over a year ago by releasing development NuGet packages and publishing the development builds on the main MonoGame.Net website. Still however, there was a drive in the team to do more and make their efforts more public.

Fast forward to today and not only have the team released 2 major updates in as many months but they have also implemented an automated NuGet delivery solution.


Continuous delivery

Thanks to a lot of hard work in the background the team have implemented continuous NuGet delivery in two phases:

  • NuGet package generation on all successful Minor builds to the public NuGet servers, e.g. 3.4, 3.5, 3.6. These should be more frequent than previous builds. No firm schedule has been published yet but we can expect fairly regular now that it is automated
  • Development NuGet package production on every successful MonoGame build. These are published to the MonoGame development NuGet feed (see detail below for using this, not for the faint of heart)

So what do we get? Well, the current NuGet landscape now stands as follows: image


MonoGame goes fully Universal

The obvious main contender that caused two releases in the recent months was the addition of the new Universal Windows Project (UWP / UAP), launched just in time for all the big announcements at the Microsoft Build conference this year. This opens the door to full Windows 10 development and all the platforms it currently supports: image And unlike most other frameworks, this is already available NOW, not a beta, not a pre-release and not just available to a few, but NOWand for everyone.

This means you can start building your MonoGame project for Windows, Phone, XBOX, IOT devices and even the HoloLens (when it is available) right NOW.


Grabbing your releases

Starting with NuGet is fast and easy, just download the installer from the MonoGame.Net downloads page for your platform of choice:

At the moment, you still need the main installer to get access to the awesome MonoGame Content Builder tool. The team are still looking at alternate ways to deliver this tool but for now it is just in the installer. If you wish, you can then start a new project using the built in project templates and/or update your MonoGame / XNA references in your project with the MonoGame NuGet’s mentioned earlier from the public NuGet server. With that you are ready to rock.


Getting ahead of the curve

If you are the adventurous sort you can get your releases even faster (especially if a much needed fix has just been pushed to the repository). You have two options, you can either grab the development release installers (updated with each successful build):

NOTE: The new addin for MonoDevelop/XamarinStudio for Linux is coming soon! For now build from source.

You could also add our develop branch NuGet feed to your IDE to get the latest development assemblies, here is how to add it.

  • Open your Package Manager Settings and select Package Sources (as shown below)

You can get to the Package Manager Settings by either going through your editors Tools menu or using the Manage button when editing/adding your NuGet packages.

image

  • Click on the + symbol in the top-right corner of the window to add a new feed.
  • Select the new option in the top list and enter a suitable Name for your new feed and paste in the NuGet dev feed link (shown below) in to the source field: http://teamcity.monogame.net/guestAuth/app/nuget/v1/FeedService.svc image
  • Click OK and your new feed is ready, Just select it (instead of the Public NuGet source) when adding / updating your NuGet packages as shown here: image

*Note the screenshot above might look a bit different to what you are used to as it is the all new and latest NuGet UI Confused smile Previously feeds appeared as separate branches in the selection tree.

Obviously, if you are extremely crazy, you can also opt to bypass all this install or NuGet option and just use the MonoGame source direct from the GitHub project Open-mouthed smile


Samples a plenty

As ever, the MonoGame project Samples have been updated with the latest releases (Plus a minor clean up fix to tidy up the removal of the old NuGet packages) image

Only the Platformer2D sample is fully supported across all platforms, NeonShooter and SpaceWar are still a work in progress (additionally the iOS / MACOS projects still need updating, mostly because anyone with a Mac is overly busy. I have actually purchased a Mac Mini now so may be able to sort this out)

If you have a sample or project you would like to propose to the MonoGame samples, craft it to the standards used by the samples repository and submit it, we would love to see more. For now we’re working hard to get all our current sample games fully updated across all platforms.


And Yet there is More!

MonoGame is really getting some love of late, especially on NuGet. While checking and testing out the automated NuGet packages, I came across several new packages created specifically to support MonoGame games, here;s just a snippet of what I have found:

These are but a few, keep an eye out for others appearing.


I bid you adieu

Well that is enough MonoGame news for now. Still got to work on my beginner tutorials and a few other bits. Laters

Simon (darkside) Jackson

Simon (darkside) Jackson

Engineer, industry executive, research enthusiast. Avid learner with diverse interests in coding, game development, Mixed Reality (AR/VR/XR) and reinforcement learning. 25+ years of experience working in multinational corporations and startups.

Comments

  Write a comment ...