ラベル Android の投稿を表示しています。 すべての投稿を表示
ラベル Android の投稿を表示しています。 すべての投稿を表示

2014年3月9日日曜日

始まりはいつも、Invader Block

昨日(8-Mar-2014)、GameDaddy(Android)版Invader Block 3をリリースしました。
GooglePlayでダウンロード(無料)
iPhone版についても、近日中に公開予定です。

SUZUKI PLANのゲーム開発の歴史を振り返ってみると、
・大人になってからゲーム開発を再開した時 → Invader Block
・VGS(Android版)を作った時 → Invader Block 2
・GameDaddy(Android版)を作った今 → Invader Block 3
という具合に、始まりはいつも、Invader Blockです。

SUZUKI PLANの代表作といっても過言ではないでしょう。
SUZUKI PLANの一番人気は東方VGS売上げトップはNOKOGI Riderですが、Invader Blockには、人気でも売上げでも、これらを抜き去る潜在能力があると思っています。

難易度を調整

しかし、Invader Blockの評価はそれほどではありません。
そこで、GameDaddy版を作るに当たって、評価を阻害し得る要因を取り除くことにしました。

Invader Block 2をリリースしてから2年。
「爆発的なヒット」こそしませんでしたが、2年も経てば、結構色々な方々からご意見を頂く機会がありました。
ポジティブな意見としては、(本業の)取引先の会社の課長さんに半ば強引に買って貰ったのですが、その課長さんの息子さんが至極気に入ったみたいで、延々とゲームをプレイし続けていたようです。また、マレーシア辺りでは非常に反応が良く、ただ一言「Very good!」と書かれたメールを送って頂いたりしました。
Android版Invader Block 2(Free)の国別分布
(マレーシアが3位!)
ネガティブな意見としては、「難易度が高すぎる」という感じのものが多かった印象です。(私自身、サクッとプレイできるInvader Block 2ぐらいの難易度がほど良いと思っていますが)

以前、会社の同僚やそのご家族にプレイしていただき、その様子を観察したところ、どうも、アクションゲームが苦手な人は、ボールの軌道などを「先読みして行動」していない事に気付きました。例えば、ボールが一定の低さまで落ちて来るのを視認してから初めて回収行動に入ったりとか。それでは、反射神経or運に頼ってプレイすることになるため、自然とミス率が高くなり、「難しい」と感じてしまうのではないかと分析しました。(逆に、ゲームが上手い人は、先読みするポイントを適確に早く理解できるから、すぐに上手くなる)

Invader Block 3では、その辺りのことを考慮して、ゲーム性が無くならない程度に、難易度を引き下げるバランス調整を施しました。具体的には、玉の速度を遅くしたり、雷撃をしないようにしてみたりしています。これらの調整は、「Invader Block 2との差別化」という意味でも良い感じになったかも。

広告とモノクロ+インタレースの相性

Invader Block 3は、GameDaddyのゲーム第一弾ということで、GameDaddyの一番の特徴である、モノクロ+インタレースのグラフィックを全面的にプッシュしてみました。例えば、アイコンにもソレ(モノクロ+インタレース)がにじみ出てます。
Invader Block 3のアイコン
実は、このモノクロ+インタレースの描画には、単なる雰囲気的なものだけでなく、重要なポイントがあります。それは、「広告が浮く」ということです。
広告が「浮く」様子
インタレースの画像の上に、非インタレースの画像を載せると、後者が浮き立つ視覚効果があります。シューティングゲームなどではこの「浮き立つ」効果を利用して、背景BGはインタレース、プレイヤや空中の敵キャラ等のスプライトを非インタレースで描画するCG作成技術があります。(PC-98のBurning Dragon Plusというシューティングゲームで、その表現方法が採用されていました)

同じ理屈で、ゲーム画面(インタレース)の上に広告(非インタレース)を乗せれば、広告が浮き立ち目立つから、広告が単なる背景の一部として認識されてしまうことを防ぐことができます。(こうすることで多分、CTRが高くなります)

ただし、「浮いている」だけに、ゲームプレイ中に表示されていると視覚的に(かなり)邪魔な存在になってしまうから、広告を表示するのはタイトル画面のみで、また、誤タッチが発生しないようにするため、画面上部への表示にしています。(3.5インチのiPhoneだと、画面下部へ表示せざるを得ないですが)

私自身、少額ですが幾らか広告出稿の経験があるので、広告主サイドの視点から見て、Invader Block 3は、理想的な媒体になるようにしてみました。GoogleのAdMobチームあたりから、「理想的な広告掲載アプリの例」みたいな感じで取り上げて貰えたりしないかな?w

2012年9月23日日曜日

Burning Dragon Plus

懐かしい動画を発見しました。

上記動画のゲームは、BurningDragonPlusというPC-98用のSTGです。
恐らく、私が一番最初にハマッたSTG。(たしか、TAKERUで購入してやってました)
ずっと動画を探していたのですが、去年ぐらいにYouTubeにアップされてたようです。
涙が出そうなぐらい懐かしい。

やっぱり、今見ると若干ショボイ。
でも、80286クラスのPC-98だと、これでもかなり凄いですが。
まず、背景があるのが凄い。

東方(旧作)とかにも背景はありますが、スペックが大分違います。
たぶん、東方が出始めた頃は既に98末期の頃だった筈だから、EGCとかもガリガリ使っていたでしょうし。

拙作のNOKOGI-Riderは、少なからずこのゲームの影響を受けている筈。
ゲームの内容自体、ほぼ完全に忘れていましたが、何となく似ている部分がチラホラあります。
インプリンティングみたいなものです。

