Project1

标题: 你们做游戏自己都测试么? [打印本页]

作者: Losses    时间: 2011-7-8 01:17
标题: 你们做游戏自己都测试么?
话说每次看到某游戏一大堆Bug我都觉得诧异,怎么会出这么多bug- -!
反正我做游戏的时候每个情节至少过五遍,一点一点的看,脚本问题直接拿过来找人帮我解决,基本上Bug不会有太多的- -!
难道真有大神一点都不测试就拿出来?
作者: 匿名    时间: 2011-7-8 01:19
本帖最后由 匿名 于 2011-7-8 01:33 编辑

某些时候穷举测试是无法完成的。
因为我们只制定一种规则,然而却不会知道程序按照这种规则将会变化出什么有趣的东西。

例如生出一个
力量几百但是魔法个位数的法师- -
而这个法师哪天又很意外地用他的力量优势以小概率杀掉了我们的一位重要的BOSS级NPC


当然,那群做完全线性流程游戏的孩子就寂寞得多了,他们的世界永远被限定于有限之中。(他们的NPC根本连自己活着的意义都米有啊都米有~\(≧▽≦)/~,虽然可能很好地为玩家而活)
作者: 越前リョーマ    时间: 2011-7-8 01:20
测试啊。其实单线RPG啥的还好,那种游戏因素比较未知的养成类、模拟类你会觉得去测试它根本就是自杀 - -
作者: Losses    时间: 2011-7-8 01:22
匿名者 发表于 2011-7-8 01:19
某些时候穷举测试是无法完成的。
因为我们只制定一种规则,然而却不会知道程序按照这种规则将会变化出什么 ...

=-=~那个叫法师么- -!
作者: 匿名    时间: 2011-7-8 01:23
Losses 发表于 2011-7-8 01:22
=-=~那个叫法师么- -!

你看甘道夫同志多帅,除了用魔法玩玩照明,别的时候都在和别人肉搏 囧
作者: Losses    时间: 2011-7-8 01:24
匿名者 发表于 2011-7-8 01:23
你看甘道夫同志多帅,除了用魔法玩玩照明,别的时候都在和别人肉搏 囧 ...

那个不是常理啊童鞋- -!
作者: 匿名    时间: 2011-7-8 01:26
本帖最后由 匿名 于 2011-7-8 01:31 编辑
Losses 发表于 2011-7-8 01:24
那个不是常理啊童鞋- -!


给出一个随机的生成方式,生成大量的随机生成实例,完全可能造出这种怪胎(虽然我们很可能在规则上降低这种怪胎的出现率,但是小概率事件并非不会发生)
基因突变是多么美好并值得期待的一件事情啊~\(≧▽≦)/~
(于是,有人会测试小概率事件么 囧)

