t2631_2-t2631_1:1.0

t2631_3-t2631_2:0.0

t2631_4-t2631_3:0.0

t2631_5-t2631_4:0.0

t2631_6-t2631_5:0.0

t2631_7-t2631_6:0.0

t2631_8-t2631_7:0.0

t2631_9-t2631_8:0.0

t2631_10-t2631_9:0.0

t2631_11-t2631_10:10.0

t2631_12-t2631_11:0.0

t2631_12-t2631_1:11.0

手游 > 休闲 > 机火帮往事下载
机火帮往事

机火帮往事

作为《逃跑吧!少年》老玩家,我很高兴逃少迎来了五周年在五周年...
运营  | 151.9M
加速器下载
安卓版下载
游戏介绍 游戏截图 热门推荐 同类推荐

机火帮往事游戏介绍

机火帮往事简介

作为《逃跑吧!少年》老玩家,我很高兴逃少迎来了五周年在五周年之际,我们也为逃少准备了一份小小的礼物没错,就是本作感谢各位画师大大、乐师大大、文案大大对本作的支持本作主要聚焦于剧情方面,另外包括追逐、解密等元素预计在逃少周年庆左右出第一章,免费下载制作组:番石榴网络科技工作室制作软件:RPG Maker MZ
开发者: 番石榴网络科技工作室
版本:1.1 更新时间:2023-08-03 权限说明  |  隐私政策

机火帮往事好玩吗 机火帮往事玩法简介

期待已久的手游机火帮往事即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编机火帮往事好玩吗?机火帮往事值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。

机火帮往事快速预约/下载地址(需优先下载九游APP):

》》》》》#机火帮往事#《《《《《

机火帮往事好玩吗 机火帮往事玩法简介

机火帮往事好玩吗 机火帮往事玩法简介

机火帮往事好玩吗 机火帮往事玩法简介

1、机火帮往事简要评析:

作为《逃跑吧!少年》老玩家,我很高兴逃少迎来了五周年在五周年之际,我们也为逃少准备了一份小小的礼物没错,就是本作感谢各位画师大大、乐师大大、文案大大对本作的支持本作主要聚焦于剧情方面,另外包括追逐、解密等元素预计在逃少周年庆左右出第一章,免费下载制作组:番石榴网络科技工作室制作软件:RPG Maker MZ

2、机火帮往事图片欣赏:

机火帮往事好玩吗 机火帮往事玩法简介

机火帮往事好玩吗 机火帮往事玩法简介

机火帮往事好玩吗 机火帮往事玩法简介

通过上面的游戏介绍和图片,可能大家对机火帮往事有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“机火帮往事”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!

 
九游APP
玩新游 上九游
  • 全球好游抢先下
  • 福利礼包免费领
  • 官方直播陪你玩
立即下载

 

机火帮往事什么时候出 公测上线时间预告

期待已久的手游机火帮往事即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉丝都在问九游小编机火帮往事好玩吗?机火帮往事值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍 。

机火帮往事快速预约/下载地址(需优先下载九游APP):

》》》》》#机火帮往事#《《《《《

机火帮往事什么时候出 公测上线时间预告

机火帮往事什么时候出 公测上线时间预告

机火帮往事什么时候出 公测上线时间预告

1、机火帮往事简要评析:

作为《逃跑吧!少年》老玩家,我很高兴逃少迎来了五周年在五周年之际,我们也为逃少准备了一份小小的礼物没错,就是本作感谢各位画师大大、乐师大大、文案大大对本作的支持本作主要聚焦于剧情方面,另外包括追逐、解密等元素预计在逃少周年庆左右出第一章,免费下载制作组:番石榴网络科技工作室制作软件:RPG Maker MZ

2、机火帮往事图片欣赏:

机火帮往事什么时候出 公测上线时间预告

机火帮往事什么时候出 公测上线时间预告

机火帮往事什么时候出 公测上线时间预告

通过上面的游戏介绍和图片,可能大家对机火帮往事有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“机火帮往事”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!

 
九游APP
玩新游 上九游
  • 全球好游抢先下
  • 福利礼包免费领
  • 官方直播陪你玩
立即下载

 

机火帮往事官网在哪下载 最新官方下载安装地址

机火帮往事怎么下载?想要比别人更加抢先抢快的玩到这款游戏,那么你获取游戏开测消息是关键,能够获取到第一手信息,你才能在最快的时间内容体验到,机火帮往事怎么下载呢?在哪里可以免费下载?下面九游小编为你带来两招,轻松解决你的烦恼,告诉你在哪里可以下载机火帮往事安卓2022最新版。

机火帮往事快速预约/下载地址(需优先下载九游APP):

》》》》》#机火帮往事#《《《《《

 

1
九游机火帮往事专区

 

点击进入九游门户,搜索机火帮往事,进入之后你会看到一个切换下载按钮,分别是【高速下载】【普通下载】,高速下载可以更加节省下载时间和流量,能够很好的解决下载耗时长的问题。如图所示:

2
九游客户端

 

最直接的方法就是到九游APP进行下载,九游APP提供海量的精品游戏下载

在九游客户端搜索栏中输入机火帮往事进行搜索,点击进入到游戏专区中,如图所示:如图所示,这样你就不用四处寻求游戏下载包,简简单单的两步你就可以安装了,同时​还有大量的安卓手机游戏攻略。

