Tag: present catcher

Present Catcher now on the AppStore! Universal App, Game Center, Retina Graphics

 

Present Catcher is now available on the AppStore!

Features:

- Grab presents infinitely.
- 10 different types, sizes and colors of presents.
- Easy accelerometer based controls (just tilt to move).
- Retina Graphics enabled.
- Universal application (iPhone, iPod Touch and iPad).
- 14 fun Game Center and Open Feint Achievements.
- Game Center and Open Feint Leaderboards.

- Colorful Christmas graphics.

An Universal game with Game Center for only $0.99? That’s VERY cheap!

GO GRAB IT NOW! :)

Win iTunes Gift Cards and codes to any game

You should do both steps:
1) “Like” our Facebook page.
2) Follow @KarnakGames and @PlayChristmas and RT:
“Santa in a Hurry and Present Catcher to iPhone and iPad: http://t.co/Swls1Bm! RT and follow @KarnakGames to win iTunes Gift Cards!”

Rules and Details on http://karnakgames.com/christmas

Stop talking, start doing. Postmorten of how I made 2 games in 10 days.

 

One month ago I didn’t have a finished game and I just kept randomly reading articles and books on game development. Now, one month later I have two finished games where one is already published on the AppStore and the other is on the AppStore too (Universal app, Retina graphics, Game Center). How?

Those who procrastinate are doomed

I kept reading everyday #iDevBlogADay posts, game development postmortens, tutorials and books. Also studying new technologies and deciding which next technology should I choose.

All that without going to action and assuming that reading and understanding the others actions and errors would make me a game.

On one side there are the ones that use something on their benefit while getting better learning and understanding as they progress. On the other side are the ones that just procrastinate thinking that one day they will make the perfect game because they have read enough to start making a game.

Let’s take this advice from millionaires:

“[...] in today’s markets, regardless of the industry, you’re going to get bombarded with information overload. Massively so. And its dead easy to get lost in it and never get started. It’s even easier to convince yourself that while you’re consuming more information, you’re doing yourself a favor.

But here’s where you’re dead wrong.

Many people I interviewed were very strategic with their learning. Why? Because most of the time, they were on the playing field, PLAYING. Their lessons came not from a book, audio or dvd seminar, but from putting their ego on the line and testing it out in a real world scenario.”

The year is already finishing and I didn’t have a game. While the AppStore is everyday flooded with games from people that actually do something. Well… it was time to get to action.

The need to close 2010 with a game on the AppStore

Works on LH still in the first phase. According to my rough schedule it will take more 4 months to finish and polish the game – but I wanted to start the new year with a game on the portfolio. I tried to do a game on the 360iDev Game Jam, but finishing and polishing that game is going to take more than a month, and I don’t have that time, it’s almost 2011!

Game ideas

It was November 16th when me and my wife came to the idea of making a simple Christmas game with probably the most common and non original concept: presents and every kind of trash fall from sky while you move Santa Claus trying to get only the presents. Well, I thought: “that will be easy, just some programming, let’s do it!”.

But before I even started the catching presents game, I thought on another concept: why not a super original game where you control Santa riding his sleigh and drop presents on top of houses? Well, after a unique “christmas game” search on the AppStore I found 4 games with this concept. Not so original.

After some more searches, I realized there were no racing game involving Santa! So was born “Santa Race”: control Santa Claus riding his sleigh and race against other Santas. But not only that! The game would include a multiplayer, so players could chose a different color Santa and race while dropping presents.

Alright, game ideas decided but a hard task ahead: just a little more than one month left for Christmas and the challenge of having the game approved before iTunes Connect is frozen. If the game is published after Christmas, I could consider the project a fail. But luckily that didn’t happen.

Right decisions

Hiring an artist and early marketing

Since I had little time (Christmas was approaching and I was going to travel for 1 week) I wouldn’t try to make the art myself. After posting a freelance job on elance.com and odesk.com I ended up hiring one artist from odesk.com. I made a simple art requirements and assets table and sent to the artist. One day later she sent me the finished main character to Santa Race. On 19/11 I made a simple hotsite and wrote a post about the games (remember, Marketing before, during and after development). I also started a topic on the Touch Arcade forums to create some hype (oh well, is it possible to have hype on a Christmas game? Anyway anything is valid). The topic grabbed 880 views.

