Profile

アメリ

Author:アメリ
キャラ紹介

line
カテゴリ
AIR (1)
Pos (1)
Var (1)
FAQ (1)
line
不許カウンター
line
最新記事
line
最新コメント
line
最新トラックバック
line
月別アーカイブ
line
sub_line
カレンダー
04 | 2011/05 | 06
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
AhojinGod 0.32.6 Hitdefの不具合を修正

・Hitdef2を出す条件を間違えていたのを修正。
・ライフ表示を修正。

Hitdef2を出す条件を飛ばしていて意図しない時に攻撃していたので修正しました。
ターゲットを取られない時はライフを減らされないので見かけ上多めに減る様にしました。

Hitdefしか通さない相手だとちょっと変わるかも・・
他は特にありません。


たまには減らなさそうな相手といやたまにやってるけど

mugen0802_M-reimu099.png

99から減らないんですけお・・
1時間経っても減らないんですけお・・
なんとかしてくだち!

AI4じゃなくても変わらないみたい
と言うかCパチェも減らない
スポンサーサイト
line
AhojinGod 0.32.4 ライフ表示のタッグ対応と八百長対策の修正

・ライフ表示をタッグに対応。F03とC_Pacthouliへの対応を修正。
・八百長対策を変更。時間停止が絡むので本当はあまり入れたくないのですが。
5-8Pの硬さを半分にしました。

ライフ表示は4キャラどの組み合わせでも大丈夫だと思います。
オム君とパッチェさんが居る時は見やすい位置に移動する様になっております。

八百長対策は一回無くしておいたのですがHitdefを搭載して倒せるキャラが増えたのでまた付けました。
時止めが入るので1分位は終わらない事がしばしばありますがご了承下さい。
効果がない相手が居たら教えてね!設定時間を延ばせば対策出来るから。

ラウンド開始時に止まっていたので再アップしました
わざわざ直してあげるなんてやさしい


ライフ表示はこんな具合です

mugen0841_ライフ表示

位置は自動調整です。


明日は
動画作りま~す


作ったよ



ゆっくりしていってね
line
AhojinGod 0.32.2 死なない不具合を修正

・2P側からライフを上手く取得できない場合の暫定対策。
・RoundState=1の時の表示を修正。
・普通には死ななくなっていたので修正。


前回入れた判定により、通常では死亡しなくなっていたので修正しました。

2P側から相手のライフが正確に取得出来ない不具合は相手のlifesetが原因だと思いますが、今のところ根本的な対策が出来ないので暫定対応となります。


これで不具合は無くなったかな?どうにもならないのもあるんだけど。
ちょっとMUGENのトリガーはちゃんと取得できないのが多すぎるんじゃないの。
line
AhojinGod 0.32.0 Hitdefを修正

・ライフ表示を修正。
・Hitdefの条件を修正。
・Timerfreezeの条件を修正。

Hitdef全開だととても危険ですね。殆ど使わないならそうでもないのですが・・。
性質上仕方が無いとは言えそろそろ機能を追加しないと駄目ですね。


放っておいたらアップされていたようなので、今朝ちょっと上がっていたファイルを落とした方は再ダウンロードをお願いします。ヘルパーのHitdefが出なくなっていました。
line
AhojinGod 0.31.8 修正

・Hitdefの出る条件を少し修正しました。
 これで基本部分は完成したけどどうしようかな。

mugen0785_大ちゃん大丈夫?

大ちゃん大丈夫?


1-8Pって全く見てなかったする気がするけどまた暴走してたりしないかな・・
心配だな・・



対 四条雛子

mugen0799.png

尻相撲ではいささか荷が重いですね
こちらの3ラウンド目はもしかしたらラウンド設定を間違えている可能性がありますが・・
line
AhojinGod 0.31.6 修正

動作を修正しました。
ある程度はちゃんと動いていた様なのですが手を付け始めてしまったので細かい部分を直しました。
デバッグメッセージのエラーは出なくなったと思います。そのうちですが合わせて並の方も更新します