九游APP下载【高速下载】

好了,小编为大家大家提供了这两种教程是下载机火帮往事最为直接方法哦,不知道大家有没有清楚的知道呢?想要了解更多精彩内容,不妨多多关注九游机火帮往事

机火帮往事游戏截图

机火帮往事截图
机火帮往事截图0
机火帮往事截图1
机火帮往事截图2

大家都在看-热门推荐

《离火之境》帮贡商城购买建议

离火之境帮贡商城购买指南在《离火之境》中,帮贡商城是一个提升自身实力的重要渠道。九游小编苹果在此为大家提供一份购买建议,助力各位少侠在离火之境中脱颖而出。帮贡商城分为常驻商城和限时商城。常驻商城提供多种提升材料,包括银两、经验丹、强化石等。限时商城不定时更新,提供珍稀道具和限量商品。获取帮贡的方法多样,包括参与帮派活动、捐献资源和完成任务等。合理规划帮贡的使用,将最大化你的收益。

>>>《离火之境》商城玩法攻略

《离火之境》帮贡商城购买建议

《离火之境》帮贡商城购买建议

帮贡商城

1、帮贡主要通过帮派强盗、派对、帮战、捐献、神树等途径获取。

2、帮贡商城里面的修炼丹和铜币袋有5折,建议买了,还有就是提升伙伴好感度的烹饪,每周必买完,可以有效提升伙伴战力。

《离火之境》帮贡商城购买建议

崩坏3喷泉往事怎么做-喷泉往事完成攻略

崩坏3喷泉往事怎么做?喷泉往事是游戏中新开启的支线任务,下面九游为各位整理出崩坏3喷泉往事完成攻略,希望可以帮助到各位。

崩坏3喷泉往事完成攻略

崩坏3喷泉往事怎么做-喷泉往事完成攻略

1.任务的话这里主要讲解一下大家都在问的问题,就是蓝线提示消失和居民位置。

2.正常来说是跟着线路提示的,如果没有就重启试试,因为那个蓝色的路线提示不太显眼,但都是最快的。

3.然后居民则是救世裂缝的附近,就在小吃街那里。

4.第三个西侧有个阶梯走上去就是,那个地方可以去空中花园看得到,但是不能从上面跳下来只能去西侧走上去。

5.注:并且不走到npc附近的话,就不会显示蓝色虚线的提示。

以上是小编为各位带来崩坏3喷泉往事完成攻略的全部内容,更多精彩游戏资讯,请持续关注九游

魔镜物语白雪往事怎么过 白雪往事玩法攻略

魔镜物语游戏中包括多种不同的任务,玩家可以通过提升等级,开启多种限定活动,今天小编带大家了解一下魔镜物语白雪往事怎么过。

玩家进入游戏后,随着战力不断提升,当提升到25级时,即可开启一千零一夜中白雪往事任务。身在皇宫的魔镜王后很清楚,白雪尤丽存活在世界上已经造成他不是世界上最美的女人,所以她需要用毒果杀死白雪公主。所以需要通过任务后成功解救白雪公主。通过完成任务后,可以获得紫金宝箱或黄金宝箱奖励,选择开始演出进入白雪往事任务。

玩家会在城墙外看到白马王子,与他沟通后即可让白马王子加入到战队中。

与小矮人进行沟通,回答出他认为最漂亮的女人,回答正确会留下遗物。玩家在城墙外不断的遇到别人,当成功完成,遇到白雪公主后,玩家与白雪公主进行沟通,原来逃出城外的白雪公主内心不相信任何人,当击败白雪公主后可以获得不同的奖励。

当击败白雪后,白雪打算前往后宫去找皇后。当击败皇后后,可以成功解救白雪公主,白雪公主往事任务即完成,可以获得相关不同的奖励和卡片

魔镜物语白雪往事怎么过小编就介绍到这,可以通过组队进行挑战皇后,当挑战成功后,可以获得相应奖励,成功解救白雪公主,希望小伙伴们喜欢,抓紧时间体验吧。

海港往事好玩吗 海港往事玩法简介

期待已久的手游海港往事即将登陆九游,这款手机游戏吸引了大批玩家的关注,有很多粉丝都在问九游小编海港往事好玩吗?海港往事值不值得玩?现在就为大家来简单分析下,看看这款游戏的玩法特点和游戏剧情介绍。

1、海港往事简要评析:

一部游戏、一部电影、一个故事、一种感动! 海港往事游戏沿用了诡船谜案系列第一人称视角,同时加入了全新的横版第三人称视角。完整的故事线让玩家拥有更好的体验,当然只要你够聪明。你会发现故事往往没有看到的那么简单…真相?我们等你来探索! 旭日撒在宁静的港口小镇,在温暖的阳光下,废墟中流浪的少年从睡梦中惊醒,带着些许惊慌,是往事太过伤感,还是未来太过沉重……黑影扶墙而动慢慢靠近,是危险还是机遇?故事就此开始,命运的轨迹悄悄的搭上了那沧桑的渔船,谁又能解开这尘封的海港往事。 -----------------------特点------------------------------ *更加细致独特的2D手绘画风。 *众多趣味性的迷题和故事线隐藏其中 *全新加入了人物立绘,更丰富的游戏玩法,更好的游戏体验。

