views:

115

answers:

5

Another question. I have been researching everything this wonderful community has offered me in terms of my journey to pursue game development.

I have come to the conclusion that I would prefer to develop on my native machine, OS X - eventually leading to the iPhone.

I already own both Big Nerd Ranch guide's, Iphone Programming - the Big Nerd Ranch Guide and Learn to Program on Mac OS X - the big Nerd Ranch Guide.

My goal that I am trying to shoot for is a game similar to Blizzard's Diablo II.

When going through these books, everything seemed a bit over my head due to lack of Objective-C experience (so I suspect).

What it the best beginner friendly way for me to reach my goals? I have been looking at Objective-C books for beginners from Apress and the like, or straight C books.

How would experienced developers such as yourself guide a newbie through this path?

Regards

  • edit -

To answer why I have picked the apple route, it just looks to be the most comfortable (environment is native to the machine). I may be very wrong though. I was looking at Unity, it supports C#, JavaScript and Boo. Others like Panda3D use Python. I am just not sure, it seems like the decision process has become rather challenging.

A: 

If I were you, I'd start out with C, learn the fundamentals of programming, algorithms, and memory allocation (incredibly important concept in C). Then, you can move up to reading some books on Objective-C and get an idea for object-oriented programming and higher-level concepts like dynamic typing, garbage collection, etc.

As for software, if you're on OS X you want to get XCode, which is an integrated development environment developed by Apple for developing for iOS and OS X. Apparently, it's a free download (though that's just what Apple says on their website, dunno, I don't have a Mac).

As for books, etc. I'd just get some straight C books and look at some tutorials. Read them from cover to cover, and pay special attention to the important (and frustrating) concepts of memory allocation and management and pointers.

Rafe Kettler
I'm going to start with Learn C on the Mac, unless there is any other better read. - EDIT - Accidently hit return, what are some good exercises when learning a new language. I find I understand the concepts well in my mind, just have trouble executing them do to lack of exercises.
twinbornJoint
+1  A: 

I would recommend you

a) learn the basics of C (especially memory management)

b) learn the basics of Objective-C

c) learn the iPhone SDK from a book (I liked "Beginning iPhone Development" and its 2nd volume)

d) pick any project you find interesting and that is not too challenging and just code. You will find that by the time you are done, you probably think the things you did first are horrible, but you will learn a lot in the process

e) visit Stackoverflow.com as often at possible, it has most of the answers to the questions you will have :)

Joseph Tura
+2  A: 

It depends on the kind of game you're making - but many of the top games on iPhone were created with an open-source framework called cocos2d. It is fabulous, simplifies everything, has great tutorials and is available specifically for the iPhone.

Check it out at:

http://www.cocos2d-iphone.org/

Brad
Wow. So I'd never actually *tried* Cocos2d before - so in the past 24 minutes since posting - I read some of the example and tutorials - downloaded the kit (which also includes the Box2d physics engine) - installed and built the kit - and now have a bunch of sample games running on the Simulator! Pretty powerful stuff!!
Brad
Great comment. I just did the same and I'm pretty amazed at how quickly I can learn just by reviewing some of the code for these games.
krio
Very interesting, can you create a game with visuals similar to Diablo and a birds eye/third person camera view? Or would all RPG's be like Final Fantasy classic?
twinbornJoint
I'm not familiar with those games - but yes, creating "birds eye/third person" view would be right up it's alley.
Brad
A: 

I find that a good way to learn a new language is to start with replicating common command-line tools like wc, grep, ls, etc. This will teach you the basics of I/O (both file and stdin/stdout) and some basic string parsing, as well as other goodies here and there. Additionally, you have a deterministic method of determining whether your program does it right or not, since you can easily compare to the standard command's output or behavior.

K&R, as well as Programming in Objective-C 2.0, are good places to learn the basics of C and Objective-C.

Once you have the basics of the language down, start with basic GUI programs (the ones in Hillegass's book are a good start). Once you can hook a basic GUI on the front of some underlying logic, it's time to start thinking more seriously about your game. Hillegass's book has a basic intro to using NSOpenGLView, which you can use to manually draw in 2D and 3D. It's important to note that when going through the examples in any book, you'll want to thoroughly understand what they're doing and how they're doing it, enough so that you can make some modifications yourself to enhance/change the behavior of the sample program you're working with.

Once you understand the basics of how your underlying game logic can hook to something the user can see, it's time to go find a game/drawing library that will get you where you're going. You definitely don't want to write all of the graphics routines yourself for a game similar to Diablo.

alesplin
A: 

If you're working on a Mac, then things get interesting.

The largest game markets by several orders of magnitude are consoles and Windows. If you're just targeting the iPhone and OSX, the Mac is ideal for development. However, this is a limited (Mac OS), VERY competitive (iPhone) market. If you want to make something that will become a real product with real sales, limiting yourself to OSX from the starting gate is probably a mistake.

If you're just starting out and want to learn what makes all this game crap tick, stick with the language and OS that you're most comfortable with. Introducing too many variables into a learning expedition is a significant ingredient in failure. One of the nice things about this sort of app is that the algorithms and techniques you'll pick up are inherently cross-platform. Matrices are matrices, whether you're working on a TI-89 or an Alienware desktop.

However, if this is the case, try and remain aware of what platform-specific widgets you're using in your code. Plan to throw this one away. Write a bunch of test apps. And, when you feel confident that you're ready to build something real, you'll be ready to break out a VM or a new desktop with Windows (I LOVE XNA), C++ with DirectX or OpenGL, or whatever, and the variables, the new material you have to learn, won't be about graphics or math or gameplay, but about the platform itself.

Writing "Hello, World!" is a lot easier if you're not figuring out what you're trying to say, but only how to say it.

Also, rather than aiming for a Blizzard clone, start with something dirt simple, like Pong. Then make 3D Pong. Then add gravity. Then collision detection. And so on.

Also check out gamedev.stackexchange.com when you have game dev-specific questions. It's a LOT lower-traffic than SO, and a lot of the participants are teenage fanboys, but there is good knowledge there ready to be tapped.

David Lively