2007年08月31日

工体研究所AI私的修正版。#19

工体研究所AI rev103+patch19

■更新
doc/link.batを削除

これだけなので、アップデートする必要性はかなり薄いです。
posted by silica at 23:34| Comment(1) | TrackBack(0) | 工体AI | このブログの読者になる | 更新情報をチェックする

2007年08月20日

紹介された。

http://gemma.mmobbs.com/test/read.cgi/ragnarok/1186933547/649

Σ(・ω・ノ)ノ
レーサー集計がご丁寧な解説とともにGvスレに紹介されるとは…
ソースを見られると恥ずかしいスクリプトですが、
人様のお役にたてば。

> 25行目、デフォはパスが間違っているようなので注意。

良く見たら#{world}が足りない。…今まで気付かなかった;
これを修正してアップしなおしました。
RoCha!は"log_#{world}_#{today}"でしたか…。
簡単に切り替える方法を考えたので少し修正してアップしました。
こんな感じ。ろ++とRoCha!!以外は知らないので未サポート。

logformat = {
"ropp" => "#{today_under}.txt"
"rocha" => "log_#{world}_#{today}"
}

#{logformat[logfix]}を埋め込む。

posted by silica at 22:55| Comment(0) | TrackBack(0) | 攻城戦 | このブログの読者になる | 更新情報をチェックする

2007年08月15日

テーブル読み書き関数。

テーブルを読み込んだり保存したりする関数

http://winter.sgv417.jp/alchemy/download/lib/
tablesave.lua テーブル読み書き
table.save
table.load
tabletest.lua テーブル読み書きをテストする関数

元: http://lua-users.org/wiki/SaveTableToFile
table.save-0.94.lua(Lua5.1版)をLua5.0用に修正
※#tablesをtable.getn(tables)に修正しただけ

これを使うことでテーブル内容をファイルに書き出して
中身をチェックしやすくなります。
また、テーブル内容を保存(記憶)して読み出すことができます。

table.sort
Lua5.0.3のソースコードを直接読むと以下のことがわかります。

・クィックソート
・lua-5.0.3\src\lib\ltablib.cで定義
・lua-5.0.3\test\sort.luaにLua版定義

Luaマニュアルには「Lua自身で実装可能であるが、便利さやパフォーマンスのためにCで実装されたものもある(例えば sort)」と書いてあります。

sort.luaを少しいじればほぼ実現可能そうですね。
posted by silica at 14:59| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

解説更新とリンク追加。

AI機能比較表AI資料/AIAI資料/Luaの解説を修正・訂正しました。

ホムAI研究所 @ ウィキを本ブログのリンクとThe Winter's Tale's RSS Readerに付け加えました。
以下のAIがあります。

・BurningGvAI
・ニヨAI
・rhapsoAI+

一番下のAIは、元AI作者の見解を見てから使ってください。
posted by silica at 14:22| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

2007年08月14日

標準拡張ライブラリ。

チャットコマンドライブラリのために足りない標準ライブラリや
追加ライブラリ table.lua を作成しました。

table.sort以外は全て再現してあります。
一番苦労したのはtable.concatです。
Luaマニュアルの通りに動くように色々修正しました。
それと、ファイルコピーos.copyと、0バイトファイル作成os.touchprintfsprintfなどを追加しています。

そしてそのライブラリを使ってROクライアントのデータを
抜き取るプログラムを作り直しました。

http://winter.sgv417.jp/alchemy/download/lib/

mobcsv.lua mobdata.luaの中身をCSV形式に出力します。
table.lua Lua標準ライブラリと拡張です。
gcinfo.lua gcinfo()で取れるデータ(メモリなど)を出力します。
gcinfo_lua502.txt Lua5.02日本語化パッチ適用済の内部情報
gcinfo_AI.txt ROクライアントの内部情報
getfenv.lua getfenv(1)で取れるデータを型毎に分けます。
getfenv_lua502.txt Lua5.02日本語化パッチ適用済の内部情報
getfenv_AI.txt ROクライアントの内部情報

※どちらも、table.luaの関数が混じっていますのでそれを差し引いてください。

調べてわかったことは、ROクライアント仕様にまとめました。

