一个现代的、跨平台的游戏开发集成环境,专为Prism游戏引擎设计。
Prismior是一个类似虚幻引擎和Unity Hub的综合游戏开发环境,提供:
- 项目管理中心 - 项目创建、模板选择、版本管理
- 内置IDE - 代码编辑、语法高亮、自动补全
- 蓝图系统 - 可视化编程、节点编辑器
- 场景编辑器 - 3D/2D场景视图、对象操纵工具
- 实时预览 - 即时模拟、性能监控
- 终端集成 - 命令行界面、脚本执行
- 断点调试 - 调试器集成、断点管理
- 游戏导出 - 多平台打包、资源优化
- GUI框架: egui - 即时模式图形用户界面
- 渲染后端: wgpu - 现代图形API抽象
- 窗口系统: winit - 跨平台窗口创建
- 异步运行时: tokio - 高性能异步I/O
- 序列化: serde - 数据序列化/反序列化
Prismior/
├── src/
│ ├── main.rs # 应用程序入口
│ ├── lib.rs # 核心库定义
│ ├── editor/ # 编辑器核心
│ │ ├── mod.rs
│ │ ├── app.rs # 主应用程序
│ │ ├── workspace.rs # 工作区管理
│ │ └── config.rs # 编辑器配置
│ ├── ui/ # 用户界面
│ │ ├── mod.rs
│ │ ├── panels/ # 面板系统
│ │ │ ├── scene_view.rs # 场景视图面板
│ │ │ ├── inspector.rs # 属性检查器
│ │ │ ├── hierarchy.rs # 层级面板
│ │ │ ├── project.rs # 项目面板
│ │ │ └── console.rs # 控制台面板
│ │ ├── windows/ # 窗口系统
│ │ │ ├── blueprint.rs # 蓝图编辑器
│ │ │ ├── code_editor.rs # 代码编辑器
│ │ │ ├── terminal.rs # 终端窗口
│ │ │ └── debugger.rs # 调试器窗口
│ │ └── widgets/ # UI组件
│ │ ├── node_graph.rs # 节点图组件
│ │ ├── timeline.rs # 时间线组件
│ │ └── property_grid.rs # 属性网格
│ ├── engine_bridge/ # 引擎桥接
│ │ ├── mod.rs
│ │ ├── runtime.rs # 运行时桥接
│ │ ├── preview.rs # 预览系统
│ │ └── communication.rs # 通信协议
│ ├── blueprint/ # 蓝图系统
│ │ ├── mod.rs
│ │ ├── graph.rs # 图结构
│ │ ├── nodes/ # 节点类型
│ │ │ ├── math_nodes.rs # 数学节点
│ │ │ ├── logic_nodes.rs # 逻辑节点
│ │ │ ├── event_nodes.rs # 事件节点
│ │ │ └── custom_nodes.rs # 自定义节点
│ │ └── compiler.rs # 蓝图编译器
│ ├── debugger/ # 调试系统
│ │ ├── mod.rs
│ │ ├── breakpoints.rs # 断点管理
│ │ ├── debugger.rs # 调试器核心
│ │ └── inspector.rs # 调试检查器
│ └── tools/ # 开发工具
│ ├── mod.rs
│ ├── exporter.rs # 导出工具
│ ├── profiler.rs # 性能分析器
│ └── optimizer.rs # 优化工具
├── assets/ # 编辑器资源
│ ├── icons/ # 图标资源
│ ├── fonts/ # 字体资源
│ └── themes/ # 主题配置
├── docs/ # 文档
│ ├── user_guide.md # 用户指南
│ ├── api_reference.md # API参考
│ └── tutorials/ # 教程
└── examples/ # 示例项目
├── 2d_demo/ # 2D演示项目
├── 3d_demo/ # 3D演示项目
└── blueprint_demo/ # 蓝图演示项目
- 项目创建向导
- 模板选择(2D、3D、空项目)
- 最近项目列表
- 项目设置管理
- 多视图布局(透视、正交、顶视图等)
- 对象操纵工具(移动、旋转、缩放)
- 网格和辅助线显示
- 相机控制和导航
- 可视化编程:直观的节点式编程界面
- 丰富节点类型:
- 数学节点:加减乘除、幂函数、三角函数、向量/矩阵运算、插值算法
- 逻辑节点:条件判断、循环控制、分支选择、布尔运算
- 事件节点:游戏事件响应、输入处理、碰撞检测、定时器
- 控制流节点:状态机、行为树、条件分支、序列执行
- 物理节点:刚体操作、碰撞检测、力场控制、射线检测
- 渲染节点:材质控制、光照调节、粒子系统、后期处理
- 音频节点:声音播放、音量控制、3D音频、音频滤波
- AI节点:行为树、路径查找、决策树、机器学习
- 工具节点:调试输出、性能分析、资源管理、日志系统
- 高级功能:
- 拖拽式节点连接和自动布局
- 实时编译和类型检查
- 代码生成和绑定机制
- 性能分析和优化建议
- 蓝图调试和断点支持
- 版本控制和协作编辑
- 语法高亮:支持Rust、GLSL、JSON、TOML等多种语言
- 智能补全:基于上下文的代码补全和API提示
- 错误诊断:实时语法检查和错误提示
- 多文件编辑:标签页式多文件管理
- 高级功能:
- 代码格式化和美化
- 括号匹配和高亮
- 代码折叠和展开
- 快速跳转到定义
- 重构支持(重命名、提取函数等)
- Git集成和变更显示
- 即时场景渲染
- 性能监控面板(帧率、内存、DrawCall)
- 热重载支持
- 调试信息显示
- 内置命令行界面
- 多标签页终端
- 命令历史和自动补全
- 脚本执行环境
- 断点设置和管理
- 步进调试(单步、步入、步出)
- 变量检查和监视
- 调用栈追踪
- 条件断点支持
- 多平台打包(Windows、macOS、Linux)
- 资源优化和压缩
- 发布配置管理
- 一键构建和部署
┌─────────────────────────────────────────────────────────┐
│ [菜单栏] │
├─────────────────────────────────────────────────────────┤
│ [工具栏] [场景视图] │
├─────────────────┬───────────────────────────────────────┤
│ [层级面板] │ [游戏视图] │
│ │ │
│ [项目资源] │ [属性检查器] │
│ │ │
│ [控制台] │ [动画时间线] │
├─────────────────┴───────────────────────────────────────┤
│ [状态栏] │
└─────────────────────────────────────────────────────────┘
- 可停靠面板
- 多标签页文档界面
- 浮动窗口支持
- 自定义布局保存
- 基于wgpu的渲染后端
- 多窗口渲染支持
- 高效的场景图遍历
- 材质和着色器热重载
- 多遍编译:符号表构建、类型检查、代码生成
- 多目标支持:Rust、C++、GLSL、JavaScript、Lua等多种输出格式
- 跨平台编译:Windows、macOS、Linux、WebAssembly、移动平台
- 优化支持:多级别优化、死代码消除、内联展开
- 调试信息:源码映射、变量追踪、性能分析
- 即时执行:编译后立即执行,无需重启
- 热重载:运行时动态更新蓝图逻辑
- 性能监控:执行时间、内存使用、CPU占用实时追踪
- 错误处理:优雅的错误恢复和调试信息
- 多线程支持:并行执行和资源同步
- 自动绑定:蓝图节点自动生成对应的代码函数
- 类型安全:编译时类型检查和转换
- 命名空间管理:避免命名冲突和作用域污染
- 版本控制:蓝图和代码的同步更新追踪
- 文档生成:自动生成API文档和使用示例
- 实时物理模拟:爆炸、风力、漩涡、磁场等物理效果
- 粒子物理:粒子发射器、吸引子、碰撞器系统
- 碰撞检测:AABB、圆形、多边形等多种碰撞检测算法
- 物理材质:摩擦力、弹性、密度等物理属性控制
- 视觉调试:物理效果可视化调试和参数调节
- 快照管理:创建和恢复蓝图版本快照
- 操作历史:记录所有编辑操作,支持撤销/重做
- 差异比较:可视化版本差异和变更追踪
- 自动保存:定时自动保存和恢复
- 协作支持:多人协作编辑和冲突解决
- 智能吸附:网格吸附、节点吸附、角度吸附
- 视觉反馈:悬停高亮、拖拽预览、连接指示
- 多模式交互:选择、连接、平移、缩放等多种交互模式
- 上下文感知:根据当前操作自动调整指针行为
- 辅助工具:测量工具、对齐辅助、分布工具
- DWARF调试信息解析
- 源码级单步执行
- 变量值实时更新
- 内存和寄存器检查
- 动态模块加载
- 脚本化扩展
- 自定义节点类型
- 编辑器主题和工具
- 基础项目结构和配置
- egui集成和主界面框架
- 窗口和面板系统
- 多文档界面支持
- 项目管理中心框架
- 资源浏览器和导入器框架
- 基础场景编辑器框架
- 属性检查器面板
- 代码编辑器集成(语法高亮、自动补全)
- 蓝图系统基础框架
- 蓝图可视化编程系统(完整节点系统、编译执行、代码绑定)
- 代码编辑器集成(语法高亮、自动补全、多文件编辑)
- 实时预览和模拟框架(性能监控、调试覆盖层)
- 终端和调试器集成
- 物理效果系统(爆炸、风力、漩涡、磁场效果)
- 版本控制系统(快照、回滚、撤销/重做)
- 交互指针系统(智能吸附、悬停高亮、拖拽预览)
- 高级3D场景编辑器
- 粒子系统编辑器
- 动画状态机编辑器
- 游戏导出和打包
- 性能分析工具
- 版本控制集成
- 插件系统
- CPU: Intel Core i5-7200U 或同等AMD处理器
- 内存: 8GB RAM
- 磁盘: 2GB 可用空间
- 显卡: 支持Vulkan 1.1+ 或 D3D12 的独立显卡
- 操作系统: Windows 10+、macOS 11.0+、Ubuntu 20.04+
- CPU: Intel Core i7-8700K 或同等AMD处理器
- 内存: 16GB RAM
- 磁盘: 10GB SSD可用空间
- 显卡: NVIDIA RTX 2060 或 AMD RX 5700 级别显卡
# 安装Rust工具链
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
# 安装系统依赖(Linux)
sudo apt-get install libxcb-composite0-dev libxkbcommon-dev
# 克隆项目
git clone <repository-url>
cd prismior
# 构建依赖
cargo build# 调试构建
cargo build
# 运行编辑器
cargo run
# 运行测试
cargo test
# 生成文档
cargo doc --open# 优化构建
cargo build --release
# 跨平台构建
cargo build --release --target x86_64-pc-windows-msvc
cargo build --release --target x86_64-apple-darwin
cargo build --release --target x86_64-unknown-linux-gnu- 启动Prismior编辑器
- 点击"新建项目"按钮
- 选择项目模板(2D、3D或空项目)
- 设置项目名称和保存位置
- 点击"创建"完成项目初始化
- 在项目浏览器中双击场景文件打开
- 使用场景视图导航(鼠标中键旋转,滚轮缩放)
- 在层级面板中选择对象进行编辑
- 在属性检查器中修改对象属性
- 在工具栏中点击"蓝图编辑器"
- 从节点面板拖拽节点到画布
- 连接节点引脚创建逻辑流程
- 点击"编译"验证蓝图正确性
- 点击"播放"按钮启动预览模式
- 在控制台查看调试信息
- 使用调试器设置断点和检查变量
- 在终端中执行自定义命令
use prismior::blueprint::{Node, NodeType, Pin};
pub struct CustomNode {
id: NodeId,
position: Vec2,
}
impl Node for CustomNode {
fn node_type(&self) -> NodeType {
NodeType::Custom("MyNode".to_string())
}
fn execute(&self, inputs: &HashMap<PinId, Value>) -> HashMap<PinId, Value> {
// 实现节点逻辑
let mut outputs = HashMap::new();
// 处理输入并生成输出
outputs
}
}use prismior::plugin::{Plugin, PluginMetadata};
pub struct MyPlugin;
impl Plugin for MyPlugin {
fn metadata(&self) -> PluginMetadata {
PluginMetadata {
name: "My Plugin".to_string(),
version: "1.0.0".to_string(),
author: "Your Name".to_string(),
}
}
fn initialize(&mut self, editor: &mut Editor) {
// 插件初始化逻辑
}
fn shutdown(&mut self) {
// 插件清理逻辑
}
}欢迎社区贡献!请遵循以下步骤:
- Fork项目仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 创建Pull Request
- 使用
rustfmt格式化代码 - 编写单元测试和集成测试
- 更新相关文档
- 遵循语义化版本规范
Prismior使用 MIT 许可证。详见LICENSE文件。
- 问题反馈: 在GitHub上提交Issue
- 功能请求: 创建Feature Request
- 讨论交流: 参与GitHub Discussions
- 文档贡献: 改进项目文档
感谢所有为这个项目做出贡献的开发者和开源社区!
特别感谢:
- egui团队 - 出色的即时模式GUI框架
- wgpu团队 - 现代图形API抽象层
- Rust社区 - 优秀的语言和生态系统
- Prism引擎团队 - 强大的游戏引擎基础
展示蓝图可视化编程的完整工作流程:
# 运行蓝图演示
cargo run --example blueprint_demo
# 这将生成以下文件:
# - examples/generated_blueprint.rs # 编译后的蓝图代码
# - examples/sample_game.rs # 示例游戏代码
# - examples/blueprint_bindings.rs # 蓝图绑定代码展示蓝图编辑器的增强功能:
# 运行高级功能演示
cargo run --example advanced_demo
# 演示内容包括:
# - 物理效果系统(爆炸、风力、漩涡)
# - 版本控制和回滚功能
# - 交互指针和智能吸附
# - 实时预览和性能监控
# - 代码编辑器集成展示内置IDE的强大功能:
# 创建新项目
cargo new my_prism_game
cd my_prism_game
# 使用Prismior编辑器打开项目
cargo run --bin prismior -- --project .
# 在编辑器中:
# 1. 点击"代码编辑器"打开IDE
# 2. 创建新的Rust文件(src/game.rs)
# 3. 享受语法高亮和自动补全
# 4. 使用蓝图系统创建游戏逻辑
# 5. 实时预览和调试游戏-
创建蓝图图表:
use prismior::blueprint::*; let mut graph = BlueprintGraph::new("我的游戏逻辑".to_string());
-
添加节点:
// 添加数学节点 let add_node = BlueprintNode::new( NodeType::Math(MathOperation::Add), egui::Vec2::new(100.0, 100.0) ); let add_node_id = graph.add_node(add_node); // 添加物理节点 let physics_node = create_physics_node( PhysicsType::Rigidbody, egui::Vec2::new(200.0, 100.0) ); let physics_node_id = graph.add_node(physics_node);
-
连接节点:
let connection = Connection { id: "conn_1".to_string(), from_node: add_node_id, from_pin: "result".to_string(), to_node: physics_node_id, to_pin: "mass".to_string(), }; graph.add_connection(connection);
-
版本控制:
// 创建版本快照 version_control.create_snapshot( &graph, "游戏逻辑v1.0".to_string(), "完成基础游戏逻辑".to_string() ); // 撤销操作 if undo_redo.can_undo() { undo_redo.undo(); }
-
物理效果:
// 创建爆炸效果 let explosion_id = physics_manager.create_explosion( Vec2::new(400.0, 300.0), 100.0, 50.0 ); // 更新物理模拟 physics_manager.update_physics(1.0 / 60.0);
-
编译和执行:
let mut compiler = BlueprintCompiler::new(); let compiled_code = compiler.compile(&graph)?; let mut executor = BlueprintExecutor::new(); executor.execute(&compiled_code)?;
蓝图系统可以自动生成对应的代码绑定:
// 蓝图自动生成的绑定代码
#[blueprint_node]
fn add_node(a: f32, b: f32) -> f32 {
a + b
}
#[blueprint_node]
fn player_movement(speed: f32, delta_time: f32) -> Vec3 {
Vec3::new(speed * delta_time, 0.0, 0.0)
}
#[blueprint_main]
fn execute_game_logic() {
let player_pos = player_movement(10.0, 0.016);
// 游戏逻辑执行...
}Prismior - 让游戏开发更简单、更强大! 🎮✨