2007年3月3日星期六

Torrent文件格式

ed2k链接包含了文件长度和md4值,有了这两部分信息就很容易验证某个文件是否正确。而我在用BT下载某个文件前,有时想检查一下本地是否已经有了该文件的副本。可是很遗憾,我的目的无法达到,或者说不一定能够达到。

本文只涉及Toreent文件格式,TheoryOrg有一份v1.0的BT协议文本,有兴趣了解BT协议其他部分的可以自己看一下。

Torrent文件格式简单得可爱,其使用了一种叫bencoding的数据表达方法,支持四种数据格式:字符串、整数、列表、字典。一个Torrent文件就是一个经过编码的bencoding字典。bencoding的编码方式如下:

字符串
格式为“[[长度]:[数据]]”。其中第一部分长度为ASCII表示的十进制数字,两部分中间用冒号分隔。例:4:spam。
整数
格式为“[i[数据]e]"。开始标识i和结束标识e之间也是用ASCII表示的十进制数字,bencoding允许表示负数和0,所以i-3e和i0e是合法的,但不允许有先导0,故i04e非法。
列表
格式为“[l[bencoded数据]e]”。例如:l4:spami-3ee表示["spam", -3]。需要注意的是bencoding列表是有序的,解码和读取时不能打乱顺序。
字典
格式为“[d[bencoded字符串][bencoded数据]e]”。bencoding字典包含2N个bencoded数据,每2个一对,第一个字符串为[数据名],第二个为[]。例如:d3:who2:me4:lovel1:a1:bee表示{"who" => "me", "love" => ['a', 'b']}。

有了以上说明就足够解码一个Torrent文件了,而一个合法的Torrent文件包含如下内容:

info
包含文件信息的一个字典。info有单文件和多文件两种,详细说明见下。
announce
tracker服务器地址。
announce-list
可选,包含其他可用tracker服务器地址的列表。
creation date
可选,torrent文件创建时间,UNIX标准格式,表示自UTC1970年1月1日0时以来的秒数。
comment
可选,torrent创建者写的备注。
created by
可选,创建torrent文件的程序名和版本。

除以上外,Torrent文件可能还包含encoding、nodes等内容,大概是由后续版本的BT协议规定的。nodes有可能跟DHT有关。

Info字典有两种格式,以下为两种共有的部分:

piece length
每块数据的长度。
pieces
字符串格式,长度除以20即为总块数,每20字节又表示1块数据的SHA1值。
private
值为1或0的整数,可选。看不太懂什么意思,似乎是说如该值为1,则只能从torrent文件中指定的tracker服务器找别的peer,不设或为0则不限制。

只包含一个文件的Info字典:

name
文件名。
length
文件长度。
md5sum
可选,32字节长的文件MD5值。

包含多个文件的Info字典:

name
存放文件的目录名。
files
包含多个字典的列表,每个字典表示一个文件的信息。

files列表中的每个字典包含的内容:

length
文件长度。
md5sum
可选,含义同上。
path
包含一个或多个字符串的列表。0到-2个表示文件目录,最后一个表示文件名。例如["dir1", "dir2", "file.ext"]表示文件保存在dir1/dir2子目录下,文件名为file.ext。

因为BT上传和下载都用不到md5sum值,即使下载完成验证文件,也可以通过pieces包含的SHA1值来完成,所以BT协议把md5sum标记为可选。我随手找来百多个torrent文件检查了一下,创建torrent文件的程序包括Azureus、BitComet和uTorrent,没有一个torrent文件包括了md5sum。这也难怪,SHA1和MD5是完全不同的算法,要加入md5sum势必延长torrent文件的创建时间,能省自然就省了。可这样的省略,也使得我上述的目的很难达到了。

最单纯的情况下,torrent文件只包括一个目标文件的信息,那只要从本地文件创建一个torrent,再比较两个torrent的pieces部分,就可以判断出本地文件是否为目标文件的副本。问题是很多torrent文件都包括了不止一个目标文件,如果其余文件只是txt、nfo、jpg等,还可以下载回来一并验证。但如果torrent包括几个大型文件的信息,又只想验证本地是否有其中一个文件的副本,则几乎没办法做到了。

假如有md5sum,一切会变得非常简单。我测试所用的那些torrent中,绝大部分都是BitComet创建的。不知道写信给作者提建议,他会不会理我。

2007年1月31日星期三

如何在XP中使用微软雅黑

