Posted
Filed under 개발/강의



* 시리즈 목차
들어가기
101 샘플게임 설명
102 GameplayKit 설명

게임 무대 만들기
201a GUI툴로 타일맵 배경 만들기 (Tile Map Editor)
201b 코드로 타일맵 배경 만들기 (GKRandomSource, Procedural Generation)
202 카메라 배치하기 (SKCameraNode, 타입 프로퍼티)
203 경과시간 표시하기 (SKLabelNode, update 함수, 프로퍼티 옵저버)
204 골 배치하기 (GKRandomDistribution)
205 장애물 설치하기 (Overlap 판정)

객체 준비하기
301 플레이어 배치 (Particle Emitter, SKLightNode)
302a 플레이어 움직이기 (터치에 대한 속도와 각도 계산법)
302b 바닥종류에 따라 객체속도변경하기 (SKTileMapNode)
303 적 배치하기 (Timer)

인공지능 도입하기
401a 에이전트 시스템 준비하기 (GKComponentSystem, GKAgent2D)
401b 적에게 인공지능 부여하기 (GKBehavior, GKGoal, GKObstacle)
402 룰 시스템 셋업하기 (GKRule)

게임 더 꾸미기
501 사운드 붙이기 (SKAudioNode)
502 가상 조이스틱 사용하기 (TLAnalogJoystick)
503 충돌 판정하기 (SKPhysicsBody)
504a 게임오버 처리하기 (State Machine, 하이스코어 처리)
504b 게임오버 씬 전환하기 (SKScene)


* SpriteKit과 GameplayKit으로 만드는 인공지능 술래잡기 게임 Playlist
https://www.youtube.com/playlist?list=PL_XkuR-7VWcv7MK0d5QeSVZI6ADAY4iOD


* Source code
https://github.com/cliearl/SKHideandSeek
2020/05/16 08:49 2020/05/16 08:49
Posted
Filed under 개발/강의


이 강의에서는 Cocoapods을 이용해 iOS 게임에 구글 애드몹 배너를 표시하는 법에 대해 설명합니다.


* 강의에 사용된 소스코드
https://github.com/cliearl/SKSpaceShooting

* Udemy 강의 주소
https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?referralCode=AF0E25201AD1BABB97A6

* 인프런 강의 주소
https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84#

2019/11/02 09:39 2019/11/02 09:39
Posted
Filed under 개발/강의


이 강좌에서는 애플의 SpriteKit이라는 게임엔진을 배우고, 학습한 내용으로 직접 게임을 만들면서 최종적으로 짧은 슈팅게임을 완성합니다.
이 편에서는 보스의 미사일패턴을 만드는 법에 대해 설명합니다. 또한 함수 오버로딩에 대해서도 설명합니다.
 
강의에 사용된 게임의 소스코드는 다음 저장소에서 확인하실 수 있습니다.
https://github.com/cliearl/SKSpaceShooting
 

강좌의 주소는 다음과 같습니다.

Udemy - https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?referralCode=AF0E25201AD1BABB97A6

인프런 - https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84#
2019/10/19 19:00 2019/10/19 19:00
Posted
Filed under 개발/강의


* 강의에 사용된 소스코드
https://github.com/cliearl/SKSpaceShooting

이 강좌에서는 애플의 SpriteKit이라는 게임엔진을 배우고, 학습한 내용으로 직접 게임을 만들면서 최종적으로 짧은 슈팅게임을 완성합니다. 코딩언어로는 Apple에서 개발한 Swift의 5.0 버전을 사용합니다.

각 챕터에서 기능을 구현하는 데 필요한 이론과 문법만을 알기쉽게 설명하고, 바로 코딩하여 게임에 적용하는 방법으로 강의를 진행합니다. 각 강의 이름에 게임에서 사용할 핵심 기술을 기술하였습니다.걱정하지 마세요! 이 강의를 수강하면서 Swift의 모든 문법을 알지 못하더라도, 게임엔진의 사용법을 잘 모르더라도 게임을 만들 수 있다는 것을 알게 될 것입니다.


강좌는 다음과 같이 구성되어 있습니다.
* 기초지식 설명
샘플게임 소개
게임엔진 설명 (SpriteKit)
Xcode 프로젝트 기본 셋업하기 (Build and Version Number)

* 게임배경 만들기
게임 씬 만들기 (SKScene)
움직이는 별무리 배치하기 (Particle Emitter)
날아오는 운석 만들기 (Sprite Atlas, SKAction, Timer)

