日常の戯言とかなんとか

スポンサーサイト

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

さて今年もあと4時間切ったんで

MUGENとかで今年やったことを総括してみよう

1月
昨年12月末から続行中の攻撃論外サバイバル投稿中

2月
攻撃論外サバイバル完結

3月
ちまちまと神キャラの技術を勉強開始

4月
論外以上最強の矛&最強の盾投稿開始

5月
PC逝去
ノートPC買う
論外以上最強の矛&最強の盾中止

6月
とくになし

7月
邪眼キラーを理解した
凶悪板新設騒動
嫌な…事件だったね…

8月
PC再構築
親変更理解
当ブログでMUGEN解説シリーズを編纂開始

9月
テストキャラ公開
ってもう3ヶ月も前のことなのか

10、11月
うどんげ改変キャラを製作開始したものの悪戦苦闘
自分の美的センスのなさに絶望する

12月
年内にキャラを公開するためにうどんげをあきらめて殺傷力に関する部分をカンフーマンに移植
普通カンフーマン公開


攻撃論外サバイバルっていろんな意味でターニングポイントだったなあって思った(小並感)
あれのせいで親捏造以上を「隔離枠」としてしまった感がすごいあると思う

とりあえず2013年はメモリ操作系技術を使った新しいステージでの戦闘ってのを確立させたいと思う

スポンサーサイト
2012-12-31 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

忘れないうちにメモしとく

変数をビット単位に考える
ヘルパーが本体に変数を書き込むかわりに
projIDを↑のビットに対応させたprojを出す
例:6という数を保存したい場合
100〜131のprojIDを変数保存用の領域としておく(MSBは131)
6=0b110なので、ID101、102のprojを出す
参照したいときはroot,numprojIDのビット演算で組み立てる

パッと思いついた利点:
60個以上変数を使える、ヘルパーを奪われない構造ならsysvarより安全か?
欠点
ノーマル化でアウト、本体explod管理なら参照や書き換えがちと面倒になるがより安全か?
そもそも作るのが面倒
環境依存しやすくなる

以上、バイト中に思いついたことの備忘録
2012-12-30 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

【MUGENストーリー】- A Midsummer Box Dream -【3/8】&【4/8】

 

