> > 技术-博客 > Siney – 在游戏引擎中嵌入Flash
 

Siney – 在游戏引擎中嵌入Flash

2011-01-26 15:55:44
 

在游戏中如果可以嵌入Flash,则可以使用Flash的便利功能为游戏提供UI系统,内嵌小游戏,内嵌视频播放等等,当然对于这个想法,市面上也有现成的第三方套件实现类似功能,例如ScaleForms(http://www.scaleform.com/),但其售价昂贵,而且是针对每个游戏title授权,技术支持也单独收费。

为此Siney通过OLE/COM封装Adobe Flash控件的方法,实现了一套类似与ScaleForms的产品,命名为Sflash,与ScaleForms相比,Sflash最大的优势在于,兼容性。ScaleForms为了能跨平台,自己实现了Flash的功能,包括文件读取,解码,硬件加速渲染,但这造成了其兼容性不好,特别ActionScript3脚本制作的Flash文件完全不支持,同时也不支持主流的Flash视频播放。而Sflash则完全没有这方面问题,因为Sflash完全封装了Flash的功能,使他能够在游戏环境下运行,与游戏引擎产生交互,只要Flash支持的,Sflash都能完美的在游戏引擎里支持。

一些关于Sflash的可能应用:

内嵌休闲小游戏

目前mmorpg游戏包含的范围越来越广,大有将所有游戏类型纳入其中的意味,这导致很多mmorpg游戏在游戏系统内制作各种吸引玩家的小游戏,传统的方法是程序员需要花大量时间在这种锦上添花的下游戏上,而真正的mmorpg系统则因为时间关系有所削弱。而引入Flash,则将mmorpg游戏的制作同小游戏的制作区分开来,mmorpg程序员专注于游戏引擎、系统的制作,而小游戏则交给相应的Flash制作人员,将Flash游戏作为美术资源与mmorpg整合,目前越来越多的外国游戏厂商采用ScaleForms,为其游戏产品提供更多丰富的游戏特性。

内嵌视频播放

在我们的游戏《天下贰》中,很多玩家喜欢拍摄游戏电影,然后发到youku,土豆这样的网络上展示给其他玩家观看,而这些视频通常都是flv(Flash电影)如果我们游戏内做一个类似电影院的场景,可以把那些优秀的游戏电影集中在电影院内播放展示,必定能提高游戏玩家的荣誉感和成就感,这就是Sflash的另外一种可能应用,因为Sflash的实现可以不必像传统Flash播放器那样只能在窗口内平面显示,而可以通过3d 贴图的方法,贴到游戏中任意的模型上,就像场景内被摆放了一个大萤幕,玩家可以3d透视的观看视频,这无疑会提高游戏产品的玩家友好度。

目前正式奥运时期,如果能在游戏内播放奥运赛事,吼吼~~~

过场动画

某些游戏可能需求简单的过场演示动画,就是一些简单的图片、文字和特效,用于介绍游戏故事情节等。

关于Sflash的技术特性:

Sflash是引擎无关的,可以不加修改(或者少量修改)应用现有游戏引擎内,包括2D游戏,Sflash可以完全兼容Flash播放,能够完全兼容用户交互(包括本身Flash的鼠标、键盘操作),采用transparent的flash渲染技术,能够不需要HWND,能够实现半透明。

关于ScaleForms和Sflash的优缺点对比,如表:

  ScaleForms Sflash
兼容性 有限兼容Flash格式,特别对于AS3,可能不支持负责的小游戏。 完全兼容,可以打开任意Flash文件
视频播放 不支持 支持
音频 不支持 支持
跨平台 支持 仅限windows
渲染速度 硬件加速 Flash内置实现速度,因版本差异而不同
发布 不依赖Flash 需要用户安装Flash.ocx

 

关于技术实现

最后来说说如何使用OLE技术封装Flash控件,说出来其实很简单,就是从Flash接口QueryIViewObject接口,其提供的Draw函数,可以把OLE对象绘制到一个指定的HDC上,然后根据这个HDC创建贴图在贴到游戏引擎内即可,这里唯一需要注意的是,Flash的消息处理,即用于交互的实现,这里我们还是Query IOleInPlaceObjectWindowless接口,其提供过的OnWindowMessage函数可以通知Flash处理windows消息,即可以完成Flash与用户交互。

当然, IOleInPlaceObjectWindowless接口依赖IOleClientSite等OLE容器,所以还需要简单实现一个OLE容器类,或者直接使用ATL/MFC提供的现成类。

这里有一个在windows下实现windowless flash播放的例子,可以作为参考,http://www.codeproject.com/useritems/flashcontrol.asp

 
相关话题推荐
 
相关新闻:
发贴区
  评论仅表达个人看法,并不表明爱酷游同意其观点或证实其描述。
   
icoou资讯76小时热门排行
icoou人气图片推荐
酷友推荐
焦点推荐
24小时前沿动态
标题  
点击数 
主题推荐

话题推荐
视频专题

娱乐专题