Michael Anderson is one of the software developers at Vancouver, British Columbia-based Hothead Games, and he was selected as Developer of the Month for March. Hothead Games was founded way back in 2006, when they originally focused on console and PC-based games. The company released several successful titles on XBLA, PSN and Steam, including Penny Arcade Adventures, Death Spank, and Swarm. The company also worked with other developers to help them port their games to new platforms, including titles Jonathan Blow's Braid (Mac/PS3), and Twisted Pixel's The Maw (PC).
Following the release of Swarm, the company decided it was time to shift focus entirely to the mobile platform. In 2010/2011, the company released several small iOS and Android games to begin to get a handle on the mobile marketplace. Then, with the release of Sea Stars and their Big Win Sports series, Hothead Games started to take off. Their latest game, Kill Shot, has been downloaded 20 million times, and they average 500,000 active daily users!
Several of their games, including Kill Shot, feature the use of the Qualcomm® Adreno™ Profiler.
We recently had the chance to catch up with Michael, and even though he was fighting off a nasty stomach bug, he made the time to give us some insights about his work and life at Hothead Games.
How was the company started?
Hothead was founded in 2006 by a small number of senior game developers with an eye on the indie game market and self-publishing.
What is one thing that makes your company culture unique?
I would say the fact that even though we are now a relatively large studio it still feels like a small studio. Everybody is friendly and approachable here. We all share the same goals, and there are very few ego or pride entanglements.
Can you share with us a fun fact about your company?
We used to produce short videos poking fun at game development and our own games! Here’s an example:
Where do you and your team get inspiration for your work?
Mainstream media like TV shows and movies definitely give us creative inspiration for what we want our users to experience. We want to create an alternate universe in which our users can be a soldier, a football player, or even a cute, jumping dolphin.
When working through a long day, how do you and your teammates stay energized?
Vancouver is one of the fittest cities in the world, and we have several fitness enthusiasts on our team, so I would say we use the gym to say energized … that, and of course coffee!
Who is your technology hero?
I owe my career in game development to my friend and mentor Christopher Bailey and a small Canadian studio called H2O entertainment.
What are some development tools and resources you can’t live without?
Vim, Python, Perforce, Stack Overflow, and of course Real Time Rendering!
How many apps have been created by Hothead Games using Qualcomm technologies?
We have the following mobile games that use Qualcomm’s Adreno Profiler: Kill Shot for Android and iOS; Rivals At War: Firefight for Android and iOS; and Rivals At War 2048 also for Android and iOS.
Among the apps developed by Hothead Games, how did the use of Adreno Profiler assist in the development of the final product?
We rely on the Adreno Profiler to inspect and profile our OpenGLES/GLSL usage. Adreno Profiler is very useful for verifying and removing redundant api calls. When using framebuffer objects with a tiled renderer like the Adreno GPU, it is important to make sure that you discard any unneeded framebuffer attachment data before it is either flushed to renderbuffer/texture memory or restored into tiling memory. The way to do this is by calling glClear (with no scissor) immediately after binding a framebuffer object or by calling glDiscardFramebufferEXT before switching to another framebuffer object.
I used the Adreno Profiler to ensure that both glClear and glDiscardFramebufferEXT where being called at the appropriate times. In order to support as many draw calls a frame as we possibly can I have used Adreno Profiler to ensure we are using all of the appropriate OpenGLES extensions, that draw calls are efficiently batched, and that we make as few state changes between draw calls as necessary. I also use the shader profiling / live editing features of Adreno Profiler to tune shader programs.
If you weren’t a developer, what profession would you have chosen?
I can't imagine not being a programmer! I am one of those lucky people that have looked forward to almost every day of work for the past 18 years.
What do you love about developing mobile apps?
I love how easy it is to make an app available to millions of people. There are no real barriers anymore to turning an inspired idea into a published app.
What advice would you give to other developers?
Do all that you can to stay informed about new or changing technologies. Today's solution may be eclipsed tomorrow by an alternative or entirely new solution. Soak up as much information as possible. When I started graphics programming, we only had a few references like Michael Abrash's Graphics Programming Black Book and the Graphics Gems series. Nowadays, no matter what you are working on there is plenty of knowledge to be gleaned from the internet and at developer conferences. One of the great benefits of this age is the ease of accessing and sharing practical knowledge.
Where do you see the mobile industry in 10 years?
As internet and wireless access bandwidth increases, along with improved cloud computing technologies, I think in 10 years our mobile devices will act more like an access terminal than a stand-alone computer. At the same time, I am very excited about recent advances in mobile processing power and efficiency. The current generation of mobile hardware almost has parity with the previous generation of game consoles (like the XBox 360 or PS3).