level 11
Hero_Jason
楼主
不然我实在想不出为什么能搞出圣物复制,同一个科技能同时研究叠加,同一个可汗能同时在所有TC生成这类奇葩bug
我业余时间也自己做游戏写代码,我的代码里是绝对不会出这种问题的,因为哪怕两件事看起来是同时发生,它在代码逻辑里仍然会分个先后。
比如如果让我来写和尚取圣物的代码,肯定是和尚碰到庙的一瞬间,先检测庙里有圣物没有,必须≥1才能取,取了就-1。第二个和尚来检测的时候,肯定是庙里圣物已经-1完了,怎么还能取出来呢?除非压根不检测。
如果2个和尚一起来取,哪怕真就恰好在同一时间,同一帧发生了,程序上仍然也会一先一后,最终按单位ID,添加到场景的数组序号之类的东西排列,只要第一个和尚取的同时就已经修改了庙的圣物数的属性,第二个和尚还是取不出来的才对。
但帝国4这些bug给我的感觉就是,他这个程序很多东西压根是不按顺序发生,不按顺序检测条件的。第二个和尚取圣物的时候压根就不受第一个和尚取没取的影响。而且,如果是很多和尚紧贴着庙,同时取圣物,能出bug也就罢了,居然隔着不同距离,依次上来的都可以。
水雷的程序员肯定比我这个业余的不知高到哪里去了,也不会连这么简单的条件检测都不会写吧。那感觉唯一合理的解释就是,他们为了多核CPU优化,用了某种多线程的编程技术,让很多逻辑能够同时运行?但因为这种编程太高端了,很多单线程很好解决的事情它不好解决,所以才容易出错……?
2021年12月01日 00点12分
1
我业余时间也自己做游戏写代码,我的代码里是绝对不会出这种问题的,因为哪怕两件事看起来是同时发生,它在代码逻辑里仍然会分个先后。
比如如果让我来写和尚取圣物的代码,肯定是和尚碰到庙的一瞬间,先检测庙里有圣物没有,必须≥1才能取,取了就-1。第二个和尚来检测的时候,肯定是庙里圣物已经-1完了,怎么还能取出来呢?除非压根不检测。
如果2个和尚一起来取,哪怕真就恰好在同一时间,同一帧发生了,程序上仍然也会一先一后,最终按单位ID,添加到场景的数组序号之类的东西排列,只要第一个和尚取的同时就已经修改了庙的圣物数的属性,第二个和尚还是取不出来的才对。
但帝国4这些bug给我的感觉就是,他这个程序很多东西压根是不按顺序发生,不按顺序检测条件的。第二个和尚取圣物的时候压根就不受第一个和尚取没取的影响。而且,如果是很多和尚紧贴着庙,同时取圣物,能出bug也就罢了,居然隔着不同距离,依次上来的都可以。
水雷的程序员肯定比我这个业余的不知高到哪里去了,也不会连这么简单的条件检测都不会写吧。那感觉唯一合理的解释就是,他们为了多核CPU优化,用了某种多线程的编程技术,让很多逻辑能够同时运行?但因为这种编程太高端了,很多单线程很好解决的事情它不好解决,所以才容易出错……?