iCade 8-bittyとHTML5で作るゲームの話

iCade 8-Bitty買いました

f:id:Haneda:20130207133750j:plain

iPhone,iPad,AndroidBluetoothでつながるレトロなコントローラーです。 大量に買ってますが大量な事と今回の記事の関係はありません。

こちらから購入出来ます。

さて、このiCadeですがBluetoothのキーボードとして接続され、キーコードが送られてきます。 UP,DOWNでそれぞれ別のキーコードが来ます。

  • 上押す w 離す e
  • 左押す a 離す q
  • 下押す x 離す z
  • 右押す d 離す c
  • みたいな感じです

ネイティブアプリで使えるのは当然ですがブラウザ上で動くアプリの場合は使えるか検証してみました いつものここで対応と確認済みです。

PC

Chrome,Firefoxでは普通に使えます。 windowにkeydownイベントをlistenする事で問題なく使えます。

iOS

f:id:Haneda:20130208011949p:plain

windowにはkeydownイベントは送られてきません。 < input type="text" >で作成したテキストフィールドにフォーカスがあればkeydownは来ますのでそこをlistenしましょう。 一応これで使えるのですが、テキストフィールドが表示されてしまっているのと、前後のテキストフィールド移動のバーが表示されるのが不格好。消し方知っている方いたら教えてください。

Android

ChromeでPCと同じように動いたけどそもそも動作が遅すぎるので検証は後回しで。。

f:id:Haneda:20130208010120j:plain

まとめ

PCでは全く問題なく使える。iOSでは若干の不格好さがある。WebViewを内蔵したネイティブアプリ化なども考えた方がいいかもしれない。

GitHubのPull Requestを頂いた話

以前も書いたとおりこちらHTML5のゲームの開発を行っています

この度、原作者さんからプルリクエスト頂きまして見た目の強化とゲーム部分の調整が行われました

頂いたプルリクはこちら

見やすいですねぇ。 そして嬉しい!

趣味プロ(趣味プログラミング)の最大のハードルであるモチベーション維持を誰かからのプルリクとかFollowとかIssueとかでなんとか出来そうな気になってきます。 誰かに見てもらってる感重要。

コラボレーションが手軽に出来る GitHub は本当にすばらしいツールだと思います。 既存のツールの組み合わせでもなんとかなったんでしょうけど、この手軽さは圧倒的。 タスクを管理するIssues、ドキュメント管理用のWiki、公開用のPagesと揃っているので趣味プロ(趣味プログラミング)やるのはもうコレで一通り足りてしまいます。

gitに慣れる手間はありますが、得られるモノは本当に大きい。よくメリットわからなくてもとりあえず触っといた方がいいんじゃないですかね! 業務でも大変便利なんで導入してない会社はとっとと導入した方がいいんじゃないですかね!

HTML5 GamePad APIについて

はじめに

HTML5!なんでも出来る!みたいな話がありますが、ゲームパッド(ジョイスティック)対応もなしに何言ってるの君?と思ってたのですが、GamePad APIがきちんとありました。

こちらを見れば概要と動作確認が出来ます。

が、コレがすんなり使える状況では無かったのでまとめをしときます。2013/02/02現在。

対応ブラウザ

対応ゲームパッド

対応ゲームパッドがなんとOSによって違います

入力IF・ボタン数のちがい

アナログスティックのあるなし、ボタン数の違いはもちろん、十字キーがボタン(buttons)で来るパッドとアナログ入力(axes)で来るパッドがあります。

その他

パッドの2本同時接続が可能なことは確認済みです。 マルチプレイヤーゲームが作れるのはパッド対応の大きなメリットですね。

まとめ

Chromeを使ってて、Windowsの人はXInput対応、Macの人は普通のゲームパッドがあれば利用出来る。ということになります。。

Windows上で持ってる人が少ないと思われるXInputのパッドを要求するのが痛い。 キーコンフィグも作らないと実際のゲームで運用するのは無理。と、現状、簡単・便利に〜という状況にはありません。ですがゲームパッドは人類にとって必要なデバイスなので力強く後押ししていきたいと思います。

GitHub Pageでgit submoduleを使ってはまった話

前提

失敗

  • haneda3.github.comを管理するリポジトリに git submoduleでinovation5を追加
haneda3.github.com(master branch) repo
  |-inovation5 submodule
      |-async.js submodule

成功

  • haneda3.github.comのリポジトリは利用せず、inovation5のgh-pagesブランチを利用する
    • gh-pagesブランチを利用すると失敗例と同等のURLにアクセス可能
inovation5(gh-pages branch) 
  |-async.js submodule

まとめ

  • GitHub Pageはgit submoduleに対応はしているけど、1階層のみ。submoduleのsubmoduleは取得できない
  • gh-pagesブランチの仕様がきもいからと言って使わないのはよくない。使いましょう!

HTML5でゲーム

HTML5

HTML5を使ってゲーム作ってみました。
作ってみたと言っても、こちらの名作アクションを許可を得て移植。

ここでプレイできます
ソースはこっち


HTML5らしいところと言えばCanvasとAudio使ってるところでしょうか。
d言語からの移植だったため、スムースに移植できました。


PCのChromeで動かす限り非常に快適でブラウザの上でなんでもやってしまえる時代になってきてるんだなぁと実感できます。

WiiU

元々の目的はWiiU GamePadのWebブラウザで遊ぶためでした。
一応動くのですが、すごく重い&Audio非対応のため楽しめるレベルにはありません。

重い件については描画を工夫すればなんとかなりそうですがAudio非対応なのはどうしようもないので、うーん

Wii UのWebブラウザでのGamePadのボタン入力 イベント編

前回
Wii UのWebブラウザのGamePad ボタン入力の制限 - haneda point


preventDefaultを使えばBボタンが取れるという怪情報が舞い込んできたので確認してみました。


そもそも仕様ではポーリングでしかボタン入力取れないように見える…
一応onkeydownが来てないか確認したら、ばっちり来てました。


window.onkeydownで 十字キーとAボタンの押下は取得出来ます。
他はダメ。うーん、せめてもう1ボタン…

それ以上使いたい場合ポーリング必須みたいです。

Wii UのWebブラウザのGamePad ボタン入力の制限

そこそこのスピードで動く、HTML5JavaScriptでGamePadのスティック・タッチパネル・ボタン入力が取れるとのことで十字キー大好きな人はテンション上がってきますよね。

仕様はこちら
http://www.nintendo.co.jp/wiiu/hardware/features/internetbrowser/index.html

こちらのサイトの方が、すでに動くモノを作っていらっしゃいました。

http://makimo.to/Maryo/
https://github.com/segabito/SuperMaryoWorld-for-WiiU


なんで+と-のボタン使うのかなーと思ったら、主要なキーはWebブラウザ機能に割り当てられてしまってるんですね。(押したのは検知出来るが、割り当て済みの機能が起動してしまう)

ではフルスクリーンにすれば解決と思いましたが、HTML5 の FullScreenAPIも非対応。
現時点では割り当てのあるボタンは使わないという対処しかできませんね。。


結論として以下のボタンのみ自作アプリからは利用可能です

  • 拡大縮小の + -
  • 決定の A
  • 先へ進む R
  • TVとの切り換えを捨てるなら Y


十字キーとアナログスティック二つ、タッチパネルは自由に利用出来ます。


せっかくの魅力的なプラットフォームですし
FullScreenAPIに対応して、全ボタン使えるようにして欲しいです。