ちなみに、BurningDragonPlusの一般的な評価は、「雷電のパクリ」という感じのものが大半。
BurningDragonPlusが雷電の二次創作で、NOKOGI-RiderがBurningDragonPlusの二次創作だから、NOKOGI-Riderは雷電の三次創作ってことになるのかな?



Melonbooks DL

2012年9月22日土曜日

体験版=Lite版

メロンブックスの場合、製品版の販売ページで体験版をアップすることができるようです。
なので、NOKOGI-RiderのLite版を体験版としてアップする手続きを取りました。

これも一種の広報活動になるのかな?
前の記事で、「もう私から率先して広報活動はしない」といった気がしますが、気にしない方向で。
「もう私から率先して広報活動はしない」というのの意図は、広告を出したりとか、そういうレベルのマーケティングはやらないということ(のつもり)です。

そういえば、先週、CNET(Upload.com)にもNOKOGI-RiderのLite版をアップする手続きを取りましたが、レビュー予定日が9/21とのことでしたが、まだアップロードされず。今回、英語版のReadmeを英語が得意な知人に頼まず、独自にやったため、解読に時間が掛かっているのかも。

あと、Windows版の製品版については、売れない想定でしたが、売れてました。
完全にノーチェックだったので、かなりビックリです。
たぶん、Windows版が売れだすのは、Android版がヒットして、製品版販売数が1000本/月を超えだしたあたりの頃だろうという想定だったので。(そんなときは果たしてくるのだろうか・・・)

ちなみに、Android版の販売開始(8月末)~昨日(9/22)までの売り上げ本数は、累計21本。
概ね、Lite版10ダウンロードにつき1本売れるか売れないか・・・というところ。
売れている地域は、日本、アメリカ、イギリス、イタリアの4ヶ国のみ。
本数でいえば日本がトップですが、購入率で見るとイギリスがかなり高い。
そういえば、iPhone版の怒首領蜂(大復活)が、イギリスで何かの賞をとったという話しを聞いたことがあるような気がするので、イギリスには弾幕STG好きな方が多いのかも。


Melonbooks DL

2012年9月18日火曜日

SHOT04-NOKOGI Rider関連のこと

SHOT04-NOKOGI Riderに関する広報活動について、私がやるべきことは一通り終わったかもしれません。
プロモーション動画作成とか、他にも色々ありそうな気がしますが。

ちなみに、Windows版の使用許諾で記載していますが、プレイ動画の配信などはご自由にどうぞ。
アレンジ音楽の作成&公開(※商業活動を含む)なども、特に問題ありません。
ご自由にどうぞ・・・むしろ、やってください。
※もちろん、製品版本体を無断配布するのはダメです。(Lite版ならご自由に再配布してくれて良いですが)
※「アレンジはやってみたいけど楽譜が無いとデキナーイ」という方は、The Pxtone Collage Collectiveで探してください。

SHOT04-NOKOGI Riderの宣伝行為になる形にしてくれれば、私から感謝をすることはあっても、文句をいうことは多分無いと思います。(心配な場合はメールでご連絡ください)

ここから先、私自身が率先して対外的な広報活動をすることは無いと思います。
私がやれるだけのことはやったので、あとは、本当に面白ければ口コミなどだけで自動的に広がってくれる筈だし、つまらなければ自動的にフェードアウトしていくだけの筈なので。後者だったとすれば、動いたところで無駄骨です。

製作中は、さっさと完成させて楽になりたい思いで一杯でしたが、こうやって完成してしまうと中々寂しいものです。(もしかすると、まだバグがあって、まだまだ楽しませてくれる可能性も無きにしも非ずですが)

次回作の方向性はノープランです。(ノリで音楽を1曲作りましたが)
しばらく、放心する作業に忙しくなります。
今はすごく眠いです。パトラッ・・・


Melonbooks DL

2012年9月16日日曜日

Windowsの製品版(NOKOGI Rider)

SHOT04-NOKOGI-RiderのWindows版の製品版について、流通形態をどうするかウジウジと悩んでいましたが、メロンブックスDLでダウンロード販売する方向にしました。
http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000157766

当初、「同人ショップは、同人モノを売り出す場」なので、自分のソフトを売り出すのに抵抗がありました。
まず、私のゲームが何の同人なのかが分からなかったので。
「同人」ということは、この「何の」が無ければ成立しないものだと思っていました。
「シューティング」の同人?
「個人製作ゲーム」の同人?
そういう汎用的なカテゴリに対して同人が存在し得るのか?

・・・しかし、そもそも私は同人の定義を勘違いしていたようです。
パロディ(二次創作など)=同人というイメージでしたが、本来「同人」とは、漫画や小説といった汎用的なカテゴリに対して集う人々を指すらしいので、私のゲームは同人というカテゴリにあっても問題なさそうです。

現在、作品の登録申請中みたいです。
価格ですが、500円(税抜き)にしようか迷いましたが、1000円(税抜き)で。
本気で売る気があるなら、500円だと思います。
しかし、Windows版に関しては、幾らに設定しようが売れないと踏んでます。
それならば、ダンピング横行を防止するためにも、1000円が妥当かと思いました。

周りはパロディ主体の肌色率が高いものばかりなので、ガチガチの正統派STGを置いても、売れない筈です。
顧客のニーズに明らかに沿わないものなので。
しかし、逆に目立つから、宣伝効果はあるかもしれない・・・それだけが狙いです。


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月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の方にも非フルスクリーンへの対応やポーズ機能の実装などを入れる予定です。


