浅谈游戏设计的健壮性

Robustness

注意:本文章仅供学习交流使用,请勿用作非法用途,造成的一切后果使用者自己承担。

本文游戏 http://www.44vs.com/

##什么是健壮性?

健壮性又称鲁棒性,是指软件对于规范要求以外的输入情况的处理能力。

  • 所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。
  • 另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。
  • 比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。
  • 一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。
  • 一个软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。
  • 软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。即所谓的高手写的程序不容易死。

##游戏分析之人物性别变化
打开游戏的换装,然后保存装扮的时候,会发现游戏向下面这个地址UpDateXingXiang.do(形象数据)发送了一个POST数据包,可以看出该数据是一个标准的XML格式的数据,root根元素下面有个物品(wupin)子元素,物品元素下面可以看见uid(user id 用户id的意思)、原型、发型、鼻子等子元素,发型鼻子等里面的内容就是物品的编号,原型 0 就是男 1 就是女,然后更改原型的内容后像这个地址提交后,刷新游戏会发现游戏人物变性了,这里就是我们所说的健壮性,如果是规范输入是不会更改原型的,但是我们可以手动的修改,只需要uid即可。

uid的获取方法可以加这个人为好友就知道这个人的uid了。

改进方法:服务端过滤掉原型的修改

地址:

http://app100688787.qzone.qzoneapp.com/web/KillGame/UpDateXingXiang.do

提交数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<ROOT>
<wupin>
<uid>12034233</uid>
<yuanxing>1</yuanxing>
<faxing>27</faxing>
<yanjing>8</yanjing>
<bizi>1</bizi>
<zui>1</zui>
<er>1</er>
<yifu>-1</yifu>
<kuzi>-1</kuzi>
<xie>-1</xie>
<shipin>-1</shipin>
<neishipin>-1</neishipin>
<taozhuang>-1</taozhuang>
<erhuan>-1</erhuan>
<xianglian>-1</xianglian>
<weijin>-1</weijin>
<wenshen>-1</wenshen>
<beijing>-1</beijing>
</wupin>
</ROOT>

##游戏分析之刷物品
打开游戏随便卖件东西,会发现游戏向下面这个地址GouMaiWuPin.do(购买物品)发送了一个POST数据包,来看看item下的子元素,有用户名(userName)、密码(password)、游戏物品id(gameitemsid)、uid、价格(jiage)等。

在来看看打开商城的时候会获取的什么数据,每个下返回的数据如下:

GameItemsId   (游戏物品id)    2352
yuanxing      (原型)          1
itemtype      (物品类型)      taozhuang
itemnumber    (物品编号)      587
itemname      (物品名称)      Ⅱ°止于心づ<    
jiage1        (金豆7天)       180
jiage2        (金豆30天)      540
jiage3        (金豆永久)      999999999
silverjiage1  (银豆7天)       0
silverjiage2  (银豆30天)      0

可以看到银豆都是0,修改买东西的数据把价格改成4,可以看到返回内容是购买成功,送物品也是类似。

改进方法:服务端判断所有小于0的价格都提示余额不足。

买东西地址:

http://app100688787.qzone.qzoneapp.com/web/KillGame/GouMaiWuPin.do

买东西提交数据:

1
2
3
4
5
6
7
8
9
10
<ROOT>
<item>
<userName><![CDATA[专业守房001号]]></userName>
<password>111111</password>
<uid>12034233</uid>
<gameitemsid>2352</gameitemsid>
<jiaGe>1</jiaGe>
<gametype>killtext</gametype>
</item>
</ROOT>

道具商城地址:

http://app100688787.qzone.qzoneapp.com/web/KillGame/DaoJuShangChengKill.do

道具商城提交数据:

1
2
3
4
5
6
7
8
9
10
<ROOT>
<wupin>
<uid>12034233</uid>
<yuanxing>1</yuanxing>
<itemtype>tuijian</itemtype>
<page>1</page>
<showCount>9</showCount>
<goumaiflg>0</goumaiflg>
</wupin>
</ROOT>

道具商城返回数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<root><totalPage>6</totalPage>
<current>1</current>
<GameItems><GameItemsId>2352</GameItemsId>
<yuanxing>1</yuanxing>
<itemtype>taozhuang</itemtype>
<itemnumber>587</itemnumber>
<itemname>Ⅱ°止于心づ</itemname>
<jiage1>180</jiage1>
<jiage2>540</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2296</GameItemsId>
<yuanxing>2</yuanxing>
<itemtype>beijing</itemtype>
<itemnumber>579</itemnumber>
<itemname>火了火了火</itemname>
<jiage1>80</jiage1>
<jiage2>240</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2244</GameItemsId>
<yuanxing>2</yuanxing>
<itemtype>beijing</itemtype>
<itemnumber>563</itemnumber>
<itemname>一世诺言</itemname>
<jiage1>80</jiage1>
<jiage2>240</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2218</GameItemsId>
<yuanxing>1</yuanxing>
<itemtype>taozhuang</itemtype>
<itemnumber>543</itemnumber>
<itemname>么-虎鸭鸭</itemname>
<jiage1>180</jiage1>
<jiage2>540</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2215</GameItemsId>
<yuanxing>1</yuanxing>
<itemtype>taozhuang</itemtype>
<itemnumber>540</itemnumber>
<itemname>ノ綄羙揷麯ヽ</itemname>
<jiage1>180</jiage1>
<jiage2>540</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2187</GameItemsId>
<yuanxing>2</yuanxing>
<itemtype>beijing</itemtype>
<itemnumber>542</itemnumber>
<itemname>柠✿6聊9</itemname>
<jiage1>80</jiage1>
<jiage2>240</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2168</GameItemsId>
<yuanxing>2</yuanxing>
<itemtype>beijing</itemtype>
<itemnumber>535</itemnumber>
<itemname>╰ 砡〆潔</itemname>
<jiage1>80</jiage1>
<jiage2>240</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2143</GameItemsId>
<yuanxing>1</yuanxing>
<itemtype>taozhuang</itemtype>
<itemnumber>516</itemnumber>
<itemname>__倾倩天下</itemname>
<jiage1>180</jiage1>
<jiage2>540</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems><GameItems><GameItemsId>2128</GameItemsId>
<yuanxing>1</yuanxing>
<itemtype>taozhuang</itemtype>
<itemnumber>513</itemnumber>
<itemname>葱葱点点</itemname>
<jiage1>180</jiage1>
<jiage2>540</jiage2>
<jiage3>999999999</jiage3>
<silverjiage1>0</silverjiage1>
<silverjiage2>0</silverjiage2>
<tuijianflg>1</tuijianflg>
<shuoming></shuoming>
</GameItems></root>

---------------- The End ----------------
分享到: