`
blogfeifei
  • 浏览: 1196935 次
文章分类
社区版块
存档分类
最新评论

网游UI解决方案的选择

 
阅读更多

由于新项目动工,UI方面需要确定方向,所以最近纠结于各种解决方案的选择。以下是对各方案的比较,仅供参考,希望对同样纠结于此的朋友有所帮助:)

1.沿用当前的UI
公司是从2D游戏起家的,2D游戏本身就相当于一套庞大的UI,所以这方面有所积累。这套UI系统至少是经过几十万玩家测试,稳定性自然不必说,而且移植到 3D游戏后,绕过Ogre,使用DX直接绘图绘文字,速度非常快,而且文字可以轻松实现多种字体,以及加粗、斜体、下划线等效果,所以继续沿用似乎是比较好的选择。
但是它同样存在问题,因为一方面UI脚本机是我们自己实现的,当时为了跨平台(移动设备)没有使用Lua,phyon等,所以脚本像汇编写起来也比较困难。另外框架的设计不太好,为了实现方便,把部分逻辑带了进来,使得后续项目在使用时有较多障碍(这也是我放弃这套UI的主要原因)。

2.CEGUI

CEGUI 是老牌的开源界面库了,最新版本是0.7.1,完全免费,也是Ogre官方推荐使用的界面库,Ogre1.6及以前的版本,都是内置支持的。使用它的商业游戏也非常多,比如天龙八部,火炬之光,仙剑四等。这也就证明CEGUI确实强大,可以完全达到商业应用级别,而且相关资料非常丰富,至少不用担心某个功能无法实现,因为你能碰到的问题,网上基本都有解决方案,经过这些大作的证明,就不要怀疑了:)。
但是功能强大是有代价的,就是它太庞大、复杂了,上手很困难。这些大作没有一个不修改CEGUI的,也就是说要真正用起来,或者说要用的好,还是要做点事的。那需要做多少事呢?不清楚。
PS: 选择CEGUI的另一个好处是网上有流传的天龙八部的源代码,大概是天龙08或09年早期的版本,其中包含一套比较完善的CEGUI,比如中文显示,中文输入,字体颜色,表情,自适应窗口等都已实现,并且做了优化,效率上不用太担心,毕竟天龙用下来是没问题的。所以使用CEGUI碰到问题时,有现成的东西可以参考,非常难得。不过这个版本的CEGUI是0.4版的,0.7版CEGUI做了大量优化,还用老版本觉得有点太老了……(我没有具体测试过,不清楚 0.7版效率到底提高了多少),而且这个项目也相当于也处在无人维护的状态,如果有问题或者要新增功能可能要自己解决。

3. Ogre SDKTray
从Ogre1.7开始就不再内置支持CEGUI了,转而使用Ogre自己的SDKTray,“tray”是在ogre的overlay和material的基础上实现的,使用很容易理解和使用,但目前它还只是个半成品,无法应用到商业游戏中。

4.QuickGUI

最新版本10.1,专为Ogre写的UI库,支持Ogre1.7,比起CEGUI来说,小巧了很多。
但是很遗憾,至今还有没有编辑器(作者的Blog上说正在开发,但是还没有发布),要靠手动编写xml文件,囧啊~~Ogre社区里从来没有人推荐使用这个。我只是简单看了下,感觉像是作者练手的项目(个人观点)。

5.Hikari

Hikari 可以让你使用Flash制作界面,最新版本0.3,完全免费,大家知道Flash动画是非常流行的,如果将Flash应用到游戏中,一定很拉风!Hikari就实现了这个功能,通过Flash.ocx将swf渲染成Ogre的Texture,然后你就可以任意操作这个Texture了,正是因为如此,Hikari支持Flash的所有版本,不存在兼容性问题。因为Flash本身就支持多国语言,所以中文显示也没有问题。可以把界面开发的大部分内容放到Flash那边,从而使客户端简洁很多(简单就是美啊)。
但是Hikari最致命的问题的效率太低,它使用的是Flash的 ocx,先将动画内容渲染到DC上,然后拷到Texture中,所以很慢,而且慢的是第二步,使得Flash优秀的脏矩形优势无法发挥,根本无法应用到商业游戏中。我做了个动画,30张图片随机飘动,1023x768的窗口,使Flash占满,Release版只能跑到15帧(集成显卡),这还没有显示任何文字呢:(出自www.mobilegamebase.com
6.Scaleform

Scaleform 跟Hikari的作用是一样的,都是用Flash来做游戏界面,不同的是Scaleform非常牛X,它的效率很高,可以说是最强游戏界面解决方案了!而且对亚洲语言显示和输入都完美支持。目前最新版本是3.2,据说4.0将支持Actionscript 3.0, 并全方位支持3D UI。超过600款游戏使用Scaleform做界面,比如超大作StarCraft II,Crysis,Fable II,Civilization IV,Halo Wars,Princes of Persia,Mess Effect 2,Prototype,Resistance 2,Splinter Cell等。
心动了吧,可惜Scaleform是收费的,而且授权费相当的高,3.X版的目标售价是每一款游戏 2.5万美金。如果你不在乎钱的话,这绝对是不二之选,在乎钱的话,这是二B之选。PS:有不少商业引擎已经将Scaleform集成进去了,比如 Gamebryo,Unreal3等,如果你不用Ogre,买了商业引擎也爽了~~
出自www.mobilegamebase.com
7.ogreSwf/vektrix
Hikari 效率太低,Scaleform太贵,ogreSwf/vektrix就是出来解决这个矛盾的。ogreSwf跟Scaleform一样都由开源的 gameSwf发展起来,Scaleform开始商业化,ogreswf继续开源,后来ogreswf项目停掉了。2010年ogreSwf的作者重起了该项目,在原来的基础上改进并改名为vektrix,2010年4月发布了新的demo,可能是SourceForge的原因,我下的demo文件无法解压,又觉得vektrix目前还无法达到Scaleform的高度,所以后来就没有再试了。

8.Awesomium

Awesomium 的功能有点类似Hikari,只不过它是将网页渲染成Texture,而且效率方面也做的比较好。Awesomium 采用了目前业界速度最快的浏览器内核webkit和v8,其实是把Chrome内核嵌入到了里面,同时还很好地支持flash,可以通过 javascript使游戏和网页交互。该项目最初也是开源的,后来商业化了,但是不太贵,最便宜的版本只要400多美金。
Awesomium 的效率之所以高,估计也是脏矩形方面做的好,我把上面那个动画嵌到网页中,用Awesomium打开,帧数马上就下来了,所以还是不能做UI,但是游戏中的帮助页面则可以考虑用这个。Awesomium也不方便根据网页内的内容做半透明效果,也就是网页中部分半透明很难实现,全透明,也就是镂空效果则可以通过模板实现。
出自www.mobilegamebase.com
9.MYGUI

MyGUI最新版本3.0.1,是俄罗斯人写的,要么没有注释,要么注释是俄文的,而且相关的资料实在是太缺乏了,虽然小修改一下可以支持中文显示,但是效果太差了,根本不能用,更别说多种文字,多种效果了,目前也没有什么商业游戏是用这个库做的。
但我最终选择了这个UI库。
就像MYGUI的介绍一样“MyGUI - fast, simple and flexible GUI.”这确实是一个,高效,轻便,灵活的库。首先它的设计很好,所以即使没有注释,也不难理解。换肤的设计避免了CEGUI里的很多中间层,使用要简单很多,资源文件的管理也要清爽(清楚+爽)一些。没有使用ogre的overlay,用底层直接画了,效率比CEGUI要高。 LayoutEdit,ImageSetEdit等比CEGUI的要好用的多,CEGUI的工具经常当掉- -。中文显示可以模仿CEGUI去做,我已经完全实现,效率并不低,完全可以接受。
载入layout文件后返回一个窗口的vector,你可以自己写一个类似BaseLayout的类去管理,然后像MYGUI一样大量用C++委托做回调函数,就可以把各个Dialog分开去写,就像写 MFC的Dialog一样,这一点做的实在太好了。如果再学一点CEGUI,把Lua脚本集成进去,载入layout文件时把窗口注册到lua中,这样就可以在脚本里写逻辑了,客户端-UI-脚本,很清晰。
为什么没有商业游戏使用MYGUI呢?MYGUI比较稳定的版本2.2.3是09年10月份发布的,是少要1年才能有游戏出来,火炬之光是09年11月上市的,在开发的时候MYGUI还很不完善,以后一定会有不少游戏使用MYGUI:)
跟使用CEGUI一样,MYGUI也要做大量修改才能用到游戏中,但我觉得是少比CEGUI好改一点>_<。我目前也刚做到登录,选人界面,大部分功能尚未开始,真正的问题可能还在后面,但到目前为止还是对MYGUI挺满意的,这也只是我个人的选择,诸位看官还请三思!

分享到:
评论

相关推荐

    网游UI解决方案的选择(CEGUI/MYGUI/Hikari/Scaleform/...)

    网游UI解决方案的选择(CEGUI/MYGUI/Hikari/Scaleform/...)

    软件开发类投标项目全套解决方案模板

    4.1 项目解决方案内容 26 4.1.1 系统总体目标、设计架构、系统详细设计方案 27 4.1.1.1 设计原则 27 1. 统一设计原则 27 2. 稳定性原则 27 3. 统一设计原则 27 4. 稳定性原则 27 5. 先进性原则 27 6. 高可靠...

    opencv+yolov8+deepsort行人检测与跟踪,以及可选的WebUI界面(基于gradio).zip

    物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛...

    基于Java ME无线网络移动端的俄罗斯方块游戏的实现(源代码+论文)

    4.1 系统解决方案 本系统在Windows XP的操作系统下,以Java Micro Edition Wireless Toolkit 2.1为开发工具,用中文版UltraEdit做为代码编辑器而实现的。在KToolBar开发包的DefaultColorPhone模拟器下进行调试。 ...

    Cocos2D-X是全球知名的开源跨平台游戏引擎,易学易用.rar

    Cocos2d-x 引擎被广泛用于开发制作手机游戏、儿童教育软件、网络多媒体UI解决方案等交互性的图形化应用。Cocos2d-x 的主要优势是跨平台、高性能、高兼容性、可热更新、可定制及易用性。 [2] Cocos2d-x 降低了手机...

    GameAndUnity-TechLib:游戏,Unity技术项目引用目录

    (简单强大的UI解决方案) (Unity官方定义渲染管道-通用渲染管线) (自定义Shader编辑器) (可视化脚本) / (热更新) 别的引用库 500 +☆ 700 +☆ 700 +☆ 框架 客户端框架 2k +☆ 1k +☆ 1k +☆ ...

    MFPS 2.0 Multiplayer FPS.unitypackage

    前端有多种选项供你选择,可根据你的喜好和需求进行自定义,且使用 Photon PUN 2 作为网络解决方案。工具包核心包含 3 种游戏模式:大乱斗、团队死亡竞赛和夺旗模式。可以和其他玩家或人机进行匹配,有 4 种可根据...

    awesome-web-components:精选的Web组件精选列表

    目录保存装载机图标视频播放器通知警报验证动画制作图片工具雪碧压缩延迟加载筛选器灯箱画廊字形UI套件Vue React开箱即用的UI解决方案微信其他输入模态波普尔拖翻动选单编辑强调剪贴板回应页面触碰3D 滚动和视差搜索...

    J2ME 中文教程

    第五章“MIDP的持久化解决方案 — RMS” 为我们讲解了数据持久化机制——记录管理系统(Record Management System RMS)。这一特别的小型数据库使得MIDP的数据保存变得很特别。 第六章“GAME API” 介绍了MIDP 2.0...

    j2me 中文教程 开发环境 J2ME语言

    第五章“MIDP 的持久化解决方案— RMS” 为我们讲解了数据持久化机制——记录管理 系统(Record Management System RMS)。这一特别的小型数据库使得MIDP 的数据保存变得很特 别。 第六章“GAME API” 介绍了 MIDP 2.0...

    J2ME 中文版教程

    第五章“MIDP 的持久化解决方案 — RMS” 为我们讲解了数据持久化机制——记录管理 系统(Record Management System RMS)。这一特别的小型数据库使得MIDP 的数据保存变得很特 别。 第六章“GAME API” 介绍了MIDP 2.0...

    Hangman:子手游戏

    ButterKnife:用于UI组件的DI解决方案 包装结构 活动:所有活动都在这里 bean:请求和响应JSON模型。 请求:用于序列化为JSON并发送到服务器端 响应:它们是从服务器返回的JSON数据中反序列化的 事件:包含服务器...

    J2ME中文教程

    第五章“MIDP 的持久化解决方案 — RMS” 为我们讲解了数据持久化机制——记录管理系统(Record Management System RMS)。这一特别的小型数据库使得MIDP 的数据保存变得很特别。 第六章“GAME API” 介绍了MIDP 2.0 ...

    J2ME 中文教程1.01a

    第五章“MIDP的持久化解决方案 — RMS” 为我们讲解了数据持久化机制——记录管理系统(Record Management System RMS)。这一特别的小型数据库使得MIDP的数据保存变得很特别。 第六章“GAME API” 介绍了MIDP 2.0...

    IOS应用开发攻略.pdf

    《iOS应用开发攻略》收录了最新的iOS软件开发的最佳做法,涵盖了应用开发及构建优雅解决方案的必备知识,包括:编写通用的启动画面和嵌入式Web浏览器;构建复杂表视图;使app或游戏活灵活现的填充、变换和动画;通过...

    rasp-wifi:通过自定义WiFi网络与树莓派进行交互

    嵌入式无头PC需要某种UI潜在解决方案-物理链接外接显示器需要昂贵的屏幕,需要Pi进入显示模式成本打败了购买低成本Pi的目的乙太网路HTTP允许我们使用Web浏览器显示信息,接收输入。 出色的跨设备平台繁琐的电线,不...

    goverlay:GOverlay是一个开源项目,旨在创建图形用户界面来帮助管理Linux覆盖图

    replay-sorcery -即时重播解决方案 git -克隆库reshade qt5pas由lazarus IDE更新的免费Pascal Qt5绑定库 安装 发行版 Arch / Manjaro /其他Arch衍生产品 goverlay-bin位于AUR中。 您可以使用自己

    基于qt编写的五子棋和围棋游戏.zip

    Qt技术是一套强大的跨平台应用程序开发框架,专注于使用C++语言来构建高性能、高可维护性的软件解决方案。自1991年首次推出以来,Qt因其卓越的跨平台能力、丰富的功能集、高效的开发工具和良好的社区支持而广受...

    【卷一/共两卷】AJAX实战pdf高清版90M

    9.1.2 服务器端解决方案的限制 9.1.3 基于Ajax的解决方案 9.2 客户端架构 9.2.1 设计表单 9.2.2 设计客户端/服务器端交互 9.3 服务器端的VB.NET实现. 9.3.1 定义XML响应格式_ 9.3.2 编写服务器端代码 9.4 显示结果 ...

    bevy 框架的一个简单的基于消息的网络库

    Bevy 的辣味网络bevy_spicy_networking是“如何做我多个客户端连接到一台服务器”问题的解决方案在您的身边围满场。使用 tokio 作为异步后端,它完全集成到 bevy 中,让您可以快速将网络添加到您的游戏中。只需添加...

Global site tag (gtag.js) - Google Analytics