2012年9月16日日曜日

InvaderBlock2 version 2.08

長らく、アップデートをしていなかったInvaderBlock2を、久々にバージョンアップ(2.08)しました。
2.08では、ポーズ機能の実装や、非フルスクリーンモードの採用など、NOKOGI-Riderの基盤部分の仕様と合わせる形にする仕様変更をおこなっています。

私見では、NOKOGI-Riderよりも、InvaderBlock2の方が「スマホらしいゲーム」ではないかと思っています。たとえば、電車の待ち時間などの2~3分程度の暇つぶしをする場合なら、NOKOGI-Riderよりも、InvaderBlock2で遊ぶ率の方が高いです。新幹線で2時間移動する場合ならNOKOGI-Riderをやりますが。「スマホらしいゲーム」=「短時間でサクッと遊べるゲーム」というイメージ。

ちなみに、InvaderBlock2ですが、取引先の会社の課長さんに頼んで買ってもらったところ、息子さんが結構気に入ってくれたらしく、延々とやり続けていたようです。スコアランキングが埋まっていくのが楽しいとか。私も昔はそういうタイプ(スコア稼ぎゲーが好き)だったので、将来が楽しみです。

なお、Lite版はありません。
Lite版が無いから1本も売れないと思っていましたが、日本と米国のDLサイトでWindows版を無料で配る宣伝形態で宣伝してみたところ、10本弱の販売成果がありました。それでも、その半分程度は知り合いなどに買ってもらったものですが。(やはり、Androidでゲームを売るならLite版は必須です)

Android上での動作については、NOKOGI-Riderと全く同じエンジン(VGE)で作っているので、NOKOGI-Rider(Lite版を含む)が正常に動作する環境であれば、概ね正常に動作すると思います。


基本コンセプト

たぶん、SHOT04-NOKOGI Riderは、今日リリースした1.06で実質安定版になる筈。
1.06で安定してくれることを願いつつ、今回開発における基本コンセプトなどを書こうと思います。
私がAndroidのアプリ開発をやろうと思ったキッカケの源泉は、ピストンコラージュでお馴染みの開発室Pixelが新作(RockFish)をiPhone用に作っていると知ったことでした。RockFishの開発状況を綴った日記に、画面のスクリーンショットが載っていたのですが、画面の上半分がゲーム本編、下半分がコントローラという感じのもので、違和感(?)のような衝撃を受けたことが最初の印象です。

ちなみに、私は開発室Pixelの中の人(Amayaさん?)とは、全く面識が無いです。
ピスコラ関連の権利関係とバグ報告(再生中に閉じるとアプリケーションエラーになる問題のクラッシュダンプ解析結果から導きだした推測不良原因の報告)などで2回ぐらいやりとりをした程度の無面識な関係。

当時、スマホはおろかiPodTouchすら持っていなかった私は、「やはり、ボタンがないからこうなるのか?」などと思いつつ、時々更新される開発状況を観察して、「RockFishが完成したらiPodTouchを買ってやってみるか」などと思っていました。

しかし、開発は一向に進まず、幾度か「リリース延期のお知らせ」が発信されていました。

RockFishの開発状況を日記で観察する過程で、開発室PixelがiPhoneアプリの開発に乗り出したキッカケのようなことが書かれた記事を見つけました。その記事によると、ゲームを販売できる仕組みが整っていることがその動機のようです。その点については、はげしく同意です。

そこで、「これからの時代はiPhoneだね!」というノリで、Androidでスマホ市場に参入することを決意。iPhoneではなくAndroidを選択した理由は、単に私が天邪鬼な性格という理由だけではありません。
たぶん、iPhoneでやった方が売れると思います。Androidよりも市場がシッカリしているので。その反面、iPhoneだと粒の揃ったゲームが多いだろうから、無名の私の場合、Androidでやった方がウケが良い(目立つ)から有利だろう・・・と、考えました。私の場合、音楽とプログラムに関してはそこそこ自信(過信?)がありますが、絵に関しては下手なので、粒が揃ったゲーム群の中では、恐らく訴求力に欠けます。ゲームに関しては、見た目の悪さは致命的な欠陥です。仮に内容が面白くても、粒揃いのゲーム群の中では目立ちません。
しかし、Androidであれば、市場があまり整備されていないことに加え、多様な種類の端末に対応するための技術的負担が大きいから、ゲーム開発業者(個人を含む)の参入が少ないと思いました。なので、私のように見た目がマズイゲームでも、ゲームそのものの内容がシッカリしていればiPhoneよりは目立ちやすいかもしれないという、浅はかな考えで、iPhoneではなくAndroidを選択。(ついでに、私が個人的にスティーブ・ジョブズが好きではないというどうでも良い理由もあります。たぶん、私がスティーブ・ジョブズ健在の頃のAppleで働いたら、1週間でクビになる自信があります)

