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

2014年3月6日木曜日

VGS mk-IIのスペックやマネタイズ等

SUZUKI PLAN - Video Game System mk-II (VGS mk-II)の開発が着々と進み、ゲーム本体(エミュレータ)が完成しました。

グラフィックスのスペックは、160×200ピクセルのモノクロ8段調です。
音楽は、将来的にPSG音源を搭載するかもしれませんが、今のところ、効果音のみです。

【モノクロ】

最初、モノクロ8段調 or 3ビットカラー(8色)のどちらにしようか迷いましたが、「初代VGSのプレミアム感を上げたい」という内部的な事情で、とりあえずモノクロにしてみたところ、思っていた以上に味わい深い印象になりました。



最近、横井軍平さん関連の本を読んでインスパイアを受けた感もあります。確かに、色が付いているよりも単色の方が、作るサイドとしても楽だし、モノクロでも、リンゴの形をしていれば赤いと想像できます。

モノクロのベースカラーは、プログラムを作る際にAPI関数を用いて7色から好きな色を選ぶことができます。例えば、海や空を題材にしたゲームなら、cyanベースのモノクロにすれば、そういう雰囲気が出ますし、コンフィグレーションなどで作り込めば、ユーザが好きな色を選ぶこともできます。
(1) blue ()
(2) red ()
(3) magenta ()
(4) green ()
(5) cyan (水色)
(6) yellow (黄色)
(7) white (白)
※PC-8801やPC-9801世代のプログラマが空でも分かるように、例の並びにしておきました。

ぶっちゃけてしまえば、今回のSDKは、オープンソースで公開するつもりなので、やろうと思えば256色のフルカラーで表示する改造も簡単にできます。(VRAMは1ピクセル8bitで管理するのが最もCPU演算効率が良いので)

【160x200】

横幅の160ピクセルというのは、「等倍表示」でiPhoneの横幅ピッタリに収まるピクセル数にしたかったので、非Retinaモデルの横幅は320ピクセルだから、その半分の160ピクセルを採用しました。

これを基準にして、画面比率から幾つかの候補をピックアップ。
(1) 2:3 = 160 x 240
(2) 1:1 = 160 x 160
(3) 3:4 = 割り切れないからボツ
(4) 4:5 = 160 x 200

そして、考察。
(1) → 3.5インチのiPhoneやiPod touchで操作用の空きスペースが無くなるからボツ
(2) → 空きスペースがちょっと広すぎるからボツ
(4) → バランス的にも良さげなので採用

最後に、ステータスバー(縦=10×2)と広告(縦=25×2)を入れた状態の設計図を書いてバランスチェック。
3.5インチ端末でのレイアウト
4インチ端末でのレイアウト
【広告】

サラリと「広告」と書きましたが、mk-IIはどちらかといえば「広告モデル」でマネタイズするタイプのプラットフォームにします。mk-IIではアイディアベースの小作品をなるべく短い期間で沢山リリースして、ヒットの予兆を探ろうと考えています。

そして、初代VGSはこれまでと同様、有料販売のみ(広告でのマネタイズをしない)プラットフォームにすることを考えています。つまり、mk-IIで作ってみて反応が良ければ、本格的なプレミアム・バージョンを初代VGSで作るという感じです。

私が今までVGSでは頑なに広告で収益化しなかった(実験的なことはチラホラやりましたが、本格参入は避けていた)のは、それをやってしまうと、「そういうブランド」だと思われてしまうこと(つまり、有料アプリが売れなくなること)を避ける為です。

よく、「有料アプリは売れない」と言われていますが、それは、マーケティング戦略(主にブランディング)がマズイからだと思います。SUZUKI PLANの戦略は、単体のアプリではなく「VGS」という独自に開発したゲーム機自体を市場へプッシュしていく方法です。果たして上手くいっているのか、まだ定かではないですが、確実に数字は伸びてきているので、上手くいきつつあるのではないかと思います。
SUZUKI PLANのAndroid有料アプリの売上げ推移
2012/2/29~2014/3/5
(密度=継続性、高さ=売上高)
それ故に、安易な広告モデルの導入は良くないと考えました。

