アフィリエイト広告を利用しています
 

2024年04月30日

【ゲーム制作】面クリア型アクションゲーム 公開



ゲーム制作」カテゴリで制作していた面クリア型アクションゲームが完成しました!
結構良いレベルに仕上がったかと思います。
24_4_23_3.png
▲タイトル画面
■主な新テクニック
 ・水平ライン5枚を超えた擬似SPRITE表示
 ・上記を利用したキャラクタ初期位置表示
 ・SPRITE3枚重ねのキャラクタ
 ・豊富なアニメーション処理

久しぶりにジョイスティックで自機移動するゲームを作成しました。
壁処理など、意外と忘れてるもんですね。
24_4_30_1.png
▲ゲーム画面
24_4_23_1.png
▲ストーリー画面




























タイトル『ハンド君の迷宮大冒険 』新作3
ストーリー

あなたは「じゃんけん国」の冒険家「ハンド君」。

「じゃんけん国」ではじゃんけんに勝った者が強者であった。

とある迷宮でお宝を発見した「ハンド君」、夢中でお宝を集めている最中、盗掘犯と鉢合わせ。

邪魔をする盗掘犯達をじゃんけんで勝って怯ませながら迷宮内に落ちているお宝をすべて集めろ!
操作方法

■タイトル画面

タイトルで、「スペース」バー若しくはAボタンでゲーム開始

以降、開始したコントローラーでのみ操作可能です

しばらく放置すると、タイトル画面とストーリー画面が切り替わります

■ゲーム操作

「↑」「→」「↓」「←」で右下の白い「ハンド君」を操作し、迷宮内のお宝「イエロージュエル」を集めてください

全てのお宝を集めると、次の部屋に進みます

全部で14部屋あります

邪魔をする盗掘犯達は、じゃんけんで勝てば撃退する事が出来ます

勝つと「ハンド君」の手が「グー」→「チョキ」→「パー」→「グー」…と、切り替わっていきます

撃退された盗掘犯はしばらくすると復活します

勝った後、「ハンド君」が黄色く点滅している間に連続して盗掘犯達を倒すとスコアが倍増します(1匹目1,000点、2匹目2,000点、3匹目4,000点)

水晶1個100点、面クリアボーナス10,000点

50,000点で「ハンド君」が1匹増えます
対応機種MSX1、MSX2、MSX2+製作年2024年
ダウンロードリンク先へジャンルアクションゲーム






※ゲーム内のキャラクタ、音楽は制作当時の物です。

公開前提に製作していないため、雑誌等から流用している物もあるかも知れませんので、著作権侵害の恐れのあるものは、ご連絡をお願いします。

posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月29日

【ゲーム制作】面クリア型アクションゲーム 第29回



面クリア型アクションゲーム 第29回

前回の続きです。
ここまでくると、ほぼお手上げ状態です。

可能性は低いと思いながらも、OTIR命令ではなく、OUT命令をループさせ、その都度NOPで時間稼ぎをちゃんとすれば直るのでは?
と、仮説を立てロジック変更。
…直らない。

次に、メインロジックで&H004Dコールをやめて、メインロジックでは書き込み先のアドレスとフラグだけ立てておいて、フラグが立っていれば割込み処理の中で&H004Dコールする方法を試してみました。
うーん、抜けは無くなりましたが、おかしな数字が画面上に表示されます。
あぁ、&H004Dはドット消しだけでなく、スコア表示にも使っていました。
…と、言う事は、メインロジック内の&H004Dを全て割込み処理にもっていけば問題ないのでは?
しかしこれは今からの修正が大変…。

止む無し…。
かっこ悪いのでやりたくなかったのですが、前回のドットを消した隣に別のキャラを描く処理で、かなりの回数テストしましたが、両方が同時に描かれない事はなかったので、ドット消しの&H004Dを2回コールする事にします。
24_4_29_1.png
抜けなくなりました。
うーん、かっこ悪いなぁ…。
でもまぁ、実用的と言えば実用的か…。

これ以上バグ取りに時間取りすぎても仕方ないので、今回はもうこれで行きます。
次回作る事があれば、VRAM操作を全て割込み処理内にもっていく方法を取りたいと思います。

次回公開します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月28日

【ゲーム制作】面クリア型アクションゲーム 第28回



