Return to site

Coderbunker Techtalk: Engineering at Finer Games

by Tim Riley

When you’re designing a game and trying to “find the fun”, experimentation is key. One of the strengths of the Unity game engine is that it’s particularly well suited for this sort of rapid prototyping approach. Recently I gave a talk at Coderbunker, a "hackerspace for programmers" located in Shanghai, to talk a bit about a few of our projects and how we've used Unity in this way.

A 2 player asymmetric multiplayer game completed during the 48 hour Global Game Jam. Inspired by games like Space Team and Keep Talking and Nobody Explodes, in LiT, you play as an empiric spy who’s stolen plans from the bad guys. You find the hangar during your escape, but there’s a problem: there’s only one ship, and you don’t know how to fly it. Your comrades back at base have a poorly translated manual, and it's your only hope of ever seeing home again. Player 1 controls the ship, verbally relaying messages from the ship’s console to Player 2. Player 2 must consult the manual and try to describe to Player 1 how to fly.

Rather than implementing an entirely separate set of in game controls for Player 2, which easily could have doubled development time, the ship’s instruction manual was implemented as a simple PDF file. The time limited nature of a game jam forced us to be creative with how we utilized our resources. Not everything has to be complicated or programmed.

Project Genesis

People in games and entertainment like to talk a lot about immersion, and with all the hype around VR it's easy to forget that you can get there with something as simple as a story. We LOVE choose your own adventure games, but sadly there seem to be very few of them around these days. So, we made one (:

Beat this into your head: utilize the Unity Asset Store. If you’re an artist who needs code, or a programmer who needs art, or somewhere in-between, this is a great place to start looking. For example, rather than creating our own dialogue graphing engine from scratch, we used Node Canvas, an inexpensive solution that helped us and our writer prototype the basics of the game and story quickly (less than a week).

Sometimes an asset you purchase might only solve 80% or 90% of what you need, but even then the time saved is often invaluable. In the case of this project, we were able to quickly discover that the game would require a more complex graphing engine than what Node Canvas provided out of the box. Rather than having wasted weeks coming up with our own solution and THEN figuring this out, it cost us just one week + the price of the asset. We then tabled the project until we have more time to dedicate to the larger scope.

Funny Mice League (FML)

This is our biggest project, a 2D mobile mashup of "Angry Birds" and "Super Stickman Golf". It started as a part-time project years ago to learn Unity and deepen our programming and design knowledge. It's since become a full-time project, our main source of joy and headaches.

I think the main takeaway here is: polish is super, duper important. One of the things we've spent the most time on is getting the look and feel of the main character juuuuuust right:

Unity doesn't come with this sort of squishy, jiggly, wiggly, deformable 2D physics built-in. Like our other projects, we tried a few 3rd party solutions we found on the asset store, including Jello Physics and Jelly Sprites, but too often found ourselves fighting little bugs that made development more difficult than it needed to be. So we rolled our own. If you'd like to check it out, you can find the source code here.

Miscellaneous Learnings

  • Find a good tweening engine. We use DOTween. This will make it much easier to get a really rich feeling user interface. That additional polish to a game makes all the difference in the experience.
  • Play testing is super duper important. The secret keys to a successful play testing session are:

    • Make the user feel comfortable

    • Shut your mouth

    • Listen. Take notes / video

    • Seriously, shush. If the user isn't verbalizing enough, asking questions like “What are you trying to do here?” is ok to do in order to get them talking. But if you're doing more than this, you’re probably not really listening and taking the feedback to heart.

  • There's never going to be enough time or money on a project. Don't get caught up in "If only we had..." hypotheticals. Stay focused and roll with it.

  • We took too long between releases. Mid-development of FML, we took a break and spent a few weeks polishing up an old demo project to practice release + marketing strategies. The learning was invaluable and it's something we should have done more of.

  • Join a community. Unity devs on slack is a great place to start.

  • Take care of your body. Get enough sleep, eat good foods, remember to exercise, and above all, have fun. It can be really, really easy to forget these things, especially the last point, and especially when doing creative work.

A Message From Coderbunker...

All Posts

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!