t2631_2-t2631_1:0.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:7.0

t2631_12-t2631_11:0.0

t2631_12-t2631_1:7.0

手游 > 休闲 > 监狱往事下载
监狱往事

监狱往事

监狱往事是一款玩法非常精彩的休闲模拟类游戏,这款游戏以Q版的...
运营
扫码可预约该游戏~
九游预约
游戏介绍 游戏截图 热门推荐 同类推荐

监狱往事游戏介绍

监狱往事简介

监狱往事是一款玩法非常精彩的休闲模拟类游戏,这款游戏以Q版的风格制作而来,玩家将在这里感受到监狱内的各种点点滴滴,完成很多精彩的挑战,还有全新的模式推出,绝对不会让你失望,喜欢的话快来下载这款监狱往事吧!
九游
版本:8.5.0.1 更新时间:2026-02-03 权限说明  |  隐私政策

监狱往事好玩吗 监狱往事玩法简介

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

1、监狱往事简要评析:

监狱往事是一款玩法非常精彩的休闲模拟类游戏,这款游戏以Q版的风格制作而来,玩家将在这里感受到监狱内的各种点点滴滴,完成很多精彩的挑战,还有全新的模式推出,绝对不会让你失望,喜欢的话快来下载这款监狱往事吧!

2、监狱往事图片欣赏:

监狱往事好玩吗 监狱往事玩法简介

监狱往事好玩吗 监狱往事玩法简介

监狱往事好玩吗 监狱往事玩法简介

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

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

监狱往事什么时候出 公测上线时间预告

导读:最近很多玩家都在关注监狱往事这款手游,想知道具体的公测时间,监狱往事会经过封测、删档内测、不删档测试到最终的公测等几个测试阶段,才会正式上线监狱往事安卓或iOS版本,有很多玩家就会问小编监狱往事什么时候公测,究竟什么时候出呢?今天小编就为大家提供如何快速地知道监狱往事开放下载和公测的时间,你就可以最快知道监狱往事公测时间了!

监狱往事什么时候公测?公测时间提前预知,有三大方法,下边就让九游独家来为您揭秘吧!

方法一: 关注九游监狱往事大事件

步骤1:百度搜索 九游监狱往事” 专区

步骤2:关注大事件列表,每次监狱往事测试的时间都会最新发布,这是九游独家的哦;

方法二: 下载九游APP,订阅监狱往事的开测提醒

步骤1:点击下载九游APP;

步骤2:进入APP搜索“监狱往事”,订阅后可及时接受活动,礼包,开测和开放下载的提醒;

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

方法三: 查看九游开测表

步骤1:在九游开测表中玩家们可以看到当天所有进行开测的手机游戏,以及最近十天即将进行测试的游戏,有具体的测试时间以及测试阶段介绍,玩家们可以在这里查找监狱往事的相关公测时间信息!

步骤2:访问地址>>>手游开测表地址

好了,监狱往事公测时间的关注方法就讲到这里,各位玩家是否都已经掌握好以上三种技巧了呢,随时随地关注监狱往事什么时候开测,什么时候开放下载,什么时候公测等信息,还有一个办法就是留意九游监狱往事专区的每日更新,欢迎大家积极参与讨论和提问题,我们会第一时间为您解答。

监狱往事游戏截图

监狱往事截图
监狱往事截图0
监狱往事截图1
监狱往事截图2

大家都在看-热门推荐

紫罗兰监狱是什么-紫罗兰监狱简介介绍

紫罗兰监狱是什么-紫罗兰监狱简介一览

紫罗兰监狱:囚犯严苛监管下的生存之路

紫罗兰监狱是世界上最严苛的监狱之一,坐落于阿拉斯加州的偏远地区。这里的囚犯被关在一个个像笼子一样的牢房里,每天都要忍受着身心的煎熬。在紫罗兰监狱里,囚犯们必须遵守严格的规定和纪律,否则就会受到惩罚。因此,要在这里生存下来,是一项极其艰巨的任务。

严格的纪律

