Profile

アメリ

Author:アメリ
キャラ紹介

line
カテゴリ
AIR (1)
Pos (1)
Var (1)
FAQ (1)
line
不許カウンター
line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
sub_line
カレンダー
11 | 2011/12 | 01
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
line
検索フォーム
line
リンク
line
RSSリンクの表示
line
QRコード
QR
line
ブロとも申請フォーム

この人とブロともになる

line
sub_line
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
line
common1.cns、コモンファイルの指定
 ファイル名をご覧の通り共通ファイルでどのキャラクターにも必要なステートが書かれています。
kfmのdefファイルを見るとstcommon=common1.cnsと書かれていますね、これはdefファイルのあるフォルダにあるcommon1.cnsを参照すると言う意味ですが存在しない場合はMUGEN本体のdataフォルダにあるcommon1.cnsを参照します、因ってkfmは本体のcommon1.cnsを参照しています。
 コモンを調べると俺コモンや独自コモンファイルと言う言葉を見かけますが、自分で変更する事も出来ます。ゲーム全体に関わる変更はキャラクターを変更せずにfight.defやcommon1.cnsで一括して行える様になっています。キャラクター独自のコモンを持っていると言うとぱっと思いつくのは浮いているキャラクターでしょうか、それでもphysics=NにしてHitoverrideすれば必要なさそうなので基本的には食らい状態自体が異なったりしない限りはキャラクター独自のコモンにする必要は無いと思います。それに二、三カ所変える程度であればキャラのcnsで上書き可能ですしその方が互換性が高くなるので良いと思います。

common1.cnsの中身はステート定義
 中を開くとわかりますが、移動、ジャンプ、ガード、食らい等のプレイヤーが変更しなくても使えるステート定義が並んでいます。通常は変更する必要がないので見る必要が無いかと言うとそうでもありません、基本的な仕組みを理解しておかないとわからない部分も出てくると思うのでデバッグの際に見る事があると思います。
 単純に考えればそのキャラクターが使うステート定義(statedef)なのでキャラクターのステート、技と同様に理解できる必要はありますね。

common1.cnsの処理
 common1.cnsのステートの処理自体はキャラクターのステートと同様に行われますが、それとは別にMUGEN本体に特別に扱われる物が多いです。例えば着地ステートやガードステート、それに食らいステートや死亡ステート等があり、そのステートにいないと効果が現れない物が多々あります。
 表面的に書かれている事以上に重要な部分なので、使う場合は実際の動作と合わせてそれぞれ何の意味があるステートかと言うのを覚えておく必要があります。

ステート自体に意味がある物
 立ち状態の[statedef 0]、着地の[statedef 52]、ガードの[statedef 120~140]の個別、食らい開始の[statedef 5000]、死亡の[statedef 5150]、勝利や敗北等の[statedef 171,181,191]と大体こんな所です。そのステート番号にいないと効果が無い物が殆どなので、別のステート番号で似たようなことをしても駄目な場合があります。

 実はこの内容についてはmugendocsをちゃんと読んでいる方にとってはCNS formatのSpecial State Numbersに書いてある事ですので、ここで引っかかる方はmugendocs全体を必ず読んでおきましょう。

common1.cnsのステートを上書きする
 何らかのコモンステートを上書きして使いたい場合はcommon1.cnsを変更してキャラクターに付属させるのではなく、キャラクターのcnsファイルの[statedef -2]より手前に定義します。こうするとcommon1.cnsのステート定義はキャラクターのcnsで定義した物で上書きされて無視されます。
 common1.cnsを付属するのは余程互換性がないキャラクターを作るのでない限りは止めましょう。私もやりましたがよくあるガードエフェクトをつけるだけであれば[statedef -3]にtype = Explodを置くだけで大丈夫です。

勝手に処理されるステート
 着地ステートやガードステートはキャラクターのステート定義を処理した後に勝手に処理されます。
その為、意図しない無限ループに陥り画面が止まってESCキーも効かない状況になる事があります。
コモンステートには2500loopの対象外の部分があるので無限ループしてもエラーが出ない事があります。

自動的に変更されるステート
 ラウンドの開始時や終了時の切替で[statedef 0]や[statedef 5900]に自動的に変更されます。[statedef 0]はctrlがついていないと思いますが、[statedef 191]からctrl=0のまま移動してきてラウンド開始時に自動的にChangeState,value=0,ctrl=1が起こります。また、ラウンド終了時も似た様な具合に処理されています。開始時はctrl=1で判断できるのでAIを行動させる場合はここからとなります。[statedef 5900]は最初に実行されるステートでここで初期化をしているので同じように変数の初期化をしたい場合は[statedef 5900]を自分のcnsに写してやると良いでしょう。

