레이블이 cocos2d-x인 게시물을 표시합니다. 모든 게시물 표시
레이블이 cocos2d-x인 게시물을 표시합니다. 모든 게시물 표시

2017년 12월 28일 목요일

Cocos2d-x 7주년



http://discuss.cocos2d-x.org/t/happy-7th-birthday-cocos2d-x/40271

Cocos2d-x 가 올해 12월로 7주년을 맞이했다고 합니다.

2018년에는 코코스 크리에이터(Cocos Creator)를 어떻게 만들어갈 것인지,
지금까지 얼마나 많은 사용자가 사용하고 있는지 등을 보여주고 있습니다.

make games easier to develop
위와 같은 목표로 Cocos 엔진을 만들어갈 것이라고 합니다.

내년도 Cocos 지켜보겠습니다.

2017년 12월 21일 목요일

Cocos2d-x 3.17에 대한 테스트 요청 글이 올라왔네요.

http://discuss.cocos2d-x.org/t/we-need-help-testing-v3-17/40609


slackmoehrle의 글이 올라왔습니다.
현재 3.17버전 개발이 마무리 단계로 보이는데 테스트가 필요하다고 하네요.

3.17버전의 마일스톤은 12.31로 며칠 남지 않은 상태긴합니다.
https://github.com/cocos2d/cocos2d-x/milestone/37

dumganhar가 많은 이슈를 처리하고 있는데 31일까지 다 완료가 가능할지 모르겠습니다.

이번 업데이트에는
- clang+libc++ 컴파일
- proj.android-studio가 안드로이드 프로젝트 기본 폴더로
- Third party 라이브러리들 업데이트
- NDK r16+ 사용

이렇게 커뮤니티에 올려져있었습니다.
업데이트 후에 CHANGELOG를 봐야하긴 하겠지만 큰 변화보다 엔진을 안정화시키는
업데이트가 될 것 같습니다.

2017년 10월 5일 목요일

Cocos2d-x 엔진에 대한 토론 쓰레드(2)



https://pineoc.blogspot.kr/2017/10/cocos2d-x.html
앞선 글에 이은 글 입니다. 이번에는 cocos2d-x founder walzer의 글을 한번 보도록 하겠습니다.

http://discuss.cocos2d-x.org/t/answering-the-questions-about-cocos-creator-the-engine-and-editor/38665

이번 글은 Cocos Creator에 대한 내용과 Cocos 엔진의 미래에 대한 내용을 다루고 있습니다.
글에서는 아래와 같은 내용을 담고 있었는데요.

Cocos 엔진 미래
- Chukong Technologies 에서 Xiamen Cocos Software inc로 큰 변화가 있을 것.
- 게임 엔진에 더 많은 개발자가 참여할 것이고, slackmoehrle가 다시 참여할 것.
- 자금을 아래와 같이 사용할 것
  - 커뮤니티, 문서, 비디오 튜토리얼, 포럼 등에 지원
  - C++, Lua 개발자들을 위해 Creator 지원
  - 3D 개발을 Creator에서 개발할 수 있게 지원
  - cocos2d-x 4.0!

Cocos Creator 이야기
- 퍼포먼스에 대한 이야기
- R&D Edge, 3D 지원 등에 대한 이야기
- Cocos Creator 미래.
  - HTML5, 자바스크립트의 상승세 등
  - 이 에디터를 마지막으로 생각하고 개발중이다! 안되면 게임업계 Quit!
- We need a friendly ENGINE, no dysfunction EDITOR.
  - 이 글에 대한 것은 전에 중국 커뮤니티에서도 이야기나온 것들이 있음. (성능, 언어 지원 등등)
  - '유니티와 너무 비슷하다', '바퀴를 왜 다시 만드나' 에 대한 대답은 '우리 엔진에 맞는 에디터가 필요하다' 도 인 것 같습니다. (있는 것을 왜 개발하냐고 묻는 것과는 다른 의미를 생각하고 개발할 수 있는 것)
- Cocos2d-x Future: C++ or Javascript
  - cocos2d에서 Objective C vs C++논의가 있었다면 Objective C를 선택했을 것.
  - 큰 의미가 있는 논의가 아니다.
- Cocos Creator를 사용해야하는 이유에 대한 투표
  - C++를 지원하지 않는다는점, Cocos Creator가 Opensource가 아니라는 점, 영어 문서가 잘 안되어 있는점 때문에 사용하기 힘듬.

위와 같이 정리를 해보았습니다. 이해할 수 없는 내용이나 어려운 내용은 없었지만
중간에 왜 있는 도구를 다시 개발해야하나하는 내용은 제대로 이해하기 힘든 점도 있었습니다.

이 첫글 이후에 이야기된 내용은 약 75개 정도 있는데 중간에 KAMIKAZE가 트롤링이 심해서
대화가 닫히는 일도 일어나기도 했습니다.
(게임엔진은 C++이 최고다! C++, C++ ... 이랬다가 지금은 삭제하고 조용한 상태입니다.)

정보에 대한 공유가 이뤄지고 있는 점에 대해 좋다고 생각합니다. 커뮤니티와 이야기하고
토론한다는 점에서 아직 Cocos 그룹이 살아있다는 것을 보여주고 있다고도 생각합니다.

전체적으로 3D를 지원한다, JS를 밀어주려한다 등등에 대한 것은 이해하지만
Cocos2d-x 버전 4.0 계획은 조금 이해가 가지 않습니다.
로드맵이 업데이트가 되지 않고 있어서 추후에 3D를 추가한다, VR 등등 다른 부분을 많이 추가할 것이다, 이런 자세한 부분이 공유가 되지 않고 있어서 혼란스럽기도 하구요.

커뮤니티에서는 이렇게 이야기가 진행되고 있었고 앞으로 Cocos 그룹이 어떻게 프로젝트를 진행할지는
지켜봐야할 것 같습니다.

다른 이야기들이 진행된다면 다른 포스트로 공유하겠습니다.
고맙습니다 :)

2017년 10월 3일 화요일

Cocos2d-x 엔진에 대한 토론 쓰레드

http://discuss.cocos2d-x.org/t/we-need-a-friendly-engine-not-a-dysfunction-editor/33651

최근 한달 전까지 이루어진 토론인데 쭉 읽어보면서 내용을 정리해보려합니다.
일단 제목부터...
We need a friendly engine not a dysfunction editor.
(우리는 부작용 에디터가 아닌 친숙한 엔진이 필요합니다.)
구글 번역기로 돌려서 그런지 이상하지만 의역을 해보자면,
우리는 작동이 잘 되지 않는 에디터보다 친숙한 엔진이 필요하다. 
이렇게 해석할 수 있을 것 같습니다.

현재 Cocos2d 팀은 Cocos Creator에 힘을 집중하고 있는데 그에 대한 유저들의 생각,
이야기들을 볼 수 있는 쓰레드입니다.

저도 코드로만 짜고 중간에 Cocos Studio를 사용해서 한번 앱을 개발해본 적이 있었지만,
코드로 짜는게 편하다고 느끼는 편입니다.
(저도 저 쓰레드를 만든 사람과 같은 생각으로 엔진 본연에 더 집중해줬으면 하는게 바람이었지만,
에디터를 만들어서 조금 더 확장해보려는 시도는 나쁘지 않다고 생각합니다.)

저는 Cocos2d-x 를 깊게까지 사용하지 않는 개발자라고 생각하는데도 엔진에 집중하고 있지 않다고 생각합니다.
마이너 버전 업할 때 마다 버그가 있어서 bugfix 버전이 금방 나오곤해서 그것도 문제라고 생각하구요.
(물론 오픈소스 엔진이니까 유저들이 관심을 가지고 PR, Issue 잘 수정해서 올리고 그러면 완성도가 올라가긴 하겠습니다만..)

이 쓰레드는 엔진에 집중하지 않고 왜 에디터를 더 밀고 있냐하는 이야기로 시작되었습니다.
308개의 쓰레드를 다 번역해서 올리기는 힘들 것 같고 큰 이야기 흐름에 대해 정리해보겠습니다.
(There are 307 replies with an estimated read time of 85 minutes.) 읽는데에 85분 걸릴거라고 하는데,
아마 해석하느라 2~3배정도 걸리지 않을까 예상해봅니다..ㅎㅎㅎ

시작해봅시다! (의역과 모호한 해석이 넘쳐날 수 있습니다;;)

맨 처음 글은
"요즘 엔진보다 에디터에 힘을 쓰고 있는 것 같다. 다양한 것을 시도하는 것도 좋지만 cocos2d가 가지고 있는 엔진으로써의 장점을 잘 살려야한다고 생각한다. 에디터보다 엔진에 집중하는게 좋지 않을까?"
라는 글 이었습니다.

