I.K.E.M.E.N

「I.K.E.M.E.N」の編集履歴(バックアップ)一覧に戻る

I.K.E.M.E.N - (2023/12/03 (日) 09:06:10) のソース

#image(ikemen.png,title=起動ファイルのアイコン。何と書かれているんだ…)

**概要
I.K.E.M.E.Nとは、SUEHIRO氏が制作したネット対戦をする事ができるMUGENと互換性を持つ格闘ゲームエンジンである。
所謂ハック版などではなく製作者が一から作成したオープンソースのフリーソフト。決して&b(){[[男前>七枷社]]}の方ではない。
I.K.E.M.E.Nの名前の由来は&b(){「I(いつまでも)K(完成しない)E(永遠に)M(未完成)EN(エンジン)」}である(ネタではなく本当にこの略称)。
//未完成のまま放置される(所謂「エタる」)のとは意味合いが違うかと

まだまだ開発中であるためMUGENとは異なる点が多く、MUGENとは別の物と考えてもいいと思われる。
本体機能としてはWinMUGENをベースに新MUGENの機能をいくつか取り入れた感じ。
ズームが搭載されていたり、新MUGEN専用キャラクターをある程度使用する事も可能。
特筆すべき点として&b(){リプレイ機能}が搭載されており、ネット対戦をもう一度見返す事ができるという要素も。

