2015年3月14日土曜日

SUZUKI PLAN - Video Game System mk-II SR

SUZUKI PLAN - Video Game System mk-II SRをプレリリースしました。
https://github.com/suzukiplan/vgs2

VGSもいよいよ第3世代になりました。
今回の大きな特徴は、
  • 本格的なオープンソース化(2箇条BSDライセンス適用)
  • スプライト機能の拡張
  • 波形メモリ音源機能の実装
の3点です。

(オープンソース化)
今までのVGSよりもより自由度が高い形で利用できるようにするため、独自ライセンスからオープンライセンスの1つBSDライセンスを適用しました。BSDの採用理由としては、今までの独自ライセンスと一番似ていたためです。

(スプライト機能の拡張)
正確にはSRではなくGameDaddyが終わる直前に入れた機能なのでGameDaddyの拡張ですが、まぁ、細かいことはどうでも良いでしょう。
回転、拡縮の機能を追加しました。
また、使える色数も増えました。
モノクロ8段調(GameDaddy)+8bitカラー(初代VGS)の両方が使用可能。
αブレンドは未だ実装していませんが、その内追加するかもしれません。

(波形メモリ音源機能の実装)
これが一番大きいと思います。
オープンソース化した上で実装しているので、もちろんオープンソースで。

まだプレリリースということにしています。

何かしらゲームを1本作ってそれをリリースしたら、同時に正式リリースにしたいと考えています。
(もちろん、正式リリース前でもライセンス条項を守って頂ければ第三者での利用も可能です)

2015年2月22日日曜日

Battle Marine (FREE)

本当はBattle Marineは有料版onlyでいきたかったのですが、このままでは完全にフェードアウトしてしまいそうだと思ったので、まずはAndroid限定で無料版を出すことにしました。

無料版を出すにあたり厄介だったのが、広告をどうするかという点。
初代VGSは、VGS mk-IIと違いバナー広告の表示向けのデザインではないので、どうしたものかと考えた結果、AdMobのインタースティシャル広告(全画面広告)を採用してみることにしました。
表示タイミングとしては、戻るボタンを押した時。
これならデザインを崩さずに広告を導入できます。

広告は戻るボタンを押した時(1回だけ表示)
あとは、

  • タイトル画面に有料版へのリンクがある
  • ゲームオーバー後にRETRYボタンを押せないようにしている
といった点が有料版と異なります。
若干緩めの制約にしておきました。
Battle Marineは、繰り返しプレイするスタイルのゲームなので、このRETRYボタンの有無が(ハマれば)じわじわ効いてくる筈。「じわじわ」程度ではマネタイズとしては緩いような気もしますが、その点は深くは気にしない。せめてバナー広告も併用するぐらいのことはした方が良い筈。

インタースティシャル広告の実力がどの程度なのかが気になる。
表示タイミングさえ気を付ければ、eCPMが高くなりそうな気はする。
表示タイミングを気を付けると結果的にインプレッションが減るので、媒体サイドの視点では結果的にはバナーと同程度ではないかと思わなくもないけど、広告主サイドの視点ではバナーよりもプロモーション効果が高いのではないかと思う。
ただ、テストプレイで何度か表示してみた限り、まだ在庫はそんなに多くは無さそうな雰囲気。
出稿額が高めなのか、クリエイティブの準備が面倒臭いのか。(私は今まで何度かテストで広告出稿してますが、その時は後者の理由でバナーonlyにしているので、前者は未確認)
Battle Marine (FREE)を広告出稿する機会があれば、インタースティシャル広告で出稿してみるのも面白いかもしれない。

GooglePlayで Battle Marine (FREE) を入手
Get it on Google Play

2015年2月7日土曜日

禁欲番付

SUZUKI PLAN の久々の新作「禁欲番付」。
今回は、ゲームカテゴリではなく実用カテゴリ(ライフスタイル)のアプリです。
先日、VGSの日本語化対応をしましたが、折角なので、それを活かしたイカした作品を作ろうとした結果がこれです。(イカしてるけどいかないアプリ)

操作は簡単。
一日一回、「勝」か「負」をタップするだけです。

その日の取組結果は、当日中であれば何回でも訂正できます。
タップしなかった日は休場扱いになります。
負けたり休場したりすると階級が落ちるので注意。
※負けるよりも休場した方が階級降格のペナルティが大きいです

