★ TouchArcade needs your help. Click here to support us on Patreon.

Advice in Developing

03-02-2010, 01:37 AM
#1
Joined: Dec 2008
Posts: 142
Advice in Developing

Hey,
I am currently a high-school senior, and now that it is the second semester, I've been trying to find things to do with all of my spare time. I will be majoring in CS next year at CMU, so I figured, hey, why not learn something from my experience and try to develop a simple iPhone game. My current programming experience includes being fairly advanced in Java, and "knowing" C (this means I know the syntax and such, but I am not very good with the memory-management aspect).

So, my question is this. I've been looking over Objective-C and the iPhone SDK over the past few days and it is more complex than I thought. Do you guys think that, spending 1-2 hours a day from now till the end of June, I could become proficient enough to make a simple game? By simple, I mean something like an iCopter clone. Also, having absolutely no artistic skill, how would you suggest I get my artwork/music? Is there some sort of open library where I could freely take some sprites/backgrounds, or would I have to make some crappy images myself?
Thanks in advance.
03-02-2010, 04:27 AM
#2
I have a C/C++/Java background, and I didn't want to have to learn yet another language like Objective-C. Also, that's pretty low-level development compared to integrated development platforms like Shiva and Unity. I am more interested in quick prototyping using script-like conveniences. We decided to write our game using Unity 3D where you can code in Javascript or C#. And the great thing about Unity is you can easily port your game between iPhone, Mac, Windows, and web. And I think you will be able to port to Xbox 360 at some point in the future. You can get Unity basic for free: unity3d.com to see if that style of development works for you. Then spring for the basic iPhone upgrade which lets you develop for the iPhone for around $500.

03-02-2010, 05:39 AM
#3
Joined: Aug 2009
Location: Amsterdam, Netherlands
Posts: 41
I don't entirely agree with swiftest's point of view.
Being able to quickly prototype is a good thing of course, but I personally dislike having to "learn" a scripting language, all the surrounding environment and along with it all the limitations and frustrations that are bound to come with packages like unity, torque, sio2, etc...

I tend to stay away from pre-made environments such as Unity, which yes allow for a quick prototype development but in my experience become a huge pain when you want to polish the game, add that extra feature that isn't already in the engine, etc...

If already you know Java, which means you're familiar with OOP, and you also know some C (syntax wise), it would only take you a few weeks to switch over to Obj-C.

If you final aim is to develop games, I would highly suggest you pick up the cocos2d API.
No scripting , no closed sources, no bullsh*t basically.
A solid framework with loads of features, easy to build new "layers" on top of it and most of all easy to understand and learn.

Of course that's just my two cents, but having tried most of the APIs out there to aid in game development for the iPhone (Unity, SIO2, Torque, cocos2d) I would never ever pick anything else other than cocos2d.
Unless of course you're wanting to do a full 3d game, in which case good luck to you.

So, a big vote in favor of cocos2d and a little whinge when it comes to pre-built scriptable engines like Unity and Torque.
Of which by the way I hear the "multi platform" capabilities are more of a limitation than a feature, and as always I strongly think that being able to work "under the hood" will make the ultimate difference.
Scripting with pre-built engines and templates makes things work fast, but really you have no idea what you're doing and if something isn't already "done for you" you'll start crying and cursing.

Then again, just my two cents.
Good luck
03-02-2010, 11:52 AM
#4
Joined: Dec 2008
Posts: 142
Sorry swiftest, but I am going to have to side with patrickC here. I definitely do not want to go the Unity route, as it almost seems cheating and also not really what I had in mind anyway (in terms of programming, etc.). Cocos2d looks great though, thanks so much! It also seems to have a great community where I can ask questions and get quick answers if I'm stuck and having some problems. I'll look at it more thoroughly today to make sure its what I'm looking for.
Thanks!
03-02-2010, 12:50 PM
#5
Joined: Feb 2009
Location: San Jose, CA
Posts: 546
Quote:
Originally Posted by yankjenets View Post
Sorry swiftest, but I am going to have to side with patrickC here. I definitely do not want to go the Unity route, as it almost seems cheating and also not really what I had in mind anyway (in terms of programming, etc.). Cocos2d looks great though, thanks so much! It also seems to have a great community where I can ask questions and get quick answers if I'm stuck and having some problems. I'll look at it more thoroughly today to make sure its what I'm looking for.
Thanks!
I don't think of it as cheating -- no one cares how much time you spent implementing XYZ feature, instead of using someone else's pre-built one. At the end of the day, what matters is how many copies you sell. If there is a shortcut to get your game to market, you should take it. No sense reinventing the wheel.

That said, Cocos2D is IMO the easiest way to get started with 2D iPhone development. You don't have to know OpenGL for the most part -- it hides all that from you. I have a solid programming background, and went from never having used a Mac to having a game on the app store in 3 months. I definitely credit Cocos for being able to do this.

Also yes -- the Cocos community is great. The lead developer (riq on the forums) is really helpful, and the project is very frequently updated/maintained. If you do make money on the app store, I highly encourage you to donate some of the sales to riq, for doing such an awesome job with the project.

Last edited by lazypeon; 03-02-2010 at 12:53 PM.
03-02-2010, 01:15 PM
#6
Joined: Dec 2008
Posts: 142
Quote:
Originally Posted by lazypeon View Post
I don't think of it as cheating -- no one cares how much time you spent implementing XYZ feature, instead of using someone else's pre-built one. At the end of the day, what matters is how many copies you sell. If there is a shortcut to get your game to market, you should take it. No sense reinventing the wheel.

