ゲーム制作階ではあるのですが今回も 内部処理的な話が中心です ゲーム仕様の続報をお待ちしていた方には申し訳ありません |
いままでスマホ中心のプログラミングを目指していたために 今まで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でジョイスティックの操作ができるようになりました 久しぶりのライブラリいじりで面白かったですね |