Programming

Due to some client work I only started programming on 20/11. By this day the artist already had sent me some more assets, so I wouldn’t need to prototype with black boxes, I could start to develop the actual game.

But before I started programming I realized that I wouldn’t have time to write a racing game. I would need to write the AI and path finding of the opponents. I also needed to write the multiplayer module. And wow, I never wrote a complete game by then and never dealt with AI. It would take more time studying than actually writing the game itself. It was time to rethink the game concept again. Well, the art assets fitted perfectly the concept of flying a sleigh and dropping presents. But the art style I asked from the artist was very different from the other Christmas games on the AppStore. Why not making it then? Even if it’s a common concept, it would be MY game. Ok, new concept decided, name changed to “Santa in a Hurry”.

On the same day I had a flying Santa with nice tilt controls, thanks to the amazing source code released by Alex Okafor (the developer of Tilt to Live) here: Lessons Learned in Tilt Controls.

I also decided to use Box 2D (with Cocos2D as the graphics engine), because the scenarios were basically going to be composed of trees and houses with irregular geometry, hence Box 2D was needed to deal with the collisions. I ended up using the technique described by Ray Wenderlich on his tutorial How To Use Box2D For Just Collision Detection with Cocos2D iPhone: Box 2D just for collision detection purposes, without gravity activated – you update your objects position manually and then tell Box 2D where they are and not the opposite.

Obstacles, present dropping spots and presents itself are all Box 2D boxes that moves with Cocos2D actions. Cocos2D makes this task very easy.

Ok, the game core was almost finished. But I still didn’t have a game, just framework elements.

Wrong Decisions

Level based

After I had the main framework set, I had to go travel for a week. When back the feeling of “no time left” was consuming me, and I decided to make a level based game instead of infinite gameplay one, because I thought it would be easier to write a level structure instead of writing a good random generator.

I chose Tiled as the level editor and I wrote an engine to read and load Box 2D data I set as properties on a Tiled map. I spent a full day writing this engine (I may use it for other projects, it works nicely. One of the best features is adding physical materials properties via Tiled which are correctly loaded as Box 2D attributes).

The only thing left was the UI. I didn’t have a Cocos2D project with a complete game workflow, so I had to write one from scratch that dealt with pause, resume, level loading, level browsing, main and options menu. This was the most time consuming part. The programming was finished, but I had no content because I chose a level based game.

I designed 10 levels by hand on Tiled and I tried to make them balanced enough. Some small ones and some long ones. Every level introduces something new or different. The game is fun and enjoyable, but an infinite gameplay and a race to an always higher highscore would be more appealing (and this feature is on its way while everyone is still trying to beat the levels).

After I worked on the level engine and the making of the levels I came to the conclusion that writing the infinite gameplay mode would take less time. That’s why I consider the “level based” a wrong move, because I will have to write the infinite mode now.

Worrying about music and sound too late

I decided to worry about audio just on the end and this was a terrible mistake. First: I didn’t have a music and second I didn’t have the sound effects. Googled for some time and found some amazing royalty free music from Kevin MacLeod and tons of royalty free sound effects in different sites.

Then the pain started: I just loaded the music and the game lagged completely. Then I added the first sound effect (dropping a present): it lagged even more. That almost killed my expectations with releasing the game before Christmas.

After some research I realized it was the format and sample rate. I sampled the music and effects to 22Hz and exported them to IMA4:

/usr/bin/afconvert -f caff -d ima4 {INPUT} {OUTPUT}

Audio fixed and the game was finished!

Marketing is the hardest and most time consuming task

On the end, I spent only 8 days making Santa in a Hurry. After submission, it went “In Review” in 5 days and then it was approved after 4 days. So far it sold a few copies and had only 5 star reviews, I can’t complain.

But since that day I haven’t stopped working on marketing the game: I made a gameplay video, I keep dealing with twitter, forum threads, trying to get reviews, and I’m running an iTunes Gift Cards giveaway (details on the official site). With a crowded AppStore and with big names going crazy on prices, Marketing is the most important and constant action.

Present Catcher in two days

Remember that I decided to make two games? When I hired the artist I gave her tasks to both games, so I already had the assets to the second game, which by the way was the original idea. The name? Present Catcher.