面クリア型アクションゲーム 第28回

ドット抜けバグが、どうしても直らない…。
24_4_28_1.png
稀なんですが、毎回発生する場所も違うし、タイミングもバラバラで規則性がない…。

走査線割込みでSPRITE5枚以上の表示処理をしているので、それの影響であることは容易に推測出来ました。

ただ、まぁそれでもドット消しロジックのバグの可能性もあるので、そちらも調査。
ドットを消した場所とその隣に別のキャラを表示するように修正。
稀にですが、予想通りどちらかが抜けます。
と言う事は、ドット消しロジックがおかしいわけではないと結論。
(ドット消しロジックがおかしいのなら、両方共表示されない。)

次に、OTIR命令で転送が終わるまでに次のVRAM操作が入るのかな?と考えましたが、割込み処理ロジックでは、SPRITEシャッフル処理の後、BGM演奏ルーチンを実行しているので、転送処理時間が足りていない事はないと言い切れます。(32枚×4バイト=128バイト分の転送待ち時間)

しかし、ひょっとしたらの可能性が捨て切れないので、シャッフル処理とBGM演奏ルーチンの間に大量NOPを追加してみました。
…やっぱり直らない…。

何処かのサイトで、割込み処理内でVRAM操作すると画面がおかしくなる。とありました。
うーん、正しくこの状態なのかな?

そこでシャッフル処理だけ割込み処理から外してメインロジックに組み込んでみました。
遅い…。
「ハンド君」、敵、衝突判定、シャッフル処理のタイミングループ時間を調整。
うーん、ドット抜けは無くなりましたが、割込み処理でのSPRITE表示を見越して作成した、キャラクタ初期位置表示や、「ハンド君」消滅アニメーションが、おかしくなりました。
この方法を採用するなら、そのあたりのロジックを修正する必要があります。
この方法はどうしても直らなかった時ですね…。
とりあえず元に戻します。

となると、次に原因の要因となるのはドット消し時の&H004D。
そこで、&H004Dのコールを、DIとEIで囲い、VRAM操作中に割込みが掛からないようにしてみました。
…直らない…。

うーん、調べものと思考錯誤で時間が経ってしまいました。
今回は解決に至らず…。
次回も引き続きバグ取りです。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月27日

【ゲーム制作】面クリア型アクションゲーム 第27回



面クリア型アクションゲーム 第27回です。
今回は、「積み残し解消」と「バランス調整」です。

「ハンド君」と敵の衝突範囲、狭めました。
24_4_27_2.png
微妙なとこですが、こんなところかな…。

あと、「ハンド君」が敵に負けた時のアクションが何もなかったので、アニメーションを追加。
24_4_27_1.png
敵復活アニメーションの逆再生を赤でしてみました。
良い感じ。
24_4_25_1.png

詳細設計の積み残しは、面クリアボーナスの10,000点、すっかり忘れていました!
24_4_26_1.png
これで詳細設計すべてクリアしました。

次回は、前回発見した「バグ取り」です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月26日

【ゲーム制作】面クリア型アクションゲーム 第26回



面クリア型アクションゲーム 第26回です。
今回は「デバッグ」します。

結構致命的なバグがいくつか発見されました。
逆に細かいバグは無し…。

まず真っ先に気付いたバグは、2面目以降、マップはちゃんと表示されているのに、実質は1面の壁通路となってしまっていました。
原因は簡単、マップチェックロジックにマップ先頭アドレスを足し忘れていました。
これにより、マップチェックはすべて1面のマップでチェックされていました。
修正はマップ先頭アドレスを足すだけです。
24_4_26_2.png

次に8面以降面表示が1キャラ上に上がった状態で表示される。
24_4_26_4.png
1キャラ16×16という事を忘れて、横幅32キャラ(本当は16キャラ)に設定していたため、2面ずつ進み、面データのない8面(2面ずつ進むので16面)が1面の1キャラ上に上がった表示となった。
24_4_26_3.png
修正前
24_4_26_10.png
修正後

次にマップの外枠へ敵が飛び出しました。
これは、単純に一番上の通路の上壁のマップチェックロジックにバグがありました。
24_4_26_5.png
修正前
24_4_26_6.png
修正後

