Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
2D Game with iOS
or Corona
김응식
2013.07.24
1
목차
‣ Corona SDK와 Sprite Kit비교
•Demo: A Little Angry Bird
‣ iOS 7의 Sprite Kit 소개
•Demo: Sprites, Particles, ...
‣ 모바일 2D 게임...
Corona SDK
3
Corona SDK 소개
‣ Lua 언어를 사용해서 멀티 플랫폼으로 2D게
임을 만들 수 있는 개발 SDK
‣ Box2D를 내장하고 있어 물리계 쉽게 구현
‣ Javascript와 같이 type이 없고 변수와 함수
구분...
Corona App by Uangel
5
Corona vs. Sprite Kit
‣ Sprite
‣ Particle
‣ Physics
6
Demo
7
Sprite Kit
8
Sprite Kit
Assertion failed: (count >= 3), function CreateLoop,
file /SourceCache/PhysicsKit_Sim/PhysicsKit-3.8/
PhysicsKit...
Sprite Kit 탄생 배경
‣ 앱 스토어의 60%정도가 2D 게임
‣ 개발자들의 요구: 고성능 2D 렌더링
•Sprite, Shape, Particle 등 빠른 성능
‣ 엔진개발이 아닌 게임개발에 집중하게끔
9
Sprite Kit 소개
‣ 노드 타입, 이펙트와 액션 그리고 물리계
‣ 스프라이트 키트로 게임 디자인
‣ 아트 파이프라인* 관리 - 제작, 편집, 사용
‣ Xcode 5 지원 알아보기
* http://en.wikipe...
Sprite Kit 게임의 구성
‣ Scenes
‣ Actions
‣ Physics
11
Sprite Kit 게임의 구성
‣ Scenes
‣ Actions
‣ Physics
Hero
Background
HUD
11
Sprite Kit 게임의 구성
‣ Scenes
‣ Actions
‣ Physics
Hero
Background
HUD
SKNode
11
Sprite Kit 게임 루프
12
Sprite Kit 게임 루프
-update:
12
Sprite Kit 게임 루프
-update:
13
SKScene
evaluate
actions
Sprite Kit 게임 루프
-update:
13
SKScene
evaluate
actions
Sprite Kit 게임 루프
-update:
14
SKScene
evaluate
actions-didEvaluateActions:
Sprite Kit 게임 루프
-update:
14
SKScene
evaluate
actions-didEvaluateActions:
Sprite Kit 게임 루프
-update:
15
SKScene
evaluate
actions-didEvaluateActions:
SKScene
simulate
physics
Sprite Kit 게임 루프
-update:
15
-didEvaluateActions:
SKScene
evaluate
actions
SKScene
simulate
physics
Sprite Kit 게임 루프
-update:
16
-didEvaluateActions:
SKScene
evaluate
actions
SKScene
simulate
physics
-didSimulatePhysics:
Sprite Kit 게임 루프
-update:
16
Sprite Kit 게임 루프
-didEvaluateActions:
SKScene
evaluate
actions
SKScene
simulate
physics
-didSimulatePhysics:
-update:
17
Sprite Kit 게임 루프
-didEvaluateActions:
SKScene
evaluate
actions
SKScene
simulate
physics
-didSimulatePhysics:
-update:
SKVi...
Sprite Kit 게임 루프
SKScene
evaluate
actions-didEvaluateActions:
SKScene
simulate
physics
-didSimulatePhysics:
-update:
SKVie...
SKNode 계층
SKNode
19
SKNode 계층
SKLabelNode
SKEmitterNode
SKShapeNode
SKSpriteNode SKScene
SKCropNode
SKEffectNode
SKNode
19
SKSpriteNode
‣ SKTexture와 SKColor의 Container
‣ SKTexture는 비트맵 데이터의 Container
‣ [[SKScene class] addChild:
[SKSpriteNode cl...
Demo
21
SKEmitterNode
‣ 모든 기능을 갖춘 2D 파티클 시스템
‣ startValue와 speed로 속성
‣ 키프레임 시퀀스 컨트롤
‣ Texture, Scale, Rotation, Emission
angle, Em...
Demo
23
기타 SKNode 들
‣ SKVideoNode
‣ SKShapeNode
‣ SKLabelNode - 한 줄만...
‣ SKEffectNode - 그룹핑
‣ SKCropNode - 매스킹
24
SKAction 목적
‣ 액션(애니메이션)을 위한 초간편 사용성
‣ 한줄의 생성자 - SKAction
‣ 동작중인 노드에 직접 적용
‣ 스크립트 언어와 같은 구현
25
SKAction 사용
SKAction *a=[SKAction rotateByAngle:M_PI duration:1.0];
a = [SKAction moveTo:aCGPoint duration:1.0];
a = [SKAc...
스페셜 SKActions
[SKAction customActionWithDuration:dur
actionBlock:^(SKNode *n, CGFloat t) {
CGFloat radio = t / dur;
SKEmit...
Demo
28
SKPhysicsBody
‣ Sprite Kit 에 완벽하게 집적됨
‣ 글로벌 on/off 스위치는 없음
‣ Node 대 node 간 사용 가능함
29
SKPhysicsBody 사용
‣ 박스 만들어 공을 넣어보자!
self.physicsBody = [SKPhysicsBody
bodyWithEdgeLoopFromRect:self.frame];
SKSpriteNode *s...
Demo
31
SKPhysicsWorld
‣ 각 SKScene은 physicsWorld를 갖음
‣ Hit tests, ray casts, add joints
‣ 중력 변경 : 방향, 크기
self.physicsWorld.gravity...
충돌 감지
‣ SKPhysicsContactDelegate
self.physicsWorld.contactDelegate = myContactDelegate;
‣ SKPhysicsContact
self.physicsWor...
Demo
34
Sprite Kit 정리
‣ SKScene 트랜지션
‣ 반대 방향 액션
‣ SKView 디버깅 통계
‣ Texture atlas 자동 생성
35
모바일 2D 게임
전망
36
Pro and Con
‣ Pro
•엔진을 보유하거나 만들 능력자 만이 개발
가능한 수준의 게임을 Sprite Kit으로 제작
가능
‣ Con
•국내 같이 android가 지배적인 상황에서
의 플랫폼 이식에 대안 필요
37
전망
‣ 카톡게임 이제 iOS부터 만들자? ㅋ
‣ 게임에만 쓸일까?
‣ 게이미피케이션은 서막일뿐이다.
‣ 애플은 TV를 생각하고 있을까?ㅋ
38
감사합니다
@neoroman
39
Upcoming SlideShare
Loading in …5
×

2D games with iOS or Corona

890 views

Published on

iOS 의 2D 게임 개발과 Corona SDK를 비교해보고, iOS 7의 Sprite Kit 에 대해 알아본다.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

2D games with iOS or Corona

  1. 1. 2D Game with iOS or Corona 김응식 2013.07.24 1
  2. 2. 목차 ‣ Corona SDK와 Sprite Kit비교 •Demo: A Little Angry Bird ‣ iOS 7의 Sprite Kit 소개 •Demo: Sprites, Particles, ... ‣ 모바일 2D 게임의 전망 2
  3. 3. Corona SDK 3
  4. 4. Corona SDK 소개 ‣ Lua 언어를 사용해서 멀티 플랫폼으로 2D게 임을 만들 수 있는 개발 SDK ‣ Box2D를 내장하고 있어 물리계 쉽게 구현 ‣ Javascript와 같이 type이 없고 변수와 함수 구분이 없음 ‣ Indie는 무료, Pro/Enterprise는 유료 (참고) http://tinyurl.com/coronasdk 4
  5. 5. Corona App by Uangel 5
  6. 6. Corona vs. Sprite Kit ‣ Sprite ‣ Particle ‣ Physics 6
  7. 7. Demo 7
  8. 8. Sprite Kit 8
  9. 9. Sprite Kit Assertion failed: (count >= 3), function CreateLoop, file /SourceCache/PhysicsKit_Sim/PhysicsKit-3.8/ PhysicsKit/Box2D/Collision/Shapes/b2ChainShape.cpp, line 35. 8
  10. 10. Sprite Kit 탄생 배경 ‣ 앱 스토어의 60%정도가 2D 게임 ‣ 개발자들의 요구: 고성능 2D 렌더링 •Sprite, Shape, Particle 등 빠른 성능 ‣ 엔진개발이 아닌 게임개발에 집중하게끔 9
  11. 11. Sprite Kit 소개 ‣ 노드 타입, 이펙트와 액션 그리고 물리계 ‣ 스프라이트 키트로 게임 디자인 ‣ 아트 파이프라인* 관리 - 제작, 편집, 사용 ‣ Xcode 5 지원 알아보기 * http://en.wikipedia.org/wiki/Art_pipeline 10
  12. 12. Sprite Kit 게임의 구성 ‣ Scenes ‣ Actions ‣ Physics 11
  13. 13. Sprite Kit 게임의 구성 ‣ Scenes ‣ Actions ‣ Physics Hero Background HUD 11
  14. 14. Sprite Kit 게임의 구성 ‣ Scenes ‣ Actions ‣ Physics Hero Background HUD SKNode 11
  15. 15. Sprite Kit 게임 루프 12
  16. 16. Sprite Kit 게임 루프 -update: 12
  17. 17. Sprite Kit 게임 루프 -update: 13
  18. 18. SKScene evaluate actions Sprite Kit 게임 루프 -update: 13
  19. 19. SKScene evaluate actions Sprite Kit 게임 루프 -update: 14
  20. 20. SKScene evaluate actions-didEvaluateActions: Sprite Kit 게임 루프 -update: 14
  21. 21. SKScene evaluate actions-didEvaluateActions: Sprite Kit 게임 루프 -update: 15
  22. 22. SKScene evaluate actions-didEvaluateActions: SKScene simulate physics Sprite Kit 게임 루프 -update: 15
  23. 23. -didEvaluateActions: SKScene evaluate actions SKScene simulate physics Sprite Kit 게임 루프 -update: 16
  24. 24. -didEvaluateActions: SKScene evaluate actions SKScene simulate physics -didSimulatePhysics: Sprite Kit 게임 루프 -update: 16
  25. 25. Sprite Kit 게임 루프 -didEvaluateActions: SKScene evaluate actions SKScene simulate physics -didSimulatePhysics: -update: 17
  26. 26. Sprite Kit 게임 루프 -didEvaluateActions: SKScene evaluate actions SKScene simulate physics -didSimulatePhysics: -update: SKView renders the scene 17
  27. 27. Sprite Kit 게임 루프 SKScene evaluate actions-didEvaluateActions: SKScene simulate physics -didSimulatePhysics: -update: SKView renders the scene 18
  28. 28. SKNode 계층 SKNode 19
  29. 29. SKNode 계층 SKLabelNode SKEmitterNode SKShapeNode SKSpriteNode SKScene SKCropNode SKEffectNode SKNode 19
  30. 30. SKSpriteNode ‣ SKTexture와 SKColor의 Container ‣ SKTexture는 비트맵 데이터의 Container ‣ [[SKScene class] addChild: [SKSpriteNode class]]; 20
  31. 31. Demo 21
  32. 32. SKEmitterNode ‣ 모든 기능을 갖춘 2D 파티클 시스템 ‣ startValue와 speed로 속성 ‣ 키프레임 시퀀스 컨트롤 ‣ Texture, Scale, Rotation, Emission angle, Emission speed, Blend modes ‣ Xcode 5 파티클 에디터 내장 22
  33. 33. Demo 23
  34. 34. 기타 SKNode 들 ‣ SKVideoNode ‣ SKShapeNode ‣ SKLabelNode - 한 줄만... ‣ SKEffectNode - 그룹핑 ‣ SKCropNode - 매스킹 24
  35. 35. SKAction 목적 ‣ 액션(애니메이션)을 위한 초간편 사용성 ‣ 한줄의 생성자 - SKAction ‣ 동작중인 노드에 직접 적용 ‣ 스크립트 언어와 같은 구현 25
  36. 36. SKAction 사용 SKAction *a=[SKAction rotateByAngle:M_PI duration:1.0]; a = [SKAction moveTo:aCGPoint duration:1.0]; a = [SKAction fadeAlphaTo:0.75 duration:1.0]; a = [SKAction scaleBy:2.0 duration:1.0]; a = [SKAction scaleXBy:1.5 y:0.5 duration:1.0]; [mySprite runAction:a]; SKAction * b = [SKAction animateWithTextures:@[t0, t1, t2] timePerFrame:0.1]; SKAction *p = [SKAction followPath:myPath duration:2.5]; 26
  37. 37. 스페셜 SKActions [SKAction customActionWithDuration:dur actionBlock:^(SKNode *n, CGFloat t) { CGFloat radio = t / dur; SKEmitterNode *en = (SKEmitterNode *)n; en.emissionAngle = ratio * 2 * M_PI; }]; 27
  38. 38. Demo 28
  39. 39. SKPhysicsBody ‣ Sprite Kit 에 완벽하게 집적됨 ‣ 글로벌 on/off 스위치는 없음 ‣ Node 대 node 간 사용 가능함 29
  40. 40. SKPhysicsBody 사용 ‣ 박스 만들어 공을 넣어보자! self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@”sphere.png”]; sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width * 0.5]; [self addChild:sprite]; 30
  41. 41. Demo 31
  42. 42. SKPhysicsWorld ‣ 각 SKScene은 physicsWorld를 갖음 ‣ Hit tests, ray casts, add joints ‣ 중력 변경 : 방향, 크기 self.physicsWorld.gravity = CGPointMake(0.0, -9.8); self.physicsWorld.gravity = CGPointMake(0.0, +9.8); 32
  43. 43. 충돌 감지 ‣ SKPhysicsContactDelegate self.physicsWorld.contactDelegate = myContactDelegate; ‣ SKPhysicsContact self.physicsWorld.contactDelegate = myContactDelegate; -(void)didBeginContact:(SKPhysicsContact *)c { if (c.bodyA.node == heroSprite) // Hero hit...! } 33
  44. 44. Demo 34
  45. 45. Sprite Kit 정리 ‣ SKScene 트랜지션 ‣ 반대 방향 액션 ‣ SKView 디버깅 통계 ‣ Texture atlas 자동 생성 35
  46. 46. 모바일 2D 게임 전망 36
  47. 47. Pro and Con ‣ Pro •엔진을 보유하거나 만들 능력자 만이 개발 가능한 수준의 게임을 Sprite Kit으로 제작 가능 ‣ Con •국내 같이 android가 지배적인 상황에서 의 플랫폼 이식에 대안 필요 37
  48. 48. 전망 ‣ 카톡게임 이제 iOS부터 만들자? ㅋ ‣ 게임에만 쓸일까? ‣ 게이미피케이션은 서막일뿐이다. ‣ 애플은 TV를 생각하고 있을까?ㅋ 38
  49. 49. 감사합니다 @neoroman 39

×