这半个月,天天晚上玩《英雄连》(不是《兄弟连》,不要再有人搞错了!),玩了数十场《英雄连》 ,带领第三帝国的士兵们横扫欧洲大陆,那一个“爽”啊……
可是,看来是开了太高的特效,爽是爽了个半死,但诡异也诡异了个半死:《英雄连》导致机器诡异地死机。硬盘一动不动,屏幕直接黑屏(但信号输出没有断),电源和CPU风扇狂响,但是就是什么信号都显示不出来。只有拔电源,biu~整个世界清静了,然后再插上电源启动,发现Windows连记录内核错误的机会都没有,也就是说,绕过了Windows的内核保护,直接硬件挂掉……
首先感叹一下,标准到处都是,但是,就是有很多显卡的Shader驱动不符合标准,在一个显卡上运行的好好的Shader,到另一个同系列显卡上就开始变态。所以,看来,当时选用了一个ONDA的Geforce7600GS是个错误的决定……咬咬牙顶住压力买个七彩虹或者Elsa应该就不会这么郁闷了。
然后,想说说《英雄连》的异常处理。一般的游戏来个未捕获异常,基本都是抛一个Windows标准的异常窗口。《英雄连》使用的是自己的异常处理UnhandledExceptionFilter。所以很简单:异常完后,桌面上会有一个BugReportX文件夹,里面保存了内存的MiniDump、出错的堆栈信息、装载的所有DLL模块等等等等。而且,可以直接通过一个按钮——biu,发信。看起来比Windows那个异常界面鲜活、好看、强大多了。
所以,脑子一热,翻出来已经残破的《Windows核心编程》,也开始搞自己的UnhandledExceptionFilter。对于Exception,没错,我不能迫使Windows抛出异常,但我总可以让损失减到最小吧。
昨天弄了个最简单的出来,好高兴,同时仰慕一下《英雄连》团队认真的精神——若我天朝的团队都能有人家一半的认真,哪怕是1/4的认真为玩家考虑,而不是为自己收钱考虑,何愁我天朝不兴、国运不昌、民运不旺?!
另外再鄙视一下某些机构:与其花那个时间弄那个自我YY、同时还助长垄断的“防沉迷系统”,倒还不如认真下来把那些学究教授动员起来好好搞搞图形学。倒不一定要你能超越伯克利,你看看DirectX把一个日本人做的例子放到它的文档里,看得我心里流血——我们搞图形学的教授们都死哪去了?!!
仰慕完了,骂完了,心情那个舒畅啊……继续搞自己的空间分割去咯~~