画面が止まる、ジャンプ・着地ループ
 着地ループはphysics=Aの場合にpos y > -1やvel y < 0の場合で[statedef -2]でChangeStateしたりphysics, pos, velを再度同じ様な値に変更したりしていると起こります。これは、キャラクターのcnsのステート(技用の[statedef 1000]とか)の後に着地処理[statedef 52]が行われて、その後[statedef -2]の処理でまた同じステートに戻ってしまって着地処理に戻ると言う状態になっている事と思います。
 velocityの頁で書きましたが、そう言った物はphysics=Aで制御するのではなく出来るだけphysics=Nで動かしましょう。
 また、これはChangeState条件を常に満たしていると言う事なので単純に1個のステートでループしている場合も同じです。自分で作ったステートだけでもChangeState一つで簡単にループしてしまうので気をつけましょう。
 一応これを発見する方法としては、common1.cnsをキャラクターのフォルダに入れて着地ステートでvarを+1していきます。100回程着地処理をしたらPauseをかけてvarを見て着地処理とChangeStateをしない様にしてDisplayToClipboardでvarとstatenoの値を見るとわかると思います。このcommon1.cnsがあれば何かあった時にcommon1.cnsでループをしているかどうかすぐわかります。とは言えトリガーを全体につけるのは面倒なのでcommon1.cnsにDisplayToClipboardとPauseをするステートを作って他のコモンステートの先頭で回数とstatenoをvarsetしてChangeStateしてしまう方が良いと思います。主に終了処理の[statedef 52],[statedef 140]でしょうか。

;loop check
[state ,loop check stateno]
type = varset
trigger1 = 1
var(2) = stateno    ;statenoが取得できないステートもありますが普通はループしないので。
ignorehitpause = 1

[state ,loop check prevstateno]
type = varset
trigger1 = 1
var(3) = prevstateno
ignorehitpause = 1

[state ,loop check times]
type = varset
trigger1 = 1
var(4) = var(4)+1
ignorehitpause = 1

[state ,loop check ChangeState at times = 100]
type = ChangeState
trigger1 = var(4) >= 100
value = 999
ignorehitpause = 1

;---------- ---------- ---------- ----------
;loop stop
[statedef 999]

[state 999]
type = DisplayToClipboard
trigger1 = 1
text = "state=%d, prevstateno=%d, times=%d"
params = var(2), var(3), var(4)
ignorehitpause = 1

[state 999]
type = Pause
trigger1 = 1
time = 60*60    ;60sec
ignorehitpause = 1


実行した訳ではないので動くかわかりませんが、1000>52>1000>52の様なループを発見できると思います。


困った時には
 困った時にはkfmのステートをデバッグで確認してどのステートにいるのか調べましょう。そのステート番号が本来の正しい動作の筈です。
 そのステートを通過した事を知りたい場合はそのステートで変数に値を入れておきましょう、若しくはコモンを弄ってそこからChangeStateしないようにしてtime=1800(30秒)位のPauseをしてみましょう。この様にしてステートの移動を追跡出来れば原因はすぐわかると思います。

スポンサーサイト
line
trigger1
 ステートコントローラーの実行判定用のトリガーについてです。基本的に0は偽で0以外は真になります。
一応2種類あって、triggerall と trigger1 系です。trigger1(trigger+num)は沢山書けます。
triggerallがあるとまずtriggerallの条件を全て判定してからtrigger1の条件を判定します。
他の様々なトリガーと区別する為に、ここではtrigger1をtrigger+numを表す用語として使う事にします。

次の様に書けます。trigger1は必須です。書式の項に書きましたが基本的に全て小文字で書いた方が良いです。
triggerall = ctrl = 0
triggerall = NumTarget
triggerall = stateno = 3100
trigger1 = time = 0
trigger1 = target, pos x > 40 || target, pos y - pos y > 0 || target, pos y - pos y < -60
trigger2 = time = 15
trigger2 = target, pos x > 60 || target, pos y - pos y > 0 || target, pos y - pos y < -60
trigger3 = time = 30
trigger4 = time = 45

同じtrigger1が続けてある場合は && つまりANDで続けたのと同じでtrigger1(triggerall)の条件を全て満たさないと真になりません。numの違うトリガーは || つまりORで繋げたのと同等になります。winmugenでは256文字制限があるので式が長い場合には気をつけましょう。

リダイレクト等でエラーメッセージを出さない書き方
 リダイレクトや0除算しない為には行を分けて書きます。これは、trigger1の実行が行単位で行われるからです。
 &&で繋げていると途中で条件を満たさなくなったらそこで終われば良いじゃないと思いますが、逆に後ろに||があったり:=を無視して良いのかと言う事になってしまうのと、それだと後ろの条件を見るのに更に工夫しないといけないのでこうなっているのだと思います。単にリダイレクトのリダイレクトが出来ないのと理由が一緒なんでしょうけど。
 要するに都合の良い解釈はしてくれない訳です。

