Skip to content

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

OpenInfiniFactory

Ask DeepWiki

一款受 Infinifactory 启发的 3D 方块工厂解谜游戏。


方块

下面是目前最核心的两类可放置方块。工厂方块是解题时用的机关与产线;系统方块是出题时定义「从哪来、要到哪去、中间怎么加工」的规则。有些工厂方块会在运转时自动长出焊接点、钻头之类你看不见的附属部件。

同一种方块往往有变体(比如活塞和阻拦器),按 C 可以切换。

工厂方块

造好后会跟着工厂一起受力;很多机关通电了才会动。

方块 功能
平台方块 最基础的工厂方块用于连接结构
传送带 / 反向传送带 可以运输皮带上的结构。有时也会让自己移动
活塞 / 阻拦器 通电后会推出其前面的方块!
抬升器 使其上方的结构获得悬浮效果
旋转器 / 逆向旋转器 能将结构进行旋转
焊接器 / 向下焊接器 将材料们焊接为一体!
电线 用于连接电信号。
方块识别器 / 向下方块识别器 朝向面看到平台、材料或激光时,发出信号
钻头 给结构做雕刻
激光 通电时射出激光摧毁方块,也可用于激活方块识别器
镜子 可以反射激光
吸盘 通电时可牢牢吸住结构

和 InfiniFactory 不一样的地方。

  1. 方块传感器现在只会检测为平台方块和材料方块,而非所有方块。
  2. 新增吸盘、折射镜、面板灯等功能。方块传感器还会检测激光。
  3. 方块检测器不会给相邻的用电器供电。方块的可用连接面与模型更匹配。
  4. 没有计数器。
  5. 更自由的关卡自定义编辑器

系统方块

用于制造谜题

方块 功能
生成块 按设定定时吐出材料
验收块 规定这一关要交什么货才算过
印花器 / 滚刷器 在材料表面盖章,后面的机关能认
转换器 根据面上的标记,把材料变成另一种
传送入口块 / 传送出口块 成对使用,把材料从入口送到出口

东西焊在一起之后,材料会跟着一整坨走;工厂机关铺好的连通关系在运行过程中一般不会再变。


系统架构

模拟核心在独立 crate oif-sim;主 crate 负责表现桥接、UI、场景与 HTTP 调试。回合逻辑收敛到 simulate_turn()(四阶段),输出 TurnOutput;入口不得复制回合逻辑。

flowchart TB
    subgraph runtime["主 crate"]
        UI["UI 与输入<br/>game/ui · game/systems"]
        Render["场景渲染<br/>scene/ · game/world"]
        Bridge["表现桥接 + 预取<br/>sim_bridge/"]
        HTTP["HTTP 调试<br/>debug_http/"]
    end

    subgraph core["crates/oif-sim"]
        SimTurn["simulate_turn()<br/>四阶段回合"]
        Session["SimSession"]
        State["WorldBlocks · StructureState · …"]
    end

    UI --> Bridge
    Render --> Bridge
    Bridge --> SimTurn
    Bridge --> Session
    HTTP --> Session
    SimTurn --> State
    Session --> State
Loading
模块 职责
crates/oif-sim 世界、方块 Meta/Behavior、simulate_turn、无头会话;TurnOutput 含运动 / 激光等纯数据 DTO
sim_bridge/ 表现编排 + 预取(present / SimulationWorker / TurnCache);会话类型 re-export 自 oif-sim
运行时 入口 窗口 用途
游戏客户端 cargo run 有 游玩、编辑;预取 + 增量渲染
无头模拟 cargo run --bin oif-debug-http 无 CI、脚本

HTTP 调试可嵌入(--debug-http)或独立无头;共用 debug_http/protocol.rs。详见 docs/report/architecture.md。


构建与运行

# 游戏客户端
cargo run

# 附带 HTTP 调试(默认 127.0.0.1:8765)
cargo run -- --debug-http

# 无头模拟 + HTTP(CI / 脚本)
cargo run --bin oif-debug-http

cargo run 后的参数写在 -- 后面。完整列表也可 cargo run -- --help。

参数 说明
--debug-http 游戏内嵌 HTTP 调试,监听 127.0.0.1:8765
--debug-http=PORT / --debug-http-port PORT 同上,指定端口
--load-save=PATH 启动后直接加载存档并进入世界(客户端与无头均可用;支持 Puzzle / Solution / Free)
--config=PATH 使用指定 config.ron,而不是默认 saves/config.ron
--language=en / --language=zh-CN 本次启动覆盖 UI 语言(也接受 zh、chinese 等别名)
--touch / --virtual-remote 强制开启虚拟遥感(桌面调试触摸布局)
-h / --help 打印启动帮助并退出

--load-save 路径示例:

cargo run -- --load-save=Important_Test
cargo run -- --load-save=Important_Test/solutions/Solution1
cargo run -- --load-save=free_sandbox

相对路径相对存档根目录;也可传绝对路径(会自动剥掉 saves 前缀)。谜题、解法与自由模式槽位写法见上。

常用组合:

# 桌面强制触摸遥感 + 直接进解法
cargo run -- --touch --load-save=Important_Test/solutions/Solution1

# 游戏内嵌调试 HTTP,自定义端口
cargo run -- --debug-http=9000

# 无头服务加载存档
cargo run --bin oif-debug-http -- --load-save=Important_Test --debug-http=8765

环境变量(桌面端):

变量 说明
OPEN_INFINIFACTORY_ASSET_DIR 覆盖资源目录
OPEN_INFINIFACTORY_SAVES_DIR 覆盖存档目录

多平台打包

产物输出至 dist/。src/shared/platform.rs 统一资源与存档路径解析(见上方环境变量)。

平台 脚本
macOS scripts/package_macos_app.sh
Linux scripts/package_linux.sh
Windows scripts/package_windows.ps1
Android scripts/package_android.sh(环境准备)
Web scripts/package_web.sh(输出 dist/web;需 ~/.cargo/bin/trunk)

项目状态

核心玩法、工厂与系统方块、增量渲染与 HTTP 调试已贯通;关卡工具和跨平台体验仍在打磨中。


借物表

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages