2021SC@SDUSC
一、概述
第一篇综述主要介绍我们分析的项目和一些暂定的分工。这个过程将通过项目网站和项目部署的过程进行。
Flax Engine是一款开源的轻量级游戏引擎,跨平台支持(Windows、Linux、Android、PS4.Switch、Xbox One、Xbox Series X/S、UWP...),是由游戏开发者为游戏开发者制作的一整套游戏开发工具。
网站地址:
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的部分,但后续是否会增加其他部分的分析需要根据后续分析的情况而定。
和我同组的其他组员将分析引擎其他一些部分的代码。
以上是这次项目的综述,了解并部署了项目,后续将进行源码的分析阶段,也是学习的过程。