次に袋小路で復活した敵が初期位置と上の壁の間でウロウロしている。
24_4_26_7.png
これは復活後の移動方向を設定していなかったためで、消滅した際の向きに動こうとします。
その時、袋小路になっていると1方向にしか動けないためそこでウロウロしていました。
復活する際に移動可能な方向を設定するようにしました。
24_4_26_8.png

あと、稀にドット抜けが発生。
ドットを通過してもドットが残る。
24_4_28_1.png
効果音とスコアはアップしており、もう一度取ろうと戻ると既に取ったことになっているのでドットは残ったままになる。
多分、走査線割込みに関するバグだと思うので、時間かかりそう。
後日、このバグ取りをします。

バグはこれくらい。
あとは、バランス調整。

ゲーム速度これでいいのかな?
自分としては結構ゆっくり目だけど、自分の感覚で設定すると、いつも早すぎるので、これくらいがいいのかな?

難易度は、最初の頃の面は敵3匹で簡単だけど、面進むと敵が増えてすぐ挟み込まれて終わってしまう。
わざわざ敵を追跡型にせずとも難しい。
挟みこまれて終わるパターンが多いかな?

あと、やっぱり敵との衝突判定の範囲が広すぎるかな…?
近距離で逃げている時、曲がり角で衝突してしまう。
もう少し狭めます。

次回は、詳細設計の「積み残し解消」と「バランス調整」です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月25日

【ゲーム制作】面クリア型アクションゲーム 第25回



面クリア型アクションゲーム 第25回です。
今回は、「BASICで処理すると遅い」処理をマシン語化します。

前回BASICで組んで実行した際、ちょっと待たされ時間が気になった部分をマシン語にしていきます。

・初期画面表示
「ハンド君」や敵を初期位置に表示する。
その時併せて、敵座標を変数に設定する…、最初DATA文で14面9匹分用意し、変数に設定しPUT SPRITEで表示していましたが、バラバラ…と表示されるのでBASICは止め。
そこで、仮想スプライトアトリビュートテーブルに初期値を設定し、一瞬だけ走査線割込み処理を実行。
あら不思議、「ハンド君」と敵が表示されました。
これは仮想スプライトアトリビュートテーブルの設定値を「水平ライン4枚(MSX2は8枚)を超えてSPRITEを表示させたい」により走査線割込み処理で更新しているから。
特に改めてプログラム組む必要なし。
24_4_25_7.png

・面に出現する敵以外のSPRITEを隠す処理
BASICの時は隠してあるSPRITEを表示させる処理でしたが、上記マシン語では9匹分表示されてしまうので、各面出現しない敵(例えば1面は3匹しか出現しないので6匹出現せず)のY座標に&HE0(画面外)を設定し隠します。
面数から隠す数を算出し設定。
24_4_25_2.png

・面内のドットの数数え
DATA文で14面分用意し、変数に設定していましたが、マシン語で数えたらあっという間でした。
24_4_25_5.png

・速度設定
・面に出現する敵数設定。
面数から計算式で算出し設定。
24_4_25_4.png

・全SPRITE消去
32枚全部のSPRITEを隠す。
24_4_25_3.png

・タイトルとロゴの表示用に256文字整列。
256文字なのでBASICでも大丈夫かと思ったが、やっぱり遅かった…。
24_4_25_6.png

それ以外は、処理の遅さを感じなかったのでBASICで組みます。
BASIC全リストです。
オープニングとエンディングメッセージが含まれてるので、長い…。
24_4_25_8.png

次回、「デバッグ」作業です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月24日

【ゲーム制作】面クリア型アクションゲーム 第24回



面クリア型アクションゲーム 第24回です。
今回は「BASIC部」を組んでいきます。

BASIC部で、ゲームとしての体裁をいろいろ整えていきます。
必要な処理は、
・初期画面表示
・プレイヤーが死んだときの処理
  ・ゲームオーバー処理
  ・ハイスコア表示
・面クリアした時の処理
  ・14面全てクリアした時の処理
・SPRITE全消し
・各面毎の敵数セット
・出現待機敵を隠す(Y座標を&HE0にセット)
・各面毎のドット数設定

…と、なります。

