2012年7月6日金曜日

ポイントの有効活用

ビッグカメラのポイント有効期限が近づいている通知(葉書)がきてました。
コインでこすって有効期限とポイント残高を確認するタイプの葉書。
こすってみたところ、ポイント残高は確認できたけど、有効期限が剥がれて(?)くれませんでした・・・
これは、「さっさと買い物に来い」という意味かな?
単純に梅雨時だから、湿気にやられたんでしょうけど。

通知自体、1週間ぐらい放置していたので、既に期限切れてるかも?
・・・と思い、安い物を購入して、有効期限が切れていないか確認することにしました。
もちろん、100ポイント程度の失効であればそこまでしません。
ただ、10,000ポイントぐらい失効しそうだったので、流石に勿体無い。

そこで、ビックカメラへ出向き、300円の電源タップを購入してレシートを確認してみたところ、セーフ。
そして、2014年まで有効期限が延長されたようです。
たぶん、再び失効直前までビックカメラには行かないと思うので、ポイントを使い切るために色々と物色・・・

しかし、めぼしい物が見つかりません。
という訳で仕方なく、microSDカードに換品することにしました。
で、32GB/5,000円ちょっとのヤツを購入したところ、表示価格が間違っていたらしく、2,980円とか。
実際の相場はもっと安いのかも。

もはや、驚きませんね。
昔は、10MB弱の超大容量HDDがウン十万円ぐらいしたんですがねぇ。
4GB/6,000円ぐらいで売ってて、「安い!!」と思っていた頃すら、懐かしい。


「恐らく、今の価格が底値だろう」
ということを店に行く度に思っていたりします。
そういう価格の暴落状況を見ると、例え余っているポイントであっても、全額ストレージに換品(=買いだめ)するのは得策ではない・・・という訳で、1枚だけ購入することにして、残ポイントは再び塩漬けすることにしました。

しかし、ポイントが10,000以上残っていることに気付いていれば、この前、iPod touchを買う時にビックカメラに行っていたのに・・・惜しい。どうも、専門店の独自のポイントシステムというのは、使い難い。(家電なんてそうそう買うものでもないので)

2012年7月3日火曜日

テスター

3面中ボス作成中。
とりあえず、夏中には完成させて9月頃にはリリースしたい。
9月~10月中旬ぐらいまでは、ゲーム開発以外に時間を費やしたいので。

しかし、問題は、テスターをどうやって確保するか。
iPhoneなら持っている人が結構沢山居ますが、Androidだと持っている人が限られる。

概ね、ドコモを使っていた人が嫌々Androidを選んで、それ以外はiPhone一択みたいな感じですかね。
ドコモのガラケーを使い続け、スマホは他キャリアのiPhoneという人すら居ます。
(その方が、ドコモのAndroidにするのよりも安いとか、なんとか)


両方の機能をよく知っていれば、iPhoneという選択肢は有り得ませんが。
iPhoneが商業的に成功している理由は、両方を良く知っていない人(最初は皆そう)が「Android or iPhoneであれば、何となくiPhone」という空気・・・ですかね。(少なくとも、機能云々が原因ではないと思います)


まぁ、私はiPhoneが今後も売れ続けようが、沈没しようがどっちでも良いです。
ただ、現時点の普及率が二分している訳なので、本気でテスターを確保しようと思えば、前倒しでiPhone移植をしてしまうのも手かもしれないと、思いつつあります。
ただ、iPhoneはステーブ・ジョブズの亡霊と共に沈む船だと思っているので、移植へ乗り切るかどうかの判断は、ギリギリ(最低でもiPhone5登場あたり)まで、遅らせたい所です。無駄な箱を買うのは勿体無いので。

2012年7月1日日曜日

曲のタイトルについて

一昨日から、ほぼぶっ通しでSHOT04(NOKOGI-Rider)で使う音楽データを作成し続けて、ようやく全曲完成。
耳が凄い疲れた・・・
電子音をブッ続けで聴くのは、なかなか応えます。。


