Monthly Archives: June 2011

Version control

Lately I was trying to find out which version control system suits best my need as an iOS developer. It’s a new environment for me (Mac, XCode, iOS and all), so my old habits most probably would need to be replaced.

In very old days as I developed software for Windows, using Microsoft Visual Studio the choice was simple. Microsoft Source Safe. It’s not free, but the company I worked for paid for it anyway. And it was fairly solid for these old days.

Then I had to switch to Java and we (a small team) had a choice. First we worked in CVS and then, after few years replaced it with SVN. Both are free, open source and pretty good, SVN being better in my opinion.

So, for a while I went the SVN route, trying to find out how to integrate it best with my new XCode IDE. It is possible, yes, but in the process I found out about git, which is the preferred source control system for XCode. It is much more tightly integrated with XCode. You can perform many operations directly from XCode, including comparing of 2 versions of a file in XCode 2-pane editor. This is very helpful.

git has one more advantage over SVN, which is especially important, when you work in a team using the same codebase. Old school way (SVN) you have one central repository. Typically it resides on some server, which all team members have access to. If you don’t have access to the server (eg. working on laptop, no internet connection), you cannot use SVN.

Using git, each team member has it’s own local repository. Files con be commited, rolled back, versions can be compared, etc. locally. Then there can be installed (but it’s optional) a central master repository (on a server), which can be synchronized with local repositories of team members whenever they happen to have internet access. It adds a bit complexity to the workflow, but the benefits are worth it in my opinion.

So basically, I chose git for my project.

Here are some links and tutorials I used for my research and then installing and configuring git both client- and serverside:

Leave a comment

Posted by on June 28, 2011 in Stuff


First screenshot

This is actually no real screenshot, but a prototype dungeon tilemap created with Tiled using the free assets from Lost Garden. I wrote more about them in my previous post. You know Tiled Map Editor, right? You can create such maps incredibly fast and easy in Tiled. And it is supported by cocos2d out of the box.

I do already have working code showing this on an actual device (my iPhone 3GS) with scrolling, zooming etc. It looks even better, than on a PC or Mac monitor. Everything works fast and smooth. And it took about 10 lines of code. Cocos2d is really powerful!

So… what do you think?

Be sure to watch this in the original size (1:1), not downsized (click the image). It looks best this way. On an iPhone screen you can see a 640×480 window, which means about 1/4 of bigger rooms.

Leave a comment

Posted by on June 24, 2011 in Art, Design, Screenshots


Tags: , , ,

Visuals do matter

The looks of your game is the first thing your potential clients will notice. Not this revolutionary gameplay, nor intriguing story or climatic music. Most of the purchases, especially on the indie market are based on screenshots or maybe trailers. Even more so when it comes to indie games for mobile devices. Most of people considering a purchase won’t read any reviews or comments. They will only look at screenshots and base their decisions on them.

It’s bad news, especially for an indie programmer, who has absolutely no graphics skills. Like me. Basically you have 2 choices.

  1. Pay for an artist (may be expensive, but may be also worth it).
  2. Look for free graphics (not only free to download, but also free to use in a commercial product).

I searched the internet for free graphics. And found a few excellent sites. One of them is Lost Garden. It’s a very useful blog for anyone thinking of creating and selling games. Besides there are these free textures, sprites, tilemaps and many more to download there. Absolutely free and also free to use in a commercial product. All you have to do is to mention name of the artist in your game. And that’s it. How cool is that?

So here a few samples of fantasy themed tilemaps. Definitely going to use these in my project.


1 Comment

Posted by on June 21, 2011 in Art


Why cocos2d?

