AFK已经非常久了……谢谢还记得我!
>‖2009 年5月12日,星期二,下午 7:07‖分类:游戏知识, 远征手记给我留言

其实不光是这件事啦,很多方面都已经完全不同了。比如,我在七区原本叫做“高博”的角色被我删除了,而原来的“猎者高博”改名成了“高博”:现在已经成了一个牛头人了:删除的角色名没有冷却时间,这个在改名机制被允许的前提下,其实是一个漏洞。改名机制本身有数种规则来防止引发疑惑,但是由于删除的角色名立即可以被使用,它就可以被指派为改名过程中的目的名字,这样一来仍然会引发疑惑。特别是对于PvE服务器来说,这样做甚至会使得名字在联盟和部落之间流转,引发更大的疑惑。

在三区开了新帐号,名字也有深意。这回仍然在PvE服务器,没办法,受不了PvP。

一直以来,游戏时间都被切割得很碎,这也注定了我必须以休闲玩家的身份存在。好在,现在游戏不再寂寞。不紧不慢地游戏,五、六个月从帐号创建玩到32级。任务做得很扎实,经验值不是通过刷副本而是通过做任务和打开地图获得,这才是游戏的设计初衷,而不是那种催熟式的工业生产式的玩法——难道我们平时在工作时还没有体验够这种生活方式的无趣和恶果么?

新帐号第一次选择了圣骑士这个职业,并且第一次学习了采矿锻造这两个商业技能。虽然都是相配合的技能,但相对于剥皮/制皮组合,以及草药学/炼金术组合来说,这个组合更为复杂。首先,从“资源获取”型技能上讲,剥皮只能从杀死的动物身上使用剥皮小刀获取,你只能剥出皮来而决不可能剥出别的什么东西来。而草药学则不需要借助任何工具就可以直接采集,并且采出来的东西几乎完全是只能供应炼金术之用。但采矿技能就不同,它需要单独的一个工具矿工锄(但是有若干种其它的武器如刨木锄“可作为矿工锄使用”),并且采集出来的东西既有原始的金属,又有矿石(珠宝加工专业技能,其原料,也就是所谓珠宝,亦是矿石的一种)。更重要的是,采矿技能本身亦是一种制造技能,它可以将采集到的一种或多种原始金属熔炼成金属条锭,熔炼过程亦增长采矿经验点数(而剥皮技能就不是制造技能,虽然也可以以较低级的皮革作为原料制造较高级的皮革,但这就属于制皮技能而不属于剥皮技能了,不会因为有剥皮技能本身就可以进行皮革处理)。采矿技能的产品可以同时供应锻造、工程学和珠宝加工。而锻造技能其实也挺不错的,可以造出一些武器增强的玩意儿、附魔材料和钥匙,而且可以造出护甲很高属性也很靠谱的锁甲来。

差点把主题忘记了——对,安全令牌。安全令牌很靠谱,之前见过安永会计师事务所的Windows登录系统用过类似的硬件。整个令牌的用户界面由两个部分组成:一个塑料按钮,以及一块由六个七段数字显示构成的单色液晶屏。将令牌与用户帐号绑定以后,每次登录进入游戏之前,都会多一个要求令牌数字输入的对话框流程。操作方法就是按下令牌上的按钮,然后输入液晶屏上显示的六个随机发生的数字即可。

想了一下它的硬件原理:应该是令牌里面有一个内置的函数发生器,自变量是时间。这样的话,令牌里面就必须再内置时钟硬件不可了。并且,令牌时钟必须要和服务器时钟有着比较精确的同步才可以。(如果原理确是如此,)从硬件结构上说,令牌并不是一个很复杂的硬件,但因为对时钟准确度有要求,所以可能成本也还是不会低到10元以下。

令牌设计中比较复杂的是软件原理,当然也这里面也没有火箭科学。观察之下,发现令牌发生的数字有以下特点:第一,它按一次显示一个六位随机数字,再按一次结束显示;第二,如果按一次显示,而且不手动再按一次结束显示,它也会在一段时间内自动结束显示;第三,相距较短的时间内,两次显示的数字是一样的;第四,显示的数字不会在显示期间发生变化。

根据这些特点,可以看出令牌设计之软件部分的至少几个特性:第一,随机发生数字的算法并不是以一个瞬间的时间为参数,而是一个阶段的时间为参数的。也就是说随机发生的数字在一段时间内,比如五分钟或十分钟之内是固定的。这个设计是为了容忍一定的时钟误差,如果每秒算出来的数字都不同,那令牌时钟和服务器时钟的同步就要精确到秒才行。第二,服务器至少要在某些时段接受两个不同的随机数字序列作为合法的序列,也就是说,玩家输入两个不同的随机数字序列中的一个都会被服务器判定为正确,从而接受输入而进入游戏。

博客的最后仍然留几个技术问题,请大家思考:

  • 令牌会在一段时间内自动关闭显示,这仅仅是为了省电吗?(尽管操作说明书上是这么说的,而且令牌居然不支持可拆换电池,而是用完了内置电量就只能重新购买,这一点让我觉得很不靠谱。)
  • 假设自动关闭显示的时长为d,随机发生数字固定的时延为t,令牌时钟和服务器时钟的误差是e,那末,服务器会不会出现误判(玩家输入了令牌上显示的数字,服务器却拒绝接受)?如果设计要求服务器只能接受两个合法数字值(提示:如果在显示时延的过程中,时间流转到了下一个不同的时间段,那末服务器也必须接受前一个时间段的数字,因为第一,显示过程中,显示的内容不会改变,这样在前一个时间段计算出来的数字会保持其显示;第二,也会有玩家在下一个时间段按下按钮,从而算出当时的数字值),那末令牌时钟和服务器时钟的最大容差ê是多少?如果设计要求服务器不可以出现误判,那末在令牌时钟和服务器时钟的最大容差为ê的前提下,请提交你对令牌软件部分的完整设计。
协议
本站点是高博的世界的频道之一,参见主站的使用条款隐私政策
其它频道