在紫罗兰监狱里,每个囚犯都必须按时起床、参加劳动、吃饭、休息。而且每个动作都必须听从监狱的命令,不能有任何违背纪律的行为。此外,囚犯们必须时刻保持谦恭、尊重、礼貌,否则将受到惩罚。这样的严格纪律规定,让囚犯们不得不迂回认真地生活。

残酷的惩罚

如果囚犯有任何违反纪律、规定的行为,都将受到惩罚。最轻的惩罚是关禁闭,最重的惩罚是鞭打、电击、火葬等。这样的惩罚方式,让囚犯们恐惧不已,也让身心被摧残。因此,囚犯们必须听从纪律、规定,绝不能有任何违背纪律的行为。

囚犯之间的互动

在紫罗兰监狱里,囚犯之间互相看守,互相帮助。这种互动,虽然只是微不足道的,但却能渐渐形成一种信任和友谊。囚犯们会互相帮助,分享自己的经历和故事,让生活在监狱里的人们互相成为心灵伴侣。这种囚犯之间的互动,也是在艰苦的环境下,让人们发现生命的真谛。

对生活的敬畏

在紫罗兰监狱里,所有囚犯们都会认真地珍视他们现在所拥有的一切。在没有自由的环境中,囚犯们学会了对生命的敬畏和珍惜。他们会努力工作、健康饮食、锻炼身体,希望尽早回到自由的世界。在监狱里,囚犯能够认识到生命的真谛,珍惜眼前所拥有的一切,让他们更加有勇气和决心面对未来的挑战。

结语

生活在紫罗兰监狱里,是一项极其困难的任务,但囚犯们依然能够在这里找到生命的意义。他们懂得尊重纪律、珍惜生命、彼此帮助,这些都是在监狱里所得到的财富。生活中的一切,无论是困难还是挑战,都需要我们珍惜和感恩。相信只要保持积极的心态和刻苦的努力,我们也能够在生命的旅程中找到属于自己的意义。

监狱好玩吗 监狱玩法简介

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

监狱快速预约/下载地址(需优先下载九游APP):

》》》》》#监狱#《《《《《

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

1、监狱简要评析:

犯人不断送到你的监狱 缝纫机踩冒烟 合理地来运营监狱
建造你的监狱 一定要将安保措施做好 不要让犯人越狱
让犯人制造价值来充实的度过每一天
建设洗浴 医务室 食堂 宿舍 操场等等
要注意劳逸结合 遇见不听话的犯人那就看你的办法了
打造你的监狱帝国 看看你的管理下会是如何

2、监狱图片欣赏:

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

监狱好玩吗 监狱玩法简介

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

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

 

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

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

崩坏3喷泉往事完成攻略

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

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

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

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

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

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

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

监狱

监狱,监狱俘虏主城10级以上的君主,并能处决主城17级以上的君主,俘虏君主后会处决等待时间,在世界结束后可以处决君主,升级监狱可以减少处决等待。

而升级监狱,可以俘虏更多的君主,而俘虏的君主越多,也可额外提高军团的攻击力,而对方的处决等待时间也会越长,所以你来说,监狱的等级越高,对你也就越有利了。

以上便是监狱的简单介绍,若想获知更多游戏信息,还请关注游戏专区哟!

监狱建筑师极难逃脱监狱建筑方法

今天 九游和大家讲解监狱 建筑师极难逃脱监狱建筑方法

监狱建筑师中如果长时间不管理,监狱的防御会越来越薄弱。游戏中的布局也是非常重要的。下面就给大家带来监狱建筑师极难逃脱监狱建筑方法,感兴趣的玩家一起来试一下吧。

由于脱逃模式下很多特性和建造模式不同,因此只介绍思路和设计而不发存档。

理论上没有什么监狱是牢不可破的,因为你干掉守卫以后官方不会自动补充,因此守卫只会越来越少。

一、总体规划

监狱建筑师极难逃脱监狱建筑方法

以路为界,左侧建造监狱,右侧划分办公室水电站

