indienova Picks:程序寫累了就玩玩編程遊戲吧 | indienova

引言

我們都知道一款遊戲的開發包括很多方面,代碼編寫是其中必不可少的部分。幾乎沒有一款遊戲可以脫離開編程這個環節。有時候,這些發生在遊戲背後的開發過程也會被放到遊戲當中,今天就給大家介紹幾款跟開發、編程、技術有關的遊戲。一方面在現實社會中的程序猿們可以在虛擬世界中大展身手拿點兒成就;另一方面,對程序有恐懼感或者想要了解編程的玩家,也可以借著遊戲方式來了解一下技術宅們的世界。

其中部分遊戲雖然披上了一層編程、技術的外皮,其玩法核心依然還是協調和統籌,但這些解謎遊戲由於有了編寫程序這一層現實基礎作為支撐,所以玩起來會給玩家帶來很不同的感覺。遊戲愛好者不管如何看待電腦技術,都是可以嘗試著玩玩這些遊戲的。

TIS-100

Randy 叔叔突然去世,你的姑姑在整理他的遺物時發現了一台老舊的 TIS-100 型電腦(BIOS 是 1975 年的),姑姑當然搞不清楚這種老古董機器,於是,她把這台機器寄給了你,也就是玩家,希望玩家能夠將 Randy 叔叔未完成的工作繼續下去。

所以,遊戲一開始就是一個老式電腦啟動的畫面,而在系統自檢結束的時候出現了錯誤,於是進入了一個幾乎全部由文本字元組成的 DEBUG 界面。這時,遊戲就已經正式開始了。

為了幫助玩家更好的理解這台機器的運作,遊戲本身提供了一個 TIS-100 電腦的說明書,通過閱讀這份簡短的說明書,玩家可以對機器的運作方式和操作語言有一定的了解,並根據這些基礎知識來將這台機器恢復正常運作。

TIS-100 操作說明書

通過閱讀說明書,我們會了解到 TIS-100 其實具備一套自己獨有的非常精簡的彙編指令集,只包括如 MOVADDSUBJMP 等最基本的彙編指令。而玩家的工作則是通過組織這些指令,將它們放到處理流程的各個節點上,使輸入到輸出的結果符合要求。所有這些指令都要求玩家親自一個字元一個字元地敲進去的,簡直就像真的在為一台老式計算機編程一樣。

在解開謎題後,玩家還可以繼續對自己的演算法不斷調優。每一次運行都會有 Cycle、Node、Instruction 記錄,這些數據可以拿來跟你的 Steam 好友們做比較,以尋找差距。值得一提的是,TIS-100 還有一個頗為有趣的特性,它具有多個計算模塊,每個模塊之間的計算都相互獨立,因此,在這台計算機上可以十分輕鬆地實現並行編程,有些時候看起來不錯的線性解決方案說不定還有更好的優化方案,這為這款遊戲的可重玩性打下了堅實的基礎。

遊戲本身還有一條主線,玩家在完成叔叔的遺願同時,同時能了解到故事的背景(每一個可以 DEBUG 的模塊上都包含一條日記信息)。通關之後想必會真相大白吧,雖然我距離通關還遙遙無期。

截至到發稿:Steam 上 1,289 篇用戶的遊戲評測中有 97% 為好評

Human Resource Machine

來自粘粘世界(World of Goo)的設計者和製作小小煉獄(Little Inferno)的團隊,《Human Resource Machine(人力資源機器)》同樣也是一款獻給技術宅的解謎遊戲。在大廈的每一層中,玩家都要從上司那裡接受一份任務。玩家需要通過給小職員編程來自動化完成這些任務。如果任務成功,玩家就會晉級到更高級別,更上一層樓。

遊戲的風格沿襲了開發團隊之前作品的可愛卡通范兒,同時編程界面也很容易操作,只需要進行簡單的拖拽。當然,也有很多人抱怨說操作太慢,如果能像 TIS-100 一樣手敲代碼就更爽快了。當程序運行起來的時候,看著小人兒來來去去,忙忙碌碌,倒滿有種小小的成就感。

通過這款遊戲,確實可以起到一些鍛煉邏輯思維能力的作用。本作自帶簡體中文,對編程有興趣的不妨上手試試。

截至到發稿:Steam 上 1,006 篇用戶的遊戲評測中有 94% 為好評

Hack 』n』 Slash

這款遊戲之前 indienova 有過介紹。總體來說是個塞爾達風格的闖關遊戲。在擁有了特殊的武器之後,玩家就可以通過編輯腳本修改遊戲中角色的屬性。比如:當一個敵人出現的時候,你可以直接修改它的攻擊屬性,將攻擊力編寫成負數,這樣它再次攻擊你的時候,其實就是為你補血了。

