cocos2d-xの開発環境に関しまして

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
coco

cocos2d-xの開発環境に関しまして

#1

投稿記事 by coco » 10年前

Java+Eclipseによる開発にも慣れ、次はIOS用にObject-Cを勉強する予定でしたが
どうせなら両方同時に開発出来るcocos2d-xを勉強しようと思い開発環境を整えました。
(Unityは扱えますが、一応2dはcocosが強いとの事でしたのでcocosで
頑張ろうと考えております。)

何も考えず馴染み深いVisualStadioでごりごり書いてましたが、これではWindows版しか
作れないのではないかという疑問が生じ質問致しました。
色々調べていたのですが、ピンポイントな回答が見つからず・・・。

疑問としては

1、VisualStadioで完成したプロジェクトをEclipseへ読み込ませる事は
  出来るのでしょうか?(proj.win32というフォルダから立ち上げているため
  不可能な気がしておりますが・・・。

2、VisualStadioが使えない場合、Android,Iphone両方を対象にしたプログラムを
  書くにはEclipseあるいはXcodeを使用するしかメジャーな方法は無いでしょうか?

3、これは少し趣旨とは異なりますが、現在完成しているAndroid用プロジェクト
  (Java+Eclipseで制作)をIosへ移植する方法、あるいはcocos2d-xへ
  読み込ませる方法をご存知の方がいらっしゃいましたら、教えて頂けると
  本当に助かります。


Eclipseは中々使い辛く、Windowsにおけるcocos2d-xの開発環境に悩んでおります。
(MacでXcodeによる開発の方が楽という記事も拝見したため・・・。)

宜しくお願い致します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#2

投稿記事 by softya(ソフト屋) » 10年前

私はWindowsで開発していて、まもなくAndroid版をリリース予定です。
メインの開発・調整はVisualStudio2013Expressで、サブとしてEclipseでAndroid版をビルドする形ですね。

1.そのままはプロジェクトは無理です。
Classesフォルダにソースコードが入れてあって、Resourcesの画像などのリソースが置いてあるルールを守っていればproj.androidフォルダをEclipseにインポートするだけで良いかと思います。あとproj.androidフォルダの下にjniフォルダが有りますがその中のAndroid.mkに追加したソースコード名を書き加える必要がありますね。

2.他のライブラリを使えばまた別の手段があるかと思います。

3.それは難しいですね。
Cocos2d-xなどそれ専用のライブラリを使っていれば容易ですが。
こんなのがあります。
「libGDX関連情報まとめ 2014/4/19 (Androidで2Dゲーム) - Qiita」
http://qiita.com/fslasht/items/6afc8aabde56f42c651a
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#3

投稿記事 by coco » 10年前

返信が遅れてしまい申し訳御座いません。

1の方法の場合、proj.win32で開発したソースコードをproj.androidへコピーし、適用させるための処理をするという事でしょうか。
それともそもそもproj.androidからVisualStadioを立ち上げ開発を行うのでしょうか?

心配事と致しまして
前者の場合
Win32の方で開発を行うと描画の手法が異なるため、上手く適用出来ないのでは?という不安
後者ですとデバッグはVS上で行えるのかなという不安が御座います。

自分で試したら良いのですが、今開発環境再整備中でして申し訳御座いませんが宜しくお願い致します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#4

投稿記事 by softya(ソフト屋) » 10年前

>1の方法の場合、proj.win32で開発したソースコードをproj.androidへコピーし、適用させるための処理をするという事でしょうか。
>それともそもそもproj.androidからVisualStadioを立ち上げ開発を行うのでしょうか?

Cocos2d-xのプロジェクトを作った時にproj.win32とproj.androidは同時生成されます。
この2つのプロジェクトは、ClassesとResourcesを共用していますので、特に何もしなくてもproj.androidをEclipseにインポートしてビルドすれば良いだけです。
※Android.mkは追加したソースコードを書き加えます。
Win32でテストしたらコピペ不要ですぐさまAndroidでテストが可能です。

>Win32の方で開発を行うと描画の手法が異なるため、上手く適用出来ないのでは?という不安
>後者ですとデバッグはVS上で行えるのかなという不安が御座います。

Win32版もAndroid版もOpenGLで描画されますのでほぼ同等です。サウンドの方はWin32がデキが悪いです。
わかると思いますが、描画負荷などは実機でしかテスト出来ません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#5

投稿記事 by coco » 10年前

なるほど、理解致しました。
これで安心して開発を継続出来ます。
有難う御座いました!

やっくる

Re: cocos2d-xの開発環境に関しまして

#6

投稿記事 by やっくる » 10年前

簡単な質問なんでこちらのトピに便乗して、
質問させて下さいませんか?
Cocos2d-xでDXライブラリは利用出来ますか?
大元のDirectXがwin専用だし、出来ませんよね?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#7

投稿記事 by softya(ソフト屋) » 10年前

> Cocos2d-xでDXライブラリは利用出来ますか?

残念ですがたぶん混ぜれません。
混ぜたとしても意味が無いと思います。※ 理由は後述。

> 大元のDirectXがwin専用だし、出来ませんよね?

Cocos2d-xはOpenGL系のフレームワークで、DXライブラリはDirectX系ですね。
まぁ、それ以外でも2D系の機能はDXライブラリより豊富に内蔵されているので使う理由がないと思います。
Cocos2d-xの何とDXライブラリの何が欲しくて混ぜるのでしょうか?
その答え次第では、別の提案ができるかもしれません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

やっくる

Re: cocos2d-xの開発環境に関しまして

#8

投稿記事 by やっくる » 10年前

ソフト屋さん

> Cocos2d-xの何とDXライブラリの何が欲しくて混ぜるのでしょうか?

まだCocos2d-xに詳しいわけでは無いのですが
スマホで出来るゲーム製作に関心が出て来まして、
自分は2Dゲーム制作しか考えておらず
Cocos2d-xなら言語もC++で作れると知っています。
そこで、DXライブラリの関数は
画像を表示するのも、なにをするのも普通にC++だけで組むよりも
もの凄く便利な形に簡略化されてるじゃないですか
もうそれに慣れちゃってるんで、
Cocos2d-xを使ってスマホ用の2Dゲームを作るときに
C+++DXライブラリという今の環境と同じような
感覚で作れたらなあ、、って感じなんです。

> それ以外でも2D系の機能はDXライブラリより豊富に内蔵されているので使う理由がない

DXライブラリを利用するよりも、簡単という感じですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#9

投稿記事 by softya(ソフト屋) » 10年前

たとえば背景の表示だと、こんな感じです。

コード:

    auto sprite = Sprite::create("back.png");
    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
    this->addChild(sprite, 0);
まぁこれは重ね合わせの順位(addChild引数の0)ぐらいでそんなに差が無いですね。

もう一つは、CocosStudioでアニメパターンを登録したデータから再生するやつです。
実験コードのやつなんで適当ですが。

コード:

	ArmatureDataManager::getInstance()->addArmatureFileInfo( "player/player.ExportJson" );
	auto mPlayerArmature1 = Armature::create( "player" );
	mPlayerArmature1->setScale( 1.0f ); //大きさ調整
	mPlayerArmature1->setAnchorPoint( Vec2( 0.5f, 0 ) );//中心位置
	this->addChild( mPlayerArmature1, 1 );
    
	mPlayerArmature1->getAnimation()->play( "left_move" );
	mPlayerArmature1->getAnimation()->setSpeedScale( 1.0f );//アニメ速度
    
	mPlayerArmature1->setPosition( Vec2(-100,50) );
	auto moveLeft1 = CCMoveTo::create( 0.0f, Vec2(1000,50) );
	auto moveLeft2 = CCMoveTo::create( 12.0f, Vec2(-100,50) );
	auto sequence1 = Sequence::create(moveLeft1, moveLeft2, NULL);
	auto repeatForever1 = RepeatForever::create(sequence1);
	mPlayerArmature1->runAction( repeatForever1 );
left_moveと言う名前のアニメパターンを再生しながら、指定された座標間の移動を永久に繰り返します。
これをDXライブラリで書くと、かなりの行数になると思いますよ。
ここらへんがフレームワークとライブラリの違いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#10

投稿記事 by coco » 10年前

申し訳ございません
現在Android用の環境へ移行を試みていたのですが、行き詰ってしまいました。

Android用の環境構築のために
MyGame(プロジェクト名)下にあるproj androidフォルダ内の
build_native.py を実行すると


The Selected NDK toolchain version was 4.8 !
'C:\Program'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたは
バッチファイルとして認識されていません。
Traceback (moset recent call last):
File "C:\MyGame\proj.android\build_native.py", line 159, in <module>
build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
File "C:\MyGame\proj.android\build_native.py", line 146, in build
do_build(cocos_root, ndk_root, app_android_root, ndk_build_param, sdk_root,
android_platform, build_mode)
File "C:\MyGame\proj.android\build_native.py", line 82, in do_build
raise Exception("Build dynamic library for project [ " + app_android_root +" ] fails!")
Exception: Build dynamic library for project [ C:\MyGame\proj.android ] fails!

とエラーログが表示されてしまいます
何かパスが通っていないのかと考え見直してみましたが、一見通っている様に見えました。
またbash_profileを直接叩いてパスを通してみようかとも思いましたが、ファイル名検索で引っかからず、
どうしたら良いのやら困っております。

Webで調べてみても同じ症状の方がいらっしゃらないみたいで、本当に困惑しております。
どうか宜しくお願い致しますm(_ _)m

coco

Re: cocos2d-xの開発環境に関しまして

#11

投稿記事 by coco » 10年前

実際に打ち込んだ画像がこちらになります
階層はあってます、パスも念のため””で括っています

https://kie.nu/2fvm

ダウンロードPW:a

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#12

投稿記事 by softya(ソフト屋) » 10年前

ちなみに接続出来ないのでダウンロードはみてません。

> 'C:\Program'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたは
> バッチファイルとして認識されていません。

と出ている行やコマンドはわかりませんか?
'C:\Program'と出る場合は、だいたいダブルクォートでカコミ見損なっている場合です。
私の場合こういう環境のすり合わせが面倒なんで、"C:\Program Files"の様に空白文字が有るような所の下にはndkのような開発環境を入れないようにしてます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#13

投稿記事 by coco » 10年前

自分も同じくこうした各人によって条件が変わってしまう環境構築は苦手ですorz

>と出ている行やコマンドはわかりませんか?

の行やコマンドというのはどのようなものを指してらっしゃいます・・・?

今フォルダ構成としては
C 直下に MyGame - proj android
Program Files - NDK や SDK, cocos本体など
という状態になっております。

ProgramFiles内のそういったものを全てC直下に移動した方が良いでしょうか・・・?
パスが通らなくなって収拾がつかなくなりそうなのが少し心配です。

一応MyGame自体はProgram Filesとは関係が無いため、build_native.pyでこうしたエラーが起きる理由が皆目見当付きません。
それでも一応””で囲ってから実行しているだけに本当に訳が分かりません・・・。

build_native.py内で設定されているNDK_ROOTの方が””で囲っていないためにエラーが発生などは有り得るものなのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#14

投稿記事 by softya(ソフト屋) » 10年前

NDKが怪しいですね。NDKだけ移してみたらどうでしょう?
環境変数はNDK_ROOTです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#15

投稿記事 by coco » 10年前

NDKフォルダを移動後、パスの再設定
念のためcocos2d-x内のsetupを起動して確認した所、しっかり[C:\android-ndk-r9d]となっていたので再起動

その後ビルドを試してみましたが、ダメでした。
しかし結果は異なり

コード:

C:\MyGame\proj.android>build_native.py
The Selected NDK toolchain version was 4.8 !
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersi
on 9 in ./AndroidManifest.xml
LOCAL_SRC_FILES = hellocpp/main.cpp ../../Classes/AppDelegate.cpp ../../Classes/
Card.cpp ../../Classes/HttpClient.cpp ../../Classes/Json.cpp ../../Classes/Splas
hScene.cpp
MY_CLASS_FILES = jni/../../Classes/AppDelegate.cpp jni/../../Classes/Card.cpp jn
i/../../Classes/HttpClient.cpp jni/../../Classes/Json.cpp jni/../../Classes/Spla
shScene.cpp
Android NDK: jni/Android.mk: Cannot find module with tag '.' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined ?

Android NDK: The following directories were searched:
Android NDK:
make.exe: Entering directory `C:/MyGame/proj.android'
jni/Android.mk:35: *** Android NDK: Aborting.    .  Stop.
make.exe: Leaving directory `C:/MyGame/proj.android'
Traceback (most recent call last):
  File "C:\MyGame\proj.android\build_native.py", line 159, in <module>
    build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
  File "C:\MyGame\proj.android\build_native.py", line 146, in build
    do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,and
roid_platform,build_mode)
  File "C:\MyGame\proj.android\build_native.py", line 82, in do_build
    raise Exception("Build dynamic library for project [ " + app_android_root +
" ] fails!")
Exception: Build dynamic library for project [ C:\MyGame\proj.android ] fails!

