top / 1 / 2 / 3 / 4 / ex1 / 5 / 6 / ex2 / 7 / 8 / 9 / 10 / 11 / ex3 / 12 / 13 / 14 /..../ 関数 / 覚え書き / 倉庫
第4回 【 超人化MODを作る 】

さて、ここまで最も基本的なMODの構造と作り方について説明したので、次は応用編と行きましょう。
既にwikiを見て色々と弄ってみた人もいるかも知れませんが、おさらいと言う事で。
ここではしばしば話題になる「超人化」について説明します。
ダッシュ速度、ジャンプ力、耐久力などを弄る事により、反則級の主人公を作ってしまおうと言うものです。
そんなヌルゲー化には興味無いと言う人も、そんなの簡単すぎると言う人も、まあ聞いてください。
人にもよりますが、超人化は実はMODを作る上では非常に役に立つMODなのです。

それは何故かと言いますと、この先、MODを他人に公開するようなことがある場合、そのMODを導入した状態で通常にプレイできることを確認しなければならないからです。
自分の作ったMODが、思いもよらぬ原因でバグを引き起こす事は多々あります。
物凄く単純なMODで「絶対に大丈夫」と思うようなMODでも、本当に、本当に予期せぬ挙動を引き起こす可能性があるのです。
だから他人に公開する場合には、最低でも一回は最後までプレイできる事を自分の手で確認する事が望まれます。
しかし、通常のゲームバランスで最後までプレイすると、結構時間がかかってしまいますよね。

そこで超人化MODの出番です。
俺TUEEEEEEと言う楽しみもあるかも知れませんが、とにかくゲームを進めることが可能であるのかどうか、それを確認するのにこれほど有効な手はありません。
超人化すれば、慣れれば30分ほどでTure Endingまで辿り着けるようになります。
ゲームを簡単にしてしまう「ゆとりMOD」としてではなく、自作MODの動作確認を行うためのツールとして、超人化MODを一つ作っておく事をお勧めするのです。


そんなわけで、超人化MODの作り方です。
まず、何をどう変更するかを決めます。とりあえず、書き出しましょうか。

・ジャンプ力を更にUP
・歩行速度、走行速度をUP
・耐久力を大幅にUP
・持ち運べる重量も大幅にUP

こんなところでしょうか。
この辺を押さえればアミバ様の気分になれます。

amiba01

失敗した時にも、笑いながら「ん〜?間違えたかな〜?」と言う位の余裕が欲しいものです。死ぬのは自分ですが。
とりあえず前回までに作ったハイジャンプのMODと被る部分が多いので、あれを更に改造する形で進めていきましょう。
ハイジャンプMODをコピーして、名前を変えます。
□immortal_hero ┣□gamedata ┃┗□config ┃ ┗□creatures ┃  ┗■actor.ltx ┗■readme.txt
次に、ここまでに扱ったファイルとは別に改造するファイルを追加しましょう。
先ほど列挙した改造点は、この環境ではファイルが一つ足りないのです。
それは、フォルダ「unpack_v10005_絶対変更禁止!/gamedata/config」の中にあるファイル「system.ltx」です。
それを環境が一致するように上記構成に追加します。
□immortal_hero ┣□gamedata ┃┗□config ┃ ┣□creatures ┃ ┃┗■actor.ltx ┃ ┗■system.ltx ┗■readme.txt
・・・こうなりましたね?

これで環境の準備は出来ました。どんどん変えて行きましょう。
まず、ジャンプ力。
既に何度も登場したアレです。

jump_speed = 8

これを・・・そうですね、「20〜25」くらいにするのが良いでしょうか。
30以上にすると、落ちてくるまでに時間がかかりすぎて、かえって扱いにくくなってしまう面があるからです。
自作MOD動作確認ツールとしての使いやすさで考えると20くらいが良いかと思います。
さて、これはこのままではいけませんね。
何故ならば・・・。

ss02

そう、死ねるからです。
落下の衝突ダメージを何とか解決しないと、ジャンプできても着地は出来ないスペランカー状態になってしまいます。
衝突ダメージが発生するかどうかの判定は、以下の項目で決まります。
行で言うと、48行目らへんにある筈です。

ph_crash_speed_min = 14

「ダメージを受ける最低速度」と言ったところでしょうか?
これをとりあえず10倍、「140」くらいにすれば、相当な速度で衝突してもダメージを受けなくなります。
ちなみに、このすぐ下の行に ph_crash_speed_max と言う項目がありますが、これの意味がオイラには理解できていません。
名前を見る限り「ダメージを受ける最高速度」って感じで、 filefrontのフォーラム でも曖昧な事しか書いてないのですが、この数値を弄る事により何が変化しているのか判らないので、とりあえず放置してます。

もう一つ、空中における操作性も改善しておきましょう。
デフォルトのままではジャンプした瞬間の慣性に引っ張られて、投げたボールのように一直線にしか飛ぶ事ができないのです。
この操作性を決定しているのは、28行目。

air_control_param = 0.1

