Here’s a quick look at the current state of our iPhone game in action. We just got animated sprites working (thanks to cocos2d) so still images are no longer going to be enough to illustrate its sheer awesomeness.
This video was taken with another iPhone, of course.
Wouldn’t it be nice if you could fire up Xcode and create a new cocos2d iPhone project using the New Project wizard? Thanks to these instructions, you can do just that. This was easily the most useful thing I came across today.
The following assumes you have git installed, which you can download here.
Determine your Xcode root directory. For example, I have Xcode for iPhone OS 2.0 in /Developer and Xcode for iPhone OS 3.0 in /Developer3.0
To set up this project template, add it to: /Developer3.0/Library/Xcode/Project Templates/Other by creating a sub-directory there, and then, from within the sub-directory, get the code with:
git clone git://github.com/tjweir/cocos2d-application.git
If you haven’t already, get the latest cocos2d tarball from http://www.cocos2d-iphone.org/download and untar it.
Under the global Xcode preferences, add (or update if it already exists) a Source Tree called COCOS2D_SRC. Make it point to the top-most cocos2d directory, like /Developer/Library/cocos2d-iphone-0.8-beta/
You should now be able to create a new cocos2d project from this template (it should be somewhere at the bottom of the list when you go to File -> New Project).
Static linking is awesome.
It sure is! Here’s the end result:
After about 20 hours, we went from very little knowledge of the iPhone platform to a pretty impressive prototype running on the device (as seen above). Now I’m taking stock of how exactly that happened.
I’m not only new to iPhone development, but also to Mac development. Xcode is completely new to me and so is Objective-C. Until now I have mainly developed on Windows using Visual Studio or web apps on IIS/LAMP servers.
I have to say I am really impressed that an IDE the quality of Xcode is included in the price of the Mac hardware. It is a solid tool. That being said, I have been spoiled with IntelliSense in VS. Xcode’s CodeSense just doesn’t match up. Auto-complete is good, but it isn’t quite enough.
Compared to other object-oriented languages, the differences of Objective-C are only skin-deep. The syntax took some getting used to. I mainly had problems with access issues of class member variables and methods. But being able to switch between that and standard C syntax is a life-saver.
We have chosen cocos2d for iPhone as our game engine. It is well documented, well supported by an active community and the price is right (read: it’s open source). It makes it very easy to set up a game structure: menu screen, game loop, frame-rate independent logic. The plethora of sample projects that they distribute give you examples of just about any functionality you could want in a 2D game. Our decision to use cocos2d was, in my opinion, the prime reason why we were able to get so much running so soon.
On the whole, at this early stage, I am very impressed with the iPhone development experience. The learning curve was not as steep as others have made it out to be. The device performs better than I expected it to under stress tests. The communities (both cocos2d and the Apple iPhone Developer communities) are active and enthusiastic. At this point I couldn’t be more pleased with our prospects.
Due to the fact that we all have day jobs getting the time to work on our project is the biggest limiting factor to getting it done. With time being extremely valuable we have been brainstorming various ways that we can make a good chunk of progess.
What we came up with was evening, one day and weekend long dev sprints. So far we’ve only being doing one day and evening sprints and the results have been pretty tremendous. The sprints consist of the artists “arting” and the coders “coding” till everyone is fed up to do anything else.
There are several advantages to doing code sprints where everyone is on the same site.
- You are less inclined to be distracted on some other task or start playing games because there is someone there with you.
- You have a bunch of people you can easily bounce ideas off of.
On this particular day me and Derek were taking our first in depth look at the Cocos2D game engine. A free open source engine for developing games with the iPhone SDK. Things started off pretty slow in the morning as we both struggled to get some basic Cocos API and Objective-C calls working and with XCode a bit. However once that was sorted out (or we developed workarounds) things started progressing. It should be noted that once we cracked open our first beer we started getting productive. I cannot lie. That is actually what happened.
Here’s a list of some things we did accomplish and a bit of a translation of what they mean.
- Cocos embedded as a subview of a UIScrollView object. This will allows us to use flick/swipe movement already built into the iPhone SDK
- Lots of ‘shrooms moving around. Derek did some great work with this trying out some flocking algorithms just to get an idea for frame rates with some mushroom textures Matt & Nick have put together.
- Hit detection. You can select the mushrooms being displayed and select them as they are moving around.
Some admin work was also completed thanks to Derek…
- Setup of Subverison repository. Still some tweaks needed for authentication but mostly there.
- Setup Mantis bug tracker
- Setup Trac, project management tool (although we may not use it)
Overall it was a very productive day and as you can see from some of the previous posts by Matt we’ve got a few screenshots of what we have put together so far. Enjoy. If you are working with a small team and you have trouble making any progress I highly recommend dev sprints as a way to move forward with a sense of accomplishment.
Here’s a first look at Get Set’s initial project. The working title is Mushroom Bloom although that is likely to change in the near future.
During a code sprint yesterday we got our first running build on the iPhone.
Initial tests were for:
- sprite display
- sprite movement
- Touch scrolling and flick scrolling
- Recording single touch hits on sprites from the touch screen
- activating vibration
- sound playback on sprite hits
Here are some screen grabs of our first tests.
Get Set is a new game development company formed in Toronto, Canada. We’re focused on creating totally awesome games for the iPhone platform and expect to release our first game this year. Get Set Games was incorporated officially last week and we received approval from Apple just yesterday to join the iPhone Developer Program so this is the very beginning of all things amazing.
The five members of our dev team have been working professionally for years in the games and real time 3D industries. We’ve got a lot of experience under our belts and we’re hoping to put that to good use on our upcoming projects. We have two artist/designers and three coders on board to get everything done.
We’ll be laying out all the details of our development excitement on this blog as we create our first game and get it up on the App Store. Hopefully some of what we share will be useful to the community.