在 Minecraft 里写代码,指挥机器人挖矿:这个模组把游戏变成了编程平台
在我的世界(Minecraft)里,你可以先搭一台电脑。它不是基地里摆着好看的方块,而是一台真的能运行程序的机器:有 CPU、内存和硬盘。再写一段 Lua 代码,程序启动后,机器人就会自己出发,按逻辑转向、挖矿,把矿物塞进背包;遇到岩浆,它还知道绕路。玩家坐在旁边看着就行。
这不是科幻设定,而是开放式电脑(OpenComputers)这个 Minecraft 模组提供的玩法。
项目用斯卡拉(Scala)编写,在 Minecraft 模组圈里并不常见;GitHub 页面显示项目有 1732 颗星,代码采用 MIT 许可证。它大约从 2013 年开始,默认分支名仍然是 master-MC1.7.10。光看这个名字,就能看出它的历史:1.7.10 是 Minecraft 模组发展的黄金版本,许多经典模组都诞生于那个时期。OpenComputers 一直维护到 2026 年,最近一次代码推送发生在几天前。
游戏里的电脑怎么工作
OpenComputers 的核心是一台虚拟、持久化的电脑。它运行 Lua 5.2 解释器,拥有文件系统、进程管理和网络通信能力。所谓持久化,是指退出游戏后再回来,电脑中的程序状态仍会保留,硬盘里的文件也不会消失,和真实电脑关机重启后的体验很接近。
不过,这台电脑并不是一个脱离游戏世界的代码窗口。它需要用 Minecraft 里的方块和物品一件件组装出来。
玩家先制作电脑机箱方块,再向其中安装 CPU 组件。不同等级的 CPU 决定运行速度,内存条容量决定能同时运行多少程序,显卡决定能否连接显示器,硬盘和软盘则负责存储。BIOS 固件还要从软盘安装。要与电脑交互,你还得准备屏幕方块和键盘方块。
这相当于在游戏里重走一遍真实计算机的硬件路线。每一个组件都是独立物品,有自己的合成配方和材料成本。开局不会凭空送你一台高配电脑,想要更强的处理能力和更大的存储空间,就得像推进科技树那样逐步升级。
机器人:CPU 的延伸
OpenComputers 最有意思的部分,是机器人。机器人是一种特殊实体,体内自带一台 OpenComputers 电脑,还能在世界里移动。
机器人可以装备镐子、剑和各种传感器。写好 Lua 程序后,玩家就能通过 API 控制它前进、转向、使用工具、检测周围方块,以及读取物品栏。
这些 API 覆盖得相当细。程序可以读取机器人的坐标,判断方块类型,调整背包里的物品位置,还能发送网络消息。只要把判断条件和循环逻辑写完整,采矿、建筑或农业都能交给机器人自动完成。
机器人之间也能通信。每台机器人和电脑都有一个网络地址,可以通过 OpenComputers 的网络协议相互发送消息。于是,你可以让一台中央电脑分配任务,再把多台机器人组成小队,按区域或工序分别行动。
和 ComputerCraft 的关系
如果你接触过 Minecraft 模组的历史,应该会想到计算机工艺(ComputerCraft)。它是更早出现的 Minecraft 编程模组,使用自家的电脑和海龟(turtle),后者的定位与机器人相近。
OpenComputers 可以看作 ComputerCraft 的精神延续,但两者的设计思路不一样。ComputerCraft 的电脑和海龟合成成本较低,功能也更预设,API 相对简洁,所以入门很快。代价是,可供玩家自行调整的空间没有那么大。
OpenComputers 选择了更硬核的方向。每台电脑都要从组件开始组装,材料成本更高,配置也更复杂,不过自由度随之增加。玩家可以决定使用哪一级 CPU、安装多少内存、接入哪些扩展卡。不同配置会直接带来不同能力,这一点和真实电脑没有太大区别。
API 层面也一样。OpenComputers 有自己的开放式操作系统(OpenOS),带文件系统层级、守护进程和权限模型。写程序时,你需要管理资源,处理输入输出,再安排网络通信,思路更像嵌入式开发,而不是调用几个固定指令就结束。
为什么选择 Lua
Minecraft 模组本身大多用 Java 编写,但给玩家使用的脚本语言,Lua 是个很实际的选择。它足够轻量,解释器可以嵌进 Minecraft 运行,对游戏性能的影响相对有限;语法又简单,没学过专业编程的玩家也能较快上手。别看它轻,Lua 仍然提供数据结构、闭包和协程,写复杂程序并不勉强。
OpenComputers 的 Lua 环境经过沙箱限制。程序不能直接碰 Minecraft 的 Java 内部,只能通过模组提供的 API 操作游戏世界。这既减少了安全风险,也让程序与底层实现分开:Minecraft 版本改变时,只要 API 层保持稳定,原有程序就有机会继续运行。
社区里有人把这套环境玩得很深。有人实现了操作系统,补上类 Unix 的文件系统和管理工具;有人写图形界面框架,也有人搭网络协议栈。部分程序的复杂度,已经接近真实嵌入式系统软件。
社区与留下的影响
OpenComputers 在 Minecraft 模组社区里有自己的位置。它不是最容易上手、也不是最流行的那一类模组,门槛确实不低,但它吸引了一批习惯用编程思维玩 Minecraft 的玩家。很多人第一次接触 Lua,第一次写出带有条件分支、循环和函数的完整程序,都是在这个模组里完成的。
它的 wiki 资料非常详细,组件、API 函数和基本概念都有对应说明。对一个需要玩家自行组装硬件、编写程序的模组来说,这种文档不是附属品,而是能不能玩明白的基础。很多模组的资料往往只停留在简短介绍和零散教程,OpenComputers 在这方面做得更扎实。
游戏内手册也是它很有代表性的设计。合成手册物品后,右键打开,就能看到一套完整帮助系统,其中包含方块、物品和 API 的说明。玩家不必每次切出游戏查资料,许多问题在游戏里就能解决。
斯卡拉(Scala)的技术选择
Minecraft 模组大多使用 Java,少数使用 Kotlin,而 OpenComputers 采用 Scala,确实少见。
Scala 是一门同时支持面向对象与函数式编程的 JVM 语言。它的类型系统比 Java 更强,写法也更简洁,但学习和维护的复杂度同样更高。作者选择 Scala,可能与个人编程偏好有关;从代码层面看,它带来了更灵活的模式匹配、更强的集合操作,以及大量不可变数据结构。如果你想研究 Minecraft 模组源码,这个代码库很适合拿来观察大型 Scala 项目如何落在 Minecraft 模组环境中。
OpenComputers 给 Minecraft 增加的重点不在几种新方块,真正改变的是玩家处理问题的方式。以前拿着镐子挖矿,现在可以写代码让机器人代劳;以前用红石搭自动化装置,现在也可以用 Lua 组织自动化逻辑。游戏规则没有被替换,做事的方法变了。
也因此,有人用它学 Lua,有人拿它教编程,也有人只是喜欢在方块世界里搭出 CPU、内存、网络和一支会自己工作的机器人队伍。对他们来说,OpenComputers 不只是一个增加玩法的模组,更像是一间可以运行在 Minecraft 里的小型计算机实验室。
评论与互动
条评论登录后发表观点、使用图片表情并回复其他玩家。
登录参与讨论正在加载评论
还没有评论
分享你的第一条真实体验
评论安全验证
按图中提示完成验证即可继续评论