海克斯棋開源程序 FutaHex2 編譯教程


海克斯棋開源程序 FutaHex2 編譯教程

preview

FutaHex2 源碼下載地址:github.com/FutaAlice/FutaHex2

Hex棋 也稱六貫棋或海克斯棋,規則介紹參考 wiki(中文 / 英文)。


FutaHex2 簡介

FutaHex2 是一個基於蒙特卡洛樹搜索的海克斯棋博弈程序。作者本人是 全國大學生計算機博弈大賽 2016年海克斯棋項目冠軍程序 FUTAHEX 作者。

舊版程序 FUTAHEX 是在校期間的作品,已交由繼續參加比賽的后輩管理,基本停止維護。何況本身就是賽前一個月東拼西湊的產物,維護約等於重寫。

2.0 版本僅沿用以前的思路進行重構,使用標准庫替換了舊版絕大多數代碼,移除了原開局庫和走法篩選部分待后續整理后加入。

程序分為以下幾個模塊:

  • fhcore:核心庫,包含棋盤描述、搜索引擎、日志等功能,無特殊依賴項。
  • futahex2:圖形界面,依賴 fhcore 和 Qt 庫。
  • test:fhcore 的測試工程。

核心代碼使用了 C++11/14 新特性,不支持 Visual Studio 2013 及以下版本的編譯器,不支持 g++ 4.x 及以下版本的編譯器。

Windows 環境下編譯

配置要求

—— 最低要求 建議配置
操作系統 Win7 Win7 / Win10
內存 8GB 16GB
VS 版本 VS2015 VS2015
Qt 庫 Qt 5.x Qt 5.8

注:程序編譯鏈接期對計算機內存無要求,但運行期 MCTS 過程會展開大量節點,對於 11 * 11 或更大尺寸棋盤需要至少 3.5GB 以上的空閑內存。32位有內存限制,建議使用64位編譯

搭建開發環境

1)安裝 Visual Studio

工程內大量使用了 C++11/14 特性,僅支持 VS2015 及以上版本。截至作者開始寫 futahex2 的界面部分時, Qt 官方尚未提供用於 VS2017 的插件,故建議安裝 VS2015

如果僅編譯核心庫 fhcore 不需要圖形界面,也可以選擇 VS2017。

若使用其他 Visual Studio 版本,則需自行修改代碼和工程配置,不保證能夠正常編譯。

安裝選項參考:
vs_install

2)安裝 Qt

用於圖形界面,講道理 Qt5.x 都是可以的。

注意要安裝 msvc_64 版本。mingw版本不能在 VS 工程中使用,32位 Qt不能鏈接64位庫,運行時有 3GB 內存限制。

筆者用的 5.8,那就推薦 Qt5.8 算了。國內訪問 Qt 官網比較慢,掛個度盤鏈接方便下載。

qt_msvc2015_5.8.0.exe

官網地址:download.qt.io/archive/qt/

百度網盤:pan.baidu.com/s/1w3j_mQtiisorqTPaSYNKxQ

安裝選項參考:
qt_install

3)安裝 Qt VS tools

用於在 VS 工程中使用 Qt庫,在安裝完成 VS 和 Qt 之后安裝。

qt_vs_tools_msvc2015_2.1.1.vsix

官網地址:download.qt.io/archive/vsaddin/

百度網盤:pan.baidu.com/s/1WbTk2xrnoKesNMZgzarJrg

4)配置 Qt 路徑

全部安裝完成后打開 Visual Studio ,會發現菜單欄上多了一項“Qt VS Tools”。

從菜單欄 Qt VS Tools -> Qt Options,打開 Qt 配置,此時 Qt Versions 列表應該是空白的。
vs_qt_configure_1

點擊 Add 按鈕添加安裝完成的 Qt 版本,點擊 path 選擇 Qt(msvc2015_64) 所在路徑並添加。
vs_qt_configure_1

5)測試開發環境

順序完成上述步驟后,打開 VS 新建一個 QtGuiApplication ,一路默認選項。

environment_test_1

不改任何文件直接編譯運行,正常彈出如下圖所示的空白 Qt 窗口說明開發環境配置成功。

environment_test_2

編譯 FutaHex2

1)下載源碼

github 地址:github.com/FutaAlice/FutaHex2

從 github 下載代碼並拷貝至工作目錄。
工作路徑全英文無空格確保 Qt 插件能夠正常工作。

2)編譯運行

使用 VS2015 打開 “FutaHex2/vsproject/FutaHex2_2015.sln”,設置 futahex2 為啟動項,選擇 Release 模式,編譯運行即可。

compile_done

Linux 環境下編譯

用於 Linux 下編譯的 cmakelist 尚未整理上傳。
本節將在工程更新后同步更新。

待辦事項

預計要做,但截止目前尚未完成(可能永遠不會填坑)的部分。
優先級從上之下遞減。

  • 完善文檔及注釋
  • 多線程 MCTS
  • 整理用於 Linux 編譯的 cmakelist
  • 重構開局庫和走法篩選部分的代碼並加入 2.0 版本
  • 用於淺層剪枝搜索的評估函數
  • 移植剪枝搜索引擎用於解決簡單局面
  • 圖形界面及功能的完善

TODO List 羅列出來發現還是挺多的,畢業以后空閑時間越來越少,真是懷念上學時候每天翹課打游戲看動畫的清閑日子 (=w=)

參與 FutaHex2

看到這個項目的多半是參加計算機博弈大賽的各校隊員吧。作為“過來人”我雖然清楚由於比賽性質各校閉門造車的傳統,但真的看不慣總有一行代碼不會寫的人拿着往屆大牛學長的祖傳代碼刷分的行為。

Hex棋,自2016年加入計算機博弈大賽項目,至今不過兩屆。相比其他傳統項目,趕超強隊所建立的技術壁壘完全可以在幾個月內實現。

這次重構 FutaHex2 並基於 GPLv2 發布,也是希望對開源做一些微小的貢獻。希望喜歡這個項目的諸位學霸,能夠一起開發維護。

總而言之,歡迎 fork,歡迎提交 PR。

建了個聊天吹水的 QQ 群,歡迎進群討論機器博弈相關問題。

qq_group

開源協議

遵守 GPLv2 的任何用途無需征求程序原作者許可 :)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM