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

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$に設定
②午後に引き上げを実施
という感じで設定したのに対して、日曜日は土曜日からそのまま据え置きでした。
つまり、入札が発生する時間帯を避ける形になったのかもしれません。
そうなると、一番まずいのはデフォルト設定で放置ですかね。
確証は持てませんが。

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


誘導について

先日公開したSHOT04ですが、そのLite版(無料)では、1面のボスを倒すと、「フルバージョンを買ってね!」という趣旨の宣伝メッセージを表示する仕様にしています。

よく、フルバージョン(製品版)の購入先へのリンクボタンを張って、それを押せばブラウザやGooglePlayが起動される感じのアプリがあったりします。ですが、SHOT04の場合、そういうのは一切表示しない仕様にしています。

これは、私のセキュリティーポリシー上の事情によるものです。
セキュリティーポリシーといっても、単なる自分ルールですが。

私が公開するゲームアプリのセキュリティーポリシーでは、「一切の通信行為や個人情報の抜き出しをできないようにするため、パーミッション要求を基本的にしない(ただし、スコアを保存したりするために必要な、ストレージパーミッションは例外的に割り当てる)」という方針になっています。

しかし、「パーミッションが最小なら必ずしも安全か?」と言われると、必ずしもYesではありません。
Androidには、インテントという仕組みを使うことで、アプリから別のアプリを起動する仕組みがあります。
そして、この仕組みを使って、ブラウザ経由で情報を抜き出したりすることは、不可能ではありません。
詳しくは、以下の記事を参照してください。(※英語です)
http://leviathansecurity.com/blog/archives/17-Zero-Permission-Android-Applications.html

なので、私が配布するアプリでは、インテント機能も使用しないようにしています。
そのため、購入ページへ誘導するリンクボタンを作ることができません。

「個人製作のアプリで、そこまで厳密なルールは居るのか?」
という疑問を持たれる方も居るかもしれません。

しかし、私は個人販売の場合、『法人以上に信用が要求される』と思っています。
法人を作るのは、昔と比べれば恐ろしく簡単ですが、それでもそれなりに大変です。
なので、法人というだけで、それなりの社会的信頼を得ることができます。
それに対して、自然人というのは権利能力が強すぎるので、信用を得るのは法人以上に大変です。

そこで、結構ガチガチなセキュリティーポリシーを定めて、それを遵守するようにしている訳です。
たぶん、外部のセキュリティの専門家にコードレベルの監査がされたとしても「このアプリは完全に安全です」と烙印を押していただける程度の水準だと思います。でも、外部監査法人などに依頼する予算なんて当然無いから、「所詮は自分ルールなんだろ?」と言われれば、それまでですが。

でも、購入誘導のボタンを設置するぐらいなら良いような気がしていますが。
目的がハッキリしていますし。
ただ、購入誘導を設置したところで、効果はあまり変わらないと思っていたりします。
本当に「欲しい!」と思った人なら、そんな誘導が無くても能動的に探してくれると思うので。

むしろ、購入を促すメッセージを、日本語環境なら日本語で表示する(ローカライズする)方が重要かも。
現状、購入を促すメッセージは英語のみで表示するようにしています。
英語のみにしているのは、プログラムはロケール・ニュートラルで作るのが好きだというが理由。

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から配布開始されると思います。

SHOT04 - 曲の解説

SHOT04 - NOKOGI Riderで使っている曲の解説などを少々入れておきます。
SHOT04 - NOKOGI Riderとは、昨日公開したAndroid用のゲームです。(コチラを参照)
以下、順不同で。

Stage 2

ピストンコラージュ(ピスコラ)を手に入れて最初に作った曲です。
洞窟物語をちょうどクリア後にピスコラの存在を知り、そして作った曲なのでダンジョン風に。
形式は、オーソドックスな3部構成。
Intro -> Aパート -> Bパート -> Cパート -> Intro(loop)
Cパートのフレーズが結構気に入ったので、それを他の楽曲でも色々使ってます。