2012年9月12日水曜日

また曲作りから

SHOT04-NOKOGI Riderの続編(SHOT05)で使う音楽を作曲をする作業を始めてみました。

とりあえず、1面の曲を作曲。
TwitSoundなる、音楽共有サイトにSHOT04のステルスマーケティングとともに投稿。
http://twitsound.jp/musics/tsXYSuMHv

だいたい、こうゆう音楽は1日掛からないぐらいの期間で作れます。
限界までやれば、1日2曲ぐらいのペースかも。
逆に1日以上の時間を掛けて作曲すると、前後の繋がりが「?」になってしまいます。
なので、勢いで作るのが重要。

ただ、作曲作業自体は1日で終わるのですが、VGS用のMMLに変換するのが大変。
作曲する作業には、ピストンコラージュを使っていますが、音符データをテキスト形式に変換する手段が無いので、ピアノロールを眺めながら、ひたすらMMLに書き直すという作業。

この曲は、土曜日の午前中に作曲したのですが、MML変換が終わったのが昨日ぐらい。
一応、普通のサラリーマン(残業は毎日だいたい2時間~程度)だから、掛かりきりではないですが。

このMMLへの変換作業ですが、単純作業という訳ではなく、細かいバランス調整をする作業も兼ねています。なので、今の仕様のままで良いかな・・・面倒くさいけど。
VGSのMMLコンパイラを作ったばかりの頃は、ピスコラから音符データをテキスト形式で取れるようにする為、ptcolのEventV5データ(内部データ)を一生懸命解析したりしていましたが、割と解析しにくかったので諦めました。


2012年9月11日火曜日

ソースコード検査

独立行政法人の情報処理推進機構(IPA)で、C言語用のソースコード検査ソフトを無償配布しているという情報を得たので、早速、試してみることにしました。

(本件に関するIPAのプレスリリース)
http://www.ipa.go.jp/about/press/20120508.html

Android用に販売中のSHOT04-NOKOGI RiderとInvaderBlock2の検査をしてみようかと。
これらのソフトは、Android用ですが、だいたい(9割9分ぐらいの割合で)C言語で作られています。
起動部分とか、Android特有の部分だけJavaで、残りは全部Cという感じ。
本当は、全部Cで作ることもできる仕組み(NativeActivity)もありますが、色々と不便だったので、Android特有部分については(仕方なく)Javaで書いておきました。

IPAが配布しているソースコード検査ソフトはLinux用のソフトウェアですが、VMWarePlayerで再生できるイメージ形式でも配布されていました。これなら、セットアップの手間が省けて簡単です。

しかし、無料ソフトということで結構制約が厳しい。
次のような制約があるようです。

① C 言語(ANSI C)で記述されたソースコード
② x86 アーキテクチャ向けに記述されたソースコード
③ 100ファイル以下で構成されるプログラムのソースコード
④ 構造体を使用していないソースコード
⑤ goto文を使用していないソースコード

もともと、iPhone(※Objective-C)への移植もソースコード修正をせずにできることを目指して設計した(要するに、C++言語も使わないようにしていた)ので、①は余裕でクリアです。あと、x86ではなくARM用ですが、中核部分はWindowsと完全にソースコード互換がある形にしたので、②も問題ありません。あと、ファイル数が多いと色々と面倒だから、③もクリアしています。

しかし、④の構造体がダメというのは、無理・・・
(Cですが)データ構造についてはオブジェクト指向で設計しているので、構造体だらけです。

あと、⑤のgotoも沢山使っています。
当然ながらスパゲッティではないですが、gotoを使うことで、異常系処理を簡潔に記述するのに役立つので、プロの開発現場でも普通に使います。むしろ、頑なにgotoを使わない人が作ったプログラムの方が、メモリリークとかのバグを作り込みやすい傾向があったりします。

情報系の大学や専門学校なんかでは、軽々しく「gotoはダメ!」みたいな教え方をしている所がありますが、それは正確ではありません。(正しくは、「gotoは構造化プログラミングを保った上で適切に使え!」です)

という訳で、残念ながら利用は断念します。

④と⑤がダメってことは、商用のプログラムでは、ほぼ使い物になりませんね。
こういうツールで商売している業者さんも居るので、そういう方面への配慮かな?
IPAのホームページでの紹介のノリも「学習用途!」みたいな感じですし。


2012年9月8日土曜日

初ツイート

2年近く使っていて、1度もツイートしたことが無かったツイッターで、初ツイート。


フォロアーは0人なので、宣伝効果は全く期待できませんが、念のため。

アプリの価格制定戦略

私は現在、Android用アプリケーション「SHOT04-NOKOGI Rider」を日本円で150円で売り出していますが、価格制定の戦略については、実はかなり悩ましいところでした。

SHOT04-NOKOGI Riderの販売形態は、完全な落としきり型です。
「アプリ内課金は一切なし」 & 「アプリ内広告も一切なし」の良心設定。
無料のLite版と同時に公開しています。(もちろん、Lite版も課金や広告は一切なし)
Lite版は、純粋に「製品版のお試し版」という位置づけにしました。

150円という価格は、たぶん、ダンピングすれすれの低めの価格じゃないかと思います。
専業の業者さんが、この価格&販売スタイルで売り出した場合、開発原価を回収するのは相当厳しいと思われるので。

ただし、価格については将来的には引き上げる予定です。
私の価格制定戦略としては、公開当初は「可能な限り低い価格制定」をしておき、順当に販売数が伸びていったら段階的に価格を引き上げていくというものです。ただし、値下げは絶対におこないません。