隨著遊戲的進行,玩家得到的許可權會越來越大,可以修改所有許可的對象和方法,甚至遊戲的全部腳本。

其實這個設定真的很有意思,但可惜開發者將重點幾乎全放在了編程部分,遊戲本身的可玩性做得非常一般,所以,沒能成為一個經典遊戲。

截至到發稿:Steam 上 590 篇用戶的遊戲評測中有 56% 為好評

Glitchspace

這款遊戲 indienova 之前也曾有過介紹的。為了寫這次的 Indienova Picks 我重新打開這款遊戲,發現相比第一版本已經有了相當大的變化。

跟前面介紹的幾款遊戲比起來,本作搖身一變成了第一人稱 3D 視角模式,顯得高大上了很多,而且操作起來也很流暢。遊戲中不停的會出現 Glitch 的情況,也就是時刻提醒這我們這是一個不穩定的環境。還好我們手裡的設備可以對這個世界進行改造,以達到我們的目的。

在遊戲中,紅色方塊都是可以進行重新編程的,而編程方式就是輸入輸出的連接和數據的設置等等。玩家經常會面對被阻擋、無法跨越或者數據流襲擊等局面,這個時候就需要對附近的紅色方塊進行重新編程,比如改變位移(三維空間的)、尺寸、彈性等等。通過這些改變,就能夠讓玩家順利通過,面對下一個謎題。

遊戲一開始的題目都很簡單,再往後就會稍稍變得複雜,關卡都是簡單明了,感覺很清新。不過遊戲中大量的函數都只是曇花一現,並沒有得到特別好的應用,甚至可以說很長時間內感覺都是在進行教學,然後教著教著遊戲就結束了。所以說,關卡設計上還存在許多缺憾。

完成遊戲後,還有沙盒模式可供自由發揮,開放了所有的函數,所以可以持續不斷地玩下去。

另外這款遊戲已經提供了 VR 的支持,目前同類型遊戲中,這可能還是第一款。有 VR 設備的讀者一定要找機會嘗試一下。

截至到發稿:Steam 上 182 篇用戶的遊戲評測中有 89% 為好評

Codespells

如果問起在奇幻的世界中,哪一個職業和程序員最為接近,肯定會有很多人腦海中復現出一名老巫師的形象。名著《程序語言的構造和解釋》又稱巫師書(The Wizard Book),大概也是覺得巫師調用神秘符號喚起未知力量的過程,和編程有某種內在的神似。而 Codespells 這款遊戲,則乾脆令腦洞成真,作為一個巫師,你能夠施展的所有法術,都需要通過編寫程序來獲得。

目前這款遊戲尚處於搶先體驗階段,內容不算豐富,支持玩家使用風,水,火,地四系元素魔法,包含五個多人進行的小遊戲模式和一個隨機地形的沙盒創造模式。

本作既支持使用 JavaScript,也支持控制項式編程,十分靈活:

隨著內容的進一步完善,相信這會是一款十分有趣的遊戲。

截至到發稿:Steam 上 109 篇用戶的遊戲評測中有 76% 為好評

Hacknet

儘管並不會真的需要用到任何編程知識,但相比很多模擬黑客入侵的遊戲而言,Hacknet 模擬黑客體驗的努力著實值得好好誇讚一番。

本作的界面模擬出了一個十分黑客范兒的類 Linux 操作系統,玩家的全部操作都會顯示在一個命令行終端上,看上去十分高端。嗯,是的,我沒有說錯,這款遊戲居然真的會要求你象徵性地了解一點基本的 Linux 命令,例如,如果鍵入 rm -Rf * 就會真的將當前路徑上的文件都給刪掉,而遊戲提供的各種工具也需要在終端中鍵入帶參數的相關命令來調用,例如,使用 porthack 命令來破解伺服器的埠。此外,這款遊戲還格外強調真實性,如果玩家在入侵一台伺服器後忘記清理掉痕迹的話,那麼很快就會被追蹤而來的人反黑成藍屏。

