2015-06-23 67 views
3

我想知道這裏有沒有人使用過GKMinmaxStrategist。此類/功能在WWDC上展示,但大部分示例代碼都在Objective-C中,這令人失望。從哪裏開始使用GKMinmaxStrategist?

GameplayKit的WWDC視頻推出了另一款遊戲Stone Flipper(黑白棋/黑白棋),但是他們還沒有發佈代碼(還沒有?)。

有沒有人有這樣的運氣?我希望能用一個簡單的tic-tac-toe遊戲來嘗試一下,但我完全不知道該如何開始。

+0

我會在下週看看GKMinMaxStrategist。請關注我的博客以獲取結果:http://tilemapkit.com/blog或Twitter [@gaminghorror](https://twitter.com/gaminghorror)。在此期間檢查出這個問題鏈接到Swift中的TicTacToe示例:http://stackoverflow.com/questions/30970216/gameplaykit-how-to-implement-gkminmaxstrategist – LearnCocos2D

+0

「Apple發佈的示例代碼表面上炫耀類...沒有實現GKMinmaxStrategist「 - 呃?我在[Apple的FourInARow示例中的視圖控制器類]中看到了一個'GKMinmaxStrategist'()(https://developer.apple.com/library/prerelease/ios/samplecode/FourInARow/Listings/FourInARow_AAPLViewController_m.html) – rickster

+0

您是對的。編輯。 – tsb

回答

3

我同意這是一個棘手的框架學習 - 我剛剛寫完tutorial about GameplayKit and GKMinmaxStrategist,這並不意味着壯舉。如果你遵循這個教程,它會從頭開始構建一個完整的遊戲,解釋它如何融合在一起。至少,您可能會發現它有用作爲起點。

我希望蘋果公司在iOS 9決賽前改進其文檔!

如果你想直潛水,這裏就是你需要知道的最少的:

  • 確保您的遊戲模式(數據)和視圖(佈局)分開保存。
  • 使您的模型實現NSCopying協議,因爲它會在AI運行時被複制多次。
  • 你還應該使其實現GKGameModel協議,該協議要求你能夠枚舉可用的棋步,在棋盤上應用棋子(事實上並非真實),然後再判斷棋手得分。
  • 每個「移動」(無論您的遊戲中的任何含義)需要符合GKGameModelUpdate協議,因此它將成爲您創建的定義特定移動的類。當你選擇了最好的舉動時,你會得到回報,所以它會包含諸如「把騎士移到E4」之類的東西。
  • 如果你的遊戲沒有分數(在我的教程中我使用了四行,這正是這個問題),那麼你需要提出一個啓發式估計大致有多好的舉措。
  • 在後臺線程上運行AI以確保您的UI保持響應,然後在準備好進行UI更改時將結果推回到前臺線程。

如果您發現AI運行緩慢,則可以限制其可以進行的移動次數或減少其向前看的深度。

+2

不錯的教程。有一點可以掩蓋:'maxLookAheadDepth'的7次移動的選擇不是任意的。正如名字所暗示的,四連勝在4步中贏得勝利 - 假設完美的打法,展望自己的4步(因此對手還有3次干預)足以保證獲勝或平局。當然,如果你的啓發式不是那麼好(蘋果的例子和你的變體都是這樣),看起來遙遙領先並沒有什麼幫助。但是,再遠一點也不會,無論你的啓發式有多好 - 它只會吃掉CPU。 – rickster

+0

「不錯的教程」並不完全是我的目標,但我想它仍然是積極的 - 謝謝! :)我打算今晚或明天將代碼推送到Github,並且我將確保包含Apple的原始預覽評論。 – TwoStraws

+0

感謝您使用本教程!我已經開始運行了。這真的幫助我開始解決這個問題。一個問題:啓發式不好,當然。我預計它會錯過「複雜」的東西,比如一個不連貫的三合一[x-xx]。但爲什麼它會錯過(即不是阻止)簡單的事情,比如垂直的三行?即使是1的先行深度應該趕上...對嗎? – tsb

2

這是GKMinmaxStrategist TicTacToe tutorial in Swift

這應該解釋事情是如何工作的,並給出一些關於如何製作一個好的AI的指導。策略師當然不是創建任何類型的棋盤遊戲AI的模板,它只是提供了一個框架。 95%的工作仍然在你的肩上。 ;)

code is available here。請注意,它不僅需要Xcode 7,還需要OS X 10.11。儘管適應iOS 9應該很簡單。

+0

這是你的很棒的教程。我們如何拯救戰略家的知識,使其在下一次應用程序運行時表現更好? – onmyway133

+0

偉大的教程與戰略家分數概念的解釋。我唯一不明白的是爲什麼我們不能將分數設置爲自己移動(GKGameModelUpdate)。 –

+0

我的意思是移動價值。幾分鐘後,我得到了我可以給我們的移動添加評分屬性...我在命令:)再次感謝 –