In today’s post I would like to review the tools I used to perform the different types of tasks involved in the development of New Sokoban, my first iOS game.
Development
Xcode
When saying “development” I mean those tools that help me generating the code of the game. So, the first one is Xcode, the main development IDE for creating any kind of app for any of the Apple devices and computers. Xcode comes with the Mac OS. I have not used any other IDE on Mac OS, so I can’t compare. But I have worked on Windows and Linux using Visual Studio for C++ and Netbeans for Java, among others.
I have to admit that I like Xcode very much and the process of getting used to it was quite fast. It has some features that make the live of the indie dev much easier. However, it is far from being perfect.
Cocos2d
You could create a game only using Xcode and your software design skills. However, developing a competitive 2D engine for games is an incredibly hard work. Initially, I planned to do so. I even created a design document with the UML diagrams to develop a simple 2D engine. But looking to that document I understood that I needed to take another strategy…
So, I googled a bit and found a bunch of engines that supported iPhone games. Most of them where offered with license for which you have to pay. Although they weren’t specially expensive, I finally decided for a free solution: Cocos2d.
Cocos2d is a nice piece of code. It has almost any feature that a game developer would need. As a software engineer, sometimes I have the feeling that I’m limited using tools from others because I could develop a tool that perfectly fits my needs. It is true in some sense but you also need to realize that developing this kind of tools is very time consuming. Moreover, sometimes tools from others could give you a different perspective or even suggest new ideas, new work methods or new features for the game. So open your mind and take advantage of your limitations 🙂
Mental note: take advantage of your limitations. If you think that you are using tools that “limit” your hands, try to change your mind. Face it from a different perspective. Look to the limitations as a way to make you be more ingenious. Don’t think about what you can’t do, focus on what you can do and do it well.
Tiled
Tiled is a nice tool to create maps for tile based games. New Sokoban is not a tiled based game so I don’t use Tiled in a usual manner. My problem was that I needed some kind of graphical tool to create the puzzles of New Sokoban. Something with a sprite library, a canvas to work on and a XML based output to easily load the puzzles into the game.
Tiled offers all these things. The working methodology doesn’t perfectly fits my needs and the code to manage that is a little bit weird from the design point of view. However, it saved me tons of time. Probably I would spent a few weeks developing a puzzle editor for New Sokoban but with Tiled a set up everything in less than 2 days. Great!!! 😀
Texture Packer
Texture Packer is a little but essential tool for game developers. It creates texture atlases that boost your performance with cocos2d to the limit. It is specially designed to be used with cocos2d, so it is perfect for me 🙂
Hiero Bitmap Font Tool
Hiero is a little utility that allows you to create simple font atlases starting from the fonts on your system. It is very far from being a good solution, and probably a will end up purchasing some commercial one. But for the moment it has done the work.
Art
As I said on the previous post, my art skills are limited. However, some years ago I learned to use Photoshop, Illustrator, 3D Studio MAX, Maya and some other tools like these. I did it for fun, because I liked to work on artistic projects on my spare time. Now, during New Sokoban development, I realized that doing it for fun is very different from doing it for a project intended to be published. Anyway, I managed to create the artwork for New Sokoban using the duo Photoshop – Illustrator.
Audio
New Sokoban includes some audio FX that needed some tuning. I basically used GarageBand for this task. GarageBand is not supposed to be used in that way (actually I still doesn’t understand what GarageBand is supposed to be used for) but I managed to find all the features I needed and the final result is quite good 🙂
Documentation
Yes, documentation is a pain in the neck, but is definitely needed. Without documentation, finishing a project is completely impossible. However, taking into account that I’m currently working alone I managed to keep documentation up to date using Pages and Numbers. When I was working on the paintingWalls project with a colleague, we needed some solution on the cloud. So, we used Google docs. But for New Sokoban a local solution is fine 🙂
Backup
I used to manage the backups of my work by hand, copying the files that I considered important on an extern hard disk and on a virtual disk on the cloud. But this is a pain… Time goes and nothing happens with your files. You never loose nothing. Never have problems with your hard disk. And slowly and without realizing about it you start making backups every week, then every month, then every three months, then… then your Mac crashes… Yes, it happens from time to time. And it happened to me some time ago.
However, some months ago I received and incredible present: a Time Capsule! So now, Time Machine + Time Capsule take care of my work 😉
Conclusion
I think that the best way to conclude this post is by reusing a mental note from a previous post:
Mental note: always use existing tools. If there is a tool that barely fits your needs use it. You will be amazed about how quickly you adapt yourself to that tool and how your productivity increases.
hola, que es lo que xcODE puede y no puede hacer ?? y por ultimo se puede dar un blog como pagina de soporte técnico a apple (ósea darle mi blog para qe lo ponga como soporte técnico en la pagina de la app ya publicada)??
What about the hardware setup? I was wondering about the best way to develop for iOS; that is, either getting a Mac computer or trying to install a virtual machine with OSX r similar. What’s your take on it?
The best way currently is getting a Mac. It is possible to install a virtual machine into a non-Mac computer but I don’t think it is feasible if you want to work seriously on iOS development. Maybe if you first want to give it a try before buying a Mac…