然后说不定别的NPC一看,力量型法师?!别的法师在预备念咒的时候就被他一板砖拍死了!这个厉害!
于是根据人工智能的某种诡异的启发值和遗传算法神马的,说不定日后这类法师就大行其道了。
更BT的是说不定以后这个世界里的人就管战士叫法师了。
作者: 越前リョーマ    时间: 2011-7-8 01:34
其实这种时候扔给朋友测试最好了XD
作者: Losses    时间: 2011-7-8 01:34
匿名者 发表于 2011-7-8 01:26
给出一个随机的生成方式,生成大量的随机生成实例,完全可能造出这种怪胎(虽然我们很可能在规 ...

你的石器时代难道做成了这德行么- -!
作者: 匿名    时间: 2011-7-8 01:35
本帖最后由 匿名 于 2011-7-8 01:35 编辑
Losses 发表于 2011-7-8 01:34
你的石器时代难道做成了这德行么- -!


嗯,每次走在大街上都能有意想不到的事情发生总是件无比欢乐的事情。当然,某些时候BUG也是意想不到的 囧
作者: Losses    时间: 2011-7-8 01:38
匿名者 发表于 2011-7-8 01:35
嗯,每次走在大街上都能有意想不到的事情发生总是件无比欢乐的事情。当然,某些时候BUG也是意 ...

敲头——
话说酱紫的游戏——Bug怎么可能会少- -!
- -!本来想弄一个随机任务系统来着,不过看起来,好可怕的样子……
我的自信被你打击到了- -!
作者: 越前リョーマ    时间: 2011-7-8 01:39
Losses 发表于 2011-7-8 01:34
你的石器时代难道做成了这德行么- -!

我俨然觉得他的石器就是一个PC宇宙,可以满足伸手党的需求的存在。
所以等他完成之时,我们……已经是宇宙尘埃了 - -
作者: Losses    时间: 2011-7-8 01:41
越前リョーマ 发表于 2011-7-8 01:39
我俨然觉得他的石器就是一个PC宇宙,可以满足伸手党的需求的存在。
所以等他完成之时,我们……已经是宇 ...

严重同意……那游戏被他做的太欢乐了……

睡觉睡觉——


Losses于2011-7-8 01:41补充以下内容:
严重同意……那游戏被他做的太欢乐了……

睡觉睡觉——


Losses于2011-7-8 01:41补充以下内容:
严重同意……那游戏被他做的太欢乐了……

睡觉睡觉——
作者: 匿名    时间: 2011-7-8 01:43
本帖最后由 匿名 于 2011-7-8 01:44 编辑

简单的随机任务系统因为“任务”这两个字存在,所以风险还是可控的。
基本的设计思路:
1,制作大量的单步零部件(比如,移动到某处、交出某物品、打死某个人)
2,拼装这些部件为一个任务并加入任务状态变化(例如标记当前到第几步了。)
3,文字润色

举例:
  1. class Mission_Esort_Sample1 <  Mission_Basic
  2.   attr_accessor :ccname
  3.   attr_accessor :timelimit
  4.   ############################################################
  5.   def initialize(target,timelimit,reward)
  6.     super()
  7.     @ccname  = ""
  8.     @timelimit = timelimit
  9.     initial_self(target,reward)
  10.   end
  11.   ############################################################
  12.   def initial_self(target,reward)
  13.     step1 = Mission_Basic_Step.new(self)
  14.     step1.reward = reward
  15.     reward.owner = step1
  16.     step1.check_code = "$game_map.map_id == #{target}"
  17.     step1.check_fail = "@owner.timelimit < ( Graphics.frame_count / Graphics.frame_rate) "
  18.     step1.step_id = 0
  19. step1.lose_code =<<'LOSE_CODE'
  20.     if $game_temp.transition_processing
  21.      return
  22.     end
  23.     Audio.se_play("Audio/SE/011-System11.ogg")
  24.     sys_ani_battleshout("#{@owner.ccname}:“看来在期限前无法赶到了。”")
  25.     d = $game_variables[12] / 10
  26.     d += 1
  27.     d += rand(20)
  28.     sys_ani_battleshout("任务失败,损失#{d}点声望")
  29.     $game_variables[12] -= d
  30.     $game_party.remove_actor(56)
  31.     @owner.delete_mission
  32. LOSE_CODE

  33. step1.win_code =<<'WIN_CODE'
  34.    if $game_temp.transition_processing
  35.      return
  36.     end
  37.    Audio.se_play("Audio/SE/056-Right02.ogg")
  38.    sys_ani_battleshout("#{@owner.ccname}:“太好了!终于到了!\n谢谢你!”")
  39.    @reward.get_it
  40.    @reward.out_flash_test
  41.    $game_party.remove_actor(56)
  42.    @owner.delete_mission
  43. WIN_CODE

  44.    
  45.     @steps.push(step1)
  46.   end
  47.   ############################################################
  48.   def make_random_name
  49.     k = ["商人","旅行者","使者","观光客"]
  50.     @ccname = k[rand(k.size)]
  51.     #$game_actors[56].name = @ccname
  52.   end
  53.   ############################################################
  54.   def start
  55.     super
  56.     @timelimit += (Graphics.frame_count / Graphics.frame_rate)
  57.     $game_actors[56].name = @ccname
  58.     $game_party.add_actor(56)
  59.     list = [1,3,4,5,7,9,14,16,18,19,20,24,26,35]
  60.     d = list[rand(list.size)]
  61.     $game_actors[56].battler_name = "SA#{d}K"
  62.     $game_actors[56].character_name = "SA#{d}"
  63.     sys_ani_battleshout("#{ccname}加入了队伍!")
  64.      sys_ani_battleshout("#{ccname}:“我们出发吧!”")
  65.   end
  66.   ############################################################
  67.   def can_start?
  68.     if $game_party.full?
  69.        Audio.se_play("Audio/SE/057-Wrong01.ogg")
  70.       sys_ani_battleshout("队伍已满")
  71.       return false
  72.     elsif $game_party.actors.include?($game_actors[56])
  73.        Audio.se_play("Audio/SE/057-Wrong01.ogg")
  74.       sys_ani_battleshout("无法同时进行多个护卫任务")
  75.       return false
  76.     end
  77.     return true
  78.   end
  79.   ############################################################
  80. end
复制代码
附带石器的某随机任务系统图:

作者: Losses    时间: 2011-7-8 01:43
越前リョーマ 发表于 2011-7-8 01:39
我俨然觉得他的石器就是一个PC宇宙,可以满足伸手党的需求的存在。
所以等他完成之时,我们……已经是宇 ...

严重同意……那游戏被他做的太欢乐了……

睡觉睡觉——
作者: 越前リョーマ    时间: 2011-7-8 01:46
匿名者 发表于 2011-7-8 01:43
简单的随机任务系统因为“任务”这两个字存在,所以风险还是可控的。
基本的设计思路:
1,制作 ...

你确定只是换了个地名,报酬只是金钱奖励改了一下的同样的跑路任务可以糊弄群众么 = =
作者: 匿名    时间: 2011-7-8 01:48
本帖最后由 匿名 于 2011-7-8 01:53 编辑
越前リョーマ 发表于 2011-7-8 01:46
你确定只是换了个地名,报酬只是金钱奖励改了一下的同样的跑路任务可以糊弄群众么 = = ...



为了简单起见这里就三个参数,并且只包含两个步骤:
1,带上某人
2,跑去某处

我们可以更复杂一点变成:
1,带上某人
2,跑去A处
3,跑去B处
4,跑去C处
5,和某人一起PIA死另外一个家伙
………………
………………
………………

原理完全不变。
作者: 马莉露丽    时间: 2011-7-8 01:50
本帖最后由 马莉露丽 于 2011-7-7 13:51 编辑

肯定会,因为我比较追求完美……
游戏测试的话不是应该交给DEBUG小组做吗
不过业余RMer一般都是自己做这工作的……

模拟类你会觉得去测试它根本就是自杀 - -

+10086
作者: Losses    时间: 2011-7-8 01:51
越前リョーマ 发表于 2011-7-8 01:46
你确定只是换了个地名,报酬只是金钱奖励改了一下的同样的跑路任务可以糊弄群众么 = = ...

这玩意纯事件套变量都能弄出来的说=。=
作者: 匿名    时间: 2011-7-8 01:55
本帖最后由 匿名 于 2011-7-8 02:09 编辑
Losses 发表于 2011-7-8 01:51
这玩意纯事件套变量都能弄出来的说=。=


实际上做简单是随机任务确实是那么简单,并且风险也很容易控制。

但是当一个随机任务拥有大量的单步组合的时候就欢乐得多了。(如果它们又是完全随机的话,那么造出来的剧情更加匪夷所思,外带各种意想不到的东西(包括BUG 囧))
甚至,某个随机任务的代码中被允许自动添加新的步骤不断延长任务,然后玩家一辈子都做不完
作者: 一瞬间的幻觉    时间: 2011-7-8 03:55
慢慢锻炼!不能凡事都一个劲的纠错校正,应当在做的时候就一步到位
作者: 魔御使    时间: 2011-7-8 07:59
Debug是件很痛苦的事~
作者: Losses    时间: 2011-7-8 08:20
一瞬间的幻觉 发表于 2011-7-8 03:55
慢慢锻炼!不能凡事都一个劲的纠错校正,应当在做的时候就一步到位

这是不可能的= =!
作者: v2sam    时间: 2011-7-8 09:30
就算自己测多少次,BUG还是有的,因为原作者会习惯用自己的方式来运行游戏,很多BUG都测不出来。

所以就必须先发布测试版,让不同的人用不同的方式找出游戏的BUG。
作者: Losses    时间: 2011-7-8 09:32
v2sam 发表于 2011-7-8 09:30
就算自己测多少次,BUG还是有的,因为原作者会习惯用自己的方式来运行游戏,很多BUG都测不出来。

所以就必 ...

=.=~不过你那个游戏的Bug太明显了……
作者: 懒De说    时间: 2011-7-8 09:33
只是做好一个系统以后测试,其他的时候都不测试
作者: Losses    时间: 2011-7-8 09:34
懒De说 发表于 2011-7-8 09:33
只是做好一个系统以后测试,其他的时候都不测试

哇~好厉害~写事件的话不担心出错么?
作者: v2sam    时间: 2011-7-8 09:37
Losses 发表于 2011-7-8 09:32
=.=~不过你那个游戏的Bug太明显了……

这就是咯,6月25日赶着出测试版,自己根本没时间多做什么,明显都是低级错误,一般都是开关问题和通行问题,如果照我自己熟悉的路线走是不会出错的,别人一玩就会发生很多问题。这说明了自测是要,但是多人测试才能解决问题。
作者: 精灵使者    时间: 2011-7-8 09:44
本帖最后由 精灵使者 于 2011-7-8 09:45 编辑

做游戏的时间用了半年时间。
而测试则用了将近三年到四年——漏洞依然很多。
作者: Losses    时间: 2011-7-8 09:44
v2sam 发表于 2011-7-8 09:37
这就是咯,6月25日赶着出测试版,自己根本没时间多做什么,明显都是低级错误,一般都是开关问题和通行问 ...

原来是酱紫……不过话说那个游戏做的真的不错呢
作者: Wind2010    时间: 2011-7-8 11:39
测试Bug测到后面然后改了下脚本前面的出错了XD
作者: 薄荷冰水    时间: 2011-7-8 12:02
自己测试3次之后,自己觉得没有问题了,丢给两个死党内部测试,然后再公布
作者: Losses    时间: 2011-7-8 12:21
Wind2010 发表于 2011-7-8 11:39
测试Bug测到后面然后改了下脚本前面的出错了XD

经常的- -!
作者: 失落迷白    时间: 2011-7-8 12:27
测试是必须的啊喂……宁信错有不可自信啊
那个厂家生产生产个产品不反复检查的。
作者: 镇魂夜    时间: 2011-7-8 12:32
所以有些人不是不测试,而是不会测试= =

直接按自己设定的流程全部走一遍,一般都不会发现大BUG
作者: Losses    时间: 2011-7-8 12:43
镇魂夜 发表于 2011-7-8 12:32
所以有些人不是不测试,而是不会测试= =

直接按自己设定的流程全部走一遍,一般都不会发现大BUG ...

=-=~ 话说出现多个情节的话直接把控制台抓来就好了
作者: a19981007a    时间: 2011-7-8 13:02
每做完一部分测试一部分。





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1