日々の記録は画面下の領域をスクロールすれば確認できます。
確認できるのは、最大8192日分(だいたい22年分ぐらい)です。

今のところ、記録は端末内にのみ保持されます。
こんなネタアプリでクラウド連携とかは必要無いだろうと。
もしも必要になったらアップデートして追加するかもしれません。

さて、どうしてこんな(くだらない)アプリを作ってしまったのか・・・

う~ん・・・

私自身よく分かりません。

血迷ったのかな。

今年の始めぐらいに、AppStoreの検索キーワード上位に何故か「オナ禁」があがってきて、調べてみたらモロにその名称のアプリが2本ぐらい登録されていて、あぁ、AppStoreでもソレはセーフなんだな・・・と。AppleでセーフならGoogleでも当然セーフだろうと(本当か!? ^^;)。一応、GooglePlayとAdSenseのコンテンツポリシーを見る限り、ダメでは無さそうな気がします。

念のため、オナ禁という直接的な表記は避けます。
その点は、察してくれるだろうと思うので。
当然、こんなアプリではお金が取れないので、無料で提供。
念のため、広告は付けておきます。
今のところAndroid版のみですが、iPhone版も作るかも。
(作ることそのものは簡単)

GooglePlayで禁欲番付をダウンロード
https://play.google.com/store/apps/details?id=com.suzukiplan.Onakin

2015年1月25日日曜日

VGSHQ検討メモ

VGSの拡張音源(HQ版)みたいなものを考えている。

◆現VGSの音源仕様

  • 周波数 : 22050Hz
  • ビットレート : 16bit
  • チャネル数 : 1(モノラル)
  • 音色数 : 4 (三角波、矩形波、ノコギリ波、ノイズ)
元々、VGSはゲーム用の音源システムとして設計していて、表現性能よりも処理性能を優先しているので、そもそも音質はそんなに良くない。

◆周波数

CD音質44100Hzへ拡張すれば単純に音が綺麗になる。
処理量が×2になるが、多分iPhone 3GSぐらいのスペックで余裕で処理できる。
iPhone 3Gだと少々キツイ。

◆ビットレート

これは変更不要。

◆チャネル数

これも変更不要。
MMLデータには手を入れずに拡張できる感じを目指したいので。
ステレオ化するとパン調整が必要になり若干面倒くさい。

◆音色

音色数も変えない。
ただし、合成波形にしてみると音に厚みが出て良い感じかもしれない。
  • 三角波 : ベロシティー1/3程度の矩形波を合成
  • 矩形波 : ベロシティー1/2程度の三角波を合成
  • ノコギリ波 : ベロシティー1/2程度の三角波を合成
三角波は重ねて鳴らした時の相性が良い。

2015年1月23日金曜日

地味にiOSデベロッパーアカウント維持費の値上げが痛い件

もうすぐでiOS Developer Accountの期限切れの季節になります。
「もうすぐ」といっても、まだだいたい1Qありますが。
どうも、日本のアカウント維持費が8,400円から11,800円に値上げされる模様。
+4,000円というのは地味に痛い...

昨年1年間(2014年1月1日~2014年12月31日)のSUZUKI PLANのiOSアプリの収益(Apple税を控除後の額)は、92ドル94セント。日本円換算でだいたい1万円ぐらいなので、赤字です。

ちなみに、Androidの方の収益(Google税を控除後の額)は、40,372円。
なお、これは有料販売のみの収益額で、これに広告収益(1,000円ぐらい)がプラスされます。
つまり、トータル黒字です。

もっとも、トータル赤字でも今年は継続するつもりです。
私が飽きるまでの間は続けます。
私が飽きても儲かっていたら続きますが。
なので、今年継続することは確定として、来年どうなるかは未知数です。
そう考えると、+4,000円の値上げは地味に痛いかもと思いました。

世間一般では「AndroidよりもiPhoneの方が倍儲かる」と理解されているようですが、これは木を見ずして森を見た場合の話で、事実、SUZUKI PLANではAndroidの方がiPhoneの4倍儲かっている訳で。

