游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3748|回复: 8

[讨论] 开发随笔_浅谈游戏中数据的可修改与不可修改

[复制链接]

14

主题

82

帖子

88

积分

注册会员

Rank: 2

积分
88
发表于 2008-12-7 11:19:00 | 显示全部楼层 |阅读模式
再讲叙这个话题以前,有必要先明确"可修改数据"与"不可修改数据"的定义.
不可修改数据:游戏中固定,永不可更改的数据.例如:角色创建后的呢称.角色成长公式,WOW中的武器自身速度,等等^^^^^
可修改数据:游戏中不固定,可修改的数据.例如:HP,MP,WOW的技能等级,诛仙里的武器因为强化可修改所有属性.
(估且我们这样定义吧!)
定义完后,有人会问为什么要讨论这个?
呵呵,我举个例子你就明白了.
假如有个囚犯的资料如下:张三,男,32岁,银行抢劫犯,杀人犯,长相身材资料,家庭资料,好友资料,刑期,每日伙食标准,每日放风时间段(15点到16点),身上携带物品资料,^^^^^^(你把它看成一个角色的所有信息.)
现在这个叫张三的家伙朝监狱长叫喊:"放风时间到了,让我出去."(你把它看成玩家请求登陆游戏)
监狱长核对资料,确认此人是张三,张三的放风时间已到.批准放风.(服务器一次性读取张三的所有信息)
在放风的过程中,假如张三这个不老实的家伙偷偷利用自己的技术把自己的物品(手机)改造成一个手机炸弹(改造后的物品).如果服务器不把张三的手机物品的信息看成是可以修改的数据,则即便监狱长(服务器)发现,张三的手机炸弹依旧会当成是手机保存在张三的档案(DB)里.
这时造成的后果是什么呢?
现实里,当然是张三企图利用炸弹越狱.
在虚拟环境里,是玩家下次上线时,发现自己好不容易得来的手机炸弹依然是手机.(这也是某些玩家抱怨自己的收费道具莫名其妙丢失的原因之一.这种错误完全是策划的错误!)
看过这个例子,你明白作为一个策划,明确告诉程序哪些数据为可修改,哪些为不可修改的重要性有多大了吧!

说到这里还有必要叙述一种错误的服务器与DB之间的运作模式.
依然拿上面的例子来说.如果监狱长十分厉害,他发现并记录了张三的不良举动并记录下来(服务器认为手机为可修改数据).那么张三就不能成功越狱了吗?不一定.
张三是个非常狡猾的家伙.他通过长期观察,发现监狱长(服务器)是每到放风结束时才检查所有犯人的资料(更新DB).放风时间段内,监狱长(服务器)根本不管事.
于是,张三灵机一动,他又改造了一个手机炸弹,并且在放风时间还未结束的时候,忽然装病,请求回牢房(你可以看成玩家请求退出游戏.)
其他监狱管事看到张三忽然病倒,迅速把张三抬回了牢房.等到监狱长(服务器)在放风时间结束时来检查人员的时候,张三早就成功地回到牢房把东西藏的好好的。监狱长无法更新张三的资料.(玩家早已下线,服务器无法更新玩家信息)
于是在现实里,张三当晚越狱了。
在虚拟世界里,玩家下次上线时,依然发现自己花大价钱的买的收费道具又莫名其妙地不见了。
看到这里,我们策划应该又明白如何对程序说自动保存的事情了...
~~~~~~~~~~~
.......希望有熟悉客户端,服务器与DB之间如何安排可修改数据与不可修改数据的同行来一同探讨....
偶的QQ:120716122

3

主题

320

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
发表于 2008-12-7 13:03:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

其实就是对象属性如何初始化的问题。
你所说的可修改数据,一般来说是存盘数据,角色登陆时从数据库初始化,并且玩家的操作结果将会被保存(如果手机是此类数据,那么有可能被修改为炸弹)。
不可修改的数据,一般来说是根据代码里的某个公式来计算,或者从某份表格里读取。初始化完成后,服务器并不需要持续监视此数据是否有被修改,只需要在下一次登陆(或者其它事件)时重新初始化即可。

14

主题

82

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2008-12-7 16:56:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

楼上说的很在理...我提出这个可修改数据与不可修改数据的初衷,主要是为了引出如何优化客户端与服务器间传递的数据包...如何防止客户端被黑...确定什么样的客户端与服务器的逻辑判断优先与决定权...如何给玩家一定的个性化空间(比如WOW支持自我设计UI界面)...

17

主题

737

帖子

743

积分

高级会员

