tskUpdater

一応こんなツールを作る事が夢だった。
正確には、このツールみたいな機能を汎用的に使えるツール作成が、だけど。

tskUpdater
正式名称:天測観自動更新ツール
非想天則のVerUPごとに奔走せざるを得ない天測観作者に救いの手を差し伸べるツール。
自動的にSWRSAddr.ini用の数値を算出して更新してくれる、やったね!
使い方その他は中のReadme.txt参照。

これth123_aiにも対応させられたら便利なんだけどね。
さすがに量が違うから、ハードコーディングではなく、スクリプト言語でも乗っけてやれるようにならないと厳しそう。
正規表現ライクなバイナリ表現でも使えれば一番なんだけど、そんな事果たして自分に出来るのか……

オブジェクトのHPとか調べようと思ったけど

時間が無かったので延期になりました。

一言にHPと言っても内部的には3種類あるとか
いつのまにかintからshortになってただとか
なぜかマイナス値だとか
なぜか最大HPはdoubleだったとか
少数点系のアセンブラが読めなくてorzしたとか
そもそもobjがよく読み外しておかしなことになってるのいい加減直せよとか
そんなこんなで2時過ぎましたです、はい。

あー、そろそろ1.10に呆けるのやめて、AI開発戻らないとなー

割れた霊力球の回復速度について

前回調べている途中に偶然判ったので、メモ代わりに詳しく書いておく。

霊力球回復ゲージ(割れた後の赤いゲージ)は数値に直すと最大で4800まで溜まる。
1Fごとに
天候:天気雨の効果を受けているなら50
それ以外で霊力球が割れている個数が
1個なら5
2個なら7
3個なら10
4個なら18
5個なら28
だけ増加していく。
4800を超えたら0に戻り、代わりに霊力球が一つだけ回復する。
この回復は時間停止(咲夜の世界、スペル暗転など)の影響は受けるが、霊力回復停止時間(霊力消費技の使用、誤ガードなど)の影響は受けない。

簡単に表にまとめると

割れ霊力球復活必要フレーム数
1個割れ 2個割れ 3個割れ 4個割れ 5個割れ 天気雨
960F
(16秒)
686F
(11.4秒)
480F
(8秒)
267F
(4.5秒)
172F
(2.9秒)
96F
(1.6秒)

こんな感じ。

例によって、この知識がなんの役に立つかは知らない。

霊力回復開始フレームについて、その3

前回のとおりグリモワールの変更点について。

説明する前にまず平均をだすとこうなります。

グリモア 0 1 2 3 4
v1.03回復量 6 7 8 9 10
v1.10回復量 6 6.5 7.25 8.17 9.25

見事な下方修正ですね、特に使用枚数少なめの落差が大きめ。

確認を兼ねてv1.03の仕様
・霊力球一つは200
・1Fごとの基本回復量は6
・雹なら更にプラス6回復
・グリモワール一つにつき回復量プラス1
(上の平均値表は基本回復量込みの値です、念のため)

で、なんでこんな中途半端な値なのかというと、グリモワールの回復量プラスの計算式が
2Fに一回グリモワール使用個数分だけ回復量+1
2個以上使用で、4Fに一回グリモワール使用個数-1だけ回復量+1
3個以上使用で、6Fに一回グリモワール使用個数-2だけ回復量+1
4個使用で、3個ボーナスとは3Fずらして6Fに一回回復量+1
こういうルールに従って回復しているからです。

酔狂な人向けに、回復量の推移を12Fほどまとめた表なんぞ作ってみたのでどうぞ
回復量推移表

更に酔狂かつプログラマーの人向けに実際に動いているであろうコードを見せるとこんな感じ。


rei = 6;
if(grimore >= 1){
	if(battle_time%2 == 0){
		rei++;
	}
}
if(grimore >= 2){
	if(battle_time%2 == 0){
		rei++;
	}
	if(battle_time%4 == 0){
		rei++;
	}
}
if(grimore >= 3){
	if(battle_time%2 == 0){
		rei++;
	}
	if(battle_time%4 == 0){
		rei++;
	}
	if(battle_time%6 == 0){
		rei++;
	}
}
if(grimore >= 4){
	if(battle_time%2 == 0){
		rei++;
	}
	if(battle_time%4 == 0){
		rei++;
	}
	if(battle_time%6 == 0){
		rei++;
	}
	if(battle_time%6 == 3){
		rei++;
	}
}

else ifでは無いのがポイント。

なんでこんな方法で実装されているのかは謎ですが、内部的にはほぼこのコード丸々使った感じで動いています。
ま、小難しい事は置いといて、0.8倍程度に弱化し枚数重ねるごとに効果量上昇とだけ覚えておけばいいでしょう、どうせ数値が小さすぎて体感は出来ませんし。

霊力回復開始フレームについて、その2

その1から1.10になって変わった事とか。

「白楼剣」:
1.03:回復停止60F(霊力全消費)
1.10:回復停止300F(霊力2個消費)

「宵越しの銭」:
1.03:回復停止120F
1.10:回復停止160-手札中の銭の枚数×20F(1枚なら160-20*4=140Fとなる)

パチュリーだけ回復速度高いのはそのまま、基本45F/60F/120Fなのもそのまま。
グリモアもなにやら回復速度が擬似乱数生成になったようで、以前以上に微妙になったようなのですが
詳細が判明しないのでまた明日にでも。

アリスの速度関連情報詳細とか

アリスDBの大幅な速度上昇のせいか速度変更報告が数多く上がっていたので。
アリススレに投下した物ですが、メモ代わりにこっちにも張っておくだけ張っとく。

