文章

Games104(0·课程目录、文件解读、编译运行、主要功能)

games104 目录

课程分为3部分,共22节课

  • 架构概述
    • 导论
    • 分层
    • 渲染中的数学
  • 各核心系统原理
    • 大气和云
    • 渲染管线
    • 后处理
    • 动画技术
    • 物理系统
    • 粒子
    • 工具链
    • gameplay
    • 网络
  • 前沿领域简述
    • 动态GI
    • GPU
  • piccolo源码解读

v0.09

文件解读:

配套的Piccolo_迷你引擎共有9个版本迭代,核心代码是c++,版本控制工具是git,构建工具是cmake

  • 以‘ . ‘开头的文件/文件夹,是各个工具的配置文件
  • cmake和cmakelists.txt是cmake用于生成构建文件的配置文件
  • scripts和build + 平台 开头的文件,bat批处理文件,为了方便构建写的脚本文件
  • LICENSE,README,releasenotes自述等
  • engine引擎相关:
    • 3rdparty 第3方库的源码/2进制文件
      • glfw 管理窗口、图形API上下文、输入和事件循环 的跨平台库
      • glm 数学库
      • imgui 用户ui库
      • json11 数据序列化库
      • spdlog 日志库
      • stb 实用工具库
      • tinyobjloader 轻量级OBJ模型加载器
      • vulkanmemoryallocator Vulkan内存分配库(简化GPU内存管理)
      • vulkanSDK 图形APISDK
    • asset 引擎默认关卡相关资产
    • bin 包含parser解析器文件,是构建时为模板文件生成功能性代码
    • configs引擎启动时需要的配置文件
    • jolt-asset物理库相关的shader
    • shader引擎启动需要的shader
    • template c++模板文件
    • source引擎源码
      • _generated为模板文件生成功能性代码
      • editor编辑器源码
      • meta_parser解析器源码
      • precompile包含camke脚本和配置文件,使得cmake在构建前使用parser解析源码
      • runtime核心源码
        • core核心层:提供软件系统常用模块
          • 基础库 base (宏、哈希)
          • 色彩 color
          • 数学库 math
          • 元数据系统 meta
            • 反射 reflection
            • 序列化/反序列化 serializer
          • 日志系统 log
        • function功能层:提供引擎功能模块。分为框架和子系统两部分
          • 框架framework:运行时功能核心框架
            • 世界管理器 world_manager 负责管理世界的加载、卸载、保存,和tick下属当前关卡。
              • 关卡 level 负责加载、卸载、保存关卡。同时关卡也管理下属GO的tick、创建和删除。
                • 游戏对象 object 负责加载、保存GO。同时GO也管理下属组件
                  • 组件component全都继承自 component.h 中的 Component 类,目前组件包括:
                    • 动画 animation
                    • 相机 camera
                    • 网格 mesh
                    • 运动 motor
                    • 粒子 particle
                    • 刚体 rigidbody
                    • 变换 transform
          • 子系统
            • 动画 animation
            • 角色 character
            • 控制器 controller
            • 全局上下文 global
            • 输入 input
            • 粒子 particle
            • 物理 physics
            • 渲染 render
            • UI ui
        • platform平台层:提供操作系统/平台相关的底层功能
          • 文件系统 file_service
          • 路径 path
        • resource资源层:提供各种资产加载、保存功能,资产的结构化数据定义和相关路径配置等
          • 资产系统 asset_manager
          • 配置系统 config_manager
          • 结构化数据定义 res_type
            • 全局数据 global
              • 全局粒子设置 global_particle
              • 全局渲染配置 global_rendering
            • 通用数据 common
              • 世界 world
              • 关卡 level
              • 对象 object
            • 组件数据 components
              • 动画 animation
              • 相机 camera
              • 粒子发射器 emitter
              • 网格 mesh
              • 运动 motor
              • 刚体 rigid_body
            • 其他数据 data
              • 动画片段 animation_clip
              • 动画骨骼节点 animation_skeleton_node_map
              • 基本形状 basic_shape
              • 动画混合状态 blend_state
              • 相机配置 camera_config
              • 材质 material
              • 网格数据 mesh_data
              • 骨骼 skeleton_data
              • 骨骼掩膜 skeleton_mask
        • engine文件引擎入口点
      • test用于存放测试代码

runtime文件夹下文件内存分布

1741076271724

function > core > resource > engine > platform

构建运行

确保cmake已安装和path配置成功

打开vscode执行下列指令:

  • cmake . -B build 指定当前文件夹为工程根目录,生成构建文件到build文件夹里面
  • cmake –build build 使用编译器构建项目
  • bin/PiccoloEditor 运行可执行文件

注:此处运行v0.02

1741089797985

主要功能:

  • game engine 游戏界面
    • 渲染场景
      • 天空盒
      • 光照模型
      • 实时阴影
      • 纹理
      • 模型导入
    • editormode
      • 编辑器摄像机移动,旋转视角,缩放视角
      • 鼠标点击选择物体,并在物体位置出现Gizmos,具体出现什么点击上方的trans,rotate,scale切换
    • game mode
      • 游戏摄像机视角
      • 鼠标被限制在窗口
      • 骨骼动画
      • 碰撞体
  • file content 资产文件
    • 关联工程的asset文件夹,目前只是可读
  • world objects 世界中的对象
    • 和世界中的对象关联
  • components details 组件的细节
    • 每个对象都有名称
    • transformComponent组件,可以实时修改世界位置,旋转,缩放
    • meshComponent显示网格体资产的路径
    • RigidBodyComponent刚体组件,碰撞
    • animationComponent骨骼资产路径,混合动画路径
    • MotorComponent运动组件,包含speed
    • CameraComponent相机组件,可以修改相机的forward,up,left轴
  • menu 菜单(序列化)
    • reload current level重新加载当前关卡
    • save current level保存当前关卡
    • exit退出

其他功能:

  • 用户界面可以拖放和停靠
  • pilot窗口的大小
本文由作者按照 CC BY 4.0 进行授权
本页总访问量