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の英語情報をとりあえず執筆。(こんな感じ
まぁ、私の英語はかなりアレです・・・得意ではありません。

要は、通じれば良いです。
しかし、通じているかどうかが最大の疑問ですが。
一応、海外の方から感想などを貰えているので、とりあえず通じていると思っておきます。

読むのと聞くのは翻訳ツールがあるので割と問題ありませんが、書くのと話すのは難しい。
海外に住んだ経験のある人曰く、読むのと聞くのは1年程度住んでいれば誰でもできるようになるようです。しかし、書くのと話すの(特に書く事)は、不自由なくできるようになるのには2~3年ぐらい掛かったそうです。3年ぐらい海外で生活していると、日本の友人や親と話すとき、とっさに単語が出てこなくなるデメリットもあるようですが。

海外の方と文通していれば、その内上達してくれるんじゃないかと期待。
とりあえず、勢いでやりとりをすれば、結構普通にコミュニケーションできます。
あとは、(本業で)オフショア案件をやる時とかに、通訳に頼らず積極的に英語を使うようにすると、結構上達します。
あまりひどいと現地の方から「スイマセン、オマエ ハ ニホンゴ デ オk」と突っ込まれますが。
でも、曲がりなりにもコミュニケーションできる程度の水準に達すれば(通訳を咬まない分)、やりとりのスピードがアップするので効率的です。まぁ、オンサイトじゃない場合、時差があるから通訳を介しても効率面では変わらない気がしますが。

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からシェアを奪うのなら、その部分をケチってはいけないと思います。

調整

SHOT04のライト版を作成する作業を進めておきました。
あと、エンディングやらを作ったりして、とりあえず形だけは仕上がった感じです。
残るは最終調整のみ。

ちなみに、チュートリアルというかHow to playは、Demonstrationを見れば分かる程度の内容しかなかったので削る方向で。細かいルールの説明は、日本語と英語でWeb+マーケットの説明文でアップすることにしました。(そろそろ、情報処理の勉強をしないとマズイ感じだから、8月中にはマスターアップしたいので、作り込みは避けたい心境)

なお、ライト版は製品版リリースとほぼ同時にバージョンアップします。
あと、Windowsでもライト版をビルドするようにしておきました。
Android版の製品版をリリース後にWindows版のライト版もリリースする予定。
Windows版の製品版は主に販路の調整中。(DLマーケットあたりが妥当な線です)
で、結局今日はそういった作業に追われてしまい、肝心なゲーム本編の調整が進まず・・・
調整は明日から会社で休み時間などにスマホを使ってやる予定。とりあえず、APKをSDカードで持っていき、Androidを持っていてゲーム好きな感じの人にテスタになってもらいます。

調整目標は、
・Beginner = 私がノーミスでオールできる程度
・Soldier = 私がほどよくオールできる程度
・Ninja = 私がギリギリ、オールできる程度
まだまだ遠い。。。

2012年8月19日日曜日

SAI

エンディングのスタッフロール(というほどのスタッフはいないけど)の字を書こうと重い、新開発環境にBambooを設置して、SAIのライセンスファイルを再発行する作業をしていて気づいたのですが、SAIが久々にバージョンアップされているようです。
http://www.systemax.jp/ja/sai/devdept.html

とりあえず、すごいペースでベータアップ中のようなので、旧バージョン(Ver.1)を入れておきました。
新バージョン(Ver.2)でも、ライセンスは引継ぎ可能(再購入は不要)なようです。

状況を見ると、ソースリファクターしている?
微調整レベルのエンハンスならリファクターするのは効率が悪いですが、SAIの場合、既にVer.1で微調整レベルのエンハンスはし尽くしていると思っているので、SAIのエンハンスをするなら、リファクタしか無いってことですかね。

カンストはしない・・・はず

とりあえず、SHOT04のラスボスが完成。
第三形態を作るかどうかは、調整の状況を見て決めようと思います。
たぶん、調整すると難易度は落ちる方向になる筈なので、「これでは物足りない!」という難易度だった場合に第三形態を入れます。「もう十分です><」という場合、入れない方向で。(現時点で結構な鬼畜難度なので、後者に倒れる可能性が高そう)

で、この状況でとりあえず「ノーミスでオールした場合、どのぐらいのスコアが入るのか?」という素朴な疑問があったので、無敵フラグを立てた状態で最高難度をノーミスでオールしてみました。
1億5~6千万ちょいぐらいのようです。
理論値(もっとも稼げるパターン)でクリアしたとしても、2億ぐらいですかね?
ちなみにカンストは999,999,990点。
なので、どんな変態シューターがプレイしたとしても、カンストすることは無いと思います。
現時点の難易度で普通にプレイした場合の私のベストスコアは2千万弱ぐらい。
全国一レベルの方の場合でも5千万前後。

さて、これから鬼調整をするか・・・
調整というのは、ひたすらプレイして難度を弄る作業。
遊び要素が大きいので、あまり苦にはなりませんが、時間が掛かる作業です。
基本的に、Ninja以外はどんどん緩くする方向で調整する方向。

ちなみに、SHOT03の時の調整に要した時間は100時間前後。
SHOT04は、現時点ですでに100時間ぐらい調整しています。。。
難易度を3種類にしたことに加えて、機種を3機種にしたことが色々と痛い。。。
「機種は2種類で良かったんじゃない?」と、今更思っていたりします。

生産状況(18-Aug)

SHOT04の現時点(5面ボスの第2形態を3~5割ぐらい作成完了したところ)の生産ステップ数を取得。

実行行数がほぼ16ksというところ。(8/4の前回の生産状況から+3ks増加)
まだ、エンディングとか、チュートリアルとか、調整とかでワサワサと増えそうな感じなので、完成時点で20ksぐらいになるかも。

以下、蛇足

ちなみに、仕事でプログラムを作る場合、ステップ数を見積もり値にしている所が意外と多くあるようですが、ステップ数の見積もり値なんて全然アテにならないのにやる意味あるんですかね?私が仮に、想定規模を計上する必要に迫られた場合、とりあえずFP法(私の場合、画面単位ではなく機能単位で算出する方が精度が高い)なりで何かしらの根拠のある数字を出しますが、だいたい以下のような要因でその数字はフェーズとともに上下します。
①「この機能とこの機能は共通化できる」(機能レベルの共通化見落とし)
②「この機能はx機能とy機能に分割しなきゃダメだ」(機能レベルの分割漏れ)
③「この機能が必要だった」(機能レベルの実装漏れ)
④「この機能は要らなかった」(機能レベルの冗長実装)
そして、より下流フェーズに進むと①~④の「機能」が「関数」とかの細かい単位に変わります。まぁ、下流フェーズでも機能レベルの設計ミス(=すり抜け不良)がある程度残存するものですが。一般的に、見積もり値の上下幅は、上流フェーズの設計ミスほど広く、下流フェーズの設計ミスであれば狭くなります。自社開発なら、それでも大して問題は無いと思います。問題は、他社に請負契約で発注するケース。請負契約の場合、発注時点で発注に掛かる費用(予算)を決めますが、プログラムが完成していない時点(コーディング前)の場合、幾ら掛かるのか客観的に分かり難いため、適正価格が発注時点で分かりません。だから、かなりアヤフヤな値であることを承知で想定規模(想定される画面数やプログラムのステップ数)なんかを指標にしている企業がたくさん居る訳です。個人的には、請負契約が妥当なプロセスは、テスト工程(※定性的な項目が多い統合テストなどを除く)ぐらいだと思います。請負契約で上手くやる(見積もりと実績の乖離を減らす)のに有用な開発手法は、経験則ではスパイラルモデルの開発ぐらいです。要は、見積もりと実績の乖離を減らすには、すり抜け不良を少なくすれば良い訳で、それをやるのに一番良い手段は、開発サイクルを小さく分割することだけだと思っています。学問レベルでは色々な手法が考えられているようですが、スパイラル以外の実用レベルで使い物になる手法は未だ見たことがありません。ただし、スパイラルだとそれを第三者が管理するのは無理に等しいから、開発作業とマネジメント作業を両立できるエンジニア以外できないこと(=要員確保が困難なこと)がネック。そして、そういうエンジニアは得てして単価が高いから、予算オーバーになり易いという落とし穴があります。そもそも、スパイラルで妥当な程度の規模にサイクルを分断すると、発注のオーバヘッド(恐らく裁断したサイクル単位で発注する→妥当な規模に裁断すると契約がポコポコ増える→大変になる)でパフォーマンスが落ちるような気もするので、結局のところ「コーディングまで委任契約がベスト」だと思っています。

要は、「コーディング=定量的な作業」という風潮をなんとかする必要があるんじゃないかと。

2012年8月17日金曜日

開発状況(17-Aug)

ネット環境がスマホしか無いところで1週間弱過ごし、今帰ってきました。
ポータブルな開発環境を整えたので、そういう所の方が捗るのかもしれません。
温泉宿とかで1週間ぐらい篭ったりするのが理想。
シーズン中は嫌ですが。(混むので)

「せっかく温泉宿に行ってゲーム作りなんて・・・」と、思うかもしれませんが、結構オススメです。
ゲーム作りでなくても、例えばその他の創作活動(漫画とか小説など)や試験勉強などにも良いです。
「xxxをする為にyyyに居る」という意識が働くことで集中力が増します。
更に、貧乏性の私の場合、「お金を払ってまで」という意識が更に集中力を増幅させます。

なので、コストは高ければ高いほど良いから、温泉宿がベスト。
ただし、温泉宿だとちょっと足が出ない場合、ビジネスホテルとかでも良いかも。
または、(音が気にならないのであれば)漫画喫茶とか。
あと、国内出張ならグリーン車、海外出張ならビジネスクラスかファーストクラスというのもアリです。
(もちろん、普通料金からの差額は自腹で)

まぁ、今回私が行ってきたのは温泉宿でもなければビジネスホテルでもありませんが。
法要で田舎で宿泊してただけ。(漫画喫茶にはチョクチョク行って作業しましたが)
とりあえず、SHOT04の5面の道中が完成し、ラスボスを作成しているところ。
ラスボスは作画が終わっていて、あとはアルゴリズムを組むだけという感じです。
この土日でとりあえず完成させて、あとは8月中に調整を終わらせ、9月中にはリリースしたい...

2012年8月11日土曜日

4面完成

4面が完成。
割とゴチャゴチャしたステージになりました。
一定距離を保って箱を打つと、アイテムジャラジャラみたいな感じです。
難易度はほど良い感じ。

あとは今週中に5面完成すれば良いなぁ・・・。
そういえば、説明書とかってAndroidだと、Windowsみたいにドキュメント(Readme.txt)を付属する習慣が無いから、やっぱり、チュートリアル的なものを作らなければ駄目かな?と、今さら考え始めました。
しかし、言語フリーで作るのは結構大変そうかも。
基本、ゲーム画面中には、単語レベルの英語以外は入れたくないと思っています。
例えば、基本的な操作系であれば、
1. Touch -> Fire and Move
2. Not touch -> Charge
3. Fill & Touch -> Laser
ぐらいが、言語を用いる上限になるイメージ。

今、ふと、「リプレイの機能を使ってそれを流しながら上記の単語レベルの説明入れていけば良いんじゃないか?」というナイスな考えを思いつきました。ちょっと面倒くさそうですが、そういう部分には力を入れた方が良さそうな気がしないでもないです。

動く開発環境

今日購入したUltraBook(になるのか?)のAspireV3にAndroidビルド環境の構築が完了。
もちろん、Windowsの開発環境(Visual C++ Express 2010 & DirectX-SDK)も構築済み。
これで、ノート環境ですべての開発ができるようになりました。

Androidのビルド環境の構築手順が、自宅マシンに構築したときと若干変わっていたので、構築手順をメモっておきます。なお、青字部分は、SonyのWalkman Zシリーズをデバッグ機として使う場合の設定です。

■SDKを使うための手順
①JDKを入手してインストール
②システム環境変数JAVA_HOMEにインストール先パスを指定
③システム環境変数PATHに%JAVA_HOME%\binを追記
④Android-SDKの入手してインストール(※C:\android\sdkにインストールした前提で説明)
⑤システム環境変数PATHにC:\android\sdk\platform-toolsを追記
⑥システム環境変数PATHにC:\android\sdk\toolsを追記
⑦SDK Managerを起動し、以下のパッケージをインストール
- Android SDK Tools
- Android SDK Platform-tools
- Android 2.3.3 (API level 10) の SDK-Platform
- Google USB driver
⑧Apache-antを入手(※C:\android\antにインストールした前提で説明)
⑨システム環境変数PATHにC:\android\ant\binを追記

■Zシリーズを使うための手順
⑩C:\android\sdk\extras\google\usb_driver\android_winusb.infをメモ帳で開く
[Google.NTx86]と[Google.NTamd64]に以下の行を追加。
%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_0691&MI_01
⑪以下のコマンドを実行
echo 054c > "%SystemDrive%%HomePath%\.android\adb_usb.ini"
⑫Zシリーズをパソコンに接続
⑬デバイスマネージャを開き、警告マークが付いているZシリーズのアイコン部分を右クリックして、デバイスドライバを選択(探索パスには、C:\android\sdk\extras\google\usb_driverを指定)

■NDKを使うための手順
⑭cygwinを入手してインストール
※自宅環境のディスクから持ってきたディレクトリを使ったので、どのパッケージを入れたかは忘れました
⑮システム環境変数HOST_AWKに/usr/bin/gawkを設定
⑯NDKを入手してインストール(※C:\android\ndkにインストールした前提で説明)
⑰システム環境変数PATHにC:\android\ndkを追記
⑱システム環境変数NDK_ROOTにC:\android\ndkを設定

以上です。
ちなみにEclipseは入れてません。
コマンドラインとテキストエディタのみで作業する方が楽なので。
Javaでガッツリと書く場合は、入れた方がよいです。
(私の場合、Javaコードは全体の1%未満なので、Eclipseを使わない方が楽)

新PC導入

AcerのAspire V3 V3-571-H54C/Kという機種を導入。
http://kakaku.com/item/K0000378324/

普通の家電量販店で39,800円でした。
スペック的には、
・OS: Windows 7 Home Premium x64
・CPU: Core i5 2450M 2.5GHz x 2way x Hyper-Threading
・Memory: 4GB
・HDD: 320GB
4万切っててこれだけあれば十分過ぎるぐらい。

GPUはIntelのオンボードのもので、現状自宅で使っているPC(オンボード版のGeForce)よりも若干スコアが落ちる程度。(エクスペリエンス・インデックスで評価点を確認したところ4.7ぐらい)
ただ、CPU性能の評価は、倍以上。(7.0ぐらい)

サブマシンとしては申し分ない程度のスペックだと思います。
まぁ、私は今後コレをメインマシンにする訳ですが。
しかし、HDDの熱排出の位置が左側というのは何とかなりませんかね・・・
私はマウスを左手で使う(※利き手は右手です)ので、暖かい風が当たります。

あとは、環境構築がだるい。。。
主に、Android系の開発環境の構築がだるい。。。

2012年8月10日金曜日

電源失念

今日から夏休みなので帰省したのですが、ノートPCのアダプタを自宅に忘れるとか。。。
アダプタだけ買おうか、この際だから、メインマシンとして使えるレベルのウルトラブックを買ってしまおうか、迷いどころです。
自宅メインマシンは、atom機だから、Android用の開発機としては大分厳しいと思っていたところ。メインマシンには、acerのAspire RevoというPCを使ってますが、GPU はそこそこ速いけど、CPU は開発機として使うには無謀なレベルです。

Windows 用のCコンパイラをコマンドラインで使う作業がメインなので、基本的に問題ありません(SHOT04のフルビルドがだいたい10秒弱で終わります)が、cygwinでgccを使ってスマホ用の共有ライブラリをフルビルドするのにはだいたい1分強ぐらいかかります。
ちなみに、apkモジュールは、Eclipce を使わず、コマンドラインでantとかをバッチで叩いて作ってますが、それにも署名などを含めて1分ぐらいかかります。

最新のウルトラブックなら、大分改善されるはずだし、何より、自宅でも出先でも、使いなれた普段の環境で作業できるのが魅力的な気がしています。

やはり、Windows版が本丸

Android用のゲーム開発を開始してそろそろ半年ぐらい。
しかし、端末毎の仕様差が想像以上に激しいので、やはりAndroid版でのモノ作りは色々と厳しい。
設備投資を惜しまず、最初はiPhone向けで作るのが吉だった感が否めません。
私が一番気にしている問題(VSYNCの端末差)は、Android4.1でようやく解消されるようなので、Android版の開発はそれを待ってからやるべきだったんじゃないかと。あと、Android4.0で地雷(SurfaceViewの大幅な性能デグレード問題)を踏みましたし。

ですが、今開発中のSTGの本丸プラットフォームは、Windows版。
要は、Android版やiPhone版というのは客寄せパンダ的な位置づけのつもり。
やはり、STGはタブレットや電話機のようなチマチマとした画面ではなく、大画面でやりたいので。
しかも、今回は縦画面のフルスクリーン対応。
23型ぐらいのワイドディスプレイを縦置きにしてプレイすれば、ゲームセンターと同じ迫力で楽しめます。

Androidと仕様を合わせる都合上、入力装置にマウスを使うのがちょっとアレですが。
シューターは伝統に囚われる人が多いから、最初は抵抗があるかもしれません。
ただ、STG用の入力機器としては、セイミツ工業のアケステ以上にマウスの方が向いているかも。
アケステよりも精密な動きができるので。

2012年8月9日木曜日

Music room

開発中のSTGのオマケで付ける音楽の試聴機能を、かっこいい感じにしてみました。
とはいえ、こういうオマケ部分にあまり力を入れたくないから、VGS Chiptune musicからの流用ですが。

せっかく、めずらしい方法で音楽を鳴らしているので、そのことを実感していただくために。
開発中のSTGは私が独自に設計した波形メモリ音源VGS(VideoGameSound)をソフトウェアエミュレーションする方式で音楽を鳴らしています。(VGSは私の脳内にしかないので、実在しません)

言うほど難しいことはやっていませんが、こういうやり方で音楽を鳴らしているゲームといえば、エミュレータ類を除けば洞窟物語(あと、イカちゃん?)ぐらいしか思い浮かばない。結構簡単に作れるし、アプリの容量も抑えられるし、凝らなければ処理性能もかなり速い(VGSの場合、ネットブックでもサクサク動きました)ので、もっとやっている人が居ても不思議はないんですがね。
ついでに、自作音源なら、自分のやりたい範囲で好きなようにハードウェア仕様を弄れるから楽しい。

2012年8月6日月曜日

作曲のやり方

色々なサイトで紹介されていますが、トニックとドミナントがうんたらかんたら・・・といった眠たい話しをしている方が多い(眠たい話しならWikipediaで十分です)ので、私流の作曲術の勉強方法を記しておきます。

まず、楽器屋へ行って、キーボードを買ってください。
高いヤツじゃなくて良いです。(5000円ぐらいのもので全然OK)
ただし、鍵盤の数は、最低61鍵のものを選んでください。
61鍵よりも多い分には問題ありません。
60鍵以下だと、脳内補完が必要になるので大変です。

あと、楽譜屋へ言ってJ.S.Bachの2声のインヴェンションの楽譜を買ってください。
ついでに、ハノンも買った方が良いかも。
色々と種類がありますが、原典版のもの(なるべく装飾記号がついていないもの)を選んでください。
ちなみに、3声のインヴェンション(シンフォニア)は無くても良いです。
が、殆どの楽譜は、2声と3声で一冊みたいな感じだと思います。

そして、2声のインヴェンションを1曲づつ、解析⇒演奏を繰り返します。
15曲ぜんぶやってください。
ピアノを弾いたことが無い状態からやると、たぶん、普通の人なら5年ぐらい掛かります。
まず、1番を弾けるレベルになることに時間が掛かります。1番を両手でインテンポせずに適度なテンポで弾ける程度の技術が身に付けば、1曲あたり概ね1~2ヶ月程度の期間で消化できると思います。

解析の方法は、片手づつとりあえず弾いてみて、モチーフとそれ以外の場所を意識します。
モチーフを蛍光ペンでマークしたりすると良いかもしれません。
モチーフというのは、その曲の主題です。
インヴェンションの場合、概ね、右手、左手で交互にモチーフが出てくる感じです。
なお、解析については、素人が全て独断でやるのは困難なので、ググるなり、アナリーゼ本を買うなり、ピアノ教室に通うなりする必要があります。ちなみに、私はキレイなお姉さんに個人レッスンを受けたかったので、個人レッスンのピアノ教室に通いました。先生がキレイなお姉さんか否かは定かではないですが、少なくとも「お姉さん」ではなk(中略)。

なお、ピアノ教室だと演奏方法に着眼しがちですが、常に、「どうやって作曲をするのか知りたい」ということを念頭に置く必要があります。そうしないと、本来の目的と逸れてしまうかもしれません。(でも、それはそれで良いかもしれませんが)

アナリーゼは徹底的にやってください。
あと、「次の曲に進んでよいか?」の判断基準は、「暗譜でミスタッチ無く完璧に弾けるかどうか」です。
もちろん、インテンポしてはいけません。
完璧に解析できれば、嫌でも暗譜できている筈です。
暗譜ができていないようでは、とても解析できているとは言えません。
また、曲を完璧に理解していれば、緊張でもしない限りミスなんてする筈が無いです。

テンポについては、カデンツァ以外、終始一定でなければなりません(=インテンポしない)。
なお、テンポは、「思いっきり遅いパターン」、「中ぐらいのパターン」、「思いっきり速いパターン」の3パターンぐらいで弾ければ良いです。(※「思いっきり速い」とはいっても、グールドぐらいの速さで弾ける必要はありませんが)
解析がちゃんとできていれば、どんなテンポでも弾ける筈です。
ただし、技術的な限界点には個人差があるので、自己の限界を超える必要はありません。
なので、速く弾くことには拘らなくて良いです。
作曲術を学ぶ上では、インテンポせずに遅く弾く方が重要だったりするので。

概ねこんな感じです。
15曲ぜんぶ弾き終わる頃には、自然と「どうやって作曲するのか」が見えている筈です。
ちなみに、そういう私は15曲全部はやってませんが。
やったのは確か、1番、2番、4番、5番、6番、7番、8番、9版、13番、15番だけ。
それでも、「音楽ってこうやって作るんだー」という感じで見えました。

ただし、作曲の勉強らしい勉強(トニックがうんたら~かんたら~とか)は一切やっていないので、色々と間違っている可能性は否定できません。ただ、音楽なんて、それらしく聴ければそれで良いんだと思います。ですが、より厳密さを求めるのであれば、平均律クラヴィーア曲集をやる必要があります。(ただ、私は1巻の1番と2番のフーガが弾けるようになったぐらいの頃に、ピアノ演奏自体に飽きて教室を辞めましたが)

まぁ、時間が掛かるし面倒(理論よりも実践派の方向け)な方法です。
ただ、この方法の方が「作曲本」で勉強するよりも本質が見えてきます。
何より、演奏をすることに楽しみを見出すことが、作曲をする上で重要な要素なのかもしれません。
私は、演奏に楽しみを見出せ切れなかったので、作曲の腕もそれなり...

2012年8月5日日曜日

iPodTouch版でのポーズ方法

今開発中のSHOT04ですが、4面道中が完成。
夏休み前までに4面ボスまで完成させたかったのですが及ばず。
8月中に完成するか、微妙なところ。
まぁ、順調なので、今年中に完成できる点はほぼ確定です。

ところで当初、Android版が完成したらiPodTouch(iPhone)版を作ろうと思っていましたが、iPodTouchへ移植するにあたり、仕様面での最大の課題がボタン系統です。

Android版の場合、
(1) 戻るボタンを押せばポーズ
(2) ホームボタンを押せばポーズしてホームへ戻る
という感じでハードボタンを使っていますが、iPodTouchにはホームボタンしかありません。

つまり、ポーズができません。
ゲームのメイン画面中にソフトボタンは絶対に入れたくないです。
なので、iPodTouch版に限り、(1)の機能を落とす方向で検討していました。

ですが、
「マルチタッチをした時にポーズ画面にする仕様にしてみてはどうだろうか?」
という天の声(たぶん、ジョブズ)が聞こえました。

SHOT04の仕様は、シングルタッチ専用だから、それでも仕様上問題ありません。ただし、「2つ同時タッチ」だと誤ってやってしまうこともあるだろうから、3つ同時タッチでポーズにしてみました。(まだ、iPodTouch版は作る環境すら作っていないので、とりあえずAndroid版で)

操作性としては、特に問題無さそうな感じです。
これで、iPodTouch版を作る上での課題は全てクリアできたかも。
残る最大の課題は、SHOT04(Android版とWindows版)を完成させること。

ちなみに、iPodTouch版ですが、Android版とWindows版の利益だけで開発環境を導入できなければ、やりません。流石に、道楽でこれ以上の出費は避けたいので。道楽であれば、個人的にはWindows版とAndroid版だけで十分だと思っていますし。

何より、私がiPhoneを持つことは有り得ない。
iPhoneに慣れた人がAndroidへ移行することは結構簡単ですが、Androidに慣れた人がiPhoneへ移行するのは無理なので。
「AndroidだとできるのにiPhoneだとできない」ということがあまりにも多すぎます。
iPhoneのダメな所は、
・先述のハードボタンのこと
・SDカードが使えない
・パーミッションの仕組みが無い(セキュリティ的に脆弱なのでアプリを使うのが結構怖い)

セキュリティ的なところだと、Androidの方がショボイというのが世間の常識ですが、OSの実装レベルで見てみると、iOSの方がガードの仕組みが無い分、審査がザルだった場合のセキュリティリスクが高いといえます。そして、昔は「厳しい」ということで有名だったAppMarketの審査も、実際のところはザルに等しいと思われる事案がチラホラと起きて始めているので、iOSの方がセキュリティ的に見て脆弱だと思います。(これについては、将来的に立て直される可能性があるかもしれませんが)

そういえば、現状はAndroidMarket(GooglePlay)の審査もザルですが、先週末、Googleからデベロッパーアカウントを持っている人向けに、「そういった部分を強化するから覚悟しとけよ」という内容の通知が来ていました。この通知について、以下に日本語の記事がありました。
http://japan.cnet.com/news/service/35019972/
上記の内容は審査でもしないと分からないと思うので、何らかの審査でもするつもりですかね?
良い傾向だと思います。

Arcade mode

SHOT04のPC版限定ですが、縦画面モードを入れてみました。
※Android版については、最初から縦画面専用

480x640のフル画面表示です。(ちなみに、SHOT04のスクリーン仕様は240x320(QVGA))
ディスプレイを90℃回転して遊べばアーケードさながらの迫力の大画面でSHOT04が遊べます。
どのモードで遊ぶかは、起動時にダイアログ(以下)で選択する東方方式で。

一応、標準(横置き)のフルスクリーンモードは2系統用意することにしました。
640x480(VGA)の画面中央部分にオリジナルサイズ240x320を表示するモード(1番上)と、1.5倍の360x480に引き伸ばして(縦画面一杯分で)表示するモード。拡大処理はソフトウェア方式(自前)でやっているので、私が持っている無茶苦茶遅い悪いノートマシン(ネットブック)とかでは、240x320じゃないと厳しい。

ちなみに、不要とは思いますが、一応、横画面のフルスクリーン(640x480)で縦表示するアーケードモード(Arcade mode)というのも入れておきました。Arcade modeは、横画面で縦表示にして遊ぶことができます。(ほぼ、誰得機能ですが、念のため)

上記の画面キャプチャは、そのArcade modeで撮りました。
私のPCのディスプレイが横置き専用なので、キャプチャを撮るのに縦画面モードにするのが面倒。
こういうモードを入れておけば、横置きのまま、縦画面モードのキャプチャが撮れる訳です。
それだけの為の機能なので、Arcade modeについては、正式リリース時に削るかもしれません。

・・・縦置きディスプレイが欲しくなってきました。
やっぱり、縦スクロールSTGなら縦画面じゃないと迫力がありません。
ゲームのためだけに、新しいディスプレイを買うのは馬鹿らしいですが、実はプログラマにとって、横置きよりも縦置きの方が、一度に視認できるコード量が増えるから有利なんです・・・と、自分を説得中。

fps記録

Android2.3~4.0の場合、機種によってVSYNCの間隔が区々なようなので、リプレイデータにプレイした時のFPS平均値を記録&表示するようにしてみました。Androidの場合、VSYNC間隔はプログラム側で弄れ無さそうなので、せめて「どの程度の環境でプレイした記録か」という情報を保持する必要があります。
SLOT1~3は、仕様変更前のリプレイデータだから、0.00fps。
SLOT4がテストで記録してみたもの。
ちなみに、Windows版の場合、DirectX9以降に対応したGPUを積んだ環境であれば、60.00fpsジャストになります。少し端数の具合を確認したかったので、プレイ中にわざとウィンドウを動かしてみたりして、端数が出るようにしました。

あと、計測対象は、ゲームメイン処理のプレイ中でプレイ開始時点の最初の約1秒(正確には1000ミリ秒~1ミリ秒の範囲)を除いた状態からの平均フレーム数で、ポーズ中やクリア時、エンディング時は測定しない仕様です。(※最初の約1秒を記録しないのは、秒単位で総フレーム数と総プレイ時間(秒単位)を測定するので、厳密な測定をする為に必要)

無駄に厳密な測定。

2012年8月4日土曜日

生産状況(8/4)

本日(4-Aug 2012)時点のSHOT04の開発規模を測定。

5月中旬ごろ(体験版が完成した時)の実行行数が7.7ksぐらいで、現時点で12.3ks。
2.5ヶ月ぐらいで+4.6ksといったところですか。
「単独製作なのに、2.5ヶ月でたった4.6ksかよ!?」
と、思われるかもしれませんが、基本休日(週休2日として約20人日)しかプログラムを組む時間が無いから、こんなもんです。
あと、ずっとプログラムを作る作業だけやっている訳ではなく、絵を描くのと音楽や効果音を作るのにもそれなりに時間が掛かります。(むしろ、プログラムよりも絵や音楽の方が専門外なので大変)

思ったよりもプログラム規模が膨れました。
5月時点では、スコアランキングやリプレイなどの機能が未実装(体験版として公開できる最低限度の実装をした状態)だったというのが増加要因なので、あとは完成するまで、あまり大きな増加は無かろう・・・と、思っていますが、あと、3ksぐらいは増えるかも。一応、一番デカいゲームの本編処理(game.c)と、VGEエミュレータ(vge*.*とvgs.c)の増加傾向は止まりつつありますが、敵のアルゴリズム(enemy.c)の規模が依然として増加し続けているので。

敵アルゴリズムは、内部で細かく部品化して実装量を抑えるようにしていますが、再利用率があまり高くないです。似たような敵でも、ついつい細かい演出の違いとかを入れたくて、結局再利用せずに新規で起こしたりしているので。これなら、最初から部品化をしない仕組み(=非オブジェクト指向設計)にしておいた方が実装規模を抑えることができたかも。私はそこら辺(オブジェクト化するorしない)のバランス調整がかなり上手い方なので、通常は実装規模を最小限に抑えることができるのですが、この敵システムの作りこみに関しては、ミスった感が否めません。

ちなみに、SHOT03の時の実装規模は、10.2ks。
だいたい、10ksを超えだすと、ソース内に魔物が棲み始めます。
だから、プログラムの規模は少なければ少ないほど良いです。
(SHOT03の時は完成時ジャスト10ks程度になるように狙って作っていました)

SHOT04に関しては、今から10ks以下にするようにリファクタするのは期間的に不可能です。
なので、魔物を棲ませた状態で作り続けざるを得ません。
ロックロールせざるを得ません。

エスプレッソーダの魅力について

7/29ぐらいに、エスプレッソーダが上手かったという記事を投稿しました。
そろそろ、VIPの反応が出ているだろうということで調べたところ概ね想定通りの反応。
※「http://logsoku.com/thread/hayabusa.2ch.net/news4vip/1344002674/」から引用

まぁ、こんな感じになるだろうと思っていました。
私としては美味かったし、既に複数回購入して飲んでいますが。
エスプレッソーダを美味しく頂くには、幾つかの手順を踏む必要があります。

①コーヒーだと思ってはいけない ← 最重要
コーヒーではなく、あくまでもコーヒーテイストの別モノだという風に思うことが重要です。
アイスコーヒーというイメージで飲むと、やられます。

②喉を鳴らして飲む(ビールみたいな感じで飲む)
これは、次で説明する③の効果を高めるために必要な手順です。
コーラとかって、勢い良く飲むと、「ゲフッ」ってなりますが、それが狙い。
「ゲフッ」とする時に漂うコーヒー風味が、とても良いです。

③香りを楽しむ
上記②でゲップをした時、喉の奥から鼻にかけて、爽やかなコーヒーの香りが通り抜けます。
その香りを楽しんでください。

この感覚は、コーラだと味わえないし、普通のアイスコーヒーでも味わえない。
お下品ですが、要するに、炭酸の影響でゲップをした時に得られる爽やかな香りが最大の魅力。
お下品なので、他人様の前では飲むことができませんが。
たぶん、葉巻とよく合いそうな気がします。(葉巻は飲んだことがないので、想像ですが)

音楽が凄い

Android2.3用のデバッグ機としてSonyのZシリーズを導入しましたが、音楽プレイヤーとしてかなり良品。
音楽がものすごく良い音で聴くことができます。
少なくとも、私が今まで使った携帯音楽プレイヤーの中では一番良いです。

細かい特徴は、メーカーのページで謳われている通り。
http://www.sony.jp/CorporateCruise/Press/201109/11-0913B/

一番のポイントはイヤホンですかね。
Zシリーズに付属しているイヤホンですが、「完全にZシリーズ専用」という仕様。
他音楽プレイヤーに繋げて聴くと全然使えません。(かなり小さな音になる感じになります)
試しに少し音質が悪いかなり昔に録音された楽曲を鳴らしてみたところ、キレイに再生されたので、かなりの波形補正(ホワイトノイズのカット等)をしているような感じです。

反面、アンプとかの外部ハードを使いたい場合、相性等の問題が起こり易いかもしれません。
ただ、そういった外部ハードを一切導入することなく、それと同等の効果が得られるともいえます。
なので、多少本体価格が高いという印象でしたが、コスパはかなり良いモノだと思います。
たぶん、iPodTouchで同程度の音質を得ようと思うと、アンプ+ノイズキャンセリング対応のイヤホンが必要だと思います。iPodTouchでZシリーズと体感的に同等の音質を得ようとすると、最安値商品に絞って調達したとしても、Zシリーズの標準メーカ小売価格の1.5倍程度の出費(※iPodTouchの本体価格を含む)が必要になります。

なので、音楽プレイヤー用途で選ぶなら、iPodTouchよりはZシリーズの方が良さ気です。

55fps

どうも、ウォークマン(SonyのZシリーズ)だと微妙にゲームが簡単になったと思ったら、Zシリーズの場合、VSYNCが55fps(18.18ms)のようです。

・・・これは、ハード依存なので、どうにもなりません。
ただ、Jelly Bean(Android4.1)では62.5fps固定(16ms)になるらしい。

Android4.0で(2.3から)大幅に劣化したSurfaceViewの性能問題も何とかして欲しいところ。
上記のような大幅改修をしたのであれば、結構期待できるかも。
ただ、期待値と同程度のデグレードリスクもある訳ですが。

この性能問題を除けば、Android4.0には概ね満足してます。
しかし、この性能問題が致命的過ぎるので、4.1へアップデートできるのであれば、すぐにでも試したいところ。
ただ、私の携帯(MotorolaのRAZR)ではAndroid4.1へアップデートが行われるかは微妙ですが。
Android4.0へのアップデートですら、だいぶゴタゴタしたようで、遅れに遅れて配信されたので。

ちなみに、Android4.0にアップして一番良かったのはChromeが使えること。(標準ブラウザよりもかなり使い易い)
標準ブラウザでも、Safariとかと比べればかなり使い易いけど、Chromeは更にその上。
タブがかなり便利。

あと、余談ですが、Android4.1でのFlush完全非対応はどうでも良いです。
Android4.0でも全然まともに動かないけど、特に困りまらないので。
Adobeが正式にFlush撤退を表明してくれたから、一気に脱Flushが加速した感じでしょうか。
ちなみに、Adobeが公式に撤退を表明しているのはモバイル分野のみだったと思いますが、今の時代、モバイルから撤退するということは、完全に消えることと同じ意味になる筈。
これは、アップルGJです。(発端はアップル⇒http://www.apple.com/hotnews/thoughts-on-flash/

ただ、私は「HTML5なら大丈夫」だとは思っていませんが。
一番ベストな方式は、ブラウザから専用アプリをキックする方式です。
PCの場合、それでは使い勝手上の問題がありましたが、AndroidやiPhoneの場合、UIがシングル構造のためPCの場合のような問題(=UX上の問題)は起こらないので。

あと、専用アプリ方式の方が「バグを作り込むリスクが低い」というメリットもあります。
「バグを作り込むリスクが低い」というのは重要です。(ユーザ視点では見え難いことですが)
ケン・トンプソンとデニス・リッチーがUNIXを作った時の設計思想(Small is Beautiful)がまさにソレ。
つまり、Flushの敗因は色々と詰め込み過ぎたことです。
色々詰め込み過ぎ、肥満化したから、重くてセキュリティホールの巣窟になりました。
なので、HTML5が「Flushの代替品」として作り上げられた場合、結局Flushと同様、肥満(重くて、セキュリティホールわんさか)になるだけだから、無意味ではないかと。