中文第一计算机图形学社区OpenGPU 版权所有2007-2018

 找回密码
 注册

扫一扫,访问微社区

搜索
查看: 4405|回复: 16

如果让你做一款引擎编辑器,你会选择哪种技术?

[复制链接]
发表于 2015-12-15 23:36:17 | 显示全部楼层 |阅读模式
顺便谈谈原因是什么呢?

单选投票, 共有 80 人参与投票

投票已经结束

13.75% (11)
32.50% (26)
53.75% (43)
您所在的用户组没有投票权限
 楼主| 发表于 2015-12-15 23:42:41 | 显示全部楼层
自己先来说下,我选的原生app,因为功能上最能适配对应平台。跨平台的ui前提是你的代码也要夸平台,但是无力去写slate这种,太费精力也对这方面没追求。基本工作就是windows平台,所以哪怕要用怪胎的clr/c++也不想去用js写html5. 还有就是前后端用的技术太杂不好维护。
回复

使用道具 举报

发表于 2015-12-16 09:40:58 | 显示全部楼层
本帖最后由 glcolor 于 2015-12-16 09:48 编辑

编辑器跨平台的必要性较低,所以倾向于使用平台原生API,现在我的引擎的正在使用的编辑器是用C++/CLI开发的,既能使用.net的功能,又能使用原生C++的代码,还是很方便的,但也有不足,主要是WinForm用的GDI+效率有点低,而且微软对C++/CLI的支持也不是太高。不使用“CLI封装C++,C#写编辑器”这种模式的原因是封装过程很机械很繁琐,虽然这种模式能使用WPF提高性能。
现在正在开发的新编辑器使用MFC实现类似VS可停靠窗体的框架,但具体的界面都是用游戏UI系统实现的,游戏UI库在设计上类似WinForm但视觉效果设计更灵活,本身又是使用3D API硬件加速的,所以性能也不错,配合能自动生成C++代码的UI编辑器,用起来也不算麻烦;这么做还有一个潜在的好处是,如果将来有让编辑器也跨平台的需求,只要把MFC的框架换掉就行了,游戏UI库作为游戏引擎的一部分本身是跨平台的。
至于HTML5这种,用来写复杂的游戏编辑器,其蛋疼程度,只能说,谁用谁知道。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2015-12-16 11:40:31 | 显示全部楼层
编辑器如果不是面向最终用户的, 只在制作团队中使用, 那么我会选择原生, 因为即便是跨平台的app, 编辑器作为项目的host tool, 完全可以编辑和cross build各种target平台的资源和数据. 选择win32作为host对于游戏团队应该没什么说的.

除非这个编辑器是公开发布的(商用或者开源), 这个时候面向的用户范围变广, 需求变多,可能需要考虑支持多种host平台了. 比如为了让linux/Mac的用户也能使用, 使用Qt什么的.

楼上的观点我也很支持. 我目前用的MFC, 除了MFC以外其他runtime代码都是跨平台的, 支持多目标品台. 但是设计上(致力于)UI完全跟业务逻辑剥离, 万一需要编辑器也跨平台, 那么就把MFC替换掉.

评分

1

查看全部评分

回复

使用道具 举报

发表于 2015-12-16 13:09:57 | 显示全部楼层
当然选3了,你没空做,就做一个实现,接口留给开源者来做了
回复

使用道具 举报

发表于 2015-12-18 21:50:55 | 显示全部楼层
编辑器跨平台的需求确实比较低。
但从编辑器能较好的直接渲染显示游戏里的画面效果这个角度,用游戏引擎来“自举”做一个编辑器也是一条可行的路。因为引擎应该是跨平台的,所以这个编辑器也会是跨平台的。具体技术差不多是C++加上C#脚本(反射游戏对象)或其他脚本也可,这实际上也就跟unity的方案差不多了。
缺点是编辑器吃自己引擎的狗食,工作量会多点。
如果需求简单的话,就原生WinForm嵌套C++游戏窗口,也是挺快就能实现的。

评分

1

查看全部评分

回复

使用道具 举报

发表于 2015-12-19 18:01:00 | 显示全部楼层
MFC,速度快
回复

