2015年6月24日水曜日

Good bye Windows!

私のゲーム開発環境をWindowsからMacへ完全移行中。

移行理由
・iPhoneアプリを作る時だけMac起動するのめんどい
・Windows用アプリはもう作ろうと思っていない
・AndroidアプリもWindowsで作ろうとすると主にドライバがクソ(もっと具体的に言うとWindows 8以降のドライバの署名関連の下手な締め付け仕様部分がクソ)なので、Androidアプリ開発にもLinux or Macが事実上必須(実際、AndroidアプリはWindowsでVMのLinuxを立ててソコで作業している)
・いちいちVM Linuxを起動するのが面倒
・VMのもっさり感
・もっさり感はTeraTermでCLI onlyで作業していればまだ良いが、WindowsとVM/Linux間でのディスク同期が面倒(CIFSでマウントすると時々ハングするし、Sambaは設定が面倒だし...)
・外出先へ2台PCを持ってくのはめんどい
・Mac Book Airのキーボード打ち易い
・Mac Book Airのパッド式マウス使い易い(リアルマウスが不要になる)
・フォントが綺麗
・スタバでドヤリング(は、しない)

まぁ、要約するとWindowsに対して溜まりに溜まっていた不満が爆発しました。

Linuxに移行しても良かった(実際、CentOSのデスクトップはすごく良かった)のですが、iPhoneアプリ開発的な事情もあるので、それならMacに移行した方が幸せだろうと。

移行する上でのネックとなるのが、以下2点。
①VGSのSDK+sandboxがWindows専用だった
イケてるグラフィックや音関係のツールがMacには無い

上記①については、VGSをMacへポーティングして解決。

VGSのSDKはCLI onlyなので、LinuxやMacへの移植は簡単です。問題はsandbox。VGSのsandboxとは、スマホ実機じゃなくてもVGSアプリを動かすことができるテスト環境のことです。これをMacへ移行するのは結構大変ですが、その点は描画系にSDLを用いることで割と簡単にできました。

まぁ、①については独力で何とでもでき、そんなに難しい問題じゃないだろうと高を括っていたのですが、実際蓋を開けてみるとその通りだったので、若干肩透かしを喰らった気分です。

しかし、問題は②。
無料 or 有料を問わず色々探してみたのですが、使い物になるモノは、ひとつも見つかりませんでした。なんというか、全般的にショボいものが多い。作るのが難しいのかな?AppStoreなどアプリを売れる環境が整っているので、もっと色々あると思っていたのですが。(売れる環境があってもMacがそんなに普及していないから仕方がない)

iPhone・iPad用のツールであれば無駄に充実しているけど、流石にスマホ・タブレット で実用レベルを追求できる水準のモノを求めるのは酷でしょう。実際、有るのはオモチャばかりです。スマホやタブレットで満たせるニーズは飽くまでもエンドユース限定で、そういう風に割り切っているからこそここまで普及したのだろうと思います。(結果論ですが)

そんな訳で、②の問題解消手段として考えたのは、「全部 自分で作る」。
いや、冗談ではなく。
なので、手始めにドット絵を書くアプリを自前製作しようと、こんなリポジトリを作成。
https://github.com/suzukiplan/OpenDotE256

しかし、Macへの移行は今すぐにでもしたい。
という訳で、今回は取り敢えずwineで逃げることにしました。
使ったのは、EasyWine
http://matome.naver.jp/odai/2140238022377155001

EasyWineで動かしたアプリは、以下2つ。
ALFAR(ドット絵を書くツール)
ピストンコラージュ(作曲や耳コピ時に使用する)

上記以外にも 効果音エディタ_D というツール(その名の通り、効果音を生成するツール)も使いたかったところですが、現時点のEasyWineでは動かなかったので残念。だいたい動いてくれたのですが、ファイル保存とかのコモンダイアログでファイル名を打とうとするとハングアップします。

でも、効果音なら私のバンク(オリジナル効果音集)がかなり豊富にあり、新規に効果音を作る機会も少なくなってきたところなので、新しい効果音が必要になった時だけWindowsで作る感じでも良いかなと。

あと、MIDIがある東方の曲(残るは東方幻想的音楽の収録曲ぐらいですが)をVGS化する時にMIDIシーケンサが必要なのですが、それについてはAlchemusicaというアプリで大丈夫そうな感じ。
http://osdn.jp/projects/alchemusica/

2015年6月21日日曜日