ピスコラの曲投稿サイトに、この曲の原曲(ピスコラ版)を投稿したところ、「80年代の戦隊ヒーローモノみたい」という感想を頂いたのがキッカケで、SHOT04のタイトルを「戦隊ヒーローモノっぽく」という訳で、「NOKOGI Rider」にしました。

なので、実質、Stage 2の音楽が、SHOT04のメインテーマになります。
Stage 2の音楽は、無料のライト版でも「CONFIGURATION」→「MUSIC ROOM」で聴けるので、Androidをお持ちの方は是非、聴いてみてください。(確かに、戦隊ヒーローモノっぽい曲です。私としてはダンジョンのBGMとして作った曲でしたが)

Boss 1

ARPGのボス風の曲が欲しくて作った曲。
ボスの曲で真っ先に思い浮かんだのが英雄伝説Ⅱ(Falcom)のストッパー。
イントロがどことなくそんな感じに聞こえなくも無いです。
形式は、2部構成。
間に音楽理論を色々と無視した即興フレーズを入れてるから3部構成っぽいですが。
Intro -> Aパート -> 即興(R.Organ) -> Bパート -> Aパート(loop)

私の曲の場合、構成の場合は基本的に2つに細分できる形式です。(AならA->A')
2つに細分できなパートは基本的に即興か間奏のどちらかです。(※一般論ではないです)
即興の主旋律でBパートと繋がる部分で、間違ってFのところをF#にしたのですが、即興という事でそのまま。
ただ、このF#が良い味を出している気がしないでもないです。

Stage 1 - SHOT03 arrange

ARPGのお城ステージ的なところ意識して作った曲。
お城といえばソーサリアン(Falcom)の「消えた王様の杖」しかないので、Bパートにそのベースパタンを流用。
Intro -> Aパート -> 間奏(SHOT03の4面) -> Bパート -> Intro(loop)

この曲のAパートの対位法旋律がかなり上手く作れました。
理論を踏まずに作っているので、上手くできることはある意味奇跡です。
「適当に旋律を重ねてみたら上手くいった」という感じ。
殆ど手癖だけで作曲をしています。

Boss 2

Stage 2のアレンジです。
ARPG用に作った曲でした。
Boss 1だとちょっと強そうな感じだったので、もっと弱い感じのボスの曲が欲しくて作曲。
ちょうどこの頃、東方怪綺談の「the Grimoire of Alice」を耳コピーしていて、半音階移調で同じテーマひたすら鳴らし続ける作曲方法が面白そうだと思い、構成を拝借。
なので、1部構成です。
Aパート(A->A'->A''->A(loop))
the Grimoire of Alice」との構成上の違いは、間奏が無いところぐらい。
和声の変化パタンはだいたい同じ。
Boss 2を聞いて『これって「the Grimoire of Alice」のパクリじゃん』と気づけた人は鋭い。
これも一種の二次創作ということで、お願いします。

Stage 3

ARPG用に時計塔のようなステージの曲が欲しくて作曲した曲です。
FalcomのARPG全般で、時計塔が佳境というイメージが強い。
若干自由なソナタ形式っぽい形式。
A(提示) -> B(展開) → A2(再現) → C(終結) → A(loop)

Stage 5

ARPGのラストダンジョンにする予定だった曲です。
Stage 3と共通のモチーフ(ARPGのメインテーマ)を使ってます。
コチラもかなり自由なソナタ形式っぽい形式。
A(提示) -> B(展開) → A2(再現) → C(間奏) → B2(展開2) → D(終結:A+B展開) -> A(loop)

Boss 3

ARPGの強敵っぽいボスキャラ用の曲。
強いイメージの曲を作るのに有効なのは、コナミのドラキュラのような音階を入れること。
それだけで、妙な臨場感がでます。
モチーフ自体はStage 2から流用。
Intro -> Aパート -> 間奏(Stage 2) -> Bパート -> Intro(loop)

Stage 4

この曲が実質、一番最近作った曲です。
正式なタイトルは、「その箱を開けてはならない」。

私の曲にしては珍しく、正式なタイトルのある曲です。
というのも、ピスコラの曲投稿サイトで作曲コンテストがあると聞き、それに参加するために作曲したので。
コンテストに参加する場合、曲にはタイトルが必要なようだったのでつけました。
結果は入選ならず。

コンテストのテーマは「箱」・・・エロいですね。
ちなみに、単に「箱」というと、英語圏では女性器を意味するスラングになります。
なので、「けしからん」という訳で「開けてはならない」というタイトルにしました。
結局のところ「開けてしまう」→「開けなければならない」という意味を示唆するサイドストーリーを添えておいたので、実はかなり官能的。猛々しく古風な日本のお父さんが、隠れてコッソリとエロ本を読むような微笑ましい場面を想像して創造。
そこまで読み取れた人は、採点者&主催者サイドには居なかったかもしれませんが。
「カッコイイ曲ですね」といった感想が大半。
まさか、サ○エさんのN平さんだとは誰も思うまい・・・
・・・という作曲者の性格の悪さのようなものが見えたり、見えなかったり。
そういった意味で、この曲は本質的に私という人間性そのものを現している曲かもしれません。

形式は、私としてはまともな普通のソナタ形式に近い感じ。
Aパート -> 間奏 -> Bパート -> Aパートの展開 -> Bパートの展開 -> Cパート(展開の纏め)
※本当は、Cパートの後、Aパートの再現部を鳴らして終結部になるソナタ形式の曲ですが、ループ用に再現せずにダイレクトにAパートに戻りループ。

Ending + Clear

これらは、SHOT03のEndingとClearをそのままVGSへ移植しただけ。
使いまわしは基本。

2012年8月26日日曜日

SHOT04 - NOKOGI Rider for Windows

VectorでWindows版のSHOT04(LITE版)を公開する手続きをしました。
数日後に公開されると思います。

公開されました。
http://www.vector.co.jp/soft/winnt/game/se499091.html

海外サイトについては、ドキュメントを英語化する作業ができてからやる予定。
なお、公開予定のREADME.TXTに書いておいたのですが、Windows版の製品版については、今のところ配布予定は未定(ただし、販売したい意思は有り)としておきました。

NOKOGI Rider - Information (13-Mar, 2013)

NOKOGI Rider is a vertical-scrolling danmaku STG (hell-barrage shooting game).

It features '90s arcade-style graphics and complex music based on wave memory sounds.
The game itself has a rather retro feel, but the controls are designed specifically for the touch screen of a smartphone. For example, unlike many games that have been ported from arcade games, there are no difficult to use software buttons on the screen. The game can be played easily with one hand.

Screen shots:

Download

Android version:
- Paid: https://play.google.com/store/apps/details?id=com.suzukiplan.SHOT04 (1.6MB)
- Lite: https://play.google.com/store/apps/details?id=com.suzukiplan.SHOT04T (1.0MB)

Windows version:
http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000157766 (1.7MB)
* Windows version is sales on Japanese DL store "Melonbooks DL"
* You can download the Lite version for Windows to click "体験版ダウンロード".

iPhone/iPodTouch version:
Coming soon!

Basic Play

Clear the level using a laser that can erase shots and enemy bullets.
There are five stages in total.
*Only one stage in lite version.

Gameplay

Android version:
- Touching the screen will cause your piece to move to the selected spot while shooting.
- Removing your finger from the screen will charge your laser meter.
- Touching the screen while the laser meter is fully charged will fire the laser.
- Pushing the back button or multitouching three points on the screen will pause the game.
- Pushing the home button will paused the game and return to the home screen.

Windows version:
- Left click: same as "Touch"
- Right click: same as "Puase button"
- Alt+F4: same as "Home button"

iPhone/iPodTouch version:
- Touching the screen will cause your piece to move to the selected spot while shooting.
- Removing your finger from the screen will charge your laser meter.
- Touching the screen while the laser meter is fully charged will fire the laser.
- Multitouching three points on the screen will pause the game.
- Pushing the home button will ended the game and return to the home screen.

Items

1) Medals
-Medals appear when an enemy is defeated in the sky.
-Collect medals by moving close to them.
-When firing laser, medals will be collected without going close to them.
-Besides lasers, there are various situations that affect medal collection.
-Collecting medals while firing the laser will recharge the laser meter slightly.
-Medals collected when shot value is high are worth more points.
-The cumulative medal score will be reset to zero upon a miss.

2) Stars
-Stars appear when an enemy is defeated on land.
-"+1" will be displayed if a star is collected while shooting.
-"Energy" is displayed if a star is collected while resting or shooting laser.
-If many "+1" are collected, the shot value will increase in a short amount of time.
-Collecting "Energy" will fill the laser meter.
-The cumulative "+1" score will be reset to zero upon a miss.