Here is my list why (I like lists, as you probably noticed by now):

  1. It’s open source. This is probably the most important thing about cocos2d, Not only free, meaning that you don’t have to pay for it. But free meaning, you can do with it whatever you like. Modify, learn from the code, see how things work, even if the documentation is lacking. It’s worth the little extra complexity over Corona, believe me.
  2. It’s build on a solid foundation of an Object Oriented language. Granted, it’s a bit annoying it has to be Objective-C and not old, good C++ or even better Java. But it’s good enough for me. And it’s not so much different from C++ anyway.
  3. You can use excellent Apple XCode IDE. With very good editor, syntax highlighting & autocompletion, code refactoring, templates, real debbuger, good integration with git version control and many more. It’s really much, much more, than Text Wrangler can offer.
  4. You build your code locally, on your own machine. It’s possible to do that without internet access.
  5. It offers particles and tilemaps. I’m going to use both in my game.
  6. It’s possible to use any 3rd part library, unlike in Corona. Like GameCenter or OpenFeint for example. Which I’m also going to use in my game. Well… not both. It will be GameCenter I believe.
  7. It has been around for some time and seems to be mature. Version 1.0 rc3 is the newest one.
  8. An impressive portfolio of good and commercially successful games made using cocos2d also shows, the engine is capable. Trainyard, Feed me Oil and many more. Look here for the full list.
  9. There is a big and helpful community gathered around coco2d. Here you’ll find their forums. Very nice and helpful place indeed. Of course Corona also have forums, but I personally got help much faster on cocos2d forums.
  10. It’s open source!

So… this list pretty much sums up all I have to say on that. I’m made my decision when it comes to engine. cocos2d it is.

Partial credits for the list go to wilczarz from cosos2d forums.


Posted by on June 18, 2011 in Technical


Tags: , ,

It’s the engine, stupid!

Now that I have the name and basic concept what my game is going to be about… what’s next? I had to research, what is needed to make an iPhone game – from technical point of view. I worked on Windows and Linux before, but never on Mac and never for any mobile platform.

So here is a short list what I found out you need to develop applications for iPhone:

  • a Mac (it can be done without a Mac, but it’s legally forbidden by Apple to run OSX on non-Apple hardware or in VM, so I wouldn’t advise to go this route if the developed app/game is going to be sold through AppStore),
  • subscription in Apple Developer Program (it’s $99 a year and is necessary to test your app on a physical device… if you are not going to jailbreak it that is),
  • XCode – it’s an Apple IDE for developing OSX and iPhone apps and it’s free to download for members of Apple Developer Program,
  • an iPhone – it’s really necessary to test your game on a physical device; simulator is not enough.

Theoretically that’s it. But that’s enough for ordinary apps. If you are going to make games, you need one more thing.

The engine.

Of course if you have really much time you can write your own. But it takes years and it’s doubtful, you’d come up with something better, that’s already available.

There are 3d and 2d engines out there. I already made a decision, that my game would be 2d. Another thing I considered is making a game for iPhone and porting it for Android later. So I was also looking for a multiplatform solution.

Here is a shortlist of options I found interesting at the first look:

  • Unity,
  • Corona SDK,
  • cocos2d.

Unity was excluded from the list pretty fast. It big, better suited for 3D and way too expensive for an indie game developer.

Corona seemed a very interesting option for a while. It is $349 a year (or $199 only for iPhone) and promises developing applications, which will run on iOS and Android. From the same code! Now this was really interesting. I downloaded a demo and invested a day or so to go through a few tutorials to get a feel how things work. I don’t own an Android device for now, so cannot really tell how much of the “write once, run on iPhone and Android” promise is true. But I’m sceptical. Even releasing a game for iPhone 3, iPhone 4 and iPad needs some extra code, assets and work. So it’s unlikely it’s so easy. But that’s not the point.

Two things put me of Corona pretty fast. There is no IDE. You write your code in Notepad. It can’t work for larger projects. Believe me. I worked for big companies as a software developer for many years and it’s pretty much impossible to work without IDE when a project grows in complexity. And your game will be complex enough.

Second problem with Corona is the way to build your application. When you hit build button, the code written locally is sent to some Corona (or Ansca Mobile actually) servers and gets compiled and built there. You get the result back. So it is impossible to build without internet access for example. If Ansca disappears some day, you are left alone with your code and cannot build anymore. It’s way unsecure I think if you are serious about getting into game development business for many years.

So, the third option: cocos2d. I’ll write about it in my next post.

Leave a comment

Posted by on June 17, 2011 in Technical


Tags: , ,

Why “Infinity”? Why “Dungeon”?

The second part is really easy, so I’ll start from explaining this. Most RPGs (if not all) has some action happening in dungeons. Exploration, fighting, looking for something or someone. You name it. Of course there are also forests, cities, deserts, mountains and other environments, but these are optional. Dungeons are not. You can have an RPG happening entirely in dungeons, caves and old crypts – only underground basically. But have you ever seen an RPG, which takes place only in forest? Maybe there are some, but they will be only exceptions confirming the rule. My game will also have dungeons, hence the second part of the name. Simple, right?

