2009年3月19日 星期四

Intelligent Mistakes

Intelligent Mistakes: How to Incorporate Stupidity Into Your AI Code

by Mick West

===================================================

每天看Gamasutra,偶爾會看到一些好東西。

這個主題叫做「有智慧的錯誤」。

人都是會出錯的,所謂「人有失手,馬有亂蹄」,但是電腦AI不會出錯,只有計算夠不夠完整的問題。

但是這樣的遊戲,玩起來就死板板的,也喪失了一些趣味。

作者舉了他自己做的撞球遊戲當做例子,撞球遊戲的AI不難,就是簡單物理碰撞計算而已,對電腦來說,出桿可以非常非常的精準,但是「人」就不行了,要不就打歪,要不就力道不對,總之是不可能精準的像電腦一樣。

所以,這樣的遊戲玩起來,就是跟一個精準得要命的電腦對手在玩。不但每顆球都打得很「千」,連不小心放的「嗆斯」都沒有。

這就很無趣了。

AI is “too good”.

所以,要做一些精心設計的錯誤,讓玩家覺得他佔到便宜,好比說,偶爾故意放個「嗆斯」、偶爾「突槌」一下、偶爾不小心把母球打進洞....

這樣就有趣多了,人生本來就是充滿了不確定啊....

2009年3月12日 星期四

Remote Debug

遇過這樣的狀況嗎?

『我們的程式,在自己的電腦上執行,一切正常,但是交到別人手上執行,卻常常出問題,更不要說是交給老闆測試了,老闆的電腦特別奇怪,好好的程式交給老闆就一定會出事。』

這種時候,就是放61點天賦大絕的時候了。

這個大絕叫做『遠端除錯』,Remote Debug。

概念是這樣,我們在近端--也就是我們自己的電腦--用VC或是其他的編譯工具進行除錯,程式則是在遠端電腦(也就是老闆的電腦)上執行,Trace/Debug的做法,與我們在自己的電腦上除錯是相同的,所不同的是,我們控制的是老闆電腦上的程式。

用這種方式除錯,遠端電腦上是不需要安裝任何的編譯工具的,只需要兩種東西。

一個是程式的執行檔和相關的資料檔案,另外一個就是稱做Remote Debug Server或是Remote Debug Monitor的程式。這個Remote Debug Monitor是一個很小的程式,通常放在VC或是編譯工具的安裝光碟中,請拿出來安裝在遠端電腦上。

然後,在遠端電腦先將remote debug server跑起來,等待近端的連線。

接著我們在近端電腦打開程式專案,做一些設定--每一種編譯工具的設定方式都不同,甚至不同版本的VC++都有不同的設置方式--之後,開始debug run。這時候,遠端電腦上的執行檔就會被跑起來,而所有的debug output訊息,會顯示在近端的編譯工具裡。同時,也可以設定break point,去trace 遠端電腦上的程式流程。

這樣,我們就能夠很快的發現bug,解決bug,也就不會在老闆面前滅團了。