Androidでの開発を開始するに当たって、最初にLenovoのIdeaPadA1というAndroid2.3のタブレット端末を購入しました。そして、端末を購入してから最初にやったことは、MR(マーケティング調査)です。「実際に」どんなゲームがあり、どんなゲームが売れているかを知ることが重要です。

一番面白かったのは、Caveの怒首領蜂大復活というアーケード移植作。ただし、製品版は「未対応機種」ということで購入できなかったので、遊んだのはLite版のみです。それ以外では、Jewelや上海ライクなゲームなどのパズル系全般が面白かったです。

結構な数をプレイしてみたつもりですが、アクションゲーム(シューティングを含む)については、怒首領蜂以外のものは「操作に慣れれば面白いかもしれないけど、操作し難い」というものしか有りませんでした。更に「ソフトボタンで遊ぶタイプのゲーム」が多く、そういうゲームは操作性の悪さに拍車が掛かった印象でした。

作者コメントで、「外付けのコントローラでのプレイを推奨」というものもありましたが、それは論外だと思います。たとえば、「ドラクエ」と同レベル程度のネームバリューのあるゲームなら、「じゃぁ、コントローラを買ってプレイするか」という風になるかもしれません。しかし、仮にネームバリューがあるゲームだったとしても、スタイリッシュな携帯電話(というイメージ)のスマホ用のゲームを作る以上、本体のみでスタイリッシュに遊べるものじゃないとダメだという強い偏見が私にはあります。なので、「外付けハード推奨」は論外です。

実際に、スマホのゲームを触ってみた限りの印象から、RockFishの開発が遅延した原因の本質のようなものが見えてきました。先ほどの記事にも「できれば方向キーが欲しい」といったことが書いてありますが、操作性の悪さがその全てだろうと思います。アクションゲームは操作性が命なので。ただし、先述のように、私はAmayaさんとは全く面識が無いので、RockFishのことについては完全に私の想像です。実は、操作性の課題はクリア済みだけど、シナリオ作りとかシステム作りに膨大な時間を要していることが遅延の原因なのかもしれません。実際、洞窟物語も完成までに3年近くの歳月を要したようなので、遅筆なタイプなのは間違いないと思います。洞窟物語の成功を見る限り、ゲームを作る才能は群を抜いている筈なので、新作の完成は楽しみに待っていますが。

その点を踏まえた上で、「RockFishの開発が暗礁に乗り上げていた本質的な原因はそもそも何なのか?」とアリストテレスしてみると、「基本コンセプトの間違い」=「iPhone用に作るべきゲームではなかった」という解に行き着きました。(繰り返しですが、これはあくまでも私の想像です)

という訳で、私がAndroidでゲームを作る上での基本コンセプトは、
「ソフトボタン禁止!」
にしました。

このコンセプト+一定のゲーム開発スキルだけあれば、絶対に面白いゲームを作れる筈です。開発を始めてからは、「もしかすると、ソフトボタンがあるけど面白いゲームがあるかも」という雑念は一切考えません。どんなに良いアイディアが浮かんだとしても、それを実現するためにはソフトボタンが必要なものであれば全て却下しました。また、「ソフトボタンがあるけど面白いゲーム」が見つからないようにするため、開発開始以降、未知のゲームには手を出さないようにすることを徹底しました。

仮に、「ソフトボタンがあるけど面白いゲーム」が見つかったら、心が折れてしまいます。「心が折れる」というのは極めて重大です。ゲームを作る上で一番重要なことは、「自分のゲームは絶対に面白い」と信じぬくことです。単なる精神論(根性論?)かもしれませんが、私の経験上、その信念が崩れたとき、ゲーム開発は暗礁に乗り上げます。逆に、精神を上手くコントロールできれば、どんなにテスティングな作業でももの凄い勢いで進めることができ、技術的な要素なども鬼のような速さで習得することができます。(私の場合、絵の上手さの習得は適いませんでしたが)

若干、感じが悪いかもしれませんが、私は「儲ける」の「儲」という漢字が好きです。
「信じる者」と書いて「儲ける」です。私は、ゲーム開発をする時、「コイツを一発当てて大儲けだぜ!」ぐらいの欲望を持つようにしています。欲望が信念を支えてくれるので。しかし、欲望を達することが目的とならないように注意する必要がありますが。欲望を達することが目的となった瞬間から、魂が傷つき始めます。魂が傷つけば、魔法少女は魔女になるらしいで注意する必要があります。アニメか何かで見たことがあります。