この数値です。
これを大きくすれば、滞空中に行った移動操作が反映されやすくなります。
しかし大きくし過ぎると、今度は行き過ぎたりしまくって操作性もへったくれもなくなるので、この数値は「5〜10」程度の範囲に収めたほうが良いでしょう。精密操作に自信がある方は大きい数値にすると良いと思います。

落下による衝突ダメージを解決、空中における移動補正も出来たので、次は移動速度の改造をします。
移動速度は以下の複数の項目によって決定されます。
22〜27行目です。
crouch_coef = 0.45 :run_coefを基準としたしゃがみ移動速度倍率 climb_coef = 0.7 :run_coefを基準とした梯子の上り下りの速度倍率 run_coef = 2.1 :通常の移動速度 sprint_koef = 2.6 :run_coefを基準としたダッシュ速度倍率 run_back_coef = 1.8 :通常の後退速度 walk_back_coef = 0.8 :「歩く(深くしゃがむ)」キー押下時の後退速度
ちょっとややこしいです。
基本はrun_coefで、単位は恐らく「マイル/h」だと思います。(目安程度)
「run_coefを基準とした〜〜倍率」と書いてあるものは、希望の数値を直接指定するのではなく、「run_coefの数値に乗算した結果が希望の数値になるように」指定します。
つまり、run_coefを「3」と指定して、sprint_koefを「2」と指定すると、実際にダッシュした時の速度は「3x2=6」になるわけです。
crouch_coef、climb_coefも同じです。
crouch_coefを「2.6」にするとダッシュと同じ速度でしゃがみ移動する事になりますが、この時も音が出ません。スゲー速度でシャカシャカやってるのに全く無音なので結構笑えます。歩行音や小さな草の音は物理エンジンで計算してるわけではなく、単にしゃがみ移動時には音が出ないようになっている模様。
climb_coefは上り下り共通。下りは「後退」として扱われているわけではないようです。

run_back_coefはここまでの移動速度とは違い、倍率ではありません。
希望の速度を直接指定してください。通常移動速度と同じ速度で後退したいのであれば、単純に同じ数字を設定すれば良いです。
walk_back_coefも何故か倍率ではなく直接指定になってます。ともかく、これも希望の数値を直接設定してください。

ちなみに移動速度を設定するときには、最大でも乗算の結果が「10」程度に収まるように設定した方が良いと思います。
それ以上に早くすると地面の微細な凹凸に衝突するらしく、移動がカックンカックンして非常に不快に感じると思います。
オイラはこんな感じにしました。
crouch_coef = 1 climb_coef = 1 run_coef = 3 sprint_koef = 3 run_back_coef = 3 walk_back_coef = 3
謎なのですが、どう言うわけか「深くしゃがんだ際の移動速度」と「歩く速度」の設定項目がありません。
何をどう弄っても、この二つの移動速度は遅いままです。何でこんなに空気読まない設定になっているのか、全くもって理解できません。

さて、移動速度が設定できたら、次は耐久力です。
銃弾100発食らっても平然としていて、アノマリーの中を鼻歌混じりに歩き回れる最強戦士にします。
テキストエディタの設定によって自動改行が入るので、行数は人によって前後すると思いますが、115〜120行目らへんを見るとこんなのがあると思います。
[actor_immunities_gd_novice] burn_immunity = 0.5 :炎に対する抵抗力 strike_immunity = 0.5 :衝撃に対する抵抗力 shock_immunity = 0.5 :電撃に対する耐久力 wound_immunity = 0.5 :爪や牙に対する抵抗力 radiation_immunity = 0.5 :放射線に対する耐久力 telepatic_immunity = 0.5 :精神放射に対する射耐久力 chemical_burn_immunity = 0.5 :薬物に対する耐久力 explosion_immunity = 0.1 :爆発に対する耐久力 fire_wound_immunity = 0.5 :弾丸に対する耐久力
見ての通りですが、これは数字と効果は反比例しており、小さくするほど抵抗力は強くなります。
「0」にすると、その属性からはダメージを受けなくなります。
とりあえず軒並み「0」か「0.01」とかにするのが良いのではないでしょうか。
ちなみにこのすぐ下を見ると、こんなカテゴリーがあり、同じ内容が書いてあります。
[actor_immunities_gd_stalker] [actor_immunities_gd_veteran] [actor_immunities_gd_master]
このカテゴリータイトルを見れば察しが付くとは思いますが、これがそれぞれの難易度に対応しているわけです。
これを上手く利用すれば、体力回復関係のMOD確認用と兼用する事ができます。
どう言うことかと言うと、アイテムにせよ何にせよ体力回復関係のMODを作った場合、ダメージを受けないと確認のしようが無いからです。
なので、[actor_immunities_gd_novice]を無敵にして、[actor_immunities_gd_stalker]をダメージをある程度受けるように設定するなど、上手く調節してゲーム内のオプションで切り替えることで、「無敵モードON/OFF」のように使い分ける事が出来るわけです。


