Top Banner
Cocos2D Programming Dong Gyu PARK ( [email protected] ) June. 2012. Carnegie Mellon University - MSIT
91

Cocos2d programming

May 08, 2015

Download

Technology

Donggyu Park

Cocos2d Game Programming technology for developers.
Basic tutorial for Cocos2d on CMU MSIT course.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cocos2d programming

Cocos2D Programming

Dong Gyu PARK ( [email protected] )June. 2012.

Carnegie Mellon University - MSIT

Page 2: Cocos2d programming

Introduction

• DongGyu PARK(Dennis PARK)

• Associate Professor

• Changwon National University, S. KOREA

• Visiting Scholar at TAMU(2012. Feb-.)

• Visiting Researcher at CMU(2007-2008), Pittsburgh, PA

• Blog http://Cocos2dDev.com/ (Korean)

Page 3: Cocos2d programming

Agenda

• Portfolios

• Mobile Games

• Cocos2d Introduction

• Learning Cocos2d

• Cocos2d Tools

• Cocos2d on iOS vs Android

Page 4: Cocos2d programming

Portfolios

Page 5: Cocos2d programming

Shake Series

• Shaking App using accelerometer sensor

• 4 Players can play

• Fun Sounds

• Lightweight App

• Game Center available

• Cocos2d game development kit

Page 6: Cocos2d programming

Shake Series

Page 7: Cocos2d programming

Coke Shake

http://itunes.apple.com/us/app/coke-shake!/id448242537?mt=8

Page 8: Cocos2d programming

Action Game

Page 9: Cocos2d programming

Monster Buster

Page 10: Cocos2d programming

Monster Buster

http://itunes.apple.com/us/app/monster-buster/id440886409?l=ko&ls=1&mt=8

Page 11: Cocos2d programming

Pocket Windmill

http://itunes.apple.com/us/app/pocket-windmill/id439495371?l=ko&ls=1&mt=8

Page 12: Cocos2d programming

Mobile Games

Page 13: Cocos2d programming

Successful Mobile Game

Page 14: Cocos2d programming

Successful Mobile Game

• The game has to be easy to learn and understand

• people to not spend much time to learn mobile games

• Little input, Big output

• Simple but huge amount of feedbacks

• Physics based gameplay

• physics give much variations on same input

Page 15: Cocos2d programming

Successful Mobile Game

• A bright, fun, cartoony, and cute visual style

• Very simple storyline

• The player is constantly rewarded

• Huge amount of levels but very short to play

• Provides users ranking

Page 16: Cocos2d programming

AR Game : AR Defender

http://www.youtube.com/watch?v=rB5xUStsUs4&feature=player_embedded

AR defense - tracking by camera and marker

Page 17: Cocos2d programming

Look-up

http://www.youtube.com/watch?v=bps3FkX-_cY&feature=player_embedded

Team play is available

Page 18: Cocos2d programming

Cocos2D Introduction

Page 19: Cocos2d programming

Cocos2d

• Open Source 2D Game Framework

• Built upon the OpenGL API’s

• 2D Game, Graphic, Interactive Application Programs

• Sep. 2008 - 0.3.0 version released

• Used in thousands of apps

• Active developer community

Page 20: Cocos2d programming

Cocos2d

• Multi-platform game engine

• iOS, Mac OS X, Android ported

• Started as a Python framework, re-written in Objective-C in 2008

• Cocos2d-x - multi-platform port written in C++

Page 21: Cocos2d programming

Trainyard: #2 Paid

ZombieSmash: #1 PaidAir Penguin: #1 Paid

Birzzle

Cocos2d games

Page 22: Cocos2d programming

Cocos2d vs OpenGL

• You can also make a high level game using openGL, but ...

• You will need an animation of sprits, menus for the game, actions for game objects, sound effects, and much more...

• Cocos2d supports a wrapper class of OpenGL

• Also sound control class, menu class, sprites...

Page 23: Cocos2d programming

and CoreGraphics

• C-based API based on Quartz drawing engine

• low-level, lightweight 2D rendering

• path-based drawing, transformation, color management, offscreen rendering, patterns, image data management, image creation, masking

• low-level drawing apps

Page 24: Cocos2d programming

Cocos2d

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

Page 25: Cocos2d programming

Installation for iOS

Page 26: Cocos2d programming

Installation for iOS

Page 27: Cocos2d programming

Installation(super easy)

Page 28: Cocos2d programming

Cocos2d for Android

http://code.google.com/p/cocos2d-android-1/

