コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
おちゃめ ◆jH1opV6FnGyx
2019/3/9 12:57
プチコン3号のQSP(WIDTH 16の1画面プログラム)で作ったレースゲーム「SIMPLE RACING QSP」です。
QSP史上最高のレースゲームだと思うのでぜひプレイしてみてください。
公開キーやプレイ方法や解説等はコメントにて。

コメント

アバター
おちゃめ 2019/3/9 13:00 ◆jH1opV6FnGyx
コースを3周した時間を競うタイムアタック専用のゲームです。
スライドパッドで左右にハンドルを切り、Bボタン(もしくはX、Yボタン)を押せばアクセル、離せばブレーキです。
ゴール時にAボタンでリトライができます。
私の自己ベストは19.58秒です。ぜひ、この記録を塗り替えてみてください。

公開キー【 XKX8YDC6 】
アバター
おちゃめ 2019/3/9 13:02 ◆jH1opV6FnGyx
このゲームはQSPの限界に挑戦したレースゲームです。
実際にQSPで作った経験があれば分かりますが、QSPではレースゲームとして成立させるだけでも大変です。
しかし、今回はゲームとして成立することは当然として、ゲームとしても面白いものを目指して作りました。
実際にどのような工夫をしているかを以下に簡単に記述しておきます。


QSPに収めるためコースデータを別途用意という方法もありなのですが、今回はQSP内にコースデータまで収めることにしました。

このような見降ろし画面のレースゲームにおいてコースを生成をするにはこのゲームのプログラムにあるような「GFILLが2つのコース」が最短のプログラムとなります。
GCLS -1E7:GFILL 40,50,330,160,0とすればGFILL2つより短縮できそうに思えますが、実はGCLSだと画面表示外(X、Y座標が0から511の範囲)まで描画されるためGSPOITでコースアウト判定ができず、座標で判定が必要になるので逆に長くなってしまうのです。
ちなみに-1E7というのはRGB(96,104,128)と同じ色を11文字短縮しているのです。

GFILL 0,0,399,239,-1E7のように画面全体をコースとして使用するのではなくGFILL 9,9,390,230,-1E7のように上下左右に9ドット分小さくしているのはコースアウト時に自車が画面外に出て見失わないためです。(このゲームではコースアウトで即ゲームオーバーにならないのもゲーム性を高めている)
アバター
おちゃめ 2019/3/9 13:03 ◆jH1opV6FnGyx
このゲームの画面を見て気づくと思いますが、道幅がバラバラになっています。
これはGFILLの座標指定を間違えたのではなく道幅を意図的に変えることでコースに変化を付けているのです。

では、上記スクリーンショットのように道幅が均等になるようにプログラムを改造してみましょう。

プログラム中の
GFILL 40,50,330,160,0
という部分を
GFILL 69,69,330,170,0
に変更

では、均等な道幅だったらどうなるかを実際にプレイしてみてください。

4つのコーナーはすべて同じ速度で曲がれるため非常に単調なゲームになってしまうのが、分かると思います。
それと比べてこのゲームは4つのコーナーの曲がれる速度がすべて異なるため全速で曲がれる部分、大幅に減速しないと曲がれない部分ができ、それによって同じ「GFILL2つのコース」でありながら変化に富んだコースに変貌していることが分かると思います。
アバター
おちゃめ 2019/3/9 13:04 ◆jH1opV6FnGyx
レースゲームにおいては何が重要かは人それぞれだと思いますが、個人的にはタイムアタック重視のレースゲームだとアクセルワーク(加減速処理)とライン取りが重要だと私は考えています。
そのためにはアクセルやブレーキを行った時の処理、コースアウト時の処理が重要になってきます。

このゲームでは自車の速度は最大で約3.7ドット/フレームとなっています。この速度は自車の全長(16ドット)を5mで換算するとスケールスピードは200km/h程度となります。
つまり、200km/hのスピード感をこのゲームでは味わうことができるわけです。

アクセルやブレーキの処理は等加速度直線運動で行う(一定の値ずつ加速や減速を行う)でいいのでは?と思う人もいることでしょう。
また、コースアウトになったらゲームオーバーでいいのでは?と思う人もいることでしょう。
では、そのようなことを行ったらどうなるかを実際に改造して確かめてみましょう。


S=(S+(BUTTON()>31)/13)*(.98-!GSPOIT(X,Y)/7)
の部分を
B=BUTTON()>31S=MIN(MAX(S+B/32-!B/16,0),3.7)IF !GSPOIT(X,Y)THEN LOCATE 21,14?"CRASH!!"BREAK:ENDIF
に変更

BEEP 42
の部分を
BEEP 42-(K<4)*29
に変更

これによって、アクセルとブレーキが等加速度運動になり、コースアウト時はCRASH!!と表示されて一発ゲームオーバーとなります。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -