題:
定制國際象棋(遊戲)引擎
Konstantinos
2018-03-06 04:19:34 UTC
view on stackexchange narkive permalink

是否有一個像棋引擎,無論遊戲規則如何,都可以使用?例如,我想創建自己的國際象棋版本,其中女王也可以作為騎士移動,或者只是10x10平方的國際象棋版本。我想知道,是否有一個引擎可以放入“我的規則”,然後它不僅可以玩,而且可以擊敗該版本的任何人?

我知道Stockfish是開源的,但是根據“您的規則”對其進行編輯有多容易?

如果沒有,那麼預計何時會發生呢?我的意思是在未來5年內,或20年。

五 答案:
SmallChess
2018-03-06 05:01:30 UTC
view on stackexchange narkive permalink

是的,有。 FairyMax引擎非常靈活,它可以更改配置文本文件中下象棋的方式。請查看正式版本:

您看到卡帕布蘭卡國際象棋棋盤更大的地方嗎?您看到所有這些變體了嗎?

某些鏈接:

您將需要學習如何使用該文件。請在Winboard論壇上尋求進一步的幫助(我認為沒有適當的文檔,您只需要詢問)。密切注意H.G. Muller,他是做到這一點的人。

Stockfish不允許輕易過渡到變體。仍然有可能,但是您需要在源代碼級別上奮鬥。不簡單。除非從頭開始重寫Stockfish,否則什麼都不會改變。使用Winboard / Fairymax, Stockfish。 Winboard / Fairymax是目前可用的最佳變體引擎。

Could FairyMax accommodate alternate rules like "If the king can move one square forward, it must; otherwise make any legal move" or "If it is possible to move or capture any pawn, player must do so; otherwise make any legal move"?
AilizneyibCMT Ask on the forum.
Federico Poloni
2018-03-07 01:10:33 UTC
view on stackexchange narkive permalink

只是一個隨機指針。有一個具有15年曆史的商用Windows程序,稱為 Zillions of Games,該程序可以定義一個任意的棋盤遊戲(使用一種簡單的腳本語言),並包括一個可以玩這些棋子的AI(或者至少可以嘗試)。我從來沒有親自使用過它,但是我的一個朋友是粉絲,並且認為AI所做的還不錯。 (雖然肯定不是Stockfish級的。)

該站點似乎仍然在線,並且至少可以下載該演示。

I've used Zillions of Games many years ago, and even encoded a chess variant with IIRC 52 squares. It was a decent program, but I don't think it's been updated to take advantage of 64-bit processors.
http://www.chessv.org/是Zillions的副本,帶有源代碼。包括Muller生產的FairyMax通用引擎。
Fabian Fichter
2018-07-07 13:46:22 UTC
view on stackexchange narkive permalink

Fairy-Max Sjaak II Nebiyu Alien都允許在一定程度上配置新變體,並且已經超出了盒子支持多種國際象棋變體。他們可以例如可以與 XBoard / WinBoard GUI一起使用。

自從您明確提到Stockfish之後,我想補充一點,我最近開始開發叉子 Fairy-Stockfish在添加新變體方面非常靈活。它仍處於開發的早期階段,因此還不如上述替代方案那麼靈活,並且尚無法通過配置文件添加新的變體(UPDATE 2019/09:用戶定義的變體現在支持通過配置文件),但通過代碼中的類似配置文件。主要限制是僅支持等於或小於12x10的電路板尺寸。它的主要優點是,由於它是基於Stockfish的,因此與其他國際象棋變體引擎相比,其遊戲強度很高。您還可以在 pychess-variants上在線對抗某些變體。

您提到的女王也可以作為騎士移動的變體稱為 amazon國際象棋,並且已經獲得仙女魚的支持。對於10x10版本的國際象棋,您指的是大國際象棋

user1583209
2018-03-06 04:33:11 UTC
view on stackexchange narkive permalink

我不知道存在任何此類東西。

在某種程度上,可以對可以採用自定義規則的引擎進行編程。但是,自然地,您必須事先決定要允許哪種自定義類型 :定制棋子的運動,棋盤的大小...。

對於您的第二個請求(它將擊敗該版本中的任何人),對於傳統的象棋引擎來說這是不可能的,因為它們嚴重依賴於評估特定的功能,並根據國際象棋的特定變體進行了微調。例如(僅舉一個例子),如果讓女王像騎士一樣運動,它的物質價值就會改變為未知的數字。

第二部分可能可以用Alpha 0類型的國際象棋引擎解決,但據我所知,這些功能尚無法提供給公眾。

itub
2018-03-06 04:50:15 UTC
view on stackexchange narkive permalink

我不確定是否已經存在,但是這裡有一些問題需要考慮。

引擎有兩個主要任務:生成位置和評估位置。從原理上講,創建一個允許修改規則並生成位置的引擎應該不會太困難;搜索算法本身非常通用。位置評估比較棘手,因為它傾向於基於多年來為標準國際象棋開發的啟發式方法,例如件數,空間,國王安全性等。現有的啟發式方法對於您的變體可能不太理想,因此,如果您不希望引擎對策略太幼稚,就需要自己提出。

像Google AlphaZero這樣的引擎不需要啟發式方法,因為它可以通過訓練來“發現”它們,對自己進行多次攻擊。這將是為國際象棋變體實現引擎的一種有趣方式,但我認為它不容易獲得。也許存在一些更輕量級的機器學習替代方法。

諸如Stockfish之類的傳統引擎的一個警告是,它們已經過大量優化以節省內存和時間,並且其中一些優化可能會使規則的改變變得困難。但是,如果這只是出於娛樂和研究目的,那麼看起來更簡單,優化程度較低的引擎似乎是可行的,並且可以由有動力的程序員迅速開發(不必花幾年的時間)。

There is one out there. I'll post my answer.


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...