mk-II限定で広告によるマネタイズをするのであれば、初代VGSのブランド価値を落とさないというより、寧ろ引き上げるのではないかと思った訳です。

【呼称】

VGSとは別路線だということを明確にするため、呼称はVGS mk-IIではなく、変えるかも。

2014年2月27日木曜日

VGS mk-II

SUZUKI PLAN - Video Game Systemの次世代機(mk-II)の開発が着々と進んでいます。

一般的に、ゲーム機の世代が進化すると性能が向上したりしますが、VGSの場合、「無駄をそぎ落とした形」に進化する点が若干特殊かもしれません。

[解像度]
初代: 240×320 or 320x240
mk-II: 160×200 (インタレース)

[同時発色数]
初代: 8bitカラー(256色)
mk-II: モノクロ8段調
※3bitカラー(8色)にするかも

[音源]
初代: 波形メモリ音源(6ch)
mk-II: PSG音源(3ch)

[処理系]
変更なし(C言語+専用API)

[対応機種]
変更なし(Windows, Android, iOS)

[公開SDK]
初代:
- Windows+Android版は無償提供
- iOS版は非公開
mk-II:
- 全て無償提供
- オープンソース

今のところ、こんな感じを予定してます。まだ、色々変わると思いますが、方向性は概ね定まっています。
方向性は、「よりゲームを創りやすいゲーム機への進化」です。
この進化を特殊と捉えるか、普通と捉えるか・・・「ゲームを面白いものに進化させたい」という視点で見れば、案外後者なのかもしれません。
「創りやすい」=「作り手の視点」ではありますが、創り難ければ生まれ難いのもまた事実なので、割と正当な進化だと思っています。

2013年11月27日水曜日

VGSの実機仕様(※与太話)

私は、有料販売のみを収益化手段として、AndroidとiPhoneのVGS用ゲームをリリースしていますが、「有料販売では売れない」ということについては、百も承知しています。

実際、殆ど売れません。
売上げはせいぜい、月5千円ぐらいです。
(※ほとんどAndroid版の売上げのみ)

大手はアプリ内課金(基本無料)で荒稼ぎし、個人は広告(無料)で微銭を稼ぐ。そういうスタイルが定着している状況下では、お金を払ってゲームを買ってくれる人なんて、まず居ません。そんな事は、ちょっと考えれば誰でも分かることです。

それでも私は、アプリ内課金や広告で収益化を図ろうとは思いたくありません。

なお、事業になるレベルで収益を上げようと思えば、アプリ内課金が必須です。ただ、アプリ内課金でやる場合、お金を出してくれる人から根こそぎお金を吸い出すビジネスモデル(パズドラの魔石やソーシャルゲームのスタミナみたいな感じ)じゃないと、事業にはなりません。そもそも、90%以上の人は、「基本無料」のアプリに対いしてお金を投じることはありません。パズドラの場合、それ以前の過熱感が凄すぎた(正に、修羅の国だったw)ため、若干課金率は高いかもしれませんが、それでも、課金しない人が大半です。そのため、課金してくれる人から徹底的にお金を吸い出さないと商売になりません。私は、そういうビジネスモデルで稼ぐ事について、社会的弱者からお金を毟り取っているように見え、嫌悪感のようなものを覚えています(※飽くまでも個人の感想です)。要するに、儲かるだろうけど不敬だと思っているから、手を出しません。そもそも、不敬なビジネスモデルというのは割とすぐに崩壊するものです。(かといって、正しければ必ず報われるという世の中でもありません...世の中は複雑なのです...)