ただし、前述の通りMUGENとは異なる点が多いので、MUGENでは正常に動作するキャラクターがI.K.E.M.E.Nでは正常に動作しないという事も多々ある。
代表的な例として、
-&b(){「コンボ火力・超必殺技の演出に差異がある」}
-&b(){「チーム戦でゲージを持ち越さない」}
などが挙げられる。
中には必殺技を出す事ができないという例もあるので、使いたいキャラがいる場合I.K.E.M.E.Nで操作して確認した方がいいと思われる。
これら以外にも異なる点は多数あり、確認されているものは&b(){[[「I.K.E.M.E.N非公式wiki」>>https://w.atwiki.jp/ikemen_wiki/pages/1.html]]}に記載されているので一度目を通すといいだろう。
//不具合のいくつかは2017年版で修正済みのため記事も修正。

もう一つの根本的な違いとして、IKEMENにはMITライセンスが使われているというのがある。&link_anchor(*1){*1}
様々な有料ゲームが存在する2D格闘ツクールなど他のゲームエンジンと違い、MUGEN本体に適用されているライセンスは非営利目的の利用は自由だが、
営利目的の利用はelecbyteの許可なしには不可能と明確に定められている。
そのため、(他にも理由はあるだろうが)MUGENが有料ゲームのゲームエンジンとしてまともに採用された事例は皆無であり、それは許されていなかった。
しかし、MITライセンスは著作権表示さえ気を付ければ自由に&b(){商用利用も可能}という点でMUGENとは大きく異なる。

おかげで2021年には[[noroko]]や[[peketo]]で有名なコンプゲー『The Black Heart』が、
本体にIKEMEN GOを使用して様々な改良を加えた上でSteamにリリースするという快挙を成し遂げている。&link_anchor(*2){*2}
単なるMUGENクローンに留まらないIKEMENの底力が窺い知れる事例である。

**本体
MUGEN本体にいくつか種類があるように、IKEMENにもいくつかバリエーションが存在する。

-&b(){IKEMEN}
一番最初に公開されたIKEMEN。
2008年8月12日にリリースされ、現在は2017年5月版が最新となっている。
かつてはIKEMENといえばまずこれであり、各種サイトなどの解説もこの本体についてのものが多い。
下記の派生版の登場後間もなく更新が止まってしまったものの、
長らくネット対戦などで使われてきたため、現在でもこちらを愛用する人もいる。

「リプレイ個別化&ダウン時間固定化統合パッチ」という外部パッチが存在し、
パッチを当てるとリプレイの試合毎個別保存&再生、レバガチャによるダウン時間減少を無効化、
2P側の動きを記録&再生するダミーレコード機能追加、その他IKEMENの不具合修正などができる。
プレイヤー2人で協力してAIと対戦する「VSAI」というパッチも存在する。

残念ながら現在は配布元のサーバーが不安定のため、正規入手不可能になってしまっている。

-&b(){IKEMEN Plus}
K4thos氏が中心となって製作していたIKEMENの拡張版。
MUGEN用のアドオンが使えるようになり、アーケードやサバイバル、トレーニングといったIKEMENには無かったモードが追加されている他、
対CPUモード、100人組み手、CPU専用キャラ、ボスラッシュ、[[4人制タッグ>4人制タッグ]]といったMUGENでも正式対応していない機能が実装されている。
特に4人制タッグは別々の人数で行える他、設定をいじる事で&b(){10人制タッグ}まで拡張する事ができる。当然キャラによっては常時処理落ちするので注意。
製作者が下記のIKEMEN GOの開発参加に移行したため、このIKEMEN Plusは開発終了。
これらの機能はIKEMEN GOへ統合される事になった。

-&b(){IKEMEN GO}
Go言語で作り直されたIKEMEN。製作者はIKEMENと同じSUEHIRO氏だが、その他複数の製作者も開発に参加している。
現在はIKEMEN Plusから引き継ぐ形でK4thos氏が中心となり、GitHub上でビルド済みのファイルが公開中。
こちらにも「ダウン時間固定化パッチ」が存在し、42氏が公開している。

MUGENとの互換性はさらに向上しており、MUGEN1.1の機能が一通り搭載されたのでWinから1.1のキャラまでちゃんと扱えるようになった。
IKEMENで確認されたバグの多くが修正されており、動作も少し軽くなっている。
さらに上記のIKEMEN Plusと統合された事で様々なモードが楽しめるようになった他、
MUGENのアドオン、ライフバー、ストーリーボードの導入も可能に。もちろんネット対戦も可能。
様々な新機能や新ステコンが追加されるなど開発が進んでおり、機能的には既にMUGEN以上と言えるかもしれないエンジンになっている。
更にこの本体でしか動作しない&b(){GO専用}のキャラやステージがまだ数は少ないものの存在する。将来が楽しみなIKEMENである。

#region(close,主な新機能)
あまりに多すぎて全ては書ききれないため、ここでは一部をピックアップして紹介。
-主な新ステートコントローラ
--AssertInput:指定したボタンの入力を実行させる。
--Dialogue:戦闘前もしくは戦闘後限定で会話する場面を作成できる。
--SaveFile/LoadFile:変数をまとめて一つのファイルに保存/読み込みをする。
--MapSet/MapAdd:名前付き変数のMapを操作するステコン。名前は自由に設定でき、&bold(){数の上限はない}ためとても便利。
--MatchRestart:そのラウンドをリセットしてやり直す。つまりF4デバッグキーと同じ効果。リロードをオンにしてキャラやステージを変更した上で最初のラウンドからやり直すこともできる。
--ModifyStageVar/ModifyBGCtrl:ステージの設定数値及びBGCtrlをそれぞれ弄る。これとAttachedCharを組み合わせて色んなステージギミックが作れる。
--HitScaleSet:係数あるいは固定数値に基づいて計算しながら与えるダメージを変化させ、簡単なダメージ補正を作れる。
--PlayBgm:音楽を流す。mp3やoggに対応。
--RoundTimeAdd/RoundTimeSet:ラウンドの残り時間を操作する。
--Text:名前通りテキストを描画する。使用するフォントも指定可能。演出には勿論、デバッグにも便利。

-主な新パラメータ&br()既存のステコンにも多くの新しいパラメータが追加されている。
--ほぼ全てのステコン
---RedirectID:IDを指定してステコンを実行するキャラを指定できる。&br()例えばRedirectIDに敵のIDを入れてLifeAddを実行すると、自分ではなく敵のLifeが変化する。&br()いちいちターゲットを取らなくても対象に干渉できるため、かなり自由度が上がったと言える。&br()&s(){MUGENだと隔離技術級の処理がたった1行で実現}
--AssertSpecial
---AnimFreeze:実行中はAnimが停止
---AutoGuard:実行中はオートガード
---NoAirJump/NoBrake/NoCrouch/NoJump/NoStand:それぞれデフォルトで設定されている基本動作を実行しなくなる。
---NoHardcodedKeys:上記に加えて、歩きやガードも含めた基本動作を全部実行しないようになる。
---NoFallDefenceUp:特定ステートでのFallDefenceUpによる防御力上昇を無くす。
---NoHitDamage/NoGuardDamage:それぞれヒット時、ガード時のダメージを受けない。
---NoInput:実行中はボタン入力が無効。
---NoMakeDust:勝手に出る煙エフェクトを無効にする。
---PostRoundInput:戦闘終了後もボタン入力を受け付けるようになる。
---RoundNotSkip:実行中はボタン入力でラウンド前後の時間を飛ばせなくなる
--Explod
---AnimElem:表示するAnimの開始位置を指定できる。
---PalFx:PalFxで色を変えることができる。
---RemoveOnChangeState:ChangeStateが起きた時点でそのExplodを消滅させる。
--Helper
---Immortal:ヘルパーが不死身になる(大ダメージを受けてもKOされなくなる)
---InheritChannels:親と音声のチャンネルを共有するようになる。
---Preserve:ラウンド跨ぎでヘルパーが消滅せずそのまま維持される。
--SelfState
---ReadPlayerID:SelfStateはカスタムステートから本来の自分のステートに飛ぶステコンだが、これで指定したIDのキャラがいればそのキャラのカスタムステートに飛ぶ。
--ChangeAnim
---ReadPlayerID:これで指定したIDのキャラがいればそのキャラのAnimを代わりに表示する。
--DefenceMulSet
---MulType:DefenceMulSetの補正タイプを選択できる。0だとMUGENと同じく他の補正を上書きするヘンテコ仕様。1だと他の補正と共存できるまともな仕様になる。
---OnHit:DefenceMulSetの適応条件を選択できる。0だと1ヒット目から適応されるまともな仕様。1だとMUGENと同じく1ヒット目には補正がかからない謎の仕様になる。

-主な新トリガー
--ComboCount:Hitcountと異なり、画面上のHit数カウンターと一致する数を返す。
--EnvShakeVar():画面揺れが発生してる場合にそのパラメータを返す。
--FirstAttack:そのラウンドのファーストアタックに成功したら1を返す。
--GameMode:現在のゲームモードを文字列で指定して合ってたら1を返す。
--HitOverridden:HitOverride中は1を返す。
--InCustomState:カスタムステート中は1を返す。
--InDialogue:Dialogueステコンで会話中は1を返す。
--IsAsserted():AssertSpecialで実行中の処理を()で指定したら1を返す。
--LocalScale:Localcoordによって変化した大きさの数値を返す。
--MajorVersion:キャラのmugenversionが1以上なら1を返す。
--Map():指定したMap変数を持っていたらその数値を返す。存在しないMapの場合は0を返す。
--Max(,):数値を2つ指定して、大きい方の数値を返す。
--Min(,):数値を2つ指定して、小さい方の数値を返す。
--MoveCountered:カウンターヒットに成功したらそこからのフレーム数を返す。
--PauseTime:Pauseで停止してる間に経過した時間を返す。
--Physics:現在のPhysicsを指定し、合ってたら1を返す。
--PrevAnim/PrevMoveType/PrevStateType:それぞれ一つ前のAnimやMoveType、StateTypeを指定し、合ってたら1を返す。
--ReversalDefAttr:指定したattrを発生させているReversalDefがあった場合1を返す。
--ReceivedDamage:コンボ中に受けたダメージの数値を返す。
--RoundType:最終ラウンド中は3(どちらが勝っても試合終了)、相手が勝って試合終了する場合は2、こちらが勝って試合が終了する場合は1を返し、それ以外の場合は0を返す。
--SelfStatenoExist:指定したステート番号の処理を元のキャラが持っていたら1を返す。
--SprPriority:現在のSprPriority数値を返す。
--StageBackEdgeDist/StageFrontEdgeDist:ステージ端までの距離を返す。
--Standby:タッグアウト中なら1を返す。
--TimeRemaining:残りのタイム数を返す。タイマー無限なら-1になる。
--WinSpecial/WinHyper:それぞれ必殺技、超必殺技で勝利したかを返す。
--GetHitVar():animtype、attr属性、プレイヤーID等が参照できるようになった。

-新リダイレクト&br()リダイレクトとはEnemyやTargetと同じように指定するキャラの参照先のこと。
--HelperIndex():()内の数字はプレイヤーが持つヘルパーの総数に応じて割り当てられる。つまり、通常のHelper()と違って重複することがないのが特徴。
--P2:P2StatenoなどのP2系トリガーに使われる処理をそのままリダイレクト化させたもの。生きている相手のみ参照する、PlayerタイプのHelperにも反応するなどの点がenemynearとは異なる。
--Player():数値で指定した特定のプレイヤーを参照する。P1側は1、3、5、7、P2側が2、4、6、8と内訳は固定されている。
--StateOwner:現在のステート処理の所有者を参照する。つまり投げ技などでカスタムステートにいる場合は、そのカスタムステートの持ち主を直接参照できる。

-CNSに代わるZSS
ZSSとはCNSの代わりに使うことができるスクリプト形式のこと。名前は「Z(暫定)S(ステート)S(スクリプト)」の略称。CNSと構造は似ているが文法が全く異なり、例えばcommonファイルのステート0はこういう書き方になる。

	[StateDef 0; type: S; physics: S; sprpriority: 0;]
	if cond(anim = 5, animTime = 0, anim != 0) {
		changeAnim{value: 0}
	}
	if time = 0 {
		velSet{y: 0}
	}
	if time = 4 || abs(vel x) < const(movement.stand.friction.threshold) {
		velSet{x: 0}
	}
	if !alive {
		changeState{value: 5050; ctrl: 0}
	}

見ての通りif文をはじめとした一般的なプログラミング言語やスクリプトに近い、よりシンプルな記述になっているため、人によってはCNSより馴染みやすいかもしれない。&br()他にはCNSでは使えない新機能として
・switch文
・for文
・while文
・ローカル変数
・関数
が使用可能になっており、より柔軟なコードを書くことができる。

-ステージ関連
--AttachedChar:ステージに付属する中立キャラ。その中身はいくつかの仕様を除き普通のキャラそのもの。これによって破壊可能オブジェクトやステージフェイタリティ等のステージ単体では実現できない機能をキャラの記述を利用して実装できる。
--3D背景:glTF形式の正真正銘の3Dモデルを使用したステージが作成可能。
--RoundXDef:ラウンドごとに読み込むステージを変更できる。これで同じステージのバージョン違いを設定するといい感じ。
--bgmusic:ラウンド毎に指定したり、残りライフの状況などから流すBGMを細かく変更できるようになった。いくつかの曲からランダムに流すことも可能(ただし何故かこれはselect.defに書く必要がある)
--ポートレート:SFFの9000,1番がポトレ用の番号になり、画像(240x100pxが基準サイズ)と以下のようなアニメ設定を登録するとポトレとして表示できる。
	[Begin Action 9000]
	9000,1,0,0,-1

-その他
--交代式タッグ戦:MVCなどでお馴染み、その場交代のタッグ戦を標準搭載。それに伴い、TagInとTagOutステコン、StandByトリガーが正式に実装。タッグ用にボタンが2つ増えた。
--スタンゲージ、ガードゲージ、ヴァイタルソースの標準実装:気絶とガードブレイクと自動回復ライフがデフォルトで使えるように。オプションでオフにもできる。これに関連したステコンとトリガーも大量に追加された。
---4ステート:-1、-2、-3に加えて更に追加された常時ステート。-2と同様にステートを奪われても動き、Pauseで停止されずHelperでも無条件に読み込むのが特徴。
--多重リダイレクト:新MUGENではcondトリガーを使ってリダイレクト中に更にリダイレクトを行う多重リダイレクトが可能だったが、IKEMENではcond無しでもそのまま多重リダイレクトができる。もちろんcondを使った多重リダイレクトもそのまま有効。
--スプライトの一律切り替え機能:要するにキャラの変身を簡単に実装できるようにするもの。RemapPresetで切り替えリストを作成しておき、RemapSpriteステコンで切り替えることができる。
--Helpermax限界突破:Helpermaxに上限が無いため、56を超えて好きな数値を設定できる。
--ポーズメニュー画面:いわゆる通常のポーズメニュー画面をボタン押しで呼び出せる。専用の形式のmovelistファイルを用意しておけば、この画面から技表も見れる。
--マルチキャラスロット:キャラセレ画面の単一のキャラスロットに、複数のキャラを無制限に登録可能。カーソルを合わせた表示キャラをボタン押しで切り替えていき選択する形になる。同じキャラのバージョン違いをまとめて登録したり、同じタイトルのキャラを一つのスロットに全部押し込むなんて使い方もできる。
--ポートレートの解像度変更:MUGENだとポートレートはwinの場合サイズ固定、新MUGENでもlocalcoordと同じサイズで固定だったが、GOではサイズを直接指定できる。
--Z軸:winmugenに存在したが1.0で廃止されたZ軸の機能が復活している。&s(){誰が使うんだよ。}

ちなみに、新MUGENではキャラのmugenversionによって使えるステコンやトリガーに制限があったが、IKEMENではその制限はない。
そのため、winmugenキャラにAIlevelトリガーを記述して気軽に即起動AIとプレイヤー操作を両立させるなんてことも可能になっている。
#endregion

なお、前述の4人制タッグについては、当初は8人まで組むことが可能だったが、最新版では初期設定の4人が上限。&link_anchor(*3){*3}
おそらく交代式タッグ戦やライフバーの都合上、4人を超える人数には対応しきれないためだと思われる。
ファイルを弄って5人以上にしてもエラーが出るので注意(チーム戦はオプションで上限を8人まで上げられる)。

また、これをベースにしたコンプゲーも製作されており、『[[Super Crazy Jam]]』『TMNT x Justice League Turbo』等がある。


なお、IKEMENはオープンソースで公開されており改変自由なため、ここに載っていない様々なバリエーションも存在する可能性がある。
例えばコンプゲーの本体にIKEMENが使われる場合、ソースコードの一部が改変されている場合があったりする。

----
**対戦環境について
対戦する場合は公式サーバーが設立されていないので、ポート開放やhamachiなどのネットワークソフトを使用して対戦する事になる。
直接接続となってしまうのでラグの発生はお互いの通信環境に大きく左右されてしまう。
ここで注意して頂きたいのが&b(){ラグを一方的に相手のせいにしない}という事。
一般的な商業ゲームでも言える事だが、ラグというものはオンラインゲームには付き物なので、誰のせいでもないという考えを持つ事が大事である。
&font(red,b){対戦相手はAIではなく人}という事をよく理解し、対戦中の発言やマナーには十分に注意しよう。

キャラクターランクに関しては、並~凶までのキャラクターが使われている事が多い。
そもそもAI戦が前提となるMUGENキャラのランク自体バランスがとても曖昧なので、人操作間でもバランス調整が難しい。
例えば喰らい判定が伸びるキャラと殆ど伸びないキャラとでは牽制の駆け引きが成立しないし、片方のみがバーストを使える場合は試合運びに大きな差が出る。
さらに上り中段や高性能な下段技、コマンドの入力し易さといったAI戦では目立たない武器も対人戦では大きく化ける。
実際に対戦を重ねて使用キャラの強さをおおよそ把握しつつ、対戦相手の様子を見ながらキャラクターを使い分けるのがベストであると思われる。
ちなみに神キャラなどはMUGEN専用のバグを使用している事が多く、ほぼ使用出来ない。&s(){対人戦で使う事はまず無いと思うが}

肝心の対戦相手探しは、現在Twitterに&b(){[[「I.K.E.M.E.N対戦募集くん」>>https://twitter.com/ikemen_RT]]}という物が作られており、そちらを利用する事で多少は相手に困る事は無くなると思われる。
他にも前述したI.K.E.M.E.N非公式wikiに対戦募集場が設けられている他、&b(){[[Discord>>https://discordapp.com/invite/uYcb8TQ]]}にもIKEMEN部屋があるので、そちらを利用してみるのもいいだろう。
長らく認知度が低かったことや、MUGENのプレイヤー操作人口がさほど多くないという問題のため、一般的な商業ゲームと比べると人口はとても少ない。
ただ、全く人がいないという事は無いので、対戦したい場合はそれらを一度利用してみる事をお勧めする。

導入手順が少々特殊だが、下記のI.K.E.M.E.Nの導入動画に従って操作すれば問題無く準備出来るので、参考にどうぞ。
&nicovideo(sm28784090)

----
**動画について
一般的には普段の対戦をリプレイ機能を使って録画した動画などが上げられており、大会なども開催されている。
他にも対人対戦を想定しているキャラクターの調整として使われていたり、
&b(){「チーム戦8vs8」}といった専用外部ツールを使用した動画などもあったりと、幅広く投稿されている。
また、ニコニコでは専用のコミュニティも存在し、生放送も頻繁に行われているので、気軽に試合を観戦する事ができる。
動画投稿数はMUGENと比べると少ないが、オフ会を除けば唯一の対人戦の動画という点で、AI戦に無い魅力を持った1ジャンルを築いている。
|対戦動画&br()&nicovideo(sm27748974)|

----
**展望
IKEMENとMUGENの最大の違い、それは商用ライセンスやネット対戦の有無ではなく実は&b(){将来性}にある。
MUGENはプロプライエタリソフトウェアであるため、
ソースコードを持たない外部の人間が本体の機能を改変する事は限定的にしかできず、技術的にも非常に難しい。
一方IKEMENはオープンソースで誰でもソースコードを入手出来るため、
プログラミング知識とソフトをビルドできる環境さえあれば誰でも本体の機能を自由に弄る事が可能である。

最初のIKEMENはSUEHIRO氏が独自に作成した言語で作られていたため手を出しにくかったが、
IKEMEN GOでは使われているGo言語の学習に有用な資料が豊富に存在するため、比較的手を出しやすい。
おかげでIKEMEN GOは元の製作者のSUEHIRO氏が更新をしていないにもかかわらず、
前述の通り、別の製作者によって更新対応が引き続き行われるというMUGENでは有り得なかった状態が成立。
ソフトに対する技術と情熱を持った人が世界に1人でもいれば、エンジンを進化させ続けていく事が十分可能になっている。

もちろんこの記事を読んでいるあなたが、IKEMEN GOに新たな機能を追加したり、バグや不満点を修正するのも不可能な事ではないのだ。

----
***関連項目
[[ゆっくりとリュウ、拳極めたい]]
[[真のIKEMENは誰だ!真夏のオンライン大戦]]
[[無限熱帯]]

----
&aname(*1,option=nolink){&color(red){*1}}
ただし、無印のIKEMENには再配布禁止のファイルが含まれるためGoバージョンのみ。

&aname(*2,option=nolink){&color(red){*2}}
IKEMENとしては勿論、(元々)MUGENを利用したゲームとして合法的に正式販売されるのは歴史的にもこれが初となる。

&aname(*3,option=nolink){&color(red){*3}}
実はソースコードのMaxSimulの値を変更した上で自力でビルドを行えば、古いバージョン同様の上限4人以上になった本体が入手可能だったりする。

----