그 이후로 이야기가 진행되었는데요, 너무 많아서 대략적인 내용을 정리해보면,

"엔진 개발도 중요하지만 쉽게 개발하기 위해, 엔진 사용자들이 더 쉽게 개발할 수 있게 에디터 개발도 좋은 방향이라고 생각한다." vs "하지만 엔진에도 수정해야하고 발전해야하는 부분이 많은데 에디터에 힘을 쏟는 것은 이상하다."

중간에 커뮤니티 에반젤리스트인 Slackmoehrle이 와서 이야기를 진행합니다.

"엔진 만드는 것도 중요합니다, 하지만 에디터로 프로토타입을 만들고 게임, 앱을 만드는데에 본질을 집중할 수 있게 에디터가 필요하다고 생각합니다. 다른 엔진들도 에디터가 있지만 우리 엔진은 에디터가 없는 것도 개발자들에게 장벽이라고 생각합니다."

글 작성자 외에 다른 개발자들이 하는 말은
"이미 있는 바퀴를 또 다시 만드는 것은 멍청한 것이다. (있는 도구를 또 만드는 것)"

Slackmoehrles
"몇 달마다 에디터를 만드는데에 우려를 표하는 글이 올라오지만 우리는 에디터를 만드는데에 소신을 가지고 만들고 있다. 사람들이 우려하는 내용은 별 의미 없는 우려가 많았다. 에디터 만드는 것은 중요하다고 생각한다."(많이 추리긴 했지만 이런 느낌의 글 흐름이 있었습니다.)

글 작성자
"Cocos Studio, Cocos Builder 같은 경우는 Open되서 개발되었는데 Cocos Creator는 Unity처럼 캡슐 상태로 개발이 되고 있는 것에 대해 우려가된다."

Slackmoehrles
"우리의 엔진은 오픈소스이며 에디터가 캡슐 상태(private) 인 것은 문제가 되지 않는다."

다른 글에서는 이후로 튜토리얼이나 엔진에 대한 문서, 튜토리얼 이야기가 나왔습니다.
아직 문서나 그런 자료들이 많이 부족해서 초보 개발자들이 개발하기 힘들다는 점에 대해 이야기가 있었고, 계속해서 많은 노력이 필요하다는게 전체적인 이야기였습니다.

그 이후에는 walzer , Cocos founder가 이야기합니다.
http://discuss.cocos2d-x.org/t/we-need-a-friendly-engine-not-a-dysfunction-editor/33651/140

긴 이야기를 했지만 요지는
"JS를 지원하고 에디터를 만드는 것은 많은 개발자가 Cocos2d를 사용하기 좋은 환경으로 만들어가고 싶다!"

이에 대해 많은 이야기가 오고갔습니다.
에디터와 엔진의 코드베이스, 현재 사용자앞으로 사용할 사용자의 차이, 에디터는 어떤언어로 개발되어야하냐부터 자잘한 이야기까지 있었습니다.
모든글을 영어로 읽어보지 못했지만, 전체적인 이야기는 에디터 정말 필요한가?

이어지는 글을 보고 정리한 결론을 따로 포스팅해야겠습니다.

이어지는 글 :
- Answering the questions about Cocos Creator, the engine and editor: Link
- Vote cocos2d-x future C or Javascript: Link
http://pineoc.blogspot.com/2017/10/cocos2d-x-2.html

2017년 10월 2일 월요일

Cocos2d-x 3.16 업데이트



마일스톤을 보면 9/30일에 릴리즈 예정입니다.

이번 업데이트에는 어떤 변경점이 있는지 궁금하네요.
요즘에는 큰 변경사항은 없고 엔진 안정성을 올리는 것으로 진행되었습니다.
3.15버전에서 액션 버그, Label 버그 등등이 있었는데 수정되었는지 지켜봐야겠습니다.

해결된 이슈리스트만 봐도 어느정도 해결은 된 것으로 보이지만
릴리즈된 결과물을 확인해봐야 알수있겠죠.

2일이 지났지만 아직 릴리즈는 안됐습니다.
앞으로 업데이트될 내용을 한번 확인해보겠습니다. (3.16 브랜치에 있는 릴리즈노트를 확인)
2017/10/1 - [v3.16 브랜치] 릴리즈노트

Highlights

  • better support creator_to_cocos2dx creator plugin
  • add LayerRadiaGradientLayer
  • update to support Android Studio 2.3.3
  • fix the issue that lua projects will crash on iOS simulator with Xcode 8.0+
  • revert CocosStudio reader and flatbuffer
  • fix compling error with iOS 11
  • use prebuit bullet to improve compiling speed
  • remove supporting of Windows 10 metro, Windows Phones and Tizen
  • update to Spine v3.5.35 and support skeleton batching in web engine

위의 하이라이트를 보면 가장 큰 업데이트라고 볼 수 있는
Cocos Creator에서 만든 것을 C++로 가져올 수 있다는 점과
prebuilt를 사용해서 bullet 빌드하는 컴파일 속도를 올렸다는 점을 볼 수 있을 것 같습니다.
(윈도우 10, 윈도우 폰, 타이젠 지원 중지도 크다면 큰 변경사항이네요.)

아직 공식 업데이트가 되지 않아서 변경될 수 있지만 하이라이트 사항은 큰 변경은 없을 것으로 보입니다.

전체 릴리즈 노트는
아직 올라오지 않았네요... 정식 릴리즈 때 업데이트 하겠습니다.
그럼 글 마치겠습니다. :)

# 업데이트
10월 9일 오전 10시 30분 쯤에 3.16버전 업데이트되었습니다.
https://github.com/cocos2d/cocos2d-x/releases/tag/cocos2d-x-3.16


2017년 9월 30일 토요일

Cocos2d 커뮤니티에서 일어나고 있는 이야기들

제가 요즘 관심있게 보고 있는 토픽입니다. 
내가 사용하는 엔진이 미래가 있는가.

앱을 개발하기 시작해서부터 연속적으로 사용하지 않았지만, 
지금까지 써온 게임 엔진은 Cocos2d-x 입니다. (한 4년정도..?)

최근에 Cocos2d-x 엔진은 어떤 로드맵을 가지고 개발을 하고 있지?
내가 하는 프로젝트, 회사에서 쓰는 프로젝트가 cocos2d-x를 사용하는데 
같이 성장할 수 있는 엔진일까? 하는 생각이 들었습니다.
그러다가 블로그에 정리하면서 커뮤니티에 올라오는 글들을 보고 있는데 
이런 고민들이 전 부터 있었다는 걸 알 수 있었습니다.

맨 처음에는 이 글을 보았습니다. (엔진 vs 에디터)
http://discuss.cocos2d-x.org/t/we-need-a-friendly-eng…/33651
투표를 하면서 이야기를 하지만 C++이 짱이야! 하는 사람때문에 모두가 힘들어했던 쓰레드와
http://discuss.cocos2d-x.org/t/vote-cocos2d-x-future-…/38364
나중에는 Cocos2d-x Founder, walzer가 답변한 것 까지
http://discuss.cocos2d-x.org/t/answering-the-question…/38665

논의가 많이 길고 영어 글이라서 추석동안 한번 어떻게 돌아가는지 알아봐야겠습니다.
(사실 영어 글을 읽고 있으니 저게 진짜 트롤링인지 아닌지 한참을 봐야 알수 있었습니다. ㅠㅠ)

지금도 위의 3개 쓰레드를 보고 글을 작성하고 있는데 논의되는 내용이 많아서 천천히 써봐야겠습니다.

2017년 9월 29일 금요일

Cocos2d의 역사

한눈에 볼 수 있는 Cocos2d의 역사
(The history of Cocos2d in a glimpse)


원글: https://retro.moe/2017/04/16/cocos2d-in-a-glimpse/

Cocos2d 만든 Ricardo Quesada의 Cocos2d의 역사에 대한 블로그를 번역했습니다.

2008년 2월, 아르헨티나 코르도바의 Los Cocos에서 우리는 "Los Cocos" Python 게임 엔진을 시작했습니다.
나중에 Cocos2d로 이름을 변경했습니다. 아이디어는 우리가 PyWeek 용으로 게임을 만들기 위한 게임 엔진을 만드는 것이었습니다. 

PyCamp 2008. Centro Allen Gardiner, Los Cocos, Córdoba, Argentina