使用道具 举报

发表于 2015-12-20 22:20:45 | 显示全部楼层
选用哪种方案关键还是看引擎技术和需求,如果是基于H5的引擎,最好是选用H5 web 技术开发编辑器,一是语言统一,二是web 界面技术很成熟,做各种炫酷的编辑器界面不是难事,现在也有很多我们常用的 app 早就使用了web技术制作前端界面,比如QQ、微信、音乐播放器之类的。
如果是 native 技术引擎,那就是在原生 API 和三方 UI 库中做选择,这里就要看需求而定,如果没有跨平台需求,自然可以选择原生 API 开发,但实际上现在的第三方 UI 设计的也很不错,比如 qt\wxwidget 等,和 mfc 这种设计老式的框架比起来更符合现代设计思想,开发上更顺手一些。
引擎采用的语言也是考虑之一,如果是c\c++引擎,最好是用c\c++的 UI,否则就要在两种语言之间互相调用和数据交换,这还是有一定的开发量的。
还有一种方案是直接使用引擎的渲染机制自绘UI,这种方案目前在 UE4 中使用,就是那套 slate 系统,这种方案的好处是由于运行在引擎统一的环境下,数据访问和交换非常方便,调用引擎的 API 也是相当自然的事情。还有格外的好处就是可以积累一套丰富完整的 UI系统,这样在游戏中也可以使用。这种方案的问题在于开发量巨大,比如 UE4 的 slate,目测至少10w+行代码级别,而且需要大量的调试和测试,各种效果完全是从头做起,成本太高。
我的引擎是 Native 跨平台引擎,要求编辑器也是跨平台,至少支持Windows 和 MacOS 系统,所以我采用了 qt,qt 之前没用过,这次做编辑器用下来感觉还是相当不错,制作各种界面效果很方便,只需要定义一些 stylesheet 就可以,而且是 css 语法兼容的,甚至连c++代码都不用写。下图是引擎的编辑器截图,所有的效果全是基于 qt 完成的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

1

查看全部评分

回复

使用道具 举报

发表于 2015-12-25 13:42:56 | 显示全部楼层
跨平台非常重要,重要的事只说一遍。
因为开始不重视跨平台,等以后需要跨平台时,
你需要重写海量代码,那时候你就哭吧。


sweetolive于2015-12-25 13:44补充以下内容:
以现有的成熟的技术来看,Qt是最佳的选择。
回复

使用道具 举报

头像被屏蔽
发表于 2015-12-27 00:45:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2015-12-27 20:05:20 | 显示全部楼层
本帖最后由 freedom108 于 2015-12-28 07:36 编辑

区区UI,只需百十来文件,数月可成,足可用,何须Qt。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-2-2 18:03:00 | 显示全部楼层
html整,整不动加插件,不成再掰webkit
回复

使用道具 举报

发表于 2016-3-16 11:00:23 | 显示全部楼层

自己绘制并不是很难哦

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-3-18 08:49:50 | 显示全部楼层
这么多编辑器,放个源码出来瞻仰哈呗,你们的编辑器能放动画转码,录屏么?
回复

使用道具 举报

发表于 2016-3-23 09:29:48 | 显示全部楼层
时光先生 发表于 2016-3-16 11:00
自己绘制并不是很难哦

你这个是多个Native window自绘制拼在一个起的?还是都画在一个Native window上的?
界面是使用引擎绘制的?还是用另外一套api(如 D2D,GDI+)绘制的?
回复

使用道具 举报

发表于 2016-5-11 14:41:34 | 显示全部楼层
zodiaque 发表于 2016-3-23 09:29
你这个是多个Native window自绘制拼在一个起的?还是都画在一个Native window上的?
界面是使用引擎绘制 ...

画在一个windows上,通过viewport控制范围。
回复

使用道具 举报

发表于 2016-5-30 10:20:32 | 显示全部楼层
时光先生 发表于 2016-5-11 14:41
画在一个windows上,通过viewport控制范围。

Thank you!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|小黑屋|Archiver|手机版|中文第一计算机图形学社区OpenGPU

GMT+8, 2018-2-25 21:32 , Processed in 0.114685 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表