1-4P、5-12Pはそれぞれ共通設定です。
被ダメージ制限を1000にしたので柔らかくなりました。そう言えば、死亡確認はしていませんね・・readmeに書いてあるのは0.286の説明のままですが、削りやすいキャラでは削りやすくなったと思います。
少し見やすくなる様にツリーとゆっくりを減らしました。

表示の説明です。

mugen0764_pickup.png

上から順に

現在のLife
Hitdef2 マケドニア2
最後に食らった時間

になっています。デバッグ表示みたいですね
ライフが全く減らない相手は考慮していません。
細かい判定はまだ入れていないので希に誤判定するかもしれません。


是非色々対戦させてみてください。
キャラ多過ぎるし
line
AhojinGod 0.31.4 Hitdefを追加2

と言うわけで追加しました。
5-8Pのステートがずっと固定になっていたので修正しました。


version0.31.4 2011/5/20
・本体Hitdefを追加。
・pos関係のエラーを修正。

version0.31.2 2011/5/20
・5-8Pがステート固定になっていたので修正。
・マケドニア2がちゃんと動いていなかったので修正。
・ライフ表示を修正。
・Timerfreezeをライフ割合で行う様に修正。
・変数が変な値になった時に余りうるさくならない様に修正。


5P以上のカラーでも四条雛子やシングラリティーも倒せる様になりました。たぶん。
そう言えばダメージ制限を1000未満まで緩和したけどステ抜けを追加したからあんまり変わった気がしない。


確認した機能が何故か動かないんですけお・・・
ファイルが古くなって居るんですけお・・・
line
AhojinGod 0.31.0 Hitdefを追加。

・GameTime式のステ抜けを追加。
・カス雛さんの登場場面と勝敗判定後の動作が抜けていたので修正。
・以前の様に食らった時間を表示する様に修正。
・アマジンの表示の修正。
・勝敗がついてもラウンドが終わらない場合の演出を追加。
・ヘルパーが変なステートに移動していたので修正。
・Hitdefを追加。死ぬからReversaldef出来ない方だけど。


今回は説明が単体でもアップできなかったので対戦から先にアップしました。
画質を良くしたかったので丁度良かったと言うべきか。

・説明動画



・AAASSXとLeivathanとの対戦。



Hitdefが出るとなんか良いですね。
追加機能は沢山予定があるのですがやる気が出たら作ると思います。


最近は技を追加してないな・・・
line
Time,AnimTime,GameTime

Time
 ステートに入ってからの時間を表示します。開始は0です。アニメーションに関係なく増え続けます。相手のステートにいる場合は基本的には更新されません。

AnimTime
 アニメーションが終了するまでの時間をマイナスで表示します。通常のアニメーションだとアニメーションの最後に到達すると0になります。Loopstartや表示時間が-1のアニメーションでは1を返します。相手のステートにいる場合は-1になります。


GameTime
 MUGENを起動してから最初にラウンドを開始した時点からの加算でMUGEN実行中はずっと加算されます。
pause、superpause中は準監視ステート(-3,-1ステート)は実行されない為、-2ステートと差が出ます。
また、相手のステートにいる場合は更新されませんが相手のステートに移る直前の-1ステートで取得した値から-2ステートを参照する時にずれます。これを利用すると相手のステートに居るかどうかが分かります。


一気に書いたけど間違っていたりしたら教えてね
line
ばぁー ねえ驚いた?ねえ驚いた?
 var、fvar等は変数と呼ばれていて数を保存しておく場所になっています。変数の型に依って保存できる範囲が決まっています。何かの値を保存して別の所から参照したい場合に使います。

var(n),fvar(n)
 kfmから差し替えて作りましょうとキャラ制作の方に書きましたが、varの説明はstate controllerの所とkfmのcnsの最初の方に書いてあったりします。読んでおいてください。
 型と言うのが解らない方はint型(整数型)とfloat型(浮動小数点型)についてぐぐれかす。