広告は単価が低すぎるので、商売にならないと思っています。よく使って貰えるアプリなら、ある程度安定した収益は得られると思いますが。ただ、ゲームだとどうしても飽きて来るので、ゲームに広告を載せても、アタリショックみたいな感じになるのを早期化するだけだと考えています。つまり、TwitterとかLineみたいな感じのものなら良いと思いますが、そうでなければ、恐らく「お小遣い程度」の収益しか得られないんじゃないかと(そして、お小遣い程度では、どうしても品質が上がらない)。
ちなみに、私は、多少儲かるにも関わらず、敢えて広告アプリを出していません。その理由は、それによるブランド価値の低下を恐れているためです。実は以前、広告アプリを出していたのですが、使っていた広告APIに対してsecroidによるリスク判定がされた事がキッカケで、広告アプリを完全撤去しました。その程度の些細な理由で広告アプリを撤去できた理由は、ブランディングする上で邪魔だという考えがあったためです。実際のところ、広告を載せれば得られる筈の収益を敢えて拒否する程度の些細なことで、CS(顧客満足度)が上がります。もちろん、広告が邪魔な位置にあるとかそういうレベルのモノは論外です。しかし、例え邪魔にならない位置にしか配置してなかったとしても、広告が有るor無いで比べれば、確実に無い方がCSがアップします(何故なら、世の中には広告アプリが溢れているから)。それならば、広告収益程度のはした金は受け取らず、無料アプリにすら広告を載せていない方が将来の利益になる...と、私は考えました。なお、東方VGSについては、ガイドライン上グレーだということもあり、載せてません。結構アクティブ率が高いし、アップデートも頻繁にできる仕組みなので、広告を載せていれば結構儲かったんじゃないかと思います。たぶん、月3~5万程度は軽く稼げると思います。しかし、私は東方で商売をする気は最初から無く、完全に趣味でやっている事だから、気にしません。多少なりともSUZUKI PLANのブランド価値向上に貢献してくれるかもしれませんし...東方のブランド価値しか上がらないんじゃないかとも思っていますが、それならそれでも良いと思っています。

健全に稼ごうと思えば、1ユーザあたり一律100~1,000円みたいな感じの、コンシューマ機用のゲームと同じスタイルで売る事(=有料販売)がベストだと考えている訳です。もちろん、その場合、1本のゲームで永続的に収益を得る事は不可能です(需要はいつか必ず食い尽くすので)。ただ、それについては、新作を出し続ければ良いだけの話しなので、大した問題ではありません。家庭用ゲーム機だって同じですよね。私は、家庭用ゲーム機のゲーム市場には参入できない(ライセンス料を払うのがキツイだろうし、そもそも個人だと相手にして貰えないと想定している)から、スマートフォンのアプリ市場を利用して、独自の家庭用ゲーム機(VGS)用のゲームを販売している訳です。

さて、前置きが長くなりましたが、ここからが本題ですw
※以下のお話は、完全に私の脳内での出来事です。

「AndroidやiPhoneで動作するVGSは、エミュレータです」
そんな話しを、耳に胼胝ができるほどしてきました。
「ただし、実体の無い論理ゲーム機です」
そんな話しもしてきました。

しかし、漠然としたイメージではありますが、VGSには実機のイメージがあります。
外観としては、下図のような感じ(だいたい4インチぐらい)です。
VGS実機のイメージ図(※寸法は適当)
左側のボタンはPause、右側のボタンはExitです。
タッチパネルはシングルタッチ専用です。
なお、Wi-Fiとかそういうのはついてません。
本体価格はたったの5,980円。

VGSでは、VGS用ゲーム以外のものは一切動きません。
ついでに、アプリ内購入とかは仕組み上不可能です。
もちろん、広告アプリも存在しません。

初期状態では、Invader Block 2がプリインストールされています。VGS対応ゲームを買う場合、本体をPCに接続して、PC経由でSuzuki Plan Game Store(SPGS)というサイトからゲームソフトを購入します。

SPGSには、SUZUKI PLANやサードベンダーが開発した色々なゲームが販売されていますが、AppStoreやGooglePlayとは、価格設定の仕組みが根本的に異なります。AppStoreやGooglePlayでは、デベロッパが自由に価格設定をすることができますが、SPGSではデベロッパが価格設定できない仕組みになっています。