3) Stardust
-Stardust appears when an enemy's bullet is erased or trasnformed
-Stardust is automatically collected.
-Collecting stardust will improve your score slightly.
-The cumulative stardust score will be reset to zero upon a miss.

4) 1up
-1up will appear when certain enemies are defeated.
-When 1up is collected, game is extended.

*In this game there are no powerups. The starting condition is also the strongest.

Extension

There are six extensions to be achieved at certain scores.
1- 1,000,000 points
2- 3,000,000 points
3- 6,000,000 points
4- 10,000,000 points
5- 20,000,000 points
6- 30,000,000 points
If you achieve an extension with 8 vehicles remaining, nothing will happen.

Vehicles

There are three types of vehicles.
- TYPE A: Well-rounded vehicle (for intermediate players)
- TYPE B: Excels at high-speed, low-range attacks (for advanced players)
- TYPE C: Excels at low-speed, long-range attacks (for beginning players)

Difficulty

There are three levels of difficulty.
- BEGINNER: The easiest mode.
- SOLDIER: A mode that will be enjoyable for gamers.
- NINJA: A mode for those unique people who consider themselves shooters.
*I recommend that even experienced and skilled shooters start by beating the BEGINNER mode.

Shot Value

Shot value will increase through actions such as firing at enemy bullet.
The value is displayed in the top left of the screen. The maximum value is 99,999.
When the shot value is over 10,000, received scores will be doubled.
If the shot value does not increase for a certain amount of time, it will begin to drop rapidly. 
The harder the level of play, the longer the time until the shot value drops.
In other words, compared to BEGINNER mode, in NINJA mode, the shot value will drop slower and be easier to maintain.

