달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

지난 포스팅에 이어, 구글 플레이 게임 센터 - 업적과 리더보드 추가하기를 시작한다.


우선, 



1) https://play.google.com/apps/publish 에서 게임 서비스 - 새 게임 추가를 통해 구글 플레이를 추가할 게임을 등록한다.



세부정보는 마켓에 등록한 어플리케이션 정보를 그대로 가져와도 무방하다(고 생각한다).




2) 리더보드 및 업적을 재량껏 등록한다.



리더보드와 업적을 추가하고나면 대충 이런식으로 그림이 나온다.



이렇게


요렇게.



3)업적과 리더보드가 얼추 추가된것 같다 싶으면, 아래에 있는 '리소스 받기' 버튼을 누른 뒤 내용을 복사한다.

업적이나 리더보드 어느 곳에 있는 걸 눌러도 똑같은 내용이 나오니 두개를 일일이 할 필요는 없다.

이 내용을 복사해서, 앞선 게시글(Google Play연동법(1))에서 생성한 idx.xml에 붙여넣기한다.



그러면 이런 그림이 나온다.


여기서 끝이 아니고

leaderboards 와 achievements를 추가해서, 아래에 있는 업적과 리더보드의 코드들을 모두 입력해준다.




그러면 이런 그림이 나온다. 이게 ids.xml의 완성본이라 할 수 있다.

아래에 있는 각각의 스트링들 또한 그대로 유지하자.

(없어도 되는지는 모르지만 없는것보단 있는게 나으니까.)



여기까지 하면 구글 플레이 연동의 기본 틀은 완성됐다.


이제부터 이것을 실제로 사용할 수 있는 GameSharing을 추가하고 실질적으로 게임 내에서 리더보드와 업적을 사용해보도록 한다.







:
Posted by 웽웽

cocos2d-x에서 안드로이드 포팅을 하기 위해서는 항상 새로운 .cpp파일이 추가될 때마다 Android.mk파일을 수정해주어야하는 번거로움이 있다.

이때 


LOCAL_SRC_FILES := hellocpp/main.cpp \

../../Classes/AppDelegate.cpp \

../../Classes/HelloWorldScene.cpp

../../Classes/기타등등 ...



부분을


FILE_LIST := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

LOCAL_SRC_FILES += hellocpp/main.cpp \



이와 같이 수정하면 알아서 해당 경로 내의 모든 .cpp파일을 읽어들이게 하기때문에 번거로움을 피할 수 있다.


...고 한다.

:
Posted by 웽웽

Cocos2d-x에서 게임 내부적인 구현은 모두 C++에서 이루어지지만,


생계(...)와 경쟁력에 중요한 부분이라 할 수 있는 광고와 구글 플레이와 관련된 것들은 대부분 자바에서 이루어진다.


특히 AppActivity.java파일에서 거의 모든것이 이루어지기 때문에 이부분에 대한 구현이 중요하다.


보통 AdMob관련 글과 Google Play 관련 글, 두 부류로 나뉘어있어서 각각을 보고 한번에 구현하려면 꽤 귀찮은 과정이 소요되기 마련이다.


Google Play는 GameSharing과 GameHelper같은 부가적인 API가 본체이기 때문에 크게 손볼 것은 없고, Admob은 AppActivity에서만 이루어지면 되기 때문에, 이 두가지가 함께 나오기 위해서는 AppActivity.java파일의 구현이 중요하다.


이 두가지를 한번씩 거쳐봄으로써, 두가지를 합쳐 정리한 코드를 올려본다.


다만, 확실한 나의 지식으로 구현했다기보다는 여기서 보고 저기서 본 두가지를 합쳐 짬뽕하여 에러가 나지않게만 구현한 것이기 때문에 향후 생기는 어떠한 문제에 대해서도 책임지지 않음을 일러두는 바이다.



:
Posted by 웽웽

출처 - Team A.D.D 블로그

http://blog.naver.com/PostView.nhn?blogId=addgame&logNo=220265785840&categoryNo=12&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&userTopListOpen=true&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=1


참고 문헌



1.  프로젝트 / 구글 플레이 서비스 라이브러리 추가



1) Android SDK Manager에서 Google Play Services 다운로드


2) Google Play Game Services(이하 GPGS) 라이브러리 삽입

- "SDK폴더\extras\google\google_play_services\libproject"

내부에 있는 google-play-services_lib 폴더 복사 -> 프로젝트 내 proj.android 폴더에 복사


3) GPGS 연동용 코드 다운로드

1) https://github.com/playgameservices/android-basic-samples 사이트에서 프로젝트 다운로드

처]"2) "android-basic-samples-master\BasicSamples\libraries\BaseGameUtils\src\main\java\com\google\example\games\basegameutils"


(BaseGameActivity.java / BaseGameUtils.java / GameHelperUtils.java / GameHelper.java)

 게임 서비스 연동하기! - 기본환경 구축과 이클립스 환경 셋팅|작성자ADDGame

2) "android-basic-samples-master\BasicSamples\libraries\BaseGameUtils\src\main\java\com\google\example\games\basegameutils" 폴더 내의 파일 4개 복사 ->"프로젝트 폴더\proj.android\src\org\cocos2dx\cpp" 에 복사

