2021SC@SDUSC


一、概述

第一篇综述主要介绍我们分析的项目和一些暂定的分工。这个过程将通过项目网站和项目部署的过程进行。

Flax Engine是一款开源的轻量级游戏引擎,跨平台支持(Windows、Linux、Android、PS4.Switch、Xbox One、Xbox Series X/S、UWP...),是由游戏开发者为游戏开发者制作的一整套游戏开发工具。

网站地址:

Flax - Flax Engine

Flax Engine前身是由波兰的Wojtek Figat作为首席开发人员开发的Celelej,目前已更新到Flax1.2版本。Flax1.0于2020年底推出同时开放源代码,有关引擎开发过程的更多内容可到官方网站上自行查看开发博客。


二、软件

因下载安装Flax Launcher的过程较为简单,不再赘述,以下是安装好后的软件截图:

仅下载Launcher App是无法进行游戏开发的,需要在客户端的Engine界面下载对应版本的Flax Engine。

编辑器Editor:


三、项目部署

接下来将介绍项目源码部署过程 。

首先登陆Flax官网,点击GET STARTED NOW:

进入下载页面,该页面最底部即该项目源码地址,也可点击此处进入GitHub:

下图是项目所在,我们现在主要关注源代码部分:

点击FlaxEngine进入:  

我们首先看它的README部分,它一般会介绍项目部署的方法和一些注意事项。因此,我们在其中看到了Windows系统下部署该项目的方法:

用于 Visual Studio 的 Flax 插件

Flax Visual Studio 扩展提供更好的编程工作流、C# 脚本调试功能,并允许附加到正在运行的引擎实例以调试 C# 源代码。我们可以直接使用Visual Studio搜索该插件安装。

