This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
start:zh [2023/10/14 14:50] hfsr [模块化] |
start:zh [2023/11/27 05:28] hfsr [资源限制] |
||
---|---|---|---|
Line 2: | Line 2: | ||
======================================= | ======================================= | ||
- | 开放式电脑(OpenComputers, OC)是一个 Minecraft 的模组,它把电脑和机器人添加进了游戏,使用 [[http://www.lua.org/|Lua]] [[http://www.lua.org/manual/5.3/manual.html|5.3]] 作为编程语言。OC 借鉴了几个类似的模组,比如 ComputerCraft,StevesCarts 和 Modular Powersuits,来创造一些新奇而有趣的东西。 | + | 开放式电脑(OpenComputers, OC)是一个Minecraft模组。它向游戏中加入了可用[[http://www.lua.org/|Lua]] [[http://www.lua.org/manual/5.3/manual.html|5.3]]编程的电脑和机器人。OC借鉴了几个类似模组的创意,比如ComputerCraft、StevesCarts和Modular Powersuits,以创造一些新奇而有趣的东西。 |
- | **另请喜欢这个模组而有时间、能力的各位,帮助翻译一些英文文档,一起为 OC 社区做贡献!** | + | - [[start:zh#目录|方块与物品文档]] |
- | + | - [[:api:zh|Lua API文档]] | |
- | - [[start:zh#目录|方块物品文档]] | + | - [[:component:zh|组件API文档]] \\ |
- | - [[:api:zh|Lua API 文档]] | + | |
- | - [[:component:zh|Component API 文档]] \\ | + | |
\\ | \\ | ||
- [[:tutorial:zh|教程]] | - [[:tutorial:zh|教程]] | ||
- [[tutorial:oc1_basic_computer:zh|入门]] | - [[tutorial:oc1_basic_computer:zh|入门]] | ||
- | - [[http://oc.cil.li/|论坛主页]]\\ | + | - [[http://oc.cil.li/|官方论坛主页]]\\ |
\\ | \\ | ||
- | - [[https://oc.shadowkat.net/oc/zh_CN/|游戏内文档]] | + | - [[https://oc.shadowkat.net/oc/zh_CN/|HTML版游戏内手册]] |
连接能力 | 连接能力 | ||
------------ | ------------ | ||
- | OC 可以通过若干种方法连接到MC世界,并与其交互: | + | OC的电脑可以通过若干方式连接到外界的Minecraft世界,并与其交互: |
- | 对OC模组的大部分方块而言,只要紧挨着摆放就可以让它们自动“看见”彼此,并进行交互,或者也可以使用 [[block:cable:zh|线缆]] 间隔一段距离进行连接。你还可以使用多种网卡与交换机来逻辑化地连接或分断组件,有线或无线均可。 | + | 对OC模组的大部分方块而言,只要紧挨着摆放就可以让它们自动“看见”彼此,并进行交互,或者也可以使用[[block:cable:zh|线缆]]以将它们间隔一段距离连接起来。你还可以使用多种网卡与交换机来逻辑化地连接或分断组件,以有线和无线两种形式。 |
- | 来自原版MC或其它模组的方块也可以通过 [[item:redstone_card:zh|红石卡]], [[block:redstone_io:zh|红石 I/O 端口]] 或者 [[block:adapter:zh|适配器]] 与OC进行连接。很多来自其他模组的方块已经可以与适配器交互,例如来自BuildCraft、IndustrialCraft2 或者Thermal Expansion的方块。其它模组作者同样可以使用 Java API 来为他们的方块添加相应句柄。 | + | 来自原版Minecraft或其它模组的方块也可以通过[[item:redstone_card:zh|红石卡]],[[block:redstone_io:zh|红石I/O端口]]或者[[block:adapter:zh|适配器]]与OC系统进行连接。很多来自其他模组的特殊方块已经可以与适配器交互,例如来自BuildCraft、IndustrialCraft 2或Thermal Expansion的方块。其它模组作者同样可以使用Java API来为他们的方块添加相应句柄。 |
- | [[block:robot:zh|机器人]] 几乎可以像真正的玩家一样与世界互动。 它们可以装备大多数工具、方块和其他物品,并且可以变成控制机器人如何使用这个物品,你可以编写程序让机器人整理箱子、挖掘资源或是为你建造一座堡垒。你甚至可以让它 [[api:note:zh|唱歌]] 或跳舞。只有你想不到的,没有它机器人做不到的。 | + | [[block:robot:zh|机器人]]几乎可以像真正的玩家一样与世界互动。 它们可以装备大多数工具、方块或其他物品,你还可以编程控制机器人以你想要的方式使用物品。你可以编写程序让机器人整理物品容器、挖掘资源或是为你建造一座堡垒。你甚至可以让它[[api:note:zh|唱歌]]或跳舞以供你娱乐。只有你想不到的,没有它机器人做不到的。 |
- | 查看 [[component:component_access:zh|组件互动]] 来了解如何通过 Lua 和组件通信。 | + | 查看[[component:component_access:zh|访问组件]]页面来了解如何通过Lua与组件通信。 |
模块化 | 模块化 | ||
---------- | ---------- | ||
- | OC模组中的电脑是由多种独立模块构建的,例如显卡、硬盘和扩展卡。这使得你能够按照需求精确定制每台电脑。如果你只想处理简单任务,可以节省构建电脑的资源。或者你也可以将所有的钻石都用在构建 MC 最昂贵、最强力的电脑上。 | + | OC模组的电脑是由各种部件构建的,例如显卡、硬盘和扩展卡。这使得你能够按照需求精确定制每台电脑。如果你只想处理简单任务,可以节省构建电脑的资源。或者你也可以将所有资源都用在构建最昂贵、最强力的Minecraft电脑上。 |
- | 查看 [[:start:zh#目录|方块和物品文档]] 以获取可用于组装电脑的组件列表。 | + | 查看[[:start:zh#目录|方块和物品文档]]以获取可用于组装电脑的组件列表。 |
Line 40: | Line 38: | ||
--------------- | --------------- | ||
- | 开放式电脑的内存和磁盘大小都是被限制的,可以在配置文件中根据你的喜好调整。这不仅让 OC 对服务器非常友好,还会带给你温暖的怀旧感,回到那个磁盘和内存都用 KB 和 MB 计算的年代。但由于 Lua 程序非常资源友好,你可以在中等的开放式电脑上解决大多数问题。而且如果不能,你总是可以在更大的内存条上花费更多的钻石。 | + | OC模组电脑的内存和硬盘大小都是有限的,具体数值可以在配置文件中根据你的喜好调整。这不仅有利于减轻OC对服务端造成的负荷,还会带给你温暖的怀旧感,回到那个硬盘和内存大小都用KB和MB计算的年代。但由于Lua程序占用的资源很少,中等性能的OC模组电脑已经足以解决大多数问题。如果不能,你也可以花费更多钻石制造更大的内存。 |
- | 在这些直观的限制之外,OC 也已经被设计为能在服务器上完美运行:开放式电脑使用可变数量的低优先度线程来处理协程,几乎不对服务器 tick 造成延迟。附加地,运行中的程序会被强制、可配置地限制资源消耗,或者——如果没能这么做——(游戏中的电脑)就会被强制崩溃,来避免服务器被恶意或有缺陷的程序阻塞。 | + | 除了这些直观的限制,我们还对OC进行了特殊设计,使其能在服务端上完美运行:OC模组电脑使用固定数量的低优先度线程处理协程,以尽量减少造成的服务端tick延迟。另外,运行中的程序在其占用资源达到一个可配置的恒定阈值后就会强制退让,如果因为种种原因没能做到这点的话,(游戏中的)电脑会被强制崩溃,以避免服务端因为恶意的或工作异常的程序出现卡顿。 |
- | 可持续性 | + | 持续性 |
----------- | ----------- | ||
- | 当开放式电脑离开加载的区块,它们会被暂停,但一旦区块稍后被加载,它们也会精确地在暂停点自动恢复。这使得开放式电脑能在 MC 环境中非常直观地使用,因为你不必担心区块加载或恢复,也不需要添加来自其它模组的区块加载器来保持电脑运行。 | + | 当开放式电脑所在区块停止加载,它们的运行会被挂起,区块重新加载时会从停止的位置继续执行。这让玩家在MC环境中使用开放式电脑时很符合直觉,因为你不必担心区块加载或恢复,也不需要添加来自其它模组的区块加载器来保持电脑运行。 |
- | 具体来说,为了实现这个目标,OC 使用了一个原生库——[[https://github.com/fnuecke/eris|Eris]] 库。这个库包含了官方的 Lua VM 实现,已经兼容并支持电脑被暂时暂停。当前这个库已经包含在 Windows, Mac OS X, Linux 和 BSD 版本的模组中,只需要服务器运行所有纯净的 Lua 代码即可。如果这个库不适用于你的系统,模组会回落到 LuaJ,一个基于 Java 的 Lua 实现,在这种情况下电脑是不可持续的,内存也不会被限制。 | + | 为了实现这个功能,OC引入了一个原生库——[[https://github.com/fnuecke/eris|Eris]] 库。这个库包含了官方的 Lua 虚拟机实现,它已经足以支持电脑暂停的功能。现在这个库已经包含在 Windows, Mac OS X, Linux 和 BSD 版本的模组中,只需服务端支持即可,因为OC模组的所有Lua代码都仅在服务端执行。如果你的系统不支持此运行库,模组会回退到基于 Java 的 Lua 实现:LuaJ。这种情况下电脑的运行状态在卸载区块时不能保持,内存也不会被限制。 |
能量 | 能量 | ||
----- | ----- | ||
- | 电脑根据它们运行什么而消耗能量。每 tick 会消耗少量能量,而例如显卡和无线网卡会根据它们的工作负载消耗额外的能量。这不仅仅很现实,同样也能鼓励玩家优化他们的代码,不会让一台开放式电脑服务器一直运行不必要的任务。额外的能量消耗可以在配置文件中配置,甚至可以被完全移除,如果你想在一个不必考虑能量消耗的环境中工作的话。 | + | 电脑运行时会依据所做工作消耗能量。某些组件,例如显卡和无线网卡,除了每 tick 会消耗的少量能量外还会根据工作负载大小额外消耗能量。这不仅很真实,同时还能鼓励玩家优化代码,不让OC模组的服务器一直运行无用任务。能量消耗的准确数值可以在配置文件中修改,如果你想在一个不必考虑能量消耗的环境中工作的话,甚至可以完全移除。 |
- | 开放式电脑模组用 [[block:carpeted_capacitor:zh|电容]] 提供静电发电,对于机器人有 [[item:generator_upgrade:zh|发电机升级]] 可用,机器人和无人机还都可用使用 [[item:solar_generator_upgrade:zh|太阳能发电机升级]]。开放式电脑的设备同样可以由 [[:crossmod_interoperation:zh#能量|其它模组]] 的能源当量供电。 | + | 在开放式电脑模组中可以用 [[block:carpeted_capacitor:zh|电容]] 产生静电以供电。此外,[[item:generator_upgrade:zh|发电机升级]]可以用于机器人,[[item:solar_generator_upgrade:zh|太阳能发电机升级]]可以用于机器人和微控制器。开放式电脑的设备也可以由 [[:crossmod_interoperation:zh#能量|其它模组]] 的能源供电。 |
Line 63: | Line 61: | ||
--------------- | --------------- | ||
- | 模组中几乎所有方面都能通过配置文件调整。不是需要能量才能运行的电脑的爱好者?把运行消耗设置到零。不想能量出现在游玩过程中?那么完全禁用它!感觉机器人走的太慢了?让它们快点。想要更多的多方块屏幕?增大最大尺寸。快去查看 [[https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/application.conf|默认配置文件]] 来了解所有配置项。 | + | 几乎模组中的一切都能通过配置文件调整。不喜欢需要能量才能运行的电脑?那就把运行时能量消耗设置到零。完全不想考虑能量?那么完全禁用它!感觉机器人走的太慢了?那就让它们快点。想要更大的多方块屏幕?增大最大尺寸。你可以查看 [[https://github.com/MightyPirates/OpenComputers/blob/master-MC1.7.10/src/main/resources/application.conf|默认配置文件]] 来了解所有配置项。 |
目录 | 目录 | ||
----------- | ----------- | ||
{{page>:contents:zh&noheader&noeditbutton&nouser&nofooter}} | {{page>:contents:zh&noheader&noeditbutton&nouser&nofooter}} |