2、海港往事图片欣赏:

海港往事好玩吗 海港往事玩法简介

海港往事好玩吗 海港往事玩法简介

海港往事好玩吗 海港往事玩法简介

海港往事好玩吗 海港往事玩法简介

海港往事好玩吗 海港往事玩法简介

通过上面的一部游戏、一部电影、一个故事、一种感动! 海港往事游戏沿用了诡船谜案系列第一人称视角,同时加入了全新的横版第三人称视角。完整的故事线让玩家拥有更好的体验,当然只要你够聪明。你会发现故事往往没有看到的那么简单…真相?我们等你来探索! 旭日撒在宁静的港口小镇,在温暖的阳光下,废墟中流浪的少年从睡梦中惊醒,带着些许惊慌,是往事太过伤感,还是未来太过沉重……黑影扶墙而动慢慢靠近,是危险还是机遇?故事就此开始,命运的轨迹悄悄的搭上了那沧桑的渔船,谁又能解开这尘封的海港往事。 -----------------------特点------------------------------ *更加细致独特的2D手绘画风。 *众多趣味性的迷题和故事线隐藏其中 *全新加入了人物立绘,更丰富的游戏玩法,更好的游戏体验。和图片,可能大家对海港往事有大致的了解了,不过这么游戏要怎么样才能抢先体验到呢?不用担心,目前九游客户端已经开通了测试提醒了,通过在九游APP中搜索“海港往事”,点击右边的【订阅】或者是【开测提醒】,订阅游戏就不会错过最先的下载机会了咯!

下载九游APP订阅海港往事>>>>>>

一键高速下载,礼包轻松到手!

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

春光火力量贩机,每日登录领奖励,黑羽翅膀,聚灵阁黄金钥匙等你来领,玩家仅需在活动期间每日登录游戏即可在网站领取相应奖励,快和小编一起来看看具体的活动内容吧。

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

活动时间2017.4.18~2017.5.9

活动一:每日活力量贩

每日登录游戏后即可进行签到并立即领取奖励

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

活动二:春日的宿命卡牌

当日登录游戏后即可翻开下列宿命卡牌,查看自己的宿命卡牌,每次翻牌有可能开启同一张宿命卡牌每张宿命卡牌代表不同的宿命值,翻开卡牌之后即可返回宿命点数,宿命点数可用作兑换奖励每天总共可翻开5张卡牌,每日凌晨将会清空翻卡记录,进行抽奖将会消耗当前宿命值,而历史宿命值会累积不变

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

剑灵春光火力量贩机活动地址 剑灵春光火力量贩机活动

剑灵热门攻略推荐
剑灵活动专区 剑灵手游下载 剑灵捏脸数据大全
剑灵最新活动、资讯
洪门之师 战破浮游 天乾灵核 青空时装
剑灵副本攻略
遗失的海鸣巢穴 漩涡寺院 黑暗摩天楼 南天圣地
黑龙教秘密殿堂 法器研究所 24人风之平原 地下监狱

看了上文九游小编带来的剑灵春光火力量贩机活动地址,你是否了解了相关内容信息,知道了呢!更多最新最好玩的手机游戏就来九游下载吧!

如转载涉及版权等问题,请作者与我司联系,我司将在第一时间删除或支付稿酬。