Windows

  • 安装 Visual Studio 2015 或更新版本
  • 安装 Windows 8.1 SDK 或更新版本
  • 安装 Microsoft Visual C++ 2015 v140 工具集或更新版本(下载安装Visual Studio的过程不在该博客阐述)
  • 克隆源码(使用 LFS)
  • 运行GenerateProjectFiles.bat
  • 打开Flax.sln并将解决方案配置设置为Editor.Development和解决方案平台为Win64
  • 将 Flax (C++) 或 FlaxEngine (C#) 设置为启动项目
  • 编译 Flax 项目(按 F7 或 CTRL+Shift+B)
  • 运行Flax(按 F5 键)

下载安装VS的过程不在该博客阐述,请读者自行搜索其他博客。我将直接从克隆源码仓库开始:

(1)Clone repo

点击右上角的Code,复制URL:

这里我们注意到上面项目的README.md中Clone repo(with LFS)也就是说,这里我们需要用到Git的大项目管理工具LFS(提到LFS,全称Git Large File Storage,GitHub 限制了存储库中允许的文件大小。要跟踪超出此限制的文件,需要使用 Git Large File Storage),也就是说Flax Engine的源代码大小超过了100MB,Git LFS 具体使用方法可到GitHub文档的存储库/处理文件/管理大文件查看,这里我们不需要管理,仅需要下载编译,使用更简单的方式。

下载GitHub Desktop,新版本的GitHub Desktop自带LFS,我们将上面复制的源代码下载URL粘贴到此处,接下来就等待项目下载完毕:

下载完毕: 

(2)运行GenerateProjectFiles.bat

(3)使用VS进行项目编译

在解决方案处找到Flax.sln:

点击后项目结构变更为(请忽略此处的已忽略标志,因为我更改分支后未重新编译):

按步骤将解决方案配置设置为Editor.Development和解决方案平台为Win64 ,将 Flax (C++) 或 FlaxEngine (C#) 设置为启动项目:

点击编译( F7 or CTRL+Shift+B):

编译完成:

运行FlaxEngine(C#),因为运行Flax(c++)需要打开具体Flax项目,这里不做演示:

至此,项目部署完毕。

四、项目结构

我们首先看看官方文档给出的项目结构:

如下:

工作区目录

  • Binaries/ - 可执行文件

    • Editor/ -Flax Editor二进制文件
    • Tools/ - 工具二进制文件
  • Cache/ - 引擎和工具使用的本地数据缓存文件夹
    • Intermediate/ - 引擎构建的中间文件和缓存

      • ProjectName / - 每个项目的构建缓存数据
      • Deps/ - Flax.Build 依赖项构建缓存
    • Projects/ - 项目文件位置
  • Content/ - 引擎和编辑器使用的资产和二进制文件
  • Development/ - 引擎开发文件
    • Scripts/ - 实用程序脚本
  • packages/ - Nuget 包缓存位置
  • Source/ - 源代码涂层
    • Editor/ - Flax 编辑器源代码
    • Engine/ - Flax 引擎源代码
    • Platforms/ - 每个平台的源和依赖文件
      • DotNet/ - C# 依赖项
      • Editor/ -亚麻编辑器二进制文件
      • PlatformName / - 每个平台的文件
        • Binaries/ - 每个平台的二进制文件

          • Game/ - 亚麻游戏二进制文件
          • Mono/ - Mono 运行时文件和数据
          • ThirdParty/ - 预构建第三方二进制文件
    • Shaders/ - 着色器源代码
    • ThirdParty/ - 第三方源代码
    • Tools/ - 开发工具源代码

再来看一下我们编译之后的目录:

这里将c++代码和c#代码分离了,具体原因和区别我暂时不清楚,不过也能明显看到一些第三方工具和平台支持是使用c++。

接下来是引擎的目录结构:

接下来我的工作是分析引擎渲染部分的代码,也就是Renderer和Render2D的部分,但后续是否会增加其他部分的分析需要根据后续分析的情况而定。

和我同组的其他组员将分析引擎其他一些部分的代码。

以上是这次项目的综述,了解并部署了项目,后续将进行源码的分析阶段,也是学习的过程。

游戏引擎Flax Engine源码分析(一)综述相关推荐

  1. 游戏引擎Flax Engine源码分析(十一)渲染

    2021SC@SDUSC 一.概述 这篇博客继续分析2D渲染的后续内容. 二.分析 函数DrawBezier()绘制贝塞尔曲线.参数:p1起点.p2第一个控制点.p3第二个控制点.终点.color线条 ...

  2. 游戏引擎Flax Engine源码分析(十四)总结

    一.简述 这篇文章简单的对整个2D渲染做一个总结,也是对这次项目分析进行一次总结. 二.分析 从项目概述中我们就已经能够看出,Flax Engine作为一个融合Unity3D以及UE4的游戏引擎,其项 ...

  3. 游戏引擎Flax Engine源码分析(十二)渲染

    2021SC@SDUSC 一.简述 在之前的博客中我们已经吧2D渲染中大部分内容都分析结束,接下来这篇博客将会对剩余内容进行分析,如字体等... 二.分析 首先是几个头文件: (一).font.h 结 ...

  4. 游戏引擎Flax Engine源码分析(十)渲染

    2021SC@SDUSC 一.概述 这篇博客我们继续之前的内容,分析2D渲染. 二.分析 接下来的大多数渲染方法,诸如 绘制纹理,绘制Sprite,绘制纹理(使用点采样器),绘制Sprite(使用点采 ...

  5. 游戏引擎Flax Engine源码分析(二)渲染

    2021SC@SDUSC 之后几篇博客主要围绕Flax Engine的渲染部分做分析,因此在源代码分析开始前将简单介绍一下渲染,让整个学习过程更加完整. 由于本人是边学习相关知识边进行代码分析,因此开 ...

  6. 游戏引擎Flax Engine源码分析(三)渲染2

    2021SC@SDUSC 一.简述 这篇博客将继续上一篇未完成的内容,也就是分析Render2D的具体内容,包括一些函数的具体实现,一部分结构体等. Render2D.cpp作为2D渲染部分最主要的部 ...

  7. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(二)——ImGui

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(二) 前言 案例分析 程序框架 1.基本案例 2.实现定制绑定/定制引擎 渲染函数 总结 前言 本篇我们来分析 ...

  8. <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(五)——Plugins

    <2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(五)--Plugins 前言 DataDispatcher DDSource DDTarget IPlugin ...

  9. <2021SC@SDUSC>【Overload游戏引擎】OvCore源码模块分析(六)——SceneSystem

    <2021SC@SDUSC>[Overload游戏引擎]OvCore源码模块分析(六)--SceneSystem 前言 SceneSystem Scene SceneManager 总结 ...

最新文章

  1. 杭州/北京/新加坡 | 蚂蚁集团数字身份团队招聘计算机视觉算法实习生
  2. string类有可以调换方向的函数吗_深度剖析C++中的inline函数
  3. 关于position的四个标签
  4. pdf从结构新建书签_强力推荐一款PDF神器
  5. 分组求和计算_excel聚合、累计、分组累计、分组聚合函数
  6. 989. 数组形式的整数加法
  7. 《大道至简》第一章读后感(java伪代码)
  8. SELinux 案例 1
  9. DEVC++中的 “万能头文件” <bits/stdc++.h>
  10. win10壁纸不能幻灯片放映_如何设置Win10桌面壁纸幻灯片放映? 设置Win10桌面壁纸幻灯片放映的方法...
  11. 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
  12. java本地文件上传
  13. 图文并茂简介如何查询文章是否被SCI收录以及获取SCI索引号
  14. 【论文速读】【金融】Predicting stock and stock price index movement using ... and machine learning techniques
  15. Mac Ps cc2017 下载
  16. JavavEE中网络编程Socket套接字Ⅱ(TCP)
  17. 小学老师如何与不同性格的家长沟通?
  18. JavaIO系统解析
  19. 利用策略组限制特定软件的运行
  20. git status怎么操作_git操作-方向对了,就不怕路远了!-51CTO博客

热门文章

  1. 欧美软件/IT高端外包项目的竞争和管理 高管研修班
  2. 齐岳Sulfo-EGS交联剂|cas167410-92-6|乙二醇双(磺基琥珀酰亚胺基琥珀酸酯)垫片臂长/间隔长度16.1 Å
  3. AlphaGo对战李世石谁能赢?两万字长文深挖围棋AI技术(二)
  4. npm install @antv/xflow无法下载该依赖
  5. 安卓读取蓝牙BLE设备信息
  6. 怎么在windows笔记本使用html,聊聊如何用笔记本电脑装逼
  7. Android音视频编辑库,Android音视频处理.pdf
  8. php 中文简体和繁体的转换
  9. Linux音频设备两种框架OSS和ALSA驱动
  10. 物联网终端设备软件可靠性分析