3d大型网页游戏(精选11篇)
3d大型网页游戏 篇1
如何开发网页3D游戏
2013-03-20 22:02 129人阅读 评论(0)收藏 举报
最近在网上突然冒出了一款3D的网页游戏,因为它使得我对网页中一些招人诟病的问题有了新的认识,让我产生了想要研究一下的想法。
想要制作网页中的3d游戏,有这样几个技术问题是需要考虑的:
网页插件实现
用户安装插件是否有阻碍
如何在插件中绘制3d图形
如何链接服务端
美术资源如何缓存
美术资源如何更新
浏览器兼容问题
本文就是来解答这些问题中的一部分,并且给出具体的实现方案。
ActiveX插件技术
目前浏览器的插件技术还是蛮多的,不过能够流行起来的不多。之前因为浏览器插件安全的问题,导致大部分人都对插件有十分的警惕。
ActiveX是微软提供的浏览器插件技术,wiki上的介绍:http://zh.wikipedia.org/wiki/ActiveX。我实在是难以搞清楚微软这些年来提供的几个技术之间的关系,OLE、ALT等,包括现在最新的.Net也是一样。要学习微软的这套框架,光理解其中的概念都需要花费非常多的时间,加上代码复杂,远不如开源技术来的直接和清晰。我这里使用的是VS2005,新建一个“MFC ActiveX控件”工程。
根据向导,它会自动帮你创建一个后缀名为OCX的插件的工程。要调试运行,需要修改下项目属性,改成“ActiveX控件测试容器”,如下图:
这是一个工具,专门用来加载ActiveX控件,每次调试打开这个界面后,还需要手工点击菜单:编辑->插入新控件,找到你创建的这个OCX插件。如果在弹出的列表里面没有你制作的这个插件,就需要重新编译下(编译的最后会重新注册一次控件,当然你也可以用regsvr32.exe或者其他工具来手工注册)。
当你插入过一次之后,记得保存一下,下次你就可以在文件菜单的最近打开里面找到你保存的这个会话。
到此为止,你就可以用MFC的那套框架随意的添加各种MFC提供的各种功能,比如窗口、消息、事件处理等等。如果你学过Direct3D或者OpenGL,那么完全有能力在这个空的MFC工程中添加上相关的代码,跑起你自己的Demo来。
整合3D引擎:IrrLicht
本文的目标是开发3D游戏,自然不可能从图形API开始写起,我找来了IrrLicht这个开源的引擎,据我所知国内已经有由这个引擎开发的成功的商业项目了,那么也就是说是比较成熟了。关于引擎的介绍你可以访问官网:http://irrlicht.sourceforge.net/ 当前你也可以整合进其他的引擎,wiki:游戏引擎列表http://zh.wikipedia.org/wiki/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E%E5%88%97%E8%A1%A8
IrrLicht引擎比较友好,编译过程中基本没遇到问题。切记,仔细的读一读文档和各个目录中的readme文件,这是程序员的一个好习惯。
我这里采用静态编译,正确编译后,在IrrLicht目录/bin/lib/下就会有对应不同编译器的目录,里面有编译好的lib文件。一般都会生成两个版本 Debug版:IrrLicht_d.lib,Release版:IrrLicht.lib。我会用不同的lib文件来编译我的不同版本的插件。
接下来再次配置插件的工程,这个很关键!在“C/C++”下面的“预处理器”属性页中,加入一个预处理器定义_IRR_STATIC_LIB_。
配置输入的静态链接库,给Debug和Release分别配置IrrLicht_d.lib和IrrLicht.lib(当然你需要在之前设置好VS2005的全局目录,保证这里IrrLicht.lib和IrrLicht_d.lib文件可以被找到):
然后根据IrrLicht的例子和文档,就可以在绘制控件的时候加入相关的代码,把3D图像绘制到MFC控件之中。在IrrLicht目录/Doc下面有引擎的文档,文档的第一页就有一个最短小的例子(很感叹IrrLicht的设计者,接口非常友好,而且跨平台)。
例子中的代码可以参考,但是无法用,因为这是在MFC的框架之中。MFC是消息驱动的,而一般的3D游戏都需要不断循环来推动图像的绘制。这就需要自己去解决这个绘制循环的问题。我这里参考了网上的一些方法,建立了一个死循环的线程,由这个线程来推动绘制。在我的工程中,我创建了一个叫做GameFrame的类,用来做游戏逻辑层和外部的结合层,这样游戏逻辑就无需知道自己运行在什么环境中了。游戏逻辑层的初始化和主循环的驱动,由GameFrame类的提供。
GameFrame类的结构,请看头文件:
Init和Update这两个接口是最基本的,里面的是游戏逻辑代码。外部通过调用setDc来设置DC和窗口句柄,在setDc中触发Init函数。并且,外部通过createUpdateThread来启动绘制循环,循环调用Update,驱动游戏逻辑。
制作测试用html页面 我这里暂时没有考虑兼容性问题,只是给出了一个简单的例子。(这部分内容足够我写一篇文章了,呵呵)
可以看到主要是用了
如果你的插件注册好了,那么打开IE浏览器,就可以看到你所绘制的东西。
3d大型网页游戏 篇2
0 引言
开始制作3D电视已有一年, 从最初的尝试, 到独立制作。一步步走来, 我们也将目光从常规节目转向了大型赛事的3D转播上。上海网球ATP大师赛是上海顶级国际体育赛事之一。SMG承办这项赛事的电视转播已有多年, 经验丰富。SMG魔D工作室便以准直播的制作要求对此赛事进行了3D转播录制。本次3D转播内容在中国电影电视技术学会第二届3D影视作品评选中获得了体育类优秀奖。
1 前期准备
3D发展, 依托于高清电视的发展。全国各个台对3D制作的投入不尽相同。要制作3D节目, 甚至于制作大型体育赛事, 究竟是重起炉灶, 全部重建, 还是借助于已有高清基础, 延伸扩展是很多人考虑的问题。面对无法预知前景的未来, 避免风险投资, 我想大部分人都会选择后者。正因如此项目实施之前, 细致的想想我们究竟有哪些, 能做哪些对我们合理的制定整个转播方案, 优化细节多有益处。
一场完整的体育赛事直播, 现场机位、慢动作回放、赛事包装、声音效果这些都是必不可少的元素。既然如此, 那么在3D转播中同样也需要包含这些元素。如何尽可能的使这些元素相辅相成、相得益彰, 更好地体现3D感官效果是我们接下来需要重点探讨的内容。
2 现场机位设定
2.1 摄像机种类与摄制景别
3D支架摄像机系统和3D一体机是目前3D电视节目制作时使用的两种主要拍摄手段。
在大型体育赛事转播中, 由于需要的镜头语言比较丰富。这两种拍摄系统也需要配合使用。摄像机画面的视差关系设置按照-2%到+3%, 特殊画面特殊处理。参考了传统2D网球的制作方法, 结合现有条件, 我们在现场设定了6台摄像机, 其中2台垂直支架、2台水平支架、2台3D一体机 (图1) 。
两台垂直支架采用23倍镜头以对角线方式置于垂直方向后侧。无球阶段以球员半身近景为主, 抓局部。持球对抗阶段镜头跟球, 抓球的运行线路及落点。为慢动作回放提供素材。1台水平支架置于垂直方向居中高处, 为拍摄主机位。另1台水平支架置于球场对角线后方高处, 为全景Beauty Shot。2台3D一体机分别置于球场一侧的球网两边, 拍摄时以球员全景为主。主抓球员动作, 镜头跟随球员。垂直支架的设置, 考虑有所取舍。如果仅考虑拍摄对面球员的镜头, 考虑球场的长度, 可以也适合使用水平支架。但因为有时这台机器也会对中近端的球员和球。所以, 使用水平支架的话在近端就会对视差造成过多的影像。
2.2 支架机的应用
系统中所用的3D支架系统是大家已经非常熟悉的ET PULSAR加SONY MPE200的解决方案, 配套摄像机也使用SONY P1。这样小型的摄像机可以降低3D支架的成本, 也使得系统调试起来比较方便。此套系统可对摄像机间距、汇聚夹角、旋转误差等参数进行远程实时调整, ET支架的稳定性也较好。配合MPE200就算支架通讯突然丢失, 也可通过对画面数字处理, 调整3D效果, 确保观看安全性。这对于节目直播至关重要。首先, 对摄像机的光轴误差进行校准。每个镜头在光轴的物理变化上, 多少都会出现一些偏离。这种偏离, 不具备统一性, 所以没有办法保证两个镜头的光轴偏移是相同的。利用MPE200的修正功能, 可以补偿镜头的光轴偏移, 使两个3D镜头形成一样的轨迹。这样就能保证在拍摄时运用推、拉画面。
2.3 一体机的应用
对于3D一体机, 其使用方式和目前摄像师操作习惯的冲突一直是困扰我们的一个问题。由于现在的3D一体机设计大多基于ENG单机应用, 因此在赛事转播中, 作为EFP座机进行拍摄时还是会有很大的局限性。比如汇聚面调节、寻像器观看方式、TALLY、反送、通话等。为TD300加装光缆适配器可以帮助我们解决这些问题。
Miranda Copper Head 3400将多路视频线单传视频信号, 改成了用复合光缆传输多种信号。前端背包可使用V型插口 (视使用摄像机型号而定) 支架外挂在TD300之后, 由后级基站供电。将视、音频、通讯、控制等信号调制在光缆中互传, 也解决了摄像机供电, 很好的将一台ENG外录单机改造成了一台EFP座机。前端摄像机将左、右眼信号传回后级基站进入转播车系统。后级转播车将反送、4线通话、GPI TALLY、232控制协议传送至前端。针对TD300, 我们选用有GPI接入口的7寸监视器, 显示红绿TALLY。有HDMI输入接口, TD300HDMI输出可带字符作为本机寻像器使用。转播车送来的反送信号也可接入监视器HD-SDI接口使用。这样摄像师可以自由在监视器选择监看本机拍摄信号还是返送信号。HDMI也可选择黑白左右视差图观看。如果摄像师需要同时看到返送和本机画面, 也很简单。使用万向臂, 在摄像机上架设一台5寸高清监视器, 并用SONY DXF-C50WA作为本机寻像器, TALLY提示和返送信号需要之前的高清监视器来实现。这样导播在做一些特殊的叠化镜头时才能与摄像更好的配合。
对于摄像机的遥控同样利用光缆传送232控制信号, 可实现光圈控制、色温校准等基础操作。但是双眼汇聚面调整无法在RCP上操作, 目前TD300使用第三方设备可以实现远程控制汇聚面, 但必须加装另外一套设备才能实现。4线通话的接入大大提高了通话质量, 加上TALLY、反送等辅助信息。整个制作过程也将更具效率。这套系统的应用大大优化了我们的制作流程, 使得的3D一体机可以改造成适合EFP系统使用的模式。这样的设备同样适用于任何一款ENG单机, 即使不用做摄像机使用, 而作为光端机传输信号也具有极高的可靠性。我们有时亦用它作为大屏幕操空台的信号传输系统使用, 信号传送、通话、返送一次全部解决。
3 慢动作系统
慢动作回放, 丰富了节目的内容, 使得整个赛事更具观赏性。基于不同的3D制作系统, 慢动作也可以由不同的接入方式。由于我们整个系统使用的是DUAL-LINK制作方式, 因此选用K2 SUMMIT服务器作为慢动作播放服务器使用会很方便。需要开通K2的3D制作功能。将4通道K2设置为3录一放, 对镜头进行适当编辑, 存入播放列表, 便可对现场赛事进行实时回放。
系统中没有大倍率镜头, 在没有足够空间的前提下使用长焦拍摄, 无法保证被拍主体的圆度, 纸片效果会很明显。但如果为了使内容更加丰满, 简单作法可以选用2D的大倍率镜头进行2D转3D, 编入慢动作列表中, 这样的镜头3D说服力不强。
虽然做不到3D超级慢动作的实时回放, 但要在赛事集锦加入超高速摄像机的画面内容已经能够做到。利用SONY FS700、F55或RED EPIC这样的小型摄像机, 带有超高速功能。安装到3D支架上也很方便。超高速录制有8秒或以上的预录。可以根据精彩程度进行录制, 然后回放传回转播车慢动作服务器。这个过程需要时间, 所以没有办法进行实时回放, 但可以作为精彩回顾编入集锦列表。
4 赛事包装
数据统计、字幕包装是赛事转播的点睛之笔。按目前的情况, 专门为3D转播制作独立的包装内容还不太可能。我们只能利用2D的内容, 在3D节目中寻求实现。虽然无法做到字幕在本身内容上的层次分明, 但是整幅的出屏效果, 为节目增加亮点还是容易做到的。
针对于不同的系统, 我们可能有多种方法来实现。我们的系统使用SONY6000切换台, 利用2级绑定实现3D DUAL-LINK制作。这样在这里反而使得操作很简单就能达到我们想要的结果。具体实施方法:将两级的KEY都选同一个2D字幕信号, 利用键的特技, 改变X轴上的位移。我们大多选择出屏效果, 所以左眼级的键向右位移;右眼级的键向左位移。位移的数量级由你想要的出屏效果而定 (图2) 。
但是如果使用的是SONY7000这样的切换台, 本身就有3D版本软件, 自身已经在输入母线上指定了左右眼。这样就无法简单的利用键的特技来得到想要的效果。必须在输入切换台之前就将字幕进行左右眼视差调整。可以利用AXON H3D100或者SONY MPE200这样的设备实现。但请留意, 这种设备需要2套, 因为KEY和FILL都需要做同样的处理。
5 声音效果
体育赛事转播的声音效果注重现场感, 5.1环绕声自然是首选。带上3D眼镜, 体验置身现场的观感体验无疑是令人心情激动的。在声音制作上, 2D转播和3D转播的制作方式是一样的。模拟好声场的空间位置的定位.使得电视观众能形成一种虚拟的声场定位。这个也是音频工程师今后进行拾音设计和制定混音方案的基准点。环境气氛声是5.1环绕声非常重要的环绕效果成分, 它直接影响到整个5.1环绕声的效果。环绕声声场的建立必须拥有饱满、清晰、多层次的环境气氛声, 所以音频工程师必须十分重视对这个层次的声音的拾取。环境气氛声含有十分丰富的元素, 各种元素与层次的气氛声构成了网球比赛特有的声场, 它主要包括稳定的背景噪声、此起彼伏的观众和啦啦队的喊叫声及公共广播喇叭声等。通过这些声音可以向电视观众成功地传达逼真的现场信息, 告诉他处于即将开赛的体育场里以及比赛的精彩程度等。为了提高网球比赛电视转播的感染力, 拾取网球场地内的各种运动声响必不可少的。网球特征声, 也就是运动效果声。包括球比赛的运动员运动声响效果, 如网球撞击球拍、地面、底线挡板的声音, 这个声音随双方运动员接球发球而不断移动的。球员的呐喊声, 鞋面磨擦地面的声音, 这个声音会随球员的移动而移动, 也可利用此声音制作出“运动”的效果。网球特征声的拾取, 为环绕声提供了一个更具特色的网球运动展示机会, 这在单声道技术时期是绝对做不到的。有了摄像机和场地安放的话筒, 音频主管就可以在网球比赛中, 根据网球运动项目的特点, 把运动员跑动、叫喊声、喘息声、球拍击球及落地声, 甚至球的运动轨迹等。在环绕声场中出色地再现给电视观众。如果3D转播是套用2D转播的声音制作, 那么有些细节就需要注意。由于声音的控制权不在自己手中, 画面与声音的配合就要尤其当心。配合好声音, 提供该提供的画面内容才能更好的还原比赛的精彩。比如, 2D的转播画面切了裁判近景, 声音也给了裁判的无线话筒。而此时3D转播的画面如果是运动员的话就会造成声、话不配套。所以如果是套拍, 在你身边接入2D的PGM画面作为参考有时十分好用。
6 结束语
制作方法多种多样, 只要能找到适用的, 就能引入3D制作。走到今天, 大家的经验也已经越来越丰富, 这种种因素必将推动我们的制作技术越来越成熟。只有好的内容加上精良的制作才能使观众有更好的观感体验。3D电视的未来只有得到每一位观众的肯定, 才能有更好的明天。
本论文得到了上海市科学技术委员会科研计划项目课题《3D电视内容制作体系和节目制播应用示范》 (课题编号:12dz1500401) 的资助。
摘要:本文以ATP上海网球大师赛3D转播为例, 对以准直播的制作要求转播一场大型体育赛事的3D转播解决方案做了详细的分析。
关键词:大型体育赛事3D转播,支架机,一体机,光缆适配器,3D慢动作
参考文献
3d大型网页游戏 篇3
网络导报记者调查发现,向3D市场进军的既有趣游集团、海岩网络、中青宝、卓页互动等一批专业网页游戏厂商,也有包括腾讯游戏在内的网游巨头,其所发布的产品涵盖策略角色扮演、即时战斗角色扮演、模拟经营等多个类型。国产网页游戏短时间内集中发力3D市场,于各自所在的细分领域内施展浑身解数,除了给玩家奉上更多可供选择的高质量新品外,也为行业贡献了极具价值的市场趋势及变化的分析样本,甚至其中部分产品之间所引发的争论,为关注游戏业的圈内圈外人士提供了不少的谈资。
大势所趋 页游转型谋突破
发展已逾四个年头的国产网页游戏,在经历了从草台班子到专业团队打造的转换过程后,逐渐把重心转移到了产品的内容与技术层面。
与发展初期三五个人便能组建一家公司来进行网页游戏的开发和运营相比,如今的网页游戏领域,不论研发还是运营,其准入门槛都大为提高。虽然相较于传统客户端网游来说,页游门槛并不显高,然而对于一个历经了多年快速发展的新兴领域来说,从前小作坊式的生产已经无法满足市场需要,页游研发与运营必须依靠更为专业的团队。
纵览国内主要页游运营和研发企业不难发现,这些创立不久的行业新星,如今都已具备相当的资本实力和企业规模。而对这些发展进入稳定阶段的成熟企业来说,要想谋求更多的突破,势必要首先从产品的内容形式和技术运用上找到突破口。
以目前国内页游市场份额仅次于腾讯的趣游集团为例,该公司负责人告诉网络导报记者,趣游自2008年创立,短短4年时间,其年营收总额已超过6亿元人民币(涉及数据,未经审计),旗下运营的多款产品均有着突出的市场表现。然而,自2011年岁末至今,其所推出的页游新品当中,虽然不乏上乘之作,却无一款产品能够在市场表现上与之前取得巨大成功的《傲剑》、《仙域》等老产品相媲美。企业的飞速发展和扩张,亟需更多的重量级“拳头”产品。
除趣游以外,广州菲音、海岩网络、51游戏等一批已在页游领域取得卓著成绩的企业,同样亟待找到新的业务增长点。
在这样的大背景下,作为网页游戏未来发展一大方向的3D页游,也便毫不意外地同时为多家企业相中,并被视作企业发展的新机遇。
市场所需 3D拥趸抢江山
除企业发展和自我突破上的需求外,3D页游的大量涌现,也与用户对于传统2D产品渐趋审美疲劳,以及被客户端网游培育出的大批3D“拥趸”对于3D页游产品的迫切需求密不可分。
在大量3D页游精品集中问世前,2D产品牢牢占据着网页游戏的绝对统治地位。然而,受限于技术条件和人才现状,加之国内游戏业一贯的“快餐”式作风,当前大多数2D产品在游戏画风、核心玩法上开始明显地趋于同质化。
就2011年下半年至今,占据各大媒体页游排行榜榜首近一年之久的2D横版页游《神仙道》而言,据不完全统计,自其推出至今,市面上已出现的跟风、模仿产品达数十款之多。
饱受各种“换皮”、“山寨”产品摧残,被“换汤不换药”的粗滥跟风作品 “雷得外焦里嫩”的页游用户们,正迫切需要一批真正具有原创精神,不仅在质量上能够有所保证,还得在外观上能够让人眼前一亮的页游新品——同时具备上述三大条件的一批3D页游精品便应运而生。
由于3D页游本身的技术壁垒,以及3D产品从构建到制作层面上的特性,在当前条件下,3D产品被轻易模仿的可能性更低,更能够避免因“山寨”产品瓜分市场而带来的种种问题。
另一方面,3D也赋予了页游产品更广阔的发挥空间。不论是对宏大世界观背景的直观体现,还是对原画师精美设计的完美呈现,又或是对于玩家即时、直观、震撼体验的满足,3D产品都具备着传统2D所无法比拟的优势。
3D拼杀 细分领域是关键
推出3D页游产品的必要性和重要性毋庸置疑。但观察趣游集团、卓页互动等页游厂商所推出的产品却也不难发现:与他们在2D市场上针对几乎所有主流玩法类型的产品展开激烈“搏杀”所不同的是,他们各自推出的3D页游新品,在题材、画风、玩法上具有明显的区分,并未在产品内容上形成激烈竞争。
例如,趣游集团于2012年上半年正式对外公布,不久前刚刚展开首次对外测试的3D新品《仙纪》,是一款写实风格的仙侠修真题材作品,其核心玩法是融入大量策略元素的ATB战斗。而卓页互动主推的同为3D的《惊天战神》,则是一款不折不扣的“火炬之光”风格的ARPG作品。二者在题材背景、画面风格、人物造型设定,亦或是基本玩法上都相去甚远。不难想象,二者所对应的玩家群体之间并不会有过多交集。《仙纪》这类带有显著本土文化特色,同时以策略型战斗为主的作品,其潜在用户往往是对中国传统文化较为偏爱,对游戏体验更侧重战术策略而非操作,在线时间趋于碎片化的人群。而《惊天战神》的用户群体则无疑会与《魔兽世界》等客户端网游的玩家群体更趋同。
针对3D网页游戏新品扎堆上线的现象,业内分析人士指出:网页游戏的市场竞争发展到目前的阶段,也开始逐步面临着与客户端网游市场相似的问题,即产品数量过多,新增玩家数量远远达不到市场开拓需求的供需矛盾。在这样的情形下,游戏厂商更应该注重对细分领域市场的把握,抓住产品的突出卖点,针对细分领域的潜在用户人群来展开产品改进、市场推广和宣传公关工作。
不论是极具本土文化色彩的《仙纪》,还是有着浓郁“欧美范儿”的《惊天战神》、《霸刀》,又或是风格罕见、特立独行的《魔偶向前冲》,大批国内一线厂商集中发力3D,给玩家带来的是更出色的产品体验,以及更加准确和细分的产品类型选择。不论这些产品最终的市场表现如何,拥有更多选择,能够体验到更多国产页游上乘佳作的玩家都会乐于见到它们的问世。
网页游戏分析 篇4
2011年上半年的网页游戏共开测315次,其中封测153次、内测119次、公测35次、压力测试7次、技术测试1次。
通过测试表我们可以发现,上半年的游戏开测状态依旧延续了网页游戏特有的循环模式。除了首次开测的新游戏之外,剩下的游戏的测试次数基本都在2~3次之间,例如《侠侣天下》从去年6月份首测到现在,已经测试了9次之多,《傲剑》从去年6月份首测到现在测试了7次。关于2011年网页游戏上半年游戏开测表的几点总结 1.大厂商大平台依旧活跃
2011年上半年,国内知名游戏厂商与代理平台依旧以压倒性的优势占据着网页游戏市场。其中昆仑万维测试6款游戏,广州菲音测试4款,人人游戏测试3款(以上均不含重复数据)。2.动漫小说改编潮流仍在继续
继去年大热的动漫改编网页游戏《小小忍者》之后,今年有更多的改编题材网页游戏陆续登场。《海贼王起航》于今年4月9日开启了第二次测试,《银河英雄传》已经在今年的6月21日开启了这款游戏的第七次测试。全新推出的角色扮演游戏《火影世界》也于6月16日进行了首次测试。由人人网代理的改编自著名网络小说《盗墓笔记》的同名网页游戏《盗墓笔记》,更是掀起了一股不小的追捧热潮。3.角色扮演游戏竞争加剧
今年上半年开测的角色扮演游戏照去年相比有着绝对的数量上的飞跃。2010年全年统计显示,全年开测的角色扮演游戏一共开测255次(含重复),战争策略游戏开测235次(含重复),数量仅相差20次。而2011年单是上半年,角色扮演游戏的开测次数就照比战争策略类游戏的开测次数多出了104次(含重复)。因此,今年下半年在角色扮演游戏领域的竞争强度也是可想而知的。4.竞技类游戏受到更多重视
《弹弹堂》的成功无疑给国内同题材网页游戏打了一针强心剂。去年开测表显示,全年的休闲竞技类游戏共测试了35次,而今年仅上半年就已经达到了25次之多。相信在下半年里,休闲竞技类游戏将会逐渐回暖。
5.随处可见的雷同
网页游戏模式分析报告 篇5
致远(转)2007年现代意义的网页游戏开始萌芽,忽如一夜春风来,千树万树梨花开,网页游戏开始猛然膨胀,2009年网页游戏占整体游戏市场的3.3%,市场规模为8.6亿元,同比2008年增长91.1%.网页游戏数量从2008年底的263款,增长到2009年底的516款,速度远超MMORPG游戏。
相对于大型客户端网游,网页游戏具有开发周期较短,用户上手容易,收益快餐化等特色。较低的技术门槛促使了大量的厂家开始进入,随着厂家的介入,资本也开始密切关注到了这个领域,首个获得大规模融资的是51WAN,目前据消息称其又获得红杉的第二轮融资,尽管51WAN并没有正面承认这一消息。但足以表明网页游戏已经成为资本的竞争的红海。
网页游戏开始由2008年初的广撒网就可获利的时代开始转向因同质化、竞争激烈等问题陷入瓶颈。新浪科技获知的数据显示,目前网页游戏市场的门槛已有明显提升,例如制作成本至少提高了2倍,推广成本至少提高了5倍。网页游戏的营销模式已从“广告密集型”转向“知识密集型”,想要让产品在红海中脱颖而出,需要良好的企业推广执行力,精耕而细作。
1、找准目标群体,充分重视开测前的预热。各大游戏类的网站往往是游戏目标用户常登陆网站。在游戏开服前,我们可以根据自身游戏的特色卖点找到游戏新闻卖点,撰写大批的软文并配以游戏精美画面,以此来达到预热告之的效果。而且只要游戏卖点好,各种媒介网站往往也会将其作为内容免费放置到自身网站的重要位置,以增加用户的可读性内容,这是一个双赢的合作。
2、充分重视业内评测团威力,开测时的炒作。物以类聚,人以群分,专业的测评和玩家群体,他们身边必然聚集着大量的游戏同好。游戏开发商可以大量发动专业玩家进入游戏,请专业团队和资深玩家写游戏评测,推荐在各个媒体。在评测的同时,也将笼络住一大批资深玩家的朋友,只要游戏品质过硬,便会以口碑的形式转播开来。
3、选择有实力,有经验积淀,有品牌的网络广告联盟进行长期合作。广告自然是游戏推广不可或缺的一部分,网页游戏的广告适合投放的媒介很多,诸如大型的网页游戏门户265G、17173页游频道、大型的类似晋江这样的文学站等。但是目前大多数网页游戏公司属于刚兴起的公司,还是缺乏专业的推广人才和推广成本核算管理体系,而当前推广网页游戏的主力军网络广告联盟可谓不可忽视的一个外包推广渠道。广告联盟就是将利用自身优势,采用POP-UP(弹窗付费)、CPM(展示付费)、CPC(点击付费)、CPA(行为付费)、CPS(销售付费)等各种形式的广告,将广告分散投放到各个大中小型网站,从而瞬间为网页游戏的开服带去大量的人流量和高曝光度。随着游戏广
告的细化和精确定位,一家好的广告联盟,已经不仅仅是局限在为游戏带来流量和注册的阶段,而是建立自身内部的数据库体系,通过对客户游戏人群的定位来制作网络广告素材,选择合适的网站、页面、广告模式等来进行网络广告的投放,同时也会建立用户的效果分析、成本分析以及后期用户行为跟踪分析。从而全方位的为游戏厂商服务。例如,国内知名的杭州易特广告联盟,该公司经过七年的努力,如今已成为一个互联网营销解决方案服务商,每天覆盖广告浏览量达3个多亿人次,拥有4万多个网站会员数,成为全国领先的网络广告联盟,该联盟已为热血三国、武林英雄、商业大亨、兵临城下、江湖传说等几十家游戏厂商进行合作推广。选择专业的互联网广告及网络营销方案提供商很重要,他们可以帮厂商将产品开发与运营合为一体,通过大范围的用户调查反馈(开发商)及产品针对性宣传(用户)将产品优势最大化。
4、争取知名媒介的联运渠道合作。众人拾柴火焰高,一个公司的能力再大,也不可能独自运营游戏,由于各方面因素的限制,运营的范围就会被局限。目前网页游戏已经进入联运的时代,寻求合作伙伴联合运营,是突破这个局限的主要方法,“取人之长补己之短”双方可利用各自的资源和优势为游戏的运营作出更全面的努力。目前QQ、BAIDU、SINA、迅雷等大型媒介都推出了联运平台,只要游戏质量过硬,玩法有特色,盈利能力好,这些平台也是欢迎合作的。大量的联运可以充分的曝光自身产品品牌,提升知名度,获得不错的收益。
5、游戏活动炒作,人推人模式。网页游戏走上市面以后,常常出现玩家不断流失的情况,那靠什么来留住老玩家,并吸引新玩家呢?可以策划一系列与游戏相关的活动,例如投票或者推荐用户比赛,虽然办法老套不见新意,但这一直是一个留住和吸引玩家的方法,屡试不败。只要抓住玩家的需求不断的提出新的活动模式,玩家自身会推荐他们的朋友一起加入游戏。人推人的营销方式也不失为一个低成本,高目标性的活动。
网页游戏备案需要提交哪些材料 篇6
很多从事网页游戏的公司不知道需不需要做网页游戏备案,是需要备案的。网页游戏备案是为进一步完善国产网络游戏产品备案工作。网络游戏备案是指文化部要求在游戏运营的60个工作日内到文化部做游戏运营备案。那么网页游戏备案都需要准备哪些材料呢?
网页游戏备案材料:
一、文化部网络游戏产品备案申报表
二、产品操作说明;
三、产品主题以及内容说明书;
四、游戏中全部对白、旁白、描述性文字及游戏主题曲、插曲的歌词文本;
五、产品样品(包括网络游戏软件客户端程序,以CD-ROM或DVD光盘为载体)三份,并提供登录账号及其相应密码,该账号应具备最高管理权限(或最高游戏级别);
六、申请单位的《网络文化经营许可证》和《营业执照》复印件;
七、自行审核结果(含可能存在争议内容的相关说明)。
网页游戏备案过程中如有不懂的地方,不妨在线咨询宝家的客服人员,他们会用专业的知识为您解答您遇到的问题,我们欢迎您来电咨询。
国产网页游戏近况观察 篇7
在经历了数年的急速增长之后,国产页游似乎走到了一个拐点,风险与机遇并存,阵痛将不可避免。
昔日黑马光环褪尽
页游的历史最早可以追溯到上世纪90年代的一些简单文字类RPG(角色扮演游戏),但很快便随着《网络创世纪》(UO)、《传奇》等客户端游戏(以下简称端游)的兴起而销声匿迹。在淡出人们视线近十年后,页游又以一种更完善的形态出现了,受到时间不多的上班族和学生的热捧。2008年至2011年间,中国页游成长迅猛,《弹弹堂》、《七雄争霸》等大作月流水过亿,让整个业界对其表现刮目相看。
页游不但以轻松、简单、碎片化的游戏方式对端游产生很大启示,还做到了以往国产游戏没有做到的事情——不但是国产网游开拓海外的主力军,还是在全球游戏领域唯一处于领先地位的代表,完成了国产端游一直未能实现的逆袭。
然而从2012年起,曾经风光无限的页游却遭遇市场寒冬,移动游戏迅速崛起成为游戏领域的新贵,让昔日的黑马陷入了尴尬境地。
在今年5月6日举行的全球移动游戏大会上,页游再度被唱衰。腾讯副总裁马晓轶称页游不过是在原有基础上的渐变,其革新意义远不及移动游戏;而蓝港在线CEO王峰更是直言:“页游没戏了!”再加上之前纷纷表示转战移动端的游戏厂商,大有墙倒众人推之势,国产页游似乎在一夜之间光环褪尽。
长期以来,页游给人留下的就是同质化、低俗虚假营销等不良印象。国产页游确实病了,而且病得不轻!
功利性摧毁用户体验
本世纪初,移动增值服务提供商(SP)所拥有的大量过剩流量急需寻找途径变现,而这正好与刚刚起步的页游行业一拍即合。因为页游运营成本非常低(仅在0.3-0.5元之间),这确保了产品只要进行推广就稳赚不赔,一大批联运商由此诞生。在这野蛮的生长过程中,页游正式形成了自己的商业模式,同时也走向了过度商业化。
国产页游很快因此尝到了苦果。根据艾瑞咨询数据显示,2013年第一季度中国网络游戏广告投放金额达到3.2亿元,其中端游广告投放金额为0.7亿元,页游广告投放金额为2.5亿元,而同期页游的总营收尚不足端游的1/5。此时单位游戏用户的成本已悄然提高到10元以上,整个行业门槛被迅速拉高,大多数页游产品实际上已不具备生存所需要的盈利能力。
著名游戏评论家张书乐认为:“页游发展的症结在于迷失了方向,过度地开发道具付费的盈利空间,而忽略了用户体验,将原本一天就可以玩完的游戏,通过限制的方式,拓展到数月。同时,忽略了游戏的交互性和社交性,变成了一个在网页上玩的单机游戏,这些都成为页游发展的瓶颈。”
以国产页游巅峰之作《神仙道》和《龙将》为例,二者的单机化设计十分明显,社交环节被最大程度稀释,端游时代虚拟大家庭的感觉已很难寻觅。游戏经历了快速升级的初期后,每天所能做的事情就十分有限且机械,玩家很快因厌倦和没有归宿感而流失。
一位业内人士曾痛心疾首地表示:“中国游戏开发商强烈的功利性和控制欲,在这几年里彻底摧毁了中国本土轻中度游戏市场的社交基因和游戏文化。”而失去了这些,游戏就失去了它的灵魂,同质化、低俗虚假营销等问题就难以避免了。
融合社交机会大增
和社交游戏融合能很大程度帮页游解决交互性问题。高度的互补性促成了“页游社交化”以及“社交游戏web化”:社交游戏的强交互性、高留存率和黏性是页游所不具备的,而页游的复杂玩法、竞争性和对抗性等刚好弥补了社交游戏的短板。近期,正是一批社交、休闲类的轻游戏,为页游发展提供了强劲的增长动力。
国产页游广为诟病的同质化问题已经到了非解决不可的当口。趣游CEO玉红表示,今后的每一款产品都必定坚持两年以上的开发时间,以确保游戏的内涵和细节精品度。墨龙科技首席制作人陈默认为页游应该做到有“ 别样的题材、高品质的视觉体验,配合激情和丰富的玩法。”
在死亡率高达90%以上的激烈竞争中,唯有不断提高研发水平与游戏质量,坚持技术和玩法的创新,才能最终成为胜利者。
页游低俗营销的情况依旧存在,不过这条路很难再继续走下去。一方面玩家经受长年累月的轰炸已经产生审美疲劳,从主动关注发展成主动忽略;另一方面传统渠道的广告费用一路攀升,也让部分页游企业开始难以承担。越来越多的页游厂商开始尝试创造话题热点、进行影视跨境合作等正常的营销手段,已经取得了不错的成效。
至于泛滥成灾的页游虚假广告问题,还需要相关部门加大监管力度,从根本上重塑页游行业的整体形象。否则不但页游自身难脱负面的印象,同样的悲剧还将在手游领域继续蔓延。
环境、技术革新 瓶颈不再
页游对游戏的革新意义无法抹灭,因为它代表了玩家一种永恒的体验需求:点开即玩,没有门槛。游戏方式从端游向页游的进化,和游戏设备从固定端到移动端的进化,是游戏轻便革命的两大支柱,少了哪一条腿都走不快。
但即使是页游玩家,对高性能游戏体验依旧留恋,因为之前不够成熟的技术条件,页游为达到和客户端相媲美的效果,需要下载的内容甚至可以高达好几百MB。在带宽受限的情况下,玩家完全可能是行走在一片马赛克之中,很难谈得上有什么良好的体验。
随着中国宽带战略的提升,网络环境将得到大幅改善,宽带提速已经大规模展开,很多市民家中的宽带免费从2M升到了10M。这一举措对游戏行业无疑会产生巨大的影响。对游戏过程中需要下载大量数据的大型页游和微端游戏,提升尤其巨大。
5月26日,以unity3d引擎技术打造的《新仙剑》内测拉下帷幕,游戏强劲的画面表现令人惊叹,且在制作方的努力下,插件的大小压缩到了仅有5.25MB。当然,游戏对设备的配置要求丝毫不逊于客户端游戏,对内存的占用就达到了惊人的600MB。
另外一项关键的网页技术Flash 11很快将得到Unity3D的官方支持。2012年第一季度发布的Flash11增加对鼠标右键和中间键点击的支持,并称将在2D和3D游戏的性能与效果方面提升至少一千倍,虽然不乏噱头的成分,但是从中可见在PC端,目前的技术条件开始走向成熟,3D页游已经成为页游发展的一大趋势。
3d游戏建模师简历个人 篇8
出生年月: 1992年8月
工作年限: 应届毕业生
毕业院校: 华中师范大学武汉传媒学院
毕业年月: 20xx年6月
最高学历: 本科
所学专业: 影视多媒体技术
居 住 地: 湖北省 武汉市 江夏区
籍 贯: 湖北省 武汉市 江夏区
自我描述:
求职概况 / 求职意向
职位类型: 全职
期望月薪: 面议
期望地点: 湖北省 武汉市 ,四川省 成都市 ,广东省 广州市
期望职位: 游戏建模师
意向概述: 本人对网游 次时代游戏非常感兴趣 希望求得3D角色建模师教育经历
20xx年9月 - 20xx年6月 华中师范大学武汉传媒学院影视多媒体技术大专
在大学专科三年里我利用课外时间攻读了自考本科华中师范大学数字媒体艺术专业,以及在剩余时间里自主学习了三位软件3D MAX MAYA 工作实践经验
20xx年9月 - 20xx年11月宣传部视频剪切人员湖北省京山县畜牧局
3D手机游戏试卷内容总结 篇9
1、产生初期方案
手机游戏开发的开始阶段,策划员要根据市场信息,设计出游戏的初期方案。该方案包括游戏 的种类、内容、故事情节、美术风格、玩法及软件的大小。然后,团队成员需要共同讨论方案的可行性,确定方案能否被顺利完成。
2、定夺详细方案
如果初期方案可行,策划员要进一步设计详细方案。详细方案包括游戏中人物的职业类别、人物活动的规则、场景的数量、每个场景的主题(如雪地、森林等)及游戏图片的清单等。详细方案提交后,团队成员再次进行讨论,交流各自的意见,经过反复地讨论和修改,才能定夺出最终的手机游戏详细设计方案。
这个过程非常关键,设计方案时要尽可能地考虑实际开发中会遇到的问题,尽量保证今后不对方案进行修改。如果方案设计不好,使得今后需要大范围地改动,那么很可能导致项目的失败。
3、制定工作进度计划
游戏方案定夺后,各部门负责人要给出详细的工作进度计划表。表中写明开发工作中每部分的负责人及具体的完成时间。完成时间不能制定得太久,但也要给负责人留出一定的余地。同时工作进度计划还要考虑各部门的协作关系,如某些工作需要美工先给出图片,程序员才能编写代码。
4、开发游戏的demo 制定了工作进度表后,各部门按照计划开发游戏的demo(样本)。在这个过程,策划员与美工、策划员与程序员、美工与程序员之间要及时沟通,避免做无用的工作。尤其是程序 员,要仔细理解游戏的设计方案,不能猜测,有不明白的地方要及时与策划员协商,不能将问题遗漏到最后。同时策划员还要根据实际开发中遇到的问题对游戏方案进行一些必要的修改。
5、测试并修改(demo)
游戏的demo完成后,策划员或测试人员需要对其进行测试。测试人员不仅要找出游戏的bug(错误),还要将游戏下载到不同的真机上,进行实际运行效果的测试,然后测试人员要给出测试报告。程序员接到测试报告后,修改bug,并对 demo进行优化。修改和优化完成后,程序员提交新的demo,测试人员再对新的demo 进行测试。这样反复地测试、修改和优化完成后,直到整个游戏没有明显的问题后,手机游戏的开发工作才基本结束。
二、什么是游戏引擎,游戏引擎的功能(P7)游戏引擎就是用于控制游戏核心功能的主程序,它将各类游戏中通用的功能模块封装到 一起。
作用:在游戏引擎的基础上开发新游戏,会大减少开发的工作量,同时也会大大降低新 游戏的开发难度。
三、MIDlet框架说明(P19)MIDlet程序有三个状态,分别是:活跃(active)、暂停(pasue)、销毁(destroyed)。startApp()„„使MIDlet进入活跃状态
destroyApp()„„在活跃状态下,如果某处程序调用了MIDlet的destroyApp()方法使 MIDlet进入销毁状态
pauseApp()„„在活跃状态下,如果某处程序调用了MIDlet的pauseApp()方法使MIDlet 进入暂停状态
四、3D游戏场景中最基本的元素:摄影机、光源、实物(P39)
五、透视投影(P40)
透视投影与人眼的成像原理相同,是一种“近大远小”的图像映射方式。Public void setPerspective(float fovy, float aspectRatio, float near, float far)功能:将摄影机设置成透视投影方式
参数:fovy„„„„„„„„视棱锥的纵向角度数(0度—180度)
aspectRatio„„„„显示区域的横纵比
near„„„„„„„„远裁剪面离摄影机的距离 far„„„„„„„„„„远裁剪面离摄影机的距离
异常:当发生以下任一情况时,系统将产生异常。fovy<0或aspectRatio<0或near<0或far<0; fovy>=180
六、光源类型(public void setMode(int mode))(p42)(1)点光源„„OMNL(2)聚光灯光源„„SPOT(3)环境光源„„AMBIENT(4)平行光源„„DIRECTIONAL
七、模型的顶点(p46)索引数组存储什么信息,怎样构图 顶点数组„„ 八、三角形带(p49)int strip[]={0,1,2,3,4,5};
九、坐标系(p67)
屏幕坐标系、世界坐标第、本地坐标系
屏幕坐标系:是相对于屏幕的2D坐标系,坐标系的原点就是屏幕的左上角,坐标
系的Y轴
正方向朝下。
世界坐标系:是整个游戏世界的三维坐标系。默认情况下,世界坐标X轴与Y轴 所确定的平面与手机屏幕平行,而Z轴方向则垂直屏幕向外。
本地坐标系:是以某个模型为中心的三维坐标系,坐标系的原点位于模型的中心。
十、外观控制类(p81)
5种外观效果分别由PolygonMode、CompositingMode、Material、TexturedD、Fog 等5个类来控制。
十一、模型颜色的混合模式(p84)
public void setBlending(int mode)功能:设置模型与背景颜色的混合模式。
参数:mode„„„„„„颜色混合模式,可取如下值。
REPLACE 替代模式 MODULATE 调制模式 MODULATE_X2 调制乘2模式 ALPHA
半透模式 ALPHA_ADD 半透叠加模式
十二、纹理的寻址方式(p97)
(1)重复寻址(2)截取寻址
public void setWrapping(int wrapS,int wrapT)功能:设置纹理的扩展寻址方式
参数:wrapS„„„„s轴的寻址方式 wrapT„„„„„„t轴的寻寻址 wrapS与wrapT只能取如下值。
WRAP_REPEAT 重复寻址 WRAP_CLAMP 截取寻址
十三、纹理的颜色混合模式(p98)
(1)替代模式(FUNC_REPLACE)(2)调制模式(FUNC_MODULATE)(3)贴花釉模式(FUNC_DECAL)(4)叠加模式(FUNC_ADD)(5)混合模式(FUNC_BLEND)十四、三维场景的导入方式,有语言陈述加代码表示(p110)
在3dMax7.0或高级的版本中,制作完成三维场景后,可通过3ds Max的导出功能,将场景保存到m3g文件。„„
如下方法可将场景信息读入到World对象 World myWorld;try{ Object3D[]roots=Loader.load(“scene.m3g”);myWorld=(World)roots[0];} Catch(Exception e){ e.printStackTrace();}
十五、3D对象编号(p140)
设置实物编号的方法以:
public void setUserID(int userID)功能:设置3D对象的编号
参数:userID„„用户自定义的编号 获取用户定义的编号 public void getUserID()功能:获取3D对象的编号 返回:3D对象的编号
十六、碰撞检测(142)
Pick方法有两种形式:(A)Pick,(B)Pick两种方式的区别:
(A)Pick方法只能对当前组中的模型(Mesh)子节点进行碰撞检测,即(A)Pick方 法只能判断指定的射线是否与当前组中的某个模型相交。
(B)Pick方法可对当前组中的模型(Mesh)或3D精灵(Sprite3D)节点进行碰撞检测,而且只有缩放模式为true的3D精灵才能进行碰撞检测。
十七、不同实物的碰撞检测 及碰撞处理
从碰撞检测及碰撞处理方法的角度,3D场景中的实物可分为三种类型,分别是不 需要碰撞检测的实物、普通实物、地表,其中普通实物与地表都会与角色发生碰撞。(1)角色与普通实物的碰撞检测及碰撞处理
角色与普通实物进行碰撞检测的方法是:设置一条射线,射线的起点是角色身体上的某 一参考点,而射线的方向是角色前进的方向;如果该射线 与普通实物相交,且射线起
点与交点的距离小于规定值(通常为角色宽度的半),则表明角色与实物发生碰撞,角色将不能前进。
(2)角色与地表的碰撞检测 及碰撞处理
通常情况下,角色始终会行走于地表之上。通过角色与地表的碰撞检测,可以 调整,可以调整角色高度,使高度随地表的起伏而变化。
3d大型网页游戏 篇10
先清除浏览器缓存,打开浏览器点击菜单栏上“工具“选项,选择“ Internet 选项”。
解决玩网页游戏卡,慢等异常问题的一些方法
点击”常规“选项,点击”删除“,出现如下图:出现对话框后再点击下面的删除按钮
决玩网页游戏卡,慢等异常问题的一些方法
然后再到“ Internet 选项”,点击下面的确定
解决玩网页游戏卡,慢等异常问题的一些方法
第二种
此方法适用于:卡进度条、无法正常进入游戏画面、黑屏、白屏。
重置浏览器:打开浏览器点击菜单栏上”工具“选项,选择“ Internet 选项”。
解决玩网页游戏卡,慢等异常问题的一些方法
单击“高级”选项卡。在“重置 Internet Explorer 设置”下,单击“重置”。
解决玩网页游戏卡,慢等异常问题的一些方法
完成Internet Explorer重置设置后,从新打开 Internet Explorer即可
第三种
如果打开网页游戏提示更新或者安装FLASH、FLASH异常、图片显示异常(小黑人)等,可以使用金山卫士的软件管理功能,在软件库搜索adobe flash player然后点击下载并安装。安装后重启浏览器。
第四种
如果游戏卡、慢,网络延时,DNS服务器错误等,可以修改DNS。
在桌面上右键点击网上邻居,再点击“属性”打开网络连接
解决玩网页游戏卡,慢等异常问题的一些方法
右键点击“本地连接”选择“属性”打开本地连接属性
解决玩网页游戏卡,慢等异常问题的一些方法
点击Internet协议(TCP/IP)出现Internet协议(TCP/IP)属性对话框
解决玩网页游戏卡,慢等异常问题的一些方法
Unity3D编写雷电游戏 篇11
一、搭建游戏的框架。
一般的游戏都可以分为四个场景:
1.开始界面
2.游戏场景
3.暂停界面
4.结束界面
开始界面,就是存放开始菜单的地方了,游戏场景就是游戏的主场景,游戏的主要元素都在这边体现,暂停和结束画面我就不多说了。更多的还有在开始和主游戏场景之间加入过场动画等等。当然你也可以在暂停界面中插入广告
我们会发现这几个场景之间其实就是切换来切换去的关系。如果知道设计模式中的State模式,就会发现跟这个很象。可以通过State模式来实现这几个场景的分离,然后分边为他们添加不同的元素。
想要挂接在Unity3D中的结点的脚本都得继承MonoBehaviour,State就是所有的状态的父类了,主要是三个函数,Init()用于这个状态的初始化,Update用于场景的更新,Exit()用于当离开当前状态时所进行的一些操作,比如隐藏当前界面等。
创建一个空的Object用来挂接我们游戏的主脚本,代码如下:
using UnityEngine;using System.Collections;public class Main_Script : MonoBehaviour { public State m_CurState;public void ChangeState(State newState){ m_CurState.Exit();m_CurState = newState;m_CurState.Init();} // Use this for initialization void Start(){ m_CurState.Init();} // Update is called once per frame void Update()
{ m_CurState.Update();} } 这样我们就可以轻松的在不同的状态中切换了。想要增加一个新的状态,就只需继承State类,然后在其中写这个状态所要的元素,在适当的地方ChangeState一下就好了。
脚本的层次结构如下: 例如我在按钮按下时切换到开始场景:
using System.Collections;public class BeginGame : MonoBehaviour { public StateRun m_RunState;public Main_Script m_MainScript;// Use this for initialization void Start(){ } // Update is called once per frame void Update(){ } void OnMouseEnter(){ print(“enter”);} void OnMouseUp(){ m_MainScript.ChangeState(m_RunState);} void OnMouseExit(){ print(“exit”);} } 这个脚本是挂在一个板上面的,点击它时就进入游戏的主场景了。下回说一下飞机的移动。
现在开始真正的游戏元素的编写了。
第一步,让飞机动起来。
首先是飞机的前进,通常2D中的做就是背景的循环滚动。
在3D中我们可以让摄像机移动,背景我们可以做超一个大地形。在地形上摆一些固定的东西。
// Update is called once per frame void Update(){ TurnLeft = false;TurnRight = false;if(Input.GetKey(KeyCode.W)){
Vector3 screenPos = Camera.mainCamera.WorldToScreenPoint(this.transform.position);//print(screenPos.y);if(Screen.height > screenPos.y)this.transform.Translate(Vector3.forward * Time.deltaTime * m_nMoveSpeed);} if(Input.GetKey(KeyCode.S)){ Vector3 screenPos = Camera.mainCamera.WorldToScreenPoint(this.transform.position);if(0 < screenPos.y)this.transform.Translate(Vector3.forward * Time.deltaTime *-m_nMoveSpeed);} if(Input.GetKey(KeyCode.A)){ Vector3 screenPos = Camera.mainCamera.WorldToScreenPoint(this.transform.position);if(0 < screenPos.x)this.transform.Translate(Vector3.left * Time.deltaTime * m_nMoveSpeed);//向左转
if(CurRotation < RotateLimit){ print(CurRotation);CurRotation += RotateSpeed;} TurnLeft = true;} if(Input.GetKey(KeyCode.D)){ Vector3 screenPos = Camera.mainCamera.WorldToScreenPoint(this.transform.position);if(Screen.width > screenPos.x)this.transform.Translate(Vector3.left * Time.deltaTime *-m_nMoveSpeed);//向右转
if(CurRotation >-RotateLimit)CurRotation-= RotateSpeed;TurnRight = true;} //回归
if(!TurnLeft &&!TurnRight){ if(CurRotation > 0.0)CurRotation-=RotateSpeed;else if(CurRotation < 0)CurRotation +=RotateSpeed;} Quaternion rot = Quaternion.AngleAxis(CurRotation, new Vector3(0, 0, 1));m_Plane.rotation = rot;
//让相机和飞机一起以一定的速度前移
this.transform.Translate(Vector3.forward * Time.deltaTime * m_nMoveSpeed);Camera.mainCamera.transform.Translate(Vector3.up * Time.deltaTime * m_nMoveSpeed);} 飞机的主要控制代码。不知为什么,我的两个角度限制没有效果。郁闷。有空还看一下。
这次先加入子弹的发射吧,没用模型,先用的一个capsule的prefab代替吧。
一想到各种武器之间的随意切换,就不由的想到了设计模式中的Strategy模式。
有关策略模式的详细介绍可以通过百度和维基来学习。
这个模式其实和State模式差不多。
Weapon类是所有武器的基类,新的武器继承于它,设置发射点,子弹模型,然后实现Fire函数就可以了。
WeaponManager用于管理所有武器,切换武器。
using UnityEngine;using System.Collections;public class WeaponManager : MonoBehaviour { public Weapon m_CurWeapon;private float m_FireElapseTime = 0;
// Use this for initialization void Start(){ } // Update is called once per frame void Update(){ m_FireElapseTime += Time.deltaTime;if(Input.GetKey(KeyCode.Space)){ if(m_FireElapseTime > m_CurWeapon.GetBulletInterval()){ m_CurWeapon.Fire();m_FireElapseTime = 0;} else { } } } } 记录子弹发射后的时间,然后在大于时间间隔后才能发射下一个子弹。
武器父类:
using UnityEngine;using System.Collections;using System;public class Weapon : MonoBehaviour { //子弹时间间隔
protected float m_fBulletInterval = 0;//子弹类型
public String m_typeName =“";public float GetBulletInterval(){ return m_fBulletInterval;} // Use this for initialization void Start(){ } // Update is called once per frame void Update(){ } public virtual void Fire(){ } } 最基本的一种子弹:
using UnityEngine;using System.Collections;public class WeaponNormal : Weapon { private const int MAX_FP = 2;public Transform[] m_FirePoint = new Transform[MAX_FP];public Rigidbody m_BulletPre;WeaponNormal(){ m_fBulletInterval = 2;m_typeName = ”Normal“;} // Use this for initialization void Start(){ } // Update is called once per frame void Update(){ } public override void Fire(){ for(int i = 0;i < MAX_FP;i++){ Rigidbody clone =(Rigidbody)Instantiate(m_BulletPre, m_FirePoint[i].position, m_FirePoint[i].rotation);clone.velocity = transform.TransformDirection(Vector3.forward * 20);} } } m_FirePoint是一个数组,存储了发射子弹的位置。在编辑器中,可以在飞机周围用空的GameObject放置一系列炮口的位置,然后拖入这个数组中。MAX_FP定义了炮口的数量。这里边用到了速度属性,这个是rigidbody才有的,所以在设置子弹的prefab时一定要为它加上rigidbody才行。结构如下图所示:
最后的效果图:
现在子弹出来了,但是我们没有加上子弹的消亡,这样子弹被创建出来后就一直存在于场景中不会消失,会越积越多,所以我们让子弹在移出屏幕时就把他销毁掉。
using UnityEngine;using System.Collections;public class BulletControl : MonoBehaviour { // Use this for initialization void Start(){ } // Update is called once per frame void Update(){
Vector3 screenPos = Camera.mainCamera.WorldToScreenPoint(this.transform.position);//print(screenPos.y);if(Screen.height < screenPos.y)Destroy(transform.gameObject);} } 将这个脚本挂接在子弹的prefab上就可以实现效果了。
己方的飞机控制已经初步完成了,现在要加入敌机了。
理论上应该有两种方式:
1.预先设定,就是在编辑器里在你想要的位置上加上敌方的攻击单位
2.动态生成,根据游戏进行的时间来控制敌方攻击单位的产生。
这边采用第2个方式来产生,有一些地面单位倒是可以用第一种方式来产生。
我们首先要设置一个敌机的产生位置,用空的object可以随意的定一个坐标。
using UnityEngine;using System.Collections;public class EnemyManager : MonoBehaviour { public GameObject m_EnemyPre;public Transform m_CreatePoint;//一波飞机的数量
public const int MAX_GROUP_ENEMYS = 4;//两波飞机之间的时间间隔
public float GROUP_INTERVAL = 2.0f;//同一波中两架飞机之间产生的间隔
public float CREATE_INTERVAL = 0.25f;private float m_fTimeAfterOneGroup = 0.0f;private float m_fTimeAfterCreate = 0.0f;private int m_nEnemyNum = 0;// Use this for initialization void Start()
{ } // Update is called once per frame void Update()
{ m_fTimeAfterOneGroup +=Time.deltaTime;m_fTimeAfterCreate += Time.deltaTime;if(m_fTimeAfterOneGroup > 2.0f){ if(m_fTimeAfterCreate > 0.25f){ GameObject clone =(GameObject)Instantiate(m_EnemyPre, m_CreatePoint.position, m_CreatePoint.rotation);clone.AddComponent(”MoveScript_Shake“);m_nEnemyNum +=1;m_fTimeAfterCreate = 0;} if(m_nEnemyNum == MAX_GROUP_ENEMYS){ m_fTimeAfterOneGroup = 0.0f;m_nEnemyNum = 0;} } } } 敌机的移动脚本,可自己再定义新的移动脚本,在创建新敌机时挂上去就好:
using UnityEngine;using System.Collections;public class MoveScript_Shake : MonoBehaviour { //标志左右移动方向
private int m_nDir = 1;//原始位置
private Vector3 m_OriginalPos;//水平移动速度
public float m_HoriSpeed = 0.1f;//翻转速度
public float m_RotSpeed = 1.0f;//向前移动速度
public float m_MoveSpeed = 0.0005f;public Vector3 curScreenPos;public Vector3 LDPoint;// Use this for initialization void Start()
{ m_OriginalPos = transform.position;LDPoint = GameObject.Find(”LDPoint“).transform.position;print(LDPoint);} // Update is called once per frame void Update()
{ float relativeOffset = transform.position.x10){ Destroy(this.gameObject);} // print(”Cur:"+transform.position);// if(transform.position.z < LDPoint.z)// { // Destroy(this.gameObject);// } } } 实现效果:
原来那个用Unity3D自带的火焰老改不出想要的效果,去看了一个教程,调出一个还好的感觉。
最后的效果是:
【3d大型网页游戏】推荐阅读:
大型原创3D网络游戏项目招商企划书08-21
打开网页玩的网页游戏10-10
大型体育赛事3D转播06-21
网页游戏12-08
传奇的网页游戏09-21
好玩网页游戏前十名05-20
经典的网页游戏排行榜10-25
网页游戏排行榜前10名01-08
网页游戏所需办理证件有哪些12-30
五个大型团队游戏01-14