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 개발/iOS
* 20 Xcode Tips & Tricks - Updated for Xcode 9 - 2017
https://www.youtube.com/watch?v=38LNXk_oTak&t=308s
- 1. Visual debugging: 앱을 실행시키고 있는 상태에서 디버깅 창의 작은사각+큰사각+작은사각 형태의 아이콘을 클릭하면 층구조의 스토리보드를 볼 수 있다.
- 4. cmd+0: 왼쪽 상태창 숨김. cmd+opt+0: 오른쪽 상태창 숨김
- 5. Automatic indentation: 영역지정후 ctl+I
- 6,7. 컴포넌트 배치나 연결에 View hierachy를 사용하라
- 10. 폰트크기조정: cmd++ or cmd--
- 11. 리네이밍: 영역지정후 오른쪽버튼 -> refactor -> rename 단축키는 cmd+ctl+e
- 12. 리팩토링: 영역지정후 오른쪽버튼 -> refactor -> extract method
- 13. cmd 누른 상태에서 브라킷에 가져다대면 시작 브라킷까지의 영역을 보여줌
- 15. //MARK: - Example 을 쓰면 아웃라인에서 함수를 구분해줌
- 16. 주석 on off: cmd+/
- 17. cmd+shift xcode 전용 스포트라이트 창이 열림
- 18. 커스텀 definition추가: Xcode에서 커스텀 함수로 추가하고 싶은 영역을 선택해서 함수 스니펫에 추가하면 단축키로 함수를 추가 가능.
- 19. 함수를 선택 -> 오른쪽 클릭 -> jump to definition 으로 원래 함수정의 위치로 날라감



* 10 Xcode Tips & Tricks - Xcode 10
https://www.youtube.com/watch?v=1uVnWbygg_c
- 1. 스토리보드 리팩토링: Editor -> Refactor to Storyboard
- 2. Build time Track: defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES 를 터미널에 입력
- 7. 멀티라인 커서 에디팅: ctrl + shift + 클릭
- 8. vertical selection: option + 드래그
- 9. 스토리보드 프리뷰: assistant editor -> Manual -> preview
- 10. #warning("워닝메시지"), #error("에러메시지")를 붙여서 반드시 수정하도록 notice를 줄 수 있다.
2019/09/24 18:54 2019/09/24 18:54
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을 사용합니다. 이 영상에서는 Node의 physicsBody 속성을 이용해서 물리효과를 적용하는 방법을 설명합니다.

