游戏开发论坛

 找回密码
 立即注册
搜索
查看: 13169|回复: 4

魔兽世界规模网游的十年设计故事和引擎技术分享

[复制链接]

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
发表于 2016-5-27 10:07:32 | 显示全部楼层 |阅读模式
魔兽世界规模网游的十年设计故事和引擎技术分享
QQ空间版本连接:http://user.qzone.qq.com/188500397/blog/1464273121
目录
一.成长经历
1.大学时光:
2.工作生涯和大事记:
二.游戏研发的入门和选择可行的道路:
三.各种引擎技术的研究(完美的解决各种技术和分享):
1.文字显示
2.键盘鼠标的研究
3.全屏幕的研究:
4.各种WINDOS技术:
5.地面的研究:
6.地形研究(全球少有的、月10万以上工资的无缝地图技术):
7.一望无际的的花草树木技术
8.一望无际的密集树林设计:
9.影子技术:
10.碰撞技术(这也是大块头技术,设计的好坏直接影响效率和后期制作)
11.快捷键
12.地面的万物:
13.庞大世界上花草树木的自动生成设计:
14.动物的设计:
15.高效低耗:
16.超强兼容性:
17.环保免安装的客服端:
18.服务器的设计
四.一些游戏功能介绍
五.截图技术解说
六.附录
1.本游视频和下载地址
2.作者信息

一.成长经历
我成长于游戏资源网,在那里可以找到我十年中遇到问题找答案的记录.
本文分享了一些技术的最佳解决方案,可以让研发游戏的同学们少走弯路.
1.大学时光:
就从十多年前讲起吧.
大学时候我读的是计算机应用,很喜欢编程,更喜欢玩游戏,第一款游戏是辐射2,一玩就是3个月,后来又玩了魔法门.
后来的大学时光我都在自学c语言编程.上机测试每一道例题、每一道习题,修改了很多想法.
那时候还是dos时代,一次寒假,编写了一个全屏显示一个五角星发光的程序,我很得意,修改了很多想法,但感觉很极限.

2.        工作生涯和大事记:
毕业后从事软件研发,两年后从事银行系统研发工作,这一走就是十年,工作中不为钱只为时间来暗中研发这个项目,十年后各种引擎核心技术已经完美解决了,于是辞职隐身于大理专业最后的研发.一年前第一次在游戏资源网公开我的研发消息.今年过年上线了测试版,只需要整理和添加好玩内容.

二.        游戏研发的入门和选择可行的道路:
一次买了本opengl的书,这就注定了我人生道路。
开始也只是好奇而膜拜的学习.
后来又买了一本带光碟的书,有一些效果和动画,我觉得有了这些例子,就不用担心不懂的技术了,于是就开始学习编写游戏.
这个时候我心还是没有底,担心一些技术的实现,我必须掌握蒙皮动画技术,和足够研发时段使用的模型资源才行,后来终于找到魔兽世界模型资源和实现代码.
这下我终于安心了,我研究了好几个月,开始用openg实现,又觉得还是跟着微软走采用dx更好,又使用dx实现了各种模型的显示,但是发现dx的例子太缺乏,
很多功能明明可以封装好给大家使用的,为什么微软不这么做呢?后来终于决定使用opengl.

三.        各种引擎技术的研究(完美的解决各种技术和分享):
1.        文字显示
opengl库只能显示字母,能显示立体的中文,但不能显示最普通的中文,而且效率很低,根本就不可能用于游戏中.
经过不懈的研究,学习了调用字模库,后来终于被我给研究出高效显示文字了.好把,既然写了故事,就顺便分享技术满足各位同学的愿望吧.
直接使用操作系统API内存显示文字,转换成纹理贴图来做就好了,既效率好而且可以显示所有的文字.
2.        键盘鼠标的研究
opengl有提供这些函数,但经不停的研究对比,发现还是使用windos的更好.

3.        全屏幕的研究:
经过不断的思考和对比和遇到好多的问题,发现opengl的全屏幕在微软系统上的支持不是很好,所以后来决定使用窗口模式的假全屏幕来做,不然会遇到好多解决不了的问题,仅仅这个输入法问题就够呛的了.

