supra13のまげつけ日記

supra13のまげつけ日記

今こそまげつけを有名に!

というかメモリの限界というか。

大量にオブジェクト設置していくと100 64種類くらいを超えるといくつか出現しなくなり始めます。

これは、市街+街並みの合計数(66)とほぼ同じです。

…が、一部のデカいオブジェクトはテクスチャ容量もデカいのでこいつらを使うともっと減るかも。

 

しかしコレがまげつけの画面だなんて数年前の自分は信じられないだろうなぁ…

 

カフェハナコがいい感じ。

 

看板がこんな風に生えてるビル好き。

 

エンデバー石油とモーターマン、俺マート。

 

道幅可変だから仕方ないとはいえ、歩道橋とか、電線とか、空中を埋めるパーツが無いのがちょっと物足りないところ。

出来ればクリア後に見て欲しい記事です。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

クリアしました?

エンディングは3パターンありますよ???

 

 

 

 

 

 

 

 

 

 

 

 

ネタバレ含みますよ???

 

 

 

 

 

 

 

 

まず、supra13戦クリア後に若干後日談入ってますが、それに補完する形で製作時のあれこれを少し。

ストーリーは、最初のPVで入ってた要素を全て拾う予定でしたが、容量の制約でかなり削りました。

タイトルのEightKarma…8個の業、ですが、これは語感でつけたので後付け的に、ED後に

テンズの1年前のメンバーの車両8台を取り返す、1台が1つの業、としました。かなりこじつけ。

ストーリーの後半の展開は3通りくらい素案があり、1つは昏睡エンド…ドライバー:SFみたいな感じ、

もう一つは2重人格の乖離した自身との対決…レーシングラグーンみたいな感じ、

そして最終的に採用した盗難組織との対決エンドです。

これは、製作開始時にしょっちゅうTwitterで車両盗難の被害情報が流れてきたのがずっと頭に残っていたから。

ボディ中西が最初に緊急事態宣言を受けて休業しているのは、コロナ渦にこの辺を設定したから。

ちなみにライスシティに移動するまでボディを変えられないのは、イベント4での国井のセリフにType-DC2と入れておきたかったため。ここで、国井がいかに車に対してどういう思いを持っているかを表し、後半の拉致イベントに繋がるわけです。


コース、レースについて

各街のコースレイアウトはストーリー中のマップをデフォルメしたものになってます。

ハイヒルズにある謎の土の道はその為。別にショートカットにはなりません。

一つやり残したことがあるとすれば、完全に隠し通路になるようなショートカットをどこかの街に仕込みたかったこと。

そのトリックを作ることは可能なんですがレイアウト的にもノード数的にも厳しかった…

また、最終決戦の舞台、ハイヒルズ奥地も3パターンくらい考え、最終的にあの形になりました。

最初にやろうとしたのは採掘場っぽいスタイル。しかし単調になるため没。

次は山奥に放置された、建設途中の高速道路スタイル。漫画カウンタックでスレッジハンマーとヴェイロンが戦う舞台みたいな。

これはあんまり雰囲気が出なかったため没。ジャンプでゴールするのやりたかったんですがね。

仕方なく、一番作りやすかったただの山奥の林道風に。木々をコースに出して視界妨害を行い、

普段使われてない道っぽさを表現。また、2か所ジャンピングスポットも設置。

イベント11でも使った崖転落要素を多用して難易度を上げています。

この崖、レース設定で横転:敗北にすると、崖に落ちたら敗北に出来るんですよね。

また、レース系のトリックだと、トゥルーエンド後の1年前のカノンの死闘イベントでは、

出走台数を9台にするとプレーヤーだけ他のライバルより離れた位置にスターティンググリッドが敷かれるのを利用した、

途中からZZZの部下が乱入してくる緊迫感を出せました。処理落ちによるスローモーションもいい感じです。

 

車、パーツについて

ボディを変えられるようにした際、足回りがFFと共通だとFRは制御不能になるので苦肉の策として4WDをFRっぽい動きにしたものをFRと言い張って設定しています。TuneのSpecB以降のミッションを入れるとLSDが入りますが、そうすると4WDだとバレます(笑)