ちなみに、製品版に収録する曲は、
・体験版で公開中の4曲(1面、1&3面ボス、ステージクリア、2面)
・VGS Chiptune Musicで公開中の2曲(3面、4面)
・未公開の4曲(5面、2&4面ボス、5面ボス、エンディング)
で、合計ジャスト10曲。
※現時点で公開中の曲は、完成時に若干修正や変更が入ります。


なお、VGS Chiptune Musicの曲は、
・3rd stage ⇒ 3面
・You must open a box ⇒ 4面
という割り振り。

4面の曲のタイトルは、本当は「その箱を開けてはならない」なんですが。
You must open a box」を直訳すれば、「あなたは、ただひとつの箱を開けなければならない」でしょうか。
もちろん、直訳で解釈することは、まず無いと思います。
ちなみに、boxは女性器という意味のスラングですね。

そんなチャレンジャーなタイトルを付けた理由は、この曲は元々、ピスコラの曲投稿サイトでやってたコンテストに出す為に作った曲で、その時のテーマがboxだった為です。そして、特にどんなboxかという指示が無かったので、この場合、テーマ=女性器と解釈するのが普通だと思います。ちなみに、私以外の参加者がそのテーマで投稿していた曲は、全般的に宇宙めいた感じのものが多かった・・・なるほど。
で、そういう意味で解釈すると、「その箱を開けてはならない」だと、人類の滅亡を望んでいるような感じのニュアンスになってしまうので、不健全かな?と思い、健康的な感じにしようと考えた結果が現状のタイトル・・・という訳です。(それでも、フェミーな方からは叩かれそうな気がしますが、、、)


そもそも私は、曲にタイトルを付ける行為自体が、ナンセンスだと思っています。
「その箱を~」みたいに、必要に迫られて命名したことは何度か有りますが。
しかし、一度として真面目に命名したことは有りません。

動機や動機が変化する時の要因として、何らかのイメージやテーマは持つとはしばしば有ります。
そして、4面の曲を作曲時の動機の変化要因がbox(=女性器)であったことは、確かです。
しかし、ソレはあくまでも創作の場面でのみ必要なものであって、一般的な作品として公開する時には不要。
コンテストとかだと、否応無くタイトルを命名されることが強いられるので、仕方なくつけますが。
だから、真面目な命名ができる訳もなく。


ただ、曲にタイトルが不要だとは思ってません。
曲のタイトルは、曲の聴き手が感じたままのもの付ければ良いと思います。
例えば、ベートーヴェンのピアノ協奏曲5番の皇帝みたいな感じで。
「皇帝」は、第三者が勝手に付けた名称です。
その呼称(俗称?)が多数の人に支持された結果、今日では正式なタイトルになっている訳です。
実際聴いてみれば、「あぁ、皇帝だね」と成るほど納得できる。(皇帝は特に分かり易い)

2012年6月28日木曜日

最適な音源スペック

SHOT04(NOKOGI-Rider)の最終ステージの道中曲を作成中。
作曲ではなく、作成中。
曲自体は去年、ピスコラで作曲済みで、ピスコラ⇒VGS(自作波形メモリ音源)への変換するため、MMLを書き起こす作業中です。ピスコラだとテキストの楽譜データに変換できないのが痛いですが、大分慣れました。

最終ステージの曲は最大4声の対位法+ベースで作ったのですが、VGS(6チャネル)で全ての声部が収まりきらないから、目立たない声部をストレッタでぶった切って別の声部に繋げ直したりする必要があり、中々面倒。

ちなみに、
・4声の対位法⇒4チャネル
・ベース⇒1チャネル
・ドラムス⇒1チャネル
という割り当てにすれば、全部収まりますが、主旋律は際立たせる為に2チャンネル使うので、どうしても1声削る必要があります。