DL販売するソフトウェア商品の特性には、以下のものがあります。
①在庫コストが掛からない
②賞味期限による破棄が不要
③時間が経つ(アップデートを重ねる)ほど、品質が安定する

上記①&②の特性から、値下げを実施すべき根拠が消えます。
たまに、DL販売なのに「キャンペーン価格」とかいって値下げ販売をしている業者さんが居ます。
そういうことをやってしまうと、「通常価格」で購入してしまったお客様の気持ちはどうなるのか?
少なくとも、私がそういう業者さんから誤って通常価格で購入してしまった場合、その業者さんからは二度と商品を購入しません。商品が良くても信頼の無い業者のものは使う必要が無い(最悪、自分で作ればよい)ので。

つまり、値下げキャンペーンを実施すると、(一時的に売り上げは伸びるかもしれませんが)将来的にはジリ貧になる筈です。このことから、キャンペーン価格とかを実施することは、「自らの首を絞める行為」といえます。だから、DL販売のソフトウェアの場合、値下げキャンペーン等の実施は禁忌です。

また、上記③の特性から、販売初期の段階ではディスカウントすべきといえます。
やはり、リリース当初は品質が安定しないものなので。
もちろん、開発者である我々は、命を削って入念なデバッグをしています。それでも、「こんな機能が必要なのに無い!」とか「こんんあバグがある!」といった事故を100%防ぐことはできません。

上記の事情を勘案すると、妥当な価格制定戦略は、
(1)リリース当初は低めの価格設定をしておく
(2)価格は、時間の経過とともに段階的に値上げをしていく
(3)値下げは(キャンペーン等を含め)絶対に実施しない
という具合になります。
※ただし、ひとつの国家が壊滅するレベルのデフレーションが起きた場合を除きます。

という訳で、「SHOT04-NOKOGI Rider」の場合、「現在の販売価格が最安値」ということになります。
「値段」という観点で見れば、早い時期に買って頂いた方がお得です。
ちなみに、妥当価格は300円前後ではないかと思っています。(なので、初期価格は50%offの150円)


2012年9月7日金曜日

買うがよい

今日の昼ごろ、外人さんから、SHOT04-NOKOGI RiderのLite版に評価+コメントを貰ったのですが、ゲーム操作性などに関してはベタ褒めだった(と思う)のですが、「フルスクリーンモードでしか動かないのはけしからん!」という訳で、星2つの評価をいただきました。
ただ、「非フルスクリーンに対応したら買ってやる」とのことだったので、対応したものを先ほどリリース。
さぁ、買うがよい・・・。

まぁ、別に1本買ってもらうことだけが目的という訳ではないです。
確かに、フルスクリーンだと時計や電池残量を見れないから不便だとは思っていたので。
指摘としては建設的な内容だと思います。

あと、韓国の方から、ただ一言「難しい」というコメントと共に星3つ。
難易度については、リプレイの互換性のこともあるので、修正できません。
こればっかりは、次回作で何とかするしかない。
しかし、外交関係が冷え込んでいるこの時期だから、ハングルで感想を書かれるとかなりヒヤリとします。

2012年9月5日水曜日

広告出資 - update4

2012年9月5日

8/26から売り出したSHOT04-NOKOGI Riderの製品版ですが、ここ数日、着実に販売数が伸びています。
想定していたよりも買ってくれる人が多いみたい。
ただし、Lite版のダウンロード数の伸びが悪い・・・。
たぶん、Androidユーザをターゲットにした広報をやらなきゃダメかな。。。

という訳で、Lite版を広告出資してみることにしました。
とりあえず、50ドルの予算で入札価格3セントというかなりみみっちい投資で。
アフィリエイト広告というのに広告効果が本当にあるのか、眉唾物なので。
私自身、興味をもってアフィリエイト広告をクリックしたことが一度もありません。
クリックするつもりは無かったのに、サイトの広告配置が悪い所為で間違えてクリックしてしまったことならありますが。
という訳で、とりあえず様子見です

まだ、宣伝は承認されてません。
入札価格が低すぎると承認され難いらしいのですが、入札価格の相場が全然分かりません。
未だ嘗て、アフィリエイト関連のことには一切関わったことがないので、完全に未知の領域です。
これで1日放置してみて、承認されないようなら少しづつ入札価格を引き上げていき、最低ラインを探る方向で。

とりあえず、販売対象国は製品版が売れた実績のある英国、米国、日本。
対象プラットフォームはAndroid2.3限定。
あと、「その他」に分類されていないモバイル通信事業者限定で。

広告を載せる端末の詳細な分類ができるのは良いですね。
さて、どうなるものか。。。

2012年9月8日

広告配信を開始した結果が出てきました。
入札価格は3セントで問題無さそうです。
クリック率(クリック数÷表示数×100)はだいたい、0.9%ぐらい。
そして、平均クリックコスト(CPC)は2セント。

広告配信初日のクリック数は、1日あたりだいたい800回(コスト=16ドルぐらい)。
当日、Lite版がインストールされた数は、16件前後。
広告を打たない時のインストール数は、だいたい3~5件前後。
なので、広告効果によるLite版のインストール数は、12件ぐらい。

つまり、広告をクリックした人の1.5%ぐらいの人がインストールしてくれた計算になります。
有料アプリならともかく、無料アプリにしては低すぎる気がしますが。
CPC(Cost Per Click) = 0.02$ぐらい
CPI(Cost Per Install) = 1.33$ぐらい
※私がCPIと呼んでいるのは、一般用語(Cost Per Inquiry)ではありません。(独自の造語とうことで)

