Position: 首页> 产业 > 观察·投资

二十年前的老游戏,为何再次让无数人痴迷不已?

2023-07-11 08:01:06

SpaceTraders是个古老的策略类游戏,运行在古老的Palm OS和Windows Mobile PDA上。

游戏开始时,玩家将获得一艘飞船,然后驾驶它在各个星球之间穿梭,挖掘星球矿产,低买高卖赚取利润,赚了钱可以升级飞船,购买更大货仓,更先进的武器, 因为星际航行中可以会碰到海盗,玩家需要决定是逃跑,交涉还是战斗......

听起来并不是非常吸引人,对吧?

但是,有个叫spacetraders.io的网站,把SpaceTraders玩出了新高度:它把这个游戏给API化了!

换句话说,游戏中的所有动作,都可以用API的方式来调用!

比如,注册一个玩家,可以用CURL发出这样的请求:

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的方式来玩儿这个游戏也太无趣了吧?

又慢又无聊,谁会这么玩呢?

但是,一旦你把视野打开,就会发现这是个非常棒的创意!

因为任何程序员,不管他是使用什么编程语言,都可以通过代码调用这些API,写一个SpaceTraders的客户端应用程序,和其他人进行交互。

有很多人已经这么干了,有人做出了漂亮的图形化客户端:

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

有人实现了Emacs Lisp 客户端

有人用React做了客户端:

那开发这些“乱七八糟的”客户端有什么用处呢?

最大的用途就是:学习编程。

我们每个人在学习编程中都会遇到这样的问题:学了很多语法,写了不少代码片段,但是越学越没意思,因为编程有很多知识点,很枯燥,很无聊,没有真实项目刺激,缺乏动力。

现在有了SpaceTraders API,事情就不一样了。

假如你想学习Python,你完全可以用Python 代码去调用这些API,实现一个Python版的SpaceTraders客户端。

为了尽快实现这个游戏的注册、飞行、挖矿、战斗,你不得不去做界面设计、架构设计、类的设计,和服务器API的交互,这个过程逼着你不得不接触到Python的各个方面。

编程的过程,结合了游戏的过程,有趣,不枯燥。

把这个客户端写完,对Python恐怕也熟悉个七七八八了。

难怪网友反馈说:我在48个小时内学到的东西比一个月的在线课程还多!

强烈建议那些正在学编程的同学看一看这个游戏,调用API去玩一玩。

这个SpaceTraders API让我想到了早些年流行的Robocode,玩家需要编写自己的机器人坦克,定义其行为和战斗策略,在一个虚拟的战场上与其他玩家编写的机器人对战。

只不过Robocode必须由Java编写,限制了用户的群体。

相比而言,SpaceTrader API更加开放,更加有趣。

“寓教于乐”可以让人轻松学习,不得不说,在这方面,国外程序员的创新和脑洞确实比较多,走到了我们的前面,值得我们学习。