Alejandro Cura와 PyAr의 다른 멤버들의 도움을 받아 Lucio Torre, Daniel Moisset, Rayentray Tappa 그리고 제가 게임 엔진 개발을 시작했습니다.
2008년 3월, 우리는 PyCon Chicago에서 라이트닝 토크에서 발표한 베타 버전(또는 알파 버전?)을 발표했습니다.

PyCon March 2008, Chicago. We announced Cocos2d in a lightning talk.

2008년 7월, Lucio와 저는 Euro Python에서 Cocos2d를 발표했습니다. (v0.3 버전?) 

With Lucio Torre at Euro Python 2008 presenting Cocos2d.Vilnius, Lithuania, July 2008

또한 Lucio와 저는 PyCon Ar 2008 및 2009에서 Cocos2d를 발표했습니다.
2010년에는 Claudio Canepa가 새로운 Cocos2d 개발자/관리자가 되었습니다.

Cocos2d-iPhone 

2008년 초쯤에, 애플은 아이폰에 스토어가 있다고 발표했습니다. (앱스토어)
애플은 수익의 30%만을 가져갔습니다. (그 당시에는 통신사가 약 90 %를 차지하고 있었습니다).
게다가 아이폰은 OpenGL ES에 의해 구동되었고, OS는 유닉스 기반이었습니다.

이 무렵, 저는 돈을 벌 수 있는 앱을 만들고 싶었습니다.
저는 이전의 웹(플래시) 및 피처 폰(J2ME)을 가능한 시장으로 봤습니다.
하지만 애플의 발표 이후, 아이폰 전용 게임을 개발하기로 결정했습니다.

저의 iPhone 게임을 만들기 위해 게임 엔진이 필요했기 때문에 Objective-C로 Cocos2d를 다시 작성했습니다.
높은 수준의 디자인은 동일하게 유지되었지만 iPhone에서 동작하도록 실질적인 변화를 만들어야 했습니다. 이것이 바로 "cocos2d-iphone"이 탄생한 입니다.
첫 번째 cocos2d-iphone 버전 (v0.1)은 2008년 6월에 출시되었습니다.

2008년 3월, 저는 iPhone 개발자 라이센스를 얻기 위해 라이센스를 신청했으며,
마침내 2008년 7월에 라이센스를 받았습니다. (지금은 몇 분 안에 얻을 수 있는 반면, 저는 4개월이 걸렸습니다.)
라이센스없이 iPhone 앱에 게임을 게시하는 것은 불가능했습니다.
라이센스를 기다리는 동안 계약 업무도 하고, cocos2d-iphone을 사용하여 써드 파티를 위한 게임을 개발하였습니다.

제 iPhone 개발자 라이센스를 받으면서 저의 첫 번째 게임인 아이폰 용 Sapus Tongue를 만들었습니다.
그러나 상업용 게임을 만드는 것이 저에게는 그다지 재미있지 않다고 생각했습니다. 어느 누구도 쉽게 찾을 수 없었습니다.
cocos2d-iphone이 이미 유명해졌기 때문에, 저는 이 엔진에 풀타임으로 일하기로 결정했습니다.
제가 이렇게 결정할 수 있는 이유는 제가 실제로 cocos2d-iphone을 위한 두 개의 상업적 도구
LevelSVG(cocos2d 상위에 있는 에디터 + 물리엔진)와 Sapus Tongue 소스 코드를 판매함으로써 실제로 생계를 꾸려 나가고 있기 때문입니다.

2009년 초에는 이미 cocos2d-iphone을 사용하여 개발된 앱이 100개 이상 있었습니다.
iPhone App Store에서 1등에 도달한 첫 번째 앱은 Stick Wars입니다. 


Stick Wars: The first cocos2d-iphone game to reach #1 at the iPhone App Store

그 후 많은 cocos2d-iphone 게임이 1위를 차지했습니다.
그리고 대부분의 시간 동안 Top 10에는 적어도 하나의 cocos2d-iphone 게임이 있었습니다.
저는 이것이 2009년부터 2011년 말까지의 사례라고 생각합니다.

cocos2d-iphone은 게임은 뿐만 아니라 애니메이션 책, 사진 응용 프로그램 등을 만들 수 있었습니다.
일부 cocos2d-iphone 게임과 응용 프로그램은 WWDC 2010에서 선보였습니다.
Apple이 자랑스럽게 "Apple 라이브러리를 사용하여 제작한" 게임이라고 설명했으며, 실제로도 cocos2d-iphone으로 제작되었습니다. 

WWDC 2010. Steve Jobs presenting Elements, a cocos2d-iphone application

많은 cocos2d-iphone forks/ports/bindings도 생성되었습니다.
* 적어도 2개의 자바로 포팅된 프로젝트: cocos2d-android and cocos2d-android-1
* C++로 포팅된 프로젝트 : Cocos2d-x
* 2개의 자바스크립트로 포팅된 프로젝트: Cocos2d-HTML5 and Cocos2d-JavaScript
* C#으로 포팅된 프로젝트: CocosNet, Cocos2d-XNA, CocosSharp
* Go로 포팅된 프로젝트: Gocos2d
* Python로 바인딩, 포팅된 프로젝트
* Ruby로 바인딩된 프로젝트: ShinyCocos and support for RubyMotion

2011년 7월, cocos2d-iphone을 3년 이상 사용해본 것과 커뮤니티의 도움을 받아 cocos2d-iphone v1.0을 출시했습니다.
통계 : ~140명의 컨트리뷰터, ~2600개의 커밋 및 63개의 내부 릴리즈.


cocos2d-iphone v1.0 was released in July 2011

많은 사람들이 서로 돕고, 버그 보고서를 열며, Pull Request를 보내고, 기능을 제안하는 등 커뮤니티는 매우 건강했습니다.
cocos2d-iphone을 둘러싼 생태계도 매우 건강했습니다. 많은 cocos2d-iphone 서적이 출판되었고,
많은 편집자 / 도구 (상업용 및 무료 / 오픈 소스 모두)가 cocos2d-iphone을 지원했습니다.
많은 회사가 cocos2d-iphone 개발자를 찾고 있었습니다.

2011년 5월 저는 Zynga에 입사했습니다. Zynga의 일부 iOS 게임에는 cocos2d-iphone을 사용했습니다.
그들을 Android로 이식하기 위해 AndEngine을 사용하여 일부를 다시 작성하고
다른 것들은 AppPortable의 Objective-C/UIKit 스택을 사용하여 이식했습니다.


2012년에 Android는 이미 강세였습니다. 저는 안드로이드를 기본적으로 지원하고 싶었습니다.
(그리고 다른 플랫폼에서도), 3가지 옵션이 있었는데,
1. cocos2d-iphone 개발을 중단하고 Cocos2d-x (the C++ fork) 개발.
2. cocos2d-iphone을 계속 개발하고 Android 용 Cocos2d-iphone을 포팅할 수 있도록 타사 상용  Objective-C 스택 (StellaSDK, NoodleCake 또는 AppPortable 등)을 사용.
3. cocos2d-iphone을 계속 개발하고 cocos2d-iphone을 Android에 포팅하는 오픈 소스 Objective-C 스택을 개발.

저는 써드파티 상용 툴에 의존하기를 원하지 않았고, Objective-C 스택을 작성할 시간이 없었습니다.
Cocos2d-x는 이미 인기가 있었습니다. 그래서 Cocos2d-x 팀을 돕기로 결정했습니다.
우리는 Zynga에서 Cocos2d-x를 사용하기 시작했습니다. 

2012, at Zynga. With Rolando Abarca and Zhe Wang discussing Cocos2d-x’s and cocos2d-iphone’s roadmaps.

Zynga에서 Cocos2d-x 팀의 도움을 받아 우리는 매우 매력적인 툴링 개발했습니다.:
* Cocos2d-x 및 cocos2d-iphone은 기능 호환이 가능합니다. API는 거의 동일했습니다 (물론 C++과 Objective-C 중 하나)
* Viktor Lidholt가 만든 CocosBuilder에는 Scene 에디터, 키 프레임 애니메이션 에디터, JavaScript 스크립팅 등 많은 유용한 기능이 포함되어 있습니다.
* CocosBuilder에서 내보낸 Scene은 cocos2d-iphone과 Cocos2d-x에서 모두 사용할 수 있습니다.

CocosBuilder editor

유일한 단점은 Cocos2d-x와 cocos2d-iphone 간에 기능 호환을 유지하는 것이 비용이 많이 들었기 때문에
이를 해결하기 위해 기능을 두 번 작성해야 한다는 것입니다.
또한 CocosBuilder는 cocos2d-iphone을 기반으로 만들어졌기 때문에 Mac 용 (Windows 버전 없음)에서만 사용할 수 있었으며
이것도 기능을 두 번 작성해야했습니다. Windows 지원은 많은 Cocos2d-x 사용자에게 중요했습니다.