vgs2playで東方VGSのmmlデータを再生しよう

VGSに関するTIPSネタです。

つい先ほど、Mac版 と Linux版 の VGS に、ターミナル(端末エミュレータ)上でBGMファイルを再生する vgs2play という CLI を追加してみました。

そこで、それを使って東方VGSのリポジトリ上に登録されているMMLファイルを再生するまでの手順(最低限のもの)を解説します。

文書で説明するのが面倒なので、シェルスクリプトで。

上記の内容をターミナルで実行すれば、(うまくいけば)蓬莱伝説が鳴り始める筈です。
単純にコピペしたシェルを作って chmod +x してから実行するだけでもうまくいく筈。

どのmmlファイルがどの曲に対応しているかは、東方VGSのリポジトリの README.md を確認してください。(下の方に対応リストが載っています)

ちなみに、Macの場合、ターミナル(端末エミュレータ)は、 Finder を起動して左タブから「アプリケーション」を選び、右タブから「ユーティリティ」をクリックすれば出てきます。よくWindowsから移行した人(でUNIX経験がある人)から聞かれます。(Macを使う人でターミナルを使わない人が居るか疑わしいので、リンゴマークから起動できれば良いのに、なぜ隠しているのか謎)

2015年6月13日土曜日

東方VGSが10万DLを達成までの数値を軽く分析

Android版の東方VGSが10万DLを突破。
なお、iOS版の方は3カ月ほど前に突破済みです。
リリースはAndroidの方がiOSよりも3カ月ぐらい早めでしたが。

Developer Consoleで確認できる情報にちょっと手を加えて、これまでの軌跡を振り返ってみます。


ちょっと横に長すぎるので、1万DL達成、5万DL達成、10万DL達成の順で。

①1万DL達成(所要期間217日 & 46DL/日)


②5万DL達成(所要期間252日 & 159DL/日)


③10万DL達成(所要期間300日 & 167DL/日)


上記①~③の数値(所要期間とDL/日)と前期間からの増減率を表にしてみます。

フェーズ所要期間前フェーズ増DL/日前フェーズ増
①1万DL達成217-46-
②5万DL達成252+16.13%159+245.65%
③10万DL達成300+19.05%167+5.03%

Twitterで、以下のように含みのある発言をした(人気アプリになったみたいに錯覚しそうと発言をした)のは、上記数値を見て「そろそろ頭打ちかな」と思ったからです。

確かに、まだ伸びているっちゃぁ伸びているのですが、DL/日の伸び率が「これから伸びる」というラインを下回っているので、この辺りが伸びる限界点で、あとは沈むだけかなと。iOS版の方のキーワード「東方」での検索順位も、長らく1位を独占してきましたが、本日時点で3位まで落ちてきていますし。

仮に、2016年中に50万DLを突破すれば、まだ伸びしろは残っていると思います。しかし、それを達成するには、今年の6月10日以降、2016年12月31日までの間に、平均702DL/日のDL数を稼がなければならないので、まぁ、無理でしょう。

ちなみに、東方VGSは2年間の内、半年間ほどまったく作業をしなかった期間があります。そして、その空白の期間中に数値が落ちたということであれば良かったのですが、残念ながら、実際その空白の期間は③ではなく、②の期間なんですよね。つまり、ヒーコラ苦労して曲追加しても伸び率はそんなに変わらず、ある程度サボっていた方が伸びるという面白い結果になりました。

だから、Hunter x Hunter は人気があるのか...!!!

真面目な話し、このアプリの強みにして最大の弱点はソーシャル拡散性が無いことだろうと思います。要するに、他人に薦めたくなるシロモノではないということ。だからこそ、空白の期間に伸びたという理屈が成り立つのかも。

ズラズラ書きましたが、分析結果を纏めると、

 富 樫 先 生 化 で ワ ン チ ャ ン あ る か も

ってことですかね。
なんだそれw
でも、調べてみるとコンテンツ業界では結構事例が沢山あったりするので、それが正解という可能性も無きにしも非ずです。

2015年6月7日日曜日

VGL: SUZUKI PLAN - Video Game Land

今、SUZUKI PLAN - Video Game Land(以下、VGL)を構築中。
「プラットフォーム」といえど、コテンツプロバイダは私だけですが。

開発中の画面
VGLは、スマートフォン用の新しいゲームプラットフォームです。
メインの処理系はHTML5にしました。
そのため、上図のようにPCブラウザでも「デバッグをすることなら」できます。

