请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 3949|回复: 16

如果让你做一款引擎编辑器,你会选择哪种技术? [复制链接]

版主

RenderGuy

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2010-11-4
积分
5876
发表于 2015-12-15 23:36:17 |显示全部楼层
顺便谈谈原因是什么呢?

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

投票已经结束

13.75% (11)
32.50% (26)
53.75% (43)
您所在的用户组没有投票权限

版主

RenderGuy

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2010-11-4
积分
5876
发表于 2015-12-15 23:42:41 |显示全部楼层
自己先来说下,我选的原生app,因为功能上最能适配对应平台。跨平台的ui前提是你的代码也要夸平台,但是无力去写slate这种,太费精力也对这方面没追求。基本工作就是windows平台,所以哪怕要用怪胎的clr/c++也不想去用js写html5. 还有就是前后端用的技术太杂不好维护。

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2011-6-23
积分
1356
发表于 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

查看全部评分

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

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

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

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

查看全部评分

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2015-6-17
积分
1117
发表于 2015-12-16 13:09:57 |显示全部楼层
当然选3了,你没空做,就做一个实现,接口留给开源者来做了

使用道具 举报

Rank: 9Rank: 9Rank: 9

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

查看全部评分

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2014-11-21
积分
1866
发表于 2015-12-19 18:01:00 |显示全部楼层
MFC,速度快

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2009-9-20
积分
1195
发表于 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 完成的。
1

查看全部评分

使用道具 举报

Rank: 5Rank: 5

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


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

使用道具 举报

头像被屏蔽

版主

Missionary

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

注册时间
2010-4-25
积分
10915
发表于 2015-12-27 00:45:30 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-7-29
积分
578
发表于 2015-12-27 20:05:20 |显示全部楼层
本帖最后由 freedom108 于 2015-12-28 07:36 编辑

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


使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-9-17
积分
2743
发表于 2016-2-2 18:03:00 |显示全部楼层
html整,整不动加插件,不成再掰webkit

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-6-27
积分
539
发表于 2016-3-16 11:00:23 |显示全部楼层

自己绘制并不是很难哦

使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2015-6-17
积分
1117
发表于 2016-3-18 08:49:50 |显示全部楼层
这么多编辑器,放个源码出来瞻仰哈呗,你们的编辑器能放动画转码,录屏么?

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2009-10-21
积分
436
发表于 2016-3-23 09:29:48 |显示全部楼层
时光先生 发表于 2016-3-16 11:00
自己绘制并不是很难哦

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

使用道具 举报

Rank: 12Rank: 12Rank: 12

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

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

使用道具 举报

Rank: 9Rank: 9Rank: 9

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

Thank you!!!

使用道具 举报

最近看过此主题的会员

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

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-7-22 00:34 , Processed in 0.197633 second(s), 16 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部