一日開いたらから2回分まとめて書く立ち回り(


いや礼は言おうよ
自分で頼んだんだからさ
握り飯も欲しけりゃ奪えって言って奪われた結果なんだしさ
弱肉強食をうたっていながら結局自分が死ぬのは嫌だってすごい小物臭


で、案の定打ち解けてくるという
だが俺はこれをツンデレとは認めない

そして追っ手を殺せなかったまどか
殺せなかったというよりは興味すらなかったといったところか
死に急いでいるわけではないが生きる理由もない、ただ空虚なだけなんだろうね

どうやらさやかはこのあと恭介と鉢合わせするのは間違いなさそうだ
さやかェ…
2012-12-29 : 雑記 : コメント : 1 : トラックバック : 0
Pagetop

ああ、やっぱり駄目だったよ

あいつは寝落ちしてたからな

10時ごろにマクシームTASの比較見てたところまでは記憶にあるんだが…
改めて今日はもう寝る
2012-12-29 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

【MUGENストーリー】- A Midsummer Box Dream -【2/8】

3日目にして早くも毎日書くのは頓挫した模様

コメ返
前回の記事のヤンマー氏からのコメント

>その小十郎がどうなったかは、おいおいということで…(
>筆頭がまどっちを○せなかったのは、次回でより顕著になりますが、一瞬出たアレが起因してます
>ニコwikiにも書きましたが、自キャラは全員出番がありますよという壮絶なネタバラシ(ry
>どうゆうポジになるかを想像してみると面白いかもしれません。

よかった、出番のないあーうさんはいなかったんや…
それはとにかくティルをどうやって出すのか全く想像つかんねw



幸村があっけなさすぎてもうね
政宗がもはや修羅道に堕ちたのを理解したくはなかったんだろうか
というか真田家の人間が供もなしに上州の峠を歩くなよ(

政宗には史実でも千子姫っていう妹がいたらしんだが歳幼くして亡くなってしまったとのこと
史実と絡めてより場面の説得力を増しているねえ
ところでお前の目も天然痘が原因だろうが

2012-12-28 : MUGEN : コメント : 1 : トラックバック : 0
Pagetop

【MUGENストーリー】- A Midsummer Box Dream -【1/8】


たまにはこういう毎日やる系のものをやり遂げてみよう

閑話休題

なるほど政宗はこういう経緯だったのね
家臣にああ言われたら素直に従うしかないじゃないか
で、結局は家臣を見捨てて逃げ出したという自責の念にとらわれていると

まどかを放っておけないのはまどかを自分を重ねているのか、はたまた小十郎達への罪滅ぼしなのか

しかしこの「A Midsummer Box Dream」というタイトル
「夏の」というのはわかる
「箱の」っていうのは「ちっぽけな」とか「閉ざされた」あたりの暗喩なのかね大穴狙いで「MCS」
「夢」はいろいろ解釈ができるけどどうかねえ


それにしてもAユウキが出演できるのか心配だ
2012-12-26 : 雑記 : コメント : 1 : トラックバック : 0
Pagetop

【MUGENストーリー】- A Midsummer Box Dream -【0/8】

なんかものすごい力作でヤンマー氏も見たら感想書いてくれってすごい言ってたから書いてみる
まあ文学的素養なんて欠片も持ちあわせてないから大したことは書けんが


んで、率直な感想
あなた本当に初めてストーリー書いたんですか!?っていう

なんていうかね、音楽から画面構成からかなり洗練されてるように感じた
特に気になったのはストーリー動画において一般的な会話ウィンドウではなくビジュアルノベルっぽく画面外に小さくセリフを表示する形式
画面内に一切他の情報を表示させないことで一気に引き込まれる
さながら映画を見てるような感覚になった

ストーリーについてはまだイントロだからなんとも言えないけど、どうなるのかねえこれ
非道に徹しているんだけどまだどこか非道になれない主人公と身寄りのない少女(ほっといたらのたれれ死ぬ)が出会うっていう王道パターンだとは思うんだが

全体の雰囲気がいいだけに売られたのくだりでフリルたっぷりのスカートが見えてたりスク水アーマーで山中を歩いてたりの違和感がものすごいけど

ともあれこれから2週間楽しませてもらいましょう




2012-12-25 : MUGEN : コメント : 1 : トラックバック : 0
Pagetop

普通カンフーマン公開

mugen0_20121223214619.png

ねんがんの かみキャラせいさくしゃに なったぞ!

というわけで「普通カンフーマン」を公開します。
普通です。基本的な本体性能は普通のカンフーマンとほぼ同じです。

ダウンロードはこちらから
スレに書き忘れたけどパスは「mugen」です

普通じゃない点として全カラー共通でこんなことをやっています。
現時点でだいたい中位~上位神の下限くらいはいけると思います(りどみよりコピペ)

常時ステ抜け
試合後時止め
みらくる式Anim取得
永続ターゲット
超即死オメガトムハンクスキラー
死の宣告
アノマロカリスキラー
邪眼キラー
開幕完全並列混線(1P側のみ、2P側はただの並列混線6個)
即死返し
アーマー貫通砲
あゆあゆキラー
当身による超即死返し
奪ったヘルパーからの本体gametime式ステ抜け貫通
%nによる真Alive偽装(enemy,aliveで参照すると0になってます)
%nによるtime偽装(常時ステ抜けしますがtimeが動きます)
%nによるガード状態生成

カラー差は今のところは硬さの差だけです。

セイル氏の大会に出れる程度のものを目指したかったが間に合わんかった。
結局年末までかかってしまった。しかもキャラはただのカンフーマン

そのうち親変更とか入れる予定。



2012-12-23 : MUGEN : コメント : 2 : トラックバック : 0
Pagetop

一長一短

親捏造だとparentIDのアドレスの数値を合わせる必要があって%nだと書き換えるアドレスの直下3バイトが巻き込まれる
どうにもこうにも面倒だなあ
2012-12-20 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

Alive偽装その3

その2では、偽装の範囲を4バイト目まで拡張しました。今回はそれを踏まえたうえで負の数に偽装する方法を解説します。

まず、16進数では負の数をどう表現するかというと、2の補数という方法を用います。
2の補数については各自で調べてください。(説明してもいいけどもっとわかりやすい既存の解説がある上に1記事分くらい必要になるのでやりたくない)

負の数は必ず最上位ビットが1になります。これは、128以上の数値を書き込まなければいけないということを意味します。つまり普通にpersistentを付けただけでは負の数にすることはできません。
ところが、changestateは例外的に「persistentの値によらず、数値をpersistentで指定した値に書き換える」という処理になります。
では、Alive偽装ステートの553個目を以下のようにしてみましょう。
[state 553]
type = changestate
trigger1 = 1
value = 0
ignorehitpause = 1
persistent = 128

1回読み込むとAliveが0になり、もう一度読み込ませると128になりました。
では、553個目をignorehitpause付きのnull、556個目を上のようにしてみましょう。すると今度は-2147483648になったはずです。これを16進数で表すと0x80000000、2進数で表すと0b10000000,00000000,00000000,00000000となります。

では、これの応用でAliveを-1にしてみましょう。まずは超即死を読み込んでAliveを0にします。
-1は16進数だと0xFFFFFFFFです。0xFF=255なので553~556個目をchangestateにして、persistent=255とします。
そして、255に書き換えたところをまた通過してしまうと0になってしまうので一度しか実行されないようにトリガーを工夫するとこのようになります
[state 553]
type = changestate
trigger1 = alive = -256
value = 0
ignorehitpause = 1
persistent = 255
[state 554]
type = changestate
trigger1 = alive = -65536
value = stateno
ignorehitpause = 1
persistent = 255
[state 555]
type = changestate
trigger1 = alive = -16777216
value = stateno
ignorehitpause = 1
persistent = 255
[state 556]
type = changestate
trigger1 = alive = 0
value = stateno
ignorehitpause = 1
persistent = 255

Alive偽装についての解説は以上です。
あとは各自で偽装したい値について考えてみてください。
また、今回使ったステコンオーバーフロー中の挙動は親変更などの際に非常に重要になりますので、覚えておいて損はないかと思います。

2012-12-16 : MUGEN解説 : コメント : 0 : トラックバック : 0
Pagetop

Alive偽装その2

その1では、最も基本的な0~127の範囲でAliveを書き換える方法について解説しました。
ここでは、それ以外の範囲の書き換えについて解説していきます。

なお、この記事では一部の数値を16進数で扱います。記事中の16進数で表記されている数値は頭に「0x」と付けてあります。16進数ってなんぞやって人はこのへんあたりを参照したらいいんじゃないかね。

Aliveやgametime、damageなどのMUGENの内部で扱われている整数はすべて4バイトの整数で格納されています。(-2147483648~2147483647、0x00000000~0xFFFFFFFFの範囲です)
超即死の記事でステコン数553~556の位置にAliveの数値が格納されていると言いましたが、これをより細かくみると、553個目にはAliveの1バイト目、554個目には2バイト目、555個目には3バイト目、556個目には4バイト目の数値が格納されています。
無題

その1では553個目のステコンのみにpersistent=128を付けましたが、554個目にのみ付けた場合はどうなるでしょうか。553個目に
ignorehitpauseを付けた場合、32512になったかと思います。まず、1バイト目は1なのでステコンが実行されて0に、その次に2バイト目は0なのでpersistentの効果で127になります。32512=256×127なので、ちゃんと書き換わっています。その後も読み込むごとに256ずつAliveが減っているのがわかります。

では、1~4バイト目をまとめて書き換えて、例えばAliveを2137401907(0x7F662A33)にしてみます。
最も簡単な方法は、超即死を読み込んでAliveを0にしてからpersistent=52,43,103,128と指定しているステートを1回読み込むことです。
記述例は以下のようになります。
[statedef 10000,超即死ステート]
~中略~
[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
[state 554]
type = null
trigger1 = 1
ignorehitpause = 1
[state 555]
type = null
trigger1 = 1
ignorehitpause = 1
[state 556]
type = null
trigger1 = 1
ignorehitpause = 1
[state 557]
type = changestate
trigger1 = Alive
value = stateno
ignorehitpause = 1
persistent = 256
[state 557]
type = changestate
trigger1 = 1
value = 10001
ignorehitpause = 1
persistent = 256

[statedef 10001,Alive偽装ステート]
~中略~
[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 52
[state 554]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 43
[state 555]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 103
[state 556]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 128
[state 557]
type = changestate
trigger1 = 1
value = 10001
ignorehitpause = 1
persistent = 256

最後に、Aliveを負の数にする場合が残っていますが、この記事も長くなってきたのでまた次の記事で解説します



2012-12-16 : MUGEN解説 : コメント : 0 : トラックバック : 0
Pagetop

Alive偽装その1

Aliveを0以外の任意の値に書き換える技術です。
これを用いることでenemy,Alive = 1のような条件でNoKOをしている相手などを倒すことができるようになります。

基本的には超即死の応用で、ステコンオーバーフローを用いてAliveを書き換えます。

①1~127に書き換える

まずは超即死ステートを用意し、ステコン553個目以降を以下のように書き換えてください。

[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = 128

[state 554]
type = null
trigger1 = 1
[state 555]
type = null
trigger1 = 1
[state 556]
type = null
trigger1 = 1

[state 557]
type = changestate
trigger1 = 1
value = 0
ignorehitpause = 1
persistent = 256

次にこれをステートを固定したヘルパーで1回読み込ませてください。
画像のようにヘルパーのAliveは0になったかと思います。
Alive=0.png
ここで、もう一度読み込ませます。
Alive=127.png
すると、Aliveは127になりました。
これ以降はもう一度読み込ませると126、125…とだんだん小さくなっていくはずです。

ステコンオーバーフロー発生時は「ステコンが実行されるとき、その箇所の数値が1以上なら数値を1減らす。0ならそのまま」という処理になります。また、『persistent』は「ステコンが実行されるとき、その箇所の数値が0なら(指定した数値-1)に数値を書き換える」という処理になります。
これらの処理により、Aliveが1のときは1減らされて0、Aliveが0のときはpersistentの処理で(128-1)=127という現象が起きました。ただし、persistentに129以上の数値を指定すると動作しなくなるので指定してはいけません。

ここまでの説明をふまえ、Aliveを任意の正の数にするためにはこのように記述します。

[state 553]
type = null
trigger1 = 1
ignorehitpause = 1
persistent = (任意の数値+1)

[state 554]
type = null
trigger1 = 1
[state 555]
type = null
trigger1 = 1
[state 556]
type = null
trigger1 = 1

[state 557]
type = changestate
trigger1 = Alive != (任意の数値)
value = stateno
ignorehitpause = 1
persistent = 256
[state 557]
type = changestate
trigger1 = 1
value = 0
ignorehitpause = 1
persistent = 256

changestateに指定されているpersistentはおまじないのようなものだと思ってください。(理屈は知らなくてもとりあえず大丈夫です。気になる人は「行動フラグ」で調べてみてください)

それ以外の数値にAliveを書き換える方法については、新しく説明が必要なことも多いので別の記事に記載します。

2012-12-16 : MUGEN解説 : コメント : 0 : トラックバック : 0
Pagetop

キャラの方針

親捏造と%nは入れよう
隔離技術がどうたら〜とかある程度までの普及を目指している自分が言ってどうするんだか

だけどまあ節度を持ってやるってことで、「自分の領域以外の書き換えはしない」とでもしようか
さて今年中に間に合うかねえ
2012-12-15 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

%nの平和的利用法

http://mugeneinzbern.blog.fc2.com/blog-entry-1555.html
http://nameless311.blog.fc2.com/blog-entry-794.html

まず%nってなんなのってところから

%nってのはC言語の書式指定子の1つで、「それまでに出力したバイト数を指定したアドレスに書き込む」というものです

例えば
int main(void){
 int a;
 printf("hello,world%n",&a);
 printf("文字数は%dです",a);
 return 0;
}
こんなプログラムを実行してみたら、aの値は「hello,world」の文字数の11になります

で、MUGENだとどうなるか
DisplayToClipboardがC言語のprintfに相当します
だから%dとか%fとかで数値を表示したりできるわけですが

で、アドレスさえ指定すれば好きな場所に好きな数値を書き込むことができる
例えばデバッグキーの押下フラグを管理しているアドレスを指定すればF1でもF5でもできるし、相手のAliveのアドレスを指定すれば直死だし
これが「なんでもできる」ということの正体ですね

ただまあ直死撃ちこむだけだと芸もないしぶっちゃけつまらん
せっかく何でもできるんだからちょっとは平和的利用法を考えてみようじゃないか

それで、私がざっと思いついた限りではこの2つ

①ステコンオバフロの代わりに使ってファイルサイズを軽量化
相手の領域ではなく自分のAlive領域に限定して使えばいい
Alive偽装も凍結解除も親変更もnullステがいらなくなるからそのぶん軽くなる
現在の神キャラのファイルサイズの6割は全領域親変更のせいだからこれは大変なことだと思うよ

②比較的穏やかな攻撃方法としての利用
ぶっちゃけ試合中にF1使う程度なら凶悪でもなんでもない(ただし試合後は自重しとけ)
ハイパー扇奈とかブラックコアを消し飛ばせるといったってねえ、親変更が見つかって鬼巫女が消し飛ばされたのと大差ないと思うよ
そもそもヘルパー押し付けや本体親変更のように相手本体に想定してないルートからの干渉が可能になるものが受け入れられてF1押下が拒絶されるのはなんか変でしょ

平和的利用に限定するならだいたいこのへんに集約されるんじゃないかね
とりあえずできることの上限だけ見て脊髄反射で全部拒絶するのは非常にもったいないと思うよ

これから導入を考えてる人へアドバイスするなら
「%nで何をさせたいか、やりたいか」というコンセプトをしっかり決めて、それに沿って導入すべし

って感じかね
2012-12-11 : MUGEN : コメント : 0 : トラックバック : 0
Pagetop

今年もあと3週間

そんなわけですが

来年はもう就職だのなんだの考えなきゃいけない歳なんだよなあ
全然プランもないし本当にどうしたらいいもんか


あとMUGENキャラ公開
テンプレ中位神程度の殺傷力でいいなら記述のテストに使ってたKFMを調整して3日ありゃ公開できるんだがさすがにそれは許されないだろう
せめて上位神チャレパーフェクトという水準は満たしたい
そしてキャラの外見もいろいろやらにゃいかんから今年中にいけるかどうか限りなく微妙なライン

まあやれるだけのことはやってみる
無理だったら2013年の大型新人に期待してくれ
2012-12-09 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

オーバーフロー計算式

できたっぽい
防御100未満オーバーフロー
(-)2^31/(100/防御)

防御100以上オーバーフロー
v0=ceil(防御/100)
v1=ceil(防御/v0)
(-)2^31/(100/v1) *v0

これであってるよね?
帰ったら実験してみるか
2012-12-05 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop

おk把握した

どうやら混線以前の技術の解説も需要があるようだ

書くの簡単だしそのうち書いとこう
どうにも最近は「MUGENキャラ製作の延長で神に挑む」よりも「MUGEN触ったことないけど神作りたい」のほうが多いようだ
まあ俺もそうだったが
2012-12-03 : 雑記 : コメント : 0 : トラックバック : 0
Pagetop
ホーム

プロフィール

@ひたち

Author:@ひたち
「@」を忘れるべからず
読みは普通に「ひたち」でいいんじゃないの

検索フォーム

アクセスカウンター

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