BUG往事

      顾煜,就职于腾讯引擎技术中心,是《天涯明月刀OL》的技术总监。《BUG往事》原文发表于其知乎专栏“游戏开发随笔”。作者用诙谐幽默的语气讲述了作为程序员与其天敌“BUG”斗智斗勇的故事。

      该文文笔妙趣横生,即使你完全不懂程序员的那些语言也能从顾煜的文字里读出一点儿“老子不信斗不过你”的不服输的劲儿。触乐将全文转载、编撰录入以饕读者。

      翻出一篇老文,辛苦写给公司内刊,貌似最后没有发表……润色一下,发出来,纪念那些年修过的奇葩bug们。

      记忆中有很多次了,几个程序员朋友聊天,聊着聊着,就聊到自己遇到过的bug。然后大家开始口沫横飞交流那些或诡异或神奇的bug,谈论自己当年是如何搞定bug或是被bug搞定。

      正好看见Gamesutra上也登了篇Dirty Coding Tricks,发现老外也有这个癖好,原来天下程序员本一家。一路走来,程序员的成长,便是一路刀光剑影,与bug斗个你死我活。了解别人的Debug过程,或是回忆一下自己Debug的时候思路,也是很有意思的事情,值得定期总结。

      下面分享一下自己遇到过印象深刻的bug。

      ■ 靠不住的OS:Memcpy的传说

      做一个PC项目的时候,凶猛的测试兄弟把Winxp 64单独列出来,作为一个测试平台,然后我们的噩梦就开始了。游戏在Winxp 64上面频繁Crash,经常在更新Octree的时候访问到空指针,但逻辑上来看那个指针不可能是空的。Crash位置很随机,到处都有,通常都是玩了一个小时在一个莫名其妙的地方Crash。

      第一反应就是那些地址被非法访问,可能是某个错误的指针指向那里,往里面写了不该写的值。于是我根据最常Crash的地址设下数据断点,试了好几天,从来没有断下过,Crash还是依旧。然后同事试图加上大量的保护代码,判断一个指针是不是空指针后才使用,很好的降低了Crash机率,但偶尔还是会有。想想问题根源没有找到,降低Crash概率只是让自己更难修bug,而且访问Octree也比较多,乱加保护会影响性能,我一狠心又把保护代码全去掉了。

      Takeaway: 不到万不得已,不要用保护代码掩盖Bug,它只会让你的日子更难过。

      来回几轮搞下来,根据某次比较靠谱的Crash Callstack,怀疑到了memcpy。memcpy是个老同志了,兢兢业业地忙碌在各个程序里,负责搬运数据很多年,工作绩效有口皆碑。它有什么问题呢?它还能有什么问题呢?

      为了保证多线程能同步并行执行,我们程序中有个很大的memcpy,把一块Octree从后台用memcpy复制到前台的工作buffer。当然这个做法的设计优劣不在此讨论,存在即合理,2007年,多线程引擎我们还不是那么擅长搞。

      既然有怀疑,就要捉奸。我做了试验,在memcpy后面直接加一个循环,逐字节比较源数据和目标数据,有时候居然会不相等… 这个可颠覆了我的世界观。我试图写了一个函数,里面就一个循环,逐字节复制数据,然后把所有的memcpy全替换成这个函数,果然不Crash了。但显然这是不行的,速度太慢了。

      既然有了点线索,就可以试图简化bug重现条件了。我不能每次都花一个小时去运行游戏,寻找那一次crash。我在游戏load起来,开始走主循环后,加了一个死循环,不停用memcpy复制一块内存,然后比较源数据和目标数据。源数据里面没有0,都是1-255的值,可是运行几十秒以后目标数据居然有0。这样,我们成功地把重现一次bug的平均时间从一个小时降低到一分钟。

      我们的怀疑从3d代码转移到多线程,在进入那个死循环之前,我们设下断点,把其他无关的线程全部都Freeze,只有那个线程会运行。这样,任何多线程的干扰全部排除,memcpy在一个理想的环境中欢快的运行,但memcpy还是会出错。

      继续简化,我单独写一个小程序,里面只做死循环和memcpy,来判断是不是OS的问题(实在是走投无路了)。试验结果是,Winxp 64没有问题,memcpy始终如一地正常工作着(本该如此)。 可是某一次,当我们的游戏在后台运行的时候,再启动这个小程序,居然memcpy又出问题了……无语了,原来我们的游戏还能万里追杀,跨进程搞垮OS下面的其他进程。

      山穷水尽疑无路,我无奈下单步跟踪了一下memcpy的汇编代码,上来有两句:

      也就是说,memcpy上来看有没有设置__sse2_available,这个值估计是CRT库里面设的,如果有SSE2就执行sse优化的memcpy,没有就跳到Dword_align那里执行普通版本的流程。我开始怀疑是不是我们的游戏里面对系统做了点什么手脚,导致在__sse2_available允许的情况下,优化的代码会执行出错。游戏的代码规模实在太大,又用了n个中间件,我无力一一查看,且我也看不懂SSE代码(哎呀好羞射),就随手做了个试验,在那句判断的地方,通过Debugger把__sse2_available的值改成了0。从此memcpy再也不出错了。

      所以最终的解决方案是,Win64下,我在游戏一开始初始化的地方,加上谜一样的初始化代码:

      这样memcpy就永远使用不做sse2优化的代码了。

      memcpy不使用sse2后会不会有性能问题?经过测试,发现问题不大,对于频繁调用的少量数据复制,memcpy不太能从sse2里面得到多少好处。对于大量数据的复制,我们用得也不多,profile了一下,没有发现明显的瓶颈,无视了。这事情也可以从反向理解,由于游戏规模太大,各种多线程和GPU/CPU同步,导致任何一点的效率损失,可能不会扩散到整个游戏,被其他同步和等待吸收掉了…我真是一个好程序员,能想到这么好的理由说服自己。

      对游戏跨进程影响其他程序的memcpy,实在没能力解决了,Winxp 64是一个太小众的环境,用户要么用Winxp 32, 要么用Vista 32/64,市场占有率很低,我们也算仁至义尽了。

      可得结论:Winxp 64靠不住(其实问题还是应该出在我们内部,不过其他OS都没问题,就赖在它身上了。)

      Takeaway: 首先,你要有一个有耐心的老板,才能给你时间去查这么奇怪的Bug。

      为了达成目的,我们要不择手段

      ■ 靠不住的SDK:OutputDebugString

      话说当年开发Splinter Cell 4,使用的还是XBOX360的Alpha kit。微软早期的360 Kit,全不像后期的Kit,后期kit长得和主机差不多。而当时的KIt,是用一个很大的Power Mac G5,换上一块ATI显卡,再刷上MS的固件,连马甲都不穿一件就出来见人了。

      Xbox 360开发SDK,早期bug一大堆,比如预编译头文件太大了,编译器抱怨说预编译头文件预留内存不够,这个好办,加上/Zm512编译选项即可。加上,编译,没用?!只好写信去MS问,他们说,哦,原来如此啊,今天天气真好,哈哈哈哈,请等待下一次更新,谢谢您汇报云云……虽是MS的bug,可是我也不能等着他修复才工作,只好手动拆分预编译头文件,把很多内容放在预编译头文件外面,预编译头文件就会变小,编译就可以顺利通过了。

      扯远了,回头来说这个OutputDebugString的问题。

      360有3个cores,每个core有2个Hyperthreads,总计6个线程,我们的游戏在逻辑线程、声音线程和渲染线程外,还开了3个辅助线程,用自己写的Thread Pool管理系统来管理这些线程,初始化的时候就是一个循环把每个线程创建出来。

      这个bug的表现现象就是加载失败,程序僵死。团队当时有几十个测试人员,每天打游戏八小时,从没碰到过游戏加载失败情况。但是开发人员这里就有很低概率会加载失败,表现情况为用VC启动游戏,然后过一会加载屏幕就僵死不动了。

      开发人员往往过了5分钟还没在电视上看见游戏画面才知道游戏又挂了,重现概率是每个程序员每一到两天碰到一次。我们担心这是线程管理系统内部的问题,就让每个开发人员碰到这种情况不要急着重启动,把现场给我看一下。每次僵死的时候都是在系统内核死锁,Callstack也没有有价值的信息,基本都是在创建每个线程的时候打印一句语句的时候就内核就死了。在接下来一周里,我试图在线程管理系统内部加一些日志输出,每次重现bug的时候查看日志,也没有找到更好的线索。

      重现概率实在太低,不好调试,于是我试图用简单的程序片段来重现这个bug。因为都是创建新线程时候死锁,第一个想到的就是写一个小程序,直接一个死循环,创建线程,打印日志,然后杀掉线程,重复再做。果然能够重现bug,程序运行1分钟以后,就死锁了。同样的现场,还是在OutputDebugString内部死锁了。难道bug不是在线程库,而是在OutputDebugString内?

      Takeaway: 不要轻易相信你看见的表层问题,问题可能在别处。

      正好那些天有个微软360开发组的人员在我们组Onsite支持,于是他带着大量的360 Sdk的符号库(Symbol)来帮助调试,因为他不是做这一个模块的,最后也没有什么结果。最后他把我的小程序发回微软,找到内部开发人员处理,这比我们直接走正式support流程快很多。

      Takeaway: 隔离问题,编写更小的测试案例,便于和别人沟通交流,寻求帮助。

      一天后,微软发回Email,说这是内部的Bug,请无视,不会影响Release版本,是Debug协议上的问题。

      可得结论:微软靠不住。(开玩笑,请微软公司不要追杀)

      ■ 靠不住的系统组件:Vista和Speech Recogition

      我们游戏使用了语音识别,使用了DirectX里面的XAudio来采集声音。Windows Vista里面有一个语音识别的组件,启动那个程序,然后玩我们的游戏,玩了一段时间,因为没有使用麦克风,那个程序会自动关闭使用麦克风,然后我们的游戏就Crash了。又是一个跨进程的奇葩Bug。

      从现场来看,Crash在使用XAudio的库代码里面。看不出什么线索,最后发现在日志里面,Crash前一会儿,XAudio的dll被Unload掉了。Vista那个语音组件很强悍,也会跨进程追杀大法,在自己进程把我的进程dll给Unload掉了。

      虽然遇事先要怀疑自己的代码有问题,但这个情况太匪夷所思,所以我试图推卸责任,我跑了几个其他DirectX程序和Demo,但凡用到XAudio组件的,在Vista Speech Recognition这一大招前无一幸免,全部Crash。

      问题不在我们这里,但是作为一个职业杀虫人,我有着“只解沙场为国死,何须bug裹尸还”的觉悟,决定还是要想办法搞定它。

      我猜这个组件退出的时候,广播了点什么消息,让系统所有进程去卸载这个Dll。我找了一个微软提供的库Detours Express,专做Hook API的勾当。它会反汇编API的入口代码,然后动态替换入口,插入jmp指令去执行我们自己的函数。先看了文档,搞懂这个东西怎么用,然后猜测是一个OS内部的消息导致Unload DLL,我们就拦截了RegisterWindowMessage。一通翻箱倒柜,啥有意义的东西都没发现。

      再用spy++来拦截消息,发现有一个MSUIM.msg.rpcsendreceive的消息面目狰狞,很可疑。就在收到这个消息以后,Dll就被Unload了。于是我们用Detours截住这个消息,直接返回。

      以为搞定了,但结果还是不行,有几条别的消息也会触发Unload Dll,我一一用Detours拦截返回。拦截的消息越来越多,看来不是个解决办法。于是我怀疑我们没有拦截到正确的消息,怀疑OS启动的时候便注册了一堆内部用的消息,而不是在运行进程的时候才注册。那些消息里肯定有我想要的,我便异想天开地Hook了User32.dll,拦截下所有消息,在安全模式下把修改过的user32.dll覆盖原来的文件,然后满怀希望的重启动Vista的时候。结果不出所料的蓝屏了……User32.dll是凡人能随便碰的吗?这不是一个User friendly的库,应该改名叫God32.dll。

      这个bug搞了1周,最后才想到最基本的道理,说不定只是Dll内部引用计数被清掉了,所以系统就卸掉Dll了。当Vista语音组件Unload XAudio的时候,系统去看看XAudio库有没有什么别人引用,结果发现居然没有,那就顺手清理了。就像地上有100块钱,你东张西望,发现没有人宣布拥有那张钱,没有一点点犹豫,你随手就把它放进了裤兜,进行了回收。嗯,就是这样的,我喜欢比喻这种修辞手法。

      理论上创建XAudio设备的时候没有做什么额外的加Dll引用计数的事情,怀疑是MS的bug,创建D3D设备、DInput设备的时候都不需要做什么特别的事情的,但他们的引用计数都没有问题。

      于是我恶搞了一下,在初始化XAudio完成以后,手动做了一次LoadLibrary,把XAudio2_1.dll强行Load一遍,相当于自行增加了引用计数。于是再无Crash。

      从此我们的游戏,在Vista 32上过上了幸福的生活。

      可得结论:Vista靠不住

      Takeaway: 不知道该说什么了,这个bug太奇葩了。

      ■ 性能的迷思

      临近最终版本发布的时候,测试人员发现一个问题,当在Vista上连续打游戏过7关以后,游戏帧数一下子变成原来一半了。大家觉得很诡异,都不相信,之前整天玩游戏都没问题的,于是责令测试人员再重现几次,否则拖出去刨坑埋了。我也没当回事,继续调试别的bug。结果他们测了几遍都是这种情况,看来我必须花点力气看看了。

      先编译了一个Profile版本,有大量的Profile代码,可以用我们自己做的工具看Profile结果。跑游戏,一个小时后顺利重现之,按下快捷键,截下一段性能分析数据,打开工具就开始分析。显示结果是在某个线程的声音处理函数里面特别慢,占了20多ms,找来做声音的程序员,让他也去帮忙看。自己继续研究,发现那个声音函数简单,估计最多1-2ms了,绝对不会有问题的。

      于是开始怀疑多线程的问题,之前有过类似bug,在加载关卡的最后一小段时间,音乐和语音会很卡,音频程序员查不出原因。后来我发现声音线程根本分配不出内存,声音线程的内存分配器和主线程共享,通过Critical Section保护着。声音线程进不了Critical Section,因为主线程那时忙于加载,正在疯狂地分配内存,导致声音线程被无法分配所需资源。我又不能调低主线程的优先级,否则加载速度会受到很大影响。最后解决方案是为声音线程单独开了一个内存分配器,不和主线程抢了。会不会是这个分配器有问题呢?我验证了很久,把那个声音线程的内存分配器换成绝无性能问题的版本,还是有问题,估计不是内存分配的问题。

      也许是那个很慢的声音处理函数里面有些资源被别的线程占了,导致在那里傻等,最后耽误了系统所有线程的同步,使帧数下降。有了想法我就开始验证,我在那里的每个多线程同步操作里都加上了Profile代码,继续花了一个小时重现bug,并检查Profile结果,发现那个线程就是慢,没什么特别原因,每个Critical Section都很快就过去了,也就是说,没有哪一个部分特别慢,是整个函数被均匀地拖慢了。

      忙了几天,死去活来,找不到线索。领导决定游戏还是照样发布,我继续看这个问题,准备在Patch里面修正这个bug。

      在一次次重现中,又简化了重现方法,我发现只需要顺序进入那几关,不需要把每一关都打过去的,所以我用作弊码直接完成每一关,重现一次 bug的时间缩短到10分钟以内了。

      看来自己的工具是搞不定这个问题了,请出Intel Vtune来收拾它。公司比较抠门,不肯买Vtune,只好申请了评估版,一个月试用期,应该够搞定这个问题了。用Vtune Profile了几次,每次拖慢的函数都不一定,而且里面真没什么特别的地方。

      又郁闷了两天,某天看着Vtune里面红红绿绿的代表线程忙碌状态的条条,突然发现有一个线程条全是密密麻麻的红条,其他线程的红蓝条相对稀疏一点。开始猜想,是不是有某个线程太忙了,导致抢了所有的时间片,让其他线程都没机会拿到时间片。有了理论依据,大胆求证一番,重现一次bug,帧数很低了以后,断下游戏,把系统里面的n个线程用二分法,Freeze一半,再运行,看帧数,然后恢复一半线程再跑,来回几次,终于发现当某一个线程恢复以后帧数就很低了,其他线程开关都没关系。关掉那个线程游戏马上全速欢快跑开了。再恢复运行那个线程,又是老样子。

      找到了嫌疑目标后,我全力追查这个线程是如何创建的。先在所有创建线程的地方加上日志,输出线程 id,重现bug后找出那个问题线程,然后对照线程 id的日志,试图找出这个线程创建的地方。结果很杯具,那个线程根本就不是我们自己程序创建的。也就是说,OS偷偷帮我们创了一个线程。这个就比较难查了,线程创建的时候我又没法设断点,也不知道系统内部用什么函数去创建线程,无法用Detour去Hook API。

      转机出现在Intel的Thread Profiler,照例又是一个月评估版。Thread Profiler可以显示出创建这个Thread的Callstack,虽然不是特别准确,不过已经是很有用的信息了。我发现那个线程创建的时候Callstack里面有Winhttp之类的函数。

      继续转移战场,看Msdn上介绍的Winhttp系列函数,然后搜索整个项目里面所有用到Winhttp系列函数的地方。应该是我们调用Winhttp的时候方法不正确吧,我猜。好在项目里面用的Winhttp系列函数也不多,每个地方读一遍代码,似乎都没问题。继续想,会不会是中间件的问题,我们用了一个其他分公司开发的网络组件,那个组件没有包含在项目里面,只是弄了个lib过来。我连忙找到那个组件的源码,一搜Winhttp又一大堆,一个个看,也都貌似正确。

      既然是连续玩n关才出问题,可能和什么资源泄露有关吧?我恍然大悟,注意看Winhttp 句柄的生命周期,发现那个中间件,在Xbox360版本上正常释放了句柄,可是Win32上就没有……

      没什么好说的,WinHttpCloseHandle伺候,问题迎刃而解。修正这个bug耗时2周,一路杀到声音、内存管理、网络模块,中间还顺手修复了无数其他bug,最后终于将其正法,改动只是一行而已。

      可得结论:中间件靠不住。

