link もっと前
   2017年 7月 2日 -
      2017年 7月 2日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

いまさら Cocos2d-x を触ってみる その 2

先日(2017年 6月30日の日記参照)の続きです。Cocos2d-x がビルドできたら、開発環境のセットアップをします。といっても setup.py を実行して、質問に答えるだけです。

Cocos2d-x 環境設定
$ cd cocos2d-x

$ ./setup.py 

Setting up cocos2d-x...
->Check environment variable COCOS_CONSOLE_ROOT
  ->Search for environment variable COCOS_CONSOLE_ROOT...
    ->COCOS_CONSOLE_ROOT not found

  -> Add COCOS_CONSOLE_ROOT environment variable...
    ->Added COCOS_CONSOLE_ROOT=/home/katsuhiro/usr/src/cocos2d-x/tools/cocos2d-console/bin
...

->Check environment variable NDK_ROOT
  ->Search for environment variable NDK_ROOT...
    ->NDK_ROOT not found

  ->Search for command ndk-build in system...
    ->Command ndk-build not found

  ->Please enter the path of NDK_ROOT (or press Enter to skip): ★★Enterを押す★★
...

->Check environment variable ANDROID_SDK_ROOT
  ->Search for environment variable ANDROID_SDK_ROOT...
    ->ANDROID_SDK_ROOT not found

  ->Search for command android in system...
    ->Command android not found

  ->Please enter the path of ANDROID_SDK_ROOT (or press Enter to skip): ★★Enterを押す★★
...

Please execute command: "source /home/katsuhiro/.bashrc" to make added system variables take effect

最初に Android NDK の場所を聞かれ、次に Android SDK の場所を聞かれます。もし Android 向けにビルドしないのであれば、Enter を連打して無視しても構いません。私はスマホでもゲームを動かしてみたかったのでインストールしました。

Android SDK と NDK

Android SDK のコマンドラインツールは Android Studio のダウンロードサイトの一番下にある "Get just the command line tools" にあります。Android NDK は Android NDK のダウンロードサイトにあります。

SDK と NDK はどこに配置しても良いみたいです。私は ~/usr/lib/ の下に放り込んでおきました。

Android SDK と NDK のインストール
$ cd ~/usr/lib
$ unzip android-ndk-r15b-linux-x86_64.zip
...省略...
$ ln -s android-ndk-r15b android-ndk

$ cd ~/usr/lib
$ mkdir android-sdk
$ cd android-sdk
$ unzip sdk-tools-linux-3859397.zip
...省略...


$ cd ~/usr/lib
$ tree -L 2
.
├── android-ndk -> android-ndk-r15b
├── android-ndk-r15b
│   ├── CHANGELOG.md
│   ├── README.md
│   ├── build
│   ├── meta
│   ├── ndk-build
│   ├── ndk-depends
│   ├── ndk-gdb
│   ├── ndk-stack
│   ├── ndk-which
│   ├── platforms
│   ├── prebuilt
│   ├── python-packages
│   ├── shader-tools
│   ├── simpleperf
│   ├── source.properties
│   ├── sources
└── android-sdk
    └── tools

それと SDK や NDK のバージョン名が変わるたびにセットアップし直すのは面倒だったので、NDK はシンボリックリンクを張りました。手抜きです……。

Cocos2d-x 環境設定、やり直し
$ cd cocos2d-x

$ ./setup.py 

Setting up cocos2d-x...
->Check environment variable COCOS_CONSOLE_ROOT
  ->Search for environment variable COCOS_CONSOLE_ROOT...
    ->COCOS_CONSOLE_ROOT is found : /home/katsuhiro/usr/src/cocos2d-x/tools/cocos2d-console/bin
...

->Check environment variable NDK_ROOT
  ->Search for environment variable NDK_ROOT...
    ->NDK_ROOT not found

  ->Search for command ndk-build in system...
    ->Command ndk-build not found

  ->Please enter the path of NDK_ROOT (or press Enter to skip): /home/katsuhiro/usr/lib/android-ndk
  -> Add NDK_ROOT environment variable...
    ->Added NDK_ROOT=/home/katsuhiro/usr/lib/android-ndk

