日記/2006-09-06 のバックアップ差分(No.1)

お名前:

  • 追加された行はこの色です。
  • 削除された行はこの色です。
なんか一部AI作者同士で情報や感想のやりとりが活発になっていて、うれしい気がする。

----

[[安っぽいAI>http://www.uzukisyou.nobody.jp/]]の人が最近のブログで[[AIごとのGV対応>http://yasukemi.blog49.fc2.com/blog-entry-27.html]]について検証しています。~
友瀬自身がGv・Pvにまったく興味がないので、そっちの方向については何もコメントできないしする気もないですが・・・Glenelgの解析に対するコメントが興味深かったので、これについて個人的な意見を。
>全体的にローカル変数同士でのデータ受け渡しが多く、関数もやたら細かいため、処理があっち行ったりこっち行ったりしてて解読に骨が折れます
>・゚・(ノД`)・゚・ 
>ただ、一度仕組みを熟知すればメンテや拡張は簡単そうだと思いました 

狙い通りに読まれていただいたようで。~
関数とその中のローカル変数多用というのは言ってみれば「処理のブラックボックス化」なので、関数の(関数名や関数前半にあるコメントから読み取れる)お題目さえ理解できていれば、その中を詳しく知らなくても全体の流れが読み取れる、ということになります。~
例えばCreateAttackOrder()の中でやっていることは知らなくても、
最終的に「索敵順番がAttackOrder[]内に入る」ことさえわかっていれば、その中を詳しく解析する必要はあまりありません。~
ある程度大きな規模のプログラムになるとその全貌を暗記することなどできないので、こういうつくりにしないと後がやっかい・・・そう思っています。

例えば今回のGv関連の話であれば、問題になるのは処理順とタゲ回りだけ。~
ならば、おそらくはAImain.lua と actors.lua内だけ解析すれば判断できるはずです。~
これ以外のソースにある記載は索敵には一切影響を与えないので、このソース内にない関数はその関数名から「たぶん〜ってことをやってるな」という予想だけして、解析しないですむはず。


ちなみに・・・コメントについては、多分多すぎると思います。~
コメントには大きく「書くべきではない」「書かなくても良い」「書くべき」という3つの種類があって、友瀬は「書かなくても良い」レベルの内容も結構書いており、その分ソースが膨れ上がっている(全貌を見づらい)部分はあると思います。

「書かなくても良い」というのは、AIのアルゴリズム(思考論理)に関するところが多いです。~
本来は「詳細設計仕様」とかを書いてそっちに記載すべきものなのですが、ソースに直接コメントしてしまっているので。~
アルゴリズムはプログラムとは別物なので、本当は別のところに整理すべきなんですが・・・まあ趣味でのプログラムなのでこんなところで。