Linux 上跑電腦圍棋程式 (CGOS)

這邊講的不是對人下的,而是電腦之間的對弈。

目前大多數的對弈軟體會到「CGOS - A Go Server Just for Computers」這邊對弈,當然目前最紅的是一般 (人類) 正式比賽用的 19x19 棋盤,數子採用中國規則 (相當於貼 7.5 目)。

不過與常見的正式比賽比較不一樣的是採用包干制,每方限時 15 分鐘,超時就直接裁定敗,不過有個小例外:

CGOS silently adds a fraction of a second to each players clock for each move played.

要把圍棋程式接到 CGOS 上面需要兩段程式,一段是 Go Engine 本身要支援 Go Text Procotol (GTP),另外一段是把 GTP 接到 CGOS。

前面 Go Engine 的部份,目前不少圍棋軟體都有支援 GTP,像是 Leela 或是 Ray

後者一般會用 Python CGOS Client

其中比較特別的是 CGOS 的帳號密碼,帳號只允許 18 個字,另外沒有帳號申請系統,第一次用什麼帳號他就自動記錄起來,之後就要用這組。

# config.cfg
Common:
  KillFile = kill.txt

# First engine
GTPEngine:
  Name = Leela090-test
  CommandLine = ./leela090-gtp.sh

  ServerHost = yss-aya.com
  ServerPort = 6819
  ServerUser = Leela090-test
  ServerPassword = mypassword

  NumberOfGames = 1

  SGFDirectory = sgf

然後建立 sgf 目錄存棋譜後,用 python bin/cgosclient.py config.cfg 跑起來。當你 touch kill.txt 後,下一盤棋就會自己結束 (預設是一直下)。

再來是裡面提到的 leela090-gtp.sh

#!/bin/bash
exec /usr/bin/nice -n 20 $(dirname $0)/leela_090_linux_x64_opencl -g -t 8 -b 50 -q -l /tmp/leela090-gtp.log

這邊跑的是 OpenCL 版本,你也可以跑 CPU 版。其中 -g 是 GTP mode,-t 是 CPU thread 數量,-b 是 network latency penalty (避免超時),-q 是 quiet mode,-l 是 log。

DeepMind 跟 Blizzard 合作攻略 StarCraft II

DeepMind 宣佈與 Blizzard 合作,開發了 Star Craft II 的界面讓 AI 可以操作:「DeepMind and Blizzard to release StarCraft II as an AI research environment」:

Today at BlizzCon 2016 in Anaheim, California, we announced our collaboration with Blizzard Entertainment to open up StarCraft II to AI and Machine Learning researchers around the world.

這次比起圍棋更有意義的地方在於,圍棋是在完整資訊的情況下做出決策,但真實世界中經常是沒有完整的資訊就要做決策,這次的 StartCraft II 類似於這樣的環境,更接近於現實生活的情境:

StarCraft is an interesting testing environment for current AI research because it provides a useful bridge to the messiness of the real-world. The skills required for an agent to progress through the environment and play StarCraft well could ultimately transfer to real-world tasks.

另外考慮到電腦可以無限制精細操作每個單位,而人類有「操作速度」的問題,在規劃上會設限每分鐘可以操作的速度:

Computers are capable of extremely fast control, but that doesn’t necessarily demonstrate intelligence, so agents must interact with the game within limits of human dexterity in terms of “Actions Per Minute”.

來拉板凳繼續看下去...

在遊戲上模擬跑步的動作

從「Balls to learning how to animate, let's film some parkour!」這篇看到讓人懷念的遊戲,1989 年的《波斯王子》:

Jordan Mechner (波斯王子的作者) 用 Rotoscoping 的方式將他弟弟做這些動作的畫面拍下來,然後確保在電腦上角色的動作是順暢的:

Here's the source frames used to rotoscope the above animation. Don't let the ghostly pallor fool you! Jordan Mechner's brother is in fact quite healthy; he was altered with state-of-the-art Liquid Paper and Sharpie technology to fit the palette restrictions of the Apple II.

