20240505 の開発進捗について簡単にですがご報告します。ネタバレはあまりしないつもりですが、まあ前半の面構成だけは説明するぐらいですか。動作対象は #80mk2 です。そう、1980年に一斉を風靡した NEC PC-8001 の後継機種であり、実は余りパッとしなかった mkⅡ という機種です。音は BEEP のみ。グラフィックは制限付きの4色で 320×200 ドット。低解像度で色数も少ないため表現力に乏しいマシンです。このマイナー機種でどこまで現代風のゲームが作れるかというチャレンジになります。


  • グラフィック
このゲームは硬派なシューティングゲームです。画面はメモリの都合上スクロールはしませんが、なんちゃって重ね合わせ処理は実現しています。#80mk2 のグラフィックエリアは $8000 - $BFFF です。実際には、$BE80 までなのですが、バンク切り替えの都合で $BFFF までが切り替わる仕様となっています。まともに仮面と AND OR をしていたら、Z80 4MHz というチープな CPU では実行速度が確保できません。そこで錯覚を利用することで、重ね合わせを実現しています。…いや、実際には重ねていないのですが、そのように見える技法を採用しています。
Player00 Player01
プレイヤーの草原地帯での移動です。左側の画像だけを見ると重ねているように見えます。そして移動した右側を見てください。よく見ると、岩の下側が半分消えています。ですが、シューティングゲームではその場に立ち止まる事はほぼありません。そのまま通り過ぎてしまいます。ゲームをしている人の目は、ざっくりとだけプレイヤーを見る事になります。そのため、背景の大部分を占めるタイリングが同じであれば、同化してみえるのです。まさにどうかしていますw
タイリング情報
これが背景をマージするために必要なテーブルです。各ステージ毎のパレットと背景のタイリングパターンがあります。この背景パターンを、ステージが始める事にプレイヤーデータと事前に AND OR してワークに格納します。そして、ゲーム中はワークに生成されたか画像データを使って、PUT で描画しています。これで重ね合わせと比較すると単純に2倍の速度が出ます。いや、おそらく 2倍以上になってると思います。理由は AND OR は画面の情報を抜いて、論理積で抜いて、論理和で重ねて、また元の位置に戻すという処理になりますが、これが単純に画面に描くだけになります。こうして実行速度を確保しています。
Monsters
あと、登場する敵は登場するステージが決まっています。そのため、最初から背景とマージした画像としてメモリ内に存在しています。
重ねてるように見えるだけ
赤いスライムの表示がどう見ても重ね合わせしてるように見えるって?はっはっはっ、現状ではナイショです(笑

登場する怪物ですが、基本的にはスキップモアさんからご提供頂いた 1-Bit Rogue のパターンを使用させていただいてます。色に関しては、#80mk2 の制約があるので、それに合わせて改変しています。また、 1-Bit Rogue に存在しない怪物に関しては、針鼠屋さんに今のところは全て作成していただいてます。
logo
ロゴデザインですが、OXYGEN さんに原案を頂き、それを藍恋さんにかっちょいいドット絵に興し直していただいてます。このロゴのお陰で印象がまるっきり変わってます。かっこいい❤


  • サウンド
BEEPを高速に on / off させる事で擬似的な矩形波を生成して音階を奏でます。この辺りは以前紹介していますので、詳細はそちらを御覧ください



割り込み禁止設定を適切に行う事で、現在はかなり綺麗な音で音階を奏でられるようになりました。とはいえ、それでも限界はあります。多数のサウンドデータの寄稿を頂き、かなり #80mk2 のゲームとしては華やかになったのではないかと思います。以下は抜粋です。なお、全て仮配置ですので、ゲーム完成時には予告なく変更になっている可能性があります。曲は全てエミュからの録音です。実機でもほぼ同様に聞こえます。

タイトル曲  ©Monyons


Stage-1 BGM  ©稗田裕基 a.k.a. ハイデン


Stage-3 BGM  ©佐野広明


割と綺麗に鳴っていると思うのは、自分だけですかね。なお、音長が伸びず全て尻切れトンボになっているのは、もし音長を伸ばして再生しようとすると、CPU パワーを 100% 音楽再生に持っていかれるためです。ゲームがメインですから、全て持ってかれると大変辛いのです。調整の結果、1音に付き 8ms だけ CPU を専有させています。これでもかなり重いんですが、自分なりに頑張ってみました。^^;


  • マップ
マップ作成は全面的に拙作の Magic.MapEditor を活用しています。これが無ければ、この開発速度は出なかったと思います。昔の俺、グッジョブw ここまで出来ているマップを Stage-10 まで簡単にご紹介します。
Stage-01
Stage-1 / 2 草原です。何もないスッキリとしたデザインとしています。デカい樹木には、さらになんちゃって重ね合わせ処理を、力技で施してあります。

※プリンターはこういうので良いんですよね。インクで儲けようと思わずに、メーカーも製品で勝負してほしいものです。
Stage-03
Stage-3 / 4 森林です。足元が隠れる処理を実装しようかと思ったんですが、ゲーム性には関係ないのにメモリだけ食いそうだったので、実装は現在見送りとなっています。運よくメモリが余ったら…と思っていたんですが、いやあ、これは余らないですわ^^;
stage-05
Stage-5 / 6 悪魔城です。最初の構想では吸血鬼を出すつもりだったのですが、Stage-6 のボスが吸血鬼から悪魔に変更になったので、単純に悪魔城という名称になっています。このマップで初めて壁が登場していて、進行を妨げる要素となっています。パレットの関係で残機の顔色とスコア表示が凄い事になっています。これは改善は難しいかも…。
stage-07
Stage-7 / 8 墓場です。スキップモアさんにご協力を頂いたマップとなっています。墓場と言えばゾンビが定番です。ゾンビをゾンビらしい感じで出現させるのに、少しプログラムで苦戦したマップとなっています。わらわら出ますよわらわらわらわらwww
stage-09
Stage-9 / 10 ダンジョンです。壁の配置に苦労したマップです。どうして苦労したかは、ゲームをしてみると分かります。かなりの特殊処理のオンパレードになっています。


  • 今後について
ここから先はメモリもそうですが、処理速度の限界にチャレンジする事になります。デカキャラをどう動かせるかというチャレンジです。いや、もしかしたらメモリの限界が先に来ちゃうかもしれません。ここまでのデバッグでかなりやり込んでますが、それでも楽しいと思える状態になっています。だから、個人的にはかなり上手く出来ているのではないかなあと。

このゲームデザインは、Newシティヒーローの反省を多く盛り込んでいます。このゲームは、PCGのリアルタイム書き換えという技術的なチャレンジが最も大きな要素でした。そのため、正直若干ゲーム性は疎かになっていました。1面あたり3分以上プレー時間がかかります。結果、20面クリアまで100分くらい必要となり、現代のゲームデザインからはかなり苦しい状態となっています。

今どきのゲームはサクッと始めて、短い時間で楽しめるのが理想です。今作ってる XeGrader(ゼグレイダー)は、1面辺り平均で1分です。短いステージだと30秒位で終わります。次々とゲーム内容が変化することで飽きずに続けられるようになっています。まあ、こちらも 20面もあるので、全面クリアするにはそれなりに時間は掛かりますが、それでも最速で30分でクリアできるように調整したいと思ってます。但し、一部を除いて敵はマップに居座り続けるので、そのまま放置すればゲームプレー時間はどこまでも伸びます。時間に追われないってのも、今どきのゲームデザインとなっています。

このペースで開発が進めば、2ヶ月後の7月にはベータ完成までいきそうです。少なくとも普通に遊べるレベルにはなりそうなので、なんとか次回の #80mk2 会に持ち込みたいと考えています。そして、各面に秘密が散りばめてあるので、数回プレーした程度では全く分からないと思います。最大の秘密の内容はタイトルデモに匂わせてて…。ちゃんと7月にベータ完成すると良いなー
ゼグレイダー
最後にこのゲームは PC-8001 mini では動作いたしません。実機としての NEC PC-8001mkⅡとデータレコーダーが動作に必要となります。yanatakaさんが配布しているSDドライブにもネイティブ対応はしていますが、動作に必須ではありません。あるとハイスコアを記録して次回起動時に読み込めるだけです。まあ、起動もかなり速いのでオススメではあります。

ゲームの配布は wav ファイルで行います。あと、Newシティヒーローの配布と配布条件を同じにする予定です。そして、新しい個人特定の仕組みを導入します。そのため、名前を書き換えてもCRCを変更しても、バイナリから個人特定が可能になります。まあ、書き換えそのものもベタで記録されていないので難しいとは思います。まあ、それもあってのSDドライブネイティブ対応だったりします。多段ロード方式なのに書き換えも出来ないのでは動かせませんからね…。
Loading
最後にお願いがあります。上記の情報を元にローディング画面のイメージを描いていただける方がおられましたらご協力して頂けますと助かります。多数の怪物に一人で挑む冒険者の後ろ姿で、ロゴの配置も考慮して頂けると嬉しいです。使用可能な色は黒,赤,緑,白の4色のみで、解像度は320×200ドットです。上記の画像は今使用している仮のローディング画面です。よろしくお願いいたします。
※購入から1年、ずっと使い続けてますが全く問題ないです。本当に静かで冷えて最高です。値段がもうちょっと安いと良いのですが、今の円安ではもう望めないのでしょうか…