以後は予定です。現時点では旧バージョンしか置いてありません。
チャットコマンドライブラリは、標準追加ライブラリが足りないと作るのが大変だと痛感させられました。

解説書:
http://pc3merchant.net/ai_antenna/?AI%BB%F1%CE%C1%2FCCL

ダウンロード:
http://winter.sgv417.jp/alchemy/download/chat/

現時点ではテーブル型関数 chat を定義して使う形を目指しています。
最終的にテーブル io のファイルディスクリプタと同じ使い方が
可能になるようにする予定です。
posted by silica at 20:48| Comment(0) | TrackBack(0) | チャットコマンド | このブログの読者になる | 更新情報をチェックする

2007年08月13日

レーサー集計 ver1.15

レーサー集計ver1.15

本バージョンより、砦取得現況表を正式サポートします。
砦取得現況表は、虹色想雫にある攻城速報@ろらじおのRuby版です。

ROと同時に使用してもROが強制終了されません。

デバッグを手伝ったり、ログをくださった方ありがとうございます。
改行(CRLF)や「#」がどのように働くか分かるようになったので、
対策出来ました。

今回頂いたログは、ろ++やRoCha!!でも改行がCR(\r)ではなくCRLF(\r\n)になっていました。
ですが、手元にある別のろ++やRoCha!!で作成されたログはCR(\r)が混じっていてこれは過去に対処済みでした。
今回はそれとまた違ったパターンのため、うまく見分けられませんでした。

ROサーバーでは、名前に"CRLF"がついた形式で名づけられてもクライアントに送られてくるのは"CR"だけだったのが今は"CRLF"そのまま送られるようになってきたのかな?
そうとでも考えないとわからないですね〜。
更新履歴
posted by silica at 22:48| Comment(26) | TrackBack(0) | 攻城戦 | このブログの読者になる | 更新情報をチェックする

2007年08月01日

レーサー集計 ver1.14のばぐ。

・timetable.cgiの実行エラー
・Rocha!!形式ログ処理バグ
・fort.txt仕様

今回のコメントレスは個人的メモも兼ねて日記の方にさせていただきます。

■フッターのこちら↓

こちらで実際に出力させた時はちゃんと表示されていました。

■ギルド名に#が複数ある場合

A: 「レーサーギルド##」→『レーサーギルド\n\n』
B: 「#レーサー#ギルド#」→『\nレーサー\nギルド\n』

これをRoCha!!などで正確に記録したログファイルの中身を見ると…
以下の通りに記録されるようです。

A:
砦 [Valkyrie Realms 3]を [レーサーギルド(改行その1)
(改行その2)
] ギルドが占領しました

B:
砦 [Valkyrie Realms 3]を [(改行その1)
レーサー(改行その2)
ギルド(改行その3)
] ギルドが占領しました

”砦 []〜[]ギルドが占領しました”からなる複数行を
1つの行に再構成してから処理しないといけないようです。
(今までは改行1回でアナウンス1回と考えて設計したため。)

ここの処理はgvglib/log.rb log_read_rocha(path)関数で
全て行われています。
この関数の中身を変更するだけで多分okです。
実際の修正はもう少しおまちください。
複数行にわたって処理を記憶させる方法がちょっと思いつかないので…。

・まとめ
ろ++だとログには改行1個までしか記録できないみたい。
ログの正確性ではrochaの方が優れているようです。

■fort.txt
・フォーマット
攻城速報@ろらじおのfort.txtと、レーサー集計の
fortlist_YYYYMMDD.txtは、完全互換です。
したがって、レーサー集計を実行させて作成させることが出来ます。
実はこれがなくても動くようになっています。
その場合は前回の結果が反映されなくなりますが…。

・作成方法
前回のログをracer.rbに読み込ませて実行
→WORLD/log/fortlist_YYYYMMDD.txtとして作成される
WORLD: フォルダ名(ワールド名)
YYYYMMDD: 年月日。前回(スクリプトを走らせた日から見て1週間前)
が自動指定される。