var(n)
 整数型、n=0~59で60個使える。-2^31~2^31まで。
fvar(n)
 浮動小数点型、n=0~39で40個使える。基本的に数字として使えるのは7桁までで8桁以上を使うと段々と誤差が生じる(正確には2進数なのでちょっと違いますが)。
桁数的にはとても大きな桁でも(100桁とか)扱えますが計算出来なくなるので使えません。

 varはp2statenoからのvarsetやtargetvarset、parentvarset等で変更される可能性がありますが通常はそんな事はしないので問題ありません。そもそも変数が使えなかったら困りますし・・。


sysvar(n),sysfvar(n)
 プレイヤーのシステム変数は相手から変更されません。
sysvar(n)
sysfvar(n)
 n=0~4で5個使える。型は通常の変数と同じ。

使用済みの変数
 var(0)はkfmが既に使っているので気を付けましょう。
 sysvar(0),sysvar(1)はcommon1.cnsで使われているので気を付けましょう。自分でcommon1.cnsを持っていない場合はdataフォルダにあるので見てみてください。
 var(59)はAI onに使われる事が多いみたいです。使うついでに変数の持ち越しをしましょう。
 相手側の状態を参照する様な仕組みを作る場合は両者から参照可能な様に特定の変数を使います。

varsetの記述はvar(1) = 1の様に行わないと検索できなくなるので不便です。

変数の持ち越し
 ラウンドが変わっても前のラウンドの値を持ち越したい場合はcnsファイルの[Data]項目に次の値を適切に設定する必要があります。

[Data]
IntPersistIndex = 60
FloatPersistIndex = 40

 kfmの説明を見るとわかりますがこの2つの値は変数を初期化する範囲となっています。
なのでラウンド開始時に初期化したくない変数は番号の大きい方から割り振る必要があります。
値を0にすると全ての変数を初期化せずにそのまま使うので不具合が出ない様に注意する必要があります。

 common1.cns の [statdef 5900] を見てください。必要であれば [statedef 0] に roundstate = 0 と prevstateno = 5900 をトリガーにした初期化処理を入れましょう。

 持ち越しの処理をする場合は常に実行される [statedef -2] に入れると良いでしょう。


変数の基本
「初期化」
 まず変数は必ず初期化します、通常はラウンドの開始に0になっているはずです。cnsの記述は結局の所プログラム作成なので基本的には一緒です。特に計算に一時的に使う等、そのフレームでしか使わない変数は必ず初期化しましょう。極端に言えばラウンドの開始時に相手に変更されている恐れもあります。

「入れる値の範囲を明確にしておく」
 初期値は0の筈ですがそれ以外に何を入れるかです。0か1かと言う場合でも誤って他の値が入る事もあるので0か(1か)そうでないかの方が安全ですし、これはバグを無くす方法でもあります。0から100までの値を使う場合でも0以上100以下と言う判定を最初にして、そうでない場合に初期化したり無視したりしておけば問題ありません。 基本は使う範囲と範囲外の値の扱いを明確にしておけば良いです。全く考慮されていない範囲があるのは好ましくありません。

 例えば0から1ずつ増えていって100で終わりと言う判定を作ると普通の人はvar(1)=100とすると思いますが、これだと101になってしまった場合や10000になってしまった場合に終了しませんしマイナスになってしまっても予期せぬ続行が行われます。この場合に考慮する範囲としては初期値の0、間の1-99、終了値の100、そしてそれ以外の0未満と100より大きい値と言う事になります。ここまで考えてあればバグの場合に暴走の可能性がないので安全ですが、安全性とは別に同じ変数を別の箇所で誤って使った場合にエラー表示が出ると嬉しいですね。実際はvar(1)>=100としておけば大丈夫でしょうけれど。
line
ステートについて(statedef,state,ChangeState,SelfState,stateno,prevstateno...)

