Thursday, August 25, 2011

How to detect a tablet screen in Android

I went to the Android Developer Labs in NYC yesterday. Google talks always kick ass. One of the tips I picked up was how to detect that you are running on a tablet.

We were checking to see if the API level was Honeycomb or newer. This was going to backfire once Ice Cream Sandwich gets released and phones start using newer API levels. It also leaves out the pre-Honeycomb tablets like the popular 7" Galaxy Tab. I'm going to try to push out an update to fix this soon.

The alternative route is a little roundabout but doesn't have either of those problems. You use an id tag in a layout file and only put that tag in layout-large.


xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=""






xml version="1.0" encoding="utf-8"?>





<FrameLayout android:id="@+id/large_screen_flag"

android:orientation="horizontal" android:layout_weight="2"

android:layout_width="match_parent" android:layout_height="0dp" />


Then in your Activity onCreate method:


boolean isTablet = (null != findViewById(;

Monday, August 15, 2011

How to succeed as an independent developer without making any hits

Golden Hammer Software just celebrated our second indieversary! That means we've been happily making games on our own for two years. Not only that, but we've managed to become self-sustaining at least for now. How did we do it and how do we plan on keeping doing it? Find out here!

Defining Success

According to the 2011 game developer survey ( I should be making 100k+/year before benefits by working for someone else. If I were defining success as how much money I could be making in life, we're not a success yet. I'm not sure we ever will be. While money is possible for making independent games there are much easier and safer ways to go about it.

What I don't have and am successfully avoiding is the need to get a job for someone else. I define my own work hours, decide what I'm working on, solve the interesting and boring problems, and make the bad decisions that affect my life. If I'm crunching it's because I want to and feel like it's the right thing to do to move forward. Should we make something super-awesome I'll benefit directly from it.

I don't currently need or want another job. I will turn down any full time job offers. I'd consider the right short-term contract or part time gig if the work is interesting enough and I can still work on Golden Hammer games. For a small company that's a pretty awesome position to be in.

Keep your day job

If you want to make games nothing is stopping you from doing this on the side short of a no-compete, and no-compete contracts are negotiable. Some people seem to have the mentality that the only way to go about it is full time. They are just wrong. I made Bid for Power while working full time jobs, and I made the engine that's the foundation of our games while working full time. I will even go as far as to say if you can't work on a game on the side, don't bother going full time because you probably don't have enough dedication to finish.

I don't mean to say that it's easy. Matter of fact it sucks, especially if your day job is programming games. You get up early and go program games for somebody else, then you go home and program more games for yourself. There's not much time for anything else. However if you have any job at all on the side, congrats your business is now making more than most independent developers.

Scott Macmillan likes to preach that when it comes to starting a business time is money, and money is time. He's absolutely correct, but I will twist that to mean something I don't think he intended. If you have another job on the side that basically gives you infinite time to get something going. Once you find something that works then maybe you can go full time.


Contract work is not something we've done yet, but we are definitely looking into it. The trap people fall into is they end up bouncing from contract to contract and never actually making any games. It is guaranteed money that can help fund the rest of your projects if you can get it and then get back to your original goals. I would love to find a contract that is 3 days a week for 6 months, is an interesting project, and has good people on it.

Do something that other people aren't doing

If everyone is making match3 games for iOS, don't do that! Nobody will care and your time will be wasted. The only exception here is if you just want to polish up your skills and don't care about making something that nobody cares about. Paul Graham said something like 90% of startups fail, so if you want to succeed don't do what everyone else is doing.

If you are a small company of 2-3 people this is even more true. You can't compete directly with World of Warcraft. Don't even try. Find a niche where you don't have to compete with companies spending 20-100 million dollars per project.

This may sound odd coming from a company whose biggest success is a snowboarding game. When we started out there were zero snowboarding games on iPhone. That was a great idea at the time, too bad 15 other companies all had the same idea and beat us to market. Even then, most of the competition is imitating SSX. We went the more realistic route. If we do a Big Mountain Snowboarding 2, we'll go even further towards the sim route in order to differentiate.

This applies to platforms also. If everyone is making iOS games, maybe you shouldn't be putting all your eggs in that one basket. iOS is currently about 20% of our revenue, but that changes on a daily basis and it's a little skewed because we just released on Nook Color and are riding the new release wave. We are succeeding largely because we are getting on to as many platforms as we can. The way I look at it is every new platform we add is a multiplier on the sales of every new game we make. More games + more platforms = more money.

As a side note, I do not consider different Android stores to be new platforms. If a device has the Android Market on it, you are already targeting those users, and being on another store is just additional overhead. For things like the Nook Color which runs Android but has no market support, that counts.

Keep costs low

If you spend $300k while making a game, and make $100k off it, you failed horribly. If you spend $10k and make $100k that's a great success! Maybe you don't need that office. Maybe spending $3k per month on rent isn't the best idea. Maybe hiring a dozen people is not the smartest thing you can do. If you want to do these things, at least do them on someone else's dime by courting publishers or keeping a day job.

Don't be a one man team

Completely the opposite of keeping costs low, don't go it completely alone. Even if the only reason is that you can't slack because your partner is counting on you. There's also a huge motivating factor of always having someone else that can be excited about your latest victory. If you are married, chances are your wife/husband does not care that you just figured out how to get 10 more polygons into the scene. Also, not being a one man team makes the following point easier to deal with.

You will need to do everything, even things you didn't know existed

At a big company you can become the world's foremost expert on rendering nose hair. That's a very zen, comforting luxury that you don't have as an indie. I have so many hats my neck has doubled in size. Programming, design, marketing, art, music, sound effects, production, PR, networking, futurist, UI, tech support, web designer, IT. No one can do everything well, which goes back to don't be a one man team.

However just because you don't do it well doesn't mean you can just not do it. Everyone on the team needs to be prepared to help with everything that could possibly come up. If you really can't do an aspect you need to find someone who can, but then what happens if he loses interest? That's now your job until you can find someone else.

Networking, Networking, Networking

Get out and meet people! Find successful people and learn from them. Find unsuccessful people and learn from them too! Put a face behind your name and surprising things can happen. Just don't be that guy who is only talking to me because you want something from me. Nobody wants to talk to that guy. I am incredibly introverted and still doing this, so you have no excuse.

Find a local group of like minded people. In Boston we have Boston Indies ( and Boston Post Mortem ( If there's no group like this in your area, maybe you should start one. If there's not one for games, then maybe there's one for startups. Go to conferences and find the meet ups.

It seems like the most successful people at Boston Indies are also among the nicest and most outgoing. I don't think this is coincidence.

Don't just network, make something!

You can talk about making something. I encourage you to do this! It does not actually mean you are making something. Without getting products on the shelves, or in the modern world app stores, you have no chance of success. Part of this is picking a project you can actually make, and part of it is following through. The last 10% takes 900% of the time.

If $10/day is repeatable it can become $100/day or $1000/day

There seems to be a myth that games are either huge successes or complete failures with no middle ground. The long tail on app stores does exist and is a totally livable place to be if you can figure out how to keep finding new users. Maybe you show up in common search results. Maybe your games feed players to your other games like Zygna. Maybe you find a way for your users become your evangelists to sell the game to other people. You should try for the huge hit of course, but if you just abandon the project when it doesn't hit #1 you are leaving money on the table.

We have a game that seems to sell mediocre amounts on every platform it arrives on. Porting is very cheap compared to making a game. This gives us the luxury of porting to smaller markets like webOS and have it make sense. Small improvements to income that don't take away from other sources all add up. The same goes for ads. Maybe you have to be chess with friends to get rich off serving ads, but you don't have to be in order to get an extra $10-$20/day out of releasing an ad-supported version as long as it doesn't take away from your sales.