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

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개 쓰레드를 보고 글을 작성하고 있는데 논의되는 내용이 많아서 천천히 써봐야겠습니다.

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년 9월 24일 토요일

Cocos2d-x, Error : Assert failed: reference count should be greater than 0

Fatal signal 11 (SIGSEGV)
D/cocos2d-x debug info: Assert failed: reference count should be greater than 0
E/cocos2d-x assert:
/Users/pineoc/Desktop/Game/proj.android-studio/../cocos2d/cocos/./base/CCRef.cpp function:retain line:89

현재 진행 중인 프로젝트에서 이러한 에러가 나오고 있다.

해당 파일에 들어가서 내용을 보면
void Ref::retain()
{
    CCASSERT(_referenceCount > 0, "reference count should be greater than 0");
    ++_referenceCount;
}

레퍼런스 카운트에 대한 문제인 것 같은데, 이 문제는 처음보는 문제라
분석을 해봐야 겠다.

----------------

현재 주 테스트 기기는 Dell Venue 7 인데
갤럭시 계열 기기는에서는 문제 없이 잘 돌아가는데, 유독 Dell Venue에서만 문제가 발생.
메모리 또는 태블릿이라 문제가 있는 것인지 추측해봤지만
메모리쪽은 모바일폰이랑 태블릿이랑 같아서 문제가 되지 않는것 같다.
단순히 성능이나 안드로이드 OS쪽 문제도 아닌 것 같은데 조금 더 분석이 필요한 것 같다.

----------------

로직을 살펴봤는데 아무래도 JniHelper, JNI를 사용하는 함수에서 문제가 있는 것 같다.
NDK쪽을 활용하는 JniHelper 클래스도 확인해보고 Thread Safe문제도 있는지 확인해봤지만
그 쪽 문제는 아닌 것 같다.

----------------
해당 문제를 없애기 위해서 여러가지 다 해봤는데
AndroidManifest.xml 설정부터 내부 로직까지 수정해봤으나 오류는 계속되었다.
JniHelper를 이용해서 함수를 부르는데에 문제가 있는 것 같아서 NDK쪽 문제인가해서
계속 찾아보았는데

테스트 기기가 x86 프로세서...
지금까지 NDK 빌드를 armeabi 버전으로만 빌드한것이 문제.
그래서 Application.mk에
APP_ABI := armeabi x86으로 수정해주고
빌드를 진행, 실행해봤더니 문제해결.

코드에도 문제가 있었을 수 있지만,
핵심은 프로세서 종류문제였다.

해결방법은 간단하게

APP_ABI := armeabi x86
을 추가해주면 끝.

2016년 9월 8일 목요일

Cocos2d-x 3.13 버전 이슈



자주 코코스2dx 쪽 저장소를 들여다 보곤하는데
3.13 버전에서 문제가 몇 개 있나봅니다.

마일스톤이 하나 올라와 있네요.



3.13.1 버전의 마일스톤이 있습니다.
모두 해결이 된 상태라고 하는데 조만간 업데이트 해야겠군요.
무슨 문제가 있었는지 한 번 볼까요.



문제점을 나열해보자면
1. 3.13버전에서 디자인 resolution을 정해주지않으면 앱이 죽는다.
2. text color가 안먹힌다.
3. 안드로이드의 경우, 앱을 백그라운드에서 아이콘을 눌러서 다시 시작하면 죽는다.
4. 자바스크립트의 경우, jsval_to_std_string이라는 함수에 문제가 있었음.
5. 3.13 안드로이드 OpenSLES 에러, 배경음악 파일이 특정 경로에 있을때 재생하면 에러남.
6. 안드로이드 경우, AudioEngine::stop() 이 finished 콜백함수를 부르는데 문제

다 고쳐진 것 같습니다. 위의 마일스톤을 봤을때는요. ㅎㅎ

아직 다운로드 링크는 3.13.1로 안올라간거 같은데 조만간 올라오지 않을까 싶습니다.
즐거운 게임 개발되시길 바라요~

2016년 9월 6일 화요일

Cocos2d-x fork한 저장소 원래 저장소에서 업데이트 받기

fork한 내 저장소를 현재 내가 작업한 내용과 충돌난 경우
저장소에서 그냥 강제로 업데이트해야 할 경우가 있습니다.

저는 아래와 같이 업데이트를 진행해보았습니다.
(다른 저장소의 경우도 아래와 같이 진행해주시면 됩니다)

$ git fetch --all
$ git reset --hard cocos2d/v3
$ git pull cocos2d/v3

원래는 origin/v3 이렇게해야 하는데
cocos2d/v3 한 이유는 리모트 저장소에서 불러와야 하기 때문입니다.

$ git remote -v 하면 아래와 같이 나옵니다.

cocos2d https://github.com/cocos2d/cocos2d-x.git (fetch)
cocos2d https://github.com/cocos2d/cocos2d-x.git (push)
origin https://github.com/pineoc/cocos2d-x.git (fetch)
origin https://github.com/pineoc/cocos2d-x.git (push)

아래 2개는 제 포크한 저장소이고
위에 2개는 리모트 저장소입니다.

위의 리모트 저장소로 fetch를 하고 pull을 해야하는 것이지요.

그리고 cocos2d-x는 서브모듈이 있어서 업데이트 해줘야합니다.
$ git  submodule update

이렇게 업데이트 끝!

다시 cocos2d-x 에 커밋하러 갑니다~

즐거운 개발 되시길바라요 ㅎㅎ

2016년 8월 30일 화요일

Cocos2d-x 3.13 version released!

http://blog.cocos2d-x.org/2016/08/cocos2d-x-v3-13-released/