[강의내용]
* Node의 physicsBody 속성
* collision과 contact의 차이
* 노드모양에 따른 비용
* PhysicsCategory 구조체
* 무한파이프 셋업
* SKPhysicsWorld.contactDelegate 설정
* didBegin()
2019/06/03 19:32 2019/06/03 19:32
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
[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 개발/Linux
* 이해하기 쉽게 풀어서 설명해 놓은 git 설명페이지
https://backlog.com/git-tutorial/kr/


* git repositories 관리 툴에는 여러가지가 있는데 github는 프라이빗 저장소에 제한이 있다. gitlab은 시놀로지에 설치는 되는데 Docker를 지원하는 고가의 기종에서만 가능하다.
https://ux.stories.pe.kr/82


* 시놀로지 gitlab 지원모델
https://www.synology.com/ko-kr/dsm/packages/Docker-GitLab

  • 19 시리즈 : RS1619xs+, RS1219+, DS1819+
  • 18 시리즈 : FS1018, RS3618xs, RS2818RP+, RS2418RP+, RS2418+, RS818RP+, RS818+, DS3018xs, DS1618+, DS918+, DS718+, DS218+
  • 17 시리즈 : FS3017, FS2017, RS18017xs+, RS4017xs+, RS3617xs+, RS3617RPxs, RS3617xs, DS3617xs, DS1817+, DS1517+
  • 16 시리즈 : RS18016xs+, RS2416RP+, RS2416+, DS916+, DS716+, DS716+II, DS216+, DS216+II
  • 15 시리즈 : RS815RP+, RS815+, RC18015xs+, DS3615xs, DS2415+, DS1815+, DS1515+, DS415+
  • 14 시리즈 : RS3614xs+, RS3614RPxs, RS3614xs, RS2414RP+, RS2414+, RS814RP+, RS814+
  • 13 시리즈 : RS10613xs+, RS3413xs+, DS2413+, DS1813+, DS1513+, DS713+
  • 12 시리즈 : RS3412RPxs, RS3412xs, RS2212RP+, RS2212+, RS812RP+, RS812+, DS3612xs, DS1812+, DS1512+, DS712+, DS412+
  • 11 시리즈 : RS3411RPxs, RS3411xs, RS2211RP+, RS2211+, DS3611xs, DS2411+, DS1511+, DS411+, DS411+II
  • *10 시리즈 : RS810RP+, RS810+, DS1010+, DS710+


* 어쨌든 프라이빗 소스를 서비스회사에 맡기고 싶진 않아 개인서버에 git을 설치하고 웹매니징을 할수 있게 해 주는 서비스를 찾아보니 gogs와, gogs에서 파생되어 나온 gitea가 있다. 그런데 gogs는 시놀로지 서버에 설치되므로 gogs로 낙점.
https://www.slant.co/versus/1395/19087/~gogs_vs_gitea


* 속도도 다른 서비스들에 비해 충분히 빠르다.
https://gitbucket.github.io/gitbucket-news/gitbucket/2017/03/29/benchmark-of-gitbucket.html


* gogs 사용을 위해 시놀로지에 git server 설치. 유저는 생성하지 않아도 좋다.
https://www.synology.com/ko-kr/knowledgebase/DSM/help/Git/git


* 시놀로지에 gogs 설치하기
https://kimcblog.com/2018/08/28/%EC%8B%9C%EB%86%80%EB%A1%9C%EC%A7%80synology-nas%EC%97%90-github%EC%B2%98%EB%9F%BC-%EC%9A%B4%EC%9A%A9%ED%95%98%EA%B8%B0-feat-gogs-1-2/

https://kimcblog.com/2018/08/28/%ec%8b%9c%eb%86%80%eb%a1%9c%ec%a7%80synology-nas%ec%97%90-github%ec%b2%98%eb%9f%bc-%ec%9a%b4%ec%9a%a9%ed%95%98%ea%b8%b0-feat-gogs-2-2/


* 패키지 다운로드
https://gogs.io/docs/installation/install_from_binary
- gogs_0.11.86_linux_armv5를 풀어서 1_create_package 안에다 넣는다.

- 인증서에 git.주소 추가후, 역방향프록시 설정.

- 시놀로지에서 데몬 사용자 계정은 무조건 root 이다.


* 파일업로드 제한 풀기
https://dymaxionkim.github.io/beautiful-jekyll/2017-02-06-GOGS/

시놀로지 경로는 /volumeX/@appstore/Gogs/gogs/custom/conf/app.ini


* Windows에서의 git 테스트를 위한 bash 설치
- 프로그램 및 기능 -> windows 기능 켜기/끄기 -> Linux용 Windows 하위 시스템 설치 -> window store에서 win10용 ubuntu 설치.

- 각 폴더에서 바로 실행하기 위해 https://github.com/mintty/wsltty/releases 설치.


* 설치하고나서 알게된 문제
- gogs는 시놀로지에서 root 계정으로밖에 설치할수 없다

- 시놀로지는 DSM 6.0이후로 root의 ssh접속을 금한다

- gogs의 ssh 주소는 루트를 기준으로 만들어지는데 시놀로지에서 유저계정을 만들어서 ssh에 접속해도 결국 루트에 액세스할수 없어 ssh를 사용할 수가 없다. 할수없이 https 주소를 써야한다.

- xcode에서는 gogs의 remote주소를 https://도메인:포트/git주소 로 설정한뒤 로그인하는 방식으로는 인증에 실패한다. https://계정:패스워드@도메인:포트/git주소 로 설정하면 인증을 통과할 수 있다. 이때 계정은 @마크를 쓰는 이메일이 아닌 평문으로 해야 한다.
2019/02/08 00:54 2019/02/08 00:54