Brawsome Speaks About Unity and Hero-U Programming
I'm getting this update in the mail a little earlier than usual - I have this strange idea that just once during the Hero-U Kickstarter I might get to bed before 2 a.m.
Hamwizen posted a new interview about the game. Read it at http://talesofham.blogspot.com.au/2012/11/so-u-want-to-be-hero.html.
With about an hour to go, we added 160 new backers and about $13,500 to the till today. Welcome to the Hero-U student body! We need to make another $115,500 in the next 4-1/2 days. Of course, the more we bring in, the better we can make the game. Extra funding means extra art, music, design, and programming.
On the latter topic, today I'm going to let Andrew Goulding, head of Brawsome, talk about the development process in Unity. He has lots of examples from his two most recent games, MacGuffin's Curse and Jolly Rover. Both games are available as add-ons to Hero-U; check the main project page.
Warning: Some of this is pretty technical. If your eyes start to glaze over, look at the pretty pictures for a minute, then skip to the next part... or to the next pretty picture. I know that's how I read tech specs, after all. :-)
Bringing Unity to Hero-U
For Hero-U we’re using Unity. Why is this good? Well, Unity is a professional grade engine that can make anything from a AAA blockbuster to the smallest indie project. What this means is we have a powerful and professional game engine that can do just about anything a modern game can do, for a reasonably low price. In addition, it supports many of the top platforms, including PC, Mac, iOS, Android and Linux, though that’s not to say it’s just a matter of pushing “build” to target these platforms, but that’s another story entirely.
Because Unity is so flexible, powerful and cheap, it’s being used in a lot of projects, so has a large and active community, which means if you’re trying to do something, chances are someone has already done it.
One of the downsides of Unity though is it’s never been that strong on the 2D capability, because of this Brawsome uses 3rd a few party libraries to bridge this gap, these include Sprite Manager 2 and EZ GUI from Above and Beyond Software. It’s not that I *couldn’t* write this software myself, but writing the software is the easy part, the countless hours of robust testing across a number of platforms and game types, and performance optimization and bug fixing is where the real value lies.
This is another reason Unity is great - Because of the volume of people using it, there are many great 3rd party plugins and add-ons at a reasonable price to plug any gaps in the engine, such as supporting iOS Cloud, or Steam integration. And now with Linux support being added, I’m certain we will start seeing Linux-related plugins popping up as well, mostly like from the Linux enthusiast community.
One of the reasons I haven't yet ported Jolly Rover to iPad, where it would fit perfectly, is because it was created in an engine that only supported PC and Mac, and because the engine was a closed system, porting it would essentially require writing a new engine. When making MacGuffin’s Curse the first thing I did was look at the available engines and determine which supported the most platforms, had the best features, support and community. Unity ticked all these boxes.
If I had made Jolly Rover in Unity, it would be on a number of platforms today instead of just PC and Mac – in fact, work has already started on a full engine port of Jolly Rover to Unity, but the golden quantity of time has been one that has been hard for me to come by. It’s actually just about there, but work and family life has left scant hours to dedicate to this fully.
Study Pays Off - Lessons Learned
For Hero-U, it will benefit greatly from the lessons learned and the hard yards gained through development of MacGuffin’s Curse. First and foremost being an understanding of the engine, its capabilities and how to get the best performance out of it across desktop and mobile devices. Also the tile system and editor which allows rapid development of levels. And important high-level systems such as audio, sprite animation, character state, movement, AI, global state variable, and the powerful trigger-action system that allows heavily scripted events to be quickly hooked up.
These systems were all fairly straight forward for me to put together, having worked in game content programming for the last 10 years, though one system bears talking about because it is fundamental to adventure games and especially handy for localization – the string system.
String 'em Up, Lads!
The string system I developed in Unity was based on the one I used in Jolly Rover, which used Excel documents to contain all game strings in <ID, string> pairs. This is great for localization because when it comes time to translate them, you can hand off a series of Excel documents to the translator, and when you replace them in the game it’s more or less localized (though there are always font issues, and string lengths to deal with).
The way it works is in game, instead of writing a string such as “Press start to play” I can reference an id such as “press_start”, then when the game runs it looks up the string table and replaces “press_start” with the appropriate string – in any language. Though this is all well and good for simple strings, but adventure-style conversations are an altogether more complicated beast.
I first extended the Excel string system to let me specify the character name, pose, and so on. But I wanted more flexibility, so I came up with a way of inserting C# code into Excel spreadsheet cells. This allows the conversation system to do literally anything supported by the game engine during a conversation. Saying the wrong thing could even lead to combat!
A Battle of Wits Against an Unarmed Opponent
For Hero-U this conversation system will prove VERY interesting as it can be easily extended to give us a dynamic fight system, not to mention giving Corey and Lori the tools they need to make interesting and surprisingly dynamic conversations – something they might not have been able to do with the AGI, SCI or other Sierra engines. If we’re able to go ahead I expect lively battles of wits and weapons in the conversation system – not to mention any manner of dynamic puzzles involving the physical or intellectual world.
The first game that is created with an engine normally takes a long time, much of which is spent developing the tools, it is normally the second iteration of a game in the same engine that allows it leap further, adding polish and bending the tools in new and exciting ways (i.e. Maniac Mansion - Monkey Island - Monkey Island 2). In many ways the hard yards of the engine development are behind us, and all that is left is for creativity to shine through. With the team backing us on Hero-U I hope you’re as excited as I am to see what we can produce!
Backer Video from Bashar
One of our very active backers, "Bashar", linked me this video explaining why he thinks it is important to fund Hero-U: Rogue to Redemption.