不僅如此,這款遊戲提供了一個不算很廣闊的開放世界,玩家的操作並不局限在一個又一個黑客任務之中,而是可以隨意黑入任何一台你有能力黑入的伺服器,充分滿足自己的窺私慾。這些電腦里藏著大量與主線無關的瑣碎彩蛋:比如,玩家費盡心思破解開某個加密文件會失望地發現只是一個色情網站的網址;又比如偷看別人的聊天記錄發現某個男子腳踏兩條船。特別一提的是,作者還在某個地方藏了許多 steam key,第一個發現的玩家可以將這些 key 分享給朋友讓他們可以免費激活這款遊戲(我知道你在幻想什麼,不過,顯然,時至今日這些 key 早就已經全部被激活了,少年醒醒)。其他方面的設計也同樣能體會到作者匠心獨具,比如,某個路徑下會有一個文件專門用來定義當前操作系統的皮膚文件,如果覺得自己的電腦界面不夠酷,可以通過指令從別的電腦中把這個文件拷貝過來換成其他模樣(玩家還會在某處發現一個專門用來更換系統皮膚的工具,同樣將它下載到自己的電腦上,就可以通過命令行來切換皮膚了,耶,真酷)。

儘管披著十分極客的外衣,這款遊戲卻對新手十分友好,即使完全零基礎的小白也能夠輕鬆上手:遊戲中需要用到的命令十分有限,而且還提供了十分完備的教程。不僅如此,終端中還支持使用 tab 鍵補全命令,十分友好。此外,這款遊戲涉及到的黑客攻擊操作,基本上都依賴固定的工具。玩家的解密更多的是圍繞劇情進行的,並不要求玩家思考任何有關程序的內容。

此外,遊戲的主線劇情也非常有趣,你將跟隨一位失蹤黑客的遺留線索探尋混亂未知的網路世界,隨著攻陷一台又一台的伺服器,玩家在逐漸成長為黑客高手的過程中一點一點接近真相。這種對未知的好奇心也是吸引玩家一直將遊戲進行下去的重要動力。

總而言之,本作營造出的獨特感覺出色得難以形容:配合動感的音樂,囂張地飛快敲擊著黑入他人伺服器的命令,緊盯著各種不斷滾動的進度條,不禁產生一種黑客大牛附體的幻覺。喂,喂,醒醒,這真的只是幻覺!

截至到發稿:Steam 上 3105 篇用戶的遊戲評測中有 92% 為好評

Colobot

忽略掉過時的畫面,開源遊戲 Colobot 是一款完美到令人驚訝的太空主題解密遊戲。

令人難以想像的是,這款早在 2001 年就誕生的遊戲中,已經出現了時下十分熱門的沙盒建造要素,更妙的是,在這款遊戲中,你可以使用一門類似 C++ 和 Java 的專用編程語言 CBOT 為機器人編寫控制腳本。你需要不斷探索新的星球,完成各種任務,你需要不停地優化機器人的ai,讓它們能夠更好地幫你面對各種複雜的挑戰。在最近的版本更新中,這款遊戲已經支持類似 RTS 對戰的玩法,這讓遊戲變得更加富有樂趣了。這種玩法究竟是什麼樣子的呢?讀者可以參看上面的演示視頻。

試試這款免費的開源遊戲吧,不僅能夠讓你成為拯救全人類的英雄,還能真正掌握編程的技能。

截至到發稿:GitHub 上已有 292 名用戶為本項目標註 星星

Colobot

官網鏈接 去下載

Screeps

最近剛剛上架 steam ,目前尚處於搶先體驗階段的 Screeps 中也允許你使用代碼控制機器人。

更加獨特的地方在於,它是一款多人在線的沙盒 RTS 遊戲,一旦加入遊戲,你控制的單位將 7 X 24 小時處於線上,而你的領地附近,則充斥著其他玩家的軍隊。你所能做的一切,就是使用 JavaScript 為自己的機器人單位編寫控制 AI,然後寄希望於這些聰明的機器人能夠戰無不勝,攻無不克。

不同於前面介紹的有些遊戲,這是一款貨真價實的編程遊戲,使用的也是現實世界熱門的編程語言,非要說缺點的話,按月付費的模式略坑。

截至到發稿:Steam 上 44 篇用戶的遊戲評測中有 100% 為好評

Pony Island

indienova 曾在有關 Ludum Dare 的專題中介紹過 Pony island 這款誕生在 gamejam 上的 meta-game。這款遊戲也巧妙地將編程元素融入到玩法之中。

indienova 作者羅林桑德認為:

本作的一大驚人之處正在於製作者對編程語言所進行的天才般的解構。以編程語言作為遊戲要素的遊戲並不鮮見,但是像 Pony island 中直接脫胎於遊戲劇情,並直接影響遊戲進程,而且能夠處理得這樣肆意狂放,又不失極客情趣,實在讓人拍案稱奇。從本質上來說,遊戲中後台世界中的代碼語言,與藝術家徐冰所創作的「天書」的偽語言有異曲同工之妙——它無限接近一種介於彙編語言和高級語言的形式,但又毫不存在嚴謹的語句表示。代碼中隨意充斥著的各種擬聲詞和網路俚語,無不隱喻著黑客亞文化的濫觴,這種略帶俏皮的表達也間接體現著惡魔的性格。更重要的是,本作還進一步對這種偽語言進行了二次解構:遊戲過程中不乏利用可視性的語法對「遊戲程序」進行的「破解」關卡,而語法中除了常規的順序、循環、判斷等一維結構外,還出現了向左、向右、分裂甚至傳送門等二維結構,這種可以類比於圖形語言中的語法形式借用,讓這種偽語言擁有了一種更為系統性的視角。