监狱建筑师极难逃脱监狱建筑方法

先说右边:

电站水站不用说了,按需布置

办公室的巧妙建造方法:基建-混凝土/砖,划一个4x4的区域-在区域边界上装一扇门(木门就行),建材-拆墙-把边上的墙拆了,点击木门-丢弃,房间-办公室-划在4x4区域上。最后结果是出现一个4x4室内办公室,虽然四周没有墙……的)

这样好处是节省空间,并且减少wei禁品来源:你都跑到路上了肯定优先逃跑,还要wei禁品干什么?另外除非在课程里安排了:守卫电击枪-长官、木工学徒-工头、精神指导/行为疗法-心理医生,使用办公室的人是没必要进入监狱区的。(不过上不上课好像在脱逃没什么影响……)

再说左边:

以路为界,左侧建造监狱,右侧划分办公室水电站

监狱建筑师极难逃脱监狱建筑方法

灰色墙,尽量采用围墙。(室内区域先推压成室外就能建围墙了,围墙不通水电,在围墙上选择混凝土/砖墙可以覆盖掉,就可以装了。)双层墙以往被用于防止突发情况墙塌和减慢地道挖掘,我没测试出在脱逃模式下的作用,想建就建吧。

蓝色区域安装消防喷头,区域隔离防止火势蔓延。红色区域请在部署里设置员工专用。(暂不考虑狱中劳役,反正没见脱逃里有犯人干活)

厨房建议从左到右水槽-厨具-冰箱,因为右边进来的厨子搬菜到冰箱-冰箱到厨具,水槽只接收监牢里面的盘子。

枪械库、警犬休息室、安保室放在靠路一侧并与里面用围墙隔开,因为这是wei禁品高危区域,需要防止犯人拿枪。犯人如果真能走到那里就直接跑了,拿枪干嘛?建议多用警犬少用守卫,因为警犬攻击数值高移动速度快,被打死也不掉钥匙警棍。

安保室是闲时守卫聚集区,犯人从左往右逃,守卫从右往左冲,有效防止追不上。

犯人接收处是必须的,否则犯人一入狱就自带电钻锤子螺丝刀等等,接收处可以进行搜身。

监牢区域:

监狱建筑师极难逃脱监狱建筑方法

每个监牢区域是犯人唯一的活动区域,我的作为例子,至少有一个食堂,别的请随意。门口使用遥控门,防止抢钥匙导致加快逃跑。(我的律师解锁了1x3小牢房)

划分监牢区域有助于隔离火灾、减少犯人小队人数:犯人得打坏遥控门出去,再打坏遥控门进另外的监牢区域,解决掉所有目击到的守卫,空格停止攻击(不解决目击守卫只能空格投降),才能开始招募新队友。

监狱建筑师极难逃脱监狱建筑方法

武警防脱逃区域是重点,这个区域堪称原版的机枪哨塔。建造方式:第一行是墙(随便哪种),第二行空着(我为美观加了灯),第三行是一行不间断遥控门(不装伺服,选遥控门按住鼠标左键和右箭头可以一造一排),左右用墙封堵。

建造后选择一个遥控门锁定开启,然后在部署页面把武警全调过去,最后把那个遥控门换回普通,部署页面撤掉,武警就出不去了,最后打开自由开火。

原理:没有伺服的遥控门无论如何都不会开启,武警和守卫能够跨门开枪,无论是否疲劳都会开枪阻止犯人,武警人多弥补了换弹时间,基本上平均下来是个机枪哨塔的连续杀伤。

我的20人满级小队走不到一半就全灭了,因为玩家在前面冲-死-切换到后面的玩家-往前冲一点-死

你想撸门?基本不可能,除非20人同时撸一个,然而电脑控制的队友有多坑你懂的。

你想卡墙角?内部的守卫和警犬饲养员不装备电击枪你去哪拿远程武器?

你是满级?属性全是近战肉搏,你难道能把警犬丢出去砸开门?

出于对死宅武警的人道,你可以在这个区域里建个员工休息室……

