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

826 views

Published on

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

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
826
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×