首頁 > 產(chǎn)業(yè) > 觀察·投資
二十年前的老游戲,為何再次讓無數(shù)人癡迷不已?
SpaceTraders是個古老的策略類游戲,運行在古老的Palm OS和Windows Mobile PDA上。

游戲開始時,玩家將獲得一艘飛船,然后駕駛它在各個星球之間穿梭,挖掘星球礦產(chǎn),低買高賣賺取利潤,賺了錢可以升級飛船,購買更大貨倉,更先進的武器, 因為星際航行中可以會碰到海盜,玩家需要決定是逃跑,交涉還是戰(zhàn)斗......
聽起來并不是非常吸引人,對吧?
但是,有個叫spacetraders.io的網(wǎng)站,把SpaceTraders玩出了新高度:它把這個游戲給API化了!
換句話說,游戲中的所有動作,都可以用API的方式來調用!
比如,注冊一個玩家,可以用CURL發(fā)出這樣的請求:
curl --request POST n--url 'https://api.spacetraders.io/v2/register' n--header 'Content-Type: application/json' n--data '{n"symbol": "liuxin",n"faction": "COSMIC"n}'n
購買一艘飛船:
curl --request POST n--url 'https://api.spacetraders.io/v2/my/ships' n--header 'Authorization: Bearer <token>' n--header 'Content-Type: application/json' n--data '{n"shipType": "SHIP_MINING_DRONE",n"waypointSymbol": "X1-DF55-69207D"n}'n
給船補充燃料:
curl --request POST n--url 'https://api.spacetraders.io/v2/my/ships/ONLYLIUXIN/refuel' n--header 'Authorization: Bearer <token>'n
賣貨賺錢:
curl --request POST n--url 'https://api.spacetraders.io/v2/my/ships/ONLYLIUXIN/sell' n--header 'Authorization: <token>' n--header 'Content-Type: application/json' n--data '{n"symbol": "IRON_ORE",n"units": "100"n}'n
我這里只列舉了一小部分,除此還有導航、停泊、測繪、卸貨、查看市場、完成合約等各種各樣的API。

這些API可不僅僅支持一個人玩兒,而是支持多人在線的交互。
即使是多人在線游戲,通過命令行,用API的方式來玩兒這個游戲也太無趣了吧?
又慢又無聊,誰會這么玩呢?
但是,一旦你把視野打開,就會發(fā)現(xiàn)這是個非常棒的創(chuàng)意!
因為任何程序員,不管他是使用什么編程語言,都可以通過代碼調用這些API,寫一個SpaceTraders的客戶端應用程序,和其他人進行交互。
有很多人已經(jīng)這么干了,有人做出了漂亮的圖形化客戶端:

有人做出了文本化的客戶端

有人實現(xiàn)了Emacs Lisp 客戶端

有人用React做了客戶端:

那開發(fā)這些“亂七八糟的”客戶端有什么用處呢?
最大的用途就是:學習編程。
我們每個人在學習編程中都會遇到這樣的問題:學了很多語法,寫了不少代碼片段,但是越學越?jīng)]意思,因為編程有很多知識點,很枯燥,很無聊,沒有真實項目刺激,缺乏動力。
現(xiàn)在有了SpaceTraders API,事情就不一樣了。
假如你想學習Python,你完全可以用Python 代碼去調用這些API,實現(xiàn)一個Python版的SpaceTraders客戶端。
為了盡快實現(xiàn)這個游戲的注冊、飛行、挖礦、戰(zhàn)斗,你不得不去做界面設計、架構設計、類的設計,和服務器API的交互,這個過程逼著你不得不接觸到Python的各個方面。
編程的過程,結合了游戲的過程,有趣,不枯燥。
把這個客戶端寫完,對Python恐怕也熟悉個七七八八了。
難怪網(wǎng)友反饋說:我在48個小時內學到的東西比一個月的在線課程還多!
強烈建議那些正在學編程的同學看一看這個游戲,調用API去玩一玩。
這個SpaceTraders API讓我想到了早些年流行的Robocode,玩家需要編寫自己的機器人坦克,定義其行為和戰(zhàn)斗策略,在一個虛擬的戰(zhàn)場上與其他玩家編寫的機器人對戰(zhàn)。

只不過Robocode必須由Java編寫,限制了用戶的群體。
相比而言,SpaceTrader API更加開放,更加有趣。
“寓教于樂”可以讓人輕松學習,不得不說,在這方面,國外程序員的創(chuàng)新和腦洞確實比較多,走到了我們的前面,值得我們學習。
強推




