Skip to content

A Game Engine Editor written in Rust, provides different features and better functions

Notifications You must be signed in to change notification settings

makkichan947/Prismior

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Prismior - Prism游戏引擎编辑器

一个现代的、跨平台的游戏开发集成环境,专为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/         # 蓝图演示项目

核心功能模块

1. 项目管理中心

  • 项目创建向导
  • 模板选择(2D、3D、空项目)
  • 最近项目列表
  • 项目设置管理

2. 场景编辑器

  • 多视图布局(透视、正交、顶视图等)
  • 对象操纵工具(移动、旋转、缩放)
  • 网格和辅助线显示
  • 相机控制和导航

3. 蓝图系统

  • 可视化编程:直观的节点式编程界面
  • 丰富节点类型
    • 数学节点:加减乘除、幂函数、三角函数、向量/矩阵运算、插值算法
    • 逻辑节点:条件判断、循环控制、分支选择、布尔运算
    • 事件节点:游戏事件响应、输入处理、碰撞检测、定时器
    • 控制流节点:状态机、行为树、条件分支、序列执行
    • 物理节点:刚体操作、碰撞检测、力场控制、射线检测
    • 渲染节点:材质控制、光照调节、粒子系统、后期处理
    • 音频节点:声音播放、音量控制、3D音频、音频滤波
    • AI节点:行为树、路径查找、决策树、机器学习
    • 工具节点:调试输出、性能分析、资源管理、日志系统
  • 高级功能
    • 拖拽式节点连接和自动布局
    • 实时编译和类型检查
    • 代码生成和绑定机制
    • 性能分析和优化建议
    • 蓝图调试和断点支持
    • 版本控制和协作编辑

4. 代码编辑器

  • 语法高亮:支持Rust、GLSL、JSON、TOML等多种语言
  • 智能补全:基于上下文的代码补全和API提示
  • 错误诊断:实时语法检查和错误提示
  • 多文件编辑:标签页式多文件管理
  • 高级功能
    • 代码格式化和美化
    • 括号匹配和高亮
    • 代码折叠和展开
    • 快速跳转到定义
    • 重构支持(重命名、提取函数等)
    • Git集成和变更显示

5. 实时预览系统

  • 即时场景渲染
  • 性能监控面板(帧率、内存、DrawCall)
  • 热重载支持
  • 调试信息显示

6. 终端集成

  • 内置命令行界面
  • 多标签页终端
  • 命令历史和自动补全
  • 脚本执行环境

7. 调试系统

  • 断点设置和管理
  • 步进调试(单步、步入、步出)
  • 变量检查和监视
  • 调用栈追踪
  • 条件断点支持

8. 导出系统

  • 多平台打包(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

使用指南

创建新项目

  1. 启动Prismior编辑器
  2. 点击"新建项目"按钮
  3. 选择项目模板(2D、3D或空项目)
  4. 设置项目名称和保存位置
  5. 点击"创建"完成项目初始化

场景编辑

  1. 在项目浏览器中双击场景文件打开
  2. 使用场景视图导航(鼠标中键旋转,滚轮缩放)
  3. 在层级面板中选择对象进行编辑
  4. 在属性检查器中修改对象属性

蓝图编程

  1. 在工具栏中点击"蓝图编辑器"
  2. 从节点面板拖拽节点到画布
  3. 连接节点引脚创建逻辑流程
  4. 点击"编译"验证蓝图正确性

预览和调试

  1. 点击"播放"按钮启动预览模式
  2. 在控制台查看调试信息
  3. 使用调试器设置断点和检查变量
  4. 在终端中执行自定义命令

扩展开发

自定义节点

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) {
        // 插件清理逻辑
    }
}

贡献指南

欢迎社区贡献!请遵循以下步骤:

  1. Fork项目仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 提交更改:git commit -m 'Add amazing feature'
  4. 推送分支:git push origin feature/amazing-feature
  5. 创建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. 实时预览和调试游戏

蓝图编程工作流程

  1. 创建蓝图图表

    use prismior::blueprint::*;
    
    let mut graph = BlueprintGraph::new("我的游戏逻辑".to_string());
  2. 添加节点

    // 添加数学节点
    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);
  3. 连接节点

    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);
  4. 版本控制

    // 创建版本快照
    version_control.create_snapshot(
        &graph,
        "游戏逻辑v1.0".to_string(),
        "完成基础游戏逻辑".to_string()
    );
    
    // 撤销操作
    if undo_redo.can_undo() {
        undo_redo.undo();
    }
  5. 物理效果

    // 创建爆炸效果
    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);
  6. 编译和执行

    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 - 让游戏开发更简单、更强大! 🎮✨

About

A Game Engine Editor written in Rust, provides different features and better functions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published