我在试图自己开发一个游戏引擎,当然纯造轮子玩的那种。
如果你有Unity的使用经验,入门将会非常轻松,因为我大多地方都是通过模仿Unity编写的。
但实际上我并未看过Unity源码,所以只能靠对Unity表层做实验抠字眼外加一点灵感,来得到编写思路。
既然没法得到Unity的源码,那我就自己做一款假的,这就是我最初的想法。
开发进展演示:https://space.bilibili.com/35949109/channel/collectiondetail?sid=556316
- 目前并不是一个跨平台引擎,仅支持Windows平台,且有特定的编译要求。
- 本质上是一个库而非应用程序,由源文件和静态库组成,Editor部分会额外使用一些资源文件。
- 分为Engine和Editor两部分。Editor是基于Engine实现的扩展库,在打包正式游戏时可以去除。
- 一切引擎功能的开发都优先实现效果,而非性能优化。所以请将这一切都看作demo,仅供参考。
- 安装了Visutal Studio
- 安装了Visutal Studio工作负载 使用C++的桌面开发
- 安装了Visutal Studio单个组件 适用于最新生成工具的 C++ ATL
- 安装了CMake并已将路径添加至系统环境变量
- 创建一个空文件,并重命名为你的项目名,下文称该文件夹为项目文件夹。
- 打开命令提示符cd到项目文件夹并使用cmake命令构建本库中的Core文件夹。
- 构建完成后,项目将自动配置在项目文件夹中。
@REM 基于命令提示符的实现示例,详见Project/HelloWorld.bat文件
mkdir HelloWorld
cd HelloWorld
cmake ../../Core
- 排除掉Core/include/BDXKEditor文件夹,该文件夹内的文件此时请不要使用也不要编译。
- 新建一个游戏文件夹,用于存放导出的文件。
- 重新运行项目并将新生成的程序和项目目录下的Resources文件夹放到上文的游戏文件夹内。
- 此时你的游戏已导出到游戏文件夹中,运行游戏文件夹中的程序,以此测试你是否成功导出。
软件之内,标准之上。
能用C++标准库就用标准库
举例:
- 与硬件交互,如图形,声音,设备输入输出
- 与操作系统交互,如窗口,COM组件
- 标准数据的读写交换,如fbx,json,http
举例:
- imgui及其常见扩展库
详见bin和include文件夹