* 게임 알고리즘 구성하기
플레이어 셋업하기 (Optional)
잡졸 비행기 만들기
추진체 효과 내기 (SKEffectNode)
물리효과 구현하기 (Physics Simulation)
충돌시 피탄효과 구현하기 (SKCameraNode)
헤드업 디스플레이 구현하기(SKNode, SKLabelNode)
보스 셋업하기
스테이트머신으로 보스 관리하기 (State Machine)
보스 미사일 패턴 만들기 (Missile Pattern, Function Overloading)
아이템 셋업하기 (enumerateChildNode, Counter Timer)
게임흐름 처리하기 (Scene Transition)

* 게임 더 꾸미기
사운드 설정하기 (SKAudioNode)
앱 아이콘과 런치스크린 설정하기 (App Icon Generator)
구글 애드몹으로 배너 표시하기 (CocoaPods, Google Admob Banner Ads)
게임속에서 보상형광고 사용하기 (Google Admob Rewarded Video Ads)


강의는 Udemy와 인프런 두 군데에서 보실 수 있습니다.
Udemy는 다음 링크로 들어오시면 10% 할인된 가격으로 수강하실 수 있습니다.
https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?couponCode=UDEMYSPRITEKIT

인프런은 10월 8일까지 10% 할인을 하고 있으니 관심 주시면 정말 감사하겠습니다.
https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84
2019/10/06 16:16 2019/10/06 16:16
Posted
Filed under 개발/강의


Udemy 강의 주소
https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?couponCode=UDEMYSPRITEKIT

인프런 강의 주소
https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84#

이 강좌에서는 애플의 SpriteKit이라는 게임엔진을 배우고, 학습한 내용으로 직접 게임을 만들면서 최종적으로 짧은 슈팅게임을 완성합니다. 코딩언어로는 Apple에서 개발한 Swift의 5.0 버전을 사용합니다.

각 챕터에서 기능을 구현하는 데 필요한 이론과 문법만을 알기쉽게 설명하고, 바로 코딩하여 게임에 적용하는 방법으로 강의를 진행합니다. 각 강의 이름에 게임에서 사용할 핵심 기술을 기술하였습니다.
걱정하지 마세요! 이 강좌를 수강하면서 Swift의 모든 문법을 알지 못하더라도, 게임엔진의 사용법을 잘 모르더라도 게임을 만들 수 있다는 것을 알게 될 것입니다.

강좌는 다음과 같이 구성되어 있습니다.

  • 기초지식 설명

    • 샘플게임 소개
    • 게임엔진 설명 (SpriteKit)
    • Xcode 프로젝트 기본 셋업하기 (Build and Version Number)
  • 게임배경 만들기

    • 게임 씬 만들기 (SKScene)
    • 움직이는 별무리 배치하기 (Particle Emitter)
    • 날아오는 운석 만들기 (Sprite Atlas, SKAction, Timer)
  • 게임 알고리즘 구성하기

    • 플레이어 셋업하기 (Optional)
    • 잡졸 비행기 만들기
    • 추진체 효과 내기 (SKEffectNode)
    • 물리효과 구현하기 (Physics Simulation)
    • 충돌시 피탄효과 구현하기 (SKCameraNode)
    • 헤드업 디스플레이 구현하기(SKNode, SKLabelNode)
    • 보스 셋업하기
    • 스테이트머신으로 보스 관리하기 (State Machine)
    • 보스 미사일 패턴 만들기 (Missile Pattern, Function Overloading)
    • 아이템 셋업하기 (enumerateChildNode, Counter Timer)
    • 게임흐름 처리하기 (Scene Transition)
  • 게임 더 꾸미기

    • 사운드 설정하기 (SKAudioNode)
    • 앱 아이콘과 런치스크린 설정하기 (App Icon Generator)
    • 구글 애드몹으로 배너 표시하기 (CocoaPods, Google Admob Banner Ads)
    • 게임속에서 보상형광고 사용하기 (Google Admob Rewarded Video Ads)

이 코드를 확장시킨 게임은 애플 앱스토어에서 다운로드할 수 있습니다.
Space Piyongpiyong Apple Appstore
https://apps.apple.com/app/space-piyongpiyong/id1462255763

2019/10/02 15:12 2019/10/02 15:12
Posted
Filed under 개발/강의


Udemy 강의 주소
https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?couponCode=UDEMYSPRITEKIT

인프런 강의 주소
https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84#

이 강좌에서는 애플의 SpriteKit이라는 게임엔진을 배우고, 학습한 내용으로 직접 게임을 만들면서 최종적으로 짧은 슈팅게임을 완성합니다. 코딩언어로는 Apple에서 개발한 Swift의 5.0 버전을 사용합니다.