(本段引用自他對 Pony island 的評測)

總而言之,如果你希望體驗 metagame 的樂趣,對編程題材也有特別的興趣,本作絕對不容錯過。

截至到發稿:Steam 上 2892 篇用戶的遊戲評測中有 95% 為好評

Minecraft

上面這部令人瞠目結舌的視頻來自一名中國玩家野心勃勃的宏偉工程:在現象級遊戲 Minecraft 中復現一台可編程的16位計算機。引用他的原話介紹:

本工程基於一個叫 Minecraft 的遊戲,我使用的版本是1.4.7。之所以使用一個遊戲作為平台,是因為這個遊戲可以做到實時運行超大規模集成電路模型(大於10000個邏輯門)並且提供壯觀的可視化效果(三維數字電路)。

Minecraft 自由開放的規則令玩家的創造力得到了充分解放。早在這款遊戲的早期階段,就有人巧妙地利用一些方塊的特性製造出自動化機器。而隨後版本添加的活塞和紅石電路則徹底引爆了玩家的想像力:通過紅石在遊戲中模擬門電路和時序電路元件,Minecraft 在某些玩家手中變成了 PLC 模擬器,各種神奇的工程項目開始層出不窮,上面視頻展示的項目就是其中一個例子。

紅石電路蘊含無窮的可能性,可是非得了解不少專業知識才能真正發揮它的妙用。在目前的版本中,Minecraft 已經加入了命令方塊,讓一些事情可以變得更加容易。這個神奇的物品允許玩家使用帶參數的指令來改變遊戲中的世界,也支持運行特殊語法的指令式腳本。唔。更像一款程序猿遊戲了呢。

Minecraft

官網 去購買

Minecraft Mod:Redpower

原版 Minecraft 可玩性頗高,但無數來自社區的熱心開發者通過編寫 Mod 把這個方塊組成的世界變得愈發「無所不能」。

對很多嘗試過 Minecraft 模組的老玩家來說,Redpower 絕對是一個如雷貫耳的名字, 這款模組中出現過的許多設計,業已成為其他 Minecraft 模組的設計標準,甚至官方的更新內容,也從中借鑒過不少。也這正是這款模組,首次試圖將一台真正意義上的電腦引入到這個方塊組成的世界之中。

Redpower 的電腦相對於笨重誇張的紅石電路更接近我們一貫的印象:唔,顯示器,磁碟驅動,主機,線纜,就像在真實世界中一樣,你需要按照一定的連接順序將它們組裝成一台可用的設備。但一旦開機,你會發現自己有點傻眼,這款使用著黑屏綠底的界面、給人的印象早就復古到掉渣的電腦居然需要我們掌握一門即便在現實生活中也很少會見到的基於堆棧的冷門語言 forth。

連玩家社區也有人看不下去了,開發出了使用 basic 腳本調用系統 api 的功能:簡單來說,就是一種讓你的RP2電腦可以使用入門級編程語言basic的方法:所謂的 Minecraft Basic (考慮到後來 Minecraft 被微軟收購的命運,不僅感覺這個詞可謂對 Microsoft Basic 的絕妙雙關)是第一個也應該是唯一一個為紅石2電腦控制設計的Basic語言解釋器。來自社區的 BiGFoot 同學將過去微軟版本的 Basic 6502 代碼編譯完善,使其可以用於 redpower 的 RPC8 電腦。此外,Minecraft Basic 添加了文件系統,以及對 io 擴展,外部硬體的全面支持。MB 甚至添加了允許更快啟動序列的引導程序(可選,也可以使用原版)。總之,Minecraft Basic 讓你事半功倍,基本替代複雜的 forth 語言來操作 redpower 中的電腦。

Redpower 的作者 Eloraam 後來決定自己開發一款遊戲來重新實現 Redpower 中的一切,大家可以關注她的推特來了解項目的更新進度,目前看起來還處於極為早期的階段,下面是她最近公布的一張早期截圖:

Eloraam 的新遊戲

Eloraam 的博客

redpower 相關消息 去逛逛

Minecraft Mod:Computercraft