->Check environment variable ANDROID_SDK_ROOT
  ->Search for environment variable ANDROID_SDK_ROOT...
    ->ANDROID_SDK_ROOT not found

  ->Search for command android in system...
    ->Command android not found

  ->Please enter the path of ANDROID_SDK_ROOT (or press Enter to skip): /home/katsuhiro/usr/lib/android-sdk
  -> Add ANDROID_SDK_ROOT environment variable...
    ->Added ANDROID_SDK_ROOT=/home/katsuhiro/usr/lib/android-sdk
...

Please execute command: "source /home/katsuhiro/.bashrc" to make added system variables take effect

環境設定はうまく行ったようです。最後に出ているメッセージの言う通り source ~/.bashrc を実行すれば、cocos というコマンドが実行できるようになっているはずです。

ゲームのプロジェクトを生成する

Cocos2d-x の開発では cocos コマンドを使うそうです。まずは cocos new でゲームのプロジェクト(テンプレート?)を生成します。

プロジェクト名は mygame1 で、パッケージ名は net.katsuster.mygame1(-p net.katsuster.mygame1)、C++ で開発します(-l cpp)。プロジェクトをディレクトリ mygame に置いてもらいます(-d mygame)。何も指定しないと MyCppGame というディレクトリ名になりますが、リネームしても別に問題はありません。

新規プロジェクトを生成
$ mkdir ~/cocos
$ cd ~/cocos

$ cocos new mygame1 -p net.katsuster.mygame1 -l cpp -d mygame
> Copy template into /home/katsuhiro/cocos/mygame/mygame1
> Copying Cocos2d-x files...
> Rename project name from 'HelloCpp' to 'mygame1'
> Replace the project name from 'HelloCpp' to 'mygame1'
> Replace the project package name from 'org.cocos2dx.hellocpp' to 'net.katsuster.mygame1'
> Replace the Mac bundle id from 'org.cocos2dx.hellocpp' to 'net.katsuster.mygame1'
> Replace the iOS bundle id from 'org.cocos2dx.hellocpp' to 'net.katsuster.mygame1'

$ ls mygame
mygame1

$ ls mygame/mygame1/
CMakeLists.txt  cocos2d              proj.ios_mac  proj.win10
Classes         proj.android         proj.linux    proj.win32
Resources       proj.android-studio  proj.tizen

ディレクトリを覗くと、訳のわからないファイルが大量に生成されていて面食らいますが、とりあえず何も気にせず、ビルド&実行してみます。

ビルド対象は先程生成した mygame1(-s mygame/mygame1)で、ターゲットは Linux 向け(-p linux)です。初回のビルドはかなり時間がかかりますが、二回目以降は変更した部分だけビルドするため、非常に早いです。

新規プロジェクトをビルド、実行失敗
$ cocos compile -s mygame/mygame1/ -p linux

Building mode: debug
running: 'cmake -DCMAKE_BUILD_TYPE=Debug -DDEBUG_MODE=ON ..'

-- The C compiler identification is GNU 6.3.0 

...(初回だけかなり時間掛かります)...

[100%] Building CXX object CMakeFiles/MyGame.dir/Classes/HelloWorldScene.cpp.o
[100%] Building CXX object CMakeFiles/MyGame.dir/Classes/AppDelegate.cpp.o
[100%] Linking CXX executable bin/MyGame
[100%] Built target MyGame
Build succeed.


$ cocos run -s mygame/mygame1/ -p linux
Building mode: debug
running: 'cmake -DCMAKE_BUILD_TYPE=Debug -DDEBUG_MODE=ON ..'

...

[100%] Built target MyGame
Build succeed.
Deploying mode: debug
Starting application.
running: '/home/katsuhiro/cocos/mygame/mygame1/bin/debug/linux/MyGame'

/home/katsuhiro/cocos/mygame/mygame1/bin/debug/linux/MyGame: error while loading shared libraries: libfmod.so.6: cannot open shared object file: No such file or directory
Error running command, return code: 127.

上記ではビルドだけするため、あえて cocos compile を使いましたが、実は cocos run がビルドと実行を同時にやってくれるので、cocos compile は使う必要がありません。