虽然观感是很个人的问题,但中易宋体的内嵌点阵确实要比微软雅黑来得清晰锐利。不过微软雅黑的意义在于实现了中文字体的ClearType和平滑缩放,这却是中易宋不能比拟的优势。看久了,大概也就习惯了吧。

目前微软雅黑的版本窜到了5.0,但仍有不小改进空间。文字大小参差不齐的情况依然。中文数字“一”在连续出现时会连在一起,如“一一解决”看起来就是个破折号。最难看的是标点符号部分,尤其是左右单、双引号,两对符号形状完全一样,只是略为靠左或靠右。

想在XP中使用Vista的字体,网上流传的方法大多不太完整,要不就显得太为暴力。这里提供一个较为全面的方案,除了尽可能安全外,还解决了如日文和韩文乱码等问题。

首先需要获得Vista的内置字体,简体中文的字体名为微软雅黑,还有繁体中文的微软正黑,日文的Meiryo,韩文的Malgun。这几个字体目前最新的版本都是v5.00,HuangYongTao在他的Blog上有提供下载。

以下是各字体的文件名、文件大小和CRC值,如果已经从其他地方获得了字体文件,可查阅一下自己的是否是最新版本:

Update

v5.0版的韩文字体Malgun在资源管理器中显示的字符偏小,与雅黑和Meiryo配合不佳,不是经常用韩文的人就别装了吧。

网上出现了很多雅黑的修改版本,如碧海潮声的“雅黑宋体”和“极限雅黑”,都宣称解决了若干问题。好不好看大家可以试试,只要不是直接替换宋体的方式,都可以用我这里的脚本来安装,就是字体名需要修改一下。

Windows 7中包含了v6.01版的msyh.ttf和v6.02版的msyhbd.ttf。这个版本解决了姓名连字符“·”显示为方框的问题,降低破折号笔画高度以示与中文数字“一”的区别(但“一一说明”中的“一”还是连着的),似乎也部分解决了在XP中撑大对话框的问题。不过我总觉得这一版字体的颜色变淡了,另外标点符号也没有变化。

v6版雅黑我找到了一个Rayfile下载地址,这是一个安装包,即使系统内已存在雅黑也可以完成替换。如果不放心,也可以用7-Zip打开并解压缩手动安装。我想其他字体在Windows 7中应该也有更新的吧,等找到再说。

文件名尺寸CRC
v6.0X
msyh.ttf(6.01)21,719,9805C83D8E6
msyhbd.ttf(6.02)14,602,860C861592C
v5.0
msyh.ttf15,044,4408954581A
msyhbd.ttf14,685,87641CDF7AB
v5.0
msjh.ttf14,713,704A634C5A2
msjhbd.ttf14,509,688E9DA1497
v5.0
meiryo.ttc7,815,29279FA7E43
meiryob.ttc8,054,096C386FBC6
v5.0
malgun.ttf4,337,10465B587BE
malgunbd.ttf4,513,520F1F5ED97

将获得的字体放入C:\Windows\Fonts目录即可完成安装。除了微软雅黑外,其余字体并非必须。这里多嘴说一句,虽然微软正黑体中也包含了简体字,但由于该字体是根据台湾教育部标准字形进行制作的,笔画标准会与大陆通行的有所不同。因此并不建议以微软正黑作为日常使用的字体,尤其是不应该给在校学生使用。

然后打开控制面板,显示、外观、效果,将字体边缘平滑设为“清晰”,这是为了打开Windows的ClearType字体描绘功能。确定后在“高级”中将所有能改字体的项目都改为微软雅黑,字体尺寸可维持不变。再在IE菜单上选工具、Internet选项,常规页上选字体,将网页字体设为微软雅黑。

经过如上设置后,系统的大部分内容都会用微软雅黑进行描绘了。如觉得显示效果还不够理想,可在绿色下载站下载ClearType Tuning进行微调。如果链接失效,在搜索引擎里找“字体清晰工具”也能找到下载链接。个人觉得用这个工具将雅黑的黑度增加一些,看起来比较不会累。

接下来的设置就需要修改注册表了,如果这对你来说有点困难的话,可以在本文最后下载我写的修改脚本。

运行注册编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize,将GUIFont.Facename的键值改为微软雅黑。这一键值会影响部分通用GUI元素所使用的字体,例如按钮、记事本等等。

