Cocos2d-x でジョイスティックをサポートする方法 (Windows/Mac)

こんにちは。

最近 Unity に押されがちですが、根強いファンのいる Cocos2d-x の Windows/Mac ビルドでジョイスティックをサポートする方法をまとめました。特に Windows では落とし穴があるので要注意です。

※ここでいうジョイスティックとは、物理的なジョイスティック(ゲームパッド)のことで、仮想ジョイスティックではありません。
※iOS/Android にはジョイスティックサポートがあるようです。

GLFW の関数を直接呼ぶ

「Cocos2d-x は Windows でも Mac でも動いてすごいわー」と思っていましたが、実装を見てみると内部では GLFW というオープンソースのライブラリーを使用しており、GLFW が Windows/Mac などをサポートしていました。その点で言えば、すごいのは GLFW です。

GLFW の API を見てみると、ジョイスティックサポートもちゃんとあります。ですので、Cocos2d-x に API がないなら GLFW の API を直接呼び出すのがよさそうです。

Cocos2d-x にすでに含まれている glfw3.h をインクルードし、以下の関数を使えば必要最低限の情報は取れます。

  • glfwJoystickPresent() – ジョイスティックが存在するか調べる
  • glfwGetJoystickButtons() – ジョイスティックの全ボタン状態を配列で取得
  • glfwGetJoystickAxes() – ジョイスティックの全スティック状態を配列で取得

例えば以下のような処理を、(scheduleUpdate を行った後) シーンのupdateメソッド内で行えばよいです。

Mac 版ではここまでです。意外と簡単にジョイスティックサポートできましたね!

Windows 版はこのままでは動作しませんので、以下のような対処が必要でした。

以下、Windows版のみの問題

Windowsでは、普通に上記の処理を行っても、glfwJoystickPresent() から 0 が返ってきてしまい、うまくいきません。どうやら、Cocos2d-x 本体 (libcocos2d.dll) がスタティックライブラリ版の GLFW (glfw3.lb) をリンクしていて、それとは別にプログラム本体 (xxxx.exe) もスタティックライブラリ版の GLFW をリンクすることになるので、GLFW の実態が複数存在してしまっているのが原因のようです。

解決方法はいくつかありそうですが、とりあえずDLLバージョンのGLFW使用することで回避できました。

GLFW DLL 版のダウンロード

GLFWは github で公開されており、過去のバージョンも含めてバイナリ版がダウンロードできます。

使用している Cocos2d-x のバージョンによって、使われている GLFW のバージョンが異なりますので注意してください(Cocos2d-x v3.12 までは GLFW3.0.4、Cocos2d-x v3.13 以降は GLFW3.2 が使われています)。

ここでは、以下のページから glfw-3.2.bin.WIN32.zip をダウンロードしました。

https://github.com/glfw/glfw/releases

ss1

ダウンロードした zip ファイルを展開し、使用している Visual Studio のバージョンにあった glfw3.dll と glfw3dll.lib を、Cocos2d-x の cocos2d\external\glfw3\prebuilt\win32 にコピーします。

ss2

ビルドパラメータの変更

Visual Studio 上で、プロジェクト libcocos2d および自分のプロジェクト(ここでは JoystickSample)の両方のビルドパラメータに以下の変更を行います。

(1) [C/C++]-[プリプロセッサ]-[プリプロセッサの定義] に GLFW_DLL を追加

ss5

ss6

(2) [リンカー]-[入力]-[追加の依存ファイル] に glfw3dll.lib を追加

ss3

ss4

(残念ながら libcocos2d のリビルドが必要です。5分くらいでしょうか・・・。)

ここまでやれば、ジョイスティックが exe 側からでも見えるはずです。

最低限の動作が確認できるサンプル JoystickSamplegithub に置いてありますので、参考にして下さい。win32版です。

ジョイスティックが16本まで認識されて、ボタンとスティックの状態がリアルタイムに表示されます。

ss10