각 챕터에서 기능을 구현하는 데 필요한 이론과 문법만을 알기쉽게 설명하고, 바로 코딩하여 게임에 적용하는 방법으로 강의를 진행합니다. 각 강의 이름에 게임에서 사용할 핵심 기술을 기술하였습니다.
걱정하지 마세요! 이 강좌를 수강하면서 Swift의 모든 문법을 알지 못하더라도, 게임엔진의 사용법을 잘 모르더라도 게임을 만들 수 있다는 것을 알게 될 것입니다.

강좌는 다음과 같이 구성되어 있습니다.

  • 기초지식 설명

    • 샘플게임 소개
    • 게임엔진 설명 (SpriteKit)
    • Xcode 프로젝트 기본 셋업하기 (Build and Version Number)
  • 게임배경 만들기

    • 게임 씬 만들기 (SKScene)
    • 움직이는 별무리 배치하기 (Particle Emitter)
    • 날아오는 운석 만들기 (Sprite Atlas, SKAction, Timer)
  • 게임 알고리즘 구성하기

    • 플레이어 셋업하기 (Optional)
    • 잡졸 비행기 만들기
    • 추진체 효과 내기 (SKEffectNode)
    • 물리효과 구현하기 (Physics Simulation)
    • 충돌시 피탄효과 구현하기 (SKCameraNode)
    • 헤드업 디스플레이 구현하기(SKNode, SKLabelNode)
    • 보스 셋업하기
    • 스테이트머신으로 보스 관리하기 (State Machine)
    • 보스 미사일 패턴 만들기 (Missile Pattern, Function Overloading)
    • 아이템 셋업하기 (enumerateChildNode, Counter Timer)
    • 게임흐름 처리하기 (Scene Transition)
  • 게임 더 꾸미기

    • 사운드 설정하기 (SKAudioNode)
    • 앱 아이콘과 런치스크린 설정하기 (App Icon Generator)
    • 구글 애드몹으로 배너 표시하기 (CocoaPods, Google Admob Banner Ads)
    • 게임속에서 보상형광고 사용하기 (Google Admob Rewarded Video Ads)

이 코드를 확장시킨 게임은 애플 앱스토어에서 다운로드할 수 있습니다.
Space Piyongpiyong Apple Appstore
https://apps.apple.com/app/space-piyongpiyong/id1462255763

2019/10/02 15:10 2019/10/02 15:10
Posted
Filed under 개발/강의



이 강좌에서는 애플의 SpriteKit이라는 게임엔진을 배우고, 학습한 내용으로 직접 게임을 만들면서 최종적으로 짧은 슈팅게임을 완성합니다. 코딩언어로는 Apple에서 개발한 Swift의 5.0 버전을 사용합니다.

각 챕터에서 기능을 구현하는 데 필요한 이론과 문법만을 알기쉽게 설명하고, 바로 코딩하여 게임에 적용하는 방법으로 강의를 진행합니다. 각 강의 이름에 게임에서 사용할 핵심 기술을 기술하였습니다.
걱정하지 마세요! 이 강좌를 수강하면서 Swift의 모든 문법을 알지 못하더라도, 게임엔진의 사용법을 잘 모르더라도 게임을 만들 수 있다는 것을 알게 될 것입니다.


강좌는 다음과 같이 구성되어 있습니다.
* 기초지식 설명
샘플게임 소개
게임엔진 설명 (SpriteKit)
Xcode 프로젝트 기본 셋업하기 (Build and Version Number)

* 게임배경 만들기
게임 씬 만들기 (SKScene)
움직이는 별무리 배치하기 (Particle Emitter)
날아오는 운석 만들기 (Sprite Atlas, SKAction, Timer)

* 게임 알고리즘 구성하기
플레이어 셋업하기 (Optional)
잡졸 비행기 만들기
추진체 효과 내기 (SKEffectNode)
물리효과 구현하기 (Physics Simulation)
충돌시 피탄효과 구현하기 (SKCameraNode)
헤드업 디스플레이 구현하기(SKNode, SKLabelNode)
보스 셋업하기
스테이트머신으로 보스 관리하기 (State Machine)
보스 미사일 패턴 만들기 (Missile Pattern, Function Overloading)
아이템 셋업하기 (enumerateChildNode, Counter Timer)
게임흐름 처리하기 (Scene Transition)

* 게임 더 꾸미기
사운드 설정하기 (SKAudioNode)
앱 아이콘과 런치스크린 설정하기 (App Icon Generator)
구글 애드몹으로 배너 표시하기 (CocoaPods, Google Admob Banner Ads)
게임속에서 보상형광고 사용하기 (Google Admob Rewarded Video Ads)


