コグノスケ


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

link もっと前
2017年7月2日 >>> 2017年6月19日
link もっと後

2017年7月2日

いまさら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/07/03 01:23)

コメント一覧

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



2017年7月1日

飲みすぎると、音が高くなる

大学生ぐらいの時から不思議だったのですが、飲み過ぎた日、もしくは次の日に「音が高く」聞こえる人居ませんか?

普段から聞き慣れた曲って頭の中で再生できるじゃないですか。あれをやりながら、実際にその曲を聴くと、普段は合っているのに、酒飲みすぎた日は実際の曲の方が音が高いんです。

頭の中で再生できるほど聞き込んでなくても、曲の始まりくらいは覚えてますよね。さあ、この音が鳴るぞ〜と思っている音と、実際に聞こえてくる音がズレていて、高く感じるんです。

そういえば、環境音とか雑音も普段より高く聞こえているはずですが、気になりませんね。私が音を覚えられないためか、高いのか合っているのか良くわからないからでしょうか……?

耳が間違ってるのか、記憶が間違っているのか

聞こえる音が高くなると書きましたが「聞こえる音が高くなる」ではなく「記憶していた音が低くなる」可能性もあります。

確かめるには、酔って音が変に聞こえている時に何かの音を覚えて、素面の時に聞いてみる方法があります。音が高く聞こえたら酔うと耳がおかしくなって記憶は正しく、同じ音に聞こえたら耳は正しくて酔うと記憶がおかしくなる、というように判断できるはずです。

しかし、酔ってるときにそんなことしたら絶対気持ち悪くなるので、確かめたくありません……。あと両方おかしくなる場合は判別できません。

飲み会で思い出す度に色んな人に聞いてますが、今のところ同意してくれる人が居らず。一体、何なんでしょう?何かの病気?

編集者:すずき(2017/07/02 14:42)

コメント一覧

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



2017年6月30日

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

そういえばゲームをしばらく作っていなかったけれど、今時のゲームはどうやって作るんだろう?と調べていました。

今はスクラッチからガリガリ書くのではなく、ゲームエンジンとして3DならUnityで、2DならCocos2d-xを使うのが定番のようです。スマホゲームはAndroidとiOSに両対応することが普通だと思われてますよね。スクラッチから作ってAndroidとiOSに両方対応させるなんて、想像するだけで辛そうです。ゲームエンジン様々ですよ。

UnityはC# で書く必要があるみたいで、今時のゲームエンジンと3DとC# を同時に覚えようとすると間違いなく挫折するので、2DメインかつC/C++ で書けるCocos2d-xを試します。

Windows無くても何とかなる

いざ始めようとして、そういえばWindowsマシンを持ってない(潰してLinuxマシンにしてしまった)ことに気づきましたが、Linuxでのインストールガイド(公式ドキュメント)もちゃんと用意されていました。さすが。

どのバージョンを使えば良いのかわかりませんが、とりあえず現時点での最新リリース版っぽい3.15.1のタグをチェックアウトしておきます。

ソースコードダウンロード
$ mkdir -p ~/usr/src/
$ cd ~/usr/src/

$ git clone https://github.com/cocos2d/cocos2d-x.git
Cloning into 'cocos2d-x'...
remote: Counting objects: 433999, done.
remote: Total 433999 (delta 0), reused 0 (delta 0), pack-reused 433998
Receiving objects: 100% (433999/433999), 883.31 MiB | 1.47 MiB/s, done.
Resolving deltas: 100% (294953/294953), done.

$ cd cocos2d-x
$ git checkout cocos2d-x-3.15.1

ビルドします。ビルドする前にcmakeやOpenGL系ライブラリの開発パッケージを入れる必要があります。公式ドキュメントさん曰く、UbuntuやDebianをお使いなら、
cd build
./install-deps-linux.sh
とすると楽にセットアップできるとのこと。私は使ったことがないです。

ビルド失敗した
$ cd cocos2d-x
$ cd build
$ mkdir linux-build
$ cd linux-build

$ cmake ../../
...
-- SQLite3 include dirs: /usr/include
CMake Error at cmake/Modules/FindPackageHandleStandardArgs.cmake:136 (message):
  Could NOT find FMOD (missing: FMOD_LIBRARIES FMOD_INCLUDE_DIRS)
Call Stack (most recent call first):
  cmake/Modules/FindPackageHandleStandardArgs.cmake:343 (_FPHSA_FAILURE_MESSAGE)
  cmake/Modules/FindFMOD.cmake:48 (find_package_handle_standard_args)
  cmake/Modules/CocosBuildHelpers.cmake:44 (find_package)
  cmake/Modules/BuildModules.cmake:21 (cocos_find_package)
  CMakeLists.txt:98 (BuildModules)


-- Configuring incomplete, errors occurred!
See also "/home/katsuhiro/usr/src/cocos2d-x/build/linux-build/CMakeFiles/CMakeOutput.log".
See also "/home/katsuhiro/usr/src/cocos2d-x/build/linux-build/CMakeFiles/CMakeError.log".

FMODなるモジュールが無いと怒られました。調べてみるとgitからソースコードを持ってきた場合は、依存ライブラリをダウンロードする一手が必要とのことです。ダウンロードは簡単です。

依存ライブラリのダウンロード
$ cd cocos2d-x

