Game Dev Secrets You Probably Didn’t Know – #Heistuesday 17

Ulf Hartelius from Image & Form share his thoughts on developing SteamWorld Heist.

Today we’ll continue the series of SteamWorld Heist related interviews with a look at the technical aspects of making a game.

At a rather small game studio like Image & Form not every role is easily defined. We have lots to do in a relatively small team. And while we have people specializing in areas like art direction, programming and level design, we also have our fair share of chums gracefully wearing not one, but two or three hats.

This week I’ll introduce you to one of those team members: Ulf Hartelius. He’s skilfully juggling both programming and game design and is said to be indie enough to make all other indie devs look like Disney. So without further ado, let’s go!

Julius: Firstly could you introduce yourself, tell us a bit about what you are working on and what your favourite games are?

Ulf: Heya! I’m one of the coders and designers on SteamWorld Heist. On the wee hours when I’m not busy fiddling with that (actually or just mentally) I’m trying to learn Japanese, make small artsy games, and listen to a lot of music.

As for playing games, right now and for the foreseeable future I’m rocking out with the new Guilty Gear!

J: A lot of people are asking us about our development tools, what game engine are you using for SteamWorld Heist?

U: We’re using a custom-built thing that’s grown and evolved for almost as long as the company’s been around; from way before my time. Luckily it’s frequently given love, care, and a lot of trimming, so unlike some engines that have lived for more than one game it remains pretty manageable. And for those who wonder: it’s 100% C++.

J: What are the perks of creating a custom engine instead of using an existing one (like Unity or Unreal)?

U: The main perk is the Nintendo 3DS, I’d say. Neither Unity nor Unreal has any support for the 3DS, and even if they did there’s a big risk that the overhead such engines add would outdo any benefits. Having our own engine also allows us to make whatever changes we want without any middlemen, which is practical and fast. Of course, the flipside is that nothing happens with it when we’re busy with other stuff; like making game content.

Ulf working hard with coding and stuff.

Ulf working hard with coding and stuff.

J: Could you briefly describe a typical day as a programmer?

U: Most of my work is tied closely to either design or graphics, like implementing gameplay abilities or getting the user interface (buttons and stuff) to behave. So I often have a lot of close teamwork with other people, which is the coolest thing about making games: that you’re not working in a vacuum, but that your little cog becomes part of a greater steambot.

J: Is there a specific process for finding and eliminating nasty bugs?

U: Absolutely. For instance, say the game crashes whenever you shoot someone. That’s not the game’s way of telling you that it’s better to be nice; rather it’s definitely something going awry in the code handling shooting or dealing damage. That way, you can narrow it down. “Divide et impera”, like the Macedonians said.

J: Are the graphics applied to the code or is it the other way around?

U: It’s a collaboration, definitely. The artists make mockups and tests with just graphics, so they can get a feel for how they want it to look. We then discuss how we can bring that into the game, how much work it would take, and how players might react to it.

J: We haven’t revealed too much info on actual SteamWorld Heist gameplay. Without giving too much away, what’s the essence of what makes the game unique from a programmer’s point of view?

U: There are a lot of different systems working together, like shooting, managing the crew, creating the heist encounters, and of course ______ [REDACTED].

J: What’s the best part about your job?

U: Being able to work closely with a bunch of terrific individuals and to craft an experience that I believe gamers will enjoy a lot.

J: You rule, Ulf! 


What did you think of this more in-depth kind of interview? Ulf will be down in the comments section and do his best to answer any questions you might have. So ask away! 😀

  • Hobbit Peate Donohue

    I’m a little surprised that the game is coded in C++; that’s the language I learned in school, but since then I’ve been told that everyone moved to bigger and better things. It makes me smile to know it’s not out of style.

    • Dzian Kolack

      Out of style!? Have you ever heard of, wait what was it again… Oh yeah MINECRAFT!?

      • Hobbit Peate Donohue

        I thought most iterations of Minecraft were coded in Java?

        • Zubaja

          Isn’t Minecraft programmend entirely in Java?

          • Hobbit Peate Donohue

            I read Minecraft Pocket Edition is in C++ for some reason or another.

          • It’s a pretty neat language, after all ;D

    • harulf

      I wrote some in a response to @zubaja:disqus above wrt C++. As for it being out of style, I think it’s true in the sense that a lot of software companies, and indie game studios especially, have moved over to more modern languages like C# or even JS. That said, C++ as a language keeps iterating with great features being added in both C++ 11 and C++ 14.
      In the end, I personally don’t think the exact language you’re using matters all that much. Back in my university we switched languages in every second course, so that made me pretty language agnostic. I’ve also used different languages in every job I’ve had.

  • Zubaja

    C++: Interesting. Are you using a framework like SDL, or something different? Perhaps your own? I’d like to ask why you’d go for C++, but I guess that’s a matter of preference and what the platforms you develop for support.

    • harulf

      We are using both SDL and Boost, yeah. For Heist we’re also using Box2D. To be totally fair I should mention that we also use Obj-C for some OSX fundamentals and have some python scripts running to manage the assets (e.g. making spritesheets from the individual textures).

      As for why C++, it’s a combination of platform support (pretty much have to for the 3DS), performance (again, I think something like Unity would kill the 3DS), and our own past experience. While my coding background involved mostly C#, Java, web stuff, and whatever strange things the university teaches you (Haskell <3), the other coders have worked extensively with C++.

      • Zubaja

        I’ve studied at the NHTV in Breda (Netherlands) myself, but sadly did not make it to the 2nd year due to personal reasons, but we mainly used C++ and C#(Unity) there, aswel.

        I should get back into C++ myself, because it’s an awesome language to learn and a good way to learn how to manage everything from scratch, like proper memory management and sorting-algo’s.

  • The Geek Guru

    I love these interviews. Ulf is pretty cool 🙂 Glad someone *cough @juliusguldbog:disqus cough* turned me onto them. Now I get my #SteamWorldFIX

  • Do I see Visual Studio in that shot?! I code in Visual Studio 2012 every day. Of course, I’m not coding games, just a business application for my company here in the US. I would love to code a game one day, it would be so difficult but rewarding I think. Anyways, keep up the good work! Thanks for posting these interviews.