例えば次の様な場合はターゲットがいないとエラーになります。
trigger1 = NumTarget && target,stateno && NumTarget

これはNumTargetが偽だとtargetの結果が-1になってエラーになります。


Redirectの項目にも同じことが書いてありますが、エラーが出そうな部分の手前のtrigger1に条件式を入れる事でエラーを回避します。

trigger1 = NumTarget
trigger1 = target, stateno


 リダイレクトは関数で行の解釈の最初の時点で処理しているので判定よりも先に変換が行われてエラーになるのだと思います。リダイレクトは参照先が変わるので扱いが違うのでしょう。その点を理解しておけば問題が起きても直ぐ解決できると思います。


最大数
 trigger1 だけ沢山書いて 100個 になるとキャラクター読み込み時にエラーが起きます。trigger2 でも同じかも。winmugenだとどうなんでしょう。

line
Pause,SuperPause
 時間を停止させるコントローラーです。基本的に使った人しか動けません、と言うかそうじゃなかったら意味がないので・・・。
PauseとSuperPauseは別の物でSuperPauseの経過が終わってからPauseが経過します、そして後から使った方の効果が発生します。

movetime,pausemovetime,supermovetime
 それぞれがステートコントローラーに対応した停止時に動ける時間です。動かない物につけても効果はありません、効果があるのは限られているのでステートコントローラー一覧を検索して見て下さい。
 Pause以外だとExplod,Projectile,Helperでしょうか。Helperの場合は呼び出し時に設定しますがキャラクターなのでPauseを自分で使うと時間が更新されます。

Pause中
 Pause中は相手が動けませんが[statedef -2]は有効なので[statedef -2]で相手がPauseすれば前述の通りPauseの効果が発生して動けます。
 しかし、止まっている事を知りたい場合はTimeが止まっているかどうかを見るとわかると思いますがTimeが止まるのはそれだけではないので注意が必要です。時止め中も動けるヘルパーを出しておいてそのヘルパーとのGameTimeの時間差を計るのも方法としてはあります。

時間を遅らせる
 1フレーム毎にPauseさせると単純に時間の流れが遅くなります。これを演出に利用すると効果的な場合があります。しかしあくまで相手が普通に動けると言うのが前提になります、攻撃を当ててステートを奪ったり出来る状態であれば自分のアニメの表示時間を2倍に延ばしておけば良いです。タッグ戦等を考えるとPauseは妨害になってしまうので、攻撃を当てた時限定ならばステートを奪って無敵にした状態の方が残った相手にも良いと思います。

line
・Cus-hina-sandbag / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください 2.4

 くるくる回ってHitdefで攻撃する様になりました。操作できるので面白いと思います。
そこそこカラー差が出来たと思います。




*--------- 操作について ---------*
左右キーで移動
上でジャンプ
下は・・ありません
前後キー2回でダッシュ

今の所、a,b,x,yのどれかで攻撃が出来ます。
全カラー操作可能ですが、ヘルパーは自動で動きます。ヘルパーを出すのは9P以上だけですが、設定すれば自由に変更できます。食らいProjがあります。


・version 2.4 2011/12/29 基本部分が完成。
・version 2.3 2011/12/22 Hitdefを追加
・version 1.7 2011/10/22 Hitdef無し最終版
・version 1.0 2011/4/17 公開

*--------- カラー毎の性能 ---------*
attack button is a/b/x/y.

1P none(no attack)
2P weak(hitdef)
3P (more offensive)
4P (more offensive)
5P (more offensive)
6P normal(more offensive) level: spin youmu, another blood.
まだ普通のキャラ。

7P afterimage, nothitby, lifeadd, random attack. level: ayu tukumiya, hinako shijo, mega mari, rare akuma, super mech hisui.
8P 7P+Projectile. level: rare akuma, super mech hisui
9P 8P+Helper x14. (W.I.P.)
10P 9P. (W.I.P.)
ライフ管理あり。攻撃中は無敵です。hitpauseがあると動けないのでGod WaldやAAASSX辺りになると勝負になりません。

11P afterimage, noko, SelfState(Guard), Helper, Projectile.
12P afterimage, noko, SelfState(Guard), Helper.
11P,12Pは死なない様にしてありますがhitpause中は試合が終わりません。


*----------*---------- Config ----------*----------*
Config file is "-3.txt".

*--------- AI ---------*
コマンド式の自動AIだと最初棒立ちになるので強制的にAIを入れられます。
[state -3,AI on]
type = varset
trigger1 = 1 ;1 is AI on, 0 is AI on automatically(default).

