小時候我也有段很愛玩電腦遊戲的時光,但玩法跟常人略有不同。眼拙手殘外加沒耐性,不管動作遊戲還是冒險遊戲,對我來說最大的樂趣不在苦練破關,而是偷改遊戲存檔或資料檔,讓角色在遊戲世界有花不完的錢、穿被打如蚊叮的裝,外加天生神力用小木棍也能捅死大魔王,說穿了其實就是作弊啦~ 年輕同學們可能會覺得,作弊有什麼好說嘴?上網 Google 改法、找現成工具不就好了,甚至有些遊戲就內建作弊碼... 嘖嘖嘖,那可是網際網路跟 Google 仍是科幻電影概念,查資料只能去書店跟圖書館的年代,想作弊一切要靠自己(後來 FPE 整人專家、GameBuster/GameMaster 等專業作弊工具問市後門檻有下降)。我玩遊戲的 SOP 是:學習玩法熟悉環境->出新手村->存檔->打怪/購物/吃補給->存檔,比較兩次存檔差異變化推測體力(HP)、法力(MP)、金額、裝置屬性/數量在存檔的位置,修改數值重新進入遊戲,角色從此無敵又多金。(職業病是對 0x63、0x3e7、0x270f 等數字特別敏感 XD,延伸閱讀:32767! - 黑暗執行緒 ) 更進一步,有時還需得寫程式跑自訂邏輯解析從資料檔案讀出地圖、迷宮路線、武器道具清單...
現在想想,我今天射茶包如果還算得上「快狠準」,或小工具程式寫來駕輕就熟,有一大部分就來自當年破解遊戲累積的技能點數與經驗值。
前陣子為了小木頭有興趣要擔任當然助教,認真對 Arduino 做了番研究,做完光敏電阻、伺服馬達整合實驗我閃過一個念頭,想起之前見識過小閃光玩的一款手機遊戲 - 別踩白塊兒(Don't Tap The White Tile),只見她雙手在螢幕上輕巧飛舞,手拙如我只能徒呼負負,這輩子應無緣看到她的車尾燈。而學會用程式控制伺服馬達後,我有個點子,何不用 Arduino + 光敏電阻 + 伺服馬達 做一個別踩白塊兒硬體外掛來打敗她呢? 於是開始了我偉大的硬體外掛研發計劃~
光敏電阻精準度不佳比美物理亂數產生器,是我學生時代痴心妄想 DIY 土砲光學掃瞄器時就知道的事,研究發現別踩白塊兒一代的黑塊一開始是純黑色,與純白背景色差夠大,初步測試在光敏電阻可識別範圍內,但進階模式或二代的黑塊會變淡誤背景變花,誤差就會大到難以接受,嚴格來說我需要更可靠的偵測元件,但志在好玩,試試也好。
至於模擬觸控動作,除了用伺服馬達抓觸控筆,先前就知道平板手機的多點觸控原理是偵測電容改變,我也試了金屬片 + 繼電器控制接地的玩法:
初步測試可行(如影片所示),但有兩個問題:第一,繼電器切換的機械動作頗外,且壽命次數有限,連續高速切換一陣子聲音就怪怪的,感覺經不起這番狂暴猛操。第二點更麻煩,實測接地觸發電容變化最多只能同時模擬兩點,且偶爾會莫名失敗,推測與原理有關,但我欠缺電子學背景難以再深入探索。支線任務只能到此結束。
回歸「伺服馬達抓觸控筆點螢幕」的老路數,網購找到一枝 2 元的超便宜觸控筆當實驗材料,挖出小木頭/小閃光以前科學夏令營的實驗器材積木,再去光華補了四顆大尺寸光敏電阻(猜想面積大精準度會高一點),就可以組裝出硬體外掛模組囉。
外掛模組從底部看長這樣,一個伺服馬達加一枝觸控筆加一顆光敏電阻為一組,程式以特定週期讀取光敏電阻數值,當讀數小於一定值代表該處螢幕為黑色(亮度愈低數字愈小,且每顆光敏電阻數字不一,最好要能個別設定),就控制伺服馬達轉動將觸控筆下壓模擬出觸控動作。
至於程式開發環境,在試過用 Visual Studio 寫 Arduino 程式後我就回不去了。少了 IntelliSense、F12 Go Definition、Find All Refenrences、變數更名... 有種步槍被沒收只給大刀要上戰的哀戚感,吃過牛排很難不嫌棄陽春麵啊,呵 Orz
組裝完成來實測一下,薑! 薑! 薑! 薑~ (註:為免沈悶,影片速度有調快25%)
就醬,繼三十年前在單機遊戲寫程式作弊後,三十年後我解「打造實體外掛玩遊戲 App」的成就。
但回到初衷,想打敗小閃光的金手指,這玩意兒還有超大的進空間,當進階模式黑塊變淺或背景不白,光敏電阻讀數便會上升導致失誤率大增,而現有下壓觸控筆的做法在速度過快常會失效,可能得從材質與方式下手,但再繼續深入就沒這麼輕鬆好玩了,就先到此為止吧,呵~
題外話,如果只求破解別踩白塊兒,根本不用這麼麻煩,用張衛生紙就成了,哈!