如转载涉及版权等问题,请作者与我司联系,我司将在第一时间删除或支付稿酬。

往事历历在目 《冰火幻想》日志系统详解

再过一个月,新一季的美剧即将开启全新的篇章,届时又将会引发一场怎样波澜壮阔的冰火狂潮?再次翻阅这部恢弘浩瀚的史诗画卷,一幕幕慑人心魂的场景依旧历历在目,残忍虐心的血色婚礼、烈火冲天的黑水湾之战、尔虞我诈的五王纷争……这些经典的剧情都将在由天拓游戏独代、游艺先生研发的全剧情强策略冰火魔幻手游《冰火幻想》中再次上演,那些错过的精彩、怒刷几遍也不过瘾的情节,都可以在冒险日志的“彩蛋”中重新温习几遍。翻开这本卷帙繁浩的日志,再来一场华丽的冒险!

往事历历在目 《冰火幻想》日志系统详解

往事历历在目 《冰火幻想》日志系统详解

“旧的帷幕落下,新的史诗奏起”,随着日记序章中篡夺者战争的经典画面再现,延续将近三百年的坦格利安王朝被彻底颠覆,七大王国迎来了劳勃·拜拉席恩统治下的全新时代。至此,一场关乎荣耀与背叛,正义与邪恶的权力纷争正式拉开了序幕。序章中以恢弘大气而又写实的画风将小指头、瑟后、弑君者、小恶魔、雪狼公爵、红袍女、龙女这些人物一一扫过,他们将会引领一场怎样的权力争夺?而凛冬将至,异鬼的凶猛突袭,又会让国王的命运何去何从?一段全新的史诗将由你重新书写!