それは良いとして cocos run が失敗してしまいました。libfmod.so.6 が無いとか言っています。このライブラリは cocos2d-x/external/linux-specific/fmod/prebuilt/64-bit/libfmod.so に置いてあるようなのですが、名前がちょっと違っているので、libfmod.so.6 という名前のシンボリックリンクを作ってあげて、ライブラリのパスも通してあげると動きます。

新規プロジェクトを実行
$ cd ~/usr/src/cocos2d-x
$ cd external/linux-specific/fmod/prebuilt/64-bit
$ ln -s libfmod.so libfmod.so.6

$ echo 'export LD_LIBRARY_PATH=$COCOS_X_ROOT/cocos2d-x/external/linux-specific/fmod/prebuilt/64-bit' >> ~/.bashrc
$ source ~/.bashrc

$ cd ~/cocos
$ cocos run -s mygame/mygame1/ -p linux
...
Build succeed.
Deploying mode: debug
Starting application.
running: '/home/katsuhiro/cocos/mygame/mygame1/bin/debug/linux/MyGame'

Ready for GLSL
Ready for OpenGL 2.0

        gl.supports_OES_packed_depth_stencil: false
        gl.supports_OES_depth24: false
        gl.supports_OES_map_buffer: false
        gl.supports_vertex_array_object: true
        gl.renderer: Gallium 0.4 on llvmpipe (LLVM 3.9, 128 bits)
        gl.version: 3.0 Mesa 13.0.6
        cocos2d.x.compiled_with_gl_state_cache: true
        cocos2d.x.version: cocos2d-x-3.15.1
        gl.supports_S3TC: true
        cocos2d.x.build_type: DEBUG
        cocos2d.x.compiled_with_profiler: false
        gl.vendor: VMware, Inc.
        gl.max_texture_units: 96
        gl.max_texture_size: 8192
        gl.supports_ATITC: false
        gl.supports_ETC1: false
        gl.supports_PVRTC: false
        gl.supports_NPOT: true
        gl.supports_BGRA8888: false
        gl.supports_discard_framebuffer: false



libpng warning: iCCP: known incorrect sRGB profile
cocos2d: QuadCommand: resizing index size from [-1] to [2560]

下記のように宇宙人のような顔が描いてある画面が出れば成功です。


Cocos2d-x Hello World

そういえば何も考えず TigerVNC 上で実行していますが、難無く 60fps 出て驚きました。画面サイズが小さくて、動きがほとんど無いから軽いだけかも知れませんけど、便利だし問題起きるまで VNC 越しで開発してみようかなあ。

ひとまず Linux 向けには作り始めることができそうです。今回はここまで。

[編集者: すずき]
[更新: 2017年 7月 3日 01:23]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2017年 7月 2日 -
      2017年 7月 2日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 11/17 08:18

カレンダー

<2017>
<<<07>>>
------1
2345678
9101112131415
16171819202122
23242526272829
3031-----

最近のコメント 5件

  • link 18年11月15日
    hdk 「-in-に色がついていますね :-)\n...」
    (更新:11/17 08:18)
  • link 18年11月11日
    すずき 「T4さん\n\n> 全く同じ処で(...」
    (更新:11/17 00:15)
  • link 18年11月11日
    T4 「こんにちわ\nT4 といいます、以前に一...」
    (更新:11/16 23:22)
  • link 18年10月12日
    すずき 「なるほど!\n京急、京成はヤバそうですね...」
    (更新:10/15 23:02)
  • link 18年10月12日
    ちかふみ 「閉会式直後の出国ラッシュ対策のためだそう...」
    (更新:10/15 20:43)

最近の記事 3件

link もっとみる
  • link 18年11月15日
    すずき 「[Windows 10 と Samba] Windows からアク...」
    (更新:11/17 01:29)
  • link 18年11月11日
    すずき 「[linux-next で動かない ROCK64 の I2S] 昨...」
    (更新:11/17 00:27)
  • link 18年11月13日
    すずき 「[お気に入りのマンガ] Kindle Fire HD は大量の本を...」
    (更新:11/14 02:08)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報