Dev Blog: Introducing Wulverblade’s Technology

It’s time for the first real dev blog post. I’d like to start out by giving an overview of the technology choices we have made so far making Wulverblade. I won’t be going into details about the tools and process on the art side since that isn’t something I know as much about. This will focus on the development environment, engines, and tools we’ve chosen from a programming and development perspective.

The first thing to introduce is the core tool and engine choice we’ve made: Unity. Before now this may have only been controversial because it did not have a lot of built-in focus on 2D games and Wulverblade is a sprite-based 2D game. You may know exactly what I mean by “sprite” but in case you do not what I mean is that every object you see in the game is actually completely flat. Any depth is an illusion created by either effects or the excellent art itself. Given that we are very comfortable with Unity from past work – in both 3D and 2D – it was an obvious choice for us. The benefits of building our own engine are far outweighed by the costs. We probably would still be knee-deep in engine programming now, but instead we’ve been able to leap forward with game development and the project is already in a stable playable state. That’s the power of out-of-the-box engines with mature editing environments like Unity. There are other similar options out there – like Unreal – but our past experience with Unity allows us to move so quickly.

Wulverblade in Unity

Wulverblade’s Development Environment

Looking at the 2D art in orthographic mode

Looking at the 2D art in orthographic mode

You can see in the two images above that when viewed from an angle all of the objects you see in the game are flat. They are also spaced out in the 3rd dimension. However when viewed head-on, as it will be viewed when playing, the layers combine together to produce the final effect.

With the release of version 4.3, Unity has started to roll out more built-in support for 2D games but it is still very new and it was released after we had already begun development. For now, we have chosen not to switch to using these new features. However, if you are just starting a new 2D project I think it would be worth your time to check out what Unity has added.

The asset store puts a ton of content at your fingertips

The asset store puts a ton of content at your fingertips

One of the great things about Unity is the explicit support the company has for user-created plugins and tools that augment and change Unity. They even have their own store – the Unity Asset Store – built into the editor. What this means is that there is a thriving community of tool and content developers selling their stuff to other users. We chose to use two very solid and mature systems on sale in the Asset Store for our 2D needs: 2D Toolkit and Smooth Moves. 2D toolkit provides a lot of awesome utility functionality both for editing and runtime engine features related to 2D sprite games. Smooth Moves is a 2D animation tool built right into Unity. It provides a timeline-based editing window that lets you animate your sprites very similar to how you would in Flash and since it integrates completely with Unity’s built-in animation system it was easy for us to put it together with a lot of our other animation scripts we have accumulated from working with Unity for years.

2D toolkit has a good editor for putting together and displaying sprite animations

2D toolkit has a good editor for putting together and displaying sprite animations

This brings up one of the issues we had with the connection between the art team and the development team: how do we get Mike’s sprites and sprite animations into the game? He had already done a lot of work in Flash to create these characters and backgrounds and many of them with complex animations. Would he need to redo all of that work again with the Smooth Moves editor? We decided this was not a good idea. This is an important lesson we learned prior to this project and an attitude we brought with us when we started working with Mike: accommodate your artists. Mike is very comfortable in Flash. That comfort means that he can produce high quality very quickly. If he needed to learn a new system – in this case Smooth Moves – it would have been wasted time because it does not actually provide any benefits for the art process over Flash. Instead we took some time to create a 2-sided tool for bringing his artwork and animation into Unity directly. We created an export tool for Flash which would create a file which was then digested with a paired tool in Unity. The result is a sprite collection in Unity that works with Smooth Moves. Our technical artist, Evan, can then do some clean up work using Smooth Moves on the sprites and animations and they end up looking exactly as they did in Flash. Mike, not needing to worry about this process, can then carry on creating more art. This process means we can bring a fully animated character from Flash and into the game in a few hours.

Really simple tool for pulling artwork from Flash into Unity

Really simple tool for pulling artwork from Flash into Unity

One of the areas that I have historically been disappointed with has been how we handle audio. In the past we simply used the Unity built-in audio systems directly and the lack of a higher-level framework felt very limiting. This time around I decided to do some research before putting any audio into the game and ended up picking another system from the Asset Store: Master Audio. One of the cool things about this is that audio clips can be assigned to groups which allows you to control many sounds at once. It provides a lot more options for controlling volumes. It also provides built-in support for sound variations which means I can simply tell the system to play the “sword strike” sound and it will play one of the many variations the sound team created. It is a tiny convenience since grabbing a random number and choosing a clip based on that is not very difficult but it is these small conveniences which allows us to focus on more core game development instead of engine development. I very quickly realized how good this system was when I was able to fashion together a “voice-over” system for playing our narrator over the game audio in just one day. The sound effects and the music both lower their volume automatically and then come back up to full volume after the voice over is done playing. All this with one function call that our level designer can access without needing to look at code.

Master audio inspector lets us set up the sounds in each scene

Master audio inspector lets us set up the sounds in each scene

