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

【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

【プロローグ編】Cocos2d-xアプリをWindowsプラットフォームへ移植しよう

こんにちは、kiyokazkです。 Windows 10、使ってますか?僕は使ってないです(基本Macなので)。 でも、周りの意見とか聞くと、Windows8系がちゃんと進化してるみたいでWindows 8.1より10の方が使いやすいって話もちらほらありますね。僕は完全にMac派かというとそうでもなく、「XcodeがあるのでMacを使ってるけど基本どっちでもいい派」だったりします。最近では、Unityで開発をするときにはWindowsを選択することが多いので(やっぱりVisual Studioが強力すぎる)、近いうちにWindowsを10にしてもいいかな〜と思ってました。 マイクロソフトからの相談 そんなことを考えていた昨今、マイクロソフトのエヴァンジェリストチームの方から相談があるのですがと連絡がありました。内容を聞いてみるとWindows10プラットフォームを広げていくための内容のひとつとしてWindows 10で遊べるゲームアプリを増やしたいという相談です。さらに掘り下げて話を聞いてみると、最初頭をよぎった「つまりWindows向けにゲームアプリを作ってほしい」という相談ではなく、「Windows向けのゲームアプリを作る人を増やしたい」という話でした。もう少し具体的に言うと、UnityはVisual Studioとの連携もあるなどアプリ開発プラットフォームとしては確立できてきた、でもcocos2d-xではまだまだ → cocos2d-xでもちゃんと開発できるんだよということを広めたい=間口を増やしたい、という内容でした。 ただ僕は先に書いたように、どうやらWindows 10って結構いいみたいね〜、とか言っているくらい最近のWindows事情には詳しくなく、Windowsのアプリってストアアプリって言うんだよね?え、UWPアプリって何?っていう状態なんですよね(ちなみに、Universal Windows Platform(=UWP)というのがWindows10のコアで、デスクトップもモバイルもそれぞれのWindowsの一部がUWPであると呼べるもののようです)。
でも、UWPアプリについては知らなくても、cocos2d-xについてはそれなりにさくっと簡単なサンプルゲームを作ったりすることをできるくらいは使えるので、「実際にcocos2d-xを使ってゲームを作っている(リリースしている)人が、UWPアプリについてを学びながら実際に移植を行い、その中で簡単だったねという点とか、逆にここはハマりポイントだった&解決するためにしたこと等を、実際に奮闘しながらその流れを記事にしていく」という形で、古巣でもあるマイクロソフトに一肌脱ぐことにしました! ちなみに、個人的にはWindows 10プラットフォームはがんばってほしいと思ってるので、微力ではあるけどその応援ができることと、最近のWindows上での開発はなにやら楽しそうだという好奇心も存分に動機に含まれてたりします。 ただUWPとは何か?という話についてはまったくズブの素人なので、そのあたりの解説については他の人達にお任せしつつ、UWPアプリに詳しくなりつつ開発の仕方を学んでいくという視点で、あれやこれやをお伝えしていければなと思ってます。 ということでプロローグ編でした。
今後は大まかに以下の様な方針で進めていこうかなと思っています。 今後の方針 1. Cocos2d-xを使って簡単なサンプルゲームを作る。iOSデバイスで動かしましたってところまでやる。(実際にiOSでアプリをリリースしてる人がちょっとでもUWPアプリへの移植のイメージをしやすいように)
2. Windows上でCocos2d-xをビルドするために必要な物は何かを調べて、ビルド環境を構築する。
3. 1.で作ったサンプルゲームをWindows上でビルド→Windowsアプリとして動く状態にしてみる(ここがまず1つ目のハードルかな?)
4. Windowsアプリとして動かせるところまでできたら、次にUWPアプリにするために何が必要かを調べつつ、UWPアプリ申請までの流れをトライしてみる
5. UWPアプリへの流れが大体分かったら、次に移植のネックになりそうな部分をひとつずつトライ&エラーで方法を知る。具体的にはCocos2d-xのクロスプラットフォームでネックになりそうな、アプリ内課金、広告の組み込み、SNS(Facebook/Twitter)連携、等の、プラットフォームごと(iOSならiOSの、AndroidならAndroid)の実装が必要な部分。これらをサンプルゲームに組み込んで、それを移植という形でトライ、具体的な方法とかハマリポイントを紹介。(実際にリリースしているものを移植するためにはこの部分が一番大きいと思うし、これが2つ目の大きなハードルかなと思います。) とりあえずはWindows用の開発マシンとしてSurface Pro 4をマイクロソフトさまに借りたのでこれをつかって進めていきます!

Posted by kiyokazk on 2016/03/31 under Development

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

こんにちわ。
去年ブーツがぶっ壊れて買わないとと思いつつも、もう今年はスノーボードいけそうにないkoichiです。 さて、前回からもうちょっといいマップにしてみようと思います。 使うのは、ゼンリンさんの「Otaku City」!
http://www.zenrin.co.jp/product/service/3d/asset/
そうアキバなのだ!
このネーミングどうなの?ふざけてるの?と思ったけどOtakuってもう共通語なのか。
何はともあれ、アキバの街を闊歩するのだ。 (さらに…)

Posted by koichi on 2015/03/02 under Development

Oculus Riftで遊んでみよう 【Unity編】

こんにちわ。
トロピカーナのオレンジジュースが一番うまいと思いつつも、セブンのオレンジジュースも値段の割りになかなかうまいと思ってるkoichiです。 前回の設定編に続き、今回は実際にUnityプロジェクトでOculus SDKを扱ってみようと思います。
自分の作ったフィールドで遊ぶことができるようにしてみます。
(さらに…)

Posted by koichi on 2015/02/26 under Development

Oculus Riftで遊んでみよう 【設定編】

こんにちわ。
PS4を買いたいのに買うには面白そうなゲームがなく、いまいち踏み出せないkoichiです。 さて、今回は今話題のOculus Riftで遊んでみようの回です。
Unityでさっくり使えるようになっているので、いろいろ試しながらやっていこうと思います Oculus Rift 参上 まず、Oculusを用意。 じゃじゃん、DK2。 (さらに…)

Posted by koichi on 2015/02/23 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

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

AR.Droneって知ってますか?少し前に話題になったクアッドコプター(ようするにラジコンヘリ)です。
前面にカメラが付いてる&iPhoneで操作できるのでとても未来なおもちゃです。
(さらに…)

Posted by koichi on 2013/05/15 under Development

next »