저는 2013년 6월까지 cocos2d-iphone을 계속 개발했고,
그다음에 Lars Birkemose (2016년에 Andrei Volodin에게 다시 전달)에 그 성화를 전달했습니다.
2013년 8월에 나는 Chukong에 입사했습니다.

Cocos2d-x 

Note: Cocos2d-x와 Cocos Studio 뒤에 있는 Chukong은 베이징에 본사를 두고 있는 중국 회사입니다.
Cocos Studio는 베이징에서 개발되었습니다.
Cocos2d-x는 Xiamen (중국 남부)에서 개발 중입니다.
우리는 모든 것을 다했기 때문에 캘리포니아 사무실에 합류했습니다.

Cocos2d-x는 2010년 7월 Zhe Wang에 의해 시작되었습니다.
이것은 cocos2d-iphone의 복제본이었지만 Objective-C 대신 C++로 코딩되었습니다.
그의 목표는 cocos2d-iphone 게임을 uPhone (나중에 취소된 phone 프로젝트)으로 포팅하는 것을 용이하게 하는 SDK를 만드는것이 었습니다.
이식을 용이하게 하기 위해 Cocos2d-x에는 cocos2d-iphone에서 발견된 모든 Objective-C 패턴이 포함되었습니다. 2012년쯤에 (또는 2011 년) Cocos2d-x팀이 Chukong에 합류했습니다.
Chukong은 Cocos2d-x를 세계적 수준의 게임 엔진 / tooling으로 만드는 자원, 의지 및 위치를 확보했습니다.
2013년 Cocos2d-x는 중국 시장 점유율의 약 70%~80%를 차지했습니다.

Chukong에서 우리는 코드에서 Objective-C 패턴 제거, 최신 C++ API 사용, 렌더러 업데이트 (Nite), 3D 기능 추가 (Tony 및 Harrison) 등
Cocos2d-x v3을 설계하고 프로그래머 가이드 문서 작성 (Jason)을 했습니다.

그러나 가장 중요한 것은 에디터였습니다. 우리에게는 에디터가 필요했습니다. Chukong은 Cocos Studio에 많은 리소스를 투자했습니다.
그것은 많은 특징을 가지고 있었지만 UX는 미국/서구 시장에 호소력이 없었으며 Windows에만 있었습니다.

그래서 미국 지사에서 Justin, Nite, Kai는 Cocos2d-x 편집기를 처음부터 개발 시작하여 중국 및 미국/서양 시장을 목표로 했습니다.
(CocosBuilder와 유사하지만 Cocos2d-x 및 Windows 및 Mac과 호환되는 Qt가 이 용도로 사용되었습니다.)

At Beijing, with Hao Wu, Shun Lin, Harrison, Zhe Wang, Nite Luo, Justin Graham.

불행히도 새 에디터는 취소되었습니다. 우리가 Cocos Studio의 UX를 향상 시키려고 노력했지만, 미국/서구 시장을 유치하지 못했습니다. 

Mac version of Cocos Studio with an improved UX

Cocos2d-HTML5 v4, Cocos2d-x v4 렌더러 + HAL, Cocos2d-x 런처, Cocos IDE와 같은 다른 프로젝트도 취소되었습니다.
Cocos Studio조차 취소되었습니다. 

At Xiamen, with Zhe Wang, Ibon Tolosana and Kai Zhao. November 2014

특히 프로젝트가 거의 완료되어가는 중에 프로젝트가 취소되면 실망할 수 있습니다. 그러나 우리의 주요 과제는 훌륭한 비즈니스 모델을 찾는 것이었습니다.
우리는 다른 것을 시도했지만 좋은 것을 찾지 못했습니다.

뒤늦은 시야에서, 이것들은 우리가 해야 한다고 생각한 것들입니다.
* 하나의 에디터에서 작업하세요: Qt 에디터는 Cocos Studio를 대체해야합니다.
* 데이터 내에서 SDKBOX 및 기타 서비스를 제공해야 합니다.
* Focus : 캐주얼/미드 코어 기능 (VR 또는 기타 산만 기능 제외)에서만 동작합니다. 그 범주에서 가장 좋은 것이 되도록 노력해야 합니다.

Cocos2d에서 9년을 일한 후 최근 사건이 발발하여 다른 일을 할 시간이 되었습니다.
다음에 저는 무엇을 해야 할까요? 어떤 사람들은 미래가 IoT라고 말하고 또 다른 사람들은 기계 학습이라고 말하고 나머지는 VR/AR이라고 말합니다. 그들은 모두 잘못되었습니다. 미래는 Commodore 64입니다. See you soon.

2017년 9월 27일 수요일

Cocos2d-x, Xcode 9에서 빌드시 에러

이번에 Xcode가 버전 업데이트 되면서 Cocos2d-x 빌드할 때 에러가 발생합니다.
에러의 내용은 다음과 같습니다.

platform/CCFileUtils.cpp, line 1429: Call to unavailable function 'system': not available on iOS

이 에러를 처음 접하고나서 저게 무슨 에러인데? 하고 바로 검색해보았죠.
그럼 누군가가 먼저 이슈를 만들어 놓았는데 이 이슈입니다.
GitHub Issue: https://github.com/cocos2d/cocos2d-x/issues/17907

그리고 나서 금방 고쳐졌죠. 하지만 3.15.1 버전에는 포함되어 있지 않은 상태에서
에러가 생기는 바람에 GitHub에 있는 PR을 보고 수정해야합니다.

PR: https://github.com/cocos2d/cocos2d-x/pull/17921

간단하게 CCFileUtils.cpp 파일만 수정해주면 됩니다. 약 30줄 정도 수정해주면 됩니다.

파일보기: https://github.com/cocos2d/cocos2d-x/pull/17921/files
수정된 부분을 잘 추가해주시면 빌드가 잘 되는 것을 볼 수 있습니다.

3.16 버전에는 수정되서 업데이트될 예정인데요.
3.16 버전은 9월 30일이라고 합니다. 이번 업데이트는 어떤 내용이 있을지 릴리즈 노트 나오기전에
한번 훑어봐야겠습니다.

그럼 이만 마치겠습니다.
Thanks.

2017년 9월 23일 토요일

Cocos2d-x의 개발방향, 현재 상태, 적합성 등에 대한 분석



제가 앱을 개발하는데에 사용하는 Cocos2d-x에 대해 그동안 생각해보지 못한게 있었고,
그부분을 정리하고자 글을 적어봅니다.
플랫폼, 엔진 등을 프로젝트 개발에 사용하기위해 고려되어야하는 부분이 몇 가지 있다고 생각합니다.

- 참고할 자료가 많은가 (책, 커뮤니티)
- 업데이트가 주기적으로 되는가 (살아있는 프로젝트인가)
- 사용하고자 하는 플랫폼, 엔진에 대한 기본적인 이해 (적어도 도메인 지식에 대한 이해)
- 만들고자하는 프로젝트에 적당한 엔진인가 (2D, 3D, 게임 종류 등등에 대한 고려)
- 개발 방향, 로드맵은 어떻게되는가

크게는 이렇게 보고 Cocos2d-x 는 어떻게 프로젝트를 진행하고 있는지, 내가 만드는 앱에 적합한지를
확인해보고자 합니다.

참고할 자료가 많은가

프로젝트를 개발하면서 정보를 얻을 일이 많습니다. 예를 들면, 내가 개발한 코드에 문제가 생긴 상황에서 보통 구글에 검색을 하죠.
하지만 검색해도 결과가 안나온다면? 혼자 삽질을 많이 하게 되겠죠.
그래서 참고할 자료가 웹 상에 많은지, 커뮤니티가 있는지,
커뮤니티가 있더라도 그 안에 정보 업데이트가 잘 되는지를 봐야합니다. (질문을 했는데 답이 없으면 커뮤니티가 있더라도 소용 없으니까요.)

구글에서는 Cocos2d-x 로 검색하면 많은 결과를 얻을 수 있습니다.
물론 좀 생소한 이슈를 검색하면 중국어 OR 일본어 자료를 볼 수 있습니다. 이 부분은 번역기로 극복..!

Cocos2d-x 는 커뮤니티가 있습니다. (다행히)
http://discuss.cocos2d-x.org/ 이 커뮤니티는 영어지만.. 번역기를 잘 돌려서 질문만 한다면 어느정도
원하는 답변을 얻을 수 있습니다. (영어 잘 하시는분은 그냥 질문을..!)
어느정도 답변을 해주는 편이기도 해서 일단은 자료를 얻을 수 있어서 다행입니다.

