Beginner path to Game Development for OS X and iPhone
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 your开发者_StackOverflow社区self 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.
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/
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 :)
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.
You can develop a small game for the iPhone quite quickly once you've mastered Objective C and the iOS APIs. It took me about 4 weeks to develop a small iPhone-only game with limited game logic. Here's a writeup of my experiences:
http://corrino-software.com/how_long_does_it_take_to_make_an_iphone_game
However, something like a Diablo-style game would be a massive project. As David says, you're better off starting with something smaller and more managable to begin with, then you can move up to larger projects once you're comfortable with the development process and familiar with the tools and libraries you'll need.
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.
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.
精彩评论