游戏引擎Flax Engine源码分析(一)综述
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源码分析(一)综述相关推荐
- 游戏引擎Flax Engine源码分析(十一)渲染
2021SC@SDUSC 一.概述 这篇博客继续分析2D渲染的后续内容. 二.分析 函数DrawBezier()绘制贝塞尔曲线.参数:p1起点.p2第一个控制点.p3第二个控制点.终点.color线条 ...
- 游戏引擎Flax Engine源码分析(十四)总结
一.简述 这篇文章简单的对整个2D渲染做一个总结,也是对这次项目分析进行一次总结. 二.分析 从项目概述中我们就已经能够看出,Flax Engine作为一个融合Unity3D以及UE4的游戏引擎,其项 ...
- 游戏引擎Flax Engine源码分析(十二)渲染
2021SC@SDUSC 一.简述 在之前的博客中我们已经吧2D渲染中大部分内容都分析结束,接下来这篇博客将会对剩余内容进行分析,如字体等... 二.分析 首先是几个头文件: (一).font.h 结 ...
- 游戏引擎Flax Engine源码分析(十)渲染
2021SC@SDUSC 一.概述 这篇博客我们继续之前的内容,分析2D渲染. 二.分析 接下来的大多数渲染方法,诸如 绘制纹理,绘制Sprite,绘制纹理(使用点采样器),绘制Sprite(使用点采 ...
- 游戏引擎Flax Engine源码分析(二)渲染
2021SC@SDUSC 之后几篇博客主要围绕Flax Engine的渲染部分做分析,因此在源代码分析开始前将简单介绍一下渲染,让整个学习过程更加完整. 由于本人是边学习相关知识边进行代码分析,因此开 ...
- 游戏引擎Flax Engine源码分析(三)渲染2
2021SC@SDUSC 一.简述 这篇博客将继续上一篇未完成的内容,也就是分析Render2D的具体内容,包括一些函数的具体实现,一部分结构体等. Render2D.cpp作为2D渲染部分最主要的部 ...
- <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(二)——ImGui
<2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(二) 前言 案例分析 程序框架 1.基本案例 2.实现定制绑定/定制引擎 渲染函数 总结 前言 本篇我们来分析 ...
- <2021SC@SDUSC>【Overload游戏引擎】OvUI源码模块分析(五)——Plugins
<2021SC@SDUSC>[Overload游戏引擎]OvUI源码模块分析(五)--Plugins 前言 DataDispatcher DDSource DDTarget IPlugin ...
- <2021SC@SDUSC>【Overload游戏引擎】OvCore源码模块分析(六)——SceneSystem
<2021SC@SDUSC>[Overload游戏引擎]OvCore源码模块分析(六)--SceneSystem 前言 SceneSystem Scene SceneManager 总结 ...
最新文章
- 杭州/北京/新加坡 | 蚂蚁集团数字身份团队招聘计算机视觉算法实习生
- string类有可以调换方向的函数吗_深度剖析C++中的inline函数
- 关于position的四个标签
- pdf从结构新建书签_强力推荐一款PDF神器
- 分组求和计算_excel聚合、累计、分组累计、分组聚合函数
- 989. 数组形式的整数加法
- 《大道至简》第一章读后感(java伪代码)
- SELinux 案例 1
- DEVC++中的 “万能头文件” <bits/stdc++.h>
- win10壁纸不能幻灯片放映_如何设置Win10桌面壁纸幻灯片放映? 设置Win10桌面壁纸幻灯片放映的方法...
- 科来网络分析系统2010v7.3.1.2436 激活注册汉化方法
- java本地文件上传
- 图文并茂简介如何查询文章是否被SCI收录以及获取SCI索引号
- 【论文速读】【金融】Predicting stock and stock price index movement using ... and machine learning techniques
- Mac Ps cc2017 下载
- JavavEE中网络编程Socket套接字Ⅱ(TCP)
- 小学老师如何与不同性格的家长沟通?
- JavaIO系统解析
- 利用策略组限制特定软件的运行
- git status怎么操作_git操作-方向对了,就不怕路远了!-51CTO博客
热门文章
- 欧美软件/IT高端外包项目的竞争和管理 高管研修班
- 齐岳Sulfo-EGS交联剂|cas167410-92-6|乙二醇双(磺基琥珀酰亚胺基琥珀酸酯)垫片臂长/间隔长度16.1 Å
- AlphaGo对战李世石谁能赢?两万字长文深挖围棋AI技术(二)
- npm install @antv/xflow无法下载该依赖
- 安卓读取蓝牙BLE设备信息
- 怎么在windows笔记本使用html,聊聊如何用笔记本电脑装逼
- Android音视频编辑库,Android音视频处理.pdf
- php 中文简体和繁体的转换
- Linux音频设备两种框架OSS和ALSA驱动
- 物联网终端设备软件可靠性分析