CPIが高すぎです。
CPCが2セントであれば、CPIの妥当価格は(高くても)50セント前後と読んでいたので。
まぁ、宣伝する側はCPCは気にするけど、CPIなんか気にしないでしょうねぇ・・・。
(それを気にしなければ、出資者離れによりアフィリエイト業界は衰退していく訳ですが)

ちなみに、Lite版をインストールしてくれた方の3人に2人が製品版を買ってくれれば、コストを回収できます。もっとも、今の製品版の販売価格(日本円で150円)は、今のところ戦略価格のため、かなり安めに設定しているので、Lite版→製品版へのフローは気にしない方向で。(製品版の販売価格の設定戦略については、別の記事で書きました)

とりあえず、現状ではアフィリエイト広告を出資する価値は無さそうです。
もうちょっと、妥当なターゲットに配信先を絞れる仕組みが必要かもしれません。
AdMobは、他の広告媒体よりもその辺がよくできていると思いますが、それでもこの状況です。

まぁ、もう暫く様子見をしておきます。
とりあえず、もう50$追加出資してみました。(計100$)
この100$を溶かしきった状態でCPIに改善が無かったら、今後アフィリエイト広告には一切出資しない方向で。

例えば、同じ広告を同一端末でクリック(多重クリック)した場合、同一端末によるクリックには多重のコストが発生しないような仕組みが最低限必要な気がします。

同一端末によるクリックには多重のコストが発生しないような仕組み」というのは、技術的には然して難しいことではありません。これをやらない理由は、「それだと業者がやっていけない」というのが背景にあるのではないかと思います。勿論、業者の表向きの言い分としては、「規約で違反が起こらないようにガードしている」とかでしょうけど。

実は、アフィリエイト広告には、成果報酬型のスタイルのものも幾つかあるようです。
しかし、それらは全般的に成果数に対応した広告費の他、成果数に関係なく支払う固定費のようなものを設定しているところしか見当たりません。それでも、損益分岐点が明確になるので、一定の収益能力がある商品であれば、この成果報酬型を選択するのがベストです。

しかし、個人が気軽に出資することができません。
やはり、個人は「多少の違反が起こる可能性」を受容しつつ、クリック単価型の広告を利用せざるを得ません・・・そう考えると、ある意味、現状のクリック単価型のアフィリエイト広告にもそれなりの存在意義はあるのかも。(でも、コストが高すぎるから、もうやりません)

2012年9月9日

AdMobでAndroidアプリを宣伝する場合、CPI(Cost/Install)をチェックできるようでした。
ツール→アプリコンバージョントラッキングで確認できます。
ちなみに、昨日の記事で書いたCPIは、手動+推測で求めたものでしたが、正確でした。
ただし、CPIについては、時間の経過とともに上昇していきます。

無料アプリの宣伝で、100$支払ってもインストールして貰える数はせいぜい30~50ぐらいかと。
結論としては、無料アプリで1インストールあたり5$ぐらい有料アプリなら1インストールあたり30$ぐらいの収益が得られるアプリじゃないとお話しになりません。(もちろん、私のアプリが単にデキが悪かったのかも・・・と一瞬思いましたが、インストールしてみないとデキの良し悪しなんて分からないですよね?)

私の最初の直感(アフィリエイトをクリックしようと思ったことは無い)が一番正しいのかも。
たぶん、今後は個人が出資できるレベルのアフィリエイトはどんどん無くなり、成果報酬型だけが生き残る(ただし、ジリ貧)という感じになるのではないかと予測しています。

これから、アフィリエイト広告に出資しようと思っている方はご注意ください。
少なくとも、私は、残りの出資残高を溶かし次第、金輪際アフィリエイト広告には出資しない方向で。
別のマーケティング方法(※ステマなどの信義誠実の原則に反するものを除く)を考えたいと思います。


2012年9月12日

まだ、完全な結果は出ていませんが、今のところ、
・クリック数 3,142回
・総コスト 62.45$
・インストール数 56回
・CPI 1.12$
という状況。

CPIが2$を超えていた時期もありましたが、大分落ち着いてきたようです。
当初の想定上限CPI(50セント/インストール)は軽く超えていますが。
載せるパブリッシャーの種類によって、成果にかなりムラがあるのかもしれません。

入札価格はあまり関係無さそうです。
①土曜日に、上限価格を引き上げて入札価格を3セントに据え置く
②日曜日に入札価格を5セントに引き上げる
という実験を試みたのですが、その結果インストール数は、土曜日の方が多いという感じ。

入札価格よりも、時間帯の方が影響が大きいかもしれません。
土曜日は、
①午前中までは上限投資額を10$に設定
②午後に引き上げを実施
という感じで設定したのに対して、日曜日は土曜日からそのまま据え置きでした。
つまり、入札が発生する時間帯を避ける形になったのかもしれません。
そうなると、一番まずいのはデフォルト設定で放置ですかね。
確証は持てませんが。

基本的にはもうやらないつもりですが、気が向いたらやるかも。
ただし、やるにしても最低数ヶ月程度はブランクを空けると思います。


2012年9月2日日曜日

配送通知を送信?

SHOT04 - NOKOGI Riderですが、無事売れ始めました。
B国とA国でも売れていたので、なんとか私のつたない英語でも通じたようです。

