Monday, 23 January 2012 0 comments

Physics and Texture editors

I have been pretty content with my journey into game development by using a static image and then applying transitions or even x and y movements on every frame per second.

Soon, however, when the game starts taking shape you appreciate that it all looks very lifeless and therefore animation is required. To be honest I was pretty reluctant to get involved in sprites given that I am a one man indie shop but thought it were necessary. I won't bore you with my creative processes (I'll save that for another blog) but what I will comment on are the excellent tools that I am using to help.

First, the ones that I'm not. I am using Flash for my creative so the obvious choice would have been to go down the Spriteloq route but I decided I didn't want to be beholden to Flash in the future. Equally, despite its following, zwoptexapp I found a little dated and the optimisation around stylesheets wasn't as impressive as my chosen route.

Instead, I went for PhysicsEditor and TexturePacker. With my limited, but expanding, knowledge these tools have been invaluable to my productivity.

Lets start with PhysicsEditor. When starting off with Corona SDK I was a little intimidated by the way a collision shape was defined. Multiple vertices applied by positive and negative offsets for some reason didn't sit well with me. Even the simplest of shapes seem to take a while to set up as well as tweak.
When it came to complex shapes I found myself simplifying the shape to avoid the proper collision properties which of course diminished the effect. This is where for me PhysicsEditor came into its own. All I had to do is add one or more images into the editor and for each hit the magic wand button. This would then trace around the shape and I could adjust the tolerances as well as add or remove vertices. I could then apply my density, bounce / restitution, friction etc and repeat for all. Once done I would publish and this would then create a lua file for me to reference against each shape.

-- Get our physics data
physicsdata = (require "myphysicsfile").physicsdata(1.0)
-- Then when creating body call identifier assigned in PhysicsEditor
physics.addBody(actor, physicsData:get("actor")) 

... and thats it. This makes changing physics criteria and verticies incredibly quick, a matter of minutes in fact, by going back to the PhysicsEditor GUI clicking a few things and then publishing overwriting the file.

In addition to my growing arsenal of indie tools is TexturePacker. As mentioned previously I had read on the web that Zwoptex's optimisation of images wasn't as efficient as TexturePacker's and with every KB counting this was quite a draw. The actor for my first game has 250 frames of animation so making sure this was optimised and easy to use was essential. The ability to drag and drop my images and use the saved default optimisation settings makes this a very simple process. Again, with the application set to Corona, an optimised image file (various output formats) as well as a texture mapping lua file makes using this and changing your images etc very very easy to use.

Again, the code is pretty easy to implement:
local sprite = require "sprite"
local sheetData = require "myactor"
local data = sheetData.getSpriteSheetData()
local spriteSheet = sprite.newSpriteSheetFromData("myactor.png", data)

spriteSet = sprite.newSpriteSet(spritesheet, 1, 248)

sprite.add(spriteSet, "do_a_star_jump", 1, 62, 300, 1)

myactor = sprite.newSprite(spriteSet)
myactor.currentFrame = 1

When modifying my animations and images the only thing I modify is maybe the different spriteset frame counts. All very impressive.

As you can probably tell I would recommend this so why not get a trial or purchase from the store.

At time of writing the prices are TexturePackerPro + PhysicsEditor Bundle for $34.95, with PhysicsEditor only at $19.95 and / or TexturePacker for $24.95.

I think if you are an indie developer like me tools like this make getting games out the door achievable, affordable and ultimately stress free. I don't profess to be an expert using this but what I have been able to get out of both has been very impressive indeed.
Wednesday, 11 January 2012 3 comments

Professional Advice: Imanji Studios

I've been very impressed with the level of co-operation and support from indie developers and established professionals to date who have taken time out to offer little old me some advice.

Keith at Imanji Studios was incredibly impressive in both the speed he came back and the depth of his answers. Some useful advice for all I hope you agree.

For those who don't know if Imanji Studios (and I question which rock you live under) they are responsible for the phenomenally successful Temple Run and the enjoyable Harbour Master.

MyGamingProject: What do you foresee being my single biggest challenge?

