head_hexagonはにらぼ☆てっくtale_hexagon
Tag » Visual Studio

【Cocos2d-xアプリをUWPへ移植②】元ネタアプリをWindowsでビルド

こんにちは、kiyokazkです。 前回は、Cocos2d-xの新規プロジェクト作成時にできるサンプルプロジェクトをVisual Studioでビルド&実行するところまでできました。この調子で行けば対象のゲームアプリもさくっとビルド&実行できてしまうんじゃないかと思ってしまうくらい簡単(ただコピーしてWindowsに持ってきただけ)でした。 移植元ネタアプリのプロジェクトでレッツトライ さて次はいよいよ移植元ネタアプリのプロジェクトを持ってきてみます。
既存の元ネタプロジェクトにもproj.win8.1-universalフォルダが自動的に出来ていて、その中にソリューションファイルが入っているので開きます。ただ、このままの状態だとソリューションの中に必要なファイル(自分のアプリ用に追加している各ソースファイル)がない状態なので、Classesフォルダに対象となるソースファイルを追加します。Classesフォルダはすでにあるので、対象ファイルをドラッグ&ドロップでOKです。 さて、この状態でビルドすれば上手くいけば動くはずですが・・・実際にビルドしてみるとやはりたくさんのビルドエラーが出ました。
というわけで、次はこれらのビルドエラーをひとつずつ対処していきましょう。 ビルドエラーに対処 ■AudioEngineがない 今回の移植元アプリのcocos2d-xのバージョンは3.4なんですが、どうもVisualStudioのソリューションにはAudioEngineが入ってないみたいです。ソリューションに追加してみようといろいろやってみましたが、どうもうまくビルドできないので今回はAudioEngineを使わない方向で行くことにします(上手く追加できたとしてもこのバージョンではWindows側の実装がアヤシイ気もするし)。 移植元プロジェクトでは、Audio関係はAudioManagerというクラスにまとめているので、その中でAudioEngineを使わないようにするだけでいけそうです。いずれは、cocos2d-xのバージョン2の時代からあったSimpleAudioEngineというクラスを使用する形に書き換えようかなと思いますが、とりあえずはバッサリとカットしておきましょう。 ソースは別のプラットフォームでも共用できるようにちゃんとプラットフォームごとのdefineを使って切り分けます。
プラットフォームごとのdefineはCCPlatformConfig.hに定義されていて、今回のWindows版は以下が有効になってるようです。 #define CC_PLATFORM_WP8 13 #define CC_PLATFORM_WINRT 14 なので、こんな形でWindows版ではとりあえず何もしないようにしちゃいます。 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) //Windows版では何もしない int AudioManager::play(std::string file) { return 0; } #else //AudioEngineを使って音を鳴らす int AudioManager::play(std::string file) { return AudioEngine::play2d(file); } #endif ■改行コード 移植元アプリのソースファイル、ヘッダファイルは改行コードがCR+LFではないので、//コメントの次の行も改行されず軒並みコメントとみなされてしまってエラーが出ているので、エラーが出ているファイルの改行コードを変更します(全部のファイルを変えてしまう方が今後を考えると良いと思います)。 具体的な変更箇所は、 ファイル→保存オプションの詳細設定から、「現在の設定」を「CR LF」に変更 でOKです。 ■その他 あとは、元々はiOS用にしかビルドしてなかったので、ランダム関数にarc4random()を使っていました。が、これはiOSにしかないので、使っている部分をrand()に置き換えます。今後のことを考えると、ランダム関数をプラットフォームdefineで切り替わるようにしておくと良いと思います。 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8 || CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) int randValue = rand() % 4 + 1; #else int randValue = arc4random() % 4 + 1; #endif ビルドが通った! 上記もろもろを修正して、ドキドキしながらビルドしてみると無事にビルドが通りました!あーんど、ワクテカしながら実行すると…実行できました!ちゃんとタイトル画面が表示されて、クリックするとゲームが始まります。
・・・が、アイテムを取った瞬間、見事にアプリが落ちます。
ということで、次回はここの部分を追求してみたいと思います。

Posted by kiyokazk on 2016/04/20 under Development

【Cocos2d-xアプリをUWPへ移植①】元ネタアプリの準備と環境構築