Since now I had a working gameflow framework and Present Catcher is all about random presents and “enemies” falling, I finished and polished it in 2 days. I also managed to make it Open Feint and Game Center enabled with Leaderboards and 14 achievements! (Santa in a Hurry is Open Feint enabled with Leaderboards for each level).

It also is an Universal application and has Retina Graphics! All that in two days.

Present Catcher is on the AppStore too, so I have two games in time for Christmas!

Mission accomplished

And that’s how I turned from “I want to make a game” to “I made a game! I made two games!”. Although I made holiday themed games that have short windows of attention (they are seem and valuable just for some days of the year), I’m completely satisfied. I learned a lot in just 10 days and now I stopped the frustration of just trying to make a game and actually MADE A GAME.

And that’s the final lesson I want to share: Stop talking, start doing.

Buy the games, please :D

This post is part of iDevBlogADay, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the web site, RSS feed, Twitter.

Santa in a Hurry now available! Present Catcher coming soon!

 

Santa in a Hurry

Santa in a Hurry is now available on the AppStore! Video and more details on the official site and on this earlier post.

Present Catcher

I’d like to announce another Christmas game that I developed and that has been already submitted, Present Catcher!

Presents are falling! You must catch them all before there are no presents left for Christmas!  In Present Catcher presents fall from top and you have to grab every present you can while avoiding gnomes and anvils! The more you play it gets harder and faster!

Features:

- Grab presents infinitely.
- 10 different types, sizes and colors of presents.
- Easy accelerometer based controls (just tilt to move).
- Retina Graphics enabled.
- Universal application (iPhone, iPod Touch and iPad).
- 14 fun Game Center and Open Feint Achievements.
- Game Center and Open Feint Leaderboards.

- Colorful Christmas graphics.

iTunes Gift Cards Giveaway

Also don’t forget to take part on our iTunes Gift Cards Giveaway! Details on http://karnakgames.com/christmas

Universal applications asset naming conventions, directory structure and macros

 

If you follow me on Twitter you probably noticed that I’m working on 2 Christmas games (if not, please check them here :), and both will be Universal. Since this is the first time I’m doing an Universal App (Game), I had to decide on an asset management strategy: how to manage, name and structure files for iPhone 3GS-, iPod Touch, iPad and iPhone 4?

The most common route is to name iPhone and iPod Touch’s assets as the plain name: texture.png and then for the iPad add a suffix to the file name with  “ipad”: texture-ipad.png. But going through this route add a bunch of if’s to your code to check whether the game is running on the iPad otherwise it is running on the iPhone / iPod Touch:

NSString *fileName;
if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad))
    fileName = @"texture-ipad.png";
else
    fileName = @"texture.png";

Could you imagine this in a game code? Hundreds (or thousands) of additional work. I came to a simple solution: files always have the same name. The only difference is that iPhone and iPod Touch assets are inside a “graphics” folder, while iPad ones are inside “ipad/graphics”.

Wait – wouldn’t we still need to write those hundreds of if’s? Yes. But before I show you how to solve this issue, let’s talk about Folders References and Groups in Xcode.

Game Assets: Directory Structure

I’m not going to write about this subject, because there are 2 #iDevBlogADay articles (I found them via iDevBlogADay’s delicious account) on this subject and also one from Majic Jungle:

I really recommend that you read them before continuing. I’ll wait.

… ok, are you back? For my directory structure, I’m using David’s recommendations: a GameResources folder inside Resources, and then a Folder Reference (blue folder) to it in Xcode’s project. Also, don’t forget to add the script posted by David that notices Xcode of file changes and that automatically adds/removes/updates them from builds.

Directory Structure

This way you can freely add/remove/update game assets without ever worrying about referencing them on the project. Also you can have multiple files with the same name without problems (as opposite to using folder Groups – the yellow folders).

Xcode Folder References

One line macro for iPad or iPhone detection and for getting a file’s full path according to the device

How to get the path to an iPad or iPhone version of a file without writing if’s everywhere? Through a simple class (and then later a macro):

// Path.h
@interface Path : NSObject {
}

+ (NSString *)graphicsPath:(NSString*)filePath;
+ (NSString *)resourcePath:(NSString*)filePath;
@end