우리나라 커뮤니티는 네이버 카페 Cocos2d-x 사용자모임(http://cafe.naver.com/cocos2dxusers)
최근에 글이 올라오지 않는 것으로 보아 우리나라에서는 Cocos2d-x 사용자는 점점 줄어드는 것으로
보입니다. (추측이지만 Unity로 넘어가는 것으로 보입니다.)

그 외에 스택오버플로우에서 많은 문제를 확인할 수 있으며
엔진의 버그도 Cocos2d-x GitHub 이슈나 PR에서 확인할 수 있어서
자료(정보)에 대한 걱정은 덜어도 괜찮을 것 같네요.

Youtube에는 Sonar Systems 강좌도 있습니다.
https://www.youtube.com/playlist?list=PLRtjMdoYXLf4od_bOKN3WjAPr7snPXzoe

문제는 영어...

아, 추가적으로 책도 몇 권 있습니다.
- 시작하세요! Cocos2d-x 프로그래밍
- Cocos2d-x 3 모바일 게임 프로그래밍
- 등등..
최신 업데이트 사항은 포함되어 있지 않지만 한글 자료도 많습니다.

업데이트가 주기적으로 되는가

Cocos2d-x 는 업데이트가 보통 3-4개월 또는 급한 업데이트는 버그 픽스 버전업으로 올라옵니다.
최근 버전은 3.15.1 버전으로 3.15 버전 업데이트 후 버그가 있어 업데이트한 버전 입니다.



릴리즈 업데이트 말고 다른 지표들을 보겠습니다.





'코드의 변화도', '한 달동안 머지된 PR', '이슈들이 어떻게 처리되고 있는가'에 대한 이미지입니다.
중간에 코드 변화도가 크게 올라가 있는데 이 부분은 v2 -> v3 으로 메이저 버전업이 있었을 때
코드의 변화가 컸기 때문입니다.
2016년 이후로는 큰 변화 없이 개발되고 있습니다. 주로 버그 수정 및 로드맵에 따라 개발되고 있는데,
밑에서 Cocos2d-x는 어떤 로드맵으로 개발되고 있는지 더 살펴보겠습니다.
(사실 어떤 로드맵으로 개발되고 있는지 잘 모르겠어요...)

사용하고자 하는 플랫폼, 엔진에 대한 기본적인 이해

기본적으로 Cocos2d-x로 C++, Lua, Javascript 3가지 언어로 게임을 개발할 수 있습니다.
처음에는 C++, Lua로 개발할 수 있었는데, 웹으로도 만들 수 있게 Javascript도 지원하기 시작한지
1년 정도된 것 같습니다.
Cocos2d-x 는 맨 처음 Cocos2d로 시작된 프로젝트인데 크로스플랫폼 엔진 프로젝트로 전환,
지금까지 진행되어 왔습니다.


[Cocos2D - Objective C로 개발하던 프로젝트]

글쓰면서 찾게된 python으로 개발할 수 있는 Cocos2d 도 있네요.
http://python.cocos2d.org/index.html

이야기를 하다보니 Cocos2d 의 히스토리를 살짝 훑어보고 가도 될 것 같지만
일단 본론으로 돌아가겠습니다. (나중에 한번 정리해서 다른 포스트로..!)

https://en.wikipedia.org/wiki/Cocos2d 위키를 보면 세 종류의 프로젝트가 있는데
제가 사용하고 있는 것은 Cocos2d-x, 크로스 플랫폼을 위한 프로젝트입니다.

Cocos2d-x 엔진에 대해 알 수 있는 문서들이 많이 있어서 정리해보겠습니다.
- 기본 개념 문서: http://cocos2d-x.org/docs/programmers-guide/basic_concepts/
- API 문서: http://cocos2d-x.org/docs/api-ref/index.html
- PDF 문서: http://www.cocos2d-x.org/docs/ProgrammersGuide.pdf

그 외에 알 수 있는 내용은 많지만 전체적으로는 C++ 개념이 크게 작용한 엔진입니다.
(+Objective C 개념)

만들고자하는 프로젝트에 적당한 엔진인가

저는 주로 Cocos2d-x를 2D 게임 만드는데에 사용하고 있습니다.
3D 게임에는 그다지 맞지 않는 느낌이 들지만 기능으로는 지원하고 있습니다.
(앞으로도 계속 개발해서 지원하려는 움직임이 보이기도 합니다.)

Sprite라는 개념을 사용하고 2D 게임으로 가볍게 개발할 수 있는 엔진으로
고성능의 게임도 개발할 수 있겠지만 개인적으로는 2D, 2.5D 수준으로 끝낼 수 있는 프로젝트가 적당하다고 생각합니다.

3D는 언리얼이나 유니티가 다 잡고 있기에 그렇기도 하구요.
언리얼이나 유니티보다 기본적으로 가볍고 쉽게 만들 수 있다는게 비교적 장점인 것 같습니다.
(C++이 쉽지 않은게 단점)

개발 방향, 로드맵은 어떻게되는가

추가적으로 Cocos2d-x의 개발 로드맵은 어떤지 한번 확인해봤습니다.
https://trello.com/b/Np6obnuE/cocos2d-x-roadmap



최종 수정일이... 2017년 2월 15일이네요.
업데이트가 되고 있지 않습니다. (지금 개발 버전은 3.16 버전인데 그에 대한 내용도 없네요)

최근에는 Cocos Creator를 밀고 있는 것 같습니다.
유니티처럼 에디터에서 개발할 수 있게 툴을 만들고 있는데, C++은 지원하지 않고
Javascript만 지원하고 있습니다. (CoffeeScript도...)

음... 다른 프로젝트는 로드맵이 있는지부터 확인을 해봐야겠습니다.
유니티 프로젝트는 어떤지 한번 보겠습니다.
https://unity3d.com/kr/unity/roadmap

유니티는 각 기능(이슈) 별로 리스트를 만들고 관리를 하고 있네요.
2017 버전이 나오면서 어떤게 업데이트가 되었는지, 앞으로 어떤 업데이트가 있는지는
찾아보고 있지만 찾기 힘드네요.

음... 일단은 비교는 했습니다만 Cocos2d-x 로드맵이 관리가 안되고 있다가 결론이네요.
현재는 잘 사용하고 있지만 Cocos2d 그룹에서 어떻게 개발이 진행되고 있는지,
로드맵은 어떤지에 대해 이야기해봐야겠습니다.
(현재 상태가 나쁘지는 않지만 어떤 방향으로 개발하고 있는지 잘 모르겠네요.)

이상 개인적인 분석글이었습니다.
긴 글 읽어주셔서 고맙습니다 :)

PS. 틀린부분이 있다면 가감없이 이야기해주세요. 수정하겠습니다.


2017년 5월 14일 일요일

Cocos2d-x version difference between 2.x vs 3.x

http://cocos2d-x.org/

Cocos2d-x는 현재 두개의 버전을 지원하고있는데요.
2.2.6 버전과 3.15 버전을 지원하고 있습니다.

최근에 이 두개의 버전은 어떤 차이가 있고, 성능차이가 있는가에 대해 궁금해져서
이렇게 포스팅을 하게 되었습니다.

우선 크게 바뀐 것 부터 정리해보자면,
Release Note on GitHub: Cocos2d-x-v3.0-ReleaseNote.md
참고: VallistA님의 블로그

1. Python을 사용한 크로스 플랫폼 개발 지원(Cocos console)
Cocos2d-x 2.x 버전에서는 Cygwin을 이용한 리눅스 환경에서 작업을 했다면,
3.x 버전에서는 파이썬을 이용한 cocos console을 이용해서 작업할 수 있게 되었습니다.
이를 통해 쉽게 크로스 플랫폼 환경에서 편하게 프로젝트를 만들고 컴파일할 수 있게 되었습니다.

2. Objective-C 패턴 제거(Objective-C pattern removed)

  1. cocos2d라는 namespace를 사용하게 되면서, 더이상 CC라는 prefix를 사용할 필요가 없게되었습니다.
    • CCSprite -> Sprite, CCFrame -> Frame, CCScene -> Scene, CCDirector -> Director 등으로 변경되었습니다.
  2. copy() 함수 대신에 clone() 함수를 사용합니다.
  3. Singleton은 getInstance(), destoryInstance() 함수명을 사용하여 인스턴스를 관리합니다.
    • 그전에는 sharedDirector()와 같은 함수를 사용했었습니다.
  4. Object 클래스 -> Ref로 변경
    • Object라는 이름이 모호한 점이 있어 Ref로 변경되었습니다.
  5. Getter 함수들이 get prefix를 가집니다.
  6. POD type의 변수를 const로 전달합니다.


