Tips and gotchas for Windows 8 apps: Day of the Living Dead

Day of the Living Dead 

A team of students from Vancouver talks about the experience of bringing a Unity game to Windows 8.

This series features interviews with student Windows 8 app developers who share the lessons they learned building windows 8 applications.

This week’s interview features Team Hungry ECE Programmers, a student team from UBC Computer Engineering who built a game called Day of the Living Dead

Could you briefly describe your application/game?

In a world where zombies want to become humans, a saviour uses a heartbeat to lure zombies to the church to convert them back into human form. Keep humans alive as long as possible. Tap the mouse cursor to generate a heartbeat that lures nearby zombies and direct the zombies towards the church. Keep yourself from dying from a heart attack (full red health bar).

Further instructions are available at:

Did you use .NET and XAML, HTML and Java, or DirectX and C++

We used the Unity Game Engine to develop our game. We chose Unity because it is easy to use for developing games. We scripted the gameplay in Unity using C# and JavaScript. The game was exported using the Alpha release of the Unity 4.1 Windows 8 plugin to a Visual Studio project.

What was your banging your head against a wall moment?

To publish the game for the Windows store, we exported our game from Unity to a Visual Studio project using the pre-release Alpha of the Unity plugin for Windows 8. Because this plugin is pre-release, there were unsupported features as well as bugs.

The exported project failed WACK because of two unsupported third-party dll files, NGUI.dll and boo.lang.dll. Trying to figure out how to get the app to pass WACK without using those two dll files in the visual studio project was the most frustrating part of the submission process.

Did you ever solve that issue?

The NGUI.dll file was a relatively simple fix. When we developed the initial version of the game during the Global Game Jam, we made many of our scenes using the NGUI framework but displayed unsightly watermarks in our game. After the Global Game Jam, we decided to spend time redesigning our scenes to remove the NGUI framework. When we were ready to export the Unity project, most of the NGUI framework was removed from our game already. The solution was a simple matter of deleting the unused NGUI framework from our project.

The more problematic dll file was the boo.lang.dll. It took me a long time to discover that the dll file was required for all the JavaScript game scripts we originally wrote in Unity. I could not just simply delete files to solve the failure as I did for the NGUI.dll. Upon looking at the website for the alpha program of the Windows 8 plugin, I found out that JavaScript was yet supported in the alpha release. This meant that there was no simple solution to resolve this error. The only solution was to rewrite half of our game scripts in C#, which is supported by the plugin. After exporting the project again, I just needed to delete the useless boo.lang.dll files and the app passed WACK.

If you had to build this same app again from scratch, what would you do differently?

During the development of our game, we never considered screen size and resolution. We should have considered positioning the objects so that it would be dynamically adjustable when people play the game on different resolutions. When making the user interface in the Unity Game Engine, we developed and optimized the game in a small window instead of full screen. When playing the game in full screen, the user interface does not fill the whole screen. When using different resolutions, game objects appear in slightly different locations.

We could have put more emphasis on playing the game on a touchscreen. Our gameplay was designed for a mouse click. We thought that tapping a touchscreen and using a mouse click would be no different. We found out that when playing our game on a touchscreen, there were some minor inconvenient issues. After tapping the touchscreen, the location of the cursor would not stay at the position tapped, but instead would move back to the location of the mouse cursor before the screen was touched. This made it difficult for players to see the radius of the heartbeat cursor.

Any nice surprises?

Upon exporting the Unity project to Visual Studio, I was able to compile and run the game in Visual Studio without needing to make any modifications. I was expecting to fix compilation errors before being able to run the game in Visual Studio. The game looked the same as it did when testing it in the Unity Game engine, which was unexpected as I was prepared to make changes to the user interface to optimize it on Windows 8.

Did you leverage the mobile platform?

No. During the 48 hour Global Game Jam, we exclusively developed and tested on laptop and desktop computers. After winning the Microsoft Surface Tablet, I exported the game to ARM and installed it on the Surface tablet, which we used to demo our game at the UBC IEEE project fair.

Did you leverage touch?

We use the mouse cursor to control the zombies in our game. The game is playable by tapping the screen, although using a mouse is preferred

Did you have a favourite Windows 8 feature?

Exporting our Unity Game into a Visual Studio project and being able to publish it the Windows Store with few modifications.

What is one thing you think you did really well in this application?

In the 48 hour Global Game Jam, our group was able to develop a game. Only minor modifications were made to enhance the game after the Global Game Jam before submitting to the Windows Store. Modifications were made to make the game easier, since the feedback received during the demonstration period of the Global Game Jam was that our game is too difficult. We also decided to remove the NGUI framework due to the unsightly watermarks that it displayed on the user interface.

Are you publishing your application/game?

The game is already published on the Microsoft Store.

Did you fail certification? If so what caused you to fail, and how did you fix it?

The game failed the WACK tool but we made changes to ensure the WACK tool passed before submitting the app for certification in the Microsoft Store.

Where can I learn more about your app/game?

Who developed this application?

Our group is composed of six 4th year computer engineering students (Crystal Ng, Joanne Chow, Peter Yeung, Brian Lau, Timothy Tang, and Steven Chow). We are all graduating in May 2013.