4.        各种WINDOS技术:
在微软系统上的程序,少不了这些的研究,必须样样深入研究,而解决这些问题的关键就是上面全屏幕的研究.opengl坐标和窗口的坐标转换也很麻烦,特别是全屏幕和窗口模式的切换.
5.        地面的研究:
经过了很长时间的研究,终于解决了基本的问题,可以开始研究有点趣味的东西了.
开始采用魔兽争霸的地面拼图模式,固然是拥有了制作地面的技术,但这种技术我不满足,我希望拥有魔兽世界和完美世界那种无缝地图和渐变地面贴图的技术.
找遍因特网,只找到根据高度来贴图的例子,做不到随心所欲任意贴图,我坐立不安,后来采用显卡编程GLHL,终于研究出一次渲染支持无数层地面贴图的技术,非常高效,但由于多纹理数量限制,后来定位为一次渲染16层,所以大家能看到我的地面花花绿绿不是一般游戏可以比的,当然分成十六次渲染也能做到,但效率很低,这不是我忍心采用的技术。后来由于大部分电脑不支持GLHL显卡编程,所以改用cg显卡编程,经过了不眠的一天一夜研究,终于无误的改写为cg显卡编程,做到了普遍电脑都支持.但cg显卡编译器只能同时支持10个纹理,其实我没有同时10层一起渲染,所以上线的测试版定位为一次渲染10层贴图,如果把所有贴图拼成一张贴图那么就可以支持更多层贴图,但地面格子之间有接缝,理论上肯定能解决的,等我有时间再研究.现在一次渲染10层已经够用了,如果需要更多,可以分多次渲染来解决,比如雪地类型组贴图,沙漠类型组贴图,戈壁等.到此已经完美解决地面贴图问题.

6.        地形研究(全球少有的、月10万以上工资的无缝地图技术):
在这里花了好几个月时间,开始的的时候是想设计成随机生成山脉丘陵,注意是山脉有海拔高度的山脉,不是单独的山技术(我这个人很追求完美,山的技术是不能满足我欲望的),睡梦中拉起被子,以为被子就是山脉,我赞叹多么柔顺的数据,无论怎么翻数据都非常均匀都是没有菱角的山,后来也研究出了非常好的随机山脉,但总觉得有缺陷,出门我总看着山,回家制作出了这样的山脉,又发现缺少了另外的山脉类型,还是不满意.从此我每天都看着山.我没办法,不能完美解决此技术我心不能平静.无数次研究谷歌的高度图,后来终于决定采用真实的卫星高程数据来做,
在美国的网站下载的卫星高程数据http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp,数据太大,我不愿意我的游戏里有这么大块的数据,经研究后,终于做到只需要4m就能应用全球高度数据,当然这是卫星扫描的地图, 应用于游戏中还需要修改,虽然可以ps修改,但这样对后期的制作还不够方便和灵活,必须做到在游戏中可以随意修改才行. 之前为了减少数据体积采用了jpg技术,但是问题又来了,修改后保存数据,再此打开数据会有变化,因为jpg是压缩的嘛,数据不精确.后来只能采用折衷的办法,采用tga格式,16m的地形数据完美解决地形技术。
由于考虑压缩数据体积和无缝地图的设计,所以引擎算法非常复杂,这不是常人所能承受的了的设计过程,其中要大地图定位,小地图定位,真实地面定位,修改地面定位,缩放,小位移大位移,对准地面贴图,加上显卡的渲染顺序差异,还要支持无缝的大切图小切图,更费心机的是要设计到效率非常好且占用内存非常小,所以非常复杂.
如今轻舟已过万重山,已经完美解决了,说句心里,如果我忘记怎么设计的话,我不愿意再设计一次.
大概介绍这种高大上的无缝地图技术吧:首先下载全球地图快,ps拼图,体积非常大,缩小,因为地形数据连续是平滑的,缩放不影响质量,最后转换成灰度图,从16m的地图中,切一块够小又足够几个平面使用的大地图块,然后每次写入真实的地面数据,就从其中切一小快当前地图数据,
这样16m的数据就不用驻留内存,走了非常远才出界就重新切一块地图数据。估计暴雪也没我这样极端高效低耗的设计


未完有后续...

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
 楼主| 发表于 2016-5-27 10:07:48 | 显示全部楼层