風雨:
基本的に初速にのみ影響する。
速度が1.4倍になる。
v1.10では天狗団扇と重複し、重複した場合は(元速度×風雨)+天狗団扇分となる。
(例:LvMAX天狗団扇+風雨時の歩き速度は6*1.4+2=10.4となる)
v1.03では重複せず、常に風雨の効果が優先される。

天狗団扇:
基本的に初速にのみ影響する。
v1.10では一つごとに速度0.5加算(絶対値)し、風雨と重複する。
v1.03では一つごとに速度1.05%ずつ加算され(4枚で1.2倍)、風雨と重複しない。

徒歩:
速度6

前D:
5F目から移動開始
初速10
以後0.5刻みで9まで落ち、以降入力が続く限り9
停止モーション開始以後は0.5ずつ減速。

後D:
7F目から移動開始
初速10、24F目(移動開始から17F目)から2ずつ減速。

斜めジャンプ:
X速度5

斜めハイジャンプ:
X速度9

前D>9HJ:
X速度9

前D>8HJ:
X速度2

空中ダッシュ:
X速度8.5

4結界:
後ろDと変わらず

6結界:
速度5

1結界:
X速度9

空中4結界:
X速度8.5

空中6結界:
X速度8.5

飛翔:
速度12
風雨天狗団扇影響なし

DA:
v1.03とv1.10で速度変更はなし
初速15
1~14F目まで初速維持
以後1F0.75ずつ減速する。
風雨天狗団扇影響なし、たとえ速度16でも初速は必ず15。

DB:
初速は直前の行動の速度か7.5のうち高い方
v1.10では1~19F目まで初速を維持し、以後1F0.5ずつ減速する。
v1.03では初速維持が無く、2F目から1F0.25ずつ減速する。

DC:
v1.03とv1.10で速度変更はなし
初速は直前の行動の速度か10のうち高い方
初速維持は無く、2F目から1F0.35ずつ減速する。

追記:
天狗団扇が絶対値上昇であるため、元の速度が遅いものほど効果がある。
前Dの速度発生が5Fなので、DBは前D発生後の方が初速が上がりより遠くまで届く。
これを利用して、最速DBと微ディレイDBで相手をかく乱するのもいい。
風雨や天狗団扇を積めばDCでも可能。
天狗団扇4+風雨の速度16DBは笑えるぐらい伸びる(具体的には画面端からステージ全体の3/4ほどすべる)
速度向上時は効果を受けにくい前Dや飛翔ではなく、9J/9HJ/空ダ/DBあたりが効果的。
地味に結界の速度にも影響するので、天狗団扇積んでおくと抜けやすくなるかもしれない。

th123_ai(仮)の進捗報告その27

1.10対応版th123_aiは作らないといったが、すまん、ありゃあ嘘だった。

th123_ai.zip@ver0.93
・環境変数my_win_count、enemy_win_countを実装
・非想天則1.10に対応

win_countは動作テスト中に、勝利数の取得数がないことに気づき急遽追加したもの。
初版からあった機能なのになぜインターフェースがなかったのか、それは自分自身にも謎。

1.10対応は言うまでも無く、アドレスマップの対応などなど。
SwrsAddr.iniの中身更新されているけど、内部定義値も更新しているのでなくとも動作します。
あくまで現在はこの値使ってますよ的な。

まさかの1/4日で完成、自分自身でもビックリだ。
別に楽だったわけでも調子良かったわけでもないんだけどね。
さすがに3度目ともなると経験値がたまってくるという話なのかもしれない、あと昨日の16時間睡眠パワー。

タイミングがいいのか悪いのか

これからpythonエンジン実装しようという段階で非想天則1.10パッチ着ましたね
そのせいで開発そっちのけでパッチ変更点一覧なんてものに手を出してしまったり。
ver1.10 パッチ変更点一覧
まぁ、アリスの分、それもパターン定義ファイルから持ってこれる範囲だけなんですけどね。

さて、一応状況的には1.10更新入れられなくもない状況
むしろ修羅場フラグが見えているので、今手を付けないと数ヶ月単位でほうっておく事になりそうな状態ですが、さて。
いや、すぐパッチ来るだろうから出す気はないって考えは変わらないのですが、AIないと検証が面倒で(ry

th123_ai(仮)の進捗報告その26

本日の睡眠時間=16時間

th123_ai.zip@ver0.92a
・ver0.91より環境変数の小数点以下が切り捨てられていた不具合の修正
・ver0.91eの修正によりリロード時自動的に非想天則がアクティブにならなかった不具合の修正

一つ目は素で気づいてなかった。
何にも疑問を抱かずにint二変換していて、そういわれてみれば元の値はdoubleでしたね、みたいな。
指摘されるまで気づかないとか馬鹿すぎて困る。

アクティブは91eの修正で再発しただけ、俺馬鹿すぎ。
今度こそ直ってるはず。

th123_ai(仮)の進捗報告その25

今日は0時で切り上げてぐっすり寝るはずだったのに、どうしてこうなった!

th123_ai.zip@ver0.92
・関数get_key_stat2、get_key_map2を実装

テストもあらかた終わり、人柱と言うほど安定性が悪くはないことは確認したので正式版にしようと思ったものの
何も変更点がないのに出すのも変なので、何かしら機能追加できないかなと適当にメモリーエディタでごにょごにょしていたら
キー入力を保存しているらしきアドレスを発見したので実装。
これで相手のキー入力も読めるようになったので、自己学習型AIの開発なんかに役立つんじゃないでしょうか。
あとは相手の入力から統計とって、試合後にお説教するようなAIとか?

にしても、本当に行き当たりばったりで実装しているなー
命名規則とか色々適当すぎる。