展开讨论

经验与复盘经验摘录 · 机器翻译

我要指出的是,我在我的项目中恢复了AI的确定性

…我要指出的是,我在我的项目中恢复了AI的确定性。- 一个相当隐晦的确定性错误是由于他们的编译器对一些C运行时库例程(特别是fsin/fcos和其他一些例程)的实现导致的,这些例程使用了同名的专用ISA指令。问题在于这些超越函数超出了IEEE 754规范的范围,因此它们是依赖于硬件实现的。实际上,现代的Intel/AMD芯片系列会产生位级相同的結果,但那些在《帝国时代》(Age of Empires,简称AoE)时期的芯片在结果上有一些小的差异(这一点我曾在研究时看到的一个线程中,由一位Intel工程师确认过)。- 游戏使用了一种脏更新(dirty-update)系统来进行渲染,而且其粒度是逐行的。这一点让我非常高兴,因为在这一时期的游戏中,看到这种重要的优化非常罕见(尽管在更早的时期比较常见)- 有一些“有趣”的命名约定,比如用“value”作为成员变量名的前缀——甚至还有一个“valueValue”。…

源讨论1500名弓箭手在28.8: 《帝国时代》及更远的网络编程原帖 180 条评论 · 导入时统计
6

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 6

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

MA

我记得使用过某种资源探索工具,查看驱动AI的脚本。如果我没记错的话,它在更高级别并没有变得更“聪明”,只是每分钟给自己更多的资源,哈哈。

完整原文
IN

一个完全出人意料的问题。你有没有详细接触过同时代的其他RTS游戏,比如《红色警戒2》? 我听说它的源代码很久以前就泄露了,过去二十年一直在流传。虽然大多数人认为EA多年前在工作室关闭和资产被运送到斯德哥尔摩的“DICE”时,就已经丢失了《命令与征服》系列游戏的源代码。

完整原文
LL

每200毫秒发送一次状态更新让我感觉不对劲。90年代大多数工业控制系统都会通过网络进行连续的200毫秒轮询。主要是RS485链路,波特率为9600。 事实上,如果你的网络基础设施是已知的,这样做是完全合理的。如果你有固定的带宽和确定的包大小,你可以进行计算并知道行为会是怎样的。确定性很好!此外,这假设了网络是单一用途的。当时确实是这样!对于90年代的游戏来说是这样!这并不是糟糕的设计,而是当时网络基础设施的优秀设计!

完整原文
AL

> 有一些"有趣"的命名约定,其中一个是将成员变量名前加上"value"--甚至还有一个"valueValue"。总体来说在这一方面的一致性非常少,这是不同团队在不同组件上独立工作的反映。 实际上应该是后缀!比如 objectsValue。

完整原文
MA

你是怎么能够开发这个游戏的?你是受雇来做的吗?你是逆向工程吗?还是源代码泄露了?

完整原文
HO

> 我要指出的是,在我的项目中,我恢复了AI的确定性。 你是OpenAge的作者,还是Voobly?我从未在网上的AoE内部信息中读到过如此详细的资料。感谢你的帖子。 > 实际上,现代的Intel/AMD芯片系列会产生位级相同的結果,但当时AoE时期的芯片在结果上有一些小的差异 这一点小小的验证让我明白了为什么我避免使用AMD处理器。(不是完全认真的)

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。