SPGSでゲームを販売する場合、最初は基本的には無料で販売しなければなりません。ただし、Android版とかである程度の販売実績のあるものであれば、例外的に最初から有料になる場合があるみたいです。

ゲームの販売価格は、独自の番付システムにより、無料~1,000円ぐらいの範囲で、100円刻みの価格設定がされます。そして、番付はユーザからの評価ベース(+SUZUKI PLANの裁量)で変化していきます。基本的に、ユーザからの評価ベースで番付されるため、面白いゲームほど、価格が高くなっていきます。そして、売価の70%が開発者の懐に入り、30%がSUZUKI PLANの懐に入ります。

お金の無いユーザは新登場の無料ゲームに群がります。
そして、単純に「面白いゲーム」を遊びたければ1,000円を払えばOKという感じです。

まぁ、私がこれを実現できる可能性はゼロに等しいですw

ワールドワイドでやろうとすると物凄く壁が高いし、ワールドワイドじゃないと1,000円/本では儲からないだろうと思っているので。主に個人(同人)主体のプラットフォームということであれば、日本限定でもOKかもしれませんが。

実現可否はともかく、仕組み的には面白そうじゃないかと思います。
任天堂あたりがやってくれないかなぁ...(もちろん、VGSじゃなくても良いですw)

2013年6月4日火曜日

VGSを育てる

業務連絡:
ちょっとばかり、このブログのテンプレートを変更してみました。
もしかすると、過去の記事(大きな図面があるもの)は、レイアウトが崩れているかもしれません。
実は、前のテンプレートだと、スマホで表示した時に上手く閲覧できないことがあったようなので、なるべく早く変更したかったのですが、諸般の事情で変更できませんでした。ですが、諸般の事情をクリアできたので、めでたくレイアウト変更した訳です。

以下、本題です。

私がSUZUKI PLAN - Video Game System(VGS)を完成させてから、早くも一年ぐらいの月日が流れてしまったようです。時の流れとは早いモノです...恐ろしい。VGSのアーキテクチャ設計をしていたのが昨日のことのようです。
その間に私は、Invader Block 2NOKOGI RiderVGS Chiptune MusicWTC1 on VGSHOPPER東方BGM on VGSの6本(Lite版を含めると8本、非公開にしたClassic Blockを含めると9本)のAndroidアプリをリリースし、内3本はiPhoneにも移植してリリースしました。

蛇足ですが、iPhone版はオマケです。過去の記事でも書いているように、私は今後、iPhoneではなくAndroidが伸びてくると読んでましたが、実際、そんな感じで遷移してきています(Appleの株価の転落っぷりを見て頂ければ分かると思いますが、やはり、iPhone5は失敗作だったようです)。恐らく、iPhoneの末路は、Macと概ね同じ運命を辿ると思います。AppleがAndroid版iPhoneを出せば、まだまだ伸びそうな気がしてますが、多分、iOSと共に心中するんじゃないかと思います。
でも、私自身、自作ゲームをプレイする時は専らiPhone版だったりしますが。60fpsで動いてくれるので。ゲーム機としてはAndroidよりiPhoneの方が優秀です。でも、スマホとしてはiPhoneよりAndroidの方が優秀。ただ、それだけのことです。(Jelly Beanなら60fpsで動くらしいので、私もJelly BeanにすればiPhoneではなくAndroidでゲームをプレイするようになるかもしれません)

で、メインのAndroidアプリの総ダウンロード数は、今数えてみたところ合計7620本でした。
内、ほとんどがNOKOGI Rider(Lite)です。(NOKOGI Rider(Lite)は5074本)
最近では、東方VGSのDL数が着々と伸びてきている感じです。
当面(紅魔郷の曲をコンプするぐらいまで)は、どんどん曲追加をしていこうと思います。
で、その後ですが、以前ニコニコ動画のブロマガでも書きましたが、Invader Block 2やHOPPERみたいな感じのミニゲームを大量に作っていく路線でいこうかと思っています。