강의는 Udemy와 인프런 두 군데에서 보실 수 있습니다.
Udemy는 다음 링크로 들어오시면 10% 할인된 가격으로 수강하실 수 있습니다.
https://www.udemy.com/course/swift5-spritekit-ios-2d-shooting-game/?couponCode=UDEMYSPRITEKIT

인프런은 10월 8일까지 10% 할인을 하고 있으니 관심 주시면 정말 감사하겠습니다.
https://www.inflearn.com/course/Swift-SpriteKit-iOS-%EC%8A%88%ED%8C%85%EA%B2%8C%EC%9E%84#

새 강의 출시기념으로 인프런에 출시한 기존 강의인 “Swift로 iOS 2D 아케이드 게임 만들기”도 20% 할인합니다. 쿠폰번호 5-5a2d96652ed4로 강의를 등록하세요.
https://www.inflearn.com/course/%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8-iOS-%EA%B2%8C%EC%9E%84%EA%B0%9C%EB%B0%9C#

강의에 사용한 모든 코드는 강사의 Github에서도 공개하고 있습니다. 실습에 필요한 에셋은 각 강의에서 개별적으로 제공됩니다.
https://github.com/cliearl/SKSpaceShooting


이 코드를 확장시킨 게임은 애플 앱스토어에서 다운로드할 수 있습니다.
Space Piyongpiyong Apple Appstore
https://apps.apple.com/app/space-piyongpiyong/id1462255763
2019/09/25 19:20 2019/09/25 19:20
Posted
Filed under 개발/강의
사용자 삽입 이미지

https://www.inflearn.com/course/%EC%8A%A4%EC%9C%84%ED%94%84%ED%8A%B8-iOS-%EA%B2%8C%EC%9E%84%EA%B0%9C%EB%B0%9C

Swift 5.0으로 iOS Flappy Bird 게임 만들기

2014년에 대유행했던 플래피버드 게임을 iOS로 만들어보는 강좌입니다.
Swift 언어로 코딩하지만 언어의 기본지식이 없으셔도 괜찮습니다. 코드의 의미를 가능한 구체적으로 설명하며 코딩합니다.

Swift는 최신 버전인 5.0을 사용하였습니다.
코드를 따라하며 강좌를 모두 수강하고 나면 다음과 같이 멋진 게임이 완성될 것입니다.

13강의 내용까지 적용된 코드를 Github에서 다운로드 받아 자신의 코드와 비교해 보세요

https://github.com/cliearl/SpritekitFlappyBirdLike

준비 사항

  • 최신 버전의 Xcode를 사용할 수 있는 매킨토시 환경
  • 그리고 강의를 끝까지 공부하겠다는 의지!

배우면 할 수 있는 것들

  • SpriteKit의 구조와 사용법을 알게 됩니다
  • iOS의 내장 게임엔진으로 2D 게임을 만들 수 있습니다
  • Swift에 대한 감을 잡을 수 있습니다

수강 대상

  • Swift에 대한 호기심이 있으신 분
  • iOS로 간단한 2D 게임을 만들고 싶은 분

선수 지식

  • 아주 약간의 Swift 문법 지식

 

교육과정

배경지식 알아보기
SpriteKit이란?  13 : 18

게임속 객체 준비하기
씬 만들고 이미지 붙이기  23 : 36
플레이어 애니메이션 만들기  16 : 37
무한한 무대 만들기  14 : 44

게임 알고리즘 구현하기
물리효과 적용하기  43 : 35
스코어 만들기  14 : 03
스테이트머신 도입하기  11 : 59
데미지효과 내기  18 : 06
게임오버  20 : 46
소리 재생하기  10 : 02

게임 더 꾸미기
파티클이미터 사용하기  19 : 54
좀 더 게임같이 다듬기  26 : 11
2019/09/13 22:44 2019/09/13 22:44
Posted
Filed under 개발/그외
문제 해설
https://tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/



1. N진수 게임
https://www.welcomekakao.com/learn/courses/30/lessons/17687

2. 압축
https://www.welcomekakao.com/learn/courses/30/lessons/17684

3. 파일명 정렬
https://www.welcomekakao.com/learn/courses/30/lessons/17686

4. 방금 그 곡
https://www.welcomekakao.com/learn/courses/30/lessons/17683

5. 자동완성
https://www.welcomekakao.com/learn/courses/30/lessons/17685

필기 시험
http://tech.kakao.com/files/kakao-blind-recruitment.pdf

2019/09/03 14:43 2019/09/03 14:43
Posted
Filed under 개발/그외
https://programmers.co.kr/learn/courses/18