Hints

The key to attacks in this game is the proper use of the laser.
Using the laser allows for relatively easy clearing. 
First, aim to clear levels by fully using the laser.
However, because the shot value falls through use of the laser, your score will be low.
So once you have mastered the game while using the laser, next try to play while using the laser as little as possible.
Also, score for normal shots is higher when enemies are closer. 

Saving and Playback of Replays

By selecting "SAVE REPLAY" on the home screen after a game ends, you can save a replay of the previous game, with up to 8 replays possible to be saved at once. 
Use "LOAD REPLAY" to playback saved replays.

Practice (only in paid version)

In practice mode, you can practice any stage that you have reached at least once. 
In practice mode, your highest score, and the replay of your highest score, are automatically saved. 
In practice mode you start with 8 vehicles.

Play Data

By selecting "PLAY DATA" on the home screen, you can check play records.
The records that are saved include scores, rankings, number of times each stage has been played, and playing time. 
*In the paid version play data is automatically saved, but in the Lite version it is cleared when the app is closed.

Music Room

From the title page selecting "CONFIGURATION" then "MUSIC ROOM" will allow you to listen to all music used in NOKOGI Rider.
*In the Lite version, you can only listen to music used in the Lite version.

Differences between the Lite and paid versions

- Number of stages: paid-5, Lite-1
- Play data save: paid-yes, Lite-no
- Replay saves: paid-yes, Lite-no
*There is no in-app purchases in this game.


2012年8月25日土曜日

公開しました

SHOT04 - NOKOGI Riderの製品版とLite版を公開する手続きをとりました。
いつ公開されるかは分かりませんが、その内、公開されると思います。
そういえば、Googleが何か審査をするようなことを言っていたので、若干時間が掛かるかも。

今回は、かなりタフな開発でした。
とりあえず、完成に至るまでの経緯を振り返ってみます。


