2012-01-05 27 views
-4

我正在寫人工智能代碼來處理遊戲,但我堅持第一步:確定屏幕上的哪些對象。確定DirectX應用程序中的屏幕對象?

這是一個DirectX遊戲。

有沒有辦法通過查詢正在運行的DX應用程序(以及哪種語言?)來獲取對象和位置,還是必須使用某種紋理識別算法?如果是這樣,可以使用哪種紋理識別算法?

回答

2

Direct3D不對「對象」進行操作。它在頂點緩衝區,索引緩衝區,紋理,着色器(頂點/像素/幾何),渲染目標或曲面上運行。它們不直接對應屏幕上的對象。沒有「對象」或「位置」 - 只有經過轉換,剪切並繪製到幀緩衝區的多邊形。

「紋理識別」算法是科幻小說。它們存在於AI研究項目中,但沒有任何東西可以幫助您將屏幕數據轉換回3D場景。

要使用您的AI程序控制第三方遊戲,您必須對遊戲進行逆向工程(這可能違反了EULA),找出它用於在場景圖中存儲實際對象的結構,並閱讀有關遊戲世界中物體的信息。根據你的技能,這將是非常困難或無法做到的。

一個更現實的方法是獲得源代碼附帶的開源遊戲,並修改源代碼,使AI程序可以控制遊戲。

+0

它不需要重建整個場景。我只需要一個對象識別算法,能夠告訴我在屏幕上的某個給定點上存在哪個對象,並授予對象的樣本圖像。 – Zyerah 2012-01-06 00:11:30

+0

另外,我無法獲得開源遊戲。這是星際爭霸II,也是星際爭霸II。 – Zyerah 2012-01-06 05:17:24

+0

@ user1131435:「識別算法能夠告訴我哪個物體存在於某個特定點」+「星際爭霸II」 - 你應該忘記它 - afaik AI開發人員在這個問題上奮鬥了幾十年,現有的算法僅限於極端專業的情況下,他們並不完美。 「星際爭霸II」不屬於這種情況。爲了訪問場景圖,您將有更多的成功機會來逆向設計遊戲。 – SigTerm 2012-01-06 06:16:11