而波斯王子的原始程式碼在 2012 的時候也從 3.5 吋磁片上順利拉出來,放到 GitHub 上:「jmechner/Prince-of-Persia-Apple-II」。

Thanks to Jason Scott and Tony Diaz for successfully extracting the source code from a 22-year-old 3.5" floppy disk archive, a task that took most of a long day and night, and would have taken much longer if not for Tony's incredible expertise, perseverence, and well-maintained collection of vintage Apple hardware.

產生隨機地圖

在「Generating fantasy maps」這邊看到在講產生隨機地圖的方法,就像這樣細緻的地圖:

作者是依照「Polygonal Map Generation for Games」這篇的方法改善的,我之前看過但好像沒寫文章記錄下來...

兩篇文章裡面都寫得很詳細,一步一步提供用到的演算法以及範例說明。

暗黑破壞神 Diablo 的 Game Concept 文件

看到「Diablo - Game Concept by Condor, Inc.」這份 PDF 文件,講 1996 年年底 (12/31) 發表的 Diablo,超級經典的遊戲。

文件上可以看到這是 1994 年的紙本文件 (居然已經 22 年前了),最後面還有時程表,所以感覺起來應該是內部的紙本文件?這個經典到不行的遊戲只用了一年開發...

剛剛看英文版維基百科,最後面的連結已經加上這份資料了...

谷李五番棋今天開打

GoogleDeepMind 所研發出來的 AlphaGo李世乭的「谷李五番棋」將在今天開打。

中國規則、兩個小時、一分鐘讀秒:

The matches will be played under Chinese rules with a komi of 7.5 (the compensation points the player who goes second receives at the end of the match). Each player will receive two hours per match with three lots of 60-second byoyomi (countdown periods after they have finished their allotted time).

將在韓國時間下午一點開賽,對我們也就是十二點開賽:

The matches will be held at the Four Seasons Hotel, Seoul, South Korea, starting at 1pm local time (4am GMT; day before 11pm ET, 8pm PT) on March 9th, 10th, 12th, 13th and 15th.

將會有大量的媒體講解直播,毫無疑問的,YouTubeDeepMind 這個頻道會有直播,目前看起來是早上的十一點半就會開始了。

其他的頻道,台灣已知的有:

不過我應該會到處看吧,中國的圍棋網站「围棋TV」也會在十一點半開始直播。

很多人都有猜測勝負,但自從去年十月贏了樊麾後,不知道成長了多少。其實都是在資訊不足的情況下猜測,在這種情況下,人類大獲全勝或是電腦大獲全勝都不意外...

也因此,五番棋的第一盤應該是最轟動的,因為可以看出 AlphaGo 長到什麼程度... 不過聽說第一盤 Google 只會拿單機版出來應戰?所以如果輸的很慘的話就會拿雲端版來戰?

啊啊啊我好想看啊...

遊戲捲頁的理論與實作

文章的標題「Scroll Back: The Theory and Practice of Cameras in Side-Scrollers」,裡面圖又大又多,20Mbps 的光世代全速下載要跑滿一分鐘才能抓完。


順便測一下 Imgur 的 mp4,以及 HTML5 的 video tag。

裡面考了不少古啊,把捲頁的方式分成許多類別...

Minecraft 與 Bitcoin 的結合?

VentureBeat 的這篇「How Minecraft may make bitcoin the ‘official currency of virtual worlds’」讓人想了一下遊戲的虛擬貨幣與 Bitcoin 的結合...

與以往的不一樣的情況:

  • 不需要找金流系統接,Bitcoin 可以直接獨立運作,馬上可以想到不少方法利用 Bitcoin 的架構來規劃虛擬貨幣。
  • 法令更不容易管制,如果遊戲本身再透過 Tor 隱藏在 Tor network 裡的話就更完整。以往在最後要換錢的部份都還會經過金流系統與實體界接,現在連這個部分都避開了。

再來是 Bitcoin 的中立性,跨遊戲之間的交易也許是另外一個可能的強大之處?

不過 Bitcoin 的 n=6 確認應該會讓人感覺到愈來愈痛,不知道後面會怎麼解決...