VGSを開発した当初の目的は、NOKOGI Riderを作るためのエンジンとすることです。そして、それ自体は成功しました。ただ、私の真の目的は、自分でゲームを作ることでは果たすことができません。私は、私が面白いと思うゲームが世界に溢れて欲しいと思っています。もちろん、私自身がゲームを作ることが好きではありますが、私だけの力では、世界全体にイノベーションを起こすことは不可能だと想定しました。そこで、私以外の方にVGSでゲームを作って頂くことで、私にとって楽しいゲームを増やせば良いじゃないと思い、VGSをオープン化して無料で配った訳です。

VGSでゲームを作れば、そのゲームはSUZUKI PLAN臭の強いゲームになります。
そうなるようにデザインしたので。
これは、一種のブランディング戦略だと私は勝手に思っています。
私の現在唯一の収益化手段は有料アプリの販売ですが、有料アプリを買っていただくことの壁は、もの凄く高いです。その壁を乗り越える為に必要なのは、ブランドではないかと思います。
SUZUKI PLAN臭というのが、多分それ(ブランド)です・・・勘ですが。
「SUZUKI PLAN臭のするゲームなら売れる」という空気を作り出せば、自然と開発者が爆発的に増えるんじゃないかと期待しています。そして、当然ながら私が作ったゲームは売れるようになり、晴れて、世界に私が好きなゲームが溢れ、私自身も潤う・・・という、敗者の居ない理想郷ができる訳です・・・甘すぎるかもしれませんが。

ただ、今の時点ではVGSの普及率はイマイチです。まだまだ、私自身がVGSを育てていく必要があるということだと思います。なお、「育てる」というのは、VGSの機能拡張をすることではありません。VGSの機能自体は、細かい修正ならするかもしれませんがフィックスしています。つまり、大幅な仕様変更が発生することはまず無いと思ってくれて間違いありません。
私の言う「VGSを育てる」というのが意味する事は、「VGSの現時点の機能で面白いゲームを作ってリリースしていく」という事です。その為にもSHOT05を開発・・・というのが当初の計画でしたが、それについては、ブロマガでも書いた通り頓挫中です...SHOT05については、専業でアプリ屋ができる程度になったら開発を再開しようと思います。(いつになるやら...)

私自身がSTGが好きだからSTGを作っていた訳ですが、より幅広い開発者へVGSを訴求するには、色々なジャンルのゲームを作った方が得策なのかもしれない・・・と、思いつつある今日この頃です。

2013年2月17日日曜日

VGSでの広告表示(Tap for Tap)

先日、InvaderBlock2のフリー版(広告付き)を公開しました。
広告の実装には、Tap for Tapを採用してみました。
私は、どちらかというと広告ビジネスに否定的な見解を示していたので、その釈明を兼ねて考え&TIPS(VGSのアプリで広告を実装する方法)を記しておきます。

広告会社の概要

Tap for Tapは、カナダ(米国のブリティッシュコロンビア州)に拠点をおく広告会社です。
私のアプリ事業は、北米方面を中心に展開しているので、そっち方面の会社の方が良かろうという判断です。米国本土の方が良いかもしれませんが、サービス内容が興味深かったので、そこにしてみました。デベロッパー数は6,000人前後。(まだ新興企業ですね)

サービス概要

Tap for Tapの場合、プロモーション(ユーザ獲得)と収益化のバランスを、任意に調整できます。
例えば、広告で得た収益の全てをプロモーションに使うことができます。
# 実質的な費用対効果については、まだ十分なデータが集まっていないので未確認。

利用した経緯

NOKOGI Riderの販売を開始してもうすぐ半年ぐらい経過します。
その間の販売実績は、現時点で57本ぐらいと不調です。
ゲームそのものは面白いと思います。
しかし、如何せんプロモが弱すぎることが売れない原因かもしれません。
マネタイズのみの広告アプリというのは、未だにちょっと疑心暗鬼しています。
しかし、プロモ用途でちょっと使ってみるぐらいなら良いんじゃないかと思い始めました。

