3d game developer in openGL - iphone

I want to start as a 3d game developer . But I am not getting from where to start.
Should I work on some game engine or should I work to learn openGL which is the core of any game engine.
I am working as an application developer (iPHone) and I have worked on Cocos2d game engine for iPhone.
Any guide lines. Please help.

How about cocos3d?
cocos3d is a significant extension to cocos2d
that adds a full 3D modelling space,
including 3D mesh models, perspective
projection cameras, materials, and
lighting.

Do you want to emphasize the "3D" or the "Game" in "3D Game Developer"?
If you emphasize the 3D, you can dig deep into OpenGL, and all the concepts behind 3D graphics, and develop the low level drawing code for your game. See HG's response for a good start. 3D graphics programming is a huge subject. Just OpenGL ES, which is available in two incompatible versions under iOS, is a huge subject that could take many months to learn. Plus if you're writing the rendering code for your game, you'll probably be writing the rest of the game subsystems code such as AI and physics.
If you want to emphasize the Game, you can learn 3D game engines such as cocos3d (as Kazuki Sakamoto mentions). There are lots of such game engines. In addition to offering rendering code, these engines may offer other game subsystems. You'll be working on your game content more than reinventing the game subsystems.
It just depends upon which is more interesting to you.

Related

Which Path should i take when making a 2D iPhone game?

I have been looking into Open GL ES, Quartz 2D, a framework called cocos2D and I am not sure what would be the best direction to move forward in when making a 2D game. I am planning on making a pretty simple not to intense game and I am new to game development but not to iphone development.
Which would be the easiest to learn? Which one would give the best performance ?
Thanks
I was in the same position as you and I chose Cocos2D. It's perfect for a beginner. It's basically a wrapper for OpenGL ES, and it's open-source so you can see how it works and modify it to your liking.
Starting with Cocos2D is a good idea because you can make a lot of abstraction from complex low-level functionality, while achieving a good high-level overview of your game. While developing, you will pick up some low-level details as well, so that you'll be more prepared for them in future games.
Plus, Cocos2D has a really nice structure for simple 2D games. If you were to write this yourself in say OpenGL ES, then you would just lose a lot of time that you could be spending actually designing your game :)
But that's just my opinion.
Oh and don't worry too much about performance. Cocos2D is fine in that aspect. Like I said, it works on top of OpenGL ES so the drawing is done very efficiently. It also supports stuff like sprite batching and texture atlasses, which is good for performance.
As the goal of these frameworks is to provide simplified game development, this is definitely the way to go. Of those that you list, two of them are graphics "engines" (Open GL ES, Quartz 2D), and one is a game engine (cocos2D). If you choose graphics, then you'll probably have to write quite a bit of extra code, even for a simple game.

Conceptual iPhone 2d game dev question. Quartz? Cocos2d? Chipmunk? Box2d?

I am new to iPhone dev and would like to write a game that involves 2d collisions. Would somebody give me a conceptual overview on how the various frameworks interact in a typical 2d collision game?
The candidates I see mentioned so far are 2d packages such as quartz and cocos2d and physics engines such as chipmunk and box2d. What I am not extremely clear is the relationships among these in my context.
Thanks in advance for answering!
Quartz is a 2D graphics API by Apple. It's usually not used for performance-intensive games, because you can get better performance by using OpenGL directly or by using some thin framework made for games. (Which is what Cocos2D provides.) The collision stuff is independent on this debate, since the collisions are usually calculated without knowing anything about the graphic representation of the colliding objects.
The relationship between collision (or general physics) engines and the graphic layer is exactly the relationship between a model and a view in the MVC pattern. In each frame you move the physical world a bit forward (physics) and then you draw the objects on their new positions (graphics).
In reality the model and view sometimes blend a bit to make things faster, but in principle they are completely separate things. Which means you can pick any of the possible combinations of OpenGL, Quartz or Cocos2D as the graphics engine and Box2D or Chipmunk as the physics engine and get a decent game. I'm not sure how well do the particular combinations work in practice - if that was your question, then I've just wasted a few minutes of your life :-)
zoul got it right, I would just add this :
Cocos2d for iPhone provides samples including Box2D and Chipmunk if you want to try them and see how easy or hard they are to use. So you can go ahead and download Cocos2d, then play with the samples a bit to see if it fits your needs.

3d / 2.5d game library for iphone and pc