Page 29: Cocos2d programming

Sample Program

Many featured sample codes are provided

Page 30: Cocos2d programming

Cocos2D Package

Tutorial codes for beginners- easy to start

Page 31: Cocos2d programming

Tutorial

Page 32: Cocos2d programming

Demo

Cocos2D for iPhone

Page 33: Cocos2d programming

and More

Page 34: Cocos2d programming

Learning Cocos2d

Page 35: Cocos2d programming

Features

• Scene Graph Structure

• Flow Control(Scene Management)

• Flow Control between Scenes

• Sprites and Sprite Sheets

• Easy and powerful way of Sprite Usage

• Actions are most powerful features

• Supports many actions including move, rotate, scale, sequence, spawn, and manipulate objects with ease.

Page 36: Cocos2d programming

Features

• Various 2D effect including wave, twirl, lens, liquid, ripple

• Tiled Maps, Transition, Menus, Text Rendering

• Built-in Font Support

• Embedded TrueType fonts and bitmap font

• Physics Engine : Chipmunk, Box2d, Particle System

Page 37: Cocos2d programming

Features

• Basic Menu and Button

• Parallax scrolling

• Sound Controls, Particle System

• High Score server(Cocos live)

• Based on OpenGL ES 1.1 - for iOS

• Based on OpenGL 1.5 - for Mac

Page 38: Cocos2d programming

Scene Graph Structure

• General data structure used in Vector based graphics editing application or games.

• Acrobat 3D, AutoCAD, VRML, Open Inventor, X3D, OpenSG,..

• Collection of nodes in a graph or tree structure

Page 39: Cocos2d programming

Scene Graph

• Hierarchy of every Cocos2d NODE that's currently active.

• Every node has exactly one parent node, except the scene itself, and can have any number of child nodes.

• General technique on high level graphics system or game programming

Page 40: Cocos2d programming

Scene GraphCCScene

CCLayer CCLayer CCLayer

CCSprite CCMenu CCSprite

Page 41: Cocos2d programming

Principal Classes• Cocos2D Class has name space starting with

CC-.

• CCNode - main class

• CCDirector - controls scenes

• CCSprite - logic to hold and manipulate game image

• CCScene

• CCLayer

Page 42: Cocos2d programming

CCNode Class

• The CCNode class is the super class of all Cocos2d class

• Defines common attributes and methods that all Cocos2d object must have

• contains the logic to enable it to schedule events on itself as well as to perform Cocos2d actions

Page 43: Cocos2d programming

CCNode Class

• Most important Cocos2D class, most object in Cocos2d inherits from CCNode

• CCScene, CCLayer, CCSprite, CCMenu classes are children of CCNode class

• Can include another CCNode object.

• Can schedule periodic callbacks

• Can run all actions

Page 44: Cocos2d programming

CCNode Class

• Attributes

• rotation, scaleX_, scaleY_,position, visible_, anchorPointInPixels_, anchorPoint_, isRelativeAnchorPoint_, contentSize_, transform_, inverse_, vertexZ_, camera_, grid, zOrder_, children_, ...

Page 45: Cocos2d programming

rotation

posit

ion

anchorPoint

• If you want to draw a monster in your game scene• You will need an image( CCSprite )• And its position, size, rotation angle, anchor point, ...(Attributes)

CCNode : Attributes

Page 46: Cocos2d programming

CCDirector Class

• Similar to a director’s role in movies

• Management object for game control thru scene

• OpenGL ES environment setting

• Running the game loop

Page 47: Cocos2d programming

CCScene Class

• A game is composed of multiple screens

• Each scene compose each screen on game

• Scene is composed of multiple layers (hierarchical structure)

• Scene contains CCLayer and other graphical objects on screen

Page 48: Cocos2d programming

Scene & Director

CCDirector

CCScene CCScene CCScene..

..

Page 49: Cocos2d programming

CCScene ClassCCScene

CCLayer CCLayer

(game layer) (touch handling layer)

Page 50: Cocos2d programming

CCLayer Class

• One Game scene can contain many layers

• and each layer contains more than one sprite or menu

• Capture user interaction or accelerometer

• Layer consists a scene

Page 51: Cocos2d programming

CCLayerScore: 210 LIFE : 3

CCLayer

CCSprite CCLabel CCNode..

CCSprite CCSprite ..

..

Page 52: Cocos2d programming

CCLayerScore: 210 LIFE : 3

CCLayer

CCSprite CCLabel CCNode..

