2017-12-28

用AI向經典StarCraft致敬: 安裝建置Deepmind pysc2


好久沒寫文啦,歲末年終,照慣例總要寫個文來收個尾,今天讓7年級頭的在下用AI向經典的PC即時對戰遊戲Startcraft星海爭霸致敬。

暨Deepmind研發的Alpha GO在圍棋領域大敗人類後,現在他們要向即時戰略進軍啦。雖然個人是不太看好能在近年就有所突破,畢竟兩款Game在本質複雜度就不是同個檔次,但這不是本文討論範圍。大概是今年五月就有發出消息,然後Deepmind八月釋出pysc2的操作tool開源專案連結在此。

pysc2是暴雪跟Deepmind兩間公司合作的開源API,用來操作模擬人類操作Starcraft這款遊戲,看到py就知道這是用python寫的小工具,sc2就是目前只支援starcraft 2(可是我只會玩一代,泣),以下是安裝建置Deepmind pysc2說明。

[系統環境]

  • Windows 10(打遊戲方便...)
  • Blizzard Starcraft II,現在免費,要裝趕快~
  • Python 2.7+ 或 3.4+

[安裝步驟]

  • 首先安裝python環境,請自行搜尋python安裝檔.msi,我的版本是2.7.8
  • 然後去設定python的系統環境變數,請開啟控制台 => 系統 => 環境變數,新增 %PYTHON_HOME%,值應該是 C:/Python27;再來於 path 補上 ;%PYTHON_HOME。大致上就是一般補環境變數,方便 cmd 操作。這裡要注意的是,Windows 10似乎要重開機才會生效,倒是跟之前的版本設定後立即生效不一樣。
  • 再來裝一下pysc2,
    • 先下載src: $ git clone https://github.com/deepmind/pysc2.git
    • $ pip install pysc2
  • 再來要先抓地圖,否則工具跑不起來,放在 StarcraftII/Maps/ 資料夾中,沒有的話就自己建吧
[執行]
  • 執行Agent (default)
    • $python -m pysc2.bin.agent --map Simple64

2017-04-07

[Basketball] 為什麼NBA球員就算裁判已經響哨,還是要去蓋對方球員的火鍋


    不知道常看NBA的大家有沒有注意到一個現象,當比賽暫停,裁判都已經吹哨了,這時候如果A隊球員如果投球,B隊球員怎樣就是要去刪他火鍋(是手癢嗎)

    其實這跟運動心理學還有人類大腦有關,當球員能順利投進球(不管是否比賽進行中),大腦會因為"進球成功"這件事情分泌多巴胺,多巴胺的分泌可以讓球員不僅心理上的快樂,連帶體力跟精神都能更加維持。其二,讓對方多投籃一次,不管投進與否都會給對方調整的機會,手感不好可以修正彈道,手感順的人可以更順(順啦~)

    所以常打球的你應該會發現,如果某一天你的手感特別好,就會越投越順,即使跳了三天三夜也不會累;或者有項運動:"桌球"更能體現多巴胺的神效,只要成功把球打進檯面腦內就分泌多巴胺,恰恰好桌球可以在極短時間、極短距離就大量完成"打進檯面"的成功激勵,所以初學者很容易上癮打桌球,即使打不好一直撿球也會樂此不疲(真心不騙)

    另外,投籃不進也會讓球員肌肉緊繃(下意識),產生些微意志沮喪的心情。


    總而言之,如果我是敵隊球員,當然不會給對手製造任何製造多巴胺的機會,不讓你找到投籃進球的節奏,就算裁判響哨比賽暫停,我還是要刪你火鍋,蓋到你的。

2017-03-09

[砸七砸八] 遷移自建Docker私有庫 & 客製化公有庫Docker並納入私有庫

最近用了一些Dockerfile與docker的東西,快速筆記一下避免忘記:

[遷移自建docker registry]

  • 想自建docker registry(也就是docker image repository倉庫)自有庫,很簡單,直接到官方docker build一下就可以自建倉庫,略述。
  • 當自有庫運行一段時間,你在上面已經有了大量自建的docker image後,如果想要遷移,這時候你可以把整個registry做docker打包,然後tar起來並且壓縮,略述。
  • 接著把壓縮的registry tar用一般檔案搬移的方式mv/cp/scp/rsync到任何新的宿主機HOST上,把他解壓縮並docker run就可以繼續執行。
    • 參考指令(以下僅為範例指令,請依當下環境自行修改)。
    • #docker run -d -p 4000:5000 --restart=always --name registry-name -v 'pwd'/your-data:/var/lib/registry registry:version

  • 無網路問題,因為container共享HOST網路。

[客製化公有庫的Dockerfile & 納入私有庫]
  • 網路上很多公有庫的docker很好用,但總是需要客製化,無所謂,反正就是拿他的Dockerfile來修改。

  • 修改後重建指令
    • #docker build -t "sean/docker-image:v030901" .
  • 貼上自有庫registry認得的tag
    • #docker tag -f sean/docker-image:v030901 ${registry_ip:registry:port}/${project}/${docker-image-name}:${tag_version}
  • 上傳到自有庫方便自己使用,可以跟自己的CI/CD流程自動化串整
    • #docker push ${registry_ip:registry:port}/${project}/${docker-image-name}:${tag_version}

2017-01-18

陪你讀冊 | 決斷兩秒間(Blink: The Power of Thinking Without Thinking)

圖片來源:Blink: The Power of Thinking Without Thinking

    受到羅輯思維視頻啟發,以往個人看書,都是看過、畫重點後就把書擱在一旁,看過的書目其實不少,但真要從記憶殿堂中把知識取出再利用的成效明顯不彰(汗...)。而羅輯思維推出的"得到APP"其中之一萬維鋼欄目的知識積累方法,是透過將自己看過的書寫成筆記,以撰寫的方法進行梳理自己的邏輯思維。

    最近迷上Malcolm Gladwell的書籍,從最早的異數:超凡與平凡的界線在哪?開始閱讀,陸陸續續又買了以小勝大:弱者如何找到優勢,反敗為勝?引爆趨勢:小改變如何引發大流行、還有本次文章要提到的決斷2秒間:擷取關鍵資訊,發揮不假思索的力量,等有空會一本本把閱讀手札補上。

    決斷2秒間:擷取關鍵資訊,發揮不假思索的力量所有探討的主題圍繞在"薄片擷取"理論,所謂薄片擷取指的就是人可以透過數年成長歷練的經驗以及知識,在很短的時間只要看過一眼,就可以得出一個可能比運作數個月的研究工作團隊還精準的判斷,為此書裡舉了一個美國加州蓋提美術館(J. Paul Getty Museum)在1983年買到假大理石雕塑(Getty kouros)的故事做為引述。