「デバッグをすることなら」と含みを持たせたのは、これは単なるHTML5ゲームエンジンではないためです。HTML5とネイティブアプリ間のインタフェースを持たせることで、通常のHTML5では実現不可能な、波形メモリ音源による音声再生機能を使えるようにしたりしてます。

HTML5ゲームは、そこそこ実用に耐え得るレベルに進化しましたが、依然として弱いのが音関係の部分です。かといって、VGSの波形メモリ音源のような尖った仕組みが標準実装されることは多分ありません。だから、HTML5ゲームは残念なレベル止まりなんだろうと思います。

VGLは、先日ドメインを取得した suzukiplan.com で稼働させる予定です。
そして、suzukiplan.com にアクセス可能なVGL専用WebViewを搭載したアプリを配布予定です。

VGLが稼働できれば、東方VGSの新しい曲を追加した時とかに、iOS版なら通常1カ月は待たなければならないアップデートを待たずして、スマホで視聴することなども(技術的には)可能です。ただ、AWSとかみたいなゴージャスなサーバではなく、月額500円ぐらいのオモチャみたいなサーバで稼働させるので、当面はそういったアクセスの集中しそうなことは避けるつもりです。(ついでに、サーバ費用が掛かる以上、ある程度のマネタイズは不可避なのですが、東方二次創作をソコでやってしまうとガイドライン上広告とかが載せられないからキツイ)

まぁ、やるにしても私のオリジナル曲の視聴ぐらいでしょう。
それなら殆ど集まらないw

2015年5月17日日曜日

携帯契約の見直し

以前契約したemobile(現Y!mobile)のスマホプランの2年縛りがそろそろ解けます。
3年目以降は値段が上がるので、当然ながら2年縛りが解けると同時に解約しますが、その次のプランをどうするかについて考えてみました。

私がスマホを持ち始めたのは2012年初頭からで、今までの契約の流れは次の通り。

1回目 : auのスマートバリュー(2012/2月ぐらいから)
・端末はMotorola RAZR
・端末は一括購入にして縛りナシ
・月額はなんやかんやで5000円ちょっとだったかな?
・トータルの回線費用(光通信込)は月額1万円ちょっとでした

2回目 : bmobileのmvno(2012年秋ごろだっただろうか...)
・RAZRをICSにアップデートしたらクソ端末になったことにキレて契約変更
・何故かMotorolaに向かうべき怒りの矛先がキャリアにいく^^;
・そこで当時出始めたmvnoを使ってみることにする
・端末はソニーエリクソンのXperia Ray(SO-03C)をAmazonで調達(1万円ぐらい)
・最初は月額980円のプランで加入
・2~3カ月ぐらいで1GB/月(だったかな?)の高速プランに変更
・データ通信専用なので、ガラケー(au)と2台持ち
・ガラケーはスマホ購入前に使っていたものをそのまま使用
・トータルの回線費用(光通信込)は月額7千円ぐらいでした

3回目 : emobileのスマホLTEプラン(2013年9月から)
・端末はGL07S
・マンションに無料の無線LANが敷設されたのを契機にmvnoよりもややゴージャスなプランに変更してみようかというノリで契約変更(あと、SO-03Cだとrootを取らないとテザリングができない点も変更動機のひとつ。テザリングできるプランか端末を探していた時に偶然見つけたのがemobile)
・月額はauのガラケーと合わせて5000円ちょっとぐらい
・ガラケー(au)の契約を切りたかったが、キャリアメールが使えなくなると連絡が取れない人が居るので、ガラケーの契約も保留
・端末自体は割とまともな気がするがJellyBeanが重すぎてクソ端末というのが総評
(KitKatアップデートを期待したが結局されず)
・トータルの回線費用は月額5千円ぐらい

そういえば、iPhone歴はゼロですね。
一応、iPhone 3GSなら持ってますが、自作アプリのデバッグ専用機なので、iPhone用に回線契約をしたことはありません。(2回目の時にたまにsimを然して遊んだことならありますが、3回目のsimはGL07Sじゃないと使えないクソsimだったので、長らくネット回線に繋いでいません)
ぶっちゃけ、3回目のタイミングでiPhoneにしようかとも思ったのですが、iPhone5sで3.5インチ端末が出なかったのでiPhoneを見限りました。スマホに4インチはデカすぎる。スマホのサイズとしてはiPhone 4s以前の3.5インチがベストだと思います。そのサイズだとやり難いこと(電子書籍を見たりなど)はiPadやPCなどを使えば良いんじゃないかと。何より、AndroidでテザリングすればiPod touchで十分iPhoneの代わりになり、それで初期費用5万円ぐらい+無駄プラン3千円/月ほど浮くことを考えるとiPhoneはコスパが悪すぎる。(当然のことですが、皆TCOを見た上でiPhoneを選んでいるんでしょうけど、皆ブルジョアジーなんですかね?その割にはiPhoneユーザーのアプリへの金払いはAndroidと比べてかなり悪い印象ですが)