まぁ、実際に儲かるかどうかは別問題だと思います。いくら自分が「面白いものができた!」と思っても、それが第三者に評価されるとは限らないので。私は、私が面白いと思うゲームしか作れないので、それが第三者にとって面白いかどうかについての考慮は、一切していません。「儲けたい」という欲望から、第三者の考慮を試みたつもりになることはありますが、最終的には自分本位に落ち着きます。ちなみに、 SHOT04-NOKOGI Riderをリリースしてから約3週間で20本ぐらいの売り上げがあったので、自分本位&STGというオブソリートなジャンルのゲームな割りに、結構売れたという印象です。

継続的に面白い新作を作り続ければ、実際に儲かるかもしれません。


2012年9月15日土曜日

NOKOGI Rider 1.06をリリース

朝から、ひたすらNOKOGI Riderのデバッグを繰り返し、ようやく、スコアがズレる問題を完全に解消できたと思うので、今しがたVersion1.06をリリースしました。たぶん、完璧に直ったハズ。

今回の対策には、だいぶ苦労しました。
最終的には、プレイ時にフレーム単位でスコアをログに記録し、リプレイを再生するときにフレーム単位で完全に一致するかチェックする→差異が生じたタイミングの推定処理部分から、バグを見つけ出す・・・といった方法で、ズレる原因を特定しながら調査→修正する方法で直しました。

なお、今回のリリースにともない、価格改定を実施しました。
日本では、150円→200円になります。
※私は消費税の支払い対象業者ではないので、価格は税抜き価格です
価格制定の方針については、こちらの記事をご参照ください。

今回の改訂根拠としては、150円の頃(Version1.05)にご購入いただいた方に、保存したリプレイデータが正常に再生できなくなる可能性があるご迷惑をお掛けしたことになるので、当時の価格をその点を考慮したディスカウント価格と考え、+50円upとしました。
NOKOGI Riderの妥当価格は300円ぐらいだと思っているので、今後も品質向上や売り上げ目標達成などを契機に段階的に引き上げる予定です。

ちなみに、一つ前の記事で英語でVersion1.06の修正情報を載せていますが、これは、海外からコメント付きで☆1個や☆2個の低評価とともに、不具合のご連絡をいただいたためです。

問題があったのだから、低い評価をされるのは仕方が無いですが、問題を直せば評価が修正されるのかが気になります。そういう問題に遭遇した場合、「もう知らん!」といってアンインストールしてしまい、再評価の機会(アップデート)を失うような気もするので。

☆1個の評価の方は「落ちる」といった内容なので、それでも仕方がありません。
しかし、☆2個の方は、ゲーム内容自体は褒めているのに、「フルスクリーンがイヤだ」という理由だけで、低評価をつけられました。コチラの方は、評価の修正を切に願います。「非フルスクリーンに対応したら買ってやる」とのことでしたが、私としては、別に買ってくれなくても良いから、評価だけでも修正して欲しいところ。1本買って貰うことより、1つの悪評が消えることの方が嬉しいので。(もちろん、高評価をつけていただけるともっと嬉しい)


Information of NOKOGI Rider 1.06

Suzuki Plan has released the NOKOGI Rider version 1.06.

[Product version]

Corrected following problems:
- force close error or process stops unexpectedly.
- touch position may be wrong, when you have selected the non fullscreen mode.
- results of replay may be different from when you played.
Note: The replay data of before Version 1.5 may not play normally. This reason has effected by first problem. I'm sorry...

[Lite version]

Corrected following problems:
- force close error or process stops unexpectedly.
- touch position may be wrong, when you have selected the non fullscreen mode.
- score has not ranked , when level-1 has cleared on Lite version.

Changed specification:
- The default setting of full SCREEN MODE has changed to OFF.

Dear Reviewers,
Thanks for reported of problems. I think the both problems of force-close and screen mode will be corrected in this version 1.06. But I don't know it's the same of reported problem... Please describe the comment and judgement again, if your detected problem has corrected.
Best Regards,
Y.Suzuki

落ちる問題

SHOT04-NOKOGI Riderのバグ修正で、リプレイ再生をした時、スコアがズレる問題を修正したものをチェック中・・・。

たぶん、直ったと思います。
今分かっている範囲では、本件は単一の問題ではなく、2つの複合的な問題に起因するものでした。

内、ひとつの問題がかなり致命的。
単純にリプレイがズレるだけでなく、場合によっては、プログラムが落ちるレベルの問題です。
リプレイは、製品版でしか記録できませんが、落ちる問題はLite版でも発生し得ます。