往事历历在目 《冰火幻想》日志系统详解

往事历历在目 《冰火幻想》日志系统详解

在《冰火幻想》的日志系统中,作为守夜人身份的你,将和原著中的角色集结,一同合力抗争北方邪恶异鬼!在“冰与火”的世界中经历热血、激情、背叛、阴谋、战争,共同开启这场权利的纷争之旅。在“凛冬将至”章节中,你将亲眼目睹变色龙的叛变和异鬼的复苏;在“血色婚礼”里,你又会和小艾一同,亲历少狼主和石心夫人被残忍虐杀的悲痛;而在“动荡的王都”,面对光明王军队来势汹汹地涌向黑水湾城门,你将要和英雄们一同击退敌人的进攻……每一个章节都是一场非死即赢的冒险,在每段凶险万分的旅程中,见证结局的一步步改写。

往事历历在目 《冰火幻想》日志系统详解

告别旧的旅程,又马上要踏入全新的征途,斗争仍在继续,战火仍不停歇。所有的故事都载入了《冰火幻想》的冒险日志中,等待你重温回味。新的纷争即将揭开序幕,你,做好准备加入到这场轰轰烈烈的权力争夺了吗?

如转载涉及版权等问题,请作者与我司联系,我司将在第一时间删除或支付稿酬。