2011年3月 - SHOT03完成
SHOT03が完成した後、宣伝用に載せたフリーゲームのDLサイトで「洞窟物語」を見つけて遊んでハマり、「ARPGでも作ってみようか」という軽いノリでマップエディタを作り始めました。

マップエディタは、たぶん、1ヶ月ぐらいで完成。
画面は↓こんな感じ。
主な仕様は、
・3層のレイヤー
・チップ毎に可変サイズの当たり判定を入れれる
・自動海岸線機能あり
・イベント配置機能あり

結局、ARPGは作らなかったけど。
ただ、SHOT04のステージエディタとして役に立ちました。
イベント配置機能以外は誰得状態でしたが。
(自動海岸線とか、作るのが結構大変だったのに)


2011年4月~8月 - 本業多忙
本業が恐ろしく多忙で記憶が定かではありません。


2011年9月~2012年1月 - 作曲
洞窟物語を知ったお陰で、ピストンコラージュの存在を知り、作曲しまくりました。
一応、ARPG用のBGMを作る名目で。
そのARPGのメインテーマ曲が↓コレ。
http://www.k2.dion.ne.jp/~ysuzuki/sample2.mp3

上記URLの曲データは、厳密にはピスコラで作ったものではなく、VGSへ移植したものです。
ちなみに、ピスコラで最初に作った曲が、SHOT04の2面で使っているBGM。
1面のBGMは、SHOT03のアレンジ(2面と4面を組み合わせた感じ)。
SHOT04の3面と5面の曲は、隠しモチーフとして上記URLの曲の旋律を使っています。
4面の曲は、ピスコラの曲投稿サイトでやってたコンテストに応募したりしました。
結果は入選ならず。(5位ぐらいだったと思います)

ピスコラのお陰で、「私もオリジナルの波形メモリ音源を作りたい!」と思い、ほぼ知識ゼロの状態から音の勉強を始め、その結果、VGS(Video Game Sound)が生まれました。まぁ、もともと自作ゲーム用のソフトシンセを作りたい欲求はあったのですが、敷居が高そうだと思っていました。

勉強してみると、音の仕組みというのはもの凄く簡単でした。
これなら、誰でも簡単に自作のサウンドエミュレータを作れると思います。
なのに、洞窟物語ぐらいしかそれらしいことをやっていないのが不思議。
「波形メモリ音源エミュレータの作り方 ~ ゲーム音源を作ろう」みたいな本を出せば売れますかね?
狙いどころがマニアックすぎるかな?
スマホ用のゲームの場合、容量の大きさ(を少なくすること)がかなり重要なので、ニーズはあると思いますが。


2012年2月~3月 - Androidを触り始める
この頃もまだ仕事がかなり忙しく、自分がゲーム開発をしていることは完全に過去のものになってました。
ただ、ふとした思い付きでAndroidタブレットを購入し、開発環境を揃えて開発を始めました。
で、サクッとInvaderBlock2を開発。

InvaderBlock2はタダで配っても良かったのですが、試したいことがあったので有償にしました。

試したいことというのは、「本当に売れるのか?」ということ。
案の定、マーケットに載せただけでは売れません。
しかし、Windows版を無料でVectorに載せてみたところ、数本ですが売れました。

正直驚きました。
たった一本でも「売れた」という事実に。
そこで、「ちゃんとしたモノを作れば、そこそこ稼げるかも」と思い、欲望と共にSHOT04プロジェクトを始動。

~以下、中略(SHOT04プロジェクトでやっていたことは、ブログにだいたい書いてあるので割愛)

2012年8月
無事完成。 ← 今ココ

今のところ、次回作の予定は未定です。
とりあえず、SHOT04の拡販活動をしつつ、次の構想を練ります。

公開準備中

SHOT04を公開する準備がほぼ整いました。
あとは、公開ボタンを押せば公開できると思います。
中々押せない・・・

とりあえず、最後の点検をもうちょっとやっておこうかな。
どうせ、公開してもライト版のVUPをしないと直ぐには売れないとは思いますが、万が一、売れてしまったら即座に差し替えるのは申し訳ない。

やっぱり、最初に公開するときが一番躊躇います。
「本当にこれで良いのか?」とか思ったり、
「しょっぱいバグは残ってないような?」とか思ったり、
「とりあえず、TARI TARIを観終わってから公開しようか」とか思ったり。