それでは最後に、持ち運べる重量の上限を改造しましょう。
弄るのは20行目と173行目らへん。
例によって自動改行によって行数は異なると思うので、検索した方が速いかもですね。
max_item_mass = 50.0 :ペナルティを受け始める重量 max_walk_weight = 60 :歩けなくなる重量
重量を弄る際にはもう一箇所修正する必要があります。
それは、もうお忘れかもしれませんが、最初に追加したファイル「system.ltx」です。
これまた自動改行(ryですが、103行目らへんに見つかると思います。

max_weight = 50 :イベントリに表示される最大重量

この3箇所を修正すれば、重量に関する改造は終了です。
max_item_massとmax_weightは同じ数値に設定しましょう。
まあ重量軽減MODなどで定番なのは、「150/200」と言ったところですが、そこら辺は好みで。
「900/1000」とかにするのもストレスが無くて良いかも知れませんね。
公式パッチのバージョンによって動作したりしなかったりでしばしば話題に上る「重量軽減MOD」ですが、実はあのMODはこの部分だけを弄ってMOD化したものと言う訳ですね。


最後に、自作MOD動作確認ツールとしての趣旨からは外れますが、面白い項目があるので参考までに書いときます。
ファイル「actor.ltx」の193行目らへんにこんな項目があります。

;health_restore_v = 0.0001

これは時間と共に回復していく体力を示しています。
先頭にセミコロンが付いているのは、これはコメントアウト、つまりこの設定を無効化する意味です。
プログラム的にこの行を無視し、体力の自動回復を行わないようにしてあるのです。
実際のゲーム内ではこの設定とは別に体力回復の設定があるらしく、ジワジワと回復しているので、これが体力自動回復における設定の全てと言うわけでは無いようですね。
ともかく、このコメントアウトを解除して、こんな数字を入れてみます。

health_restore_v = 0.002

これで実行してみると判りますが、体力がゆっくりとですが目に見える速度で回復して行きます。数字を大きくすると回復速度が上がります。
この辺りを改造すると共に回復アイテムを無くすか弱体化することで、まるっきり別のゲームになって面白いです。
CRYSISと言う最近出たFPSがこんな感じのシステム(回復アイテムなし、体力は時間と共にゆっくり回復)でしたが、あんな雰囲気を出したいのであれば、この辺りを弄るのも面白いと思います。

長くなったのでまとめます。カッコ内は行数の目安ね。

構成:
□immortal_hero ┣□gamedata ┃┗□config ┃ ┣□creatures ┃ ┃┗■actor.ltx ┃ ┗■system.ltx ┗■readme.txt
ジャンプ関係:
ファイル:actor.ltx (21) jump_speed = 20 :ジャンプする勢い (28) air_control_param = 10 :空中での移動補正 (48) ph_crash_speed_min = 140 :衝突ダメージを受ける最低速度
移動関係:
ファイル:actor.ltx (22) crouch_coef = 1 :run_coefを基準としたしゃがみ移動速度倍率 (23) climb_coef = 1 :run_coefを基準とした梯子の上り下りの速度倍率 (24) run_coef = 3 :通常の移動速度 (25) sprint_koef = 3 :run_coefを基準とした走行速度倍率 (26) run_back_coef = 3 :通常の後退速度 (27) walk_back_coef = 3 :「歩く(深くしゃがむ)」キー押下時の後退速度
耐久力関係:
ファイル:actor.ltx [actor_immunities_gd_novice] (116) burn_immunity = 0.01 :炎に対する抵抗力 (117) strike_immunity = 0.01 :衝撃に対する抵抗力 (118) shock_immunity = 0.01 :電撃に対する耐久力 (119) wound_immunity = 0.01 :爪や牙に対する抵抗力 (120) radiation_immunity = 0.01 :放射線に対する耐久力 (121) telepatic_immunity = 0.01 :精神放射に対する射耐久力 (122) chemical_burn_immunity = 0.01 :薬物に対する耐久力 (123) explosion_immunity = 0.01 :爆発に対する耐久力 (124) fire_wound_immunity = 0.01 :弾丸に対する耐久力
重量関係:
ファイル:actor.ltx (20) max_item_mass = 150 :ペナルティを受け始める重量 (173) max_walk_weight = 200 :歩けなくなる重量 ファイル:system.ltx (103) max_weight = 150 :イベントリに表示される最大重量
オマケ:
ファイル:actor.ltx (193) health_restore_v = 0.002 :体力自動回復

最後に前と同じ要領でreadme.txtを書いて完成ですね。
あとは好きなように数値を弄って自分好みの超人を作ると良いでしょう。
でもやりすぎるとゾーンの裏側に落っこちて詰みます。

amiba02

気をつけましょう。


今回作ったもの:immortal_hero.zip


top / 1 / 2 / 3 / 4 / ex1 / 5 / 6 / ex2 / 7 / 8 / 9 / 10 / 11 / ex3 / 12 / 13 / 14 /..../ 関数 / 覚え書き / 倉庫
ニャギ茶★SPOT --工作部屋--