// Path.m
#import "Path.h"

@implementation Path
+ (NSString *)graphicsPath:(NSString*)filePath
{
	NSString *finalPath = @"GameResources/";

	if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
		finalPath = [finalPath stringByAppendingString:@"ipad/"];
	}

	finalPath = [finalPath stringByAppendingString:@"graphics/"];
	return [finalPath stringByAppendingString:filePath];
}

+ (NSString *)resourcePath:(NSString*)filePath
{
	NSString *finalPath = @"GameResources/";
	return [finalPath stringByAppendingString:filePath];
}
@end

To load a graphical asset:

// Cocos2D sprite loading
CCSprite *enemy = [CCSprite spriteWithFile:[Path graphicsPath:@"enemies/devil.png"]];
  1. [Path graphicsPath:] first sets the starting path to “GameResources”, then checks if the device is the iPad, if positive, add “ipad” to the path. So far we this path: GameResources/ipad/ or GameResorces/ (in case of iPhone or iPod Touch).
  2. Next it adds the “graphics” folder name  and then your given path, so you could get 2 different responses:
    • iPad: GameResources/ipad/graphics/enemies/devil.png
    • iPhone / iPod Touch: GameResources/graphics/enemies/devil.png

Let’s make it even simpler? Add the following macros to Path.h:

#define graphicsPath(_path) [Path graphicsPath:_path]
#define gameResourcePath(_path) [Path resourcePath:_path]

Add the following line to your ApplicationName_Prefix.pch file:

#import "Path.h"

Now every time you need to load an asset you may use these macros:

// Cocos2D sprite loading for Universal games
CCSprite *enemy = [CCSprite spriteWithFile:graphicsPath(@"enemies/devil.png")];

// Getting path to a sound asset inside GameResources/sounds/enemies
NSString *soundFilePath = gameResourcePath(@"sounds/enemies/devil.caf")];

// Getting path to a plist inside GameResources
NSString *randomFilePath = gameResourcePath(@"state.plist")];

Another useful macro for iPad detection

Even with the directory and naming question solved we may still need to check whether the application is running on the iPad or not, so I would like to share another super simple but useful macro. Add this to your .pch file:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

Use it this way:

if (IS_IPAD)
    position = 300;
else
    position = 20;

Christmas Games

Now that I taught you the deep secrets about Universal Applications asset management, I’ll relax and tell a little about the two Christmas games I’m making.

Santa in a Hurry

Santa in a Hurry is about flying your sleigh! But you may be thinking that this is boring! What if I tell you that you are flying AND racing with your Santa holding his sleigh while trying to avoid and slide obstacles and still having to save the Christmas and avoiding different things and the BAD Santas (!?) and dropping presents and seeing nice and warm graphics and listening to Christmas musics and…. and… and…! Well, you will see!

But do you want to know the real hottest thing about Santa in a Hurry?

Once you play and complete “some things”, you will earn a present. And this present may turn itself into iTunes Gift Cards or Game Promo Codes on Dec 25th!

Present CatcherPresent Catcher is all about… catching presents! Oh, again you probably are thinking: that’s so “old”. Not with Present Catcher! Instead of telling you about it I’ll just ask that you start telling your friends about it until I publish the first screenshots and videos. Then you will see what catching presents is really all about!

Here is an exclusive conceptual screenshot of Santa in a Hurry (click to zoom):

Christmas Games - Santa in a Hurry - Night Level

Don’t forget to follow @PlayChristmas and @KarnakGames to be notified about news, and of course, there is an official site: http://karnakgames.com/christmas.

This post is part of iDevBlogADay, a group of indie iOS development blogs featuring two posts per day. You can keep up with iDevBlogADay through the web site, RSS feed, Twitter or delicious.

Santa Race and Present Catcher coming to the AppStore!

 

Prepare yourself for the BIGGEST CHRISTMAS CHALLENGE ever!

I’m excited to announce that we’re developing two games for the Christmas. They will hopefully be available on the AppStore in 15 days.

Santa Race

Present Catcher

Also, the games will come with some surprises :)
Visit the official site now to see what Santa Race and Present Catcher are all about! http://karnakgames.com/christmas

Follow us @KarnakGames and @PlayChristmas to be notified!