7.        一望无际的的花草树木技术
自创的设计,想种多少就种多少,占用内存少效率非常高,配合地面贴图来种,就更加漂亮.想要设计会动的草,可以只做近的草会动,草是柔软的可以使用插值技术来做.每种草做两个最大的摆动模型,渲染时计算相同点之间一定的比例值就做到轻轻的摇摆了.树叶也可以这么做,那种总是正对着玩家摇动的技术我是绝对不用的,刀剑等硬的东西就不可以这么做,会变形的,必须计算模型部件的旋转才行.
8.        一望无际的密集树林设计:
游戏中如果能现实山上密密麻麻的树木那该多么壮观,但是一次渲染几十万个树模型那可不是闹着玩的,一次我走在大理洱海边,看着前面的树,终于被我想到怎么高效实现这种技术.所以你会在我的游戏里面看到仅有绝无的密林.
9.        影子技术:
之前多人打击我的影子技术,我还没时间做这些设计嘛,这个就比较简单,直接画一次模型到地面高度上就做到了.我设计的影子树叶都很清晰,连草都有影子。
地面的阴影就更简单,根据光线的角度计算明暗度,显卡编程中按照明暗渲染就好,不要在显卡编程中计算,那样每帧都要计算一次。
10.    碰撞技术(这也是大块头技术,设计的好坏直接影响效率和后期制作)
通常的做法,每走一步,历遍所有辅助碰撞体,每个动物走一步都要历遍一次,每个可能碰撞的模型都要所有三角形计算一次碰撞,三角形的计算也比较复杂,所以这碰撞明显耗时间.
而且如果是多个模型或者多个三角形间有一条缝呢,一条缝是不可以穿过的,所以需要更多的计算.
我是怎么解决这些问题的呢,我的设计也是匪夷所思,我已经完美的解决碰撞的问题了,做到高效精确,免辅助碰撞模型,每走一步无需历遍直接就知道那个模型可能碰撞,采用高等数学自创的算法,研发了立体碰撞公式,不会穿过一条缝,也不会从一条缝里掉下来,计算碰撞三角形时还层层排除大部分免计算直接out,做到复杂的模型中乱穿不会卡住.更有决定意义的是后期制作非常简单,把模型放下去就支持碰撞了,房子楼层自动支持进出攀爬,把模型叠一起就成了现实碰撞的高楼大厦.
设计难度还有就是不同坐标系统的切换.也透露点技术,把动物的运动数据转换成模型旋转位移坐标系统后,再与模型计算碰撞,这样就高效.
这种极端高效低耗而且精确的技术就不公开,有缘再分享吧.
11.    快捷键
已经完美解决支持任何快捷键的定义,这个没什么秘密技术,知道了就能做,我提示一下重点,这个WM_SYSKEYDOWN消息获取系统按键。
12.    地面的万物:
这个就没什么好介绍的,直接选择模型摆下去就好了,自动支持碰撞和影子,想要什么样的场景就怎么摆.
13.    庞大世界上花草树木的自动生成设计:
我设计的地图直线奔跑3天3夜才能走到边,不可能手动建设地面上的模型,但是如果不建又空荡荡的,地大浪费没意义了.
于是,设计了按照配置生成花草树木,首先设计配置文件,配置各种花草树木地皮的搭配,然后在专用的地面分布图上画圈圈,这些圈填上不同的颜色代表不同类型的花草树木搭配类型。然后引擎就根据这些配置自动生成。这样全球的生态环境就成了,当然这样不完美,然后可以建设任何模型,可以修改任何地形和地表贴图,这样就完美了.
引擎要设计好随机分布的规律,这个需要花心思去调整使之看起来更自然.我的设计已经自然了。
14.    动物的设计:
从我发布的截图和测试版能看到,大的动物群体,各种动物三五成群,走走跳跳或是东张西望吃吃草.山坡上牛羊成群,可以设置为看到玩家就攻击的,只反击的,打不还手的,被打就跑的等。 如果我有时间还设计非洲奔跑的动物群场景,那场面就更加震撼了。既然能支持非常多同屏幕动物,自然支持大军厮杀的战场。
15.    高效低耗:
如此大型的网游,每个人都会担心效率问题,如果不能做到极端的高效低耗,那么我的设计仍然是废物。从我已经上线的测试版可见,整个客户端含服务器压缩后才64m,哪怕是最复杂的场面,运行占用内存也不超120m(64位加一倍),占用cup时间也还是接近0.我已经估算了,就算之后加入非常多的资源和非常复杂的效果,占用磁盘空间也不会超过300m,占用内存也不会超过500m,占cpu也不会超过百分之30.
16.    超强兼容性:
对电脑硬件的配置几乎无要求,最普通的配置就可以支持。 只有一些太老的电脑不支持显卡编程才不支持.之前采用的显卡编程语言GLHL就是兼容性太差,所以才改用cg显卡编程
.所以凡是支持cg显卡编程的显卡都可以支持.
17.    环保免安装的客服端:
只需下载很小的客服端,解压在任何地方,即可运行,不需要任何安装,不需要另外安装任何组件,绝对简单易用对电脑没有任何负面影响,令人愿意下载试玩,呵呵,这是抢别人玩家的关键.
18.    服务器的设计
服务器就的技术相对于客服端来说就非常简单了,设计客服端需要10年,我设计服务器只需要几天.
作为大型3D网游的服务器,最频繁是每一个数据包都要找到服务器中对应的对象,而服务器中的对象少则以亿计,所以这个找对象的设计必须非常快,我做到了立即寻址,速度达到理想状态,理论上讲全世界不可能有人比我更快。
其他的设计是要考虑那些数据必须常住内存,那些数据可以保存到磁盘,什么时候该整理内存.
数据库的设计,考虑到访问数据库需要时间等返回,所以对于网游这种高速的要求来讲是不够快的,数据库功能直接设计在服务器里面了,可以关联一个唯一编号到外置数据库,用于商业和重要数据应用.这样做就完美了.
速度上是完美解决了,内存上我也是设计的太小气了,我总觉得我应该不怕消耗内存。
还有这个数据包也尽可能的小才行,带宽才是瓶颈。