Now to the hard stuff. Why “Infinity”? To explain that, I have to get back to the excellent “Infinity Blade” iPhone game (see my previous post for more details). There is a gameplay mechanic, which is very compelling for most of gamers and especially for RPG gamers. And this mechanism can be found in it’s very pure and basic form in “Infinity Dungeon”. I think this is the main reason I liked this game so much. Not because of impressive 3D graphics or excellent, climate building sound and music (although these matter too of course). No, gameplay rulez. Always.

So what mechanism do I brag about so much? I mean improving stats. Be it stats of your character, equipment, spells, skills or just plain XP. But every RPG has it in one form or another, right? Otherwise it’s not called “RPG”. So what’s all this fuss about? To understand that, you have to play a few hours of “Infinity Blade” I think. Or read some reviews at least. I’ll try to explain anyways.

The whole game is a series of runs through a castle filled with bad guys. You start with a pretty weak knight (in terms of stats). You can defeat some lesser enemies, but not the final boss. Not a chance. So you die. Then “20 years later…” you start as a son, who came to the castle to avenge his fallen father. You start the second generation run. You are a little stronger, but die again at the final boss. You can buy better weapons, hone your magic and battle skills etc. in the process. Eventually you can hope to defeat the final boss at 20th generation or something like that. But that’s still the RPG’s usual, right? Except the generations maybe – which is probably one of reasons of the “infinity” word in the title.

What is new – to me at least – is maxing out various pieces of equipment. Let’s say you buy a new sword. It’s XP is 0 at the beginning. Every fight boosts this XP a bit. The sword gets better and better. Eventually you max out its XP. All other pieces of your equipment still get XP points, but not the maxed out sword. Time to buy a new sword. You cannot waste this precious XP on a maxed out sword after all right? And there are dozens of various swords, shields, armors, rings and other pieces of equipment to buy and max out in the game. There are even GameCenter achievements for that. I think this is the second reason for “infinity” in the title. The more important one.

This mechanism is incredibly addictive. And I’m going to implement it in one way or another in my game. So this is the explanation of “infinity” in my title.

Leave a comment

Posted by on June 16, 2011 in Design, Gameplay


Tags: , , ,

Infinity Dungeon

Ok, first things first. My blogging here will be a bit unusual at first. Actually I’ve been working on my first iPhone game for about two months already. Just conceptually mostly and in my spare time, so there is not much in terms of finished code or art yet. But still, I’m going to blog about things I did, researched etc. earlier. To catch up with the current state of things. Let’s begin now.

First thing you have to know if you are going to make a game is the genre, right? I love RPGs, so I decided it’s going to be an RPG. Traditional one, with swords, spells, dungeons and lots of statistics you can dig into. Serious, but in pocket format. No cute characters with too big eyes and breasts. But how to achieve that?

At that time I was heavily impressed with an iOS game called “Infinity Blade”. It’s a 3D slasher resembling somewhat a very good PS3 title “Demon’s Souls”. I’ve never seen such a good looking game on iPhone before. My iPhone also never got so hot (literally) while playing a game. Here is a pocketgamer review if somebody is interested.

Anyway, I was aware, there is no chance I could make such impressive 3D graphics myself in reasonable time. So the first question was: “am I going 3D or 2D route?” I always thought iPhone is more suitable for 2D games. True 3D iOS titles like “Aralon HD” or “Chaos Rings” were a royal pain to play for me. Why? Mainly because of cumbersome controls (no dedicated buttons on iDevices, just touchscreen) and not very good-looking  graphics. The first reason being much more important. But Infinity Blade was an exception. Graphics was amazing. But more importantly, controls were easy to use. They did not implement free movement as in most 3D titles. So no virtual joysticks, which cause, that half of the screen is obscured by your thumbs. Movement was solved much more elegant. Every 3D scene has 2-3 glowing points. You can tap one of them to go there or perhaps attack some monster or knight standing there. If you do that, game engine renders the movement scene, which is not interactive. After a few seconds you get control over your character again.

I liked this idea very much. So I decided to use it in my game, to make controls simple and elegant. This lead me to the name of the game: “Infinity Dungeon”. Which is still theoretically subject to change. But I don’t think it’s going to happen.

There are other reasons why Infinity and why Dungeon, but this will be subject of my next post.

Leave a comment

Posted by on June 15, 2011 in Design


Tags: , , ,