코코스 엔진이 3.13 버전이 릴리즈 되었네요 ㅎㅎ
블로그글을 한번 보겠습니다.
  • added VR plugins for Gear, Deepoon, Google Cardboard and Oculus.
  • support ETC1 alpha channel
  • fix AudioEngine performance for Android 4.2+
  • improve canvas renderer performance with dirty region
  • add Andorid arm-64 support switch to use gcc 4.9
  • upgrade CURL to 7.50.0
  • upgrade Spine to 3.4
  • upgrade GLFW to 3.2
자세한 사항은 위에 릴리즈 노트를 보시면 되겠습니다.

일단 하이라이트 변경점만 보면,
음... 저번에 3.12 버전에서 VR을 지원한다고 하더니
이번에는 VR 플러그인을 좀 더 보충한 느낌입니다.
ETC1 알파 채널은 뭔지 찾아봤는데,
"
ETC1픽셀당 알파없이 4bits로 24bits 원본 대비 1/6의 압축률이며, 대부분의 경우 원본과 차이를 못 느낄 정도로 품질이 좋지만, 알파채널을 지원하지 않는다는 큰 단점이 있다. iOS에서는 지원하지 않으며, 안드로이드 2.2(프로요) 이상의 안드로이드 디바이스는 모두 필수적으로 지원한다. 
이런 포맷을 알파 채널을 지원하게끔 개발했다는 것 같습니다.

#안드로이드 4.2 버전 이상에서 오디오 엔진의 성능 향상.
이 부분은 CPU Usage에 있어서 큰 향상이 있었네요

 

하지만 Preload 해야 성능 향상에 효과가 있을거라고 하네요.
"Should preload first, or there is not performance improved for first time playing of the audio."

#Dirty Region in Canvas renderer
Dirty Region algorithm을 통해서 렌더링을 할 때 캔버스의 모든 부분을
리프레시하지 않고 인접한 부분, 특정 부분만 리프레시하게 향상되었다고 합니다.

#Android arm-64 support
android 빌드할 때 arm 64를 지원한다고 하네요.
arm 64 3rd 라이브러리를 제공하는데, 이 말은 곧 arm 64를 지원한다는 뜻이라고합니다.
cocos run -p android --app-abi arm64-v8a
이렇게 빌드 할  수 있다고 합니다.

#gcc 4.9 on Android
이건 버전 3.12에서 이슈가 생겨서 안드로이드 컴파일러 gcc로 다시 바꿨다고 합니다.
(clang+gnustl_static을 사용하는 중에 문제가 생겼다고 합니다. clang을 사용하는 중에 문제가 생겼던듯하네요.)

#CURL 7.50.0으로 업그레이드
CURL의 그 전 버전에서 버그가 있었습니다.
a bug about connect to IPV4 numerical IP address in NAT64 environment )
수정된 버전이 업그레이드 되었습니다.

그 외에 Spine, GLFW가 업그레이드 되었네요.

더 많은 릴리즈 노트 내용을 보시려면
https://github.com/cocos2d/cocos2d-x/blob/v3/CHANGELOG
체인지 로그를 확인해보시는 것도 좋아요 ㅎㅎ

그럼 즐거운 개발되시길 바랍니다

2016년 8월 11일 목요일

Cocos2d-x 3.12 MacOS 설치 후 실행 오류

Cocos2d-x 를 다음프로젝트에 사용하게 되어서 업데이트를 하려했으나
에러를 만나고 말았습니다.
이 에러는 cocos 명령어를 사용하고자 하면 나타났습니다.

➜  cocos2d-x-3.12 cocos
Traceback (most recent call last):
  File "/Users/pineoc/Desktop/cocos2d-x-3.12/tools/cocos2d-console/bin/cocos.py", line 22, in <module>
    import cocos_project
  File "/Users/pineoc/Desktop/cocos2d-x-3.12/tools/cocos2d-console/bin/cocos_project.py", line 4, in <module>
    import cocos
  File "/Users/pineoc/Desktop/cocos2d-x-3.12/tools/cocos2d-console/bin/cocos.py", line 936, in <module>
    language, encoding = locale.getlocale()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 562, in getlocale
    return _parse_localename(localename)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 475, in _parse_localename
    raise ValueError, 'unknown locale: %s' % localename
ValueError: unknown locale: UTF-8

에러를 요약하자면,
ValueError: unknown locale: UTF-8

UTF-8이라는 locale이 없다는 것인데,
저는 일단 컴퓨터의 환경설정이 지금 설치하고자 하는 버전과 잘 맞는지
확인해보았습니다.

Build Requirements

v3.12


  • Mac OS X 10.7+, Xcode 7+
  • Ubuntu 14.04+, gcc, CMake 2.6+
  • Windows 7+, VS 2013 or VS 2015
  • Python 2.7.5
  • NDK r10c+ is required to build Android games
  • Clang for developing Android games
  • Windows Phone/Store 8.1, VS 2013 Update 4+ or VS 2015
  • Windows Phone/Store 10.0, VS 2015
음.. 다 충족합니다.
뭐가 문제일까 하고 구글에게 물어봅니다.

위의 링크인 이슈 논의를 봤는데
아래와 같이 설정해주면 에러없이 잘 동작한다고 해서 해봤습니다.

$export LC_ALL=en_US.UTF-8
$export LANG=en_US.UTF-8

설정을 한 후에 실행해보았습니다.
$cocos


잘 되네요 ㅎㅎㅎ
에러의 원인은 예상하기로는
MAC + python 문제인 것으로 보입니다.

이참에 파이썬도 업데이트 해야겠습니다.

즐거운 코딩하시길 바라요 ㅎㅎ

JIRA Plugin - ScriptRunner 소개 #2

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