恐らくこの

Android NDK: jni/Android.mk: Cannot find module with tag '.' in import path
Android NDK: Are you sure your NDK_MODULE_PATH variable is properly defined?

が原因の様に思い調べましたが、NDK_MODULE_PATHはユーザー側がいじるものではないみたいで・・・。
mkがひょっとしたら原因なのかもしれませんので調べてみます

coco

Re: cocos2d-xの開発環境に関しまして

#16

投稿記事 by coco » 10年前

念のためAndroid.mkファイルの中身はこちらになります

コード:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

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

LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(MY_CLASS_FILES:$(LOCAL_PATH)/%=%)

$(info LOCAL_SRC_FILES = $(LOCAL_SRC_FILES))
$(info MY_CLASS_FILES = $(MY_CLASS_FILES))

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes


LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static

# LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
# LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
# LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static


include $(BUILD_SHARED_LIBRARY)

$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,extensions)
$(call import-module,network)

# $(call import-module,Box2D)
# $(call import-module,editor-support/cocosbuilder)
# $(call import-module,editor-support/spine)
# $(call import-module,editor-support/cocostudio)
# $(call import-module,network)
# $(call import-module,extensions)
一応他サイト様を参考にクラスフォルダ内のcppを自動で読み込む設定にしている、つもりです