파트1. 자릿수 더하기 문제
https://programmers.co.kr/learn/courses/18/lessons/1876

파트2. 순열 검사 문제
https://programmers.co.kr/learn/courses/18/lessons/1877

파트3. 나머지 한 점 문제
https://programmers.co.kr/learn/courses/18/lessons/1878

파트4. 가장 큰 정사각형 찾기 문제
https://programmers.co.kr/learn/courses/18/lessons/1879

파트5. 땅따먹기 문제
https://programmers.co.kr/learn/courses/18/lessons/1880

파트6. 스티커 모으기 문제
https://programmers.co.kr/learn/courses/18/lessons/1881

파트7. 단어 퍼즐 문제
https://programmers.co.kr/learn/courses/18/lessons/1882
2019/09/01 11:37 2019/09/01 11:37
Posted
Filed under 개발/그외
Swift로 풀어봤따.


문제 해설
http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/

1. 비밀지도 (비트연산)
https://www.welcomekakao.com/learn/courses/30/lessons/17681

2. 다트 게임 (정규표현식)
https://www.welcomekakao.com/learn/courses/30/lessons/17682

3. 캐시
https://www.welcomekakao.com/learn/courses/30/lessons/17680

4. 셔틀버스 (문자열 시간변환, 딕셔너리)
https://www.welcomekakao.com/learn/courses/30/lessons/17678

5. 뉴스 클러스터링 (집합, 딕셔너리)
https://www.welcomekakao.com/learn/courses/30/lessons/17677

6. 프렌즈 4블록 (2차원배열, 스왑)
https://www.welcomekakao.com/learn/courses/30/lessons/17679

7. 추석 트래픽 (문자열 시간변환)
https://www.welcomekakao.com/learn/courses/30/lessons/17676


2019/08/30 14:06 2019/08/30 14:06
Posted
Filed under 개발/강의


Playlist: https://www.youtube.com/playlist?list=PL_XkuR-7VWcuVZs1OtdVexQJBj-0wVVfd

Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 게임의 외적인 부분을 구성하는 메뉴화면, 튜토리얼, 런치스크린, 앱아이콘을 설정하는 부분에 대해서 설명합니다.

* 강의에서 작성한 코드
https://github.com/cliearl/SpritekitFlappyBirdLike


[강의내용]
* 스타트 화면 만들기
* 배경 둘 중에 하나 랜덤으로 고르기
* Tutorial 추가하기
* 런치스크린 설정
* 앱아이콘 설정
2019/07/10 10:31 2019/07/10 10:31
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 Xcode의 파티클 이미터(Particle Emitter) 기능을 설명하고, 이 기능을 이용해 게임에 비가 내리는 효과와 플레이어에 추진체가 붙은 특수효과를 내는 방법에 대해 설명합니다.

[강의내용]
* 파티클 이미터 시스템 설명
* Xcode에서 파티클 작성
* 작성한 파티클을 게임에 적용하기
2019/07/02 23:12 2019/07/02 23:12
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 사운드이펙트와 백그라운드 뮤직(BGM)을 게임에 삽입하고 재생하는 방법에 대해 설명합니다.

[강의내용]
* SoundFX 구조체
* Sound Effect: SKAction.playfilenamed
* BGM: SKAudionode
2019/06/24 18:58 2019/06/24 18:58
Posted
Filed under 개발/강의



Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는  게임이 종료되었을때 수행해야하는 처리에 대해 설명합니다.

[강의내용]
* gameOver() 처리
* 게임오버 후의 처리
* Userdefault로 하이스코어 저장하기
* 게임오버 보드만들기
2019/06/18 09:50 2019/06/18 09:50
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 SKAction 클래스의 설명을 합니다. 또 플레이어가 피격시 피격효과를 내는 법에 대해서 설명합니다.

[강의내용]
* SKAction
* 피해 효과 내기
* SKCameraNode로 카메라 추가
* 화면 흔들기
2019/06/13 16:46 2019/06/13 16:46
Posted
Filed under 개발/강의
2019/06/09 21:14 2019/06/09 21:14
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 SKLabelNode로 스코어라벨을 만들고 스코어를 증가시키는 방법과 외부폰트로 스코어라벨을 만드는 방법에 대해 설명합니다.

[강의내용]
* SKLabelNode: 라벨 정렬
* 스코어라벨 생성
* 충돌판정시 스코어 갱신
* 스코어 갱신시 라벨노드 갱신
* 외부폰트 사용
2019/06/04 13:08 2019/06/04 13:08
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 Node의 physicsBody 속성을 이용해서 물리효과를 적용하는 방법을 설명합니다.

