先だってのモックアップを拡張して、プレイヤーキャラクタたるドラゴンの攻撃ロジックを試してみた。前世紀の8ビット機でやることだから現代の視点で見れば地味な演出に過ぎないが、MSX的には派手な部類のアクションにはなろうかと思う。<焼き払えッ!!>基本的なアクションは二種。トリガ(スペースキー)を押すとドラゴンが口を閉じる。一定時間以内にトリガを放すと・・・・・・つまり、普通の意味でトリガすると・・・・・・その時点で首が向いている方向に火の玉が放たれる。これが通常攻撃で、基本的に普通の敵キャラクタ(後日紹介)はこれで撃破できる。敵の放つ弾は破壊できない。一定時間トリガを溜めるとドラゴンの体が白く輝く(この演出は後日変更するかも)。この時点でトリガを放すと・・・・・・つまり、シューティングゲーム全般で言われるところの“溜め撃ち”をすると・・・・・・炎の吐息、いわゆるドラゴンブレスが放たれる。敵の放つ魔法弾を除くすべてのキャラクタ・弾を破壊できる。ドラゴンブレスを放ちながらドラゴンを移動させると、連動して炎がしなる。名称未定(仮称をつけるとそのまま定着するっぽいので敢えて仮称はつけないことにする)の本作は、基本コンセプトとしては、持て余し気味の火力を有するプレイヤーキャラクタを操って、火力は小さいがひたすら物量で攻めて来る敵と戦うゲーム、を指向している。ドラゴンブレスはそれを端的に象徴するもので、早めにその演出を確認しておきたかったのでモックアップ化してみた。YouTube動画の方には“Likes”が既にいくつかついているようなので、少なくとも評判は悪くはないようだ。以下、誰も気にしないとは思うがいくつか補足しておく。このモックアップはBASICで書いている。BASICの配列変数処理はお世辞にも高速ではないし、輪をかけてスプライトパターンの位置情報更新が無駄にとろいので、要するに素のMSXは動画の速度では動作しない。上掲動画はエミュレータOpenMSXのturboR高速モードで動作させたものである。「turboR高速モードでやっとこ速度が出せるモックアップで、無印MSX用ゲームのロジックを評価することに意味があるのか?」と思う人もいるかも知れないが、アセンブラで組んだロジックは、素のZ80であろうともBASICと比較するのも阿呆らしくなるほど速いのである。この世代のソフトウェアの速度、というのは、つきつめればメモリ上に存在するある情報へアクセスする際、どれだけのステップを経ているかに依存している。BASICで配列変数を使う場合、まず変数名によって配列構造の先頭アドレスが特定される。次に添字が解析される。添字が変数で表現されている場合、入れ子構造的に同じことが繰り返される。添字が整数で解決されると、先頭アドレスと添字と変数型から最終的なアドレスが特定され、ここに至って初めて情報を読み書きすることができるようになる。一方で、アセンブラ言語というのは要するに具体的なアドレス以外に抽象的な層を持たない世界(翻訳ソフトとしてのアセンブラ上で使用されるラベルを除く)なので、すべてはプログラマ自身が最適化した計算のみでまかなわれる。配列を例に考えれば、先頭アドレスと添字(に相当する値)と事前に決定されているデータ長があれば、最終的なアドレス特定に必要な最小計算数は加算が添字+1回だけだ。BASICの場合とは計算回数が桁で違ってくる。これは言語系の優劣とは無関係で、単に目的の差によるものである。本質的にBASICは汎用高級言語であり、あらゆる任意の適時修正を受け入れるべく過大に冗長な処理をしているのに対し、アセンブラはその性格上、純粋に実現したいことだけを抽出して書くので、一切の無駄が省かれる。逆に言うと、モヤッとしたイメージだけでいきなりアセンブラで書くと、演出上の考慮漏れがみつかった場合、最悪、全部を書き直す羽目になる。以前にも少し触れたが、ボク自身はかつてはいきなりアセンブラで書く......つまり、そこに至る途中の思考ステップの記録を残さない......ことを常としていて、ゼビモドキも基本的にはその路線でやっていたのだが、今回はじっくりと時間をかけてその開発過程すべてを骨までしゃぶりつくして楽しみたい、という意図から、敢えてこういう迂遠なやり方......想定している処理系の実証コードを試行錯誤に向いたBASICで一旦評価してみて、後から高速処理のためにアセンブラ化する......という手法を採ることにした。ちなみに、今回の開発で使っているWebベースアセンブラは、Z80のネイティブなニーモニックとは別に、開発支援のための高級言語ライクなマクロ系も使えるのだが、これは使っていない。直接的には今更何ら実用に供さない言語系を習得したいと思わないからだが、結局のところこれは好みの問題ということになるのだろう。MSXでは、水平方向にスプライトパターンを4つまでしか表示できず、横に並んだ優先順位5番目以降のそれは表示されなくなるのが本来の仕様である。然るに、冒頭のデモ動画では、ドラゴンブレス発射時に、ドラゴン本体を含む10枚のスプライトパターンが横並びに表示されている。これは、開発(というか動作検証)に使っているMSXエミュレータ側でMSX仕様に基づくスプライトパターンの表示制約を解除しているからだ。以前にも書いたようにこの仕様制約はVDPの処理速度に起因しているので、MSXとは比較するのも馬々鹿々しい速度を誇る現代のコンピュータ上で動作するエミュレータは、そういう制約とは本来無縁なのであり、本物MSXと可能な限り等価な動作をするために、敢えて水平方向のスプライトパターン数を調べて制約を超過するものを消す、という処理が追加されているのである。動画作成時は、この機能をOFFにしてやっている。アセンブラ化に際しては、ゼビモドキの開発終盤で追加したスプライトローテータを介してこれらを表示する予定だ。実際の動作においてはキャラクタのチラつきが起こる、ということである。このチラつきこそがMSXっぽさでもある、と個人的には思うのだが、動画だけを見て何か凄いことをしていると勘違いされるのも嫌なので言っておく。いや、だから誰もそんなこと気にしないってば。コメント(0)トラックバック(この記事にリンクしている関連ページ)一覧トラックバックURLトラックバック一覧とは、この記事にリンクしている関連ページの一覧です。あなたの記事をここに掲載したいときは、「記事を投稿してこのページにお知らせする」ボタンを押して記事を投稿するか(AutoPageを持っている方のみ)、記事の投稿のときに上のトラックバックURLを送信して投稿してください。“AutoPage”AutoPage最新お知らせ。