ただし、広告を入れれば結構沢山のパーミッション要求が必要になります。
NOKOGI Riderに関しては、それで汚したくないと考えました。
そこで白羽の矢が立ったのが「InvaderBlock2」です。

「InvaderBlock2」は、GooglePlayでの販売テスト用にリリースしたアプリです。
ゲームそのものの面白さは中々だと思ってます。
しかし、やはり実質的に有償販売だけなので、サッパリ売れません。
(一応、1年で10本ぐらい売れましたが)

ついでに、InvaderBlock2は、広告アプリで成功するために必要な要素を持っています。
恐らく、広告アプリとしての潜在能力は、NOKOGI Rider以上です。
そう思っていた矢先、Tap for Tapの担当者から「InvaderBlock2に広告を載せてくれ」というeメールがあり、サービスを確認したところ私の方針(プロモーション強化)にマッチしていると思ったので、それを利用してみることにしました。

VGSアプリでの広告の実装方法(基本編)

とても簡単です。以下、InvaderBlock2のソースコード(Java側)の抜粋で説明します。
    @Override
    public void onCreate(Bundle savedInstanceState) {
        try {
            ~VGS関連の初期化(中略)~
            } else {
                // View の設定
                mMainView=new VgeSurfaceView(this);
                mLayout=new FrameLayout(this);
                mLayout.addView(mMainView);
                getWindow().setContentView(mLayout);
                TapForTap.initialize(this, "自分のAPIキー");
                mAdView = new AdView(this);
                DisplayMetrics metrics = getResources().getDisplayMetrics();
                int width = metrics.widthPixels;
                int height = (int)(50 * (width / 320.0));
                LinearLayout.LayoutParams myLayoutParams = new
                                        LinearLayout.LayoutParams(width, height);
                mAdView.setLayoutParams(myLayoutParams);
                mAdParam=new FrameLayout.LayoutParams(
                    FrameLayout.LayoutParams.MATCH_PARENT,
                    FrameLayout.LayoutParams.WRAP_CONTENT,
                    Gravity.BOTTOM);
                mLayout.addView(mAdView,mAdParam);
                mAdPut=true;
            }
        } catch(Exception e) {
            Log.e(LOG_TAG, "AN EXCEPTION DETECTED.", e);
        }
    }
前半の初期化処理は、VGS固有の初期化処理なので中略しました。
ポイントは青色の網掛け部分です。
広告の処理は、ゲームとは別のビューで実装します。
大まかに、VGSのプログラムに広告を実装する場合、次のような実装をすればOKです。
(1) FrameLayoutクラスのオブジェクト(mLayout)を準備
(2) ゲーム本体のビュー(mMainView)を作成し、mLayoutに追加。
(3) 広告表示用のビュー(mAdView )を作成し、mLayoutに追加。
なお、実装中の緑色の網掛け部分は、広告ビューのスタイルを設定する処理です。
この部分は、レイアウトのxmlでも良いかもしれません。(サンプルはその方式でした)

メイン処理(C言語)との連携処理

広告を表示しっぱなしのアプリであれば、上記の実装でOKです。
ただし、ゲームの場合、ゲームのプレイ中に広告表示がされるのはハッキリ言って邪魔です。
そこで、広告の表示をON/OFFできる仕組みの実装方法を解説します。

VGSの場合、C言語で実装しているメイン処理に広告のON/OFFなどのオペレーションを要求するためのインタフェースを実装する必要があります。下記のような感じで良いと思います。
    /*
     *------------------------------------------------------------------------
     * Java側への要求を取得する (JNI)
     *------------------------------------------------------------------------
     */
    public static native int getRequest();
※数値(jint)でオペレーションを返す仕様にします(0 = None / 1 = put ads / 2 = delete ads)