监狱建筑师极难逃脱监狱建筑方法

武警防脱逃区后加多道遥控门更佳,配合武警防脱逃区右墙上安装遥控门(实际上是射击口),可以在拦住囚犯一段时间,让他们好好尝尝霰弹的滋味。另外你可以像我一样把犯人接待处划在右边2x4的区域里。

监狱建筑师极难逃脱监狱建筑方法

建议在每个牢房区域部署守卫或者警犬,中心区域也部署一些。犯人进入地道被牢房区域的守卫看见就会发现地道(但是闭路电视监控器居然不能发现)。另外每天晚上用分时巡逻部署警犬进行到每个单间内的巡逻,检查wei禁品和地道(不过我藏在床上每次都没发现233)。

最终效果:

监狱建筑师极难逃脱监狱建筑方法

监狱少年汉化版 监狱少年中文汉化版

监狱少年汉化版,下面就为大家详细讲解监狱少年中文汉化版,希望这篇通关攻略对有在玩这款游戏的小伙伴们有所帮助

监狱少年汉化版 监狱少年中文汉化版

监狱少年汉化版(暂缺)

游戏简介:继爱丽丝的精神裁判 与 四目之神以后推出的剧情推理游戏 第三弹!血与眼泪也好,心脏也罢,将自己的一切都献给祖国吧!时间为大正时代末期,主人公【晓 哲】,目击了机密警察据点之一的【监狱十二层】事件,越接近真相,就越会深陷其中的监狱十二层的黑暗 ,主人公决心将自己铭刻在心的正义奉行到底,并与伙伴共同揭穿真相 。

监狱少年汉化版 监狱少年中文汉化版

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

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,最后终于将其正法,改动只是一行而已。

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

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

监狱

《媚三国》监狱如何招降俘虏?监狱系统解析

《媚三国》是全球首款3D即时操控的战略手机游戏。收集美女武将的玩法,已经成为卡牌爱好者心中的最爱;最重要的,强对推进攻的对战模式,成为产品的一大特色亮点;全3D美术人物、场景界面设计,全面还原给玩家一个三国时期宏大的历史故事。不一样的三国玩法,将带来全新的休闲手游酷爽体验!

今天小编为大家介绍一下监狱系统.

监狱

监狱功能为招降,从而直接为主公获得更多的兵马,实现不花一分钱,招兵买马。

招降分为三种:大义、拷打、美人计,其用意在于降低武将节操,便于玩家更快更省钱的获得良将。

监狱升级后,每次使用招降手段,降低武将的节操会更多,即武将也更容易投降。

监狱往事同类推荐

相关专题

最新专题

即将上线

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

最新资讯