(BaseGameActivity.java / BaseGameUtils.java / GameHelperUtils.java / GameHelper.java)


4) 프로젝트에 google-play-services 라이브러리 추가

- eclipse에서 프로젝트 import -> 프로젝트 properties(단축키 alt+enter) -> Add에서 google-play-services_lib 추가


- 이미 google-play-services 라이브러리를 추가한 프로젝트가 eclipse에 import되어있는 경우, 3번만 따라한 다음 refresh를 해주면 된다.



2. .java 파일들 수정하기


1) BaseGameActivity.java

 - package com.google.example.games.basegameutils;-> package org.cocos2dx.cpp;로 수정

 - import org.cocos2dx.lib.Cocos2dxActivity; 추가

 - import android.support.v4.app.FragmentActivity; 삭제(line 21)

 - public abstract class BaseGameActivity extends FragmentActivity implements

-> FragmentActivity를 Cocos2dxActivity로 수정


2) BaseGameUtils.java

 - package com.google.example.games.basegameutils;-> package org.cocos2dx.cpp;로 수정

 - import 패키지명.R;  추가

 - res/values의 string.xml파일에 이하 내용 추가

 


3) GameHelper.java

 - package com.google.example.games.basegameutils;-> package org.cocos2dx.cpp;로 수정



4) GameHelperUtils.java

 - package com.google.example.games.basegameutils;-> package org.cocos2dx.cpp;로 수정

 - import 패키지명.R;  추가

 - res/values에 gamehelper_strings.xml 추가 후 아래 내용 입력

(이 내용은 xml을 추가해도 되지만, 그냥 기존에 존재하는 strings.xml에 추가해도된다. 다만 이후 관리부분에 있어서 용이하게 하기 위한 추가인듯)



5) AppActivity.java

 - extends Cocos2dxActivity -> extends BaseGameActivity로 변경

 - 위 내용 변경 후 생기는 에러 메시지 (상속 변경에 따른 특정 메소드 재정의) 해결

 - OnCreate함수 재정의( 필수인지 권장인지 애매함 )


6) AndroidManifest.xml

 - <!-- 주석 내용 --> 하단에 아래 내용 추가

 - res/values에 ids.xml파일 추가 후 아래 내용 추가


아래는 업적 관련하여 '이클립스에서' 사용하는 함수들

(cocos에서 사용하려면 GameSharing 코드를 사용하기때문에 아래 내용을 쓸 일이 없다.)


:
Posted by 웽웽
2015. 1. 27. 17:44

[Lua] Corona SDK 설정하기 DATA_OLD/Lua Study2015. 1. 27. 17:44

1. corona SDK 설치


2. Sublimetext 설치


3. Show Project Files에서 .lua 파일들을 연결 프로그램->sublimetext랑 연결


4. http://docs.coronalabs.com/api/index.html 에서 api들 참고



5. 코딩을 겁나 한다.


6. simulator에 File -> Build for Android를 하면 .apk파일로 나온다.

:
Posted by 웽웽

아주 빌어먹을 에러


이유도 모르겠다.


처음에는 java, java -version은 되는데 javac가 안되는 문제.

->JAVA_HOME에 jdk랑 jdk의 bin까지 추가해주면서 javac가 동작하기 시작했다.


다음이 문제다.

이 개새끼.


perhaps java_home does not point to the jdk

It is currently set to "C:\Program Files\Java\jre1.8.0_25"


JAVA_HOME이 제대로 jdk를 안가리키고 있단다.

인터넷에서 동일한 에러로 검색을 하니 jdk폴더에 환경변수가 제대로 설정이 안됐단다.

나는 분명히 재설치까지 해가면서 jdk를 지정을 해줬다.

근데 저 개새끼는 내가 설정해준 jdk도 아니고 jre폴더를 찾으면서 저지랄을 하니 환장할 노릇이다.


해결은 했다.


jdk의 lib폴더 안에 있는 tools.jar파일을 복사해다가

저 엉뚱한 폴더랑 저 폴더 안의 lib폴더에 처넣고 컴파일하니 된다.


미친놈인거같다.

cocos를 새로 깔고 자바를 새로깔아도 안되고

온갖 mk며 xml파일들을 다 뒤지며 미친짓을 해도 안되던게 이딴식으로 된다.


결론은 저 tools.jar파일이 없었기 때문에 안된다 라는건 깨달았다.

하지만 JAVA_HOME 설정내용이랑 에러 메시지에 나오는 오류 사이의 문제점은 도무지 모르겠다.



이래서 나는 자바가 싫다.

:
Posted by 웽웽

cocos2d-x의 Move액션은 크게 MoveTo와 MoveBy로 나뉘는데

 1. 해당 액션을 수행할 시간을 갖는다.

 2. 현재 위치에서부터 목표 지점까지 일정한 속도로 움직인다.

이와 같은 특징을 가진다.


하지만,

하나의 액션이 끝나기 전에 다음 동작에 대한 입력이 들어올 경우가 있다.

