流れる時の中で

主にmugenの凶悪キャラを制作しております

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

リダイレクト偽装 

2015/01/23
Fri. 08:49

IRCログ倉庫を漁っていたら何となく目に留まったので久々に製作者向けというか, 知ってると動画なども楽しめるかもしれないネタ。

リダイレクト偽装とはどういったものなのかを解説して行きたいと思います。

この技術に関してまず述べるとしたら, 不遇, というかそういったイメージが個人的には強いです。
その理由として第1に, 親変更によってその優位性が薄れた部分が大きいでしょうか。

詳しい解説は後ほどしていきますが, このリダイレクト偽装によって可能な事の一部が親変更によって可能になりました。
加えて導入が結構面倒であり, 意外と上位陣でも汎用で搭載しているキャラは結構絞られたりします・・・。
(かくいう私も公開したキャラに汎用で搭載した経験がないです)

が, この技術からの派生であるアーマーキラーは汎用性もそれなりにあるのでどちらかというと, こちら目的で導入されることが多いと思います。
ただ, その優先度が低くなり後回しにされることが多いかもしれません。
しかしながら, 汎用殺傷力を高める上では決して欠かすことのできない技術であることも確かだと思います。




というわで, 実際に解説に移って行きましょう。

まず初めに, 「リダイレクト」という言葉の意味から見ていきましょう。

1.リダイレクトとは
みなさんご存じ, Mirror Cube SquareことMCSは, ヘルパーアーマーという構造を持ちます。
どういったものかというと, 本体の代わりにヘルパーが本体の「被弾」の部分を受け持つ構造の事を指します。
もう少し詳しく言うと, ヘルパーが「被弾」した際に, 本体のライフ用の変数を変動(MCSの場合は回復)させます。
後は本体のライフを常時このヘルパーの管理しているライフ用変数を参照してそれに合わせます。

では, 本体がヘルパーの変数を参照するにはどうしたら良いのでしょうか?

・・・・・・そこで登場するのが, リダイレクト(キーワード)と呼ばれるものです。
例えば, ヘルパーアーマーの役割をしているヘルパーを仮にIsHelper(150)とし, このヘルパーのsysvar(0)に本体のライフ管理の役割を持たせているとします。

この場合, 本体のライフをIsHelper(150)のsysvar(0)という変数に合わせる時のLifeSetステートコントローラーは以下のようになります。

[State ,ライフ管理]
type=LifeSet
trigger1=!IsHelper
trigger1=NumHelper(150)=1
value=Helper(150),sysvar(0)
ignorehitpause=1


Helper(150),sysvar(0)
つまり, ヘルパーID150というヘルパーのsysvar(0)の値を返す。
この, Helper(XXX),YYYという参照の仕方が所謂リダイレクトと呼ばれるものの正体です。

同じような形式で,
Root,YYY / Parent,YYY / Enemy,YYY / EnemyNear,YYY / Partner,YYY / PlayerID(XXX),YYY / Target,YYY
というものがありますが, こちらも同じくリダイレクト(キーワード)になります。
(但し, 今回のリダイレクト偽装ではこちらの形式は出てこないのでそーなのかーくらいの意味で知っておいてください)

このリダイレクトで参照できるパラメーターは多岐に渡り,
sysvar(X),sysfvar(X),var(X),fvar(X)などの変数
Vel X,Vel Y,Pos X,Pos Yなどの速度, 位置
LifeMax,Life,PowerMax,Powerなどのライフ, パワー
HitPauseTime,Timeなどのヒットポーズタイム, タイム
などなど上げてもきりがないほど。
というよりも, 自分自身で参照できるものは殆どこのリダイレクトによっても参照することができます。



2.リダイレクト偽装とは
以上の事を踏まえて, 実際にリダイレクト偽装についてみていきましょう。

先ほども例に出しましたこちらのステートコントローラー
[State ,ライフ管理]
type=LifeSet
trigger1=!IsHelper
trigger1=NumHelper(150)=1
value=Helper(150),sysvar(0)
ignorehitpause=1


もしも仮に, Helper(150),sysvar(0)=0
つまりヘルパーID150のヘルパーのsysvar(0)を0にできた場合どうなるでしょうか?

答えはライフが0になる, ですね。
この, Helper(150),sysvar(0)をこちらの任意値にするのが今回のリダイレクト偽装の大本になります。



3.リダイレクト偽装の解説
では, 実際にどのように値を偽装するのかを見ていきましょう。