[statedef 1000]
 ステートの定義で番号が必要です。同じステートを複数定義すると後に書いた方が使われます。本当に?
defファイルでst=char.defと言う指定をしていると思いますが下にある物が優先されます。

 ※一行で256文字を越えない様に!winmugenだとトリガー等が実行されません注意!


コメント
 ;(セミコロン)を付けるとそれ以降の文字が行末まで記述とは関係のない部分としてみなされます。複数行を一気にコメントアウトする事は出来ないのでエディタの文字挿入とかでやってください。
 FightersFactoryだとstateの一行上のコメントが表示されるので一個上はそのステートを表す言葉にしておくと良いです。
;----------------------------------------------------------------------
; this is double atack. slide attack and upper attack.
;
; special punch
[statedef 1000]
type = S
movetype = A
phisics = S
anim = 1000
ctrl = 0
poweradd = 0
velset = 0,0

[state 1000, need at least 1 controller]
type = Null
trigger1 = 0
;----------------------------------------------------------------------



[state ]
 ステートコントローラを入れたい場合に書きます、一つのステートに最低一個は必要です。stateの後に半角スペースが必要でその後は説明文になるので基本的には何でも良いです。[state]で検索するとスペースがないのがわかるかも。
 説明は単に読み易さの為に書くのだけれど、書く場合はステート番号と何をしているか書いた方が良いです。ちゃんと書いておくと突然そこを見た場合でもどのステートの何の処理かすぐに分かります。エラー落ちの場合にはこれが表示されるので割と重要です。

;----------------------------------------------------------------------
[state 1000, Hitdef]
type = Hitdef
...省略
;----------------------------------------------------------------------

 読み辛くならない様に、特殊な事をしている場合以外は他の部分には説明を入れる必要はないです。
特に、忘れた時でも分かる様な説明を付けないと意味がないです。


trigger1
 trigger1は一つのステートコントローラーに最低1個必要です。


ChangeState
 別のステートに行く時に使います。ChangeState後はそのステートの始まりからになるので例え同じステートに移ってもTime=0になります。
 注意点としては次のステートが実行されるのでTime=0で次々とステートを移るとHitdefの様に1フレーム残っていないと効果がない物が発生しません。2つのステート間で移動する時もTime=0のままステート移動を繰りかえしてしまうと一回の処理で2500loopエラーになります。
 時はスクリーンパックに依存しますが、ラウンドコール後にroundstate=2になりstate 0へChangeStateしctrl=1になります。また、posも初期位置に戻ります。その為、ラウンドコール前にctrl=1になっていると自分若しくは相手に不具合が起きる恐れがあります。相手のステートに居る場合に-2ステートでChangeStateすると当然相手のステートを参照します。


SelfState
 ChangeStateと違って自分のステートを参照します、つまり相手のステートに居る場合に強制的に戻る事が出来ます。基本的にはReversaldefで相手に自分のステートを参照させている時に相手のステートに戻す場合に使います。
 投げ技、打撃投げの様に通常の怯み以外の特殊な動きをさせる場合にはこれで戻さないと最悪の場合相手が動かなくなります。投げの終わりに相手のダウンステートに戻したりしておけば大丈夫でしょう。相手が空中受け身を取れる前に行う必要があります。