でも、「落ちた!」といった連絡は、1000件以上ダウンロードされているけど、まだ一回も無い・・・と、思っていたら、海外の方から、コメントに評価1とともに「落ちた」というレビューがありました。この問題と同件問題である可能性が結構高いです。できれば、どういう操作をした時に落ちたか分からないので、本当に同件かは定かではないです。

とりあえず、土曜日中には対策版(Version1.6)をリリースする予定です。
なお、この問題の影響でVersion1.5以前のリプレイデータが正常に再生できなくなる可能性があります。
一応、こういう自体を想定して、リリース初期段階の価格は安めに設定している訳ですが、だからといって、問題が無い方が良いに越したことはありません。

2012年9月14日金曜日

誰が得するのか・・・

iPhone5の画面幅のサイズが16対9になるらしいです。
iPhone4の頃は、1.5対1。(Androidでも標準が1.5対1になりつつあります)

割と思い切った仕様変更の割りに結構無意味な仕様変更かも。
一応、縦に長い文書やページを読む時は、縦に長い16対9の方が便利なので、16対9のAndroidがあっても不思議ではないです。しかし、アミューズメント分野専用機(だと思っている)iPhoneを16対9にする目的は何なのか?

中途半端なメリットしかないような気がします。
むしろ、「全機種で画面比が同じだから、アプリが作りやすい」というメリットの方が大きかった気がします。
それでも、画面比について定まった仕様が無いAndroidよりは幾分かマシですが。


2012年9月13日木曜日

NOKOGI Rider 1.06リリース予定

今のところ、NOKOGI RiderのVersion 1.05(以前)に以下の問題があることを把握しています。

(1) 非フルスクリーンモード時にタッチ位置がズレることがある問題の対策
(2) リプレイ再生したときのスコアがプレイ時と異なる場合がある問題の対策(※製品版限定)
(3) Lite版の「PLAY DATA」にプレイしたスコアがランキングされない問題の対策(※Lite版限定)

これらの内、(2)のスコアがズレる問題ですが、これは緊急度が高いと思っているので、寝る間を惜しんで調査中なのですが、ようやく、原因を特定できたかもしれません。ただ、もしかするとVersion1.05以前で記録したリプレイは完全に再生できず、Version1.06以降で記録したリプレイに限り、完全に再生できる形になるかも・・・大変申し訳ないです...

あと、(1)のタッチ位置がズレる問題ですが、解決方法が見つかったので、コチラはスッキリ対処できると思います。
コレの原因ですが、かなり馬鹿だったので、紹介しておきます。

Androidのアプリは、Activityというフレームワークの下で動作します。
そして、画像や図形などは、Activityに作ったViewという領域に描画します。
Version1.05以前は、Activityでタッチイベント(onTouchEvent)を拾い、タッチ状態や座標情報をゲーム本体(JNI)に渡していました。

フルスクリーンなら、これでも問題ありません。
しかし、非フルスクリーンの場合、この方法だと問題が起きます。
たいていのAndroid端末は、ステータスバー(電池残量や時計などを表示する領域)が画面上部に表示されますが、これによりゲーム画面(SurfaceView)の表示部分が、ステータスバーの高さ分だけ下にズレます。

Activityでタッチイベントを拾うと、純粋に画面全体の領域の座標を拾うので、ゲーム本体(JNI)に渡す座標情報から「ステータスバーの高さ分のサイズ」を減算する必要があります。
しかし、この「ステータスバーの高さ分のサイズ」を正確に拾う方法が(Android2.3では)無いので、Version1.5では、若干信頼性の低い方法でステータスバーの高さ情報を拾うようにしていました。このやり方だと、稀によくステータスバーの高さを間違えることがあり、この時、タッチ位置がズレる現象が起きます。

しかし、今日「Viewでもタッチイベントを拾えるんじゃないか?」と思い調べたところ、当然の如く、拾うことができました。onTouchEventをViewでオーバーライドしてあげれば、普通にViewでタッチイベントを拾うことができます。そして、このやり方ならステータスバーによるズレを意識しなくても良くなるので無事解決・・・という訳です。

修正版(Version1.6)は、早ければ今週の土曜日ぐらいにリリースすると思います。
あと、Version1.6のリリースと同時に第1回目の値上げをする予定です。
NOKOGI Riderの価格は、こちらの記事で書いたように、適正価格になるまで段階的に引き上げていきます。当然ながら、既にご購入いただいた方からの追加徴収などはありません。
あと、InvaderBlock2の方にも非フルスクリーンへの対応やポーズ機能の実装などを入れる予定です。


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

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