謎なのが、GoogleCheckOutの受注結果の画面。
海外の場合「配送通知を送信」という謎のボタンが出ていて、配送のところに「未発送」となっています。
「なんじゃこりゃ?」と思って調べましたが、特に何もしなくて良さそうな感じ。
日本国内で売れた分では表示されないので、たぶん、為替関連の何かだと思いますが。

ちなみに、日本と海外の売り上げ比率は2:3ぐらい。
海外の方を安く設定した訳ではありません。価格はむしろ、海外の方が割高に設定しました。
具体的には、8/26の為替レートで、日本円で150円(国内販売価格)以上の切りの良い数字です。
(B国=1ポンド20ペンス、A国=2ドルで設定)

やはり、海外の人の方がダウンロード販売に抵抗が無いのかも。
もっとも、現時点で売れた本数が少ないから、結論付けるには早すぎますが。

2012年8月29日水曜日

波形メモリ音源(VGS)

拙作「SHOT04 - NOKOGI Rider」で採用している波形メモリ音源VGSについて、解説します。
まず、VGSという音源は、物理的には実在しません。
私の脳内で設計し、それをソフトウェア・エミュレーションする方式で、「SHOT04 - NOKOGI Rider」に搭載しました。

基本スペック:
・周波数: 22050Hz固定
・ビットレート: 16bit固定
・チャネル: モノラル固定
・同時発音: 6声
・音色数: 4(三角波、ノコギリ波、矩形波、ノイズ)
・声部別エンベロープ
・ピッチダウン(※ピッチアップは不要だったので未実装)
・声部別ボリューム
・マスターボリューム
・自動マスターボリューム制御(主にフェードアウト用途)

ちなみに、分解率=周波数という方式を採用。つまり、22050fpsです。
厳密には、処理周期は100ms間隔(10fps)ですが、オペレーションは22050fpsのフレーム間隔で出せます。
つまり、音の長さの最小は、だいたい45μ秒(1μ秒=100万分の1秒)程度の間隔になります。
テンポ120の場合、32768分音符がだいたい61μ秒になるので、「テンポ120の65536分音符よりちょっと長く、32768分音符よりちょっと短い」という感じです。

・・・少し分かり難いですね。
もう少し分かり易く例えるなら、報道によると東京証券取引所では、次期売買システムの取引性能を「1件あたり1ms以下にする(1秒間に1000件以上の取引ができるようにする)」らしいですが、そのシステムで「1回の取引をしている間に22回ぐらい音符を鳴らすことができる」という感じです。

一見すると誰得機能ですが、かなり重要な機能です。東証の方は誰が得するのか理解に苦しみますが。
この分解性能の粒度によって、音楽の表現性能が劇的に変わります。
この辺りのことは、音源本体(ハードウェア=エミュレータ)ではなく音源ドライバの役回りですが。

もちろん、音源ドライバも自作しました。
音源ドライバ仕様は、固定長のオペレーションで発音指示や待機指示をしたりする感じです。
昔のアーケードゲームとかだと、Z80で組むのが一般的。

VGSの場合、「何処からがハード仕様で、何処からがドライバ仕様なのか」がかなり曖昧ですが。
一応、一般的な区分は、「オペレーションを送るプログラム」がドライバで、「オペレーションを処理する部分(プログラム)」がハードウェア(エミュレータ)という風になります。
VGSの場合、ハードも論理的な存在だから、境界線が曖昧になります。
全てが論理的であれば、境界線の存在自体、ナンセンスだったりします。

そして、オペレーションの集まりが曲データになります。
ただ、オペレーションをずらずら並べて曲データを作るのが面倒なので、独自のMMLコンパイラ(MMLで書いたものをオペレーション集合に変換するプログラム)も作りました。

例えば、「SHOT04 - NOKOGI Rider」の「STAGE 1」のMMLは以下のような感じ。
$Brass \s600 \e22050 @1 %80
$Harp \s1000 \e1500 @0 %50
$Bass \s10   \e200 @2 %50
$Sq \s600 \e22050 @2 %75
$Sq2 \s6000 \e22050 @1 %80
$Hue \s5000 \e22050 @2 %80
$Osi \s22050 \e10000 @2 %80
$Ou \s500 \e5000 @1 %50

$B  \s10 \e1000 p-128 @0 %10 v35 o3
$S  \s1  \e1000 p-128 @3 %20 v20 o4

#-----------------------------------------------------------------------------
# Bass
#-----------------------------------------------------------------------------

Ch0 t172 m8 v12 (Bass) o3l16 |
Ch0 d8ddd8ddd8ddd8dd c8ccc8ccc8ccc8cc < b-8b-b-b-8b-b-b-8b-b-b-8b-b- a8aaa8aa aa>a<a>g<a>f<a
Ch0 l8 gggg gggg dddd dde-f gggg gggg ggrg16g16 gggg
Ch0 gggg gggg ff>f<f ff>f<f gg>g<g g16g16g>g<g g16g16g>g<g l16 <ffggaab-b-
Ch0 > crcccrcccrcccrcc drdddrdddrdddrdd grgggrgggrgggrgg frfffrfffrfffrff
Ch0 crcccrcccrcccrcc grgggrgggrgggrgg <g4.a4.b-4^2 l8 gg>g<g
Ch0 > l16 c8c4ccc8c8>c8<cc < g8g4ggg8g8>g8<gg f8f4fff8f8>f8<f8 > d8d8>d8<ddd8d8>d8<dd
Ch0 c8cc>c8<ccc8cc>c8<cc d8dd>d8<dd dd>d<d>c<db-d grgggrgggrgggrgg d8d4ddd4f+4
Ch0 l8 > dd>d<d4d>d<d < gg>g<g4g>g<g > cc>c<c4c>c<c dd>d<dcc>c<c
Ch0 dd4d16d16dd>d<d cc>c<c cc>c<c < aa>a<a4a>a<a aa>a<a4 a>a<a
Ch0 l8 > dd>d<d4d>d<d < gg>g<g4g>g<g > cc>c<c4c>c<c dd>d<dcc>c<c
Ch0 dd>d<d4d>d<d < aa>a<a4a>a<a > dd>d<d4d>d<d dd>d<d4ddd