再定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink,新建一条名为“Microsoft YaHei”的多字符串值,将“gulim.ttc,gulim”和“MSGOTHIC.TTC,MS UI Gothic”以回车分隔写入。这里我懒得bq了,不明白的话参考同项中的Tahoma等字体的写法就知道了。

这一步类似于Linux中常说的字体替换,Gulim为XP附带的韩文字体。微软雅黑中并不包含所有的日文及韩文字符,如缺少了这一步,文件管理器中的日文及韩文文件名就会是方块。gulim.ttc和msgothic.ttc是XP附带的韩文和日文字体,当然也可以替换为Vista的Malgun和Meiryo。

如定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes,新建一个名为“宋体”的字符串值,并设置为“Microsoft YaHei”,可使系统在更多地方使用微软雅黑。例如登录界面中的“欢迎使用”四个大字,还有部分直接汉化EXE文件的程序。不过该方法仍然无法使系统全面使用微软雅黑,IE中还会出现宋体与微软雅黑相杂的情况,是否使用请自行选择。

另外还有HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage下的932、936、949、950子键,这些子键控制了对应代码页下的默认文字字体,FixedWidthFont为等宽字体,ProportionalFont为矢量字体。936为简体中文代码页,可将对应键值改为微软雅黑。932是日文代码页,949是韩文代码页,950是繁体中文代码页。

最后是HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts下的23、24、25、26。这些子键控制了IE中声明了页面语言,但没有指定文字字体的页面用什么字体进行描绘,也就是对应繁体中文、日文、韩文的“默认字体”。实际上Internet选项中进行的修改,就是保存在这里。

以上这些就是我在注册表中找到的所有有关字体的设置。需要注意的是,即使进行了上述修改,也没办法做到使XP系统全面使用微软雅黑。因为只要该字体存在,部分在资源文件中指定使用宋体的程序,仍然不会用微软雅黑进行显示。

如果非要不可也有两个办法可以解决。一则是用字体编辑工具,将微软雅黑的字体名改为“宋体”,并删除系统中原来的simsun.ttc文件。不过这已经超过了本文所想涉及的范围,有兴趣的可以自己查阅相关信息试一下。第二个办法就是直接将simsun.ttc文件删掉。这个办法同样可以使几乎所有的文字用微软雅黑进行显示,不过后遗症是可能有部分文字会显示为方框。如何取舍,可以自己斟酌着办。

为了使用方便,我写了一个自动完成注册表的修改和恢复工作。如已安装了中日韩三地的四个字体文件,直接双击该脚本即可自动完成上述的所有修改工作。如想要恢复系统原始设置,用文本编辑器打开脚本,将bRestore设置为true并再次运行脚本即可。如果只想安装微软雅黑,也可以打开脚本编辑一下参数再运行。

sSC = "Microsoft YaHei"
sSCl = "微软雅黑"
sSCf = "msyh.ttf"

sTC = "Microsoft JhengHei"
sTCl = "微軟正黑體"
sTCf = "msjh.ttf"

sJP = "Meiryo"
sJPf = "meiryo.ttc"

sKR = "Malgun Gothic"
sKRf = "malgun.ttf"

bTC = 1 ' 是否安装了微软正黑字体,如否请将1改为0
bJP = 1 ' Meiryo,日文字体
bKR = 1 ' Malgun Gothic,韩文字体

bRestore = false ' 反安装则改为true