VGSを改造して声部を増やす(7チャネル以上にする)のは簡単なんですが、それは絶対にやらない。
漠然とした拘りのようなものがあります。
私がコンピュータで作曲を始めた頃、最初に使っていた音源がヤマハのYM-2203ですが、それの仕様が6チャネル(FM音源3チャネル+SSG音源3チャネル)でした。その後、YM-2608やMIDI音源各種(SC55ST, JV1010, SC8820, MU80, MU500あたり)を触ってきましたが、何だかんだで、聴くのも作るのもYM-2203の音楽が一番楽しい。恐らく、私の好きなゲームに一番合う音楽が、6チャネルぐらいのスペックの音源の音楽なんだろう・・・と思います。


だから、音源スペックを拡張するのはダメ。
音楽を音源スペックに合わせるのが正解。

2012年6月24日日曜日

3面

SHOT04(NOKOGI Rider)の3面の作成に入る前に、想定以上に蛇行レーザーの作成に時間を取られましたが、無事、作成に入りつつあります。

レーザーは、若干角度が粗い部分もあります。。。
とりあえず、許される範囲内に落ち着くことが出来たので良しとしておきます。
静止画で見ると粗さが目立ちますが・・・
あと、低難易度のモードだと速度が遅めな分、プレイ中にも若干粗さが目立つかも。

今の所、3面は大多数の背景を海にする予定。(陸もある)
1面=陸地メイン(海もある)
2面=ダンジョン
3面=海メイン(陸もある)
4面=基地

5面=中枢
という感じにするつもり。

ただ、単純にその状態だと3面が1面とイメージが被ってしまいます。
ステージ毎に特徴を作る為、敵パターンは基本的に刷新するようにして作ろうとしていたのですが、それでも若干目新しさに欠けるように見えたから、レーザーを頑張っておいた訳です。

2012年6月23日土曜日

Laser

敵のレーザーを作成中。
真っ直ぐ飛ばすレーザーなら簡単なんですが、ホーミングやカーブは若干面倒。

どちらにしても、回転機能が無いハードで実装する場合、先ずは回転パターンを作画します。
↓こんな感じで。
で、真っ直ぐ飛ばすだけなら同じラジアン値で連射すればOK。
普通の弾を飛ばすアルゴリズムでそのまま実現できます。
ちなみに、SHOT04(NOKOGI Rider)の敵弾は、1発毎に下図の構造体で情報を管理しています。
ただ、このデータ構造だと、
(1) レーザーを目標物(自機等)に向かってホーミングさせる
(2) レーザーをカーブさせる
といったことが実現できません※。
※正確には、不可能では無いけど複雑になり過ぎて処理効率が悪い

上記(1)(2)を実現するには、トレースというアルゴリズムを実装する必要があります。
トレースというのは、一番先頭のオブジェクト(リーダー)の動作情報(ログ)を記録しておき、サブオブジェクト(メンバ)は一定間隔過去のリーダーのログと同じ動作をする・・・というアルゴリズムです。


分かり難いですね・・・分かり易く言うと、
・ドラクエのパーティーの動き
・グラディウスのオプションの動き
・インストーラーがプログラムのインストールに失敗した時に、インストール前の状態に戻す動き
・データーベースでコミット済みの状態を変更前の状態に戻す動き(ロールバック)
などなど。
これらは皆、同じトレースです。
インストーラやデータベースのロールバックはバックトレース(ログを逆順に追跡)ですが、本質は同じ事。


で、トレースを実現するのには、ログ(ジャーナルともいう)が必要。
現状の敵ショットのメンバにログを持たせても良いですが、そうなるとメモリ効率が悪いし、メモリ効率を良くすると処理効率が悪い・・・つまり、別テーブルで管理するのがベストです。
とりあえず、下図のような感じのテーブルを追加。
まだ、肝心のプログラムを作っていないので、多分上記は何かデータが不足しているかも。
あと、ログはリングバッファで管理(256フレーム分)。
それで足りるかは不明。
事前に設計できなくも無いけど、作ってから調整。


ちなみに、リングバッファの場合、インデクスの加算処理で無駄な分岐によるパイプラインハザードを抑える為、要素数は2のn乗にする必要があります。(そうすることで、AND演算だけで限界時のループができるので)