;---------- lifeadd (7P~10P) ----------
ライフ回復です。7P-12Pのみです。
[state -3, Lifeadd]
type = varset
trigger1 = 1 ;1 is Lifeadd on(default), 0 is Lifeadd off.

;---------- Probability of attack (6P~12P) ----------
攻撃率を2倍に設定できます。余り高いとずっと無敵になってしまうので・・。
[state -3, Probability of attack]
type = varset
trigger1 = 0 ;1 is double, 0 is normal(default).


*--------- 呼び出せるヘルパーの数について ---------*
-3.txtにあるヘルパーのステートコントローラー(type = Helper)のトリガーの数字を変更すると追加で出てくるヘルパーの数を変更できます。
ヘルパーは勝手に動きます。
[state -3, Helper]
type = Helper
trigger1 = RoundState = 2 && !IsHelper && Random < 30
trigger1 = palno >= 9 ;applied palette to 9,10,11,12
trigger1 = NumHelper(6190) < 14 ;number of helper(default is 14).

palno >= 9 なので9P以上。
NumHelper(6190) < 14 の右の数字(これだと14)が呼び出す数です。

0だと本体のみで追加ヘルパーは無しです。多すぎると相手がヘルパーを出せません。
最大ヘルパー数(helpermax)はmugen.cfgに書いてあります、通常は最大値の56です。

*----------*---------- End ----------*----------*

それでは良いお年を
line
・Cus-hina-sandbag / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください 2.3

 くるくる回ってHitdefで攻撃する様になりました。操作できるので面白いと思います。
取りあえず、6-10Pが一発で死ぬのを修正しました。(全体的に不具合がありますが)適当にご利用下さい。




 txtに詳しい事は書いてませんが、防御は次の通りです。
1-6Pは特に何もしていません。
7-12Pはnokoとlifesetしているだけのキャラです。

cus-hina-san6170s.gif

*--------- 操作について ---------*
左右キーで移動
上でジャンプ
下は・・ありません
前後キー2回でダッシュ可能

今の所、a,b,x,yのどれかで攻撃が出来ます。
全カラー操作可能ですが、ヘルパーは自動で動きます。

全カラー不具合?でProjでダメージが入らないかもしれません。構造を変えた所、ダメージ処理自体が出来なくなったので修正予定です。
大体出来た後に適当にステートの中身を移動して作ったので不具合の固まりかも。hitpauseがついていると試合が終わりません。

全体的に修正する予定です。
*--------- カラーについて ---------*
1P 移動のみ(AIの都合で希に最初だけ攻撃するかも)
2-6P 攻撃、移動、ガード

7-10P 残像(afterimage)、攻撃、移動。上から落ちてくる厄の攻撃、自動回復。ライフ管理。
7-10Pはそれぞれ1/2倍ずつダメージを軽減します(調整予定)。999ダメージ制限です。nokoありで一応即死します。

11P 残像(afterimage)、攻撃、移動。ガード固定。上から落ちてくる厄の攻撃。死なない。こちらはProjがあるので攻撃が激しい。
12P 残像(afterimage)、攻撃、移動。ガード固定。死なない。もしかしたらvs時に勝手に攻撃するかも。


*--------- 呼び出せるヘルパーの数について ---------*

-3.txtを開いて一番下にあるステートコントローラー(type = Helper)の数字を変更すると追加で出てくるヘルパーの数を変更できます。
ヘルパーは勝手に動きます。

;---------- ---------- ----------
;-3.txt

[state -1, Helper]
type = Helper
trigger1 = RoundState = 2 && !IsHelper && Random < 300
trigger1 = NumHelper(6190) < 14 ;<<<<<この数字が追加で出てくる数。

helpertype = player
---------- ---------- ----------

この NumHelper(6190) < 14 の右の数字(これだと14)が呼び出す数です。

0だと本体のみで追加ヘルパーは無しです。呼びすぎると相手のヘルパーが出せません。
最大ヘルパー数(helpermax)はmugen.cfgに書いてあります、通常は最大値の56です。
line
・Cus-hina-sandbag / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください 2.2

 くるくる回ってHitdefで攻撃する様になりました。操作できるので面白いと思います。
さっと切り張りして作ったからか致命的な部分があったのでちょっとだけ修正しました。
6-10Pが一発で死ぬ様になっているので修正します。
動画は後日に。

 txtに詳しい事は書いてませんが、防御は次の通りです。
1-6Pは特に何もしていません。(6Pカラーは試合開始時からライフが0になって死んでいるので注意)
7-12Pはnokoとlifesetしているだけのキャラです。

mugen1.0だとカラー選択が出来ません。
cus-hina-sandbag.defを使う場合は大丈夫ですが、400等を使う場合はpal1=と言う行がないのでcus-hina-sandbag.defのpal1からpal12の部分を丸ごと写してください。