2012年8月23日木曜日

開発期間

SHOT04の最終リリースの候補版を作成。
まだ、リリースはしません。

長い道のりでした。
3月ぐらいからSHOT04のコードを書き始めたので半年程度?
一応、音楽については去年夏頃から作り貯めていましたが。
なので、作曲期間を含めれば1年ぐらい?

10曲(内2.5曲はSHOT03から流用)作るのに半年・・・ということは流石に無いですが。
そもそも、音楽については当初、ARPG用に作っていたので。
村っぽい感じの曲とか教会っぽい感じの曲など、「STG?」な没曲が沢山あります。

あとは、Android用のプログラミングを勉強するためにInvaderBlock2を作っていた期間が1ヶ月程度。
なので、厳密には1年丸まる作り続けていた訳ではないですが、だいたい1年。
次回作はInvaderBlock2みたいな一瞬で作れるようなアクションゲームにしたいところ。
やはり、大作を作るのはしんどい。

リリース時期について

そろそろ良い感じに煮詰まってきました。
再来週(9/1)あたりにリリースする腹で進めてきてましたが、予定が入ってしまい難しそうなので、今週末か来週初頭(日曜日)あたりに見切り発射的にリリースするかもしれません。シューティングだけに。やはり、一通り形が完成してしまっていると、早く公開したい欲が出てくるので、ゲームを作る場合、形を完成し切る前に調整し尽くすやり方が私には合っている気がします。

なお、一度リリースした製品については、バグフィックス以外の修正はしない方針(InvaderBlock2は例外的にチョコチョコ手を入れてしまいましたが...)なので、早期リリースは自らの首を絞める結果にもなり得るから、慎重にいきたいのは山々。しかし、鉄は暑い時期に叩けということで、8月中のリリースがベストなんじゃないかと思ったり、思わなかったり。

ところで、このSHOT04ですが、出来上がってみると(まだ一応調整中だけど)シューティングゲームとしては、オーソドックス過ぎるぐらいオーソドックスなものになりました。画面がレトロで音楽もレトロだから尚更。ただ、入力デバイス=タッチパネルという前提で最大限の操作性を追及したものにしたので、割とゲーム性としては新しい気がしています。

すでにタッチパネル「対応」のシューティングはそこそこ有ります。怒首領蜂とか。
タッチパネルとシューティングというのは、かなり相性が良いと思います。
ただ、ソフトボタンを一切排除したものというのは、殆ど無い気がします。
もちろん、実験レベルのものであれば幾らかありましたが、それなりのクオリティのものは見当たりません。それなりのクオリティのあるものは、何かしらのソフトボタン(例えばボムボタンとか、カーソルとか)があるものが大半・・・というのが、AndroidやiPhone用のSTG群を見て、私が感じた傾向でした。
もちろん、それでも面白いものは面白いのです。怒首領蜂とか。
ですが、怒首領蜂ですら、微妙な違和感がありました。

タッチパネル前提でゲームを設計する以上、ソフトボタンという入力インタフェースはオブソリートにしなければいけない・・・と直感的に思っていたので、それが違和感の原因じゃないかと推測。そこで、SHOT04で「完全にタッチパネル特化」したインタフェース仕様で設計したゲームを作ってみた訳です。

そして、その試みは概ね成功したんじゃないかと思っています。ただし、Windows(マウス)と同じ仕様にしたかったので、マルチタッチを活かしきれて居ない点が若干片手落ちな気もしますが。私としては合格点だと思っています。それが世間に受け入れられるかどうかは別として。

もちろん、売れれば嬉しいですが、私が楽しめるアクションゲームがようやくスマホでできるようになったということに概ね満足したので、さっさとリリースしてしまいたいという心境になりました。

2012年8月22日水曜日

extend