…あ、そうだ、久しぶりすぎて忘れていました。
残機があり、1匹死んでもその続きからできるタイプのゲームの変数の取り方をすっかり忘れていました。
1匹死んだときと、ゲームオーバーの時とで、初期化する変数が異なります。
24_4_24_1.png
基本的には全ての変数を初期化するのですが、一部「スコア」や、「残数」、「面数」、「50,000点フラグ」などは1プレイ中を通して継続しなければならない値ですので、ゲームオーバーまで継続する必要があります。

よって、その分だけ別のエリアに変数用意しておき、ゲームオーバーの時だけそちらもクリアするようにします。

最初に挙げたBASIC処理に関しては、一部組み込みましたが…、
「やっぱりおそい」

次回、BASICでは時間のかかる処理についてマシン語で組み直します。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月23日

【ゲーム制作】面クリア型アクションゲーム 第23回



面クリア型アクションゲーム 第23回です。
今回はオープニング・エンディング処理を組んでいきます。

オープニングはタイトルだけにしようかと思ったのですがなんだか寂しい…。
24_4_23_3.png

そこで、昔よくあった「ストーリーのみ」を再現しようと思いつきました。
24_4_23_1.png
タイトル画面で放っておくと、ストーリーに替わるパターンをやってみました。
こんな感じ。
おー、昔懐かし感が出てますね。

因みに翻訳はMicrosoftのBing翻訳を使用して、詳細設計時に作ったストーリーを翻訳しました。
昔は辞書片手に一生懸命、英語化したものですが…。
便利な世の中です…。

ロゴ表示は今風、こんな感じ。
24_4_23_4.png
ロードするものが少ないので、一瞬です。

エンディングはどうしよう…。
このためだけに、メッセージ表示ルーチン使うのももったいないので、こちらも昔懐かし一画面エンディングにします。
24_4_23_2.png
メッセージだけ表示されて、BGMが鳴って「おしまい」。

懐かしさ満点ですね。

次回は「BASIC部」を組んでいきます。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月22日

【ゲーム制作】面クリア型アクションゲーム 第22回



面クリア型アクションゲーム 第22回です。
今回はBGM作曲と、効果音作成です。

今作では、ゲーム中と、エンディングの2曲です。
どんな曲にしよう…。
今作に合う、楽しい曲が良いな。

24_4_22_1.png
「MMLコンパイラ(通常版)」を使いデータ化。
「左SHIFT」+「F9」で高速実行。
やっぱり、MMLからそのまま曲が確認できるのは便利ですね。

今回も、過去に作った「MuSICA」ディスクに入っていた音楽を利用。
曲のストックはまだまだあるのですが、シューティングゲーム曲多め…。
この手のアクションゲームに合う曲はあまりないかも…。

次回はオープニング・エンディング処理です。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発

2024年04月21日

【ゲーム制作】面クリア型アクションゲーム 第21回



面クリア型アクションゲーム 第20回です。
今回は「ハイスコア」処理を組んでいきます。

前回、敵の倍々スコア処理を組んでいて、「高得点を目指せるなら、ハイスコア必要だよね」って思ってしまいました。
確かに、昔の面クリア型のアクションゲームって、必ずハイスコアがありましたよね。

でも、現状で画面の空き無し。
特に手間でもないので、画面構成変更してハイスコア付けてみます。
50,000点で1匹増える処理(正直忘れてた)を組まないといけないので、ついでに組むことにします。

24_4_21_1.png
こんな感じでどうでしょう?

24_4_21_3.png
50,000点で1匹増える処理は、50,000点フラグを用意し、50,000点超えたらフラグを立てて1匹増やし、以降50,000点チェックしないようにします。
ハイスコアは毎回チェックし、ハイスコアになったらハイスコアフラグを立て、スコアと一緒に表示更新するようにします。
24_4_21_2.png

上手くいきました。
posted by J-JSOFT at 00:00 | Comment(0) | TrackBack(0) | 開発
検索
<< 2024年04月 >>
  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        
広告
最新記事
ブログランキング
にほんブログ村 ゲームブログ ゲーム制作へ
プロフィール
J-JSOFTさんの画像
J-JSOFT
高校時代、あれほど熱心に取り組んだMSXに触れなくなって30年余…。 MSXエミュレータとの出会いで、MSX愛が再燃中。
プロフィール
カテゴリーアーカイブ
ファン
QRコード