cus-hina-san6170s.gif

*--------- 操作について ---------*
左右キーで移動
上でジャンプ
下は・・ありません
前後キー2回でダッシュ可能

今の所、a,b,x,yのどれかで攻撃が出来ます。
全カラー操作可能ですが、ヘルパーは自動で動きます。
全カラー不具合?でProjでダメージが入らないかもしれません。
大体出来た後に適当にステートの中身を移動して作ったので不具合の固まりかも。hitpauseがついていると試合が終わりません。
その為、致命的な部分があったので修正しました。

全体的に修正する予定です。
*--------- カラーについて ---------*
1P 移動のみ(AIの都合で希に最初だけ攻撃するかも)
2-6P 攻撃、移動、ガード

7-10P 残像(afterimage)、攻撃、移動。上から落ちてくる厄の攻撃、自動回復。
7-10Pはそれぞれ1/5、1/10、1/15、1/20ダメージを軽減します。999ダメージ制限です。nokoありで一応即死します。

11P 残像(afterimage)、攻撃、移動。上から落ちてくる厄の攻撃、自然回復。ガード固定。死なない。
12P 残像(afterimage)、攻撃、移動。ガード固定。死なない。もしかしたらvs時に勝手に攻撃するかも。

*--------- 呼び出せるヘルパーの数について ---------*

-3.txtを開いて一番下にあるステートコントローラー(type = Helper)の数字を変更すると追加で出てくるヘルパーの数を変更できます。
ヘルパーは勝手に動きます。

;---------- ---------- ----------
;-3.txt

[state -1, Helper]
type = Helper
trigger1 = RoundState = 2 && !IsHelper && Random < 300
trigger1 = NumHelper(6190) < 14 ;<<<<<この数字が追加で出てくる数。

helpertype = player
---------- ---------- ----------

この NumHelper(6190) < 14 の右の数字(これだと14)が呼び出す数です。

0だと本体のみで追加ヘルパーは無しです。呼びすぎると相手のヘルパーが出せません。
最大ヘルパー数(helpermax)はmugen.cfgに書いてあります、通常は最大値の56です。
line
・Cus-hina-sandbag / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください 2.0

 くるくる回ってHitdefで攻撃する様になりました。
致命的な部分があるので動画は後日に。

cus-hina-san6170s.gif

*--------- 操作について ---------*
左右キーで移動
上でジャンプ
下は・・ありません
前後キー2回でダッシュ可能

今の所、a,b,x,yのどれかで攻撃が出来ます。
全カラー操作可能ですが、ヘルパーは自動で動きます。
全カラー不具合?でProjでダメージが入らないかもしれません。

*--------- カラーについて ---------*
1P 移動のみ(AIの都合で希に最初だけ攻撃するかも)
2-6P 攻撃、移動、ガード

7-10P 残像(afterimage)、攻撃、移動。上から落ちてくる厄の攻撃、自動回復。
7-10Pはそれぞれ1/5、1/10、1/15、1/20ダメージを軽減します。999ダメージ制限です。nokoありで一応即死します。

11P 残像(afterimage)、攻撃、移動。上から落ちてくる厄の攻撃、自然回復。ガード固定。死なない。
12P 残像(afterimage)、攻撃、移動。ガード固定。死なない。

*--------- 呼び出せるヘルパーの数について ---------*

-3.txtを開いて一番下にあるステートコントローラー(type = Helper)の数字を変更すると追加で出てくるヘルパーの数を変更できます。
ヘルパーは勝手に動きます。

;---------- ---------- ----------
;-3.txt

[state -1, Helper]
type = Helper
trigger1 = RoundState = 2 && !IsHelper && Random < 300
trigger1 = NumHelper(6190) < 14 ;<<<<<この数字が追加で出てくる数。

helpertype = player
---------- ---------- ----------

この NumHelper(6190) < 14 の右の数字(これだと14)が呼び出す数です。

0だと本体のみで追加ヘルパーは無しです。呼びすぎると相手のヘルパーが出せません。
最大ヘルパー数(helpermax)はmugen.cfgに書いてあります、通常は最大値の56です。
line
・Ahojin / キャラ紹介記事 Characters

download cns 0.39.0
download sff 0.37.0

・ツリーが画面外の後ろに出ていたので修正。

 何故か変な位置に出る様になっていたので修正しました。振り向きでたまに消える気がするのも気になるかも。
line
・Ahojin / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください cns 0.38.8
download sff 0.37.0

・state1612のExpression trancatedを修正。
・state1220のdivision by zeroを修正。
・state1050のinvalid action 50を修正。

 細かいエラーの修正です。


・AhojinGod / キャラ紹介記事 Characters

download cns 0.38.8
download sff 0.37.0

