MonoGame is the latest and greatest if you’re looking to bring your XNA skills over to extra platforms, including the Windows 8 Store. The huge benefit is that the MonoGame namespaces are the same as the XNA ones, allowing for easy porting of existing XNA projects.

The main issue at the moment with creating projects from scratch is that there is no replacement (yet) for the Content Pipeline, and until it is added you have to install Visual Studio 2010 to get XNA Game Studio 4.0 working, or use the WP8 SDK and copy files or use dummy WP8 class libraries.

With a bit of MSBuild magic (disclaimer: not really magic) we can integrate the content build into the MonoGame project build, gain incremental builds and have the files automatically copied and included in any appx packages we may create.
(more…)

ScriptTD Coding Log

January 29th, 2013 | Posted by Michael in Programming - (0 Comments)

Work has officially begun on ScriptTD v2, which will be available for Windows 8 and Windows Phone 8. Part of the goal this time is to demonstrate cross platform development, as well as hybrid applications that use both C++ and C#.

Alongside my work on this, I plan to write a series of posts as I go, discussing my thoughts on decisions made, or unmade. Think of it like a coding journal, as I may backtrack on decisions or change ideas as I explore them. This should also help provide an insight into the code for people who are interested in playing around with it once it is made public, as well as a nice way for me to get answers when I ask myself ”What on earth were you doing?” in a years time. ;)

Design Goals

To kick things off I’ll outline the goals as they currently stand, and my thoughts on each one.

Cross Platform

ScriptTD needs to support both the phone and Windows in future versions, and with the recent changes in Windows Phone 8, this has become really easy to do. Previously the game was written with XNA, which allowed for great platform flexibility, however it locked me into the XNA libraries and I can’t use those for Windows 8 development. Using WinRT components and PCL, I’ll be able to achieve this goal on both of these modern platforms. The unfortunate cost here is that I cannot bring these features back to Windows Phone 7[.5], so you may ask why I don’t use something like MonoGame along with XNA for Windows Phone 7?

Existing Libraries

I want to take advantage of some great libraries out there that have been created for game development, while allowing myself to be in control of the performance on lower end hardware. For this, I want to use C++ so that I can do native development for the core engine. The side benefit is that I can also use existing libraries for physics and maybe even pathfinding, to help speed up development.

Using C++/CX, I can bind the engine to gameplay code written in C#, which allows me to gain the benefits of C# for gameplay code, while keeping the bits that require higher performance in the native realm.

Animations

One of the missing features from the original ScriptTD was animated sprites. This was a rather large oversight that wasn’t formally resolved, but will be covered by v2. I also want to look at ways to allow objects to have moving parts that are animated “procedurally” so they can look at or target other objects or positions.

Better Entity/Object System

Another big goal is to use an entity system that allows for easy expansion in future, as well as one that lets me bind objects together in a data driven manner if desired.

Zooming/Multiple Resolutions

In moving to Windows 8, we need to support different screen resolutions and DPI, to allow the game to be played on any res from 1366 x 768 up. Alongside that, there needs to be a nice way to support the phone, and the different form factor there without essentially creating a second game. (That would defeat the point of having a cross platform engine and game)

 

Windows Azure Resources

January 22nd, 2013 | Posted by Michael in Cloud | Games | Programming | Windows 8 - (0 Comments)

This is a small resource for those participating in Global Game Jam, interested in adding cloud features to their game.

Your first stop should be Azure.net, where you can get the latest tools and setup an account.

