Android, Android, Entertainment, Games, Programming, Technology, Unity, Video Games

Multi-platform – The real advantage of Unity

There have been quite a few mechanical additions since my last update, but the most significant thing in my latest video is it is the first on a non-Windows platform.

Unity has a large list of platforms it supports and a lot will work on all of them with no effort. For example, Gravitas currently builds and runs on Windows (Win32 and Windows 8.1 Store), Mac, Android and WebGL. With the exception of adding some settings (the Android package name for instance) I didn’t have to do anything platform specific for any of it.

Although there are very few hard limitations on what can be done on the different platforms, the wildly different performance characteristics mean you do have to think about different problems.

A more straightforward problem I recently solved (after the Day 20 – Android video was made) was to decide how to deal with different mobile device orientations.

My general philosophy is to try and support everything, so although landscape feels most natural for Gravitas, there isn’t really a reason not to support portrait. In fact, since the camera will adjust its zoom level to keep all the world on screen, it already supported portrait, albeit rather awkwardly. The dynamically generated levels are designed to have approximately a 16:9 aspect ratio. This means in portrait you get massive empty space above and below the planets, while making everything smaller than necessary. The solution? If the aspect ratio is less than 1, rotate the camera 90 degrees. This not only means portrait is supported, but in fact a far more general case of portrait-like aspect ratios is supported (and even better, has no mobile specific code at all).

Books, Entertainment, Reviews

Atonement (Star Trek: Voyager)

Although the title suggests this is just a review of Atonement (and is biased towards it), this is really a review of the three Voyager novels The Protectors, Acts of Contrition and Atonement which essentially make up a single story.

As a warning, this book (and by extension this review) contains heavy spoilers for the Destiny series, and the earlier Voyager relaunch stories (Full Circle to Eternal Tide).

Atonement (Star Trek: Voyager)

★★★★☆

Oliver Brown

2016-12-15

product

Voyager and its crew and allies face some of the consequences of their first trip through the delta quadrant, while Seven of Nine struggles with the changing attitudes of the Federation following the events of Destiny.

One of the reasons I like Star Trek now is the sheer wealth of material available. The novels have been going from strength to strength, expanding the material in ways that would not have been possible while the show was still on TV. Despite this, I was a little concerned when the Voyager relaunch series began in Full Circle and immediately introduced a lot of new characters at once, and did so in a way that suggested they were going to stick around and be important. I think this trilogy has proven the idea was worth it.

At its core, there are two stories going on simultaneously, one in the Federation and one with the Full Circle fleet in the delta quadrant. Plot-wise they have nothing to do with each other and could have happily existed in separate works. Despite this, they do work well together solely because of the complicated relationships between all the characters – partly the existing ones between the characters we all know, but also significantly with the new ones introduced. Characters’ actions were frequently motivated by their relationship with those in the ‘other’ story so this structure helped emphasize this in a way that would have been lost had they been separate.

The Federation storyline deals with unexpected fallout from the destruction of the Borg. Seven of Nine and Tom Paris leave the Full Circle fleet to help with this in a story centred around the ethics and morality of the Federation trying to rebuild too quickly. Both Seven and Tom have to deal with the fact that they’ve spent years with a crew who respect and trust them, but now have to face an outside world that doesn’t. After all, Seven is not only a former Borg drone, but also one of only a handful that didn’t join the Caeliar gestalt; while Tom is still regarded as rebellious (and only kept in Starfleet due to Janeway’s influence) as well as reckless because of his handling of the situation with his daughter in Unworthy.

Described broadly, this idea of characters redeeming themselves, and being better than they appear is a common plot for Star Trek. But it is also one that works well, especially because of the complex interactions with the secondary characters (The Doctor, Axum, Samantha Wildman, Icheb and Admiral Akaar all feature to varying degrees).

The Full Circle fleet storyline also follows another typical plot found in Star Trek: how the Federation deals with large powers that don’t quite match their ideals, and specifically what happens if they try to subject a member of the Federation to their own idea of justice. Unfortunately, the ultimate resolution to this ends up a bit weak, but as consolation it leaves the door open for more in the future.

Constantly switching between the two plots is a little frustrating at times, but only because each one is so engrossing. During it all,  the new characters in the Full Circle fleet get enough time to get some depth and feel important (and in some cases like Liam O’Donnell, to stop feeling like one-dimensional caricatures). This didn’t blow me away like some have (like DTI: Watching the Clock or the Mirror Universe series), but it’s better than most other recent novels and is definitely the best of the Voyager relaunch and worth reading if you have any interest in Voyager. Although you should probably start at Full Circle and read them all.

Entertainment, Games, Programming, Unity, Video Games

Unity Cloud Build

First, a video of the latest progress. Now includes aim lines.

Second, if you aren’t using Unity Cloud Build, you should be.

Over the past few years, the importance of automated builds in software development (and the wider concept of continuous integration) has grown in importance. In my day job, setting up automated builds is one of the first thing that happens on any project. The details tend to be different for different platforms and it generally requires a fair amount of maintenance. The good news is, Unity do most of the hard work for you, and across most of their platforms, and surprisingly, for free.

 

Entertainment, Games, Programming, Unity, Video Games

Technical Spikes vs MVP

In software development (and product development in general) is a concept called MVP or Minimal Viable Product. According to Wikipedia it is “a product with just enough features to gather validated learning about the product and its continued development”.

My plan was to develop a Gravitas MVP in Unity and release it as quickly as possible. After reading a bit about some of the cool things I can do with Unity quite easily that would have been hard before, I inevitably got distracted. But it’s okay, since technical spikes are also an accepted part of software development (again thanks to Wikipedia: “a product-testing method that is used to determine how much work will be required to solve or work around a software issue”).

Specifically, one of the things I wanted to do in Gravitas was add a real lighting model, probably using normal mapping on the sprites. I had read up how to do this in MonoGame, but decided to see how quickly I could do it in Unity. The answer was about 2 hours. That includes the time to create the normal map for the ship (and finding a tool to help do that).

The tool I used incidentally is Sprite Illuminator from a company called CodeAndWeb. If you plan to do any 2D games I suggest you check them out. Their tools all come with trials, and the only reason I haven’t bought it is yet, is I’m deciding which bundle to get (I’ve already used Sprite Illuminator and I’ll almost certainly use Texture Packer. Physics Editor is probably less useful to me, but is only £10 extra with the other two).

Entertainment, Games, Programming, Unity, Video Games

Embracing Unity

For a long time, I’ve avoided Unity. The biggest reason was inertia from working with MonoGame, but I was also put off by the prospect of old versions of Mono and C# as well as being generally suspicious of development being so “editor focused” (I’ve tried quite a few drag-and-drop game development tools and ultimately found them frustrating).

But I’ve decided to get over it and have a go.

The number of amazing games released that have been made with Unity has persuaded me the last point is not an issue (or perhaps no longer an issue). More importantly, there have been a few specific recent developments that have piqued my interest.

Unity joined the .NET Foundation. Unity’s .NET support always worried me a little. Using old versions of Mono and C# was bad, and their support for JavaScript made me a little worried they might just drop C# altogether. This is obviously not going to happen now (at least in the near future).

Related to the previous point (but more to do with Mono being released under a permissive license) is that they really are pushing forward with an updated version of .NET.

The final reason is the discovery that Distinctive Games, a mobile game developer I used to work for have decided to use Unity for (at least) one of their upcoming games, Downhill Extreme 2.

The net result of this is that I have started working on another version of Gravitas in Unity. And after about half an hour I have a star field, and a ship (with a colorizable section) that rotates when you press left and right.