若干話しが逸れましたが、要するに3.5インチの端末が欲しかったので、Polaroid Piguという端末を購入。現行の日本で買える端末で、KitKatが載っていて3.5インチというとこの端末しか見つからなかったので、迷う余地が無かった。(ついでに値段的な意味でも迷う余地が無かった)
新品価格
¥9,650から
(2015/5/17 15:35時点)

OCNのSIMカード(音声対応)付きで1万円を切るという激安端末です。
SIMカードは3000円なので、実質6千円ぐらい。

ガラケーをMNP & 解約してOCNの契約に切り替えつつ、emobileの契約も切ろうかと思っています。キャリアメールについては、今では親と連絡を取る時ぐらいしか使わず、親にsms(Cメール)の使い方を教えておき、基本的に連絡はsmsでするようにお願いすることで慣れてもらったので、心置きなく契約を切れます。あと、色々な行政手続きやらをする時に電話番号は割と必要なので、音声通話の契約はまだまだ切ることができません。

という訳で2012年末ごろから続いていた2台持ち生活に、ようやくピリオドが打てそうです。

トータルの回線費用は月額2千円ぐらい
ウハウハです。
たぶん、コレが最低ラインかなと思います。
別にそれほどお金に困っている訳ではない(むしろ、お金を取ろうと思えば取れなくもない東方VGSを無償で続けていることからもお分かり頂けるように、経済的には結構余裕がある方だと思う)のですが、シミュレーションゲームをプレイする感覚でTCOを最適化していくのは楽しい。
たぶん、これはゲーマーの性です。

ちなみに、Polaroid Piguですが、タッチ反応がイマイチなのでゲームには向きません。
ただ、Androidでは長らくゲームを遊んでいないので問題ありません。
Android用のゲームを作っている人間がこう言うのもアレかもしれませんが。
前のGL07Sもゲーム向きではなかった(タッチ反応は良かったがOSの負荷が高すぎて遊べたものではなかった)ので、スマホ用のゲームを遊ぶ時はもっぱらiPod touchを使っています。オフラインゲームだけでなくソーシャルゲームもAndroidでテザリングするかWi-Fi環境でiPod touchでプレイする感じで十分楽しめます。

というより、そもそもガッツリゲームを遊びたければゲーム専用機(DSなりPSP)で遊ぶので、スマホでわざわざゲームをすること自体が少なくなったきます。スマホを持ちたてホヤホヤの頃は物見遊山でプレイしてましたが、やっぱりタッチ限定というのは操作性が悪い。スマホ唯一の利点はポータビリティかもしれませんが、私は外出先では基本ゲームをやらないタイプなので、その利点も無いに等しいです。

東方VGSについては、Polaroid Piguでも快適に動きます。
東方VGSの動作の快適さで言えばGL07S(定価4万円ぐらいのミドルクラス)よりも遥かに快適。
気になった点としては、Chromeでブラウジングしながら聴くとたまに飛びするぐらい。でも、スマートニュースとかなら飛ばないので、これはChromeの方に問題がある気がします。

2015年5月13日水曜日

新しい音源(検討メモ)

VGSの波形メモリ音源とはまた別のソフトウェアシンセサイザを作ってみたくなったので、基礎的な仕組みについて考えた内容をメモっておきます。

上記はその新音源の波形生成ルーチンです。
波形データをメモリに持つ仕組みではなく、関数で求める形。
サイン波、矩形波、ノコギリ波の3つ。
2πで1Hzということになります。

【音程算出】
サンプリング周波数44100Hzで音程周波数440Hz(ラ)を出す場合、
2π ÷ (44100 ÷ 440)
で、radの増分が求まるという感じです。
だいたい0.063ぐらいかな。
(そして、radのカーソルをチャネル毎に持たせる)
それを毎回計算すると処理性能が悪くなってしまうので、音程ごとの増分値をテーブルに持たせれば、性能的に良い感じになる筈です。

