寶石方塊好難阿.... - Facebook

Callum avatar
By Callum
at 2010-07-19T21:10

Table of Contents

: → sitos:倒是很希望可以跟其它有興趣寫 bot 的人交流一下
: 推 sitos:讀盤面進來判斷阿... 然後盡量多連一點? 目前還沒有作搜尋
: → sitos:不過讀點的顏色很容易誤判就是了... 這部份也還沒克服
: → sitos:不過其實判斷還滿複雜的... (為了高分)
: → sfwejfish:你跟我說用啥寫的 我有興趣(咦
: → sfwejfish:完全沒碰過模擬輸入 囧
: 推 sfwejfish:編譯程式的話 GWB QB TC BC VC VB VS2008(MFC) 囧

詢問了一下板主,看來「機器人」應該不算在板規十一這條規定的範圍之內。

▕ 十一、禁止討論惡意程式、作弊方式、BUG ▏
▕ ▏
▕ 禁止詢問、討論、分享或推廣任何竄改封包、修改記憶體或其 ▏
▕ 他足以影響遊戲公平性的惡意程式、作弊方式或 BUG 等資訊 ▏
▕ (含教學、心得、相關圖文、影片、關鍵字、分享或徵求程式 ▏
▕ 、詢問使用方式等,詳細說明請見 #1C2zNPjg。) ▏
▕ ▏
▕ 發文處分:視情況水桶一周以上、原文逕行刪除或劣退。 ▏
▕ 推文處分:視情況水桶一周以上,一行推文視為一案,得連續 ▏
▕ 處分。 ▏
▕  累犯追加:水桶加倍。 ▏

因為「機器人」的運作原理上,並沒有竄改封包、修改記憶體,
而寶石方塊也不是對抗性的遊戲,所以比較沒有遊戲公平性的問題。
如果這篇文章以下的內容違反板規,請板主提醒,我會把文章刪掉。

進入正題之前,還是先提醒一下,這種靠反應和動作的遊戲,
「機器人」的能力遠勝過人手在玩是一定的。
作機器人並不是要顯示機器人比較厲害(因為這是早就知道的事),
而是想要知道:
1. 某些人手不可能達成的動作,做出來以後會是什麼樣的效果。
2. 遊戲進行的規則,例如倍數方塊出現的條件為何。
3. 在不破解遊戲的情況下,進行遊戲高分的可能性為何。

簡單來講,用手進行遊戲有用手進行的緊張感和樂趣,
而開發機器人,尋找高分的移動演算法,則有另外一番風趣。
各有各的樂趣,如果不喜歡機器人,對機器人沒興趣,請忽略這篇文章。

我的機器人是用 VC 2008 寫的,但我想其它 Windows 下的工具應該也可開發。
而我的對象程式則是用 chrome 開啟的 facebook 中的寶石方塊。

整個程式的流程大致如下:

[找尋寶石方塊程式 FindWindowEx]

v

[取得遊戲畫布 GetDC]

v

[讀取遊戲盤面 GetPixel] <--
|
v |
|
[決定移動] |
|
v |
|
[發出移動指令 SendMessage] --

目前在製作上的兩大困難主要是在「讀取盤面」和「決定移動」上面。

讀取盤面的困難在於 1. 方塊的顏色並不是固定的,例如十字爆炸和小黑,
方塊的顏色是隨時間改變的,因此辨認上較為困難。
2. 會有沒用的訊息出現在盤面中,例如一開始的「GO」,
還有一堆 Good, Excellent ... 以及分數等等
3. 遊戲進行中方塊是會動的,尤其是從上面掉下來的方塊,
A 顏色的方塊在掉的時候可能剛好符合 B 顏色的特徵。
這部份大概可以靠作苦工,慢慢把所有的例外修完,不曉得有沒有更好的辦法。
我有朋友建議我去讀記憶體,不過那有點作弊了,所以我就沒那樣去做。

決定移動的困難,其實主要可以分成兩個部份。

第一,怎樣的移動可以在寶石方塊這個遊戲當中取得高分,這取決於這個遊戲的規則。
先前我發的文章,也多是針對這個問題問的,當然也有一些心得。
我認為這是作機器人的樂趣之一,有興趣的人不妨自己動手調整,看看是否能更高分。
為了幹這件事,我好幾天整個晚上都坐在電腦前看機器人玩寶石方塊,
看到連閉上眼睛跟作夢,都會見到方塊合起來的影像。(有點太過火了)。

第二,怎樣達成前面觀察到的條件。例如是否只依目前盤面作決定,
或者要對可能的組合作最佳化。是不是要引入搜尋的概念等等。
這部份我目前都只有依目前盤面,甚至可以說依目前檢查到的這顆方塊來決定。
所以還有很大的進步空間,不過時間和動力不足,因為分數還沒有被超越。

我把一個簡化版的 source code 放在
http://sitos.myweb.hinet.net/Blitz-Simple.rar
裡面有我上面寫的基本流程的程式碼,基本上寫機器人需要用到的 API ,
裡面都有示範應該要怎麼樣使用。想要嘗試的人,可以用 chrome 開 fb 的寶石方塊,
為了確保它抓得到該視窗,請不要同時用 chrome 開啟其它的網頁,
先進入寶石方塊的開始畫面,然後啟動這個程式,再幫它點開始,它應該就會動了。

這個範例是一個閹割過的版本,不會判斷任何特殊方塊,
所以很容易自己跑一跑卡住,因為這個程式的目的只是讓有興趣的人,
可以以這個程式為基礎來開發自己的機器人。直接用這個程式,
是無法取得很高的分數的,因為幾乎該有的功能都沒有。

目前我的 Bot 在我這邊自己做到第四版,而這個程式是從第一版割出來的。
所以當然... 相當地弱。

最後附上目前我手上有的 replay 裡面最高分的紀錄。
無道具 http://sitos.dyndns.org/Blitz.html
有道具 http://sitos.dyndns.org/Blitz2.html
希望對開發機器人有興趣的人可以以此為起點享受不一樣的樂趣。
如果有人得到更高的分數,煩請分享一下 replay ,這會給我改進 bot 的動力。
也可以讓我觀摩一下不一樣的演算法怎麼樣得到更高的分數。 :)

--

我實實在在的告訴你們,一粒麥子不落在地裡死了,

仍舊是一粒,若是死了,就結出許多子粒來。

約翰福音 12:24

--
Tags: Facebook

All Comments

Connor avatar
By Connor
at 2010-07-21T22:07
我覺得這是款運氣成分很高的遊戲,機器人不一定拿的到高分
不過平均分數應該會比大部分的人手高應該是沒問題的 XD
Necoo avatar
By Necoo
at 2010-07-22T21:13
我現在的版本要是沒剛好遇到 Bug ,平均已經超過 1M 了。
Gilbert avatar
By Gilbert
at 2010-07-26T20:30
我開個實況好了,不然只放最高分可能覺得太看運氣。
Rachel avatar
By Rachel
at 2010-07-28T04:55
好帥XD
Bethany avatar
By Bethany
at 2010-07-29T13:43
那個...雖然用程式或是用CE暫停時間可以達到同時移動
無數個方塊 但是還是有它的規則在
Madame avatar
By Madame
at 2010-08-01T03:11
比如說硬拉三個方塊去湊一個五連黑星 是會被系統彈回來的
Agnes avatar
By Agnes
at 2010-08-04T01:18
推~ 還有實況真有趣XDDD
Andrew avatar
By Andrew
at 2010-08-04T03:56
晚點測試看看 感謝分享
Kama avatar
By Kama
at 2010-08-07T08:54
看你最高分的REPLAY 七跟八倍好像是都差10秒才出現@@
Emma avatar
By Emma
at 2010-08-11T14:30
實況真是有趣,看機器人玩寶石方塊有種見鬼了的FU~
認真推~~
Carolina Franco avatar
By Carolina Franco
at 2010-08-13T00:06
好有趣!!
Una avatar
By Una
at 2010-08-15T09:12
玩到破140W了...
Hardy avatar
By Hardy
at 2010-08-20T04:51
應該說擺著讓機器人玩
David avatar
By David
at 2010-08-21T19:38
有關x2的方塊啊..根據用變速器慢慢玩的經驗...應該跟前面
說的沒錯.正常情況下是動一個方塊然後消12個以上..就出現
John avatar
By John
at 2010-08-22T12:50
但進到加速狀態時..1000up?變成動一次方快要消好幾個才會出
Ula avatar
By Ula
at 2010-08-23T11:30
現..像我都是用黑星去消十字..or黑星消兩個爆炸以上都會出
Kelly avatar
By Kelly
at 2010-08-27T09:25
現..另外再動方塊前..盤面方快要停住.而不是盤面還在掉就在
Rosalind avatar
By Rosalind
at 2010-08-31T12:20
動..根據以上方法..10s的限制是不存在的..通常可在剩35s前
Mason avatar
By Mason
at 2010-09-05T06:31
消到x8...最高紀錄是340萬(變速器)
Dinah avatar
By Dinah
at 2010-09-07T21:05
http://ppt.cc/3PXP 我期待機器人變得更聰明^^

[Pirates Ahoy] 7/20新品

Jake avatar
By Jake
at 2010-07-19T18:52
目前觀察到除了新品之外.還有以下的主要變動 1.Far East 新增一組寶藏 2.調降部分任務等級 3.調漲部分武器價格 4.調降Mission系列怪物打擊成功經驗值 5.調漲僱用船員價格 6.調漲打怪可獲取的金額 整體來說PF想讓大家玩遊戲的進度再變慢一些.僱用船員價格漲幅真的超誇張. 但換個角度來看 ...

[Cafe] 7/17日法國風新品

Ursula avatar
By Ursula
at 2010-07-19T12:10
1、新食譜 Escargot 法式田螺 10小時等級73級以上 2、Table Sun Parasol Table 太陽陽傘桌 2CW Black Iron Table 黑 ...

Maze迷宮

Ida avatar
By Ida
at 2010-07-19T09:55
砲台中的一個指標 splash(移動傷害)是怎麼算的呢 比如(BFG 40K為例 )0.4 是指 A.被攻擊的怪物 周邊的怪物會損失0.4滴血 B.被攻擊的怪物 周邊的怪物會損失殺傷力乘以0.4的血 3400*0.4=1360滴血 C.被攻擊的怪物 周邊的怪物會損失殺傷力乘以0 ...

[-CA-] Alpha Mephistopheles 戰勝訊息翻譯

Hazel avatar
By Hazel
at 2010-07-18T21:01
The atmosphere in the throne room is suffocating. The mere presence of Mephistopheles is almost unbearable. You can feel your senses being dulled. You must ...

[裝潢] [餐城] 有裝潢的粉絲團或社團嗎?

Charlie avatar
By Charlie
at 2010-07-17T16:07
爬了一下文 網路找了一下 只有類似論壇的裝潢分享和討論 有沒有fb的社團或粉絲團專門提供分享餐城裝潢的呢? - ...