・state1612のExpression trancatedを修正。
・state6190のExpression cramped to INT_MAX(mugen1.0)を修正。
・state1220のdivision by zeroを修正。
・state1220の大ちゃんがスポンジ状態の時にずれていたので修正。
・commandの並びを修正。

 細かいエラーの修正です。こっちは大ちゃんがずれていたので修正しました。

line
command

・[statedef -2]でのコマンドの受け付け方。
 ヘルパーを出しておけば受け付けられますが変な場合は movetype に注意してください。


 statedef -2でも通常通りコマンドを受け付ける事は出来ますが相手のステートを参照している場合は出来ません。これは、相手のステートを参照しているのでコマンドの受け付けも相手のコマンドになるからです。
 しかし相手のコマンドを参照するので同じキャラクターであれば相手のステートを参照している際にもコマンドの参照が可能です。

 ではどうすれば違うキャラクターとの対戦で使えるのかと言うと、まずは仕組みを理解しないといけません。
私が調べた所に因ると、“相手のステートにいる場合は相手のステートを参照する際に自分のステートの[command]と同じ位置の相手のステートの[command]を参照する?!”と言うのがあります。
 しかし通常は相手のコマンドの位置と名前がわかるはずもないのと存在しないコマンドは記述出来ないので役に立ちません。でも実は同じコマンドと言うのが存在していて、ボタンを1個押す物やダッシュやリカバリーは共通なのでこれを利用すればコマンド入力が可能です。elecbyte の kfm ですら共通コマンドが下に追いやられているので設計段階から間違えている様な気がします。その為、全てのキャラクターがコマンドの並び順を意識していない筈なので全てのキャラクターを修正する必要があります。
 説明は以上になります。


using command at statedef -2 >> command.txt

 実際の作業については、並び順を全キャラクターで同一にする必要があるのでcommand.txtの中身を貼り付けて同じ部分を削除してください。
 これから作成する方は[statedef -1]の手前を範囲選択して削除してからファイルの先頭に貼り付ければ大丈夫です。

 コマンドの受け付け部分を作る方は、厳密にするのであれば共通コマンド1つ毎に数字を割り当てて入力を見つけたら受け付け時間判断の為のタイム加算を開始してコマンド受付をする必要があります。私のは簡単に同じボタンだけで作ってしまったのでそう言う作りにはなっていません。

 制作中の方はなるべく頭の部分だけ[command]を揃えて戴ける様にお願いします。


・.cmdファイル
 [command]を書いてあると思いますが、[command]を書いたファイルが無いと"need at least 1 command"と言われてしまいます。多分そう言う人は空っぽの状態から作ろうとしたのでしょう、上記のcommand.txtとmugen1.0付属のkfmから制作し直した方が良いです。defファイルの詳細な説明は余り無いので、1から作ると言うのは危険です。
 [command]を作成したらそれに続く[statedef -1]でコマンドを使った際にChangeStateする記述をしないと何も起きません。ChangeState先の[statedef num]を作ってアニメーションもつけてちゃんと動いたら一つ完成となります。

・AI
 人が操作する前提だと通常はコマンド入力判定、ctrl判定、statetype判定、power判定程度ですが、AIもコマンドのChangeState判定で作ります。相手との距離や相手のstatetype等を参照してChangeStateすると言った具合です。しかし相手のstatetypeが変わった瞬間に必ず行動する様にしていると所謂超反応AIになってしまいます。相手がmovetype=Aになった瞬間に無敵技を出す様なキャラクターと対戦したいとは誰も思いませんよね。そうならない様に、そして逆にプレイヤーなら先行入力する事を考えて適度にそうなる様にすると良いと思います。技に因りますが入力の遅延フレームをvarで0-20フレーム程度にランダムで設定すれば、ガード状態から必ず技で反撃する設定でも割と人操作に近い反応になるかも知れません。弱攻撃なら0-3フレームくらいでよいですね。

・コマンドの作り方
 コマンドの作り方はcmdファイルの頭に書いてあるので読んでください。kfmのコマンドファイルを見ていれば色々気づくと思います。

line
・Ahojin / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください cns 0.38.6
download sff 0.37.0

・けいおん先生を出す時の画像の位置を修正。
・初期位置の補正を追加。
・start,startで回転マケドニアを出せる様に追加。(但し相手側のcmdファイルで対応が必要。skydrive の command.txt を見て相手(opponent)のcmdファイルを変更してください)

 位置がずれていたので修正しました。

 回転マケドニアのコマンド入力については2通りになりましたが、相手のステートにいる際に使うには相手側のcmdファイルの先頭部分が同じである必要があります。p2statenoを使ってくる相手との対戦で使ってみたい方はお手数ですがskydriveにあるcommand.txtを相手キャラクターのcmdファイルの先頭に貼り付けて元々あった共通コマンド部分(command.txtにあるのと同じ物)を削除してください。
 相手側の対応が必要なのでキャラクター制作をしている方が対応して戴けると使いやすくなると思います。興味があればどうぞ。