coco

Re: cocos2d-xの開発環境に関しまして

#17

投稿記事 by coco » 10年前

連投すみません、一応MKファイルを通常の書き方に直してから試してきます

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#18

投稿記事 by softya(ソフト屋) » 10年前

試しに自動をやめてみてもらえますか? 2から3ファイルだけでよいです。
それでリンクまで進むなら自動の失敗と分かります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#19

投稿記事 by coco » 10年前

返信遅れてしまい申し訳ございません
やはり自動が原因でして、通常の書き方に直した所ビルドは成功しました
(UTF-8で保存してなかったので、そちらのエラーが出たのを解決したりはありましたが)

続いてEclipseへ大元のlibcocos2dxとMyGameをそれぞれインポートした所


まずMyGameインポート時に

"MyGame の起動" 中に内部エラーが発生しました。
java.lang.NullPointerException

というエラー。

またEclipse内では

MyGame内エラー
インポートされたorg.cocos2dx.libは見つかりませんでした
Cocos2dxActivityを型に解決出来ません(これは上のエラーが原因)

libcocos2dxのエラーは
Program "make" not found in PATH

というエラー3つが発生しました。
makeというのはシグウィンを導入してパスを通す必要があるのでしょうか・・・?
なぜmakeコマンドが必要なのかは疑問ですが・・・。

