2016年3月26日土曜日

Jamestown

先日、Macでゲームパッドが使えるようになったのでもっと本格的なゲームが遊びたいぞという訳で、Steamを色々物色していたのですが、Mac対応のSTGってほぼ無いに等しいんですよねぇ... Windowsなら色々ありますが。(虫姫さまとか、Mushihimesamaとか)

で、少ない選択肢の中から数本購入して遊んでみた訳ですが、一番面白かったのがこのJamestownというSTGです。
http://store.steampowered.com/app/94200/

このゲームですが、割と特殊でシングルプレイでは遊べません※注記あり
最低2プレイヤ以上(最大4プレイヤ)選択する必要があります。
若干ルールが特殊なので。
※注記: 後の方で追記していますが、普通にシングルプレイモードもありました。ただし、このゲームのマルチプレイを一人でプレイしてみた感覚が割と新鮮だったから記事にしたので、そのままの状態で残しておきます。

このゲームには残機の概念がなく、プレイヤが全機やられない限りゲームオーバーになりません。仮にプレイヤが1機死んでも、生き残っているプレイヤが一定時間経過するまで粘るか、復活アイテム(Rというマークの赤いアイテム)を拾ってくれればすぐに復活できます。

複数人でマルチプレイすればきっと楽しいと思います。
・・・リア充専用ゲームかな?

などと、一瞬思ったりもしたのですが、このゲーム、実は一人でマルチプレイすることもできます。複数プレイヤに全く同じキーを割り当てることができるので。その状態でのプレイをすることで、「片割れさえ生き残っていれば良い」という前提で行動が可能になるので、通常のSTGとは異なった戦略で進められる点が割と新鮮だと思いました。

まぁ、でもやはり普通のコテコテのSTGを遊びたいです。
Windowsなら割と充実してますが、Macには現状皆無かな。
無いものは作れば良いという事か。

追記:
なにやら、果てしなく大きな誤解をしていたようで、このゲーム、ちゃんとシングルプレイヤーモードがありました。(まぁ、普通に考えて無い訳がないよねw)
何故、「マルチプレイヤー限定」と誤解していたのかというと、ゲームパッドをキーボードにマッピングさせる方法で使っていたのですが、どうやらこのゲームが単体でゲームパッドを認識していたようで、ゲームパッドとキーボード両方からの入力が認識されたために2Playerが操作しようとしたものとゲーム側が誤認識したっぽい気がします...(なんじゃそりゃ)
シングルプレイでプレイしたところ...まぁ普通のSTGかなという感じですね。
逆にインパクトが薄まったので、敢えて記事にするまでもない普通のゲームになってしまいました...
いや、完成度は結構高いし普通に良ゲーなのですが、STGに目が肥えてしまっているためか「普通の良ゲー」という感じです。

2016年3月21日月曜日

僕が考えた最強のHTML5ゲームのプログラミング環境

「僕が考えた」って訳ではなく、人から色々聞いたりして得た情報を元に自分で実際に作って試してみて、最終的に安定したHTML5ゲームのプログラミング環境を紹介します。

以下が最強だと思う
ツール用途
Visual Studio Codeソースコード編集
Chrome実行 + デバッグ
GitHubソース構成管理 + デプロイ

ソースコード編集(Visual Studio Code)
https://www.visualstudio.com/ja-jp/products/code-vs.aspx
Linux, OS X, Windowsで動くかなりシンプルなソースコード編集ツールで、フォルダを開けば、左側のツリーにフォルダ以下のファイルが一覧表示され、右側でソースコードが編集できるというもの。gitリポジトリのフォルダを開けば、差分内容が確認できて便利です。
「Webアプリケーション向け」と謳われてますが、最近はC言語のソースもこれを使って編集しています。IDEAでも良いんですけどね(しかし、IDEAは重すぎるのです...少し高いし)
ビルドはターミナル(WindowsならDOSプロンプト)でOKという人なら、どんな言語でもコレで大丈夫ではないでしょうか。HTML5(js)などのWebアプリケーションなら、ビルドが不要なので、多分これが一番最強だと思います。