이때는 애가 동작이 끝나기 전에 다음 명령을 받고는, 움직이던 중간의 위치를 현재값으로 잡고 다시 목표지점까지의 거리를 계산하여 주어진 시간만큼 움직이게 된다.

이렇게 되면 프로그래머가 예상하지 못했던 기이한 속도로 움직이는건 물론이고, 생각지도 못했던 위치로 움직이기까지 한다.

(내 예상은 기본적으로 MoveTo는 MoveBy를 기반으로 계산하는게 아닌가 싶다.)


이 문제는 대개

 1. 한 동작이 끝나기 전에 다음 동작이 들어와서 이 두개를 중첩하여 수행한다.

 2. 고정된 시간값에 위치나 좌표값이 달라지기 때문에 속도가 달라진다.

이 두가지 요인에 의해서이다.



내가 만든 tiny Flight의 한부분을 보면

        //아래와 같이 시간값을 고정으로 주면, 거리가 멀수록 빠르고 가까울수록 느리게가는 현상 발생
        //spr->runAction(MoveTo::create(1.0f, touchPos));
 
        //그렇기 때문에, 피타고라스의 정리를 이용해 현위치-터치위치간 거리를 구해서
        //시간을 나눠줌으로써 거리에 관계없이 일정한 속도로 움직이도록 해준다.
        float distance = sqrtf((touchPos.x - pos.x)*(touchPos.x - pos.x) + (touchPos.y - pos.y)*(touchPos.y - pos.y));
 
        //단, 이렇게 구한 값은 픽셀값이므로 값이 크기때문에 적당히 줄여서 계산해준다.
        auto action = MoveTo::create(distance / 500, touchPos);
 
        //이미 이동중 반복 입력시 해당 동작을 중지하고 다음 위치로 옮기기위한 액션 태그 설정
        action->setTag(TAG_ACTION_PLAYER_MOVE);
        spr->runAction(action);

이런 부분이 있다.


즉, 위에서 언급한 문제를 해결하기 위해서는

 1. 액션에 태그를 준 뒤, 한 객체가 움직일 때는 runAction과 stopAction을 이용해서 한번에 하나의 액션만 수행하게 한다.

 2. 현재위치 - 목표 위치간의 거리와 시간값을 이용하여 일정한 속도로 움직이도록 해준다.

이 두가지의 테크닉이 필요하다.

:
Posted by 웽웽

동일한 프로젝트를 다른 버전의 VS에서 컴파일 할 때 


error LNK2038: '_MSC_VER'에 대해 불일치가 검색되었습니다. ......


이런 에러가 날 수 있다.




이 경우를 해결하기 위해서는


1) 프로젝트 속성 -> 구성속성 -> 일반

인터넷 상에서는 플랫폼 도구 집합을 아래 사진과 같이

 Visual Studio 2012(v110) 에서 Visual Studio 2010 (v100)으로 변경하라고 했는데 나는 v100이 없어서 <부모 또는 프로젝트 기본값에서 상속>을 선택했다.



2) 프로젝트 속성 -> 구성속성 -> 코드 생성


다중 스레드 디버그 DLL(/MDd) 다중 스레드 디버그 (/MTd) 로 변경




그랬더니...



잘 된다.


착하다.

'DATA_OLD > C/C++' 카테고리의 다른 글

[C++] const의 쓰임새  (0) 2014.11.11
[C++] 범위 기반 for문  (0) 2014.11.11
[C++] switch문 내에서 변수 선언에 대해  (0) 2014.11.11
[STL] List / Map  (0) 2014.10.21
[STL]Vector  (0) 2014.10.21
:
Posted by 웽웽

1) cmd에서 해당 프로젝트\proj.android 폴더로 이동 후 python build_native.py 실행

->C++ 컴파일 실행


2) eclipse에서 export 실행

 - Export Android Application


3) Keystore selection

 - 어플리케이션 사후 관리(업데이트, 패치 등)에 꼭 필요함

 - 까먹거나 날리지말고 잘 보관할 것

+ 버전업 할때, 프로젝트의 AndroidMenifest.xml 최상단에 있는

      android:versionCode="1"

      android:versionName="1.0"

여기 숫자들을 버전업과 함께 바꿔줘야 함. 같은 경우에는 같다고 등록이 안됨.




구글 플레이 개발자 가이드라인이 있으니 수시로 확인

:
Posted by 웽웽

1) 이클립스에서 import할때

3.2버전은 프로젝트만 import하면 에러가 떠있다. 이 에러를 없애주기 위해서 libcocos2dx 를 추가로 import해줘야 한다. 

3.3버전은 기본적으로 프로젝트에 저 라이브러리가 추가되어있기 때문에 따로 추가할 필요가 없다.



2) 프로젝트 생성 폴더

3.3버전에는 3.2버전에 없는 win8,1 폴더가 존재한다.



3) Android 포팅 시

3.2버전에서는 Android.mk파일에서 라이브러리, 소스파일들을 모두 따로 추가해줘야했다.

3.3버전에서는 소스파일만 추가해주면 된다.

:
Posted by 웽웽