Hugo Bonacci is the indie developer and designer of App of the Week winner, Kung-Fu Clash. His passion for gaming began at a young each and Hugo is still a big fan of NES and SNES games (he even plays them with his kids!) and is inspired by games such as Final Fantasy, Zelda, Secret of Mana, and Chrono Trigger.

During the day, Hugo works as a UX Consultant for a company in Dallas, Texas, but his real passion lies in game development. Check out Hugo’s software development blog and design portfolio at hugoware.net.

Kung-Fu ClashMaking games can be a lot fun, but it can also be a tremendous amount of work. Many people try to create games on their own but far fewer actually succeed — myself included.

With Kung-Fu Clash I decided to try things differently than on previous projects. This post discusses some of the approaches that helped me to successfully publish my first game.

Design First

Don’t be in a hurry to start writing code for your game. Take your time and plan what your game is about, how it works, and get a general idea of what needs to be done. It’s much quicker to find flaws on paper than to spend hours writing code only to discover an idea won’t work.

Try to come up with an idea that makes your game distinct from others. Sometimes it’s as simple as taking a common gaming category (for example, a first person shooter) and giving it a unique twist (e.g. adding orange and blue portals!).

You don’t need to have a detailed outline of every single screen and behavior in your game. I’ve found that simple sketches and notes are more than enough to get ideas out of your head.

Planning shouldn’t be limited to only the start of a project. Any time you want to add a feature or modify the way something works, take some time to jot your ideas down before you begin.

Keep Things Simple

Ninja mockups
As with any project, the number of tasks required for completion can quickly spiral out of control. Each time you think you’ve identified everything that needs to be done you end up noticing an entirely new set of tasks you’ve missed.

Start by creating a list of the core requirements for your game, this means removing non-essential game elements like power-ups, high-scores, etc. Next, include each of the sprites, animations, backgrounds, music and other creative assets you’ll need to create. Lastly, don’t forget to include tasks that are generally overlooked until they’re needed, such as managing user settings, handling transitions between scenes, game menus, resource management, etc.

It doesn’t take long before your “simple” game becomes a daunting list work that will take several weeks to finish. Don’t let this intimidate you. Having an overview of tasks to complete will help you set goals and track progress along the way.

Lastly, if you want to add something to your game then go through this process again. Ask yourself what you will need to code and design to make it happen. Once you’ve figured out what needs to be done, decide if you really need the feature or if it can wait.

Keeping things simple sometimes means telling yourself “no” about adding features to your game.

Stay Focused

It’s easy to get discouraged when you’re the only person working on a project, especially when progress is slow or you’ve been working for several months, but fortunately there are a couple ways to stay motivated.

First, start by sharing your progress with friends, family, and social networks. Let people see what you’re working on and share in your excitement. Put your game on a device and let people to try it. It’s exciting, and highly motivating, to see your game in action.

Don’t be discouraged if it doesn’t work correctly — it’s just a demo. Additionally, don’t act on user feedback immediately. Unless it’s a critical flaw, simply take note of their suggestions and then review it later. Trying to implement new ideas, even good ones, will slow down progress.

Second, If you find yourself feeling unmotivated, overwhelmed, or simply confused on what you should be doing, then it’s probably a sign you need to get organized. Take some time to examine your project and write a list of remaining tasks. Simply knowing what needs to be done can go a long way in keeping a project on track.

When you sit down to work, review your list and set yourself a goal of at least one task (or more) to finish and then mark them off as you go.

Use Time Wisely

Try and find ways to preview your ideas before you attempt to write code. For example, I use Flash for character design and animation, but it also works well for visualizing how a character looks moving across a background or to quickly experiment with different kinds of special effects.

Creating art for a game is a very time consuming process so be sure to plan for high resolution displays early by using vector art, 3D, or very large PSDs. Don’t try and create your own sprite sheets by hand, but instead use applications like TexturePacker or Zwoptex to streamline the process.

Consider using stock resources for assets you’re not able to create for yourself. For example, I’m not a musician and I’ve wasted weeks of development time in the past trying to create music only to end up with sub-par results. For this project I decided to purchase royalty-free music instead. Not only did the music sound far superior to anything I would have created on my own, it saved a lot of time as a result.

Avoid writing code if an open-source library is available that does the same thing. Even if it’s not an exact match, it’s much quicker to modify an existing library than write one from scratch. As interesting as writing “framework code” can be, your time is better spent focused on code specific to your game.

Don’t be afraid to spend time on writing scripts that automate repetitive tasks. If you find yourself doing the same process a couple times then it’s a perfect candidate for automation. When you’re the only person working on a project, the time spent on tedious activities is time taken away from meaningful accomplishments.

Lastly, avoid over-engineering your code. This isn’t a call for haphazard programming, but instead a reminder that the most perfectly abstracted code base that never ships is still a failure. Try to reuse code whenever possible (DRY), write helpful comments, and use meaningful function and variable names, but your primary focus should be on creating a flawless user experience.

Don’t Settle

Look carefully at every detail in your game and never accept “good enough.” If you aren’t happy with something, or it doesn’t ‘feel’ right, then there’s a good chance that your audience won’t like it either. Polish every detail until you feel it’s perfect. Treat your game as if it were a masterpiece — it deserves no less!

It’s difficult being the only person working on a project, but it also means you’re the only one who decides what goes into the final product. Take advantage of having complete control and only accept your best work!

Hugo Bonacci, Creator of King-Fu Clash

  1. Thank you so much for all of these words… I am indeed a solo game developer and I thank you from the bottom of my heart for this article, which has given me the jump, the energy and the will I needed it to go on… since after a year developing I was feeling so so discouraged. Great words, great thinking… Thank you,

    Joe.

  2. @Joe — I hope it helps! Stay motivated and you’ll get it done!

    @Hadas — Only working late nights and weekends it probably took about 4 months for the first release and then another 2 months for the second big update (just recently released)

  3. Hi Corona world,
    I want to develop a game where the background screen will move vertically, typically the motor cycle racing games.
    I have no idea how to do it. if anybody can help me it will be wonderful.
    Waiting for the reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>