CCSprite CCSprite ..

.. remove child

Page 53: Cocos2d programming

• CCLayer can handle touch and accelerometer events

• all the sprites and game elements are contained within layers

• Game controller

• Manage game entities

CCLayer Class

Page 54: Cocos2d programming

Sprite Object

• Image files are loaded into OpenGL ES Textures in a format that the GPU can understand

• contains the necessary logic to hold and manipulate your image.

• Sprites may be animated, by cycling through a number of different images

Page 55: Cocos2d programming

CCSprite

Texture-Sprite Sheet

Sprites

Page 56: Cocos2d programming

Action

• Control the movement, transition, and effects of Cocos2d objects.

• All CCNode objects are able to run actions.

• CCAnimate, CCJumpBy, CCRepeatForever, CCSequence, CCSpawn, CCMoveTo, CCFadeTo,...

Page 57: Cocos2d programming

• Modify node’s attributes by time

• position/rotation/scale/opacity/grid/...

• Interval actions and Instant actions

• Actions that let you compose actions

• Sequence action, Spawn action, Repeat action, RepeatForever action

Action

Page 58: Cocos2d programming

Running an Action

Page 59: Cocos2d programming

Running an Action

high level action description

Page 60: Cocos2d programming

Tools - TexturePacker

• Loading a sprite requires much system resources

• In a game scene many sprites are required

• each sprite contains many animation images

• packaging each image into a big sprite sheet

Page 61: Cocos2d programming

Sprite Images

...

MB_01.png MB_02.png MB_03.png MB_03.png

Page 62: Cocos2d programming

Making a big Sprite Sheet

Page 63: Cocos2d programming

Meta data

Page 64: Cocos2d programming

in your codeSprite sheet file

Sprite file

Sprite frame from sprite cached sheet

Animation contain frames

Animate framesrepeats animation forever

Page 65: Cocos2d programming

in your code

Page 66: Cocos2d programming

Tutorial-Birds on Wire

http://itunes.apple.com/us/app/birds-on-a-wire/id474403193?mt=8

Page 67: Cocos2d programming

How to use

...

...

Page 68: Cocos2d programming

Cocos2d Tools

Page 69: Cocos2d programming

Tools-Font Generator

• Many game developers want in-house bitmap font

• Game scene needs an special font effect and customized fonts

Page 71: Cocos2d programming

in your code

font file(testFont.png)

import meta-data(testFont.fnt)

Page 72: Cocos2d programming

Sound Editor• Sound Effect is very important in a game

Page 73: Cocos2d programming

Sound in your code• SimpleAudioEngine

object is a wrapper to the CDAudioManager object

• if you just want to play some sound fx without knowing lower level working, this is the interface to use

Page 74: Cocos2d programming

Map Editor

http://www.mapeditor.org/

Page 75: Cocos2d programming

Particle Editor

http://particledesigner.71squared.com/

Page 76: Cocos2d programming

More game tools

http://www.learn-cocos2d.com/2011/06/complete-list-cocos2d-tools/

Page 77: Cocos2d programming

Game Tools

• Many 3rd party game tools for Cocos2d are available

• Enrich your game effect

• Minimize your programming efforts

• More efficient way of memory management

Page 78: Cocos2d programming

Cocos2d on iOS vs Android

Page 79: Cocos2d programming

Cocos2d-android

• based on cocos2d-iphone design

• uses same API, but instead of using objective-c, it uses Java

• comparing to iOS design, it goes slow updating(latest follow-up cocos2d-iphone version is 0.99.4-June, 2012)

Page 82: Cocos2d programming

Android

Page 83: Cocos2d programming

Android code

Page 84: Cocos2d programming

iOS

Page 85: Cocos2d programming

iOS code

Page 86: Cocos2d programming

Android iOS

Page 87: Cocos2d programming

Demo

Page 88: Cocos2d programming

Cocos2d-X

• Cocos2d-X is a port of Cocos2d engine using C++

• written in C++ and OpenGL ES 1.1/2.0

• run on iOS, Android, BlackBerry, Bada(Samsung phone), Marmalade, Windows, Linux and more

Page 89: Cocos2d programming

Cocos2d-html5• written in Javascript for

HTML5 compliant browser

• derived from Cocos2d-X

• Available Cocos2d game on your web browser

http://www.gamefromscratch.com/post/2012/06/03/Cocos2D-HTML-release-a-tech-demo-Moon-Warriors.aspx

Page 90: Cocos2d programming

Q & A