実行+デバッグ(Chrome)
https://www.google.co.jp/chrome/browser/desktop/index.html
右側に表示されているデベロッパーツール(option + command + I)が便利。
コンソール出力の確認、例外時のコールスタックの確認、ブレイクポイントを設定したりポーズしてからステップ実行など、デバッグに必要なツールが一通り揃っています。

ソース構成管理 + デプロイ(GitHub)
ソース構成管理だけならgitで十分ですが、GitHub Pagesを使えばデプロイまで出来てしまうので、GitHubを使うと便利です。

私の場合、リポジトリ作成後にGitHub Pagesを作ったら、gh-pagesブランチをデフォルトブランチにしてmasterブランチを削除しています(つまり、gh-pagesをマスター扱いで使っています)

こうすることで、ソースをコミット(git add -A; git commit)してから git push と叩けば、GitHub Pagesに内容が反映できてしまいます。

あとは、GitHub PagesのURL(http://suzukiplan.github.io/html5-60fps-stg-demo/とか)を公開するWebサイトやブログなどに iframe タグで埋め込んであげれば、デプロイ(公開)までできてしまいます。

<iframe height="480" name="game" seamless="" src="http://suzukiplan.github.io/html5-60fps-stg-demo/" width="480"></iframe>

BloggerをAdSense連携させておけば、万が一ゲームが大ヒットした時にお小遣いが入るかもしれないので、良さげかも。

恐ろしいのは、ここに紹介したすべてのツールが無料ってことですね。
すごい世の中になったものだ...

2016年3月20日日曜日

EnjoyableでMacでWindows用のゲームパッドを使う

家電量販店のPCゲームパッドコーナーに行くと、軒並みWindows用のゲームパッドしか売っていません。稀に「Mac OS X対応」を謳っているゲームパッドも置いてありますが、実際に動かしてみると妙に誤動作をして更にガッカリしたりとか(経験済み)。

色々と試してみたのですが、最終的にココの記事を読んで、Windows用のゲームパッドをキー割り当てして使う方法がベターだと悟りました。(確かSteam Controllerとかもそういう方向性だったような)

ただし、上記の記事では有料アプリしか紹介されていませんが、「流石にこれぐらいのものなら無料であるのでは?」と思って探してみたら、ほぼ同等機能のものが有りました。
https://yukkurigames.com/enjoyable/
何か、見たことのある饅頭がいるな...

そこで、近所の家電量販店で適当に買ってきたゲームパッドをつないでみて確認。
ちなみに、購入したのは ELECOM の JC-U3312SBK
安かったし、「耐久性」の文言に惹かれました。

早速、JC-U3321SBKをMacのUSBポートに接続して enjoyable を起動。
ちゃんと認識してるみたいですね。
左側のタブに「Elecom Wired Gamepad #1」と表示されているので。

次に、パッドとキーボードのマッピングをします。
1. 左側のツリーから「Axis 1」の「Low」を選択
2. 右側のタブで「Press a key:」というラジオボタンを選択
3. キーボードの左カーソルを押す

と操作すれば、ゲームパッドの十字キーの左キーボードの左カーソルキー が割当たります。
少し分かり難いですが、JC-U3312SBKの場合、Axis 1 がカーソルキーのX軸、Axis 2がカーソルキーのY軸となっているようです。ボタンについてはゲームパッド(物理)に描かれている番号とenjoynable上の表示が一致しているので判り易い

それでは、上記の要領で以下のように割り当ててみましょう。
・Axis 1 - Low = 左カーソル (←)
・Axis 1 - High = 右カーソル (→)
・Axis 2 - Low = 上カーソル (↑)
・Axis 2 - High = 下カーソル (↓)
・Button 1 = Z
・Button 2 = X
・Button 3 = SHIFT

上記のキーマッピングは、東方Projectをプレイする想定でJC-U3312SBKのベストだと思われるキー割り当てをしてみた感じのものです。


そして、一通り割り当てたら、画面右上の「>」というボタンをクリックすれば、マッピングが有効な状態になります。
マッピングの 有効化 / 無効化 の操作は、スクリーン上部のツールバー(下図のアイコン)でもできます。(便利)

実は、GamePad Companionという1000円ぐらいする有料アプリも買って試してみたのですが、そちらには常駐機能が無いのでやや不便です。

下記の記事で実験中のHTML5製STGのデモが、これで遊べることを確認しました。
http://suzukiplan.blogspot.com/2016/03/html560fpsstg.html

2016年3月15日火曜日

HTML5で60fpsで動くSTGが作れる限界を探る

HTML5(JavaScript)で60fpsのSTGが作れる限界点を探ろうという趣旨の記事です。
以下のデモを随時更新していきます。(更新状況はコメントに記載)

(備考)
・PCブラウザ専用(Chrome推奨)
・カーソルキーで8方向に移動
・[Z] キーでショット発射
・[SHIFT] キーで低速移動

(PCブラウザ別の動作状況)
・Chrome: ◯ 正常に動作します
・Safari: △ 音が鳴りません(何らかのプラグインが必要?)
・IE: △ 音が鳴りません(何らかのプラグインが必要?)
・Edge: × 動きません(ロード途中で止まります)
・スマホ全般: × 動きません(ロード途中で止まります)

(ホスティング)
上記のデモははGitHubを使ってホスティングしています。
最初は suzukiplan.com でホスティングしていましたが、HTML5(静的ページ)ならGitHub Pagesでホスティングできてしまいますね。(しかも、修正をgh-pagesブランチへcommit後は git push だけでデプロイまで出来てしまうという手軽さ)
https://github.com/suzukiplan/html5-60fps-stg-demo

2016年3月12日土曜日

Invader Block を HTML5 で作ってみた

ゲームはC言語で作る派のシーラカンス・プログラマな私ですが、一応Web系の企業に勤めているのでJSも書けますよというアピール的な意味で、Invader BlockをHTML5に移植してみました。

・PCブラウザ専用(Chrome推奨)
・カーソルキーで左右に移動
・ブロック崩しの要領で敵を倒す
・メダルを取るとスコアの基点が上がる
・連続してインヴェーダーを倒すと獲得スコアに倍率が掛かる(最大16倍)
・メダルを一定数取ると味方からの援護射撃(レーザー)が来る
・このレーザーはリアルでハードコアなものなので、当たるとプレイヤーも撃破される 

ソースコードを(9leapからもDLできるようにしていますが)GitHubでも公開しています。
https://github.com/suzukiplan/invader-block-5

ターミナルで以下のような感じでコマンドを叩けばローカルで遊べます。
$ git clone https://github.com/suzukiplan/invader-block-5.git
$ cd invader-block-5
$ open local-index.html

※ローカルプレイの場合はリプレイ時はブラウザリロードしてください

今回は、ソースだけでなく、画像や音声(全部自作)もリベラル・ライセンス(CC4)になっていますので、alt Invader Block を誰でも作れるというかなり誰得仕様にしてきました。

ひとつ注意点として、Chrome以外のブラウザでの動作は不完全です。
・Firefox: 音が鳴らない(プレイはできる)
・Safari: 音が鳴らない(プレイはできる)
・IE: 音が鳴らない(プレイはできる)
Edge: プレイできない(ロード中に止まる)
・スマホ: プレイできない

HTML5の普及がイマイチな原因のひとつがブラウザ依存ですね。性能的な面ならPCブラウザで十分ゲームが作れるけど、結局特定のブラウザでしか完全に動かないのであれば、(ゲームデベロッパ脳で考えると)ネイティブで作った方が性能が良いからネイティブで作るという結論になる。(スマホのWebViewは重すぎるし)

プログラミング環境としては、JavaScriptならC言語とだいたい同じノリで作れるから結構良い感じかもしれません。ゲーム本体のコードは下記で公開していますが、Cプログラマな方にとっては結構とっつき易い感じではないでしょうか。
https://github.com/suzukiplan/invader-block-5/blob/master/game.js
JavaScriptは、データ型と宣言の概念さえあれば、もっと普及した言語だったかも(そこら辺がバグ作り込みリスクがかなり高い)。宣言については use strict で解消できるけど、データ型の件はどうにもならない(だからtype scriptがそこそこ流行っている)という感じか。

2016年3月5日土曜日

【更新】一部iOSアプリがiOS9.2で起動できない件について

久々にSUZUKI PLAN製アプリを(iPod touch 5で)動かしてみたら、起動時に落ちてしまう問題が発覚しました。確認してみたところ、以下のアプリで同件の現象が顕在化します。
・Battle Marine
・Lunatic Clay
・Canon Sniper
・NOKOGI Rider(製品版)
・Invader Block 3

最新のXCODEでリビルドするだけで動くようになったため、iOS側のアップデートで過去のバージョンとの互換性を失う何らかのデグレードがあったものと考えられます。

順次アップデートをしていきますが、最新のXCODEでビルドすると、動作できるiOSのバージョンが4.3以降から6.0以降に変わります。

[追記]
上記ですが、原因が分かりました。ストアからダウンロードせずにXCODEでビルドしたものを使っていて、プロビジョニング・プロファイルの期限が切れていたことが原因でした。という訳で、ストアからダウンロードして動かす分には問題無いことを確認したので、アップデートはしません。

2016年2月27日土曜日

無駄な手順は誰も踏みたがらない

先日、英雄伝説4の原曲集をiTunesで買ってから、ファルコムのFM音源アルバムをiTunesで色々と買い揃えてみました。いや、全部CDで持っているんですけどね。(CDを再生する機械が手元にないから仕方がない)
イース4と風の伝説ザナドゥは、パソコン(PC-98)ではなくPCエンジンが原作なので、原曲 = 波形メモリ音源 or CD-DAですが、PC-98のFM音源(YM2608)で作られた原曲の原曲版です。

98のFM音源で原曲を作ってから波形メモリ音源なり生楽器なりでアレンジしたものをゲームで使っていたようです。チップチューンの頃は、機種毎に音源仕様が全く異なるので、音楽を作る人が最も得意な環境で最初に作ってから、ターゲット機種向けにアレンジするということは割とよくあったのではないかと思います。

こういうのは最近無いですね。

世界樹の迷宮(任天堂DS)など、PC-8801のサンプリング音を使ってBGMを作ったFM音源原曲(?)の比較的新しいゲームとかならあったりしますが。去年YAMAHAがDX refaceという最新のFM音源をリリースしたりした(恐らく現代でもかなり戦力になる音源だと思う)ので、FM音源で作られたゲーム音楽は今後もチラホラ出てくるのではないだろうかと思っています。サンプリング音や生楽器よりも音的にゲームに向いていると思うので。

ただ、私の言う「こういうの」というのは、そういうことではなく、原曲の原案を敢えて8bit機、16bit機のチップチューン音源で作ってから、最新のサンプリング音源で曲を作り直すということ。一見すると無駄手間のように見えます...というか、無駄以外の何物でも無いかもしれません。

いや、もしかすると私が知らないだけで、作曲の最初期の段階では MSX + FB-01(※操作にMSXが必要なオーパーツ的なFM音源)で作り、それを基に最新の機材でアレンジしたものを最終納品物にしているプロが今でも居るのかもしれません。

それなら、原案版のサントラも出した方が売り上げ的な意味でも良いと思うのですが、そういうのが無いということは、やっぱりそういう人は居ないのだろうか。俄には信じ難いのですが。少なくとも私は一見すると無駄手間のように見えるその手順を踏まないと作れないので。

何故か?

うまく説明できないのですが、ノリとしてはこんな感じだろうか。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...