That said, Cocos2D is IMO the easiest way to get started with 2D iPhone development. You don't have to know OpenGL for the most part -- it hides all that from you. I have a solid programming background, and went from never having used a Mac to having a game on the app store in 3 months. I definitely credit Cocos for being able to do this.

Also yes -- the Cocos community is great. The lead developer (riq on the forums) is really helpful, and the project is very frequently updated/maintained. If you do make money on the app store, I highly encourage you to donate some of the sales to riq, for doing such an awesome job with the project.
Sorry, I should have clarified. I don't feel that it is cheating in making a game, but it is "cheating myself" and my intended purpose with this project. I am not trying to make an amazing game that sells a ton of copies (I will make the game free anyways), I just want to get a good programming experience from making this game and I feel using Unity is not the way to go for this.
03-02-2010, 02:31 PM
#7
Quote:
Originally Posted by yankjenets View Post
Sorry, I should have clarified. I don't feel that it is cheating in making a game, but it is "cheating myself" and my intended purpose with this project. I am not trying to make an amazing game that sells a ton of copies (I will make the game free anyways), I just want to get a good programming experience from making this game and I feel using Unity is not the way to go for this.
If I were around college age and only wanted to pursue game development as a hobby, then I'd probably feel the same way. But the app store is a ferocious competitive beast and every little edge helps. Also, most of the major studios on PC and consoles don't roll their own engine, but opt to license Unreal, Quake/Doom, CryENGINE and the like. I think Unity is the best of breed engine for iPhone development at the moment with an excellent support community. Will be interesting to see the Unreal engine for iPhone.

Also, I think learning Objective-C gives you a limited audience--only for Mac or iPhone/iPad products. You won't be able to translate that skillset directly to the corporate world or other platforms. It's a lot of time to invest unless you're sure of its utility to you.

I agree that you won't go wrong with Cocos2D for 2D games. Free ain't a bad price when you've got a great open source community around with Cocos2D. Unity can do 2D with some tricks, but that's not its strength. Zombieville was done with Unity, for example.

Unity's javascript and C# are compiled down to bytecode. While it's not as fast as pure Objective-C, it's pretty close in my estimation. Also, learning Javascript or C# is great from a programming perspective since those languages are applicable in the "real" world for web and application development. I'm more interested in higher level concepts like AI and game mechanics, and having to write the graphics, sound, and animation engine is just too much of a time sink and fraught with peril/bugs.

And being able to build it once and easily porting to a multitude of platforms using Unity is amazing. We're a two-man team at the moment and having this ability will come in handy if we can develop a good title.

Last edited by swiftest; 03-02-2010 at 02:34 PM.
03-03-2010, 12:49 AM
#8
Hi yankjenets,

A second-semester senior myself (), I can totally relate to your post here. I more or less just went through (and am still going through) the same process you're looking at.

I learned Java over the last summer, pretty much with the goal of transitioning from that into Objective-C to write iPhone apps.

As was mentioned earlier in this thread, Obj-C will take a few weeks to learn and get used to the basics (the syntax is a little funky at first), but it's really not that hard at all. Like you mentioned, the memory-management is a significant difference from Java, but with a little practice you learn to take care of it.

I thank dear God that I found Cocos2d quickly as I began to experiment with the iPhone. It is simply amazing, especially with the prospect of learning all the insanity that comes with OpenGL... I have yet to go there! So definitely go with Cocos2d -- it'll save you TONS of brain-damage.

It's been a blast, and it's really exciting when you finally get an app up and running on your own device. I've currently got one game on the App Store right now and another one coming very soon. That was few months of work, but, like you, I've been fitting it around a busy school/sports/whoknowswhatelse schedule. It's all doable if you're motivated.

I'd highly recommend going for it and trying to get something up on the store: it's a great experience, you'll learn a lot, and -- who knows? -- you just may get lucky. (just don't bet the ranch on it!)

Best of luck to you -- and hooray for 2nd Semester!

Tom
03-04-2010, 01:06 AM
#9
Joined: Mar 2010
Location: Brisbane, Australia
Posts: 9
Cocos2d

I came from languages like Java and Ruby and found Objective-C to be easy enough to learn. The syntax is as people say - a bit strange at first - but you get the hang of it pretty quickly. I went from almost no experience with Objective-C to having a game in the App Store (link in my signature) in just over two months.

I'm also loving Cocos2d for iPhone. Check out this tutorial for a quick run down.

I didn't find it until I was mostly finished my other game but I've since started using it to build my next game

Nathan Hoad

Not the Word - A brain-bending puzzle game that pits you against your reflexes; The faster you try to go the harder it gets.
03-04-2010, 01:51 AM
#10
Joined: Dec 2008
Posts: 142
Hey guys,
I just skimmed over an e-book on Obj-C and after wrapping my brain around some of the crazy syntax its easy enough. Thanks for tutorial link, nathanhoad, it saved me about 100 lines with that super easy collision detection method >.<

Tmsquasher, man that game looks amazing! May I ask how you got such awesome graphics, as I assume you are only a programmer? I know almost nothing about art and I'm having trouble with making it look pretty
P.S I find it hilarious that you are a two man team working on iPhone games and...selling lasers.

Thanks.