3. C++11 features를 따름
C++ 11 버전을 지원하게 되어서 여러가지 기능을 사용 가능하고, 따르게 되었습니다.
- auto 키워드를 사용가능 (보다 적극적으로 사용하게 되었습니다.)
- lambda식을 사용가능.
- enum(strongly typed enum)을 사용.
        (CCPointZero -> Point::ZERO 로 변경)
- override, final 키워드를 사용.

4. 새로운 Renderer
Cocos2d-x 2.2버전은 현재 문제는 없지만 최적화를 하거나 새로운 함수 추가,
새로운 플랫폼 추가하기가 힘듭니다. 이런 문제를 해결하기 위해 새로운 렌더러를 만들었습니다.
새로운 렌더러는 다음과 같은 기능을 가집니다.
  • It has been decoupled from the Scene Graph. The draw() method, instead of "drawing" it sends a RenderCommand to the Renderer, and Renderer is responsible for drawing the queued RenderCommand commands.
  • QuadCommands (used by Sprite and ParticleSystem objects) will be automatically batched.
  • CustomCommand objects allow the user to use custom OpenGL code, using a API similar to v2.2
  • GroupCommand objects allow to have "stacks" in the Renderer with different OpenGL values.
  • Auto-culling for Sprite objects (although, technically, Auto-culling is not performed in Renderer code, but in the Sprite code)
  • Global Z ordering (local Z ordering is still supported)
좀 더 살펴보면,

- Auto-batching
batch 작업을 많이하면 할 수록 성능이 안좋아지는데 이를 최적화합니다.
- Auto-culling(view frustum culling)
Sprite에 대해 처리를 하는 작업입니다. Sprite가 화면에서 나갈경우 draw가 실행되지 않도록합니다.
- Global Z order
setZOrder(), getZOrder()을 deprecate하고
setGlobalZOrder(), getGlobalZOrder(), setLocalZOrder(), getLocalZOrder()을 만들었습니다.
화면 전체에 대해 Zorder를 정할 것인지, 그 노드에서 Zorder를 정할 것인지를 세팅할 수 있습니다.

* Sprite vs SpriteBatchNode
2.2 버전에서는 Sprite를 효율적으로 처리하기 위해서, SpriteBatchNode를 사용하라고 권장 했었습니다.
3.0 버전에 올라와서는 SpriteBatchNode를 사용하지 않더라도 Sprite를 만들때 TextureID를 같게 만든다면 큰 성능 이슈는 없습니다.
만약 성능을 올리고 싶다면 SpriteBatchNode를 사용하는게 여전히 좋습니다.

5. LabelTTF / LabelBMFont / LabelAtlas 개선
Label에 대한 구현이 Label 클래스로 통합되었습니다.

6. 새로운 EventDispatcher
touch event, keyboard event, acceleration event, custom event에 대한 디스패쳐가 삭제되었습니다.
EventDispatcher로 통합되었는데, 모든 이벤트는 EventDispatcher로 처리합니다.

7. 물리엔진 개선(Physics Integration)
Box2D로 구현했던 물리엔진 기능이 Chipmunk2D로 통합, 바뀌었습니다.

정리해놓고 보니까 꽤 많은 변화가 있었지만, 2.2.6 버전도 지금까지 어떤 변화가 있었는지
그에 대한 정리가 필요해보입니다.

그 외에  OpenGL 버전 업은 어떻게 되었는지도 궁금하지만 릴리즈 노트에는 없으니
따로 찾아봐야겠습니다.

ARM에서 Ricardo Quesada 님이 발표한 내용이 있어서 공유합니다.


다음엔 OpenGL 버전과 Cocos2d-x 버전과의 상관관계를 알아봐야겠습니다.


2017년 4월 28일 금요일

Cocos2d-x 3.15 version updated

이번에 Cocos2d-x 3.15 버전 업데이트가 진행되었다고 합니다.
링크: release notes
주요 업데이트 내용은 아래와 같습니다.
  • full Android Studio supports: include editing, compiling and debugging c++ codes: doc
  • audio engine uses tremolo and MP3 Decoder Library to decode audio files on Android: high performance and more adaptable to different Android devices
  • WebSockets and SocketIO supports SSL
  • AssetsManagerEx is more stable
  • update Spine runtime to v3.5.35
  • update flatbuffer to v1.5
  • remove support for Windows 8.1 store and phone
  • update OpenSSL to v1.1.0
  • remove linux 32-bit support
가장 큰 변화로는 안드로이드 스튜디오를 정식으로 지원하는 점입니다.
Xcode로 개발할 경우에는 C++ 디버깅을 할 수 있었는데, 안드로이드 스튜디오에서는 하기 힘들었습니다.
(C++을 디버깅하기 위해서는 여러 가지 설정해야 하는 부분이 있었습니다.)
이번 업데이트를 통해서 안드로이드 스튜디오에서 C++ 코드를 디버깅할 수 있는 환경이 공식적으로 지원됩니다.
자세한 사항은 위의 doc 링크를 참조하시면 좋을 것 같습니다.
AudioEngine 쪽 성능 향상과 많은 안드로이드 디바이스 호환성을 위해 tremolo라는 mp3 디코더 라이브러리를
안드로이드 쪽에 추가했다고 합니다.
audio performanceaudio performance
그래프만 봤을 때 SimpleAudioEngine은 더 이상 쓰면 안 될 것 같은 느낌이네요.
저도 어서 업데이트를 해야겠습니다.
그 외에 웹소켓, Spine, flat buffer, openSSL 업데이트가 되었습니다.

2017년 1월 5일 목요일

Cocos2d-x v3.14 released!


cocos2d-x가 3.14버전이 업데이트 되었습니다!
(버전 넘버링이 3.14 = Pi라서 이미지에 파이 기호가 있네요.ㅎㅎ)

릴리즈 글 링크 :
cocos2d-x forum : http://discuss.cocos2d-x.org/t/cocos2d-x-v3-14-released/34307
Github note : https://github.com/cocos2d/cocos2d-x/blob/v3/docs/RELEASE_NOTES.md
Github CHANGELOG : https://github.com/cocos2d/cocos2d-x/blob/v3/CHANGELOG

주요 업데이트 내용입니다.

  • [NEW] Add Spine binary file format support
  • [NEW] Action: add a method to get the number of actions running in a given node with specific tag
  • [NEW] Action: new actions: ResizeBy and ResizeTo
  • [NEW] Button: can set title label
  • [NEW] Can disable multi touch on Android
  • [NEW] EventDispatcher: Add hasEventListener to check listener existance
  • [NEW] EditBox: add horizontal text alignment
  • [NEW] EventDispatcher: added hasEvent() to check if an event is added
  • [NEW] Sprite: support slice9 feature
  • [NEW] Slider: add methods to get _slidBallNormalRenderer
  • [NEW] Desktop: add a method to toggle between fullscreen and windowed
  • [NEW] Desktop: add events for window resize, focus and unfocus
  • [NEW] Mac: supports game controller
  • [NEW] JSB: add cc.sys.now() and perfromance.now(), the last one is more accurate
  • [NEW] Lua: add cc.vec3 functions: add, sub and dot
  • [NEW] Lua: use luajit 2.1.0-beta2
  • [NEW] Web: Add cc.CONCURRENCY_HTTP_REQUEST_COUNT to control max concurrent task count for XMLHttpRequest

정리해보자면 새롭게 추가된 것은 아래와 같습니다.
- Spine 바이너리 파일 형식 지원.
- 모든 플랫폼에 luajit 2.1.0-beta2 사용
- ResizeBy 및 ResizeTo 액션 추가
- Android에서 멀티 터치를 사용 중지 할 수 있음.
- Sprite는 slice9 기능을 지원.
- Action: 특정 태그가 있는 노드에서 실행 중인 액션의 수를 가져 오는 메소드가 추가.
- Button의 제목 레이블을 설정 가능.
- EditBox는 가로 텍스트 정렬 지원.
- Mac에서 게임 컨트롤러 지원

그 외에 수정된 사항도 많은데
1. DrawNode에서 line width를 설정 할 수 없었는데 설정 가능하게 되었습니다.
2. AudioEngine에서 .ogg 파일이 재생이 안되는 버그가 있었는데 해결되었습니다.

버그도 많이 수정되었고 기능도 추가가 많이 되어서
기쁘게 업데이트해야겠습니다. :)

2016년 11월 22일 화요일

Cocos2d-x android back button issue after admob popup webview

