野うさぎ亭

XVY

XVYとは

XVY(エクシヴィ)は、X680x0用のフリーの格闘ゲームです。

T.SOENO氏が作成されたSFXVIの後継バージョンとして、 有志が集まり作成していましたが、一般に公開できる版の完成を見ずに休止となっています。

mar1.png

履歴

1998年12月頃 SFXVIの内部の処理の調査を始める。
SFXVIをdisった結果から、ひたすらC言語の記述に起こしていく。
1999年2月頃 C言語への変換作業完了。(全部で2万行ぐらい)
引き続き、どの部分が何の処理を行っているか調査を続ける。
1999年6月頭 SFXVIの解析完了。世界で2番目にSFXVIに詳しい男になる。(笑)
1999年6月中 名古屋OFFが開催され、真夜中カラオケ屋で関係者が集まり、 新システムの打ち合わせを行う。
この時、正式にXVYという名前が決まる。由来は秘密。
2時間程度打ち合わせを行い、後は歌うつもりだったが、 結局、歌わず5時間も打ち合わせしていた。
夜食に金龍(キム・ドラゴン)ラーメンを食べる。
朝方、C言語ソースを見ながら打ち合わせし、SFXVIがこれ以上 改良する余裕が無いのがわかり、SFXVIとのバイナリ互換を断念する。
1999年6月末 XVYの開発を始める。
DONさんに最初の雛型を作ってもらい、後は私がそれを改良していく。
1999年7月頃 デバッグ用のツール(PDD)を作成する。
1999年8月中 システムコールとユーザ関数の呼び出しを実装。
1999年9月中 モジュールのロード・アンロード、メモリの確保・解放、 ファイルからのリソースの読みこみを実装。
開発関係者に初めて、XVYの配布を行う。
1999年9月末 GFXのローダー・セーバーを作成。
東京OFFにて打ち合わせ。BGデータやパレットの割り当てなどを決める。
NEYさんから、システム用のBGデータを頂く。
JIMMYさんが本職が忙しいため、スプライト関係の作業を引き継ぐ。
XSPの仕様(ソース)を読み理解する。 その上でXSPを改造することに決定。 そのままだと、PCG定義エリアだけで 4Mbyte のメモリが必要になるため。
るるるさんから、開発に必要なアーカイブを頂く。(XSP、JOYDRV、MCDRV)
1999年10月頭 BG関係実装。
テキストで表示していたメニューがBG文字になったため、 急にゲーム画面ぽくなる。
1999年10月中 スプライト管理システム(WSP)を実装。
乱数ルーチンも実装。アルゴリズムは、下記のものを利用。
なかなか良い乱数を作成する&フリーウェアであるため、かなりお勧め。
http://www.math.keio.ac.jp/~matumoto/mt.html
1999年10月末 ☆が流れる+フェリシアの直立動作のデモを作成。
☆は、赤黄緑青の順に表示プライオリティが設定されている。
このデモは必見と言うほど、自分でも出来たのが嬉しかった。
複合スプライト(VSP)を実装。
モジュール間通信(IMC)を実装。
1999年11月頭 XVYの各画面の流れ図を書く。 それを元に、各画面のメインルーチンを実装。
DONさんより、テスト用のBGMデータを頂く。が、未実装のまま。(汗)
1999年11月中 矩形エディタ(REED)を作成。 ボタン配置で議論が白熱する。結果、現在の配置に落ち着く。
フェリシアのデモでフェリシアを6体に増やす。
システムに添付するオリジナルキャラについて議論が始まる。
必須セルについての議論を行う。
この頃、EDOさんの腰は悪かったらしい。
1999年12月頭 矩形エディタのボタン配置について、まだ議論が続いている。
XVY最初のテストキャラクタ、K_LUKSを作成する。
矩形判定の仕様を議論する。
1999年12月中 東京OFFにて、打ち合わせ。体力の上限値を決める。(768MAX)
しかし、あう社長さんから体力の上限値を1000以上は欲しいと 意見があり、完全決定ならず。とりあえず暫定となる。
1999年12月末 1999年最後のXVY配布。 内容は正確に覚えていないが、確か地上攻撃動作はしていた。
2000年1月末 ジャンプ攻撃の追加、押し合い処理の実装、ステージ端の処理を追加。
2000年2月頭 ヒット情報について議論。
2000年2月中 キャンセルについて議論。
音声関係、ヒット処理関係実装。 やっと、相手キャラクタを殴れるようになる。
2000年3月頭 秋葉原にて打ち合わせ。この日は、PS2発売日。
夕方からは、飲み会。NEYさんおめでとうございます。(謎)
サンプルキャラ、コマンド入力方法、動作カウンタについて話し合う。
攻撃関係実装。 体力ゲージも減るようになり、やっと遊べるレベルになる。
2000年3月中 ショット関係実装。
この頃から開発関係者内でキャラクタデータ作成が始まる。
2000年3月末 xvy.ini と xvy.lst を実装。 外部からキャラクタを設定できるようになる。
この時、VSPファイルがないと、REEDが止まったままになることが発覚。(汗)
2000年4月頭 X68KのBIOSがフリー化。 エミュで遊ぶ人も多くなるだろうな。
るるるさんが、 Parlで、SFXVIのCELL.LST、DSP.LST を XVYのCELL.LST、DSP.LSTに変換するスクリプトをさくっと作る。
十数行程度で書かれていて、なかなかCoolな出来である。
2000年4月中 テストデータ用にライを作成。
AT-FIELDにて、SFXVI開発者向けに公開する。
2000年4月末 いつの間にか、フェスタでの一般公開が決まる。(笑)
フェスタ68に向けての処理を追加していく。
セレクタ、タイトル、戦闘時のメッセージ(Fight、KO)、 勝利敗北動作を実装。
GW期間中のためか、次々と実装されていく。
2000年5月頭 フェスタ68に向けて、ステージデータが突貫工事で作成される。
ラスト1日で、アリーナステージを作る。(しんどかった)
フェスタでお披露目会を行う。
会場でぴぴぴさんからマイクを持って説明するように言われ、 ちょっとびびったが無事終了。
思っていたよりも反応が良く非常に嬉しい。
NEYさんが、XVYの公式HPを立ち上げる。
2000年5月中 APIリファレンスを作成する。 すでに200以上も関数があるため、説明を書くのに手間がかかる。
書いている途中でそのまま寝てしまうことが何度かあった。
最近は、読むだけでなく書いていても眠くなるらしい。(爆)
2000年5月末 あう社長さん作のA_LUKSの飛び道具乱射が非常に重くなる原因を調査する。
負荷の約半分が矩形判定処理であるのがわかり、処理を改善する。
2000年6月頭 コマンド入力を実装中。 当初、一般のアーケードゲームで採用されている入力状態を逐次検査する方法で 実装したが、とある致命的な問題があることがわかったので、 SFXVIと同じ、コマンド入力の後方から検査していく方法に変更する。
コマンド入力処理のテストのため、 色々な必殺技や特殊入力技を実装しなければならないが、 それら技に必要となるセルを準備するのに時間を費やす。
2000年6月中 山梨オフにて打ち合わせ。 これから実装する処理の細かい仕様や実装順などを確認する。
ラブひなに感染する。羊牛鶏馬豚猪鹿の肉を食べる。
コマンド処理を一部実装。
キーコンフィグ暫定版を実装。
REEDを改良。参照用セルを表示できるようになる。
2000年6月末 REEDをさらに改良。セル表示領域をスクロール可能にしたり、 マウス処理を修正し、EX68でもうまく使えるようにした。
ついにスプライトダブラ実装。 誰かアースクェイクかフェルナンデスを作って。(笑)
コマンド処理の残りを実装。溜め、連打、回転が指定可能になる。
2000年7月頭 暫定的に、スローモードとポーズモードを追加。
るるるさんに、BGM関係のルーチンを作成してもらい、 システム本体に組み込む。
2000年7月中 次に何を実装すれば良いのかわからなくなり、 1週間ほどダメ人間モードになっていた。 どうにか実装計画を練り直して、復帰。
ヒットマーク表示実装。
ガードマーク表示実装。
2000年8月頭 コミケ前なので、システムの実装は一時中断。
代わりにテスト用キャラの実装を充実させる。
2000年8月中 夏休みモードのためかスランプなためか作業がはかどらない。
permit系のいくつかを実装。無敵状態や押し合い判定無効状態に対応。
2000年8月末 システム内部の処理をちょっとだけ追加。相変わらずはかどらない。
2000年9月頭 PICデータ表示ルーチンを作成する。
フルアセンブラで、レジスタを多用して可能な限り高速化しているが、 ゲームで使うには、やはり遅い。
表示データの大きさに比例するワークエリアも必要で、良いとこ無し。
一方、GFXデータ表示ルーチンでは、細かいところで改良点が見つかり修正。
ちょっとだけ早くなった。
2000年9月中 オープニングモジュール、セレクトモジュール、VSモジュールを作成。
実際に作ってみると、PCGやパレットの割り当てなどで問題が見つかる。
色々とリソース周りの割り当て案を考えて、ほぼ仕様が固まる。
2000年9月末 久々のバイナリアップ。
夏ばてかスランプか単に飽きたのか、作業があまり進まなかったのは痛い。
2000年10月頭 ステージの境界処理周りを修正。 ユーザ定義PCG処理、登場処理、サブゲージ処理を追加。
えくCDの慰安旅行に参加。 宿でXVY関係者と打合せを行ったところ、投げ処理がすぐにでも欲しいとのこと。 現在のものに投げ処理を実装してから、バイナリアップすることにする。
2000年10月中 投げ処理、セル情報操作API、座標調整APIを実装。
現状の版で簡単に投げ処理が実装できると思っていたが、 いざ実装するとすると、 セルの反転処理や座標調整処理が必要なことに気づき、 色々と処理を追加する。
2000年10月末 オープニング、セレクタ、VSモジュール改良。 影表示処理、砂煙表示追加。
XVYの開発に使用していたドライブが壊滅。refreshg実行中ハングしたのが原因。 しかし、事前にXVYまるごと別ドライブにコピーしていたので問題無し。 SFXVIは、キャラクタとステージデータ以外消えてしまったが、 以前使っていたHDDに環境がそのまま残っているので、 それをコピーして事無きを得る。
2000年11月頭 動作関数リストエディタ作成。cell_flipInfo()の仕様変更。AF_~の拡張。
フェスタ68があったが、地元のイベント(大道芸ワールドカップ)の方を見に行く。 フェスタでは、ALTISさんが合いたがっていたらしく、悪いことしたと思う。
週末にNEYさん宅で打ち合わせを行うため、ちょっと頑張って開発する。
2000年11月中 AF_~をさらに拡張。空中にいる状態の判断方法を変更。
CPU処理を追加。まだ、どつき合いレベル。
NEYさん宅で打ち合わせ。 システムは、冬コミまでにCPU処理の実装を行うことに決定。
空中にいるかどうかの判断をY座標で判断する方法から、 しゃがみ状態と同じようにフラグで判断するように変更した。 これは、MUGENからのパクリである。 より良いソフトを作るには、他のソフトの長所を どんどん取り入れていくことも必要である。
2000年11月末 ストーリーモード、デモモード、乱入モード、コンティニューを実装。
空中にいるかどうかの判断をフラグに変更したが、 攻撃がヒットした時の処理は、Y座標の位置も見るように修正した。
これは、フラグだけだと攻撃を当てた時に、 空中浮遊する場合が多発したためである。 MUGENの方はどのように対処しているのだろう?
今までVSモードのみだったが、ついに各種モードが追加された。 これでさらに完成度が高まった。結構嬉しいものである。
2000年12月頭 ヒットマークの変更。JOYDRVを最新版に置き換え。PDD.Xの改良。
NEYさんから、ヒットマークのSPを頂く。なかなか良い感じ。
以前から攻撃時にハングする不具合があったが、 原因はJOYDRVのバージョンが古かったためであった。
2000年12月中 画面暗転、フラッシュ、震動を実装。
2000年12月末 FA表示、コンボ表示を実装。
2001年1月頭 帰省&18キップの旅のため、進展せず。
2001年1月中 気絶処理を実装中。思っていたよりも色々と面倒なのが発覚。
休みボケで開発効率が悪い。
2001年1月末 気絶処理を実装。 完成した後、SFXVIのと比べてみると星の軌道が小さかった。まぁいいや。
2001年2月頭 CONFIG画面の強化。時間制限の追加。
面倒だと思っていたCONFIG情報の保存だがあっさり出来てしまった。 この辺りは、ランダムセレクターで培った技術が活かされていると言えよう。
時間制限は、それ自体をシステムに組み込むのはめちゃくちゃ簡単だったのだが、 CONGIF画面で簡単にON/OFF出来ないとキャラクタ開発がやり辛くなるので、 今まで実装してなかった。
また、実際に実装してみると、 キャラクタ側で勝敗判定を行うのが面倒になってきたので、 システム側からヒントを与えるようにした。
2001年2月中 ヒット情報構造体の修正。mkhitの修正。
ヒットストップを攻撃側とくらい側それぞれに指定できるようにする。 これは、ブロッキングの実装に必要なため。
あと、ガード方法をフラグという項目に変更し、 ガード方法以外に削りや跳ね返し攻撃、打ち返し攻撃のフラグを追加した。
2001年2月末 XTW(XVY Tool Window)ライブラリの作成。
ヒット情報の内容が複雑化してきたため、GUIツールを作成することにした。
しかし、これまでに作成したGUIツールでの似非ウィンドウ処理では、 今後ますます増えるであろうGUIツールの作成に対して、 開発効率があまり良くない。 そこで、今後のためにもここらで、 当初の予定にあった本格的なウィンドウシステムを作成することにした。
とりあえず、基本的な処理のアイデア出しと、 システムの初期化、後始末処理の実装を行った。
2001年3月頭 引き続き、XTWライブラリ作成。
ルートウィンドウの実装、カーソルの実装、ボタンの実装、 イベント処理の実装、を行った。
2001年3月中 XTWライブラリの作成を続ける。
ラベル、エディット、矢印ボタン、スプレッドシートの実装を行った。
また、テストも兼ねてHITEDの作成も始める。
2001年3月末 HITEDとXTWライブラリの作成。
チェックボックス、スピンボタン、数値エディットの実装を行った。
スプレッドシートの描画が遅いので、改良を試みるがあまり効果が無い。
2001年4月頭 HITEDとXTWライブラリの作成。
HITEDの描画が遅く不満があるが、 しばらくシステムをアップロードしていなかったので、 ここで一旦アップロードした。
文字列描画の抜本的な解決方法を色々考える。
2001年4月中 HITEDとXTWライブラリの作成。
XTWの高速化と、ダイアログ、スクロールバー、リスト、 メッセージボックスの実装、保存処理の実装を行った。
高速化は、それまでグラフィック面に描画していた文字を テキスト面に描画するようにした。 マスキング処理が面倒であるが、 X68Kの特殊機能とアセンブラを駆使してどうにか完成。
ダイアログの実装で初めて 兄弟ウィンドウ同士のオーバーラップを試してみるも 文字列描画のクリッピングがうまくいかずNG。 結局のところ、ウィンドウ領域情報を取得する部分に不具合があり、 修正することでOKになった。
うーん、これでポップアップメニューなども 作れるようになるぞ。
2001年4月末 フェスタ68でのデモの準備。
当日配布するチラシの作成と拙作のサターンパッドコネクタを接続する JOYDRV互換のドライバを作成した。
システム自体は、他の開発者がデモ用キャラを作成しているため、 仕様の変更を伴う修正は行わなかった。
唯一、ステージデータでBGMを鳴らした場合に適当なタイミングで BGMを止めるための処理を追加したのみ。
2001年5月頭 フェスタ68でのデモ。
フェスタ68に参加。チラシは、100枚ちょっとはける。
途中、ALTISさんからデータを頂き、デモに追加。 ALTISさんには、積極的にデータを作成して頂いてもらっており、 大変感謝しております。 やっぱり、誰かに使ってもらわないと製作意欲が湧きませんから。
2001年5月中 XAR関係のツールとライブラリの作成
SFXVIでは、各データ毎に数個から数十個のファイルが必要であったが、 この仕様のおかげで、SFXVIのデータが置いてあるドライブは、 大量のファイルを抱えることになり、 クラスタギャップの比率が大きくなっていた。
そこで、XVYでは、複数のファイルを一つにまとめ、 アクセスする手段を用意することになった。
それが、XAR形式であり、 複数のファイルを1つのアーカイバファイルにまとめることにより、 クラスタギャップの削減とデータロード時間の短縮を図っている。
2001年5月末 セレクタリソースのキャッシュ機構の作成
顔データとかのセレクタ用リソースを管理する処理の作成した。
セレクタリソースを全てのデータを常にメモリに持つのは、 不経済であるので、以前の打合せでキャッシュ機構を採用することに 決定していた。 しかし、いざ処理を記述しようとすると、キャッシュ機構の 良いアルゴリズムが思い浮かばない。
そして結局のところ、バッファの確保と自動解放を行う処理を 書いたところで、別の処理を記述することにした。
2001年6月頭 GFX関係とセレクタ&VS&ブートモジュールの強化とキャッシュ機構の実装
セレクタリソースが読めるようになったので、 セレクタとVSでセレクタリソースを表示するように処理を記述した。
また、この時、GFXデータをメインメモリに展開するAPIが必要になったため、 メモリ展開するルーチンを実装した。
で、実行してみたところ、セレクタの画面を作成する処理が重くなった。
これは、画面を作成する際、各キャラの顔データ(小)を読み込むためである。 対策としては、SFXVIと同じく、システムの起動時に予め先読みしておいて リソースの読みこみ時間をうまく誤魔化すしかない。
で、対応するにはキャッシュ機構が必須なので、数日あれこれ考えて、 キャッシュ機構を実装する。
そして、ブートモジュールとセレクタモジュールに修正を加えて、 SFXVIで見なれた起動処理を実装した。
起動時のデータ読みこみ時間がどのくらいかかるか、ちょっと不安があったが、 いざ実行して見ると、全く問題ならないくらいの時間であった。 もう少し遅くなっても文句は言われないと思われる。 もっとも、先読みするデータを決めるのは、セレクタモジュールなので、 セレクタモジュールの開発者次第であるのだが。
2001年6月中 ステージの入れ替えとSP優先度の修正と戦闘画面の大きさの修正とその他色々の修正
NEYさんから、動くステージの方がサンプルとして良いとのことで、 2つの新ステージを頂く。 で、代わりにローズステージとリュウステージを外した。
ステージデータを作成する上で、NEYさんから意見で、 SP優先度の修正とサブゲージの表示BG面の変更を行った。 この変更で、キャラクタより手前にステージの表示物を 問題無く配置出来るようになった。
後、アーケードゲームに合わせて、先頭画面の画面サイズを 256x232から256x224に変更した。 また、これに合わせて、キャラクタの表示位置を8ドット下に移動し、 体力ゲージも8ドット移動した。
他には、ALTISさんからの報告で、 pos_controlDistance()の不具合を修正した。
そう言えば、開発の実作業をはじめて、もうすぐ、まる2年になる。 これだけ長期開発を続けているが、 まだ終わりが見えないのがちょっと辛い。 地道に続けていくしかないのであるが。
2001年7月~10月 本職の方が忙しく、XVYの開発が出来なかった。
2001年11月 本職の方は相変わらず忙しいが、 頑張ってシステムにラスタスクロールを追加する。
2001年11月~2002年2月 本職の方が最高に忙しく、XVYの開発が出来なかった。 冬休み返上で仕事をするはめになり、静岡沼津間を毎日往復する。 2002年は、終電で静岡駅に到着したことから始まった。(鬱)
2002年3月~4月 本職の方に余裕が生じ始めたので、XVYの開発を再開する。
とりあえず、REEDの新版を作ろうと作業を始める。 当初、以前要望が上がっていた通り、 DSPファイルの編集処理と矩形設定処理を 一つのプログラムで行えるようにツールを作ろうとしたが、 内部のデータ管理が非常にややこしくなるため、断念する。
結局のところ、DSPを編集しVSPデータを作成するツール(VSPED)と セルデータを作成するツール(REED)の2つに別けることにする。
2002年5月頭 フェスタ68に参加。
システム自体は、昨年からほとんど変わっておらず、 申し訳無い状態であったが、 キャラクタやステージデータが、想像以上に充実していた。 開発していただいた皆さんに感謝。
フェスタでは、開発関係者がひさびさに集まったのであるが、 私も含め皆仕事に疲れているようであった。
ある程度幅はあるものの、皆働き盛りの年齢のため、致し方ないのであるが。
2002年5月中 VSPEDが一通り完成したので、半年振りにシステムをアップ。
今回から、K_LUKSを外し、添付のキャラクタは1体となるが、 これから、新規キャラを作る予定。
2002年6月 まるるんのセルの整理など。
2002年7~8月 まるるんの作成を行いながら、VSPEDの改良。
2002年9~11月頭 まるるんの作成を行いながら、REED ver2 の作成と改良。
2002年11月中 まるるんが一通り完成。アップした。