Azure has official support for the following languages/frameworks:

  • .NET (C#)
  • Node.js
  • Java
  • PHP
  • Python

IF you don’t want to use the above, we also have support for C++ or even just accessing the Azure APIs using the REST interface. (An example of Mongoose running in Azure: http://blog.smarx.com/posts/tutorial-running-the-mongoose-web-server-in-windows-azure)

For all options, check out http://www.windowsazure.com/en-us/develop/overview/ for details on developing for Azure, or check out the couple of suggestions below for ideas on how you can apply the cloud to your game.

Leaderboards & More

For leaderboards you want responsive database access to insert and read data, and for this you need go no further than Azure Mobile Services, or AMS for short.

AMS offers three big features that you can take advantage of:

  • Easy Table Storage
  • Easy Authentication via Microsoft, Twitter or Facebook accounts
  • Built in Push Notifications

With table storage you can easily access database/table stored data from your application, and add server side scripts to perform validation or data retrieval. Dynamic Schemas allow you to define your tables in code, and simply push data to the service to create or update the table structure. You can easily get started storing data online within minutes. (I’ve tried this, and do recommend it)

We also offer directly integrated authentication using the Microsoft Account service, Twitter or Facebook. You can offer your players the choice of using any of these systems for Single Sign On, or don’t, this isn’t required to use the other features.

Azure Mobile Services are designed for use on phones and tablets, so push notifications are built right in. You can easily trigger a push notification based on data operations, or scheduled scripts.

AMS offers APIs for Windows 8, Windows Phone 8 and iOS.

http://www.windowsazure.com/en-us/develop/mobile/

Website

Whether you just want to make a site for your game, or host a Unity Web Player instance online, Azure Websites allows you to get up and running quickly. Best of all it supports direct git deployments so you can quickly and easily push changes to the site or game without having to work through the web interface.

http://www.windowsazure.com/en-us/home/scenarios/web-sites/

File Storage

One of the big things being added to platforms like Xbox LIVE, Steam and PSN is the ability to save your games in the cloud, allowing access from anywhere. (or even any device) Using Azure Storage Services you can easily upload and download files so you can offer these services (or others) to your players.

http://www.windowsazure.com/en-us/home/features/data-management/ (See BLOB Storage)

Virtual Machines

Azure also allows you to create virtual machines online, in case you need to host a server or some other custom code and want much more control than the above options provide. Azure offers Windows and Linux VMs, which give you all the flexibility you need.

http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/

Everything Else

Got an idea for a way to use the cloud that isn’t covered here? Visit the Windows Azure Developer Overview and get any of the tools you’ll need.

Migration

January 9th, 2013 | Posted by Michael in Uncategorized - (0 Comments)

This is just a quick notice to say that this blog will be changing technologies soon as WordPress keeps breaking things I use, like the posting functionality. (Writing this on my phone)

The blog URL won’t change and I’ll try and keep the RSS URL the same, but old posts may not exist afterwards, depending on how the migration goes. If you want content from any particular post please be sure to grab the info now.

Thanks for reading and I hope you will join me when the new blog is setup.

WOWZAPP 2012 Resources

November 12th, 2012 | Posted by Michael in Programming | Windows 8 - (0 Comments)

On Saturday we ran WOWZAPP 2012 in Sydney at Microsoft Australia. These are my slides from the event:

Free + Open Source Libraries and Tools
XNA to MonoGame
Intro to Game Dev with Construct 2

You may need to download the .pptx to view the slides.

Game Connect Asia Pacific 2012

October 25th, 2012 | Posted by Michael in Uncategorized - (0 Comments)

This week I had the pleasure of speaking at Game Connect Asia Pacific 2012 (GCAP), an Australian video games conference held in Melbourne. It was great meeting so many new faces from the Melbourne game development community, as well as the people I already knew from the Sydney community, many of which flew down for the conference.

I gave a talk on what Windows 8 means for game developers, from the new features they can take advantage of, to the store and certification process. There were many great questions but I saw that I could not get through all of them, so if you attended and have a question, or even if you didn’t attend and want to know something about developing games for Windows 8, please get in contact with me, I’m happy to answer any questions that may arise.

I have also uploaded my presentation slides in case anyone needed information from them, you can find them here: http://sdrv.ms/RFme4Z

If you had the chance to attend the recent Tech.Ed Australia 2012 conference on the Gold Coast, you may have seen my face during the keynote, on the giant “This is DPE slide”. That was not a mistake.

Now that I’ve had a chance to settle in, I figured (with prodding) that I should announce that I was offered an internship with Microsoft Australia as a Technical Evangelist within the Developer Platform Evangelism team. (DPE)

I’ll be focusing on game development in Windows 8, and encouraging/supporting developers who want to develop or bring their games to the platform. If you’re a game developer in Australia and want to have a chat, get in contact!

If you’re an XNA developer, remember that there are ways to port your game with minimal effort. So if you haven’t already, I’d strongly encourage you to take a look at MonoGame and bring your game into the Windows 8 store.

It’s also an awesome time with Unity and UDK support announced for the platform. So if you’re in the process of developing a game, or are thinking about starting, you really should take a look at making sure Windows 8 is supported.

The best way to contact me is through twitter: @quandtm

You can also leave a comment on this post if you have any questions.

Overview

Recently I’ve had a number of requests for a sample that goes with the Action Based Input Manager article I wrote back in 2010.

While I don’t do a lot of XNA these days, I thought I’d write a quick piece on how to quickly get started with the code I did provide.

Download Source Zip (more…)

xAuth in Instapaper

July 31st, 2012 | Posted by Michael in Programming - (8 Comments)

Recently I was working on an Instapaper application for Windows 8, and had to tackle the issue of xAuth as a login mechanism. For those who don’t know, xAuth is a way of bringing some of the benefits of OAuth to the traditional username/password workflow. The idea is that if you have a mobile device that cannot easily delegate the login to a webpage hosted by someone else (with callbacks and tokens and all that fun) you can just gather the username and password, get your OAuth access token & secret and then discard the username and password, never storing the sensitive details locally.

Instapaper uses xAuth for its authentication mechanism, although unlike twitter, xAuth is the only option available for logging in. After fighting with xAuth (and bad documentation) I’ve finally got it working, so here are the steps, and things to note, to get an access token.

Before you begin you need to have a Consumer Token and Secret, these can be accessed by contacting Instapaper and describing your application as outlined in http://www.instapaper.com/api/full (more…)

Recently I haven’t been able to work on ScriptTD as much as I want to because of University assignments and work, however I do still think about what can be done to make v2 even better. Currently there is a list on Trello with some previously suggested ideas, including some of my own. (Trello list here: https://trello.com/board/scripttd/4eb9c108b4a843a14b053155)

However I recently thought about the feasibility of adding Windows 8 support to ScriptTD with SharpDX. Right now ScriptTD is written using XNA, and for the phone this is the only option. If the core of ScriptTD can be separated from the XNA libraries with appropriate wrapping, it will certainly be possible to add simultaneous support for both systems, and right now this looks like the best way forward.

That all said, this means that work will need to be done on the wrapping layers, and I will need to talk to Microsoft about the idea, to see if they want to help create or extend the sample for Windows 8, as this would require higher resolution art assets for the generally higher resolutions Windows 8 enjoys.

Thankfully Alexandre (the creator of SlimDX) has announced that SlimDX 2.1 would go live this week, so I can start working against that version soon.

More progress as it happens, hopefully sooner rather than later.