• Games are fun! Making a game does not have to be hard.
• Write less infrastructure code, spend more time on design
and core gameplay
• OpenGL ES rendering and performance without having to
learn OpenGL ES to get started
• It is free!
GETTING COCOS2D - PART 2
1. Clone the Git Repository
2. Install theTemplates
• New Project -> Cocos2DTemplates
• Objective-C framework for games
• Scene Management,Textures,Audio
• Everything but the kitchen sink (3D stuff)*
• OpenGL ES rendering and optimizations,
Actions,Tile Maps, Parallax Scrolling, Scheduler,
High Score service, ...
• Your game is divided into scenes, scenes into
• Layers have what you care about, the Sprites
• Director is used to switch between scenes
• Everything uses the CC namespace, so layers
are CCLayers, CCScenes, CCSprites ...
LAYERS AND SCENES
• Actions are an easy way to apply transitions, effects, and
animations to your sprites
• MoveTo, MoveBy, ScaleBy, ScaleTo, FadeIn, FadeOut ...
CCAction *moveAction = [CCMoveBy actionWithDuration:2.0f
• Box2D is C++
• 2D rigid physics simulation engine with
continuous collision detection
• All your ﬁles that touch C++ or include it
must be Objective-C++ (.mm)
• Tuned for 1 meter sized objects!
• Use a ﬁxed time step!
• Attach the director to the AppDelegate
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[window setUserInteractionEnabled:YES];!// cocos2d will inherit these values
[window setMultipleTouchEnabled:YES]; // cocos2d will inherit these values
// create an openGL view inside a window
[[CCDirector sharedDirector] attachInView:window];!
[window makeKeyAndVisible];! !
• Director Options
// Define the gravity vector.
! b2Vec2 gravity;
! gravity.Set(0.0f, -10.0f);
! // Do we want to let bodies sleep?
! // This will speed up the physics simulation
! bool doSleep = true;
! // Construct a world object, which will hold and simulate the rigid bodies.
! world = new b2World(gravity, doSleep);
! groundBodyDef.position.Set(0, 0); // bottom-left corner
! // Call the body factory which allocates memory for the ground body
! // from a pool and creates the ground box shape (also from a pool).
! // The body is also added to the world.
! b2Body* groundBody = world->CreateBody(&groundBodyDef);
b2PolygonShape groundBox;! !
! // bottom
! groundBox.SetAsEdge(b2Vec2(0,0), b2Vec2(screenSize.width/PTM_RATIO,0));