こんにちは、kiyokazkです。 さて、勝手に”連載”としちゃいましたが、Surface Pro 4も借りたことだし、マイクロソフトからの依頼である「Cocos2d-xアプリを色々と調べながらUWPへ移植」について実際に進めていくことにしましょう。進める方針としては前回の最後に決めた方向でいきます。 そもそもUWPってなんなのさ? ここまでさらっと「UWPへ移植」って書いてきましたが、そもそもUWPってなんなんでしょうか。
ちゃんとした説明はWindowsデベロッパーセンターの該当記事に任せるとして、UWPとは”ユニバーサルWindowsプラットフォーム”の略で、Windows 8で初めて導入された、ユーザーがすべてのデバイスで便利にアプリを使うための考え方をサポートするプラットフォームのことのようです。 うーん、分かるような分からないような、イマイチすっきりとはしない感じは残りつつも、すごく大雑把に簡潔に言うと、「Windowsストアで配布されてて、PCとかモバイルとかのWindows 10環境で同じアプリが使えるような仕組み」みたいな考え方でいいのかな。少なくともWindows 10のコアAPIとかアプリパッケージの概念を使うことで、PCだろうがモバイルだろうが動作するアプリをWindowsストアで配布することができるみたい(つまり逆に言うと、PCでもモバイルでもちゃんと動作するようにしないと申請に通らないということなんでしょう)。この”Windowsストアで配布するアプリ”というのを当面の目標とすることにしましょう。 移植元ネタとなるゲームアプリ さて、今回移植の元ネタとなるCocos2d-xアプリですが、昔、練習用に作ってみたシンプルなゲームアプリを掘り起こして使ってみることにします。当時iOS用に作ったアプリだったので、ひとまずMac+Xcodeでビルドして動作するところまで確認してみました。 よかった、ちゃんと最新のXcodeでもビルド&実行できました。
こんな感じの強制スクロール系横スクロールアクションゲームです。ひたすらゴールを目指して敵を避けつつ進みます。 まずはこのシンプルなゲームアプリをWindowsで動作させることを目指します。 プロジェクトファイルと開発環境の構築 次にWindows側の準備をしましょう。 Cocos2d-xプロジェクトファイル Cocos2d-xはプロジェクト内にCocos2d-x自体のソースコードを全部持っているので、特にCocos2dのインストールとかはしなくて大丈夫そうです。Cocos2d-xでプロジェクトを作成すると、いろんなプラットフォーム向けのプロジェクトファイル(Xcode用のプロジェクトファイルとか、Visual Studio用のソリューションファイルとか)が自動的に作られるので、Macで作成したCocos2d-xプロジェクトをそのまま持ってきて使うことにします。 ビルド&実行環境 UWPアプリを作成するためのビルド&実行環境としてはVisual Studioが必要です。無料のVisual Studio Community 2015で問題ないのでこちらをインストールすることにしましょう。
Visual Studio Communityページ まずは空のサンプルプロジェクトで実験 開発環境が準備できたら、まずはCocos2d-xで新規プロジェクト作成時に作られる(ほぼ)空っぽのサンプルプロジェクトを使って試してみましょう。 iOS版はこんな感じです。いわゆるHello Worldですね。新規プロジェクトを作って動かしただけなので当然特に問題もなく動きました。 さていよいよWindowsです。このプロジェクトファイルをまるごとコピーして持ってきて、とりあえずproj.win8.1-universalフォルダにあるソリューションファイルを開きます。ちゃんと開けたらそのままビルドして実行! なんかウインドウサイズは違いますが、そのままでビルドして実行までできました! 移植と大げさに言ってたけど、対象のゲームアプリについてもやってみたらそのまますんなりいけてしまうかも…?
と言ったところで、今回はここまでにします。

Posted by kiyokazk on 2016/04/10 under Development

Oculus Riftで遊んでみよう 【OtakuCity番外編】

こんにちわ。koichiです。
バナナ食べてますか?栄養満点のフルーツですよ。 今日はOtaku Cityのときに使ったOcclusion Cullingについてです。 Unityはカメラ外のものは基本的にレンダリングしないようにできてます。
さらにOcclusion Cullingを使うと、カメラに映ってないものもレンダリングしなくできます。 どういうことかというと、手前のビルにさえぎられ見えていない向こう側のビルは、
そもそも見えないので、レンダリングをしなくてよいということなのです。
事前に設定を行うことで、プレイ中に余計なレンダリング負荷を軽減しようというものです。 (さらに…)

Posted by koichi on 2015/03/30 under Development

XNAでゲーム開発・新宿伊勢丹で「ゆらゆらほし」

こんにちは!koichiです。 Clash of Clans やってますか?
私は戦闘せず、ひたすら町づくりするSim of Clansになってます。 今日は、またまたぴゃるこさんとコラボしたというお知らせです。
「ぴゃるこ」さんは以前から仲良くしてもらっている渋谷パルコのショップさんです。
店舗もほんわかした雰囲気でかわいいです。
前にも店舗で展示するアクションゲームやブロック崩しゲームを開発させていただきました。 さて今回は!? 新宿伊勢丹7階にて6月25日から開催中!
『ISETAN×KORI-SHOW 七夕の過ごし方「ゆらゆらほし」』
にて展示中のゲーム「ゆらゆらほし」!!!
(さらに…)

Posted by koichi on 2014/06/26 under Development, misc

[AR.Drone]Droneをc#で飛ばしてみようじゃないか (3)

さて、前回よりだいぶ時間が経ってしまいました。ほああああ。 次にすることは、、、
・コントローラ部分をラップ&組み込み
・Droneからのカメラ画像を取得してアプリ側で描画
これでとりあえずは形はできてしまうような気がしてます。
AR.Droneやもん、カメラ画像取得してなんぼでしょ。 (さらに…)

Posted by koichi on 2013/07/10 under Development

ブログ画像

[AR.Drone]Droneをc#で飛ばしてみようじゃないか (2)

鬼のような手抜き満載の「サンプルをdllでラップしてまう大作戦」ですが、
突き進んでいきたいと思います。 ちなみにkoichiの機体はAR.Drone1.0です。
追々2.0も対応していきたいですが、とりあえずは1.0でやっていこうと思います。 ■サンプルから拝借 まずはこちらからSDK一式をダウンロード。
https://projects.ardrone.org/
1.8を使いました。
とりあえず、Visual Studio でビルド!!!
(さらに…)

Posted by koichi on 2013/05/30 under Development

cocos2d-xでWindowsアプリ開発環境も作ってみた

cocos2d-xが思ったより便利なので、Windowsアプリの開発環境も作ってみました。ちょっとした2DものならDirectXよりも楽そうな気がするし、マルチプラットフォームを考える場合はXNA使うよりソースの使いまわしができる期待もあるのでちょっと試してみようかと。 使用言語はC/C++ Visual Studioで開発 というcocos2d-x環境を作ります。ちなみに今回試したのは、Windows 7 / Visual Studio 2008です。 (さらに…)

Posted by kiyokazk on 2013/02/04 under Development