SUZUKI PLANの場合、昨年の売上の約80%が海外(主に米国とEU)で、日本で人気があるのは東方VGSぐらい(これは一切マネタイズしていないから収益0)という、日本のアプリ開発者の中ではかなり特殊なタイプだからこういう結果になったんじゃないかと推測(適当)。
SUZUKI PLANが海外の方が伸びてる原因は、チップ文化の有無の違いかな。(根拠は無い)

2014年11月8日土曜日

Goldberg Variations on VGS

唐突かつ当たり前に始めたGoldberg Variations on VGSについて、唐突かつ当たり前に始めすぎた感があるので、説明しておきます。
Android: https://play.google.com/store/apps/details?id=com.suzukiplan.BWV988
iPhone: https://itunes.apple.com/jp/app/goldberg-variations-on-vgs/id936643076?l=en&mt=8

Goldberg Variations (ゴールドベルク変奏曲)は、J.S.Bach作曲(BWV988 ト長調/ト短調)の音楽で、2段式のチェンバロ用の練習曲として書かれたものです。バッハがチェンバロ演奏の手解きをしたヨハン・ゴットリープ・ゴルトベルク少年(当時14歳)が、不眠症に悩むカイザーリンク伯爵のためにこの曲を演奏したという逸話からこのタイトルが付いたようですが、ぶっちゃけかなり弾くのが難しいので、真偽のほどは定かではありません。そもそも、私なら逆にギンギンになって眠れない気がします。

原本の楽譜に記載されている表題は、「Clavier Ubung bestehend in einer ARIA mit verschiedenen Veraenderungen vors Clavicimbal mit 2 Manualen」。2段式のチェンバロ用のアリアとその変奏みたいな感じの意味です。Goldbergとは何だったのか・・・

グレン・グールドの録音が特に有名で、1956年にリリースされたデビュー盤と、晩年(1981年)にリリースされたものの2種類があります。

で、そのゴールドベルク変奏曲をVGSでプレイというのが今回のアプリの趣旨です。

VGSのMMLには、一般的なMMLには無い「%」というオペランドがありますが、これは、音符の長さの何%目でKEY-OFFイベントを投げるかを指示するものです。実はこれはかなり重要な機能です。VGSの音源(エミュレータ)本体の機能ではなく、MMLコンパイラの機能ですが。この機能の重要性を理解するには、チェンバロとピアノの違いを理解する必要があります。

チェンバロとピアノの楽器としての最大の違いは「強弱の表現」の有無です。チェンバロはキーを押すと絃を弾いて音を鳴らすのに対して、ピアノはキーを押すとハンマーが絃を叩いて音を鳴らします。チェンバロは機械的な仕組み上、ギターのような強弱表現ができませんが、ピアノはキーを押した時の運動がそのままハンマーに伝わるため繊細かつダイナミックな強弱表現が容易に可能です。

ピアノの音の強弱による表現の幅は絶大なものです。それ故に、そこに頼り切ってしまうことでモチーフの本来あるべき姿が濁ってしまうデメリットがあると私は考えています。これをデメリットと捉えるか否かは、演奏者の性質(何処に重点を置いているか)によりけりですが。私の場合、強弱表現が無いことによりモチーフの本来あるべき姿が露わになることに異常な性的興奮のようなものを覚える性癖があります。グールドの演奏のスゴイところは、モチーフを明確に示すチェンバロ的な演奏をしつつ、ピアノ的な要素も利用して表現しているところではないかと思います。これだけでご飯3杯はイケる感じです。

VGSのMMLは%オペランドにより、チェンバロ的な演奏をすることも「比較的容易に」可能です。MIDIでもイベント処理機構としては同じ仕組みだから出来なくはないですが、GUIのシーケンサ(※)だと入力がかなり面倒だからMMLの(というよりMMLしかない)VGSは、チェンバロ的な演奏をする為に生まれた楽器だといっても過言ではありません。そんなことをいうとチェンバロ厨に怒られてしまうかもしれませんが。一応強弱表現もできるのでグールド的な演奏もできます(が、今回は強弱表現は一切入れません)。

※MIDIは汎用性が高すぎるのでイベント数が多すぎて、MMLで制御するのに向かないからMIDIシーケンサはだいたいGUIです。私が知る限り唯一の例外はPC-98版のレコンポーザぐらい。Windows(95)版レコポは、そのレコポの最大の強みがキレイサッパリ失われていましたが…そして、レコポ開発元のカモンミュージックももう潰れてしまいましたが…(Singer SongwriterのPro版とかにはそれっぽい機能があるらしいけど、ノータッチです)