[강의내용]
* Node의 physicsBody 속성
* collision과 contact의 차이
* 노드모양에 따른 비용
* PhysicsCategory 구조체
* 무한파이프 셋업
* SKPhysicsWorld.contactDelegate 설정
* didBegin()
2019/06/03 19:32 2019/06/03 19:32
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 SKAction으로 무한히 반복되는 배경을 만듭니다.

[강의내용]
* 게임 루프
* 무한히 반복되는 무대를 작성
* SKScene의 Background Color 지정
* Layer 구조체 작성
2019/06/03 19:31 2019/06/03 19:31
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 SKAction으로 플레이어 스프라이트에 애니메이션을 추가하는 방법을 설명합니다.

[강의내용]
* SpriteAtlas
* SKAction으로 애니메이션 만들기
* Scene Editor로 애니메이션 만들기
2019/06/03 19:30 2019/06/03 19:30
Posted
Filed under 개발/강의


Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다. 이 영상에서는 SKScene 클래스로 화면을 작성하고 SKSpriteNode로 이미지를 화면에 표시합니다.

[강의내용]
* SKScene으로 화면만들기
* GameViewController.swift 설명
* iOS기기의 해상도 대응
* SKSpriteNode로 이미지 표시
2019/06/03 19:29 2019/06/03 19:29
Posted
Filed under 개발/강의


Macbook의 Xcode에서 Swift 5를 이용해 iOS용 Flappy Bird 게임을 만듭니다. 게임엔진으로는 iOS에 내장된 SpriteKit을 사용합니다.

[강의내용]
* 게임엔진이란
* SpriteKit이란
* SpriteKit의 구조
* Xcode로 기본 게임프로젝트 작성
2019/06/03 19:28 2019/06/03 19:28
Posted
Filed under 개발/iOS
* 코드를 작성할 때는 Swift 코딩규약에 따라 작성한다

스위프트 공식 홈페이지에서 마련한 가이드라인은 다음과 같다.
- API Design Guidelines
http://swift.org/documentation/api-design-guidelines/

코딩교육사이트로 유명한 raywenderlich.com 에서 제시하는 가이드라인은 다음과 같다. 현재 v4.2 를 기준으로 하고 있다.
- The Official raywenderlich.com Swift Style Guide
http://github.com/raywenderlich/swift-style-guide
이 가이드라인은 한국어로도 번역되어 있다.
http://kka7.tistory.com/59

구글에서 제안하는 스위프트 코딩 규약은 다음 페이지에서 찾을 수 있다.
- Google Swift Style Guide
http://google.github.io/swift/

일본의 IT 교육회사에서 사용하고 있는 스위프트 코딩규약도 있다. 2018년 1월 시점
- Swiftコーディング規約@Life is Tech !
http://qiita.com/ShinokiRyosei/items/916e658fda6d6862c706

Github에서도 스위프트 코딩스타일에 대한 가이드라인을 마련했는데 2017년 11월 시점으로 업뎃을 중단했다.
- Github guide to Swift style and conventions
http://github.com/github/swift-style-guide



*규약을 항상 외우고 있을수는 없기 때문에 Lint 플러그인을 사용하여 자동으로 문법오류를 잡도록 하는것이 편리하다. SwiftLint라는  도구가 그 역할을 할 수 있다.
- SwiftLint
http://github.com/realm/SwiftLint

SwiftLint를 개발한 realm.io의 소개강의가 있다
- SwiftLint로 보다 명확하고 깔끔한 코드를 만들어 보세요!
http://academy.realm.io/kr/posts/slug-jp-simard-swiftlint/

SwiftLint의 사용법은 다음 페이지에서 상세히 설명하고 있다.
- iOS ) 내 프로젝트에 SwiftLint를 적용해보자
http://zeddios.tistory.com/447



* 코드를 깔끔하게 작성했다면 코드를 자동으로 문서화 하는 툴인 Jazzy를 사용할 수 있다.
- Jazzy
http://github.com/realm/jazzy

realm.io에서 개발한 jazzy를 사용하면 Xcode에서 Markdown 스타일로 작성한 코드를 문서화해준다
- Documenting Your Swift Code in Xcode Using Markdown
http://www.appcoda.com/swift-markdown/
- Swift Documentation
http://nshipster.com/swift-documentation/