この例では、ジョイスティックが2本認識されています。
1つ目のジョイスティックの1番と4番のボタンと、2つ目のジョイスティックの14番のボタンが押されています。

どうも Cocos2d-x の Windows ビルドは、フルスクリーン対応も中途半端だったり、ちょこちょこ抜けがある気がして不安ですが、がんばって行きましょう。

ダウンロードカードの台紙は自分で作るしかない

こんにちは。

先日、即売会で初めてダウンロードカードを頒布しました。

その際、ダウンロードカードは業者さんに発注したのですが、費用を抑えるために台紙は頼みませんでした。しかし実際にカードが出来上がってみると、ちょっと物足りなさを感じてしまい、悩んだ末に自分で作ることにしました。

ダウンロードカード

そもそもダウンロードカードがないと始まりません。ダウンロードカードを自前で実現するとなると「シリアルコードの管理」「サーバーの立ち上げ」などが必要で、個人で実現するのはハードルが高いです。そんな面倒な工程を気にせずに利用出来るコンカというサービスがあるので、今回利用させていただきました。

コンカ | ダウンロードカード・ミュージックカード製作サービス
https://conca.cc

screen-shot-2016-11-12-at-9-39-13-pm

コンカさんでは台紙込みのプランもあるので、予算に余裕のある方は初めからそちらを発注するのも手です。

 

【参考】
0.3mm 100枚プランの価格
 台紙なし:16,178円(1枚当たり約162円)
 台紙あり:31,277円(1枚当たり約313円) → 差額 15,099円
※コンカホームページにて2016年11月15日に確認)

 

自分の場合は台紙が割高に感じてしまい、台紙なしを選択しました。

もう自分で作るしかない。

用意するもの

以下のものを用意します。

  • ハガキ大の厚めの紙
  • 一穴パンチ
  • 角を丸くするパンチ
  • はがせるタイプの両面テープ
  • ダウンロードカード
  • (PC・プリンター)

%e5%86%99%e7%9c%9f-2016-11-15-10-48-04

ハガキ大の厚めの紙

自分は100円ショップで55枚100円のハガキを2セットを買いました。(200円)

一穴パンチ

よくある二つ穴パンチだと穴の位置がよく見えず、位置が正確になりません。これも100円ショップで売ってました。(100円)

角を丸くするパンチ

個人的にはこれが神ツールでした。これを見たときにカードを自作する決意を固めたと言っても過言ではありません。ホームセンターで買いました。(700円)

はがせるタイプの両面テープ

貼る面積などで調節すれば、普通の両面テープでも良いかもしれません。(300円)

PC・プリンター