line
・AhojinGod / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください cns 0.38.6
download sff 0.37.0

・けいおん先生を出す時の画像の位置を修正。
・初期位置の補正を追加。
・状態表示の位置を修正。

 位置がずれていたので修正しました。
通常版も修正しましたが追加した部分に不具合が見つかったので後日に。
line
・AhojinGod / キャラ紹介記事 Characters

リンクの保管庫からdownloadしてください cns 0.38.4
download sff 0.37.0

・Pause関係の不具合を修正。
・ライフバー表示が1減ったり増えたりする事があったのを修正。

 前回の修正は手抜き過ぎて不具合があったので修正しました。ライフバー表示がたまに1減って戻ったりしていたので修正しました。
line
一周年はもう過ぎましたが寒いので体調管理はしっかりとしておきましょう。
そろそろ不具合を直さないと。



関連動画が長くなり過ぎて表示されない事があるんですけお・・
line
・PlaySnd
 PlaySndは登録された音を再生させるステートコントローラーです。volumeで音量調節が可能です。
common.sndから再生させる場合はFを付加します。value = F5,0


・volume
 音量を0を基準とした100単位で指定します。負数にすると小さくなります。
測定した訳ではありませんが100で2倍、-100で半分の音量と言ったところでしょうか。
output = (1/2)^(volume/100) ;maybe
そもそも音量は登録前に統一すべきですが、再生時に音量を下げたい場合は-100ずつ減らせば良いと思います。


・channel
 channel 0は movetype = H 以外の時に鳴ります。その他は特に制限はありません。指定しない場合は-1で空いているチャンネルになります。
基本的にキャラのボイスやBGMを再生したい場合に lowpriority = 1 と共に使います。pan か abspan を指定すると音の移動を表現出来たりします。abspan = floor(pos x) ;で良いかも。再生中であればSndPanで後から設定することも可能です。
 最大チャンネル数は mugen.cfg に記載してある数字で初期設定だと16だったと思います。hitsound は全く別で1チャンネルです。playerが12、hitが1+1、round、bgmで16channelなのかな。
line
 読んで時の如くですが意外と知らない人もいると思うので。
何かを提供する時は普通、readmeとlicenceをつけます。少し特殊なのはオンラインで提供される場合です。

 さて、その前に少し背景の話をしておこうと思います。
mugenの場合、よく外国の方だと「~のキャラだよ!」としか書かれていなかったりしますが、これは元々英語のゲームで“ちゃんと説明書を読んで使い方がわかっている筈”なので説明する必要は無いよね!と言う意味を含みます。
 これは当然の事だと思いますが、日本だとどうでしょうか。周りの大人を見るとわかりますが、説明書を読んでいる人は(当然いるでしょうが)少ないと思います。何せ電化製品を買ってきたらいきなり電源を入れてボタンを押すわけですから・・・。
 特に利用規約なんて一度も読んだ事が無い人もいるのではないでしょうか、長い物は普通に読むと30分位は掛かりますし。当然ですが、契約書をちゃんと読んでいないから考え直して欲しいと言うのは外国では通じません、本来は日本でも通じないのですが思いこみで行動して文句を言う人が絶えないので場合によりけりと言う部分があります。一言で言うと文化の違いですが、こうして比較すると日本人には明らかに怠慢な部分がありますね。


 では本題に戻って、readmeの方は説明書なのでキャラクターの説明やコマンドが書いてあったりする訳です。コマンドは正直な所、cmdに書いてあるのと二重記載を防ぐ為にそっちに説明を書けばいいと思います。後は作者についてやspecial thanks等のちょっとした事が多めです。
 licenceについてはキャラクターという性質上そのまま提供される物なので外国の人だと何も書いていない事が多いです。これには「作ってみたから使ってみてね!」と言う意味を含む事があります。