そして、VgeSurfaceViewのスレッドでオペレーション(0以外)を取得した場合、アクティビティクラスでそれを処理できるようにするために、アクティビティクラスにハンドラ関数を実装します。
    public Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch(mRequest) {
                case 1: //広告を表示
                    if(!mAdPut) {
                        mLayout.addView(mAdView,mAdParam);
                        mAdPut=true;
                    }
                    break;
                case 2: //広告を削除
                    if(mAdPut) {
                        mLayout.removeView(mAdView);
                        mAdPut=false;
                    }
                    break;
            }
            mRequest=-1;
        }
    };

VgeSurfaceView側の実装はこんな感じでOKです。

    public VgeSurfaceView(Context context) {
        super(context);
        act=(IBLOCKA)context;
        vram=Bitmap.createBitmap(XSIZE,YSIZE,Bitmap.Config.RGB_565);
        vram.setDensity(Bitmap.DENSITY_NONE);
        vramRect=new Rect(0,0,XSIZE,YSIZE);
        getHolder().addCallback(this);
    }


    @Override
    public void run() {
        SurfaceHolder holder=getHolder();
        Canvas canvas;
        int rc=0;
        int rq;
        while (isAttached) {
            canvas=null;
            try {
                rc=IBLOCKA.setVram(vram);
                canvas=holder.lockCanvas();
                if(null!=canvas) {
                    canvas.drawBitmap(vram,vramRect,screenRect,screenPaint);
                }
            } finally {
                if(null!=canvas) holder.unlockCanvasAndPost(canvas);
                if(rc!=0) break;
            }
            rq=IBLOCKA.getRequest();
            if(0!=rq) {
                IBLOCKA.mRequest=rq;
                act.handler.sendEmptyMessage(0);
            }
        }
        if(0!=rc) {
            System.exit(0);
        }
    }
getRequestで0以外を取得した場合、値をアクティビティクラスのメンバ変数にセットして、sendEmptyMessage関数でハンドラ関数を実行して、1(広告を表示)または2(広告を削除)を実行します。
実は私はJavaが苦手なので、あまりJavaっぽくない作り方かも。
この辺りは、お好みでアレンジしてください。

概ねこんな感じの実装を使えば、VGSのアプリに広告を実装できます。
広告の実装方法については、AdMobなどの他の広告会社のものでも、基本的なことは概ね同じじゃないかと思います。





2012年12月2日日曜日

VGS Music Player

VGS用の音楽プレイヤを開発中。
完成次第、VGS本体に同梱して配布する予定です。
基本機能:
(1)vgsmmlでコンパイルしたBSLOTファイルの再生
(2)シークバーで任意位置からの再生が可能
(3)ReloadボタンでMMLをコンパイルしてから再生するまでの手間が少ない
(4)Waveボタンで再生データをwavファイルに保存可能
(5)ウィンドウは、常に画面最前面に表示

当初、MMLでもダイレクトに演奏できるようにしようと思っていましたが、vgsmmlコンパイラの処理が複雑過ぎ(部品化を前提に作っていなかったので色々と焼き直しが必要)なため、MMLのダイレクト演奏機能は断念しました。(Reloadボタン(3)がその罪滅ぼし)

開発状況としては、ほぼ完成しています。
あとは、Waveボタンを実装するだけ。


2-Dec追記:

完成しました。テスト+マニュアル訂正が終わったら、Vectorへアップする手続きを取ります。
かなり単純です。
ループ曲の場合、ループ回数とフェードアウト間隔を指定します。
非ループ曲の場合、単純に出力します。

とりあえず、単体プレイヤーをβ配信しておきます。
こちらから落せます。


2-Dec追記:

β版ですが、「Loop time」が適切に機能しないバグがありました。
正式版では修正しますが、β版は修正しない方向です。



2-Dec追記:

あ、あと、Drag&DropでBSLOTファイルを読み込めた方が良いか。
やるつもりだったけど、β版では入れ忘れました。
正式版には入れます。

2012年11月18日日曜日