This brings us to one of the more frustrating areas from previous projects: cutscenes. Usually when we talk about cutscenes we think about sections in the game where control is taken away from the player and a set sequence of events takes over completely and plays from beginning to end. Sometimes you are allowed to fast forward or skip this sequence. This kind of functionality could be much more generally useful. For instance, in the main menu after you have selected to play the current Wulverblade demo we want to play some particle effects, some sounds, fade some elements in and some other elements out, and it all needs to be done at different times. All of this could be programmed specifically for the main menu. That will work but then the only people who can really understand what is happening and how to change it are programmers. Instead we can use a generic “sequencing” tool to do all of that. We can do simple sequences all the way up to full-blown cutscenes. For this we did a ton of research. A good tool should be easy for programmers or artists to use, powerful enough to create any kind of sequence we need, and extensible so someone like me can add more functionality that might be specific to our game. The most difficult thing here is the user interface of the editor. Making timeline-based editors like this is hard and making one that is completely robust but also very functional is not at all easy. We finally decided to go with uSequencer – another Unity editor extension available in the Asset Store. So far we’ve been very happy with it.

So far uSequencer has been a very helpful tool

So far uSequencer has been a very helpful tool

I hope this was an interesting introduction to Wulverblade’s development. What I’d love to hear is any feedback. Leave a comment with any suggestions for future blog posts or if there is anything specific you’d like me to cover in more detail. I’d also be interested in hearing if anyone solved some of these problems in a different way.

  • indiebynight

    Very informative post. The analysis of your workflow and tool selection was definitely enlightening. The art looks great too! Best of luck!

  • A good read, love insight in games dev, and I like their attitude of keeping you in Flash, Mike, and making tools to accommodate. Will these tools be open-sourced or released?

    • Brian

      Possibly. It is basically an interchange format between flash and
      SmoothMoves in Unity. I don’t know if we will release it or not yet. It
      may be too specific to how Mike organized the animations in Flash so it
      may be of limited use to other people.

  • titaniumapple

    Really interesting! Love the screenshots too

  • Verbal Vigilante

    A brilliant post! Great to see how the Dev Team at Darkwind Media are building the world of Wulverblade. Top work guys :)

    • michaelheald

      I need to get you guys hooked up with your blog accounts so that you can fire up a quick overview of your magical work too :)

      • Verbal Vigilante

        Defo Mike! :)

    • Brian

      Thanks. I’d love to dig more into how we are working with the sound assets in the game. Perhaps a quick post about how you do sound production would be great.

      • Verbal Vigilante

        Yeah, we’ll definitely have to do a post on the dark art of music/sound-design for Wulverblade!

  • michaelheald

    Nice post chaps!

    These guys have been so, so accommodating to my dainty artistic needs ;) Being able to continue with Flash has been a godsend, as the prospect of having to re-learn animation in an entirely new package had me shaking at the knees.

    This has also panned out well with the 2D FX team too as both of the guys use Flash as the basis for all their animations. Its all coming together!

    I cannot express just how much awesome the Darkwind team are bringing to Wulverblade. Its beyond belief. We’ve even got it hooked up to an arcade machine now and working like a dream! Once we’ve released the next trailer with some in-game footage I’ll fire up a video of the game running on the arcade cab. Its a thing of pure magnificence :)

  • Craig Whyte

    This was a brilliant read that highlights how well the artistic and code minded can work well together. Being an arty creative type I can sometimes struggle to get the best out of Unity as the code side can blow my mind…..I just can’t seem to get my head around anything more than the very basic code principles. I have manage to find a couple of developers who I work well with as we complement each others skills. The games I work on with them always end up being being far superior in look and game-play to the ones where the developers don’t care about the relationship and just want to work ‘on their bit’ alone.

    I can’t wait for this game as it seems like you guys have got it spot on with working together and getting the most out of very talented people with different skill sets.

  • Brian Hunsaker

    Thanks for the Master Audio mention guys (I’m the dev)! Your game looks awesome, I enjoyed reading about the process. Contact us directly with any support you may need!

  • Fito Casella

    This is awesome.

    I’m a Unity game developer too and was just researching about Spine (between other tools for my team) when I stumbled upon your dev blog.

    I find it extremely valuable that developers write about their process an share thoughts and ideas.

    It would be great to have an update on these technologies.

    I have some questions and if you guys don’t mind answering them I would be very happy :D

    Have you fully switched to Spine or do you use both Smooth Moves + Spine?
    What about Master Audio? I’ve been working with Tazman Audio’s Fabric but Master Audio looks pretty good. Are you guys still working with it?
    Have you tried PlayMaker? If so, what do you think about it? (I’m trying to get my team to start using it but I have big doubts about it actually optimizing our protoyping times, we’re just faster at coding hehe)
    Still using 2D toolkit?

    Thanks for the uSequencer recommendation. I feel like that will solve a cutscene/interface animation events issue we had. Just got to check if it is Unity 5 compatible – which brings me to a big question… have you migrated to Unity 5?

    Sorry if these are too many questions, I just get really excited when I find devs who are open about their development process and aren’t afraid to share some knowledge.

    Thanks!

    • Brian

      We use spine for all our skeletal animation (no more smooth moves). Spine continues to be developed but it is already super powerful.

      Master audio works great for us. We don’t have very complex audio needs. It is now fully updated to work with the new audio changes in Unity 5.

      We had some playmaker support in the project but it just wasn’t used so it was removed. Designers/artists can access behavior from a trigger-based system that was developed for a previous project and expanded for Wulverblade. I thought about using playmaker for AI but the reality is I just code better and faster. For a larger team or one with more designers something like playmaker might be really good. It wasn’t for us.

      Still using 2D toolkit. Unity released their 2D tools after the project solidified around 2D toolkit. We didn’t see a good reason to switch away from it. We will probably evaluate switching for future projects.

      The switch to unity 5 was recommended for us because unity 5 supports the new consoles better.