한글로 된 Jazzy의 사용법은 다음 사이트에 나와 있다.
- [Jazzy] Xcode에서 Jazzy를 이용해서 애플 래퍼런스 문서 스타일의 API문서 만들기
http://bitboylabs.wordpress.com/2016/10/18/jazzy-xcode%EC%97%90%EC%84%9C-jazzy%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%B4%EC%84%9C-%EC%95%A0%ED%94%8C-%EB%9E%98%ED%8D%BC%EB%9F%B0%EC%8A%A4-%EB%AC%B8%EC%84%9C-%EC%8A%A4%ED%83%80%EC%9D%BC%EC%9D%98-api/

가장 최신의 Jazzy 사용설명 페이지는 다음과 같다
- Generate & Host your iOS Documentation
http://medium.com/@jonathan2457/generate-host-your-ios-documentation-39e21b382ce8
- Swift用ドキュメント生成ツール「Jazzy」のセットアップ&操作方法
http://qiita.com/uhooi/items/d900c2de03e9d9f39b95


* jazzy 사용
- gem update --system으로 gem 최신화
- gem install jazzy로 설치
- 인스톨중 퍼미션에러 발생. rootless라는 OSX의 시스템요소때문에 발생한다고 한다
http://stackoverflow.com/questions/32891965/error-while-executing-gem-errnoeperm-operation-not-permitted
- sudo gem install -n /usr/local/bin jazzy
- 빌드가 가능한 xcode 디렉토리에서 jazzy --clean --min-acl private를 실행하면 문서가 생성된다.
2019/05/09 20:06 2019/05/09 20:06
Posted
Filed under 개발/iOS
Swift Xcode Release Date
5.0 10.2 2019-03-25
4.2 10.0 or later 2018-09-17
4.1 9.3-9.4 2018-03-29
4.0 9.0-9.2 2017-09-12
3.1 8.3-8.3.3 2017-03-27
3.0 8.0-8.2 2016-09-13
2.2.x 7.2-7.3 2015-12-08

정확히 반년 주기로 업그레이드를 하고 있다. Swift 3.0 버전을 지원하는 마지막 Xcode 버전은 8.3.3이므로 안돌아가는 코드가 있으면 구버전을 설치하여 작업하면 되겠다. 구버전 Xcode의 다운로드는 아래 사이트에서.
http://xcodereleases.com/
2019/05/09 10:54 2019/05/09 10:54
Posted
Filed under 개발/iOS
* How To: Working With Timers In Swift
https://learnappmaking.com/timer-swift-how-to/
- 반복타이머 설정 (@objc 필요)
[code]
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: true)
[/code]

- 클로저로 만들수도 있다
[code]
let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { timer in
    print("FIRE!!!")
})
[/code]

- userInfo를 이용해 타이머속 함수에 값을 전달할 수 있다
[code]
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire(timer:)), userInfo: ["score": 10], repeats: true)

@objc func fire(timer: Timer)
{
    if  let userInfo = timer.userInfo as? [String: Int],
        let score = userInfo["score"] {

        print("You scored \(score) points!")
    }
}
[/code]

- 카운트다운 타이머 생성
[code]
var timer:Timer?
var timeLeft = 60
timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(onTimerFires), userInfo: nil, repeats: true)
@objc func onTimerFires()
{
    timeLeft -= 1
    timeLabel.text = "\(timeLeft) seconds left"

    if timeLeft <= 0 {
        timer.invalidate()
        timer = nil
    }
}
[/code]

- 타이머는 run loop와 동시에 돌아간다. 런루프는 상황을 보고 타이머를 돌리는데 tolerence를 주면 타이머에 여유를 줄 수 있다. 애플은 10% 여유분을 권장한다. tolerence는 ±가 아닌 +만을 의미한다. 또한 이번 타이머가 톨러런스에 의해 늦어지더라도 다음 타이머에는 영향을 주지 않는다.
[code]
let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: true)
timer.tolerance = 0.2
[/code]

- 타이머는 메인쓰레드의 run loop에 default mode로 등록되므로 메인쓰레드가 너무 바쁘면 실행되지 않을 수도 있다. 다음과 같이 commonModes로 등록하면 쓰레드가 타이머를 항상 감시하게 된다.
[code]
let timer = Timer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: true)
RunLoop.current.add(timer, forMode: .commonModes)
[/code]

- 타이머가 아닌 Grand Central Dispatch를 이용하여 코드에 딜레이 주기. 타이머는 계속 감시해야 하는데 GCD는 한번만 실행되므로 이쪽이 더 경제적이다.
[code]
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) { 
    print("BOOYAH!")
}
[/code]

* Build a count down timer with Swift 3.0
https://medium.com/ios-os-x-development/build-an-stopwatch-with-swift-3-0-c7040818a10f
- 카운트다운 타이머를 만드는 예제
2019/05/08 10:34 2019/05/08 10:34
Posted
Filed under 개발/iOS
[Xcode 프로젝트 설정]
- 프로젝트 생성시 Product Name은 스페이스 없는 연속된 글자로 설정한다. Camelcase를 쓰면 알아보기 좋다.
- Version은 1.0 보다는 1.0.0 으로 쓰는것이 좋다.