このページを読んでいるかたは大抵お持ちだと思います。この目的のために PCやプリンターを買うと高くつくのでお勧めできません。(^^;

製作過程

台紙面をデザインする

せっかく台紙を作るので、何か印刷します。何も印刷しないと少々寂しいです。また、上部中央に開ける穴の位置がわかるような印刷をすると穴あけが楽です。自分が使用したPSD(フォトショップ用)ファイルを置いておきますので、よろしければお使いください。

PSDファイル: VB_card.psd (716KB)

vb_card

穴の位置(黒丸)と、カードを貼る位置(点線)が大事です。また、中央のカエルは両面テープを貼る目印にもなってます。

印刷する

紙の大きさを「ハガキ大」にした理由は、プリンターで印刷する際、設定などがやりやすいからです。お持ちのプリンターを適宜設定して、先ほどデザインしたものを印刷して下さい。

角丸め

角丸パンチで角を丸めてください。

cxdkjiouqaahgvt

穴あけ

黒丸を印刷したところに、一穴パンチで穴を開けます。特にぶら下げる予定はなくても、この穴があるとそれっぽくなります。

cxdkjiqusae0nwq

カード貼り付け

カード貼り付け枠の中央に、1〜2cmくらいの長さ(カエルが隠れるくらい)の両面テープでカードを貼り付けます。

cxdkjiquaaaknsa

これで完成です!

作るの楽しい!(本末転倒?)

展示イメージ

0.3mmのカード+台紙を50枚重ねるとこんな感じでした。

それっぽい?

cxgm8iiusaaoq6x

所感

以上のように自分でダウンロードカード用の台紙を作ってみましたが、結構疲れます。100枚つくるのには結局半日(4時間以上)かかりました。

そうは言っても、発注したら1万5千円ほどのものを、クオリティーはさておき、1300円程度で作れたのは大きいです。節約大事・・・。(コンカさん、もうちょっと安くなりませんかね)

参考になれば幸いです。

デジゲー博2016 に出展します

こんばんは。

気がついたら前日となっていましたが、今更ながらこちらにも書いておこうと思います。

2016年11月13日(日)に秋葉原で開催されるデジゲー博2016に『tomeapp』として出展いたします。去年に続いて2年連続のデジゲー博です。

展示内容

今回は「お品書き」を書きました。

menu

ちょっと時間かかりましたけど、やっぱりまとまったのが一枚あるといいですね・・・。

PRINCIPIA: Master of Science (CDプレス版)

今年9月に PLAYISM さんと Steam でリリースさせていただいた『PRINCIPIA: Master of Science (プリンキピア:マスター・オブ・サイエンス)』を頒布いたします。正式リリース後のバージョンをCDメディアで頒布するのはデジゲー博2016が初めてです!

今回初めて CDプレスで行いましたが、やはりプレスはいいですね・・・(今まではCD-Rでの頒布)。安心感がありますし、何よりぎりぎりまで頑張れてしまう CD-R は、寝不足の元でした。プレスの場合、2〜3週間前にデータ入稿しなければならないので、諦めがつきます。今回入稿したのは、PLAYISM さんと Steam で初公開したバージョン(v0.9-2016-09-08)です。

サウンドトラックCD販売

これは前回のデジゲー博で先行販売させていただいたものです。毎回即売会などで好評をいただいているものをデジゲー博2016でも販売します。

今回も tomeapp 音楽事業部長・椎葉さん(@shiibadaisuke)がブースにいらっしゃいます。

VOLLEY BALL 2on2 for WIN/MAC ダウンロードカード販売

なんと!

22年前に PC-9801用のフリーソフトウェアとして公開し、(一部では)絶大な人気を誇った『VOLLEY BALL 2on2』というゲームを、Windows と Mac OS X で動作するように移植したものを頒布します!

もう誰も覚えてないと思ってたんですけど、ツイッターのフォロワーさんなどから「あー、そのゲーム知ってます!」みたいな嬉しい言葉を結構な回数いただいてしまったので、気分転換として作り始めました。

ソースコードが全て残っていたこともあり、2週間くらいで遊べるようになったので、思い切ってデジゲー博で頒布することにしました。すみません。

ちなみに WIN/MAC 版ではジョイスティックに対応しましたので、最大4人までの同時プレイが無理なく可能になったはずです。

頒布方法は悩んだんですけど、コンカというダウンロードカード製作サービスが気になっていたので、今回初めて利用してみました。

コンカ
https://conca.cc/

screen-shot-2016-11-12-at-9-39-13-pm

少々予算をけちって「台紙なし」で発注したのですが、前日になってダウンロードカードとしての物足りなさを感じ始めてしまい、いま(11/12 PM9:33)自分で台紙作ってます。(間に合うかな・・・?)

間に合ったかどうか?

それは、デジゲー博2016の会場でお確かめください!(^^;

開催情報

イベント名:デジゲー博2016
日時:2016年11月13日(日)11:00~16:00
場所:秋葉原UDX2階 アキバ・スクエア
(※入場のために1,000円のカタログの購入が必要)
公式ホームページ:http://digigame-expo.org

digihaku-banner1

ブース情報

circlecut3

【サークル名】tomeapp
【代表者】TOME
【配置】D-24ab
【ジャンル】シミュレーション

 

それでは、デジゲー博2016でお待ちしています!