$ ./download-deps.py
=======================================================
==> Prepare to download external libraries!
==> version file doesn't exist
==> Ready to download 'v3-deps-130.zip' from 'https://github.com/cocos2d/cocos2d-x-3rd-party-libs-bin/archive/v3-deps-130.zip'
==> WARNING: Couldn't grab the file size from remote, use 'zip_file_size' section in '/home/katsuhiro/usr/src/cocos2d-x/external/config.json'
==> Start to download, please wait ...
==> Downloading finished!
==> Extracting files, please wait ...
==> Extraction done!
==> Cleaning cocos2d-x/external folder ...
==> Copying files...
==> Cleaning...
==> Would you like to save 'v3-deps-130.zip'? So you don't have to download it later. [Yes/no]: Yes
==> Saving the dependency libraries by default

もう一度cmakeを実行します。成功しました、良かった良かった。あとはmakeするだけですが、gcc 6.3を使っているせいか、凄まじい量の警告が出ます。ドキュメントを見るとgcc 4.9でビルドするのが推奨みたい?ですが、gccのバージョンに関わらずWarning出るのはダメじゃないの……?

ビルド
$ cd cocos2d-x
$ cd build/linux-build

$ cmake ../../
It appears you are building natively for Linux with GCC
-- OpenGL include dirs: /usr/include
-- GLEW include dirs: /usr/include
-- PkgConfig found
-- GLFW3 include dirs: /usr/include/GLFW
-- SQLite3 include dirs: /usr/include
-- FMOD include dirs: /home/katsuhiro/usr/src/cocos2d-x/external/linux-specific/fmod/include
-- Fontconfig include dirs: /usr/include/freetype2
...
-- CURL add to include_dirs: /usr/include/x86_64-linux-gnu
-- CURL libs added to 'cpp-tests': curl
SPIDERMONKEY_LIBRARY: /home/katsuhiro/usr/src/cocos2d-x/external/spidermonkey/prebuilt/linux/64-bit/libjs_static.a
-- Configuring done
-- Generating done
-- Build files have been written to: /home/katsuhiro/usr/src/cocos2d-x/build/linux-build

$ make
Scanning dependencies of target bullet
[  0%] Building CXX object external/bullet/CMakeFiles/bullet.dir/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp.o

...(かなり時間かかります)...

やっと入り口に立てました。次回はゲームのプロジェクトを作ろうと思います。

編集者:すずき(2017/07/02 22:40)

コメント一覧

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



link もっと前
2017年7月2日 >>> 2017年6月19日
link もっと後

管理用メニュー

link 記事を新規作成

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

最近のコメント20件

  • link 24年10月1日
    すずきさん (10/06 03:41)
    「xrdpで十分動作しているので、Wayl...」
  • link 24年10月1日
    hdkさん (10/03 19:05)
    「GNOMEをお使いでしたら今はWayla...」
  • link 24年10月1日
    すずきさん (10/03 10:12)
    「私は逆にVNCサーバーに繋ぐ使い方をした...」
  • link 24年10月1日
    hdkさん (10/03 08:30)
    「おー、面白いですね。xrdpはすでに立ち...」
  • link 14年6月13日
    2048player...さん (09/26 01:04)
    「最後に、この式を出すのに紙4枚(A4)も...」
  • link 14年6月13日
    2048playerさん (09/26 01:00)
    「今のところ最も簡略化した式です。\n--...」
  • link 14年6月13日
    2048playerさん (09/16 01:00)
    「返信ありがとうございます。\nコメントが...」
  • link 14年6月13日
    すずきさん (09/12 21:19)
    「コメントありがとうございます。同じ結果に...」
  • link 14年6月13日
    2048playerさん (09/08 17:30)
    「私も2048の最高スコアを求めたのですが...」
  • link 14年6月13日
    2048さん (09/08 17:16)
    「私も2048の最高スコアを求めたのですが...」
  • link 14年6月13日
    2048playerさん (09/08 16:10)
    「私も2048の最高スコアを求めたのですが...」
  • link 02年8月4日
    lxbfYeaaさん (07/12 10:11)
    「555」
  • link 24年6月17日
    すずきさん (06/23 00:12)
    「ありがとうございます。バルコニーではない...」
  • link 24年6月17日
    hdkさん (06/22 22:08)
    「GPSの最初の同期を取る時は見晴らしのい...」
  • link 24年5月16日
    すずきさん (05/21 11:41)
    「あー、確かにdpkg-reconfigu...」
  • link 24年5月16日
    hdkさん (05/21 08:55)
    「システム全体のlocale設定はDebi...」
  • link 24年5月17日
    すずきさん (05/20 13:16)
    「そうですねえ、普通はStandardなの...」
  • link 24年5月17日
    hdkさん (05/19 07:45)
    「なるほど、そういうことなんですね。Exc...」
  • link 24年5月17日
    すずきさん (05/19 03:41)
    「Standardだと下記の設定になってい...」
  • link 24年5月17日
    hdkさん (05/18 22:16)
    「ドメインを変えたせいで別サイト扱いになっ...」

最近の記事3件

  • link 24年10月31日
    すずき (11/04 15:17)
    「[DENSOの最終勤務日] 最終勤務日でした、入門カードや会社のPCを返却してきました。在籍期間はNSITEXE(品川のオフィ...」
  • link 22年7月8日
    すずき (11/02 20:34)
    「[マンガ紹介 - まとめリンク] 目次: マンガ紹介一覧が欲しくなったので作りました。5作品乙女ゲームの破滅フラグしかない悪役...」
  • link 24年10月30日
    すずき (11/02 20:33)
    「[マンガ紹介] 目次: マンガ紹介お気に入りのマンガ紹介シリーズ。最近完結した短めの作品を紹介します。マイナススキル持ち四人が...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
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 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

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

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 11/04 15:17