extendの配分を調整中。
もともと、初期残機が3機で5回(最大残機数は8)という方向でしたが、
①2面の中ボス撃破時
②4面の中ボス撃破時
③100万点到達時
④300万点到達時
⑤600万点到達時
⑥1,000万点到達時
⑦2,000万点到達時
⑧3,000万点到達時
と、ちょっと増やす方向で。
あふれた場合は、1upせず得点が入る&オールクリア時に残機ボーナスは無し。
という仕様でしばらく遊んでみます。

ガレッガやバトライダーのように、自滅をして有利になる要素は入れない方向で。
個人的にそういうルールだとやる気が半減してしまうので、そうならないようにミスによるランク低下という要素は入れていません。そもそも、SHOT04の場合、意図的に初期で選択するランク以外にランク変動要素を入れないようにしました。(個人的に「ランクを調整する」という戦略が好きではなかったりするので)

オーラ打ち

至近距離でショットを当てると、オーラが出てくる感じにしてみました。

近ければ近いほど、オーラ量が多くなり、オーラの量が多いと打ち込み点が高くなる感じ。
リリースが近い今の段階で新しい稼ぎフューチャを実装するのはあまりよろしくないです。
こうやってバランスが崩壊していく・・・もちろん、バランスが崩壊しないように調整しますが。
個人的にシューティングは至近距離で打ち込んだ時にメリットがあった方が爽快感がある気がします。
だから、今の段階でも無理して入れておくことにしました。

2012年8月21日火曜日

調整

SHOT04を順調に調整中。
製品版(Android版)を9月中(なるべく早く)にリリースできる筈。

会社のあまりアクションゲームが得意で無い人にBeginnerをやってもらったところ、初回プレイで2面に行けたとのことだったので、なかなか良い難度だと思います。ただ、その後、数回やったものの1面を越せなかったとか。

レーザーの貯め時間がもうちょっと短ければ・・・とのことだったので、Beginnerモードに限り、他(Soldier,Ninja)よりも1.5倍早く溜まるようにしておきました。あと、レーザーが強すぎたと思い、ミス後の無敵時間中はレーザーを貯めれない仕様にしていましたが、これは無敵時間中でも貯めれる仕様に戻してみたりしました。

レーザーがチート過ぎるので、弱体化する処置をいれるべきかと思われたのですが、その辺りはちょっと考え直します。レーザーを使うデメリットは稼ぎ(スコア)に限定する方向で。
・攻略優先時はがんがんレーザーを撃つ
・スコア稼ぎをする時は極力レーザーを撃たない
という分かり易い図式にします。

2012年8月20日月曜日

調整中・・・

SHOT04のBeginnerモードを調整していて、通しプレイでちょうどラスボス戦の第二形態になったところで地震(震度2ぐらい?)があって、「はて、そんな演出は入れた筈はないが?」と冷静に考えていました。あまり、慣れすぎるのも良くない。

BeginnerとSoldierは、軽くしか弄ってませんが、結構良い感じになりました。
あとは、Ninja。
私がNinjaをクリアするまで、調整は続きます。
ここからが本当の地獄だ・・・

ところで、会社でSDカードでapkを配ろうとしたら、大抵のAndroid端末はSDカードを入れる所がバッテリーを外したところにあり、取り外しが結構面倒だということが判明。私の端末(MotorolaのRAZR)の場合、普通に側面のところについていますが。

たぶん、コンピュータに詳しくない人は、アンマウントせずにSDカードを取り外したりするのかも。
それで、「データが壊れた!」とか騒いがれるリスクよりも不便さの方を選んだ?。
・・・が、折角iPhoneよりも優れている特長を不便にしてしまうのは惜し過ぎる気がします。
もちろん、コンピュータリテラシーが無い人でも安全に使えるようにすることは重要です。
しかし、その為にコンピュータリテラシーが有る人にとって不便なものにしてしまうのはNGです。
両者を共存できる形にすべきです。
手段が無い訳ではありません。
例えば、UNIXのCDドライブのように、SDカードをアンマウントしないと抜けないようにするとか、考えれば幾らでも方法は有る筈。多少コストは掛かると思いますが、自由にリムーバブルメディアを使えるのがAndroidの最大の利点(&iPhoneの最大の欠点)なんだから、iPhoneからシェアを奪うのなら、その部分をケチってはいけないと思います。

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

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