注意深く聴いてみると、同じ8分音符でもモチーフの切れ目(やスタッカート表現)で細かく%が変わっていることに気付くかもしれません。実際、かなり細かい音符区切りで%の値を変化させることで、モチーフの本来の姿を表現しています。

実際のMMLは下記のような感じです。(下記はVariation 4です)
$Init r1024 l16 \s220 \e4420 @2 %75 v14

#-----------------------------------------------------------------------------
Ch0 t95 m8 (Init)
Ch1        (Init)
Ch2        (Init)
Ch3        (Init)
Ch4        (Init)
Ch5        (Init)

#-----------------------------------------------------------------------------
Ch0 o4
Ch0 r8%30b8%50g8 %30>d8<%40a8>%50d8 %80g2f+8^8
Ch0 r2.r8<%30a8>%60c8.%30e8%60g8%30c+8 %70a4%30d8%80g4.%40f+8%60e4
Ch0 %30d8%60c4%50d8%60c+4%80d8^8<

Ch0 r8%30b8%50g8 %30>d8<%40a8>%50d8 %80g2f+8^8
Ch0 r2.r8<%30a8>%60c8.%30e8%60g8%30c+8 %70a4%30d8%80g4.%40f+8%60e4
Ch0 %30d8%60c4%50d8%60c+4%80d8^8

Ch0 r8%30f+8d8%50g8 %80b4.%40agf+ed+e%80f+4.
Ch0 %30e8%50g8%30c+8%40d+8%80e4 %60d+c+r8c8%40e8<%50a8 %30b8>%40d8<%50g8>%70c4.%30d8c8
Ch0 %40c%80d4^16%40c dcd8<%40g8%60f+4%90g8r8

#-----------------------------------------------------------------------------
Ch1 o4
Ch1 r2%30d8%40f+8<%30b8>%40g8%60>c8<%40bg%80a8^8
Ch1 r2%30c8%40e8<%50a8>%80d4.g8^8
Ch1 r2.r8>%30c+8%40e8%60%40g8%60>c8<%40bg%80a8^8
Ch1 r2%30c8%40e8<%50a8>%80d4.g8^8
Ch1 r2.r8>%30c+8%40e8%60%30d8%50c8%70c8d8%80c8.%80d4r8
~ 中略 ~

Ch2 r8%80d8%30f+8%80e8 r4c+8%30e8
Ch2 %80%80d4r8
Ch2 r8%80d8%30f+8%80e8 r4c+8%30e8
Ch2 %80d8%30g8e8%80c4.%40c+8<%80b4.g8%30b8
Ch2 e8%40agf+g>%80d4.c8%30c8<%80f+8%30g8a8%80g4r8

#-----------------------------------------------------------------------------
Ch3 o3
Ch3 %80g4.f+4.e4.r8%30d8f+8
Ch3 <%80b4.>c4.d4.r8%30d8
Ch3 g4.f+4.e8%30g8c+8 %80a8>%30c+8
Ch3 <%80f+4.%30g8<%80g4.%30f+8a8%80d8.%40>def+

Ch3 %80g4.f+4.e4.r8%30d8f+8
Ch3 <%80b4.>c4.d4.r8%30d8
Ch3 g4.f+4.e8%30g8c+8 %80a8>%30c+8
Ch3 <%80f+4.%30g8<%80g4.%30f+8a8%80d8.%40>ab>c+

Ch3 %80d4%30c8<%80b4%30g8>c8<%80f+8 %30a8b8%80d+8%30e8%80g8 %30e8a8%80f+8 %30e8a8r8e4%30d8
Ch3 %80c2c8<%80f+8 %30d8f+8
Ch3 %80g8%30b8g8>%80c2%30d8<%80g4r8

ゴールドベルク変奏曲のモチーフをアナリーゼした結果を実際に示しつつ表現してみようというのが、今回のアプリの目的です。そういう趣旨なので、敢えてループは演奏していません。一部例外はありますが。なお、カノンだけはループするのが通例(グールドもカノンの前半はループしている※)ですが、通例を守る必要はないと思うので無視しています。

※追記:そういえば、グールドがカノン(前半)をループしているのは1981年盤で、1956年盤では無視していましたね。今回のSUZUKI PLAN盤はその中間かな。(ループしたいバリエーションではループ)