分享封包常识:每个数据包最前面是长度位,接收数据时按照长度来收数据.
四.   一些游戏功能介绍

装备:可以升级,可以提取升级精华赋予新的装备继续升级、有缘分专属,有前生专属,每个玩家都有专属的装备,任何人都可以使用任何装备,但只有普通的威力,如果找到特定的专著装备就会有震撼的属性.当然,我的设计是平等的,装备一身最普通的装备,也可以非常厉害,比如组合一身打不中的装备,或者打不死的装备,或者打一下就死的装备.
野怪:也能升级、野怪有智能的社会系统,还会跟玩家交朋友,令玩家产生真的感情,野怪也跑到玩家的城里去买卖东西,做任务,反过来玩家也可以.
玩家:玩家角色有前生今世,会轮回为别的动物或者一颗小草,每次轮回的好坏跟修为有关,也可以争取不入轮回.可以有邪恶力量,有正义力量,可以封印前生力量,若是有些事情忍无可忍, 如果你愿意-可以解除前生封印的邪恶力量,这次用于维护正义,也许这次会受到更重的惩罚,但你愿意,所有人都会为你祝福.也许下一次轮回的时候邪恶力量变成了正义力量呢.
技能:技能跟功力有关,功力越高技能就越厉害,所以才会有化腐朽为神奇的武功如易筋经、九阳神功等.
邪恶武功:威力强大,爆发力十足,但伤及无辜,终将走向魔道.可以越坏越厉害,只要你受得了一些极其负面的影响.
正派武功:威力一般,终将修成正果.也可以道高一尺魔高一丈
防御:防御高于攻击力,被打是加血,怪被打不反击。
闪避:闪避高于命中,难被打中,打不中的怪不反击。
暴击:容易装备出非常高的暴击,如果你攻击力低,但暴击很高,那么怪会被你打的很舒服不反击,但如果暴击了怪就死了.状态技能也可以出暴击,你是不是想刷出神级的属性?
移动速度:你可以跑的非常快,任何人追不到你,如果你放火后逃跑的话,估计没人不会被你给玩死.
点穴:被你轻轻一点就不会动的功夫,无论他功夫再高,他也不能把你怎么样,我只问你想把他怎么样?
神功:也许你可以学会所有神奇的武功,也许你只学会凌波微步和六脉神剑,也许你什么武功都不会,但是你能把点燃的强力炸弹放在别人的口袋里,在我设计的轮回里你总有办法报仇,只是你愿意,或者不愿意采用这种方式而已,我不规定你能做什么,或者你不能做什么.一切看你的造化,看你你前世修来的结果.
炼药:绝世武功未必就最厉害的,也许你喝一瓶药水就会变成绿巨人呢.
科学:当然,你可制作炸弹、武器、宇宙飞船(载上你的团队决战外太空)、或者成为钢铁侠.
建筑:你可以建设一个大城市,这个功能我之后再考虑考虑吧,制作这样的功能是简单,但我担心有些玩家乱建,破坏环境.
财富:你从不暴力,但你钱多到可以雇佣boss,有钱能使得鬼推磨,你可以干最坏的事情而且没人知道是你干的,宜将剩勇追穷寇,不可沽名学霸王.
宠物:你喜欢那个野怪呢?好吧,喜欢的话就全抓起来,组个宠物军队吧.
自动施放技能:右键技能条上的功能,可以启动或者取消自动功能,只需要点一下就可以自动施放.可以任意组合.
国家系统:玩家的军衔越高可以带更多的国家军队,占领更多的领土,国家的收入就更多,本国的玩家分到的钱就越多.但是领土太大就守不住.
对立势力:可以象英雄联盟一样,  组团队去攻打对方,这个功能我会设计到比英雄联盟更好玩,当然在轮回里的表现是3d的,而且有大千世界作为社会背景,就像真实世界里的战争地带,战场混乱请注意安全,我会尽量把英雄联盟里面大家喜欢的内容都做进来.这个非常重要我会精心设计,以夺英雄联盟的市场
种植:可以种植,种的植物可以是商家广告的商品,当然可以偷菜,可以养狗.有僵尸来袭,有植物大战僵尸。更可以雇佣玩家来帮忙.
探险:轮回世界之大和设计之效率,以至可以无奇不有,有魔法黑森林、加勒比海盗、美丽的草原、无尽的沙漠、沙漠中神秘的国度-是不是想找到金字塔中的死亡之书召唤不死亡灵?
嵌入广告:能容易的做到把商家产品制作成游戏中好玩的内容和道具,为了广告,商家主动带玩家完成商品相关任务,商家玩家互动促使游戏更活跃.
守财奴boss任何没有捡起的装备物品,将被区域boss所得,boss得到的装备越多越强大,而杀死boss可以得到所有的财宝.
生产:可以生产任何物资,生产的可以是商家广告的商品,无论是旅游、服务、工厂、商业都可以嵌入到本游来广告.
当代的任何大家关注的事物:比如打怪会掉落伊丽莎白的蛋糕,可以吃,吃了之后效果未知,经常没效果,有可能出现神级效果,但更好卖,价格是变动的.那么你想吃了还是卖了呢?