なのでlicenceが書いていない物については当然ですが制限が無いわけです。

 あくまでmugenに関してですが日本のサイトを見ているとよくわかりますが、licenceに関しては余り知らない印象を受けます。licenceは主に権利と制限を書くので制限するのであれば書く必要があります。
 制作中の場合や個人的に作ったので使って欲しくない場合はそもそも公開しないと思います(プライベートな配布をする事があります)。それに一度公開すると世界中に公開(配布)した事になるので殆ど出来た状態で公開する事が多めです。
 たまにブログにのみ扱いの説明を書いている方がいますが、そもそもそう言うのは無効です。オンラインゲームの様に現状でのみ提供される物でないとそう言ったlicenceはつけられません。


 またlicenceの扱いとしては公開した時の状態で使われるので、許可されている事項についてlicenceだけ変更してやっぱり止めてくださいと言うわけにはいきません。
 何故かと言うと一般社会でそんな事をしたらほぼ確実に実害が出るので損害賠償請求が来るからです。公開物についているlicenceなのですからそれが正しいと言うだけの事で契約と呼べる物ですから当然の理由です。
 後から紹介や動画の禁止したい場合はlicenceを更新したキャラを公開して広まるのと待つ程度でしょうか。しかし既に配布済みであり、何らかの禁止をしたいのであれば公開する事自体が矛盾しそうです。


 よく見るlicenceに比べれば短い文章でしたが、どうでしょうか。基本的に変更しない物なので面倒な人は余り書かずに自由に使ってください程度にしておくのが無難でしょう。但し、不具合については起こりそうな場合とかを書いておくと良いと思います。後、技を見たい時にcmdファイルだと実行されてしまうので技の説明はreadmeにもあって良いかも知れませんね。
line
[Select Info]

複数本体でのキャラクターの共有 新旧MUGENでキャラクターの共有
 本体の項目の複数本体でのキャラクターの共有頁を見て下さい

・キャラクターを追加する
 mugenのcharフォルダにキャラクターを入れます(他の場所でも可)。作者名でフォルダを作ってその中にキャラクターの名前でフォルダを作ると良いと思います。作品名だと増えたときに困ると思うので・・。

 charフォルダからのdefファイルの場所を記述します。この時、kfm/kfm.defの様にフォルダ名とdefが同じ場合はフォルダ名だけに省略できます(kfm)。defファイルと名前が同じzipファイルも同じ様に省略した書き方なら大丈夫です。zipファイルがフォルダの役目になりますが逆にdef指定は出来ません。zipファイルの場合は中にフォルダがあると駄目かも、どうせ実行時に展開するので展開した方が良いです。
 charフォルダ以外に入れた場合は、例えば../../mugenchar/kfm/kfm/kfm.defとすれば大丈夫です。

 説明を書きたい場合はセミコロン;の後に続けて書きます。
;line 1


・MUGEN 1.0 用 スクリーンパック (60, 120, 600, 1200, 4800人)
big60 big120
mugen1-4800
(.sff は入っていませんので data/mugen1 フォルダの物を写してください)
自分で変更する場合は以下を参考にどうぞ。


・キャラクターの登録数を増やす
 設定に関する情報はfight.defの一番下に書かれているので読んでおきましょう。

 system.defの次の値を変更すると縦と横の数を変更できます。
rows = 7
columns = 20

 左上の位置を調節すれば好きな位置から始められます。
pos = 81,435

 キャラクターのポートレート(アイコン画像)の枠の大きさを変更したい場合は次の値を変更します。
cell.size = 27,27 ;x,y size of each cell (in pixels)
cell.spacing = 2 ;space between each cell

 ポートレートの位置や大きさを変えたい場合は次の値を変更します。
p1.face
p2.face

facingは向きで1が右向き、-1が左向きです。


 初期状態の黒枠は [SelectBG 1] ;Dark box の部分なのでここの大きさを変更します。数値は左上のx,yと右下のx,yです。
window = 14,21, 305,196


・回り込ませる
 端まで行ったら反対側へ移動したい場合はwrapping = 1にします。
wrapping = 1


・ランダム選択を入れる
 キャラクターの代わりに randomselect と書けばランダム選択の場所が出来ます。ランダム選択の間隔は次の値で設定します。

cell.random.switchtime = 1;Time to wait before changing to another random portrait

初期だと6だったと思いますが1にするとキャラクターが変更されるのが早くなります。


・空欄を入れる
 空欄と言うのはdefが存在しなければ何でも良いので blank とだけ書きます。

 但し、長方形以外のセレクトの並びを作りたい場合はカーソルがそこへ行かない様にしないといけないので、system.defの次の2つの値を0にします。

showEmptyBoxes = 1
moveOverEmptyBoxes = 1

この2つを0にすると空欄を表示せずにそこを飛ばす様になります。


・一覧の管理
 キャラクターの後ろにセミコロン、作品別、キャラクター別に説明を書いておいて登録するのとは別にすべてのキャラクターを作品別に記載したtxtを用意しておくと便利です。そこから写すだけで新しいのが作れます。タブでしっかり区切っておけばexcel(calc)で並び替えも出来るので便利です。

char;title char author ai
kfm;Origial kfm Elecbyte

こんな感じでしょうか。ステージの区切りでもあるカンマで区切っても良い様な気がしますが隙間が出来ないので少し微妙ですね。


登録以外はsystem.defの変更になるので絵を差し替えればスクリーンパックを作れてしまう作業です。ここに書いてある事なら調整する必要もないのでそんなでもないですけれどね。

line
line

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