テーブルに持たせる増分値を求めるプログラムを作成。


上記プログラムで求めたテーブルは↓のような感じ


【波形合成】
基本波形をベースに合成波形も出力できるようにすれば、出力できる音色数は7種類。
- sin
- square
- pulse
- sin + square
- sin + pulse
- square + pulse
- sin + square + pulse
あとはノイズ1種類 + 7種それぞれとノイズの合成で15種類

2015年4月24日金曜日

何故、東方VGSがヒットしたのか

もうすぐで東方VGSを始めてから丸二周年になります。

東方VGSでは一切マネタイズをしていないので、幾ら人気が出ても私には直接的な収益は入りません。それでもなお続けている理由は「純粋に私が創っていて楽しいから」じゃないかと思います。ですが、それでは何故、東方VGSが私以外の多くの第三者(主に東方ファン)から支持されているのか...この点について、今まで上手いこと説明することが出来なかった(というより私自身よく分かっていなかった)のですが、最近「あぁ、そういうことか」と納得できた感じになったので、記事にしてみたいと思います。

東方VGSに限らず、チップチューン音楽(いわゆるピコピコ音)を愛する人は多いです。何故、チップチューン音楽が愛されるのかというと、理由は「分かり易い」からです。何故、チップチューン音楽が分かり易いのかというと、チップチューン音楽は普通の音楽(アコースティック?)と比べて情報量が少ないからです。

ここでいう音楽の「情報量」とは、サンプリング周波数やビットレート(つまり、ディジタル的な意味での情報量)のことではなく、合成波形数(重ね合わさっている音源の数)と音毎の波形の複雑さ(パルス値の変化の多様さ)を指します。

人間が知覚できる情報というのは一定の限界があります。音楽の才能がある人とそうでない人の違いは、瞬間的に処理できる情報量が多いか少ないかで、そして、大抵の人は音楽の才能がありません。私にもありませんorz そもそも、音って情報として掴みにくいものなので、才能を磨く機会が殆ど無いことがその原因じゃないかと思います。

ですが、大抵の人は音楽の才能は無いけど音楽が好きです。
もっと正確に言えば、大抵の人は「情報量の少ない」音楽が好きです。
例えば、音楽の最高峰はオーケストラなのに、オーケストラが好きな人はあまり居ません。何故ならオーケストラは情報量が多すぎるので、情報を処理し切れない人が大半=理解できない人が大半だからだと考えられます。(ちなみに、音楽の才能が無くても、スコアを見ながらオーケストラを聴けばかなり楽しいのですが、そこまでする人は少数派だと思います)

人間は、受ける情報が多すぎる場合、情報の中から自分にとって必要な情報を選別しますが、情報が多すぎるとどれを選別して良いか分からないのです。その場合、料理経験の無い子どもに玉ねぎの皮を剥かせると芯だけになってしまうのと同様、「必要なモノ(情報)」をそぎ落としてしまい、結果的に「つまらん」と思ってしまう訳です。

それなら「情報量が少ない程良いのか?」というと、そうではありません。
何故なら、情報量が少なくなると稚拙なモノになってしまうので。

東方VGSの音楽は、音楽的に見てかなり情報量が少ないです。波形は固定化された三角波、矩形波、ノコギリ波だけだし、同時発音数は6音、更にモノラル1chというスペックです。これだけでは単なる「ちゃちな音楽」しか作れないかもしれません。しかし、(win版以降の場合)東方Projectという既存楽曲(少なくとも東方ファンなら知っている曲)をベースに、それを(多少の「意訳」を加えつつ)分かり易くしたモノだから、結果として東方ファンに受け入れられ、人気が出たのではなかろうかと思います。

つまり、例えるなら東方Project本家の音楽は「実写映画」で、東方BGM on VGSは東方本家の「アニメ版」という風な感じですかね。必ずしも常にメディアミックスが上手く働くとは限りませんが、二次創作と相性の良い東方IPだからこそ結果的にウケたのかもしれません。(個人的には東方に限らずメディアミックスの一手法としてVGS化というのはアリじゃないかと思っていますが、今のところ、そういう方向でお声が掛かったことはありません。コチラから某社にお声掛けしたことならありますが門前払いでした^^;)

ちなみに、この「情報量」に着眼した考え方は、ドワンゴの川上会長が書かれた「コンテンツの秘密」という本を読んで参考にしました。


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

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