Cocos2d-x로 게임을 개발하는중인데
배너광고를 달았는데 그 광고를 터치했을때 광고내용이 나옵니다.
그 이후에 문제가 생겼는데, back 버튼을 누르면 그냥 앱이 나가지는 문제가 발생하였습니다.

그래서 무슨문제인가 찾아봤더니
http://discuss.cocos2d-x.org/t/clicking-back-button-after-clicking-admob-ad-closes-app/17964

액티비티에 focus가 풀려서 그런것이더군요.
코드는 아래와 같이 해결!

if (this.getCurrentFocus() != Cocos2dxGLSurfaceView.getInstance()) { Cocos2dxGLSurfaceView.getInstance().requestFocus(); }

이 코드를 광고가 닫히는 이벤트에 넣으면 알맞게 잘 동작합니다.
I hope this help!

Cocos2d-x 에 iOS 배너광고 삽입시 "_OBJC_CLASS_$_GCController", referenced from: ... 에러

정확한 에러는
Undefined symbols for architecture x86_64:
  "_GCControllerDidConnectNotification", referenced from:
      -[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2d iOS.a(CCController-iOS.o)
  "_GCControllerDidDisconnectNotification", referenced from:
      -[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2d iOS.a(CCController-iOS.o)
  "_OBJC_CLASS_$_GCController", referenced from:
      objc-class-ref in libcocos2d iOS.a(CCController-iOS.o)
     (maybe you meant: _OBJC_CLASS_$_GCControllerConnectionEventHandler)
ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

Build Phases > Link Binary With Libraries 에 
MediaPlayer.framework
GameController.framework 를 추가해주면 해결됨


2016년 11월 6일 일요일

[Cocos2d-x 소식]Cocos Creator 1.3.1 released!

http://discuss.cocos2d-x.org/t/cocos-creator-1-3-1-released/33178

저번에 썼던 포스팅에서 코코스 크리에이터 1.3.1버전이 업데이트 될 거라고
올렸었는데 금방 릴리즈 되었네요.
(그전 글: https://pineoc.blogspot.kr/2016/11/cocos2d-x-cocos-creator-v13.html )

주 업데이트 내용은 아래와 같습니다.
  • Rich text support
  • Dragon Bones skeleton animation support
  • Prefab automatic synchronization
  • Automatically packaging textures to Atlas
  • Added UI controls: PageView, Toggle, ToggleGroup, Slider
  • New AudioEngine

- RichText 지원
- '드래곤 본'이라는 스켈레톤 애니메이션 에디팅 툴 지원
- 프리팹 자동 동기화 지원
- 몇몇 UI 컨트롤 추가, 페이지뷰, 토글, 토글 그룹, 슬라이더에 대한 컨트롤
- 새로운 AudioEngine(cc.AudioEngine을 리팩토링함)

아래는 변경사항에 대한 전체로그입니다.
v1.3.0 and v1.3.1 Full Changelog:
Editor
  • [Doc] Creator manual document has been open-sourced, the English version of the document is still lack of content updates compare to the Chinese version. Please join us for corrections, completion and translation at https://github.com/cocos-creator/creator-docs5
  • [Installer] Windows installation package has added Visual Studio 2015 installation options
  • [Build] Add Android API Level selection menu to build panel, all available API Levels will be listed according to SDK directory the user specified. The resulting project will have all related API Level settings updated automatically.
  • [Build] Add command and option to build projects using the CLI.
  • [Build] Add Android Studio support for the binary template
  • [Build] Fixes the problem that the screens orientation setting in the build panel do not take effect when the game is launched the first time on Web platform
  • [Build] The keystore password for the android platform is now displayed in a masked password format
  • [Build] Fixed in the Mac system when the project has large amount of assets, there may be too many open files error reported problem
  • [Build] Fixed build error when plugin scripts are in the resources directory.
  • [Build] Fixed generated application name not correct when building Android Studio project issue.
  • [Build] When the engine path has space, the building process will give proper error message now.
  • [Build] Build to iOS platform projects now adds Xcode 8 support
  • [Assets] Add the function of automatic Atlas packaging, you need to create a AutoAtlas asset in the folder that stores seperated SpriteFrame assets. During building process the contents in the folder will be packed into an Atlas.
  • [Assets] Added a thumbnail icon display for the SpriteFrame resource in Atlas
  • [Assets] Optimized SpriteFrame asset in Atlas thumbnail icon generation logic, to solve process stuck problem when there are too many SpriteFrame assets indexed at the same time.
  • [Assets] Fixed the problem of repeatedly triggering compile operations when importing a large amount of scripts
  • [Assets] Add uuid search function to Assets panel, enter u: xxxxx to search assets with uuid
  • [Assets] In Assets panel, add a right-click menu Find Usages to filter the tree with only assets (scene, prefab and clip) that referenced the item clicked on.
  • [Assets] Provide more explicit description for importing custom asset errors
  • [Properties] Fixed a problem where the tooltip does not display on the array and object properties
  • [Properties] Fixed an error that cause reset node operation not taking effect.
  • [Properties] Fixed an issue where the error message and reset button were not displayed correctly when the attribute type and the bound data were not matched.
  • [Console] clear button will not clear compiler error now.
  • [Editor] Fixed a problem with Creator crashing on some Windows 10 system
  • [Editor] Fixed an issue that compile error messages may stay in console panel even when compile error is gone
  • [Editor] Fixed an issue where the undo command does not trigger a scene change when restoring a null-valued property
  • [Editor] Fixes the initial scene settings in the Project Settings panel does not take effect when running simulator
  • [Editor] Fixed undo / redo operation on windows may randomly failed issue.
  • [Editor] If plugin script contains ES6 syntax, add an error when building.
  • [Editor] Added the command line argument --mount to specify the external resource path. (You can use multiple --mount parameters to mount multiple paths, parameter values can be absolute path or relative to the relative path of the project). You can also use parameter --writable to specify whether allow saving the external resource changes.
  • [Editor] Use a new graphic processing library, to solve the problem process crash when importing oversized texture (8192x8192), and enhanced the image processing speed
  • [Editor] Fixed a bug that caused the build to fail when all the pictures in the project went into the AutoAtlas
  • [Editor] Fixed an issue where changes made to Sliced Sprite can not be previewed immediately in editor.
  • [Editor] Fixed a problem when closing a window by Cmd / Ctrl + Q would cause an error
  • [Editor] Adds the option to choose whether a plugin script should be packed into the build on the native or Web platform.
  • [Scene] Fixed an issue when saving a scene would cause the node's fold state to be reset in the Node Tree panel.
  • [Scene] Fixed a problem that after continuing to preview the particles for a while and then panning the scene view will cause the editor to work very slow.
  • [Prefab] Fixes various auto-sync Prefab display problems
  • [Prefab] Fixes nested auto-sync prefab will cause the scene unable to open issue.
  • [Dashboard] fixes when cancel the operation of `open other projects' will pop up error message issue.
  • [Node Tree] Fixes the problem of newly created node doesn't display highlight selection correctly.
  • [Node Library] Add newly added UI elements since v1.2

Engine

  • [Engine] cc.loader.release will now correctly remove the cache and its asset dependencies (such as texture, audio), while supporting the release of an assets array. Also add removeItem to remove only the cache and getDependsRecursively to get its own list of dependent assets (including itself).
  • [Engine] Fix the problem that on native platform 'setSiblingIndex' API may not work
  • [Engine] Fixed a bug in the mobile web platform that a forced landscape screen orientation might fail when first entering or switching scenes
  • [Engine] Fixed isScheduled in the Web platform always return false issue
  • [Engine] Fixed cc.loader.onProgress not callback correctly when sub-queue updates
  • [Engine] Fixed an issue where the acceleration parameters obtained by the Android platform might be the opposite of the actual one
  • [Engine] Fixed EventDispatcher binding error on native platform that can lead to random crash
  • [Engine] Limit the maximum number of concurrent downloader threads on all platforms, avoiding errors when loading too many resources at the same time
  • [Engine] Fixed a bug where the grayscale shader was not working
  • [Engine] Removed the warning of No need to release non-cached asset when loading the json asset with loadRes
  • [Engine] Fixed an issue where it was possible to send multiple requests to the web platform after merging the asset json
  • [Engine] systemEvent will now inherit EventTarget, and support to use cc.systemEvent.on / once / off to register or unregister system events. The needs to use the eventListener to monitor the keyboard and accelerometer events can now use on/off to register and unregister.
  • [Engine] Refactored cc.Loader to support independent load queues and better progress information. Solved issue to repeated load an asset when there are circular dependencies. Solved issue that may cause callback to fire synchronously.
  • [Engine] Loader provides a separate load task for each context, to solve the run-time JSON object can not be automatically released problem.
  • [Engine] Fixed an issue where the game was unable to respond to a click event while running the game on the Wechat desktop client
  • [Engine] Add touch-point timeout settings to solve the issue that in WeChat x5 core when slide your finger out of the screen multiple times will not trigger the touchcancel event, and cause the following touch interation failed. If you need to keep a stationary touch point for a long time, please manually modify the timeout setting TOUCH_TIMEOUT.
  • [JSB] refactor the JS-binding API to improve stability, binding API are now consistent with cocos2d-x 3.13.
  • [Audio] Upgrade sound engine to New AudioEngine, solve some of the sound compatibility issues in the previous versions
  • [Audio] Use cc.Loader to manage Audio memory, allowing the loader to completely release the Audio resource
  • [Audio] Fixed an issue where the AudioSource component will continue to play after switching scenes
  • [Action] fixes cc.flipX in the native platform will cause a crash

Components and modules

  • [DB] Adds the dragonBones component to support skeleton animation in DragonBones format
  • [Component] Add Slider component
  • [Component] Add the Toggle and ToggleGroup control components
  • [RichText] Added support for RichText components, using bbcode format tags, currently supports color, font size, bold, italic, image and click events
  • [PageView] Add PageView component
  • [TiledMap] Added support for ObjectGroup display
  • [TiledMap] Fixes the problem of undoing the deletion of a Tiledmap node will cause scene render incorrectly.
  • [TiledMap] Fixes a problem that using the tsx file in your tmx file may encounter render error issue.
  • [TiledMap] Fixes an error when you try to initialize the same TiledMap component with a different map resource
  • [TiledMap] Fixes the problem of seams between moving tiles in native engines
  • [TiledMap] Fixed a bug where the TiledLayer's setTileGID interface might have generated an error when passing insufficient parameters
  • [TiledMap] Fixes tile nodes acquired by cc.TiledLayer.getTileAt (), calling setVisible (false) in the canvas rendering mode reports error issue.
  • [Spine] Added 'premultipliedAlpha` to the Skeleton component to process the premultiplied image, which needs to be turned off when the transparent area of the image appears opaque. This option needs to be enabled when the translucent area of the image is darken.
  • [Spine] Upgrade spine runtime library, support 3.x version of the spine, fix the image premultiply mode display problem, support triangle rendering commands
  • [Button] Add Scale Transition, add button to resize button size to target node size
  • [Button] When the button interactable is set to false, if you do not set the corresponding disable state, will automatically use grayed out normal state sprite for disabled state.
  • [ScrollView] Change the mouse wheel operation of the desktop platform to more in line with the Windows operating system scrolling direction.
  • [Graphics] Fixed the problem of resetting the size of its own node when the user added the GGraphics component
  • [Graphics] Fixed a get / set warning for undefined properties
  • [Graphics] Fixes the need to call clear in the canvas twice to clear the contents of the painting
  • [Animation] Fixed an issue where the call to play was invalid in an animation event callback
  • [Animation] Fixes issue that playing animation from a specified frame, the animation events in previous frames will also be triggered.
  • [Collider] Fixed an issue where the node group property modified in onCollisionEnter could not be updated correctly
  • [Collider] Fixed an issue when new Circle Collider component was added to a node will cause error
  • [Widget] Fix CCWidgetManager will report error for _widget if the Scrollview size changes
  • [Widget] Fixed a bug in the Properties panel that the top andbottomcheckboxes disappears
  • [EditBox] Fixes an issue that EditBox does not work properly on macOS 10.12 Sierra
  • [EditBox] Fixes a bug that instantiating this component in a prefab and then setting placeholder will cause error
  • [EditBox] Add setFocus, stayOnTop property, when stayOnTop is true, you can set tabIndex to control the Tab key focus behavior. When you use the EditBox in Wechat's iframe, you need to set the stayOnTop property to true
  • [EditBox] modifies the behavior of the maxLength attribute. When set to 0, it disables user input. When set to -1, it does not limit the maximum length of the input character
  • [Label] Fixes issue that when string is set empty with Resize Height overflow mode will cause line wrap not work anymore.
  • [Label] Fixes adding Label component when the node is in non-activated state will cause debounce function report error issue.
  • [Label] Fixes the problem that the LabelOutline component has a wrong color when used with a TTF font
  • [VideoPlayer] Add the META_LOADED,CLICKEDandREADY_TO_PLAY events. Now toggle visible pauses the video and disable video playing if the video control is not visible. At the same time, unified web and jsb video behaviors.
  • [Component] Add a lifecycle callback, resetInEditor, which is called only the first time a component is added (this method will not be called if the scene is reloaded). In addition, this method will be called in the component menu after the reset call.
  • [Component] Add parameters for cc.Component.EventHandler, currently only allowed to pass in a string parameter

코코스 크리에이터로 한번 게임 만들어봐야겠네요 ㅎㅎ
코코스 진영에서 열심히 지원하고있는데,
코코스 크리에이터 에디터로 한번도 게임을 만들어보지를 않았네요.
모두 즐거운 개발!

2016년 11월 3일 목요일

[Cocos2d-x 소식] Cocos Creator v1.3 곧 출시

오늘도 찾아온 Cocos2d-x 소식!
이메일이 하나왔는데 며칠 뒤면 Cocos Creator v1.3가 업데이트 된다고 합니다.

현재 버전은 1.2.2 버전인데 마이너 버전이 2에서 3으로 올라가는군요.
업데이트에 관한 소식은 금방올라올듯 싶습니다.

이번 업데이트에서는 Cocos Creator가
그 전에는 Lua, Javascript 밖에 지원하지 않았는데 C++도 지원한다고하네요.
http://discuss.cocos2d-x.org/t/c-support-for-cocos-creator/32143

"Cocos Creator started out using only JavaScript as the language to develop in. However, Ricardo Quesada has been very busy adding c++ support. You can follow his progress in this forum thread"

Recardo Quesada 라는 분이 C++을 지원하기위해 열심히 개발하고 있답니다. (화이팅!)

Cocos2d-x 진영이 Cocos Creator를 밀어주려고 많이 개발하고 있는 것 같습니다.
유니티로 게임 개발이 쉽게 되는 것처럼 코코스 크리에이터로 게임 개발을 쉽게 하는 것을
목표로 하는 느낌입니다.

다음에는 업데이트가 되면 어떤게 업데이트가 되었는지 써야겠습니다.
해피코딩!

2016년 10월 27일 목요일

cocos2d-x "_iconv", referenced from: error

cocos2d-x "_iconv", referenced from:

이 에러는 제가 iOS 포팅 중에 Frameworks 폴더에 있는 링크가 깨져있는 파일들을 지우고
빌드해봤는데 에러가 나서 뭐가 문제일까 하고 찾아봤습니다.

http://discuss.cocos2d-x.org/t/-iconv-linker-error-help-resolved/27941

답은
Build Settings -> Other Linker Flags에
-liconv 를 추가해주시면 됩니다.

2016년 10월 2일 일요일

Cocos2d-x 3.13.1 릴리즈 노트

https://github.com/cocos2d/cocos2d-x/blob/v3/CHANGELOG

원래는 3.14 버전 릴리즈 노트를 다음에 들고 오려고했는데,
3.13 버전에 이슈들이 많아서 수정한 버전이 이번에 릴리즈 되어서 소개하게되었습니다.

▪ `Label` color was broken
▪ applications will crash in debug mode if you don’t specify a design resolution
▪ may crash if coming from background by clicking application icon on Android
▪ `AudioEngine`: could not play audio if the audio lies outside APK. Also `AudioEngine::stop()` will trigger finish callback on Android.
▪ applications would crash if using `SimpleAudioEngine` or the new `AudioEngine` if playing audio on Android 2.3.x
▪ `object.setString()` has not effect if passing a number on JavaScript bindings.

수정된 부분은
- 라벨이 색깔 설정이 잘 안되었던 버그
- design resolution 설정안했을때 앱이 죽는 버그
- 안드로이드에서 백그라운드 갔다가 다시 돌아올 때 죽는 버그
- AudioEngine 에서, 오디오 파일이 APK파일 밖에 있는 경우 플레이가 안되는 버그
- 안드로이드 2.3.x 버전에서 AudioEngine이나 SimpleAudioEngine 을 사용할 경우 죽는 버그
- 자바스크립트에서, object.setString() 함수가 적용이 안되었던 버그 (숫자를 파라미터로 넘길때)

수정된 버전을 사용해야겠습니다.
버그를 막기 위해서!


JIRA Plugin - ScriptRunner 소개 #2

관련 글 소개 #1:  https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...