まぁ、このアプリは東方VGSの時のようにヒットすることは無いと思います。

ヒットすることは無いと思うから、マネタイズについても色々やる予定です。
ちなみに、iOS版もリリースします。(現在、審査待ち)
iOS版もリリースされました。

2014年9月21日日曜日

これまでで最も大きな東方VGSのリリースです

久々に東方VGS(Android版)をアップデートしました。

今回のリリースには「Appleに対する抗議」という裏があります。

先日リリースされたiOS8.0では、SUZUKIPLAN製のアプリが軒並み動かなくなる不具合が発生します(ご注意ください)。この不具合はVGS mk-IIでオープンソース化している部分が該当箇所だったので、技術的な原因をGitHubのVGS mk-IIのリポジトリでシェアしています。
※iOS側ではなくVGS側の問題だということであれば是非Pull Requestを投げてください

不具合の原因は要するに「Appleがやらかした所為」という認識なので、この件はAppleが対策すべきだと思っています。ただ、私が言いたいのはそんな下らない責任の擦り付け合いではなく、Appleには失望したということです。

4GB超のバカみたいなデカさに比例して、どの程度ユーザに喜ばれるエンハンスがされたのかサッパリ分かりませんでした。
・使い難くなったカメラロール
・動かなくなったメッセージアプリ
・使わないバンドルアプリ増加
・一向に賢くなる気配のない公式キーボード
などなど。

確かに色々なエンハンスメントが見受けられましたが、唯一、ユーザに喜ばれそうなフューチャーは、サードパーティ製のキーボードへの対応ぐらいだと思いました。これもAndroidなら初期の頃から出来てたことなので、今さら感しか感じられませんでした。「何故3年前にやらなかったし」と。

現在、AppleのWebサイトに以下のようなことがデカデカと書かれています。

これまでで
きなiOS
リリースです。


自虐?

OSについては、誰も大きくなることを望んでいないと思います。
OSの容量は小さければ小さいほど良いと思います。

また、大きい≒重いです。
世の中には「俊敏なデブ」も居るかもしれませんが、飽くまでも一般論として。
OSの動作は軽ければ軽いほど良いと思います。

小さくて軽い方が、コンテンツ(アプリや音楽など)が沢山入るしサクサク動くので。

OSはコンテンツを入れる器です。
Windows然り、
Androidにも然り、
言うまでもなくiOSについても然り。
デカくて重い上、中身があまり入らない器など誰が望むのか...

端末がデカくなった件については好みが分かれそうですが。個人的には今でもiPhoneは3.5インチがベストサイズだったと思っています。これは単なる私の好みの問題ですが、少なくとも「全ての人が大きくなることを望んでいたか?」と問われれば、答えは確実にNoだと断言できます。「モーバイル機器ならコンパクトな方が望ましい」という人も少なからず居るので。
デカい画面が必要なら、自宅でiPadやMacBookAirを使った方が良いと思います。
これは半ば引き籠り気味な私特有の考え方なのかもしれませんが。


欠陥だらけのOSアップデート


魅力に欠ける端末アップデート


それらを提供するAppleに失望しました
※そういった意味ではBad Apple!!を入れた方がメッセージ的な意味でも適切だったかもと思ったのですが、これは単純に準備が間に合いませんでした。無念。


文句を言うだけなら誰でもできます。
既に各所で「iOS8はアカン」という声が上がっているので、そろそろ飽きた感もあります。
そこで、本当にユーザに喜ばれるアップデートとは何ぞやというお手本をAppleに代わって示してみようというのが、今回のアップデートの端的な動機です。
捻くれててごめんなさい。


そんな暇があったらiOS8の不具合対策を早くせい!
というお叱りの言葉を頂かないかと、ヒヤヒヤしながらアップデートの作業をしてました。

日に日に「iOS8で動かない」という報告が順調に増えていく事に心を痛めております

しかし、対策の目途はまだ立っていません

本当に申し訳ありません

三日とろろ美味しゅうございました

流石に三日とろろのくだりはジョークですw

【追記】
この日記を投稿したすぐ後に原因を特定しました。
みまがうことなきiOS8のバグです。
https://github.com/suzukiplan/vgs2/issues/3

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

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