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

玩家在游戏开始时将获得一艘飞船,通过穿梭于各个星球之间,挖掘矿产并进行买卖,赚取利润。利润可以用来升级飞船、扩展货仓和购买更强大的*器武**。然而,这听起来可能并不十分吸引人,对吗?
然而,现在有一个名为spacetraders.io的网站,将SpaceTraders带入了一个全新的境界:它将这个游戏API化了!
换句话说, 游戏中的所有动作,都可以用API的方式来调用!
比如,注册一个玩家,可以用CURL发出这样的请求:
curl --request POST --url 'https://api.spacetraders.io/v2/register' --header 'Content-Type: application/json' --data '{"symbol": "liuxin","faction": "COSMIC"}'
购买一艘飞船:
curl --request POST --url 'https://api.spacetraders.io/v2/my/ships' --header 'Authorization: Bearer <token>' --header 'Content-Type: application/json' --data '{"shipType": "SHIP_MINING_DRONE","waypointSymbol": "X1-DF55-69207D"}'
给船补充燃料:
curl --request POST --url 'https://api.spacetraders.io/v2/my/ships/ONLYLIUXIN/refuel' --header 'Authorization: Bearer <token>'
卖货赚钱:
curl --request POST --url 'https://api.spacetraders.io/v2/my/ships/ONLYLIUXIN/sell' --header 'Authorization: <token>' --header 'Content-Type: application/json' --data '{"symbol": "IRON_ORE","units": "100"}'
我这里只列举了一小部分,除此还有导航、停泊、测绘、卸货、查看市场、完成合约等各种各样的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更加开放,更加有趣。