机火帮往事同类推荐

相关专题

最新专题

即将上线

2026-03-03 09:00:00
2026-03-04 08:00:00
2026-03-04 10:00:00
2026-03-05 10:00:00
2026-03-05 10:00:00
2026-03-06 10:00:00
2026-03-06 10:00:00
2026-03-06 10:00:00
2026-03-07 00:00:00

最新资讯

《生化危机9:安魂曲》是生化危机开创生存恐怖新纪元的系列最新作。我们与FBI分析员格蕾丝一同体验
《生化危机9 安魂曲》全流程图文攻略
2026-02-27 12:54:37
《生化危机4:重制版》中总统女儿艾什莉·格拉汉姆(Ashley Graham)的两位真人原型,昨
顶不住 《生化危机4》艾什莉"脸模""体模"女仆装同框
2026-02-27 12:54:05
《心动小镇》里面出了一个叫时尚浪潮新活动,这个活动有很多蛋可以收集,其中就包括薰衣草裂纹蛋,这个
《心动小镇》薰衣草裂纹蛋在哪里介绍
2026-02-27 12:53:53
《心动小镇》里面出了一个叫时尚浪潮新活动,这个活动有很多蛋可以收集,其中就包括温泉裂纹蛋,这个温
《心动小镇》温泉裂纹蛋在哪里介绍
2026-02-27 12:53:46
据外媒报道,卡普空即将发售的生存恐怖游戏《生化危机:安魂曲》已有玩家创下了速通记录。 根据
《生化危机 安魂曲》已现速通记录 2小时39分钟
2026-02-27 12:53:33
速览 完美世界游戏旗下新一代赛季制回合手游《梦幻新诛仙:轻享》正式开启官网预约。游戏以赛季制为核
《梦幻新诛仙-轻享》赛季回合革新-预约今日开启
2026-02-27 12:53:30
《心动小镇》里面出了一个叫时尚浪潮新活动,在收集十六颗蛋的照片后,会获得配方,但不会自动解锁,要
《心动小镇》温泉蛋的配方获取方法介绍
2026-02-27 12:53:23
进击的赵云好玩吗 进击的赵云玩法简介
期待已久的手游进击的赵云即将登陆九游,这款手机游戏吸引了大批玩家的关注,想下载这款游戏,有很多粉
进击的赵云好玩吗 进击的赵云玩法简介
2026-02-27 12:46:08
《生化危机9》最全购买指南 游侠商城送你惊喜好价
万众期待的卡普空最新恐怖大作《生化危机 安魂曲》(以下简称《生化9》)今日正式发售!相信一定有很
《生化危机9》最全购买指南 游侠商城送你惊喜好价
2026-02-27 12:45:16
永劫无间火男f怎么用
火男F技能是季沧海的核心战斗机制,主要基于燎原劲分支技能的设计,提供防御反击或远程输出能力,玩家
永劫无间火男f怎么用
2026-02-27 12:44:59
鸣潮沉默幻想怎么进去
进入沉默幻想玩法的关键在于完成游戏中的沉没的历史这一纪闻任务,该任务的核心内容是寻找并调查地图上
鸣潮沉默幻想怎么进去
2026-02-27 12:44:23
反恐精英弑神双剑怎么开剑阵
弑神双剑是一对霸主系列近战武器,由左手持有的蓝剑屠魔与右手持有的红剑弑神组成,其基础操作分为两种
反恐精英弑神双剑怎么开剑阵
2026-02-27 12:44:13
燕云十六声剡藤纸怎么用
剡藤纸是游戏中的易容道具,需要在开封城的王家木器什物铺购买。玩家需先完成清河地图的主线任务广胡子
燕云十六声剡藤纸怎么用
2026-02-27 12:43:55
星际战甲银光林地的祭坛在哪里
祭坛位于游戏中的地球区域银光林地地图内,玩家必须完成主线任务灵魂觉醒以解锁庞多拉星系的访问权限,
星际战甲银光林地的祭坛在哪里
2026-02-27 12:43:55
大厂修仙传-打工人飞升模拟器什么时候出 公测上线时间预告
导读:最近很多玩家都在关注大厂修仙传-打工人飞升模拟器这款手游,想知道具体的公测时间,大厂修仙传
大厂修仙传-打工人飞升模拟器什么时候出 公测上线时间预告
2026-02-27 12:40:32
三国天下归心连弩军有什么效果
连弩军具备强大的远程火力输出能力。其装备的连弩,能够在一定距离外对敌人进行密集射击。在大规模团战
三国天下归心连弩军有什么效果
2026-02-27 12:35:24
《生化危机9》BSAA钥匙获取方法 BSAA钥匙怎么获取
《生化危机9》中BSAA钥匙究竟应该怎么获得呢?有着这个问题的玩家请看下方为大家带来的《生化危机
《生化危机9》BSAA钥匙获取方法 BSAA钥匙怎么获取
2026-02-27 12:35:11
《生化危机9》前期获取手枪方法 疗养院哪里有枪
《生化危机9》在前期玩家们初次抵达疗养院时没有武器,很多地区移动起来非常困难,想要前期就获得一把
《生化危机9》前期获取手枪方法 疗养院哪里有枪
2026-02-27 12:35:09
《生化危机9》癫狂难度解锁方法及技巧 最高难度怎么解锁
癫狂难度是《生化危机9》的最高难度,许多小伙伴可能还不太清楚该如何解锁,下面就为大家带来《生化危
《生化危机9》癫狂难度解锁方法及技巧 最高难度怎么解锁
2026-02-27 12:35:07
《喵喵的结合》德鲁伊松鼠流玩法推荐 德鲁伊松鼠流怎么玩
《喵喵的结合》中德鲁伊的松鼠流有着十分不错的强度,想知道应该怎么玩的玩家请看下方由“命运的砂时计
《喵喵的结合》德鲁伊松鼠流玩法推荐 德鲁伊松鼠流怎么玩
2026-02-27 12:35:04
程序需要调用以下重要权限:

t2-t1:26.0

t3-t2:114.0

t4-t3:35.0

t5-t4:18.0

t6-t5:18.0

t7-t6:0.0

t8-t7:235.0

t9-t8:28.0

t10-t9:14.0

t11-t10:6.0

t12-t11:5.0

t13-t12:4.0

九游云游戏
电脑也能玩手游 · 无需下载 · 不占空间 · 点击即玩
在线玩