・自動実行
パスを指定していれば、毎回の攻城戦終了or開始前に
設定済みのracer.rbをバッチファイルで起動するだけで
準備完了します。Windows系OSならタスクスケジューラに
そのバッチファイルを入れて自動実行させると楽ですね。
posted by silica at 19:05| Comment(9) | TrackBack(0) | 攻城戦 | このブログの読者になる | 更新情報をチェックする

2007年07月30日

自動ハイドAIって出来るの?

狩り場でハイドしつつホム放置狩りをしている人がいると聞きました。
正確にハイドを繰り返してるところから自動ハイドをしているっぽい。
それをホムAIで出来るの?と聞かれたことがあるので、「十分可能」とだけ。
実際に自動ハイドをAIで実現する方法を軽く考えた結果、以下が最低限必要になると見当をつけました。
・ハイドのスキルIDNo.
・スキルタイマー
・HP/SPチェックその他
これをうまく書けば5行程度に圧縮できるっぽい。(かなり無理やりだけどね。)

ついでに言うと、スキルIDを書き換えれば自動サイトもできちゃうことになります。
攻城戦中、定点で張り込むときに便利なのかもしれません。

最後に、アイテムとして以下の2点が必要になります。
・フェンクリップ(ハイド詠唱妨害されないために)
・ハイドクリップ

と色々考えたものの、実際に動くものを作る予定はないです。
posted by silica at 22:45| Comment(0) | TrackBack(0) | ホムンクルス | このブログの読者になる | 更新情報をチェックする

QM鎧考察そのに。

ダメージ受けるとQMを出す方は実は鎧ではなく「肩」装備だと知りました;

実際のレーサーの話によると、速度減少受けてもASPD189維持できる時はあえてQM肩装備して、攻撃受けると巻き込むようにしている人もいるそうです。
ホムレーサーの利点は、ホムがQMの範囲外に移動可能なことなので
ハリネズミのように自衛手段として持つといいかもしれません。
シーズモードでホムにQMの効果が掛かるかはまだ確認してませんが。

ホムンクルスの攻撃射程は、実は2あるようです。
これを利用すると…

★:エンペリウム
◆:ホムンクルス
■:プレイヤー
◇:QM鎧のQM範囲

◆□□□□
□◇◇◇◇
□◇★◇◇
□◇◇■◇
□◇◇◇◇

さらにプレイヤーとホムの位置を対称形にすると。

◆□◆□□
□◇◇◇◇
◆◇★■◇
□◇■■◇
□◇◇◇◇

他の方向はこれを90の整数倍回転させるだけですね。
この位置からでもホムはエンペを攻撃出来るのです。

レーサーAIの基本はすでに完成しているので、あとはQM肩を考慮した自動移動を追加する程度です。
といっても結構処理する内容が多いため、自動移動を実装するためには100~200行さらに追加しないといけない予感。
posted by silica at 22:29| Comment(0) | TrackBack(0) | RacerAI | このブログの読者になる | 更新情報をチェックする

2007年07月23日

ホムレーサー考察。

レーサーAIでのブレイクを軽くまとめました。

青いリボンで結びます - ソロケミストがレースの常識を覆したとき…より:

World: Lydia
Date: 2007/07/22

[AIてすと中by青リボン] (8)
20:04:28 - 20:08:27 (0:03:59) Britoniah Guild 4
20:12:03 - 20:20:35 (0:08:32) Luina Guild 4
20:19:01 - 20:21:06 (0:02:05) Britoniah Guild 4
20:45:29 - 20:47:46 (0:02:17) Britoniah Guild 4
21:12:42 - 21:14:48 (0:02:06) Luina Guild 2
21:23:42 - 21:25:06 (0:01:24) Luina Guild 2
21:28:13 - 21:29:56 (0:01:43) Luina Guild 2
21:58:54 - 22:00:00 (0:01:06) Valkyrie Realms 5
※()内は防衛時間

ソロレーサーの割には、防衛時間が少し長いですね。
最短ですら1分以上。平均2分程度、つまりブレイクしてから1分は
誰も来ていないことになります。
レポートを見るとこの時大体は競合相手がいない、つまりアナウンスが流れて初めてレーサーが来る、という状態のようです。
気づいて砦前に来るまでに約1分あると。

続きを読む
posted by silica at 19:53| Comment(5) | TrackBack(0) | RacerAI | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。