ほんとはLSDはボディとセットで設定するべきでしたが、実車的にはミッションと同時に扱うものなのでどうしてもこうなってしまいました。

パワーのSpecRを入れると、減速時に常時アフターファイアが出るようにしてアンチラグを再現してます。

これは、最高回転数でのトルクがマイナスになると起こせるちょっとしたトリック。

SpecCでも若干それっぽい感じにはなってますが、あれは燃調が濃すぎるってことにして下さい(ぇ

 

ストーリーエディタのアレコレ

本作ではかなり複雑なフラグ分岐を行っていて、それらのちょっとした解説をしてこだわりを語りたいと思います。

・イベント11~13の連戦

 よくあるRPGの最終戦とかってセーブ不可の連戦だったりしますよね。

 それをやりたくて、全てのマップアイコンを暗くする制御を使って

 イベント11クリア後にはエンディングを見るまでイベント以外のマップアイコンを選択できなくしています。

 2週目以降でも、街移動アイコンは消えます。supra13戦のアイコンも同様。

 イベント12、13で敗北した場合11前に戻されます。

 イベント12で敗北になるためにはリタイアするしかありませんが。

 また、フラグが足りなかった関係で、その制御用フラグが2の時に後述の検問イベントが発生します(1が通常、0がセーブ不可)。

 また、これは後から気づいたのですが、連戦とすることでマップIDが必要なくなり、

 シーケンスエディタでの節約に一役買ってくれたのでした。おかげで試作よりいくつか要素をねじ込めました。

 

・エンディング分岐

 エンディングは3通りあり、

 夢落ちイベントを5回以上見た場合は夢落ちエンド。

 スポットでのバトルとカジノでの賭け回数が累計15回以上でノーマルエンド。

 それ以外はトゥルーエンドとなります。

 2週目以降でも同様の分岐を行うため、エンディングシーン開始時に累計バトル数を保存するフラグがあり、

 エンディング開始時に現在の累計バトル数からそのフラグの内容を引くことで同じ条件で分岐するようにしています。

 トゥルーエンドでは更に1年前のカノンの死闘が体験でき、

 これをクリアすると現金500000が手に入ります。

 

・SPバトル、弟のシュン

 弟のシュンが鉢山峠に出現する条件は、シュンが初登場するイベント2をクリアした状態であること。

 これを満たした状態かつ、1/4の確率でシュンが出現します。

 ただしエンディング後の2週目では最初から出現するようになっています。

 他のSPバトル(江口、渡辺)は単なる1/4の乱数です。

 この条件でシュンとバトルできることに気づけない人がいそうだったので、

 後述のゲストバトルの条件に鉢山峠フリーラン5回以上っていうのを設けました。

 ちなみに鉢山峠に出現するシュンはイベント2の時と違いリアスポがついています。見分け用。

 

・ハイヒルズ検問

 イベント10をクリアし、カルマシティに戻った際にハイヒルズで検問が行われますが、

 エンディング後も検問が行われることがあります。

 非検問時のカルマシティのスポットでバトルをした際に1/4の確率で

 検問が開始されるようになっており、解除するには

 一度ライスシティ→ミドルパークへと移動しもう一度カルマシティに戻るしかありません。

 なお、カルマシティにもう一度戻る際に解除される確率は3/4で、

 逆に非検問時でもミドルパーク→カルマシティに移動する際に1/4で検問が始まります。

 検問中でも鉢山峠は走れるため、ゲストバトルのひろロン氏の条件を達成したり、バトルすることは出来ます。

 supra13戦も鉢山峠なので検問中でもバトルできます。

 

その他の分岐は、基本的にはエンディング後かどうか、または乱数ですね。

例えばボディの駆動方式のチュートリアルは2週目では出てきません。

カジノの勝率は1/2の乱数です。負けた場合のみ所持金を確認し0を下回ったら強制退場。

 

毎マップ読み込み時に所持金が0未満なら0を代入するようにしています。

なので所持金が無く賭けレースに負けても所持金は0のまま、マイナスにはなりません。

何故所持金が0の時にカジノに入れなくしたかはこれで分かりますよね。

エンディング後かどうかの判断は街移動アイコンを基準にしています。

そういえばチートでEXITアイコンは消してあります。

 

あと、本作ではショップのコメントバグ対応策として、

パーツコメントのところにゲームの進行に関するヒントなどを表示しています。

これは、最も商品数の多いショップ…つまりsupra13に勝利後のボディ中西、での商品数である22個分、

ショップコメント専用のパーツを登録してそこにヒントを書き、

それぞれのパーツには正しいコメントを入れることでパーツ実装画面ではパーツごとの解説が読めるという対応を取りました。

しかしパーツは144個登録できるのに対し64個までしか購入できない為、本作のパーツ数は丁度64個です。

 

顔アイコンのシルエットにもバグがありまして、

レース直後に顔アイコンシルエットを設定すると表示されなくなってしまうんですが、

これはシルエットアイコンの直前に非シルエットのアイコンを一回設定することで回避できます。

 

あとゲスト様に関しての情報は2024年時点のものでして、

公開時既にうどん氏はYoutubeでの活動を休止しており、大河氏は完全にSNSの類から引退しました。

ですので、ないと思いますが、彼らへの直接のお問い合わせはご遠慮ください。

 

 

 

以下資料(最後の調整で変わった部分あるため参考までに

フラグ

01    マップ判別用(1=カルマ1、2=ライス、3=ミドル、4=カルマ2)
02    一時計算用フラグA(キャッシュバック・カジノ賭け金、ED分岐、カジノ入場アイコン等)
03    イベント11~13までの連戦用(11勝利後0にすることでセーブ等不可にする、2でカルマシティの検問モード)
04    草レース参加回数(勝率計算用1+ED分岐用)
05    草レース勝利回数(勝率計算用2)
06    鉢山峠フリーラン累計回数
07    ウエストドラッグ11秒切りしたら1を入れる
08    ED時のレース参加回数(2週目以降の分岐用)
09    夢落ち回数(ED分岐用)
10    ゲスト1(初回EDで1に、0で勝利済み)
11    ゲスト2(初回EDで1に、0で勝利済み)
12    ゲスト3(初回EDで1に、0で勝利済み)
13    ゲスト4(初回EDで1に、0で勝利済み)
14    カジノ賭け累計回数(ED分岐用)
15    スタート時1、完全クリア(作者討伐)したら0にする
16    草レース連続勝利数カウント(勝ったら1加算、負けたら0代入)
17    一時計算用フラグB(キャッシュバック・カジノ賭け金、ED分岐等)
18    ゲスト5(アイコン用)
19    街移動アイコン兼ED後フラグ
20    イベント01アイコン(0=非表示、1=表示)
21    イベント02アイコン
22    イベント03アイコン
23    イベント04アイコン
24    イベント05アイコン
25    イベント06アイコン
26    イベント07アイコン
27    イベント08アイコン
28    イベント09アイコン
29    イベント10アイコン
30    イベント11アイコン
31    イベント12アイコン
32    イベント13アイコン

 

マップID
01    ガレージ
02    ショップ1(S.K.パワーズ)
03    ボディ1(ボディ中西)営業休止中
04    ショップ2(オートパッカーズ)
05    ボディ2(ライスカーセンター)
06    ショップ3(エッジシェイパー)
07    ボディ3(インポートJUL)
08    ショップ4(S.K.パワーズ2)
09    ボディ4&5(ボディ中西2)
10    VS作者
11    草レース(カルマシティ-鉢山峠)
12    草レース(カルマシティ-ハイヒルズ)
13    草レース(カルマシティ-太陽通り)
14    草レース(ライスシティ-北野山)
15    草レース(ライスシティ-ライスシティ中央)
16    草レース(ライスシティ-ウエストドラッグ)
17    草レース(ミドルパーク-三ツ蛇下り)
18    草レース(ミドルパーク-ミルクラン)
19    草レース(ミドルパーク-パークウェイ)
20    イベント01(カルマシティ-謎の男(R32)戦)
21    イベント02(カルマシティ-シュンとドライブ)orED後のマップ移動(ミドルパークへ)(フラグ1で判断)
22    イベント03(カルマシティ-江口(MR2)戦)orED後のマップ移動(カルマシティ(ED後)へ)(フラグ1で判断)
23    イベント04(カルマシティ-国井(GTO)戦)
24    イベント05(ライスシティ-谷(GC8)戦)orED後のマップ移動(ライスシティへ)(フラグ1で判断)
25    イベント06(ライスシティ-ライスシティドライブ)orカジノ(フラグ1で判断)
26    イベント07(ライスシティ-渡辺(バイパー)戦)
27    イベント08(ミドルパーク-拉致からの逃走)
28    イベント09(ミドルパーク-千川(S15)戦)
29    イベント10(ミドルパーク-和田(A80戦))
30    イベント11(カルマシティ2-ケンジ(R32)戦)
31    イベント12(カルマシティ2-カルマシティドライブ)
32    イベント13(カルマシティ2-ZZZボス(DC2)戦)

ストーリーモードでパーツを一度でも購入すると、以降レース前に毎回パーツ実装画面が出ますよね。

これなんとかして出せないようにしたいなぁと思ったんですが、どうもセーブデータ側では難しそうな感じ。

一応、上記ツイートの画像で示している0x001B82D0からの処理が、レース前にパーツを所有しているかチェックしているところ。

で、自分の予想ではフラグの数値とかを保管してるエリアの近くにパーツ保有状況も保存してると思ったのでゲーム内のフラグ操作コマンドでパーツ保有状況をワンチャンいじれるのでは、と思ったのですが、

実際は…

結構離れてる上にポインター利用した毎回位置が変わるタイプのアレで、ちょっと難しそうなのでした。無念。

 

EightKarma、中盤からボディを変更できるようになる関係で、ボディ変化による挙動の違いを説明するチュートリアルを入れたのですが、これが中盤であるせいで既にパーツを所持してる確率が高く、レンタカー試乗前にもパーツ実装画面が出るのが気に食わないのですが、こればっかりはどうしようもないでしょうね…

勝利メッセージ等は出せなくてもいい、レースに買った時だけ所持金を加算させたい、

そういうときは実は一つのシーンで完結します。

 

レース後にこのフラグ操作をすると、

レース結果x定数(賞金額)の計算結果をフラグ1に入れることが出来、

 

その直後にフラグ1の内容を所持金に加算することで、

レース結果が成功のときのみ所持金が加算するような仕組みをシーケンスで分岐することなく実装出来ます。

(レースが失敗の場合は1つ目のフラグ設定の掛け算の計算結果が0になる)

普通はシーケンスで分岐するのでほとんど使わない方法ですが、

めっちゃボリュームのあるストーリーを作る際に仕方なくこういうことをしなきゃいけない場面が出たり出なかったり(笑)。

(ちなみに1枚目で格納するフラグを所持金にしちゃうと加算じゃなく代入になるので注意)

 

もしレース結果ではなく順位でやりたい場合(プレーヤーに1位でなくてもゴールさせたい設定のとき)は、

コマンドを更に一つ消費してしまいますが、

まずこのフラグ設定で、順位が1位の時だけフラグ1に1を代入させ、

その次にフラグ1×定数(賞金額)をもう一度フラグ1に代入、

最後にそれを所持金に加算すれば出来ます。

 

また、EightKarmaではレースの勝率を計算していまして、

これはレース前のシーンでフラグAに1を加算し、

レースに勝った場合のシーン(賞金シーン)でフラグBに100を加算し、

フラグB÷フラグAをして計算しています。

まげつけのフラグは小数点を扱えないのでフラグBは100ずつ加算しているんです。

問題はテキストにこういったフラグの内容を出力する機能がないので、

プレーヤーはプレイ中にこういった数値を見ることが出来ないということですかね。

EightKarmaではこの勝率が一定以上の時にしか会えないキャラがいます。

他にも○○を何回以上したら~とか、○○以上使うと~というオマケの分岐を用意しているので、

リリースした際にはぜひ遊んで下さい。多分春にリリース出来ます。頑張ってます。

 

これはOPL環境では動かない可能性もある、微妙なものなんですが、

メインプログラムより上の000A0000~000FFFFFあたりのエリアに自作プログラムを組むチートです。

使い方が分かってきたので色々遊んでみてます。

自作プログラムを使わないチートは過去記事を参照。

多くのコードをうどん01氏に作っていただきました。ありがとうございます!

 

●エアサス/ハイドロもどき

とりあえず前輪の車高をスティックで上げ下げ出来るようにしてみました。

タイミングよく上げ下げすれば、ホッピングできます。

 

patch=1,EE,001727a4,word,0802ffdd
patch=1,EE,00233944,word,0802ffd6
patch=1,EE,00233948,word,00000000
patch=1,EE,000bff58,word,e4400038
patch=1,EE,000bff5c,word,8fa40010
patch=1,EE,000bff60,word,3c09000c
patch=1,EE,000bff64,word,2529ffe0
patch=1,EE,000bff68,word,ad220000
patch=1,EE,000bff6c,word,0808ce52
patch=1,EE,000bff74,word,3c093980
patch=1,EE,000bff78,word,44890000
patch=1,EE,000bff7c,word,3c09004e
patch=1,EE,000bff80,word,2529b800
patch=1,EE,000bff84,word,340a007f
patch=1,EE,000bff88,word,812bfb04
patch=1,EE,000bff8c,word,3c0c000c
patch=1,EE,000bff90,word,258cffe0
patch=1,EE,000bff94,word,8d8c0000
patch=1,EE,000bff98,word,116a000c
patch=1,EE,000bff9c,word,c5810034
patch=1,EE,000bffa0,word,014b682b
patch=1,EE,000bffa4,word,11a00005
patch=1,EE,000bffa8,word,00000000
patch=1,EE,000bffac,word,46010040
patch=1,EE,000bffb0,word,e5810034
patch=1,EE,000bffb4,word,03e00008
patch=1,EE,000bffb8,word,e581fef4
patch=1,EE,000bffbc,word,46000841
patch=1,EE,000bffc0,word,e5810034
patch=1,EE,000bffc4,word,03e00008
patch=1,EE,000bffc8,word,e581fef4
patch=1,EE,000bffcc,word,03e00008

 

●カメラ4のときにGTA風にカメラをスティックで操作

(動画準備中)

これは、フリーカメラコードを作る際に一緒に作ったためちょっと行数がえげつなくてすぐにはコード公開できないんですが、

GTAみたいに車の周りをくるくるカメラ回せるコードです。

なお、地面は突き抜けますし、180度超えても加算するので戻る際は回った分だけ戻ります。

一応除算処理で初期位置に戻してるので市販ゲームっぽい動きにはなってるかと。

(結局フリーカメラコードをうどん氏に作ってもらいました←)

 

●フリーカメラ2Pコン操作用コードbyうどん氏
patch=1,EE,2026B40C,extended,0802C000
patch=1,EE,200AFFF4,extended,3F000000
patch=1,EE,200AFFF8,extended,3F800000
patch=1,EE,200AFFFC,extended,3E400000
patch=1,EE,200B0000,extended,3C19004E
patch=1,EE,200B0004,extended,2739B800
patch=1,EE,200B0008,extended,3C18000B
patch=1,EE,200B000C,extended,27180000
patch=1,EE,200B0010,extended,C71DFFF4
patch=1,EE,200B0014,extended,27EE0000
patch=1,EE,200B0018,extended,240DFFFF
patch=1,EE,200B001C,extended,832C000A
patch=1,EE,200B0020,extended,262FDA10
patch=1,EE,200B0024,extended,158D0003
patch=1,EE,200B002C,extended,0C02C041
patch=1,EE,200B0034,extended,832C000B
patch=1,EE,200B0038,extended,158D0003
patch=1,EE,200B0040,extended,0C02C04C
patch=1,EE,200B0048,extended,832C0013
patch=1,EE,200B004C,extended,262FDA14
patch=1,EE,200B0050,extended,158D0003
patch=1,EE,200B0058,extended,0C02C041
patch=1,EE,200B0060,extended,832C0012
patch=1,EE,200B0064,extended,158D0003
patch=1,EE,200B006C,extended,0C02C04C
patch=1,EE,200B0074,extended,832C0009
patch=1,EE,200B0078,extended,262FDA18
patch=1,EE,200B007C,extended,158D0003
patch=1,EE,200B0084,extended,0C02C041
patch=1,EE,200B008C,extended,832C0008
patch=1,EE,200B0090,extended,158D0003
patch=1,EE,200B0098,extended,0C02C04C
patch=1,EE,200B00A0,extended,832C000C
patch=1,EE,200B00A4,extended,262FDA24
patch=1,EE,200B00A8,extended,158D0003
patch=1,EE,200B00B0,extended,0C02C041
patch=1,EE,200B00B8,extended,832C000E
patch=1,EE,200B00BC,extended,158D0003
patch=1,EE,200B00C4,extended,0C02C04C
patch=1,EE,200B00CC,extended,832C000D
patch=1,EE,200B00D0,extended,262FDA28
patch=1,EE,200B00D4,extended,158D0003
patch=1,EE,200B00DC,extended,0C02C041
patch=1,EE,200B00E4,extended,832C000F
patch=1,EE,200B00E8,extended,158D0003
patch=1,EE,200B00F0,extended,0C02C04C
patch=1,EE,200B00F8,extended,25DF0000
patch=1,EE,200B00FC,extended,0802c058
patch=1,EE,200B0104,extended,C5FE0000
patch=1,EE,200B0108,extended,832C0010
patch=1,EE,200B010C,extended,518D0004
patch=1,EE,200B0110,extended,C71DFFF8
patch=1,EE,200B0114,extended,832C0011
patch=1,EE,200B0118,extended,518D0001
patch=1,EE,200B011C,extended,C71DFFFC
patch=1,EE,200B0120,extended,461DF7C0
patch=1,EE,200B0124,extended,E5FF0000
patch=1,EE,200B0128,extended,0802c058
patch=1,EE,200B0130,extended,C5FE0000
patch=1,EE,200B0134,extended,832C0010
patch=1,EE,200B0138,extended,518D0004
patch=1,EE,200B013C,extended,C71DFFF8
patch=1,EE,200B0140,extended,832C0011
patch=1,EE,200B0144,extended,518D0001
patch=1,EE,200B0148,extended,C71DFFFC
patch=1,EE,200B014C,extended,461DF7C1
patch=1,EE,200B0150,extended,E5FF0000
patch=1,EE,200B0154,extended,0802c058

※下記UI消すコードと併用必須

//2PコンL1でUI消す
patch=1,EE,200B0160,extended,3C160048
patch=1,EE,200B0164,extended,26D6035C
patch=1,EE,200B0168,extended,832C0010
patch=1,EE,200B016C,extended,518D0004
patch=1,EE,200B0174,extended,3C1743E0
patch=1,EE,200B0178,extended,AED70000
patch=1,EE,200B017C,extended,03E00008
patch=1,EE,200B0184,extended,AECD0000
patch=1,EE,200B0188,extended,03E00008

※上記フリーカメラコードと併用必須
 UI消したままレース画面を終えると真っ暗になってしまう為注意

//ポーズ中に煙とアフターファイア消えないbyうどん氏
patch=1,EE,20259BA0,extended,0802C080
patch=1,EE,200B0200,extended,14620005
patch=1,EE,200B0208,extended,8F9987F8
patch=1,EE,200B020C,extended,8F3801B0
patch=1,EE,200B0210,extended,13000003
patch=1,EE,200B0218,extended,080966F4
patch=1,EE,200B0220,extended,080966EA