I'm trying to make a 2d shooter game with 3d background.
The player and enemies are essentially just quads with textures.
The background will be simple 3d polygons with textures and some fog and light.
Therefore, I don't need a really powerful 3d library.
I tried Unity3D and Torque2D, but I don't like to use their GUI editors. I prefer to work with code.
So, is there a cross platform (mainly windows and iPhone) 3d / 2.5d game library, commercial or open source?
I assume it will be only limited to c, c++, and object-c due to apple's new ToS.
Cocos2D works on iPhone.
I recall that there is an Ogre3D port to iPhone, but I don't remember its name just now.
If you just want some simple images you can just use OpenGL ES. I've heard it's quite nice to program with it on iPhone. Also, take a look at parallax. If you want to do 2.5D games I think it's a must.
Good luck

What framework should I use to develop a game for the iPhone?

I want to develop this game for the iPhone. Which framework would be best to use (e.g., Cocoa, Cocoa2d, OPENGLES)?
I would look at
http://code.google.com/p/cocos2d-iphone/
You get a whole engine to help with your app and getting some pretty tricky stuff working.
Cocos2d does the following.
Scene management (workflow)
Transitions between scenes Sprites
and Sprite Sheets Effects: Lens,
Ripple, Waves, Liquid, Twirl, etc.
Actions (behaviors): Trasformation
Actions: Move, Rotate, Scale, Jump,
etc. Composable actions: Sequence,
Spawn, Repeat, Reverse Ease Actions:
Exp, Sin, Cubic, etc. Misc actions:
CallFunc, OrbitCamera Basic menus and
buttons Integrated Chipmunk 2d
physics engine Particle system Text
rendering support Texture Atlas
support Tile Map support Parallax
scrolling support High Score server
(Cocos Live) Touch/Accelerometer
support Portrait and Landscape mode
Integrated Pause/Resume Supports
PowerVR Texture Compression (PVRTC)
format Language: objective-c Open
Source: Compatible with open and
closed source projects OpenGL ES 1.1 based
Cocoa2D is using OpenGL ES, and given the game you are looking to do is a simple sprite based game, I think this would be a fine tool kit to use.
On the other hand, for performance you might find that Quartz 2D is significantly faster and provides you for free useful things such as key frame animation. The reason you'll find it's faster is that OpenGL needs to handle at all times the possibility of 3D rendering and all the various possible interactions your polygons could have with the image space: projections, zordering along vertices, etc. Quartz 2D however is fixed in 2D space so provides a good 2D space management tool kit. Additionally all the additional overhead OpenGL can encompass is stripped out.
I've done both, and I've found Quartz 2D to be a simple and fast toolkit to learn and definitely easy to program in. In the future when I do simple 2D sprite based apps I myself will be using Quartz 2D.
I would go with OpenGLEs. It would allow you to have 3d and do some cool stuff later on if you wanted.

iPhone: Quartz2d vs. OpenGL ES

OK, I'm still brand new to iPhone development. I have a free game on the app store, Winner Pong, but it's just a Pong clone (who would've guessed) that uses the standard UIImageViews for the sprites. Now I want to do something a little more complicated, and port my game for the Xbox 360, Trippin Alien, to the iPhone. I obviously can't keep using UIImageViews, so I was wondering which would be better to learn: the simpler, but performance-hindering Qurtz2D, or the smooth-running but dauntingly complex OpenGL ES.
My game is basically a copter game, with about 8-10 sprites on screen plus a simple particle system (video here). Not too complicated, but performance does matter. My only prior game programming experience is in Microsoft's XNA and C#, which has a built in SpriteBatch framework that makes it incredibly easy to draw, scale, and rotate pre-rendered sprites on screen. Is it worth it to learn OpenGL ES? How big is the performance gap? Is quartz really that simple?
Also, if anyone knows of any tutorials for either one, please, post them here. I need as much help as I can get.
Look through code samples of each to actually see the complexity. You might find that OpenGL isn't so daunting.
Regarding the performance. Core Animation, which Quartz2d is part of, uses OpenGL behind the covers, so for simple sprite animations, I would expect your game to perform fairly well.
I would also glance over the programming guide for each before making your final decision.
Another alternative is to use something like Unity. I recently just started playing around with the trial version of this development environment and if you're mostly doing game development with graphical objects and sprites, this may be one option to consider. You can script in C#, Javascript, or Boo. The development environment allows you to graphically setup your scenes and levels. You can then attach scripts to graphical objects for animation to handle user events, etc.
One downside for Unity, which I've heard from others is that if you want to use the familiar UI controls from UIKit, it's not so easy to instantiate them...I haven't verified this myself.