org.cocos2dx.libが見つからないエラーは先ほどと同じ様に階層が原因な様に感じますので、階層を変えたりしてみます。


ソフト屋さんはEclipseへ導入時はスムーズに行えましたでしょうか?
何故こんなに躓くのやら・・・orz

coco

Re: cocos2d-xの開発環境に関しまして

#20

投稿記事 by coco » 10年前

連投申し訳ございません

ワークスペースをMyGameフォルダに切り替え、再度構築した所エラーは消えました
警告は増えましたが・・・。

Androidアプリケーションをデバッグしようとすると先ほどの
"MyGame の起動" 中に内部エラーが発生しました。
java.lang.NullPointerException
が発生してデバッグが出来ないというのが現状です。

恐らくこれが最後の壁だと思いますので、また調べてみます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#21

投稿記事 by softya(ソフト屋) » 10年前

java.lang.NullPointerExceptionに関してはエラーの場所を調べて下さい。
もし読み込みに失敗しているならapkを解凍してassetsにリソースがちゃんと組み込まれているか確認してもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#22

投稿記事 by coco » 10年前

今外出してしまったため、確認は明日となってしまいます。申し訳御座いません。

logcatやDDSを眺めつつデバッグを試みていたのですが、起動前にエラーが出るためログが
残りませんでした。
この様な場合はどちらでログを確認したら宜しいでしょうか?
Eclipseはまだまだ経験が浅いためすみません…。

一応Eclipseを通さず、コマンドプロンプト上からrunによるデバッグも試みてみました
そうしたら最終的にはパスが間違っていると弾かれました
エラー表示は無かったため、具体的にどのパスが原因か分かりませんが、
終了手前では

antのパスを参照
proj android内のbuild.xmlを参照
programFile内のandroidSDKフォルダを参照

で止まっておりました。
antはprogramFileからC直下へ移動しましたが、こうなるとSDKもC直下へ移動した方が良さそうでしょうか…。

もしかするとNULLポイントエラーとは一切関係が無いかもしれませんが、念の為ご報告致しました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: cocos2d-xの開発環境に関しまして

#23

投稿記事 by softya(ソフト屋) » 10年前

私も3日から5日(詳細覚えてません)ほどハマったので時間は必要だと思います。バージョン違いとか色々とワナがあります。
java.lang.NullPointerExceptionはEclipseが出す場合もあるので、Eclipseコンソールログとか色々集めてもらうしか無いです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

coco

Re: cocos2d-xの開発環境に関しまして

#24

投稿記事 by coco » 10年前

昨日には解決しておりましたがご報告遅れました
CCPを読み込むために必要と勘違いしてCDTプラグインを導入した事がNULLポインタ発生原因でした
同プラグインの削除とSDKなどを全てC直下に移動した所、無事実機にてデバッグが出来ました。

有難う御座いました!

閉鎖

“C言語何でも質問掲示板” へ戻る