3Dスティックをグリグリうごかす!

冬月 ゲーム制作階ではあるのですが今回も
内部処理的な話が中心です
ゲーム仕様の続報をお待ちしていた方には申し訳ありません

いままでスマホ中心のプログラミングを目指していたために
今までPCをのジョイスティックの対応とか一切していなかったんだよね
で、その対応をしたのが今回のお題だよ
冬華

OpenGLでなおかつ1からライブラリを使っている人に
少しでもゲーム開発の手助けになればと思います
ということで、本題は続きを読むからどうぞ
設子

妖夢龍剣伝

冬月 本当はジョイスティックの対応は全く考えてなかったのですが
前に「妖夢龍剣伝」の開発発表をしてしまったせいで
アクションゲームはやはりジョイスティックじゃないといけないよねってことで、今更ながら追加実装したというわけです

そもそも、タッチパネルのないPCだとマウス操作になるから
マウス操作だとボタンの同時押しが出来ない
というのがそもそもの原因の一つとしてあるね
冬華

タッチパネル搭載機やスマートフォンは
2~3同時タッチは対応しているのでパッドがなくても十分に対応可能です
でも、ターゲットユーザー層はPCですからね……
設子

冬月 調べていく内に見つけたのが
SDL(Simple DirectMedia Layer)というライブラリです
WindowsはもちろんOSXやLinux、Androidまで対応しています

SDL:Wikipedia(http://ja.wikipedia.org/wiki/SDL)

詳しい説明はWikipediaに頼るとして
名前の通り、グラフィックやサウンド、インターフェイス(入出力)までカバーしている万能ライブラリになるよ
SDLとOpenGLさえアレばゲームが作れちゃう勢いだね
冬華

ウインドウの表示周りまでカバーしてくれるので
フラグを変えるだけでどのOSにも対応できるコードが書くことが出来ます
冬月先生はこの中のジョイスティックの部分を使いました
設子

SDLの導入
CREST’S WEBLOG:その5-ジョイスティック入力編ー

冬月 上記の2つのサイトを参考にすれば
導入~設定までは簡単にできちゃいます
DLLの読み込みに慣れている人だったら数分で導入できると思います

1点だけ違う点は
SDLの初期化時にジョイスティックの処理のみを初期化することだね
ウインドウの表示処理はもうあるので使わないです
冬華

プリプロセッサでウインドウ処理は行わないように定義する
SDL_MAIN_HANDLED


//ウインドウの描画処理とジョイスティックの処理を初期化する
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK);

//↓

//ジョイスティックの処理のみを初期化する
SDL_Init(SDL_INIT_JOYSTICK);

以上の2点をやっていれば
現在作っているソースに導入することが出来ます
1から作成する場合は上のサイトをそのまま参考にしたほうが良いと思います
設子

冬月 そして、こちらが実行画面になります
黒文字で真ん中の方に「JoySticksNum : 1」と見えると思います
実際に1つジョイスティックをつないで試してみました

画像じゃわかりにくかったのでキャプチャしてないけど
ちゃんとボタンの反応もとれたよ
ドライバーのいらない汎用的なジョイスティックならばなんでも反応するんじゃないかな
冬華

こういった感じで
OpenGLでジョイスティックの操作ができるようになりました
久しぶりのライブラリいじりで面白かったですね
設子

気軽にコメントをどうぞ!

この記事に関すること冬月に聞きたいこと等、小さいことでもコメントしていただける嬉しいです。
冬月に直接連絡したい方は下のお問合せフォームをお使いください。(メール送信されます)

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。
※メールアドレスは公開されることは有りません。


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

ゲーム製作の関連記事