【追記】
プログラムを作成してみました。
表示したみたところ、下図のような感じ。


ちなみに、テーブルの内容は結構変えました。
移動速度のログは残さない(加速しない)仕様にして、後は座標を最大の長さ分保持したり云々。
↓こんな感じで。(当初想定よりも大分シンプル)

/* 敵レーザー */
struct ELaser {
int flag; /* フラグ兼フレームカウンタ */
int ix; /* 初期X座標 */
int iy; /* 初期Y座標 */
short fx[32]; /* X座標(*8) */
short fy[32]; /* Y座標(*8) */
int len; /* 現在の長さ */
int maxL; /* 最大の長さ */
int R; /* 先端のラジアン値(0~627) */
unsigned char S; /* 速度(1~15) */
unsigned char itR; /* ラジアン値の変更間隔(フレーム数) */
unsigned char addR; /* ラジアン値の角度増減量 */
unsigned char typeR; /* ラジアン値の変更方法(0:変更しない, 1:右回転, 2:左回転, 3:ホーミング) */
short logR[512]; /* 角度ログ(512フレーム分) */
};


レーザーの長さはMAX=32にしておきました。
32×16=512ピクセルが最大長。これだけあれば十分。
あと、10度単位で回転パターン(36パターン)を準備したのですが、若干繋ぎ目が分かり易い・・・
ただ、これは気にならないレベルなので、まぁ良いかな。
8度単位(45パターン)にしてみようか微妙なところ。


ログのサイズは256だと足りないので、512に拡張。
速度&長さがMAXの場合に必要なログ数が32×16=512なので。
速度&長さがMAXなんて、鬼畜過ぎて使うことは無いと思いますが。


ちなみに、末尾~尻尾まで全てのレーザーが画面外アウトしたら消滅する仕様。
角度がキツ過ぎると、画面に戻ってくる場合があり、それは鬼畜過ぎるので、後で仕様変更するかも。




2012年6月21日木曜日

PowerUp

STGにパワーアップって必要なんですかねぇ・・・と、常々思っています。
で、実際にSHOT04は、パワーアップアイテム無しで作っている訳です。
しかし、STGにはパワーアップが有って当たり前という固定観念みたいなものがあります。

敢えて固定観念を捨てて、パワーアップに対して何を求めるかと考えて思いつくものは、
(1) だんだん強くなる成長過程を愉しむ
(2) 攻略を有利に進める
(3) 稼ぎ要素のひとつ(最高レベルの状態でPWアイテムを取得すると得点が入る等)
の3つぐらい。

上記は全て、無ければ無いで問題無い気がしています。
(1) ⇒ プレイヤーの腕前が上達していく成長過程を愉しめば良い
(2) ⇒ パワーアップが無い前提で攻略を有利にするパターンを探る楽しみがある
(3) ⇒ 他の稼ぎ要素があれば問題無い

寧ろ、パワーアップが有ることで生じるリスクも有ります。
・パワーアップアイテムを取得した時、攻撃力や連射速度を上げるケース
 ⇒ ミスによりパワーダウンした時の復活が厳しい
   (こういうゲームの場合、1ミスでゲームオーバーで良いのに・・・と思ってしまう)
・攻撃力は(殆ど)変えずに、拡散度を上げたり、当たり判定だけ大きくするケース
 ⇒ 狙って部品や敵機を破壊するのが難しくなる
   (個人的には、狙って部品等を破壊するのが楽しいと思っているので、これは結構致命的)

ノーパワーアップの方がスコアを稼げる仕組みにして、上級者(スコアラー)はノーパワーアップ、初級者はどんどんパワーアップして遊べるようにする・・・という案もあったのですが、「パワーアップアイテムをわざと落とす」というのは微妙だったので却下。
「わざとミスをする」とか、「わざとアイテムを逃す」というのはダメだと思います。
ゲームの本質(=競技性)と逆行してるから気がするので。
ミスはしたくないし、アイテムはなるべく取りたい。

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

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