-3,-2,-1ステート
[statedef -3]
[statedef -2]
[statedef -1]
 実行される順番は現在のステート、-3ステート、-2ステート、-1ステートです。当たり前ですがp1のステートを解決した後にp2のステートが解決されます。なのでp1側が基本的には有利です。ガードはp1が先に行動する都合で1フレーム不利だった気がします。
 自分の番(ターン)が来た場合に自分のステートに居る場合は-3、-2、-1の順に参照します。もしも相手のステートに居る場合は現在の相手のステート、-2ステートの順に参照します。
 このことから-2は常時実行ステート(常時監視ステート)、-3,-1ステートは準実行ステート(準監視ステート)と呼ばれています。なのでゲージ等の固有表示を-2以外の実行ステートで行うと特殊な攻撃の際に表示されなくなったりします。その場合にはpause中等に動くかどうかも設定しておく必要があります。通常は-1ステートでコマンドを受け付けるので何らかの理由で相手のステートで止まってしまった場合には立ち状態の様な共通ステートでも動けなくなります。

 デバッグモードでプレイヤー切り替えをして現在の状態を確認してください。標準では白色が自分のステート、黄色っぽい色が相手のステートです。

 そう言えば最近調べた所によると一番最初に実行されるのはラウンドの開始になる191ステートで191>-3>-2>-1>191>-3>-2>-1と言う具合になりました。相手のステートとの兼ね合いを考えるとステート実行後に常時実行なのでしょうか。最初のフレームでChangeStateをすると191>195>-3>-2>-1の様になりました。
 2ラウンド目からは5900から0になっているようです。

特別なステート
 主にガードステートや勝利、敗北のステート等のMUGEN本体が管理しているステートです。そのステートでしか効果がなかったりそのステートでないとちゃんと動いていると認識してくれないステートがあります。主に200未満のステートです。
 CNS Formatに括弧書きで書いてあるのが大体そうです。


stateno
 相手のステートに居てもちゃんと参照できます。但し相手のステートかどうかはこれだけでは判断できません。


prevstateno
 基本的にmugenの説明にある食らいステート中は0になります。その他の場合にしか参照できないので注意して扱う必要があります。statenoを変数に入れた方が確実です。


p2stateno
 食らった相手に自分のステートを参照させます。p2と書いてありますが食らった相手の事でヘルパーが食らっても本体となるプレイヤーに効果が行きます。reversaldef以外にも記述でき、hitdefで投げ等の特殊な食らい状態にしたい場合に使います。但しprojに付けたりすると酷いので普通は付けません。
 基本的に食らいの最後に相手をselfstateさせてあげないと動けなくなるので注意してください。ここら辺はヘルパーの扱いと一緒なので変なステートに移動して相手が留まらない様に気を付けましょう。
 尚、Hitoverrideしている相手には効きません。余談ですがTargetStateはHitがないので効きます(ガード中以外)。勿論SelfStateしてくる相手には効果はそれほどありません。


最後に
 ステートコントローラーの説明はしっかり読みましょう。
 疑問があったら色々作って実行してみると良いです。
 自分で試しやがれです!
line
・型
 pos x,pos yはfloat型ですのでposに代入する時はfloorしないとエラーになります(デバッグモードのエラー表示のみ)。posに入れるのは整数なのになんでこうなってるの。

 これについてはvelocityの項目で少し説明してありますが、小数点以下も一応管理されているので1未満のvelの加算で1を越えると動きます。1ドット未満では動かせないので仕方ないのでしょうが・・・。

・facing(1,-1)
facing=facingとすると逆向きになった時に向きを逆にするので向きが固定されます。

facingはProjctileにはありません。よって画像の向きを固定するには逆向きの画像を用意する必要がありますが、画像自体を増やすのではなくairファイル内で,,Hを付けたアニメを用意すれば良いだけです。

・postype
p1 キャラクターの中心が基準、前方下方向が正
p2 相手キャラクターの中心が基準、相手から見た前方下方向が正
front 前方の画面端上が基準、前方下方向に正
back 後方の画面端上が基準、前方下方向に正
left 左上が基準、右下方向に正
right 右上が基準、右下方向に正

基本的に"x"は前方、"y"は下向きが正です。

p1,p2,frontとbackは向きで方向が決まります
frontは前方端からbackは自分の後ろ側から出る物には使えそうです。カットインとか。
left,rightは基準位置が違うだけです。1p側、2p側で固定させたい場合に使います。でも片方あれば足ります。