#-----------------------------------------------------------------------------
# Melody
#-----------------------------------------------------------------------------

$Me1 r1r1r1r1 d2rdc<b- a2f4a4 g1^2r2 > d2rdc<b- >c2<a4>f4 d1^2r2
$Me2 e-2re-fg f2d4f4 g2rgab- a2g4f4 g2>c2< b-4a4g4a4 b-4.>c4.d4^2.r4
$Me3 (Sq) < e-2re-dc d2<b-2> c2rc<b-a g4b->d8^2 e-2re-fg f2d2 b-2rb-ag f+4a>c4.d4
$Me4 < a4gf8^2 b-4ag8^2 e4fg4efg a4.g16f16g4e4 d2ref4 g2rg>c4< a1^2.r4
$Me5 a4gf8^2 b-4ag8^2 e4fg4efg a4.g16f16g4e4 d2rdefec4<a4.>e4 d2.^16 l32 ef ga b->c d1

Ch1 v13 (Brass) \s3000 o5l8  (Me1)(Me2)  (Me3) (Brass) v-- (Me4)(Me5) v++
Ch2 v12 (Brass) \s6000 o4l8 <(Me1)(Me2)> (Me3) (Hue) > v- (Me4)(Me5)< v+

#-----------------------------------------------------------------------------
# Side-A
#-----------------------------------------------------------------------------
Ch3 v10(Ou)o4l16
Ch3 a>dfa<  v- a>dfa<  v- a>dfa<  v- a>dfa<  v+++
Ch3 g>ce-g< v- g>ce-g< v- g>ce-g< v- g>ce-g< v+++
Ch3 fb->df< v- fb->df< v- fb->df< v- fb->df< v+++
Ch3 < fa>cf v- a>cfa v- fc<af v- c<afc v+++

Ch3  grgr8.gggrgr8.gr
Ch3   drdr8.dddrdr8.dr
Ch3 (Sq) \s1000 > g4.fe-d2 <  @1 b-2g4b-4
Ch3 @2l8 b-2rb->cd f2rfa>c
Ch3 @1l16 \s50 g>d<db-<b->g<g>d<db-<b->g<g>d<db- \s1000
Ch3 @2g4.fga4b-4
Ch3 l2>ce-d<ab->dc1 <<g>cdg b-4.>c4.d4^2.r4
Ch3 (Ou)l8 e->e-ce-<g>e-ce- < d>d<b->d<g>d<b->d< c>c<a>c<f>c<a>c< gb->dg<gb->dg
Ch3 l16 c>c<g>c<e->c<g>c< c>c<g>c<e->c<g>c<
Ch3 < a>afadafa<a>afadafa<
Ch3 b->b-gb-db-gb-< b->b-gb-db-gb-<
Ch3 < df+a>c df+a>c df+a>c df+a>c

#-----------------------------------------------------------------------------
# Side-B
#-----------------------------------------------------------------------------
Ch4 v12\s100\e1000@2%65o5l1 # dc<b-a


Ch4 l32 v2  d>d< v+ d>d< v+ d>d< v+ d>d< d>d< v+ d>d< v+ d>d< v+ d>d< v+ d>d< v- d>d< v- d>d< v- d>d< d>d< v- d>d< v- d>d< v- d>d<
Ch4 l32 v2  c>c< v+ c>c< v+ c>c< v+ c>c< c>c< v+ c>c< v+ c>c< v+ c>c< v+ c>c< v- c>c< v- c>c< v- c>c< c>c< v- c>c< v- c>c< v- c>c<
Ch4 l32 v2< b->b-< v+ b->b-< v+ b->b-< v+ b->b-< b->b-< v+ b->b-< v+ b->b-< v+ b->b-< v+ b->b-< v- b->b-< v- b->b-< v- b->b-< b->b-< v- b->b-< v- b->b-< v- b->b-<
Ch4 l32 v2  a>a< v+ a>a< v+ a>a< v+ a>a< a>a< v+ a>a< v+ a>a< v+ a>a< v+ a>a< v- a>a< v- a>a< v- a>a< a>a< v- a>a< v- a>a< v- a>a<

Ch4 v9(Sq)l8 \s4000 v9 b-2rb-ag f2rfdf g1 d4.e-16f16g4b-4
Ch4 g2rgab- >c2.f4d1^2r2 l16
Ch4 \s1000 c<b->c4r8c2
Ch4 <a4.b->cd4f4
Ch4 g4.fe-d4<b-4 f2r2
Ch4 < g2>c2d2g2 >d2.^16l32 e-fgab->c d1 l8
Ch4 < v-- r32 e-2re-dc d2<b-2> c2rc<b-a g4b->d8^2 e-2re-fg f2d2 b-2rb-ag f+4a>c4.d8.^32 v++

