这个项目能做什么
Fio 是一个统一的世界编辑器、实时引擎和游戏创作工具包,用于构建、编辑和运行第一人称、俯视视角以及大规模世界。它受到经典 Radiant 和 Hammer/Worldcraft 工作流的启发,并以效率优先为设计理念,面向低功耗 ARM 硬件。
其核心思想是编辑器与运行时操作同一实时世界状态。按下 Play 不会将关卡导出、编译或烘焙为单独的运行时表示;世界只是继续运行。该项目将此描述为“地图即程序,编辑器即引擎”。
编辑与玩法功能包括经典笔刷/CSG 编辑,支持任意凸多面体;受 Source 启发的实体 I/O 玩法;以及 LogicState——直接附加到世界对象上的持久化类型化状态(字符串、整数、浮点数、布尔值、空值、UUID)。原生系统包括逻辑门、继电器、计时器、触发器、移动体和门、物理、道具、寻路、玩家出生点、程序化地形和世界传送门。玩法可以通过实体、输入、输出、状态和空间关系来组装,而不是依赖传统的脚本代码库。
对于大型世界,基于网格的空间索引支持可见性、距离查询、模拟驻留、物理同步、实体查找和剔除。BigWorld 在此基础上构建,在完整、精简和休眠模拟状态之间移动实体,而不是每帧对每个对象进行相同处理。批量数值工作——空间计算、变换、剔除、物理同步和实体索引——使用密集 NumPy 数组处理,而不规则或高度有状态的操作仍使用标量 Python。
渲染使用精简的 OpenGL 3.3 Core 渲染器,直接操作 NumPy 数组,支持动态光照、动态阴影、雾、玻璃、水、视锥和距离剔除、GLB 资产,以及第一人称和俯视视角相机模式。原生世界传送门使用模板缓冲区遮罩和斜近平面裁剪,在任意位置之间提供非欧几里得连接,无需 BSP、VIS/PVS 预处理或离线可见性编译。
其他功能包括带示例插件的插件架构、通过 .fiopak 归档进行可移植世界打包、程序化世界生成和实验性地图生成工具,以及本地分屏多人游戏。项目提供 Windows、macOS 和 Linux 的二进制文件,也可以从源码运行或通过附带的 Dockerfile 运行。从源码运行需要 Python 3.10+,并在启动 main.py 前安装 requirements.txt。文档可在项目 wiki 中获取,仓库说明项目正在积极开发中,欢迎贡献和实验。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。