・scale
拡大率を指定します。但し当たり判定は変わらないので1以外の倍率の場合は当たり判定の設定が少し面倒です。
同様にAngleDrawで角度を変えても当たり判定は変わりません。

・sprpriority(projsprpriority)
表示される順番を指定します。通常は0です。
キャラクターは1に設定されていますが食らった時は0になる様です。
数字が大きい程手前に表示されますがontopを指定した場合よりは手前になります。

・vel,accel
速度と加速度です。動かしたい場合に。

・FrontEdgeDist、BackEdgeDist
[Size]の.frontと.backに依存します。よってFrontとBackを足しても画面の幅にはなりません。
地面だと 画面の幅 = ground.front + ground.back + FrontEdgeDist + BackEdgeDist -1 です。

・ワイド対応
GameWidthを使わないでワイドに対応させる為にこんな記述をすると良いかも知れません。
(air.front+air.back+FrontEdgeDist+BackEdgeDist>320+1)

これは画面の幅が4:3の320より大きいかどうかを判定する式です。通常はgroundとairで異なるので小さい方を使った方が良いのですがまあこんな所で。4:3と16:9以外の幅になる事は無いと思うので(対応しても伸びるだけで変になりますし)この式を使ってscaleを変更すると簡単です。
1+0.125*(air.front+air.back+FrontEdgeDist+BackEdgeDist>320+1)

アホジンのキャラの幅は31と24なので少し省略して判定式はこれだけです。
(FrontEdgeDist+BackEdgeDist>320)
ワイドだと横が400位になるので幅が70以上あるキャラでなければこれで大丈夫でしょう。

※GameWidthについて項目を作ったのでそちらを参照してください。


・screenpos
 screenposで画面の幅を取得する方法です。screenposの座標軸はleftと一緒です。こっちの方はキャラの幅を気にしなくて良いので安心です。postype = p1です。

postype = p1
facing = facing
pos = floor(-pos x+screenpos x)*2,0



何か他に書く事があったような・・・
line
もしかしたらどこかに同じ記事があるのかも知れませんが
勝敗の表示をよーくみてください



右のキャラの「」の右側が空いていますね
これはラウンド3(だったかも)のドローで、最初のラウンドでカス雛さんが勝利しています。
つまり表示されていなくてもゲーム内ではちゃんと保存されていると言う事ですね。
でも見えないから後で見ても良くは分からない・・。

取りあえずドローだけど一個勝利がついているので(前のラウンドで見たので)システム的にはwin,drawで2本先取したと言う事になるようです、これで試合が終わりました。


疑問文で
line
AhojinGod0.30.6 操作カラーを追加。カス雛さん、Nameを修正。

並版はカス雛さんの修正だけなのでリンク先の古い記事を見てください。
>>Ahojin0.30.2 sm14121725

;---------- ---------- ---------- ----------
Name="AhojinGod"に修正。

1-4Pが操作可能に。
5-8Pは今まで通り分身ヘルパー無し。
9-12Pは今まで通り。

Life表示をタッグに対応。
カス雛さんが動かないのを修正。
エラー対策にけいおん先生のExplodをProj化。
KO演出とライフ表示を修正。
特パの音を小さめに修正。(sndファイル)
イントロ後に挑発を追加。
れいむ小とまりさ小を増やした。

;---------- ---------- ---------- ----------
1-4Pは人操作を考えてHitdefを使いますが本体がselfstate式ではないので当て身されます。
防御については、食らったダメージを1/10にしてあるのでちょっと硬めですがガードは基本しません。多分死ぬよね…
狂凶?そこら辺に入るかと思います。

5-8Pは以前と同じで分身ヘルパーが居ないだけです。とはいえ、そもそもヘルパーは殆ど動かない様に設定してあったので見やすくなる感じでしょうか。

9-12Pは動画とかでみたと思いますがそのままです。



カス雛さんが傾いていた件は何故かそもそも傾きっぱなしだったので修正しました。
音がうるさいので少し静かになる様にしました。
line
line

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