在洛克王国世界中,拥有一款酷炫的双人坐骑是许多玩家的梦想。那么,该如何获取呢?下面就为大家带来详
洛克王国世界双人坐骑怎么获取
2026-03-04 18:34:57
悦动心情套装是和平精英中一款备受玩家喜爱的时尚套装。想要获取它,有以下几种途径。 参与活动获取
和平精英悦动心情套装怎么获取
2026-03-04 18:34:40
在热门游戏燕云十六声中,滹沱猫戏是一个有趣的玩法元素。想要顺利找到滹沱猫戏的位置,需要仔细探索游
燕云十六声滹沱猫戏在哪
2026-03-04 18:34:11
在暗黑破坏神4 s11赛季中,圣骑士凭借其独特的技能组合和强大的生存能力,成为了速刷的热门职业。
暗黑破坏神4S11纯速刷圣骑士怎么构筑
2026-03-04 18:34:08
涅缇娅是即将在《战双帕弥》「更美好的明天」版本上线的S级机体角色,她是免费的S级角色,不用多花黑
战双帕弥什涅缇娅怎么获取
2026-03-04 18:33:09
皮肤爆料|女魃·幻海浮光:告诉我 你想要什么?
一、皮肤灵感 1.背景故事 在浮光海的深处,有一个神秘的藏宝阁,藏宝阁的主人是龙女,她热
皮肤爆料|女魃·幻海浮光:告诉我 你想要什么?
2026-03-04 18:20:00
《300大作战》更新公告 | 3月5日
亲爱的天启城冒险者们: 奥莱科技预计于2026年3月5日08:30-11:30,对相关设施进
《300大作战》更新公告 | 3月5日
2026-03-04 18:19:47
魔法头条丨安居谢礼·活动开启
盗猎者的风波已过, 神奇动物们如今安稳地住在小窝, 霍格沃茨暂归平静。 领袖动物们为感谢你
魔法头条丨安居谢礼·活动开启
2026-03-04 18:15:38
崩坏星穹铁道4.0前瞻有什么兑换码
在崩坏星穹铁道的世界里,每一次更新都带来全新的冒险体验。4.0版本即将来袭,让我们一同期待。在此
崩坏星穹铁道4.0前瞻有什么兑换码
2026-03-04 18:15:05
星绘友晴天作为一款主打社交互动玩法的模拟建造经营游戏。在这款游戏里,玩家能够和自己的好友一起共建
星绘友晴天共建玩法介绍
2026-03-04 18:15:04
《熔炉密林》里面有很多不同的职业,每个职业的装备搭配也是不同的,其中就包括蒜头车,它的推荐装备就
《熔炉密林》蒜头车配装指南
2026-03-04 18:14:56
蚁族大冒险官网在哪下载 最新官方下载安装地址
蚁族大冒险怎么下载?想要比别人更加抢先抢快的玩到这款游戏,那么你获取游戏开测消息是关键,能够获取
蚁族大冒险官网在哪下载 最新官方下载安装地址
2026-03-04 18:14:48
夜幕之下作为一款乙女向二次元的剧情策略游戏,在昨日也是开启了首次测试,游戏中有相当多的角色可以让
夜幕之下爱财君子怎么样 爱财君子角色技能介绍
2026-03-04 18:14:42
仁王3山狗怎么打
在仁王3中,山狗是玩家们在游戏进程中常常会遭遇的难缠对手。掌握其打法攻略,能让玩家在面对山狗时更
仁王3山狗怎么打
2026-03-04 18:14:40
逃离鸭科夫取样空间风暴任务怎么做
在游戏世界中,充满了各种惊险刺激的任务等待玩家去挑战。其中,逃离鸭科夫取样空间风暴任务极具挑战性
逃离鸭科夫取样空间风暴任务怎么做
2026-03-04 18:14:28
最近看到不少兄弟在问,用游客身份玩的《皇室战争》进度丢了怎么办,或者换手机了咋整。这就对了,游客
皇室战争游客怎么转正
2026-03-04 18:14:27
燕云十六声一款开放世界题材的武侠角色扮演类游戏,整个大世界包含了各种不同的道具可以让你来收集,很
燕云十六声碎纹雕弓怎么追溯 碎纹雕弓追溯攻略
2026-03-04 18:14:26
生存33天一款末世生存向的卡牌放置游戏,你能通过培养角色来让战斗更轻松,其中狗牌作为重要的材料很
生存33天狗牌怎么获取 狗牌获取攻略
2026-03-04 18:14:22
生存33天一款末日生存题材的卡牌放置RPG游戏,很多小伙伴在游戏过程中遇到树木挡路,却不清楚应该
生存33天树木挡路怎么办 树木挡路解决方法
2026-03-04 18:14:20
《生化危机9》的疗养院中庭地图中包含文件、浣熊先生与古钱币等物品。下面请看由小编带来的《生化危机
生化危机9疗养院中庭收集 疗养院中庭收集图文指引
2026-03-04 18:14:17
程序需要调用以下重要权限:

t2-t1:22.0

t3-t2:87.0

t4-t3:56.0

t5-t4:4.0

t6-t5:23.0

t7-t6:1.0

t8-t7:160.0

t9-t8:27.0

t10-t9:20.0

t11-t10:16.0

t12-t11:5.0

t13-t12:3.0

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