CALENDAR
S M T W T F S
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31    
<<  2019 - 07  >>

PROFILE
同人誌 電子書籍版
Re:ゼロから始める
ゲームシナリオ


ライトニング伝説


さよならハドソン


ドラクエとFFと
ToHeart


誰得ゲームライフ


ときめきメモリアル
の時代

イースI・II製作メモ

頒布ページ
LINKS
NEW ENTRIES
CATEGORIES
COMMENTS
    イースⅠ・Ⅱ通史(3):『リグラス』から『ロマンシア』
  • タムロ (02/03)
    イースⅠ・Ⅱ通史(1):PC88MkⅡSRの発売
  • tamuro (01/05)
  • おお! (01/03)
TRACBACKS
OTHERS
SEARCH BOX
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート

スプライトローテーション・その3
なんと信じがたいことに「スプライトローテーション」の第3回だ。

スプライトローテーション(1)
スプライトローテーション(2)

スプライトローテーションがどんな技術で、どのようにして使われていたのかについては上の二つを参考にしていただきたい。
どうしてこんなことを書くハメになったのかというと、答えはとても簡単で「スターソルジャー」の第5回を書こうとしたら、一個書いていないスプライトローテーションの技術があり、それを野沢さんが使っていることがわかったので、しょうがない、という話なのである。

というわけで本文。



前2回のスプライトローテーションは
『スプライトが横方向制限にひっかかってスプライトがチラつくときにどう解決するか?』
という話だったが、今回の話は
『スプライトの数が足りないときにどうするか?』
というスプライトローテーションだ。

数が足りないって、そもそも出せないでしょ…と言いたくなるだろうが、これをスプライトローテーションでなんとかするのが昔のプログラマの流儀だったのであるw

例によって例のごとく、仮想ゲームマシン、ダメダメコンピュータ、略してダメコンをまた登場させるとしよう。
今回はNEWダメコン、ってことで、なんとスプライトが3つ表示可能なゲームマシンだとしよう。
どのようにして表示するのかってあたりは「 スプライトローテーション(1)に書いたので、それを読んでいただきたい。
さて、このどうしようもないヘッポコマシンは3つまでのスプライトしか表示できないので、下の状況では4つめのDのスプライトが表示されない。ではこれをどうするのか? というのが今回の基本的なテーマになる。


ここで例によって例のごとく、スプライトバッファに書き込む順番ををいじり、下のようにすると、例えばDを見ると 消える>表示>表示>表示>消える とローテーションすることになり、45/60、だいたい1秒のうち75%は表示されていることになるので、チラチラしながら、表示されることになる。


これでスプライトの上限を超えて表示できることになり、万々歳…なのかというと、そうではない。
例えば、このNEWダメコンで『スター3連射』とかいうゲームを作らなければならず、なおかつキャラバン名人のウリは3連射なので「画面の上に3個の弾を出せるようにしてくれ!」という要望が営業からやってきたとしよう。
自機が1機、敵がかならず2匹、同時に画面の上にいるとすると全部合わせて6つのアイテムがあることになる。ABCをそれぞれ自機・敵として、D-Fに弾を割り当てるとして、上と同じ方法でローテーションしてみると…


なんと表示期間の半分しか、すべてのスプライトが表示されておらず、ぶっちゃけ自機が全然見えないゲームになるのは間違いない。
まあNEWダメコンはスプライトの性能が悪すぎるので、ここまで極端な結果になっているのだけど、本質的にはこれがむりやりスプライトの数を増やすときの問題になる。
要は 必要なスプライト数>表示上限 なので、なにをどうやってもチラついてしまうって話だ。
これが通常のスプライトローテーション…というか、今まで説明してきたスプライトローテーションと決定的に違ううところだ。
前2回で説明したスプライトローテーションは、スプライト並びが上限を超えたときの技術なので、絶対に表示できない数のスプライトをムリヤリ表示されせるときに、そのまま適用するとかなりの問題を引き起こすのだ。

では、もうちょっとマシな方法はないのか?
もちろんあるから書いている。簡単に書けば表示するものの種類に応じて、チラツキ方を変える方法だ。
具体的に何をやるのかというと

1)自機が消えるのは一番マズいのでAは常に表示する。
2)敵はある程度消えてもかまわないので、敵にスプライトを一個を割り当てる。
3)残りは弾。

と、このような割り当てを行うと表示は下の通りになる。


こうすることで

1)常に自機は表示される。
2)敵は2V毎(50%表示)に表示される。
3)弾は3V毎(33%表示)に表示される


ということになり、自機はちゃんと見え、他もそれなりに表示される状態になる。
かくして、スプライトの上限を超えて、それなりに弾数を出すことが出来るようになったわけだ。

ところでこれがどうしてスターソルジャーと繋がるのか?
ファミコンのスプライトは64個が上限だが、自機は5方向に弾をうつ。一回撃つだけでなんと、スプライト総量の10%近く使うことになる。
弾が3発で弾切れだったらしいので、3*5=15。15/64=24%弱のスプライトを消費していることになる(もちろん上で書いた通り、敵の弾・敵・自機・爆発パターンなどが加えて必要になる)。
つまり連射型で、弾がいっぱい出るシューティングは、ファミコン時代のハードウェアでは常に工夫が必要で、そしてもちろん野沢さんはこれをスプライトローテーションで実現していた、という話なのである。
というわけで、スターソルジャー(5)に話は続く。

ところで今年の冬コミは『ペルソナ5』の評論と、このスターソルジャーの話って、書きたい話を二つひっつけた、世にもいい加減な本の予定でげす。
ペルソナはほぼ書き下ろし、スターソルジャーはブログの強化版。二つ合わせて30-40ページの本ではないかと思いまする。ハイ。
|| 16:43 | comments (0) | trackback (0) | ||

このエントリーをはてなブックマークに追加

コメント
この記事のトラックバックURL :
トラックバック