相比已經很多個版本沒有更新的 Redpower,提到電腦 Mod,新生代的 Minecraft 玩家可能更容易想到的是 Computercraft。

ComputerCraft 是一款為 minecraft 世界增加了電腦,顯示器,有線或無線網路,機器人,印表機以及其他電腦外設的模組,所有相關設備和紅石信號均可以很輕鬆地通過 lua 語言進行編程操作。你可以通過電腦控制紅石信號來更輕鬆地操作紅石設備,比如密碼門,計算器電路,程式控制的造石機、紅石大炮等等,也可以用強大的程式控制機器人按系統預設或者自己編寫的程序實現自動開挖礦洞,建築,耕地,播種,合成,附魔,屠殺怪物等各種複雜的操作。此外,你可以安裝各種外設和別人編寫好的程序擴展遊戲體驗。Computercraft,不僅將 Minecraft 帶入信息時代,也為玩家創造了一個十分良好的學習編程的環境。

最後要強調的一點是,相比很多其他編程遊戲,Minecraft 中的編程其實有一個十分獨特的優勢,它更容易給人帶來成就感,因為通過與遊戲的其他元素聯合,利用電腦來控制自動化機器的生產,除了享受編程樂趣外,看著生產流水線上不斷出現的「產品」,滿足感也油然而生。

Computercraft

官網 去逛逛

Hacked

即便在移動端,編程題材的遊戲也不鮮見。來自 Falcon Pro 開發者的黑客遊戲 Hacked 就是其中特別值得推薦的一款。

本作與其說是遊戲,倒不如說是一款披著遊戲外衣的 oj 題庫,玩起來非常有刷 leetcode 的既視感,雖然題目難度確實容易了許多。劇情方面沒什麼特別值得一提的,玩家扮演一名獲得黑客手機的高中生,謎題最開始圍繞玩家的高中生活來設計,每一關都需要按題目要求使用遊戲內置的 H 語言編寫一道程序。

本作真正的亮點在於程序編輯器,這款遊戲為我展現了目前為止在移動端看到的最方便好用的編程專用輸入法,徹底告別繁瑣的字元輸入,還配有十分好用的自動提示與代碼補全,你值得擁有。手機端如果想推出專門用於輸入某種編程語言的輸入法,真應該參考下這款遊戲的設計。

Hacked

官網 去購買

Elevator Saga

相信很多人都曾有過吐槽電梯 AI 的經歷,自己嘗試一下為電梯編寫控制程序,結果又如何呢?

Elevator Saga 這款在線網頁小遊戲就給了你這個機會。遊戲分為多個挑戰,在每個關卡中,你都需要通過程序控制電梯在規定時間範圍內運送指定數量的乘客。

怎麼樣,並非想像得那麼容易吧。

本作是一個開源遊戲,大家有興趣可以到 GitHub 查看項目源碼。

Elevator Saga

官網 在線玩

Vim Adventures

接下來推薦的這款遊戲稍微有些特別,嚴格來說,它並非融入編程知識的遊戲,而是一個遊戲化的編程教學工具。通過玩這款遊戲,你可以輕鬆上手編輯器之神 vim 的基本操作。

玩家操控的主角相當於編輯器中的游標,通過 vim 中的快捷鍵操作解決各種謎題。這是一款收費遊戲,包含三個免費關卡,後續關卡則需要支付 25 美元,且半年後需要重新付費。雖然收費策略顯得很不厚道,但這樣才能更好地激發玩家的學習動力,儘管 vim 頗難上手,但玩過這款遊戲後應該問題不大吧,什麼時候來一款 emacs adventure 遊戲呢。

實際上,這類遊戲化的編程教學工具為數不少,比如教你學習 python 的在線網頁遊戲Check IO,使用終端命令行來玩的 git game,寓教於樂,都做得十分有趣。

看來遊戲化對在線編程教育來說是一個大有可為的方向。

Vim Adventures

官網 在線玩

其它值得推薦的

還有一些值得介紹的編程遊戲,它們有的可能並沒有直接和編程相關的內容,但卻實實在在貫徹著編程的思想,比如同步、線程、邏輯以及流程式控制制等等,玩起來跟編程一樣爽,給大家列在下面:

SpaceChem

Prelogate

The Sequence

Else Heart.Break()

The Magic Circle

Mu Complex


推薦閱讀:

編程入門的第一課——建立編程思維
妙用SEARCHB函數,直接從字元中提取出數字,既方便又簡單
面相項目學習編程
大家都在用 Node.js 幹什麼呢?
講道理,編程到底該學些什麼?

TAG:編程 | 程序 | 遊戲 | indienova |