藏宝图:玩家可能会轮回为拦路抢劫的亡灵,但抢来的财富无法使用,转世投胎后这些抢来的财富成了宝藏,自己得到最大的一角藏宝图,其他部分落入民间,可以召集寻宝队去夺宝.
已经设计好非常大的格局、非常好的算法、非常方便的后期制作功能,可以加入每一个传奇故事、每一件事物.

问我还能做什么,别的有什么我就还能做什么,大家还喜欢什么就还能做什么.



95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
 楼主| 发表于 2016-5-27 10:47:37 | 显示全部楼层
五.   截图技术解说

如此多的树木一点也不卡证明引擎的实力.

psb.jpg
可以容易就制作出各种建筑物,证明后期制作之高效和灵活,大千世界的制作只需吹灰之力.


地面花花绿绿的贴图, 一次渲染高效完成10层地面贴图,
20165321167.jpg
天书中已经制作好的技能。左右页脚可以翻页有翻书的声音, 书本的美工就比较丑,之后再做美工吧.美工可以不用我亲自动手,之后可以组团队来做.当然啦,我对艺术的要求是很苛刻的,我巴不得全我自己做,但正式版完成前我没时间.所以一切非引擎功能点到即止.
2016540356.jpg

魔兽世界是最成功的网游,是我观摩学习的对象,他有的功能我一定有,图是技能状态图标,头像是动态头像,换穿什么衣服就即时出现什么样的头像,大部分游戏都是固定头像,甚至野怪就不显示头像了,这是全球几款顶级网游和我才有的技术.

s0165404313.jpg
这是小地图的设计,是动态地图,地上建设什么样的东西,小地图上就自动显示出来。一般哪怕是当今顶级的网游也都是,专门另外制作一张小地图图片贴在小地图上.





psb (3).jpg

psb (1).jpg psb (2).jpg
psb (4).jpg


我对碰撞设计之高效精确已经到达顶点 .能比我强大的网游不多,包括魔兽世界。

六.   附录
1.本游视频和下载地址
视频地址(短):
http://v.youku.com/v_show/id_XMTU2MzI0MDc4OA==.html
视频地址(长):
http://v.youku.com/v_show/id_XMTU2MzMxMzA0MA==.html
作品下载地址:
http://user.qzone.qq.com/188500397/blog/1457766586

2.作者信息
姓名:黄进鲁;
电话:13535015390;
QQ:188500397;
邮件:188500397@qq.com
微信:wx188500397;
日期:2016年5月26日星期四

201651112834.jpg
2016540175.jpg
20165405223.jpg

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
 楼主| 发表于 2016-5-30 21:30:04 | 显示全部楼层
等了一个多月终于审核通过了
图是阿里巴巴投资门户的项目
https://alibabacapital.com
阿里巴巴核审通过.jpg


本游帖子:
http://bbs.gameres.com/thread_479695.html

95

主题

1089

帖子

3301

积分

论坛元老

Rank: 8Rank: 8

积分
3301
QQ
 楼主| 发表于 2017-8-12 12:21:08 | 显示全部楼层
推起来给看到
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-22 23:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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