[Apple Developer 설정]
- developer.apple.com -> Certificates, Identifiers & Profiles -> Identifiers -> App IDs에서 와일드카드가 아닌 프로젝트의 고유한 App ID를 작성해야 한다. 이때 입력하는 번들ID는 프로젝트의 번들ID와 일치해야 한다.
- App ID 는 Xcode -> Capabilities 에서 메뉴 중 아무거나 하나를 ON으로 해 주면 자동으로 등록되므로 문제없이 하고 싶다면 이 방법을 추천한다.

- iOS Distribution용 Certificate가 없다면 생성해 주어야 한다. 이 때 CSR 파일이 요구된다
- CSR(Certificate Signing Request)파일은 실제 개발에 사용하는 맥북의 고유한 키 파일이다.
- 런처패드 -> 기타 -> 키체인 접근 -> 인증서 지원 -> 인증 기관에서 인증서 요청 -> 디스크에 저장됨 으로 CSR파일을 생성 및 저장한다. 도큐먼트 폴더에 일괄적으로 모아두면 파악하기 좋다.

- developer.apple.com의 Provisioning Profiles -> Distribution -> +버튼으로 추가 -> App store 선택 -> App ID 선택 -> Download 후 실행하면 키체인에 등록된다.
- 맥북에 있는 Provisioning Profile이 충돌할 경우 파일을 다 지우고 다시 설치하면 된다.
- Provisioning Profile 파일은 Finder -> 이동 메뉴에서 Option키 클릭 -> 라이브러리 -> MobileDevice에 자동으로 저장된다.


[App Store Connect 설정 1]
- appstoreconnect.apple.com에서 My Apps (나의 앱) -> New iOS App을 선택했을때 번들ID가 뜨면 Apple Developer에서 생성한 App ID가 iTunes Connect에 연동된 것이다. SKU는 아무렇게나 넣어도 되는데 번들ID를 그대로 넣어주는게 편하다.


[Xcode에서 Appstore에 업로드]
- Xcode에서 실행을 시뮬레이터가 아닌 디바이스를 선택
- 메뉴의 Product -> Archive  -> Validate 로 앱스토어에 업로드 할 패키지를 생성
- Submit 과정에서 Validate가 이루어지기 때문에 Validate는 미리 안해도 되지만 만일을 위해서 수행한다
- 패키지가 생성되면 Archive -> Submit 으로 업로드.
- 업로드시 동일한 빌드넘버를 가진 빌드를 중복해서 올릴 수 없으므로 작업시 빌드넘버는 자동으로 증가하도록 설정하면 편리하다.


[App Store Connect 설정 2]
- appstoreconnect.apple.com에서 My Apps(나의 앱) -> Activity(활동 내역)에서 업로드한 ipa 빌드를 확인할 수 있다.
- Processing 중이라면 끝나기를 기다려야 하는데 길어도 수십분 정도면 종료된다.
- 5.5인치 화면(iPhone 8+)와, 12.9인치 화면(iPad 프로)에 대한 스크린샷을 업로드해야 하므로 시뮬레이터로 준비한다.
- Appstore용 아이콘은 1024x1024, Copyright는 회사이름
- 게임센터가 필요하면 나의 앱 -> 앱 내 추가 기능 -> Game Center 에서 순위표와 목표달성 테이블을 작성하고 App store 메뉴에서 Game Center를 활성화한다.
- Build에서 Xcode로 제출한 Archive를 선택
- Pricing에서 가격설정후 Submit for Review
2019/05/01 15:46 2019/05/01 15:46
Posted
Filed under 개발/iOS
1. 프로젝트 작성시 Include Unit Tests 선택


2. 프로젝트 버전을 1.0 → 0.9.0 으로 변경


3. 빌드시 빌드넘버를 자동으로 증가하도록 함

Xcode 메뉴 → Build Phases → + 버튼 → New Run Script Phase → 다음코드 추가

[code]
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"
[/code]

4. Deployment Target을 12.1 → 10.0 으로 변경


5. Cocoapod으로 SwiftLint 설치

pod init -> pod 'SwiftLint' 추가 -> pod install
Xcode 메뉴 → Build Phases → + 버튼 → New Run Script Phase → 「${PODS_ROOT}/SwiftLint/swiftlint autocorrect」 추가
2019/04/10 15:36 2019/04/10 15:36