140 likes | 252 Views
M.U.G.E.N によるゲームシステムの再現と考察. 1305153 友松 敬直. M.U.G.E.N とは?. Elecbyte (エレクバイト)によって開発された フリーのPC用2D格闘ゲームエンジンである。. 北斗の拳 審判の双蒼星 拳豪列伝. アークシステムワークスによって制作され、 2005年冬に稼動した2D格闘ゲームである。. M.U.G.E.N でのスクリプト記述. ステート :状態定義 : S ・ C ・ A ・ L / I ・ A ・ H / S ・ C ・ A ・ N ステートコントローラー :状態設定 : HitDef
E N D
M.U.G.E.Nによるゲームシステムの再現と考察 1305153 友松 敬直
M.U.G.E.N とは? • Elecbyte(エレクバイト)によって開発された フリーのPC用2D格闘ゲームエンジンである。
北斗の拳 審判の双蒼星 拳豪列伝 • アークシステムワークスによって制作され、 2005年冬に稼動した2D格闘ゲームである。
M.U.G.E.Nでのスクリプト記述 • ステート :状態定義 :S・C・A・L/I・A・H/S・C・A・N • ステートコントローラー :状態設定 :HitDef • トリガー :条件文 :MoveHit • Var:整数の変数 • FVar:小数点の〃
プログラムの特徴① • -1ステート:コマンド定義 [Command] name = "x" command = x time = 1 [State -1] type = ChangeState value = 200 triggerall = command = "x" triggerall = command != "holddown" triggerall = statetype != A trigger1 = ctrl trigger2 = stateno = 200 && movecontact
プログラムの特徴② • -2ステート :常時監視 条件文に従い 毎フレーム実行する。 • -3ステート :準常時監視 ステート管理中に限り 条件文に従い 毎フレーム実行する。 [State -2] type = VarSet trigger1 = 1 var(8) = 300 [State -3] type = PlaySnd trigger1 = stateno = 52 trigger1 = Time = 1 value = 52, 0
死兆星/ブースト システム • それぞれに変数を用いて再現。 • 変数の中身を条件文に画像の表示/非表示を切り替えて外観と内部数値をリンクさせた。 • ブーストゲージでは 画像サイズに変数を 用いて表示している。
バニシングストライク • 攻撃がヒットした瞬間に相手ステートを奪い壁に激突するまで無重力状態で移動させる。
アジリティーディフェンス • -2ステートと変数を使って後ろ入力をしている間は毎フレーム数値を加算し続ける。 • 数値が一定値以下で あることを条件文とし て処理を変化させた。
ベクトル反転バグ • バグにより相手に加わる力の方向が反転し地面に激突した後、高く跳ね上がる現象。 • バグの発生要因は ヒット数やコンボ時間 等の理由が挙げられ ているが、どれも確証 には至っていない。
フレーム数の計算 • 運動方程式の応用で • H = 0.5*A*F*(F+1)+V*F という式が成り立つ。 • これを二次方程式に置き換えると • F = -(2*V+1)±√(2*V+1)^2+8*A*H/ 2*A となり、フレーム数を求めることが可能となる。 H = 0.5*A*F*(F+1)+V*F F = -(2*V+1)±√(2*V+1)^2+8*A*H/2*A
ステートの流れ • 攻撃がヒットする前に「フレーム数」を計算し、「フレーム数」を元に「速度」を計算する。 • 激突する瞬間の速度 が一定以上であれば ステートを奪いバグ 発生状態に移行する。
まとめ • 本来のゲームシステムである4つに関しては仕様が明確な為ほぼ再現することが出来た。 • ベクトル反転バグは発生要因が明確ではないものの、考察によって定めた発生要因に従ったスクリプトを構築する事が出来た。 • 本研究で再現出来たゲームシステムはほんの一部分に過ぎない為、残りのシステム及びバグの再現を進めて、M.U.G.E.Nの可能性を拡げていきたいと思います。