2016년 10월 12일 수요일

JS13kgames, 13KB 용량의 게임을 만드는 개발대회



http://js13kgames.com/

2012년도 부터 계속 매년 게임 개발 대회를 하는 곳입니다.
특이한 것은 13KB이하의 게임을 만들기 대회라는 것이지요.
올해 게임 대회는 한달 전에 끝났습니다. (8/13 ~ 9/13)
게임 대회 결과물은 아래 링크에서 보실 수 있습니다.
http://js13kgames.com/entries/2016

올해 우승작은 아래와 같습니다.
http://2016.js13kgames.com/#winners

하나하나 모두 재미있는 게임이네요.
13KB의 게임 만드는 것이 어려울텐데
신기한 것 같습니다. 도전은 힘들테지만 게임 만드는데에
용량을 줄이고 최적화하는 모습을 계속 지켜보면 재미있을 것 같습니다.

(펌) MySQL 쓰면서 하지 말아야할 것 17가지

하지말아야할 점이 17가지가 되는데
다 이해하지는 못하지만 두고두고 생각하고 공부하면서 알아봐야겠습니다.

https://blog.lael.be/post/370


2016년 10월 4일 화요일

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() 함수가 적용이 안되었던 버그 (숫자를 파라미터로 넘길때)

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


2016년 9월 27일 화요일

Cocos Creator 1.2.2 릴리즈

http://discuss.cocos2d-x.org/t/cocos-creator-1-2-2-released/32286/10


v1.2.2 Changelog:

Engine

  • [Engine] Refactored index.html page for Web build, improve page initialization speed massively.
  • [Engine] Add API cc.view.enableAntiAlias(false) to disable bilinear image smoothing for pixel-art graphics.
  • [Engine] Support cc.view.enableAntiAlias(false) API in native platform.
  • [Engine] Fixed pop-up keyboard on some tablet device with wider screen will cause screen orientation to change issue.
  • [Engine] Fixed register events to a deactivated node in start method will make the node respond to event on native platform issue.
  • [Engine] Fixed register events to a deactivated node, the event will not work after node is activated issue.
  • [Engine] Fixed some registered node event will not work when Web window lost and regain focus.
  • [Engine] Fixed when loading TTF assets, the loaded callback may not fire at the correct moment issue.
  • [Engine] Fixed using deprecated API on mobile browser will report error directly issue.
  • [Action] Fixed tintTo and tintBy not working properly on native platform issue.
  • [Action] Fixed using cc.targetedAction will report error issue.

Editor

  • [Prefab] Add synchronized Prefab option, user can select whether a prefab should sync changes to all instances in scene.
  • [Animation] Fixed the red needle in timeline may break issue.
  • [Animation] Fixed when dragging node in scene to edit position keyframe may not work issue.
  • [Animation] Fixed undo node deleting operation may cause updateAnimatingInEditMode to report error issue.
  • [Console] Added ignore case switch to determine whether filter is case-sensitive.
  • [SDK] Fixed inserting AnySDK runtime library to Web build may not work issue.

Component

  • [Label+Widget] Fixed setting Label's Overflow to SHRINK and leave string empty, turning on one dimension align for Widget will crash on native platform issue.
  • [Particle] Fixed when texture set to null will crash on native platform issue.
  • [Tilemap] Fixed deleting node with Tiledmap and undo will make the node not visible issue.
  • [Graphics] Fixed Helper module not found in case-sensitive OS issue.
  • [EditBox] Fixed resize node has wrong effect issue on mac platform issue.
  • [Button] mouseover event will not be registered if button's hover sprite is null.
  • [ScrollView] Fixed save scene will cause ScrollView's content node get random position issue.
  • [ScrollView] Fixed disabled Scrollview component can still respond to touch event issue.
  • [ScrollView] Added TOUCH_UP event callback.
Resources:
Read the documentation9
YouTube4


릴리즈 노트는 위와 같습니다.
큰 변경점은 없는 것 같은데요, 버그 수정과 기능의 보강이 주를 이룬 것으로 보입니다.

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월 21일 수요일

정경업: Django로 쇼핑몰 만들자 - PyCon APAC 2016





파이썬에 관심도 있고 장고 공부도 하고싶었는데

구현할게 많고 까다롭다는 쇼핑몰 만들기에 대한 발표내용이네요.



나중에 한번 더 봐야겠어요.ㅎㅎ

2016년 9월 15일 목요일

GitHub profile page가 이뻐졌어요!



원래는 어땠는지 스크린샷을 찍어 놓지 못해서 비교하기가 힘들지만
프로젝트의 정보를 한눈에 이쁘게 볼 수 있게되었습니다.

밑에는 어떤 기여를 했는지 정리해서 볼 수 있네요.


이번 업데이트에는 다른 것들도 추가가 되었는데
프로젝트 안에 칸반 스타일 보드를 추가해서 트렐로(Trello) 처럼 할 일, 이슈를 관리 할 수 있게
Projects 탭이 추가되었습니다.


관련 동영상은 아래에!


깃헙과 함께 즐거운 오픈소스 기여를!


2016년 9월 12일 월요일

스트레스 테스트 툴 - Artillery

https://blog.outsider.ne.kr/1238
아웃사이더님의 블로그를 보고 Artillery 툴이
ab(apache benchmark)보다 뭔가 더 좋은 것 같아서 한 번 공부해봅니다.



이 툴을 테스트해보고 싶었던 가장 큰 이유는
report라는 기능으로 테스트 결과를 html 파일로 보기 좋게 만들어주는 기능이 있기때문..!

한번 테스트해보겠습니다.

1. 설치
$npm install artillery -g

2. 퀵 테스트 실행
$artillery quick -d 60 -r 10 http://pineoc.blogspot.com

Log file: artillery_report_20160912_130365.json
Phase 0 started - duration: 60s

Report for the previous 10s @ 2016-09-12T04:04:09.912Z
  Scenarios launched:  99
  Scenarios completed: 95
  Requests completed:  194
  Concurrent users:    4
  RPS sent: 19.92
  Request latency:
    min: 168.8
    max: 623.9
    median: 188
    p95: 236.5
    p99: 504.6
  Scenario duration:
    min: 473.9
    max: 941.3
    median: 517.2
    p95: 718.9
    p99: 921.6
  Codes:
    200: 96
    302: 98
... 생략
밑에 쭈욱 로그가 나옵니다.

파일이 만들어졌다고 나왔네요. 한번 들여다보면,


이렇게 데이터가 14000줄 정도 나옵니다.
한번 report 명령어로 리포트 뽑아보겠습니다.

3. 리포트 만들기
$artillery report

이렇게 html이 바로 짠하고 나옵니다.





각각의 그래프에 마우스 커서를 올리면 데이터도 확인해볼 수 있구요.
실제로 서비스 개발할 때도 사용해봐야겠습니다.
굿굿

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 에 커밋하러 갑니다~

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

JIRA Plugin - ScriptRunner 소개 #2

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