ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何做一个跨平台的游戏编辑器(一)

2022-07-24 22:04:22  阅读:288  来源: 互联网

标签:github cmake 游戏 编辑器 跨平台 bgfx 构建 SDL com


嗯,这玩意没啥营养,纯属是有这方面的兴趣的程序员问了我相关的问题。这个事儿说复杂不复杂,一两句话又说不清楚,干脆写下来。


首先,技术选型


跨平台也不是说跨多远,windows linux macos

涉及的图形api 分别是 dx gl vulkan metal

根据这些线索,首先开发语言c/cpp是没跑了,虽然为了开发效率,大型项目一般都是混合语言开发,上层弄个python lua c# 啥的,这是后话。

结论一、底层c/cpp没跑

其次,绘图接口这部分分别写实现也挺麻烦的,找个开源库来解决好了,我们选型bgfx,他就是一个渲染器,用兼容的方式抹平了不同的api差距。当然兼容肯定就利用不上 vulkan metal dx12 等的高级独家特性了。我们对这些高级独家的玩意儿也不是特别感兴趣,兼容最高。

结论二、绘图部分用bgfx

https://github.com/bkaradzic/bgfx.cmake

然后,每个操作系统有一点自己独立的东西,这其中开发编辑器最头疼的就是窗口管理了,各个操作系统自己一套,适配很烦,这里我们请出一位玩兼容的祖师爷SDL,打从我第一天写代码的时候SDL就存在了,历史真的悠久。我们主要用SDL来管理窗口,键盘鼠标事件这些。SDL还提供其它声音视频等多媒体内容,但对我们一般没啥用。

结论三、窗口管理用SDL

编辑器上各种各样的UI,我这里选了IMGUI

https://github.com/ocornut/imgui/tree/docking

为什么选择IMGUI

1.因为他是基于我们自己的渲染器来画的,混合内容方便

2.他是一种类似Unity OnGUI的实现,搞UI特别快。

结论四、UI系统用IMGUI(docking分支)

最后还有个问题,cpp的开发环境每个平台也不尽相同,windows上最常用的肯定是vc,虽然也能用gcc,总归费劲一些。linux 和 mac 就是gcc了。

为了抹平开发环境的问题,我们引入一个构建工具cmake

结论五、使用cmake做构建工具

构建基础代码

cmake 安装,开发环境安装

这是我的cmake 版本

image

vs 和 windowssdk安装 略

我的版本 如图

image

bgfx 构建

抓取代码 git clone https://github.com/bkaradzic/bgfx.cmake

这个仓库只是 bgfx的cmake配置文件,他关联了三个仓库,才是真正的代码

cd bgfx.cmake
git submodule init
git submodule update
进入仓库目录,通过submodule 把这些代码拉回来,第一次要拉很久,bgfx仓库贼大

涉及到的仓库是这三个

https://github.com/bkaradzic/bgfx

https://github.com/bkaradzic/bimg

https://github.com/bkaradzic/bx

等不及就用其它方式把这仨弄回来

image

我肯定是懒得熟悉git命令行的,用小乌龟一样


之后在仓库目录新建一个build 目录 仓库目录指bgfx.cmake

image

就是有CMakeLists.txt这个文件的目录

image

cmake 默认输出文件夹是当前文件夹,我们在build这里执行,就会在build目录产生vc项目,然后我们编译vc项目就行。

cmake就是用来产生各种开发开发工具用的项目文件

cmake在linux 和 macos 就会产生标准的make 文件,后续make命令就能编译。


当你增加了新的源码,需要再执行一次cmake

IMGUI构建

IMGUI没几个源码,不用单独构建,直接丢进主项目就好

注意我们要的代码不在主干上

image

SDL构建

SDL不用构建,release整理的很清楚,随时去拿就好

https://github.com/libsdl-org/SDL/releases

https://github.com/libsdl-org/SDL/releases/download/release-2.0.22/SDL2-2.0.22-win32-x64.zip

这里我下载了一个2.0.22的


整合到一起

整合的東西有點零散,直接看代碼吧

https://gitee.com/lightsever/TTEngine/tree/master/purecpp

這裏整合了一份純粹的 bgfx+sdl2+imgui_dock,使用cmake 構建的項目

簡單説明一下

建議直接進入editorwin 目錄 cmake . 產生項目

然後直接編譯就可以


目前只配置了windows,但是所有的庫和工具都支持linux,配置上下點功夫就可以

脚手架代碼不用動,在appeditor裏面搞事情就可以了。


後面可以把c#實現的那樣一個多窗口環境反著弄回來,代碼量不大,直接在cpp環境工作,不用切來切去。

标签:github,cmake,游戏,编辑器,跨平台,bgfx,构建,SDL,com
来源: https://www.cnblogs.com/crazylights/p/16515609.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有