#-----------------------------------------------------------------------------
# Side-A+B(C part)
#-----------------------------------------------------------------------------
$SI1 l8(Ou) dfa>d< dfa>d< dgb->d< dgb->d< ceg>c< ceg>c< <a>dfagec<g a>afadafa c>c<g>c<e>c<g>c< dfa>d< dfa>d< dfa>d< dfa>d<
$SI2        dfa>d< dfa>d< dgb->d< dgb->d< ceg>c< ceg>c< <a>dfagec<g d>d<a>d<f>d<a>d< c>c<a>c<e>c<a>c< dfa>d<dfa>d< dfa>dfa>d

Ch3 o4    v++ (SI1) (SI2) f8 v--
Ch4 o4    r16 (SI1) (SI2) f16

#-----------------------------------------------------------------------------
# Drums
#-----------------------------------------------------------------------------
Ch5 l4 (B) cccc cccc cccc ccc8 (S)c8c8c16c16
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c8c8
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)cccc
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c8c8
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c8 (S)ff (B) c8 (S)e-e- (B) c8 (S)d-d- (B) c8 (S)<bb>

Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c8c8
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)cccc
Ch5 (B) c2c2 (S)c8(B)c8c8 (S)c8(B)c8c8 (S)c8(B)c8
Ch5 (S) f4.d4.<b-4> (B)r2c8(S)c8c8cc

Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c8c8
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)c4
Ch5 l16 (B) c4 (S)c8.(B)c c8cc (S)cccc

Ch5 l8 (B)c(S)c(B)c(S)c(B)c(S)c(B)c(S)c
Ch5 l8 (B)c(S)c16c16(B)c(S)c(B)c(S)c16c16(B)c(S)c
Ch5 l8 (B)c(S)c(B)c(S)c(B)c(S)c(B)c(S)c
Ch5 l16 (B)c8(S)c8c8cc cccc cccc

Ch5 l8(B) cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)cc
Ch5 l8(B) cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4(S)ccc
Ch5 l8(B) cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)cc
Ch5 l8(B) cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c4c(S)c(B)c cc(S)c(B)c (S)cccc16c16
特殊な命令は、主にエンベロープ関連の以下3つぐらいで、あとは標準的な仕様だと思います。
・「\s」スタート・エンベロープ(音を鳴らし始めてからMAX音量になるまでの時間)
・「\e」エンド・エンベロープ(音を止めてから音量0に減るまでの時間)
・「%」キーオフ・タイミング(%50で4分音符を鳴らせば、8分のタイミングでキーオフ指令を出して、そこからエンド・エンベロープによる減衰が始まります)

音色数は少ないのですが、エンベロープさえ弄れれば表現の幅は無限大です。
だから、音色数はもっとも基本的な三角波、ノコギリ波、矩形波(+ノイズ)だけでも、割と困りません。
フレキシブルな波形変化については、波形メモリ音源やPSG音源の単音では不可能な部分(FM音源じゃないとできない特徴)ですが。一応、複数チャネルを使って音を重ねれば、多少の変化は得られます。

ただし、あまり重ねすぎると汚くなりますが。
絵の具と同じです。
だから、同時発生数を敢えて6声に制限しました。
6声ぐらいが一番キレイ。


2012年8月27日月曜日

体験版によるマーケティング成果

先日、めでたくSHOT04 - NOKOGI Riderの製品版をリリースできた訳ですが、今回は、開発途中(1面完成時)に即座にソレを体験版(Trial版)として無償公開して、ユーザーさんの反応を伺いながら製品開発をする・・・というスタイルで開発を進めてきました。

こういうスタイルで開発をした理由は、開発と同時にマーケティング(広報)活動をするため。
広報は苦手ですが、やらないことには製品版を売ることができません。

なお、今回の体験版公開→製品版リリースまでのタイムラインは概ね以下のような感じです。
(1) 5月初頭に体験版初期バージョン(Ver0.01)をリリース
(2) 5月中旬にユーザーからの要望対応で体験版のバージョンアップ(Ver0.02)
(3) 8月25日に製品版リリースと同時に体験版をLite版相当にバージョンアップ(Ver1.04)

体験版の有効なインストール端末数の遷移は以下のようになりました。

・オレンジ色の線 = Ver0.01
・緑色の線 = Ver0.02
・青色の点 = Ver1.04(Lite版)

体験版に関して、その他に実施した広報活動といえば、「開発状況をブログに書き続ける」ぐらい。
それでも、結構な数をインストールしてもらうことができました。(約4ヶ月の累計DL数は980件ぐらい)
ただ、公開から一ヶ月ちょっと経過後から、右肩下がりになり始めてしまいましたが。

でも、製品版の公開初日まで、200端末程度、インストールしてくれていた方々が居て、そこから一気に60件ぐらい(=有効インストール端末数の3割りぐらい)、Lite版をDLしていただけました。

この60件の中から、何件製品版の購入まで進んで貰えるかが、一番重要な点です。
あと、この60件(今週中にはもうちょっと増えると思います)の中から想定率を超える売り上げがあれば、例えば広告に出したりなど、お金をかけて本格的な広報活動をすればそれなりの対価が得られると判断できますし、想定率を下回っていたら「お金をかけて広報活動をしても無駄」と判断できます。つまり、ちゃんと売れるかどうかを見極めるのに十分程度の試金石を得ることが出来たことが、この広報活動の最大の成果です。

有効インストール端末数が200/1000(約20%)という状況から、既に悲観ムードですが...orz
InvaderBlock2の時のように、Windows版から流れて買ってくれる方については、期待しています。
Windows版(Lite版)は、今週中頃にはVectorから配布開始されると思います。

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

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