Keith @ Imanji Studios: Getting noticed. There are over a hundred thousand companies publishing apps and over a half million apps on the App Store. (source: Everyone has the same goal as you, they want to make a hit app. That's a lot of competition, building a great app is only part of the challenge, you still have to get it noticed.

Also, don't expect your first game to be a hit. The reality is most games fail. It's a very hit driven business you can make 10 games and only 1 of them might be successful. Everyone sees great hits like Angry Birds and Temple Run and thinks they got their overnight. The reality is that most of these companies have been making games for years until they finally come across a big hit. For some interesting stats on how much money the average game makes, check out this blog post. The stats are pretty grim, but I think it's a pretty accurate depiction of the the market.

MyGamingProject: What would you have done differently knowing what you know today?

Keith @ Imanji Studios: No regrets really. I'm a firm believer that everything you do in the past shapes and leads you to where you are today. So you have to look at your failures not as something you want to go back and do differently, but as something that will help you get to future success.

MyGamingProject: What game development tools would you recommend?

Keith @ Imanji Studios: There are so many great tools out there. The hardest part is picking the right tool for the right job. Usually I recommend tools that have a good community around them. That way if you get stuck or need help there will be someone there to help. Some great tools in the iOS space especially if you haven't made games before include Cocos2D and Unity.

MyGamingProject: How would you recommend marketing a game, techniques, channels, proposed budget etc?

Keith @ Imanji Studios: We're a big fan of making small pickup and play casual games. We always start with small prototypes and try to find the fun factor before investing a lot of time making things look pretty. We always aim to make games that only take us 3-4 months to make from start to finish to help spread the risk of failure out a bit. Our general rule of thumb is if we can't prototype it and get it to be fun in a week, it will probably take us too long to build the finished product. This doesn't always work out. It's definitely hard to always stick to a firm schedule when you are trying to make something "Fun", but it does help keep our project a more manageable size for our team.

MyGamingProject: What testing process and quality assurance measures do you adhere to?

Keith @ Imanji Studios: We test games ourselves mostly and use beta testers from the community as we get closer to finished.

MyGamingProject: How many people make up Imanji Studios?

Keith @ Imanji Studios: Imangi Studios is 3 people. My wife Natalia and I do all the programming, music, sound effects, and marketing and Kiril does all of our art.

MyGamingProject: Any additional advice you feel would be of benefit

Keith @ Imanji Studios: Attend the big conference like GDC and WWDC. Get to know the press. Get to know folks at Apple. Meet and make friends with other developers. Spend almost as much time thinking about how you are going to market your apps as you do making them.

Which mobile platform version to build to?

Now I am getting closer to launching my first game I have always been pretty comfortable in launching to Apple devices as my perception is that most people adopt the latest operating system version.  Android on the other hand is a mine field for me so I did a little bit of digging to know what to build to.

The first challenge I found was just how difficult it was to get information for the Apple devices.  In the end I had to go for a well known app, Bump, to see their distribution of mobile platforms.  Which are broken down as follows:

RankOS VersionCountPercentage
1 5.0.1 25,127 54.42
2 4.3.3 4,273 9.25
3 4.2.1 3,971 8.60
4 4.3.5 3,971 8.23
5 Unknown OS 2,267 4.91
6 5.0.0 2,189 4.74
7 4.1.0 1,297 2.81
8 4.3.2 676 1.46
9 4.3.0 596 1.29
10 4.3.1 552 1.20
11 3.1.3 278 0.60
12 4.3.4 238 0.52
13 4.2.8 149 0.32
14 4.0.0 128 0.28

Stats as of 30 December 2011

So my hunch was pretty right the newer versions are adopted.

As for the Android platform the information is a little more accessible via analysis of the Android Market here. The comparative information is:

Platform Codename API Level Distribution
Android 1.5Cupcake 30.6%
Android 1.6Donut 41.1%
Android 2.1Eclair 78.5%
Android 2.2Froyo 830.4%
Android 2.3 -

Android 2.3.2
Gingerbread 90.6%
Android 2.3.3 -

Android 2.3.7
Android 3.0 Honeycomb 110.1%
Android 3.1121.5%
Android 3.2131.7%
Android 4.0 -

Android 4.0.2
Ice Cream Sandwich140.3%
Android 4.0.3150.3%

Stats as of 3rd January 2012

So between Froyo and Gingerbread this is accounting for over 85% of the market and unlike Apple devices the newer platforms are readily adopted.

So in summary if you are targeting Apple devices go for 4.2.1 and above to maximise your audience and for Android target Froyo and Gingerbread.

Hope this is of some help its certainly focused my efforts
Friday, 6 January 2012 0 comments

Professional Advice: Snappy Touch

Continuing my series on professional developers and studio advice,  Noel Llopis of Snappy Touch very kindly took some time out to answer a few questions.

I'm currently doing some beta testing for Noel, using the excellent TestFlight which I will write a separate blog entry on later, and see some parallels to his setup be it that I am some time and experience behind.

If you don't know Snappy Touch are known for the excellent titles of Flower Garden and Casey Contraption's HD  for iPhone and iPad respectively. I asked:

MyGamingProject: What game development tools would you recommend?

Noel @ SnappyTouch: "I'd say get Unity or Flash or Cocos2D and make a very simple clone just to get the hang on it (don't release it). Maybe start with Pong, and then clone something like Tetris. Then you can start making your own, very simple games. Stick to 2D for a while. Actually, for 2D, just stick to Cocos2D."

MyGamingProject: How would you recommend marketing a game, techniques, channels, proposed budget etc

Noel @ SnappyTouch: "Don't worry about marketing, budgets, and all of that until you've worked through your sucky games first.

My budgets have been minimal, and mostly included my time. When I was confident the game was good (Casey's Contraptions) it was OK to spend some money on sound effects and music, but even so, the whole budget for the game was only $1K."

MyGamingProject: How many people make up SnappyTouch?

Noel @ SnappyTouch: "Snappy Touch is just me [Noel]. But I do collaborations with other people, so Casey's Contraptions was a 50/50 collaboration. Flower Garden was all me with the help of a friend graphic designer who took a small percentage of sales.

MyGamingProject: Any additional advice you feel would be of benefit?

Noel @ SnappyTouch: "learn all you can, make all the games you can, and focus on making the games you're passionate about (not the ones that are making most money).

It's an incredible journey, and I'm having the time of my life. Go for it! :-)"

Some helpful advice and insight I'm sure you will agree.

Casey Contraption's HD can be bought for the iPad for £1.99 and and Flower Garden for the iphone for $1.99