まず大前提として, 相手のヘルパーが奪えることが必須条件になります。
技術的には混線と親変更の間位に位置する技術かもしれません。

さて, 散々リダイレクトの利便性を説明してきましたがここでとある疑問が出てきます。

もしもヘルパーID150というヘルパーが複数存在した場合, 一体どのヘルパーが参照されるのか。
つまり
sysvar(0)=0のIsHelper(150)と
sysvar(0)=10のIsHelper(150)とが存在した時, Helper(150),sysvar(0)のリダイレクトによって返ってくる値は一体どうなるのか?ということです。


答えは, ヘルパー領域の小さい方のヘルパーが優先される, です。
ヘルパー領域という言葉だとわかりずらいかもしれませんが, ヘルパーには予め最大で56個の席が用意されています。
この席に, 仮に1番から56番までの番号を振ります。
1
2
3
4
(中略)
55
56
といった具合に。


そこに, 今回のように2つの同じヘルパーIDを持つヘルパーが入ったとします。
1 Helper(150)
2 Helper(150)
3
4
(中略)
55
56
(ヘルパーは基本的に出された順番に, 空いている小さい番号席から配置されます。)

この状態でHelper(150),YYYというリダイレクトを実行した場合, 参照されるHelper(150)というのは
番号の小さい方, つまり1番の席に入っているHelper(150)になります。

ここで話は戻りまして。
リダイレクト偽装という技術がヘルパーが奪えること前提という話は解説の最初で説明したと思います。
例えば, Helper(999)というヘルパーが奪えたとします。
このとき, Helper(999)というヘルパーにHelper(150)というヘルパーを生成させたとします。
結果, 相手はHelper(150)というヘルパーを2つ保持していることになります。

つまりどういう事かというと, このHelper(999)というヘルパーに生成させたHelper(150)というヘルパーの席を
相手が元々出していたHelper(150)というヘルパーの席よりも小さい番号の席に出すことができれば,
仮に(元々出ていた)Helper(150)というヘルパーが奪えなくても値を偽装することができるのです。

これが, リダイレクト偽装の内容になります。


リダイレクト偽装を文章で説明すると,

リダイレクト参照時, ステート奪取不可能な(システム系)ヘルパーの代わりに, 別のステート奪取可能なヘルパー(ないし本体)から同一IDヘルパーを生成させ参照させる技術, といった所でしょうか。(意味がよくわからない・・・・orz



4.リダイレクト偽装実装までに
さて, これでリダイレクト偽装がどういった技術かが(何となく)分かったと思います。

でわ, 実際にどうやって敵のヘルパーよりも小さい番号の領域(席)にヘルパーを出していくのでしょうか?
これが, リダイレクト偽装の1つの山場でもあり, 製作者の見せどころではないでしょうか。
今回はあくまでリダイレクト偽装の解説であり, テンプレート的なものでは無いためこの辺は割愛します。

というのも, ここを細かく説明していっても製作者以外にはまずついていけない内容になる(一応製作者だけでなく視聴者向けの解説記事のつもりな)ので・・・。後, かなり長くなりすぎますorz

それから, 2つ目の山場(見せ場)としてヘルパーIDの取得というものがあります。
今回はヘルパーID150というヘルパーと限定して説明してきましたが, 仮に汎用でリダイレクト偽装を行おうと思ったとき, このヘルパーIDは参照することができません。

その為, まず第1として相手が生成しているヘルパーのヘルパーIDを取得することが必要になります。


また最初の方でちょこっと出しましたが, リダイレクト偽装からの派生でアーマーキラーという技術があります。
親変更のある今, リダイレクト偽装=アーマーキラーという意味合いが強くなっている気がします。
このアーマーキラーに関しましては, また後日間違われやすいアーマー拉致と一緒に解説して行きたいと思います。


長くなりましたが, 久々に神ランクで使用されている技術の解説をしてみました。
かなり読みづらかったり, 分かりづらい部分が多いかと思います・・・・。これは正直私の文才能力の低さが原因ですorz

もしも疑問や間違っている部分がありましたらコメント頂けると幸いです。

これで少しでもこの手の技術に興味を持ってくれる方が増えると光栄です!!


スポンサーサイト

[edit]

CM: 0
TB: 0

page top

コメント

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://awmm.blog3.fc2.com/tb.php/665-5e448161
この記事にトラックバックする(FC2ブログユーザー)

page top

2017-07

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。