Rank: 4

积分
743
发表于 2008-12-8 09:50:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

越比喻越不清楚

21

主题

232

帖子

607

积分

实习版主

Rank: 7Rank: 7Rank: 7

积分
607
发表于 2008-12-8 10:22:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

专业路过

3

主题

320

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
发表于 2008-12-8 12:20:00 | 显示全部楼层

Re: Re:开发随笔_浅谈游戏中数据的可修改与不可修改

z11190: Re:开发随笔_浅谈游戏中数据的可修改与不可修改

楼上说的很在理...我提出这个可修改数据与不可修改数据的初衷,主要是为了引出如何优化客户端与服务器间传递的数据包...如何防止客户端被黑...确定什么样的客户端与服务器的逻辑判断优先与决定权...如何给玩家一定的个性化空间(比如WOW支持自我设计UI界面)...


现在比较普遍的做法是,服务器不信任客户端,所以客户端能告诉服务器的仅仅是“操作请求”,而不是“操作结果”。当然,客户端可以在服务器之前做一些“否定检测”(如果客户端都判定为不通过的,服务器当然可以不用判定了)。
至于wow的ui自定义,那是纯客户端的内容,和服务器并没有数据通讯。。

14

主题

82

帖子

88

积分

注册会员

Rank: 2

积分
88
 楼主| 发表于 2008-12-8 13:37:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

BF又回贴了.谢谢.
对于你的回答,我认为有几个问题你也许忽略了(只是说也许)
1.对于即时战斗游戏,并且是可以用键盘操作移动的游戏,如果每次的操作,都需要客户端先提出申请,那么游戏结果将很难想象会有多顺畅..(所以有很多游戏不支持键盘移动,其中是有原因的.)
2.至于WOW的UI自定义,虽然只是纯客户端内容,但是它肯定是经过服务器允许的.否则很多纯客户端内容都能被玩家篡改,并且不经过服务器确认的话,那么后果肯定是灾难的.

0

主题

67

帖子

67

积分

注册会员

Rank: 2

积分
67
发表于 2008-12-9 05:13:00 | 显示全部楼层

Re:开发随笔_浅谈游戏中数据的可修改与不可修改

核心数据在服务器处理,大部分核心数据和所有外观表现部分同时在客户端处理,服务器对客户端的操作请求发出反馈,这是很基本的常识啊,而且这些一方面不属于策划工作内容,另一方面服务端程序员更清楚

即时战斗游戏比较流行的做法是向服务器发送移动状态(移动方向或者自动寻路目的地等),至于中间位置只有改变方向或目的地的时候才向服务器发消息

WOW的UI是可以自定义,其中用到的数据和字段查询方法实际上本来就有的只是以前没有用而已
实际上在一般MMORPG中主角(玩家角色)/配角(其他玩家角色)/怪物的struct多数是同一个,甚至支持同样的方法,   

3

主题

320

帖子

353

积分

中级会员

Rank: 3Rank: 3

积分
353
发表于 2008-12-12 12:48:00 | 显示全部楼层

Re: Re:开发随笔_浅谈游戏中数据的可修改与不可修改

z11190: Re:开发随笔_浅谈游戏中数据的可修改与不可修改
BF又回贴了.谢谢.
对于你的回答,我认为有几个问题你也许忽略了(只是说也许)
1.对于即时战斗游戏,并且是可以用键盘操作移动的游戏,如果每次的操作,都需要客户端先提出申请,那么游戏结果将很难想象会有多顺畅..(所以有很多游戏不支持键盘移动,其中是有原因的.)
2.至于WOW的UI自定义,虽然只是纯客户端内容,但是它肯定是经过服务器允许的.否则很多纯客户端内容都能被玩家篡改,并且不经过服务器确认的话,那么后果肯定是灾难的.

1,网游想做得战斗顺畅而且表现无延迟,每个请求都等服务器返回才能执行的话的确是很不好看的.所以WOW或者DNF里很多的客户端操作都可以不经过服务器验证了,这样才能保证游戏里的流畅.但是问题在于,给客户端下放权限一定意味着外挂的大量出现,毕竟,理论上客户端可以做的事情外挂都可以做.所以,大部分公司都选择了牺牲表现力来保证安全性.
2.WOW的UI自定义,是建立在暴雪所开放的API上,并不是客户端为所欲为的.自定义的UI仅仅是更多的使用了"暴雪原本就提供了"但是"默认UI没有使用到"的API罢了.当然,暴雪一直在调整它所开放的API的能力范围,来控制客户端的能力.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 18:31

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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