set oSh = wscript.createobject("WScript.Shell")
sub WriteReg()
  if bRestore then
    if sVal <> "" then
      oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sVal + """", 0
    else
      oSh.run "reg delete """ + sPath + """ /f /v """ + sKey + """", 0
    end if
  else
    oSh.run "reg add """ + sPath + """ /f /v """ + sKey + """ /t " + sType + " /d """ + sNVal + """", 0
  end if
end sub

' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize"

sKey = "GUIFont.Facename"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes"

sKey = "宋体"
sType = "REG_SZ"
sVal = ""
sNVal = "Microsoft YaHei"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink"

sKey = "Microsoft YaHei"
sType = "REG_MULTI_SZ"
sVal = "gulim.ttc,gulim\0MSGOTHIC.TTC,MS UI Gothic\0mingliu.ttc,PMingLiU\0"
sNVal = ""
if bKR = 1 then
  sNVal = sNVal & "malgun.ttf,Malgun Gothic\0"
else
  sNVal = sNVal & "gulim.ttc,gulim\0"
end if
if bJP = 1 then
  sNVal = sNVal & "meiryo.ttc,Meiryo\0"
else
  sNVal = sNVal & "MSGOTHIC.TTC,MS UI Gothic\0"
end if
if bTC = 1 then
  sNVal = sNVal & "msjh.ttf,Microsoft JhengHei\0"
else
  sNVal = sNVal & "mingliu.ttc,PMingLiU\0"
end if

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\932"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\936"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"

call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\949"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Codepage\950"

sKey = "FixedWidthFont"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' --------
sKey = "ProportionalFont"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\23"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "GulimChe"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "Gulim"
sNVal = "Malgun Gothic"

if bKR = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\24"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MS Gothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "MS PGothic"
sNVal = "Meiryo"

if bJP = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\25"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "New MingLiu"
sNVal = "Microsoft JhengHei"

if bTC = 1 then call WriteReg
' ========
sPath = "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\International\Scripts\26"

sKey = "IEFixedFontName"
sType = "REG_SZ"
sVal = "新宋体"
sNVal = "微软雅黑"

call WriteReg
' --------
sKey = "IEPropFontName"
sType = "REG_SZ"
sVal = "宋体"
sNVal = "微软雅黑"

call WriteReg
' ========

2007年1月28日星期日

《战神》:好故事,虽然不太懂

最近没发现什么好玩的游戏,又把《God of War》翻出来了,正好还有个God难度没打过。一路都还算顺遂,可现在卡在Ares之战的第二场。看到网上有人说这里卡了两个月,所以我也不着急,慢慢磨吧。

能让我这种Light User拿起手柄挑战最高难度的五周目,《战神》当然很好玩。不过我想说的不是关卡设计或者打击手感什么的,我觉得更加难得的是,一个动作游戏还能编出个不错的故事来。

《战神》是一个18禁游戏,除了有暴力血腥的镜头以外,连故事情节都很少儿不宜。但没打过游戏的人也别误会,所谓“少儿不宜”,跟色情没什么关系。只因为这个游戏里没有所谓的好人,没有正义和邪恶的对决,一切的杀戮都显得毫无意义。

主角Kratos本来就是个嗜血的斯巴达人。当他在一次战斗中失败,面对敌人即将落下的斧头时,他大喊Ares的名字乞求帮助。Kratos得救了,并且从此成为了Ares的仆人。为了将战火献给他的主人,Kratos发动了一次又一次的战争。直到有一次,他在一个Athena的神庙中亲手杀死了自己的妻儿。Kratos陷入了痛苦中,并且从此不再侍奉Ares。游戏的主要流程,就是Kratos如何在Athena及Olympus众神的授意下杀死Ares的过程。

听起来是一个普通的复仇故事,顶多还有一层凡人弑神的含义,实际上并非如此。Kratos在杀死自己的妻儿之后,并没有主动开始仇恨Ares。他仅仅是本能地在痛苦着,但为什么痛苦,他自己并不知道。为了摆脱那个缠绕着他的梦魇,他纵情声色,企图忘掉过去,他侍奉众神,希望得到解脱,就这样过了十年。

会因为杀死妻儿感到痛苦,证明Kratos有着为人的基本良知,但也仅仅如此了。自己的妻儿是人,别人也是人,但在Kratos眼中却并非如此。为了前进,不管是人还是怪,杀戮对于Kratos来说很平常,反倒救人却只有在必要时才是值得做的事。说到底,Kratos是个没有人性,不会思考的杀戮机器而已。也就是因为这样,他才会一再被众神愚弄和利用。

在爱琴海上,Kratos诘问Athena何时才能让他脱离过去。可Athena向他要求了一个最终任务,杀死Ares,拯救她的城市。Athena向他承诺,完成任务之后,他所做的一切“will be forgiven”。一切结束之后,Athena又说:“众神承诺原谅你,因此你已经获得原谅了。可众神并没有承诺使你获得解脱。没有人,也没有神能忘掉你曾犯下的罪行。”

Kratos所乞求的对象,Olympus山上的众神,全是些无法领人信服的存在。Athena出面愚弄了Kratos,授意他杀死自己的兄弟Ares。Zeus、Poseidon、Hades、Artemis,甚至Ares的情人Aphrodite都来帮助Kratos完成任务。“Go With Gods, Kratos. Go force, in the name of Olympus.”听起来很蛊惑人,可众神都跟Ares作对,是为什么?

游戏没有交待,我也不愿轻易以为,众神只是为了阻止Ares的战火蔓延在世界上。最终之战以前,Ares对着天空喊了一段话,听起来不过是个不得父亲宠爱的孩子在抱怨着。而将Kratos从冥界带回来的老人是谁?神殿前使妻儿的灰烬覆着在Kratos皮肤上的老妇又是谁?不负责地猜测一下,前者恐怕是Zeus,后者就是Athena本人。

Kratos并不明白,究竟是什么使自己如此痛苦。过去的事已然发生,那就永远存在。神并不是值得依靠和寄望的对象。从一开始就注定了,一切的乞求都是无谓的。能够原谅自己的,只有自己。但他却从一个极端走向另一个极端,他选择了自杀。

如果要自杀的话,何苦等待这十年?在那个存在冥界的世界里,死亡真的能带来解脱么?可笑的是,众神连死亡的权利都不给他。Athena说众神不会允许一个曾帮助他们的人死于自己的手,而且Olympus山上也需要一位新的战神,他们要Kratos坐在那个位置上。

我不理解为什么Kratos会顺从众神的安排。跟某人聊起时,他说一个曾经自杀的人,获救以后万念俱灰,会有一种无可无不可的心态。我无法接受这种解释,我只能说,Olympus山是个自私之地,Kratos也是个无可救药的可怜人。

附:

东西没写完,游戏却打完了,看来我运气还不错……

Ares之战分三场,能以God难度打到这里的人肯定都经历过了。第一场是最简单的,放一个Army of Hades然后L3+R3,整个神化过程中能召唤三次Hades的军队。完成了Ares的血槽也差不多见底了,运气好MP也能补满。如果不满,Ares头上冒圈后与他较力,等爬到Ares背上时故意按错键会被甩下来,几乎不扣HP。这时冲上去猛攻,Ares再次冒圈就能补充HP和MP了。在进入第二场之前,必须保证自己的HP和MP都是满的。

第二场最难,而且过关需要点RP。作战的基本思想是保护自己优先于保护妻儿,拖延使用MP的时间。比较有利的位置是妻儿的右边,镜头的左边。主力技是链刃的□□△,最理想的状态是将敌人都引到镜头右边,每次□□△都能使全部敌人倒地。镜头左边如有敌人,数量也不能超过一个。需要注意防御,防御成功就用□键将敌人弹开。如果在屋顶被掀开以后,自己的HP没什么损失,妻儿的HP还有一半以上,MP也没用过,第一阶段作战就算成功。

屋顶被掀开以后战斗进入第二阶段。画面后方出现的弓箭手的攻击因为有神坛阻挡,可以不用管。当妻儿HP损失一半以上时,就可以考虑使用一次Army of Hades了。当妻儿HP减到只剩五分之一左右,神化。Army of Hades及Poseidon's Rage交替使用,手快的话,结束神化状态以前还能召唤第三次Hades的军队。这时妻儿的HP也差不多见红了,在有Hades的军队的保护下,冲上去按住○为妻儿补充HP。将妻儿HP补满,神化槽也能补充过半。这时自己的HP和MP也应该有一半左右,继续牵制敌人。

当出现手拿Artemis之刃的敌人时,战斗进入第三阶段。这时如果神化槽还没满,召唤Hades的军队,给妻儿补血并补满神化槽。Artemis之刃对付妻儿几乎是秒杀,眼见不对立刻神化,依旧是Army of Hades及Poseidon's Rage交替使用。如果之前的战斗顺利的话,神化未结束战斗就结束了。

即使没有也不要慌,每一个敌人出现点会出现的敌人都是固定的。如果先把某个出现点的敌人干光,之后这个点就不会再有敌人冒出来。如果到山穷水尽的地步了,场地上的敌人也不超过两个时,那还有一拼的可能,只要坚持就有希望。

第三场相比第二场就容易得多,只需要多一点点的耐心就可以,而且有一个诀窍可以迅速解决战斗。Ares除了魔法,近身攻击有两种,防御不能技只能跑,可防御技在躲过后,Ares会大喊一声,触角也会立起来,这是攻击的大好机会。如果此时Kratos离Ares较近,冲上去□键,如未打中就R3跑掉。如命中,连按△键重攻击。在4连击达成时,几乎100%会形成较力。只要赢了,就能砍掉Ares不少HP,而且Ares还会有很长时间的硬直。重复这个过程,较力两次就能把Ares干掉。