New Frontier

2016-01-23_1645

I’ve often referred to myself as an “indie flash game developer” with respect to LostVectors.com. This has been true for the majority of this site’s existence. However, within these past few years I’ve been expanding my skills and lately I’ve been toying with Unity. Specifically, I wanted to see what it would take to port a version of SpaceCraft (currently developed in Flash-Starling/Flox) to Unity.

I got a version with simple combat functioning within a couple of days. I tested the performance and it seemed to run comparable to the Flash/Starling version. I might still have some room to optimize but so far a Unity version seems feasible.

2016-01-23_1656

I imported my ship data from the current web version of SpaceCraft to test actual game data in the Unity version (without having to build the UI system to create new ships from scratch).

2016-01-23_1724

So now there’s no doubt that I can make a 2D space game in Unity, but one of the major advantages of using Flash/Starling was the ability to us Flox for the back-end. A big part of the SpaceCraft is the user-created content. So if I’m going to create a Unity version, I need a new back-end system (Flox does not support Unity). After some googling I came across GameSparks. This looked promising so I created some prototypes which helped me successfully prove the feasibility of GameSparks as a replacement of Flox for storing player data and storing and sharing player created ships.

Gameplay – check
Back-end – check

Now what about UI and being able to port to mobile?

Unity export to mobile – check (Unity is great at publishing to all sorts of platforms)

That leaves UI.

With Starling/Flash I was able to utilize a framework called Feathers. This framework was great at getting high-performance UIs up and running for Starling/Flash games. It provides some nice built in components and features but was a bit cumbersome to work with because it was all code driven; you could not drag-drop UI elements within an editor like Flash and then load at runtime.

Unity up until version 4.6 had a really poor built in GUI system. Most Unity UI development was done using a third party UI framework, the most popular being NGUI. This is $95 on the Asset store and was pretty much a must buy prior to Unity v4.6. Since Unity 4.6, Unity has unleashed its revised GUI framework uGUI which comes built in. Both NGUI and uGUI are similar in how you work with them in that with them you can create UIs from within Unity and save them as “prefabs” for later use. This is a much more powerful approach than a purely code driven approach since it enables rapid iteration and adjustment; you can see pretty much how a UI will look without having to compile and run your app. Since I tend to create gameplay features as I go (I don’t have it all figured out from the beginning) it’s nice to be able to change things quickly. With Feathers, it would take time to change anything already implemented in a UI and when you only have a few hours here and there to work on this project you tend to find excuses why the existing UI is good enough. When you can rapidly change and iterate, you are more likely to try out new things that may or may not work out.

I’m currently developing UIs in Unity with uGUI (since it’s free) and I’m thoroughly enjoying the experience. My initial task with UI was to convert the existing SpaceCraft Build Ship UI. I start out with just laying out components that look the same. I had planned on then adding functionality to match exactly the current functionality, but it was so easy to imagine and lay out new UI elements that I started re-designing things in the layout stage.

2016-01-23_1824

The ghosted image is the reference from the existing version of SpaceCraft. I then placed this into Unity and started building UI elements right on top. I was able to even use my existing TexturePacker sprite atlas from the Flash/Starling version to get UI and Ship Part assets into the Unity version. As you can see, I’ve re-imagined some of the layout a bit, but this is still not final.

I’m still hard at work on things. Still making games :)

Stay tuned for updates.