見本原稿(VGS本)

VGS(SUZUKI PLAN-Video Game System)に関する本の執筆が先週完了し、企画出版をするため、先週、企画のたまご屋さんへエントリーしました。企画が出版社へ送られるかどうかは、企画のたまご屋さんの審議待ちという状態。

企画提案用の見本原稿は、こんな感じです。


企画の審議には結構時間が掛かるようです。

連絡が来るまでに最長で3ヶ月程度掛かるとか。
結構長いですね。
なお、企画のたまご屋さんから配信待ちの期間中であれば、当方から別ルートで出版社へ営業しても問題無いらしいので、本書の出版に興味のある出版社の方は、随時ご連絡していただいても問題ありません。ただし、企画のたまご屋さんから配信されている期間中の場合、企画のたまご屋さん経由での依頼をお願いします。
ちなみに、出版が実現した場合、本を売るための営業活動等については、出版社側で率先して行っていただきたい(私にはチャネルが無い)ので、出版社側にも相応のリスクを取って頂いた方が良いと考えています。そのため、出版する場合、私からの費用負担はゼロということにします。だから、企画出版という手法でいこうとしている訳ですが、逆説すれば、本の売上げ中の私の取り分(印税)は低くても問題無いということです。(もちろん、企画が何処にも通らなかった場合は、自費出版にせざるを得ませんが)

[追記1] 21-Nov
コメントで頂いた横置き画面対応ですが、Windows版、Android版ともに完成。
あとは、マニュアルを修正次第、Vectorへアップ申請します。
ちなみに、vgsmkpj2コマンドでプロジェクトを作ればランドスケープ(横置き)、vgsmkpjコマンドでプロジェクトを作れば従来通りのポートレイト(縦置き)という仕様にします。
※なお、基本的にWindows only・Android onlyというスペックは作りません。


[追記2] 22-Nov
Vectorにアップロード申請しました。
アップロード申請した直後、マニュアルの誤字が見つかりましたが・・・(オンライン版のみ修正)
本の方の原稿校閲が落ち着いたら、マニュアルの校閲ももう一度しっかりやっておきたいところ。
本の方の原稿校閲が落ち着く気配が無さそうですが。

[追記3] 22-Nov
とりあえず、企画のたまご屋さんを経由しない独自営業で2社ほど企画を送ってみました。
・(株)アーク出版(http://www.ark-gr.co.jp/shuppan/
・(株)ブレイン/東京図書出版(http://www.tokyotosho.co.jp/
しかし、専門書の企画出版というのはそもそも少ないっぽいので、ダメかも。
やはり、自費出版コースかな。


Melonbooks DL

2012年3月24日土曜日

VGS Chiptune Music

「INVADER BLOCK 2」のリビジョンアップ作業に入る前に、折角作った独自音源ドライバなんだから、サンプルミュージックだけでも配っておこうと思い、Androidマーケットで無料配布しておきました。(本当は、8曲作って出そうとしてましたが、6曲のみですが...)
成果は、何かしらの形に残しておきたかったので。

アプリの名称は、「VGS Chiptune Music」(和名:VGS チップチューン音楽)。
「音楽&オーディオ」のカテゴリに流してます。
明日ぐらいには、Android Market(Google Play)で「suzukiplan」とかで検索してヒットする筈。
そういえば、有料アプリは開発者本人が買えない仕組みになっていますが、無料アプリはどうなっているんだろうか?無料アプリを公開するのは初めてなので、1回だけ試してみる予定。

これで、リビジョンアップ作業に入れます。


追記:(16:45頃)
もう公開されたようです。無料の方が反映が早いのかな。
自作アプリを自分でダウロードすることは、無料なら可能なようです。
FTPやSDカードで携帯電話にAPKを持っていく手間が省けて助かります。

あと、無料アプリだとAdMobで広告を打つことができるようです。(有料アプリだとできない)
やっぱり、無料で流して、アフィリエイトで収入を得るタイプじゃないとダメポですかね。

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

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