我想知道Half-Life 2多人协议如何在类似Counter-Strike:Source或Day Of Defeat:Source的mod中工作。我相信他们使用某种混淆和专有压缩算法。我想知道在一个数据包中不同种类的消息是如何编码的。Half-Life 2多人协议如何工作?
回答
半条命2,反恐精英:来源等全部使用Valve Source Engine。阀具有developer wiki其中涵盖了很多东西(它很酷检查出来!)...
这些文章你可能感兴趣的:
Latency Compensating Methods in Client/Server In-game Protocol, Design and Optimization
这是一个非常复杂的问题,我的建议是看一些开源的网络游戏引擎:
- http://www.hawksoft.com/hawknl/
- http://www.zoidcom.com/
- http://sourceforge.net/projects/opentnl
- http://www.gillius.org/gne/
你也可以看看源代码用于原始半衰期引擎所基于的地震系列的代码。
专注于地震引擎的分支机构 - 有些结束了与Half-Life的兼容性。像FTEQuakeWorld或TomazQuake等发动机可能是很好的起飞点。 – 2009-07-27 20:57:53
@A。 Scagnelli,The Source引擎(Half-Life 2的引擎)不是基于Quake引擎。所以虽然这对学习基本的客户端服务器概念很有用,但它不会给你确切的代码。 – 2009-07-29 12:00:20
没有什么会给你确切的代码,除了授权发动机。源引擎确实在Quake Engine中有根。 – Aistina 2009-08-03 12:00:43
尽管细节可能会有所不同,总体框架非常古老。下面是一个快速概览:
在早期的fps游戏中,例如Doom和Quake,玩家的位置仅在服务器对您的移动命令的响应中更新。也就是说,您按下了前进按钮,客户端将其传达给服务器,服务器将您的位置放在内存上,然后用您的新位置向客户端传递新的游戏状态。这导致了非常迟缓的表现:射击,甚至在狭窄的走廊中移动都是一个预测滞后的游戏。
较新的游戏让客户自己处理玩家的拍摄和动作。尽管这导致了无滞后的移动和火灾,但通过黑客入侵客户端代码开启了更多的作弊可能性。现在每个玩家都可以在自己的计算机上独立移动和触发,并与服务器通信他们所做的事情。这只会在两名球员互相碰撞或试图同时上电时崩溃。
现在服务器拥有来自每个玩家的这个客户端状态流,并且必须同步它们并使它们连贯一致。诀窍是衡量每个玩家的延迟。最终目标是能够向侧身移动的敌人发射非常低等待时间的武器(例如狙击步枪或轨道枪)并使其正确击中。如果知道每个玩家的等待时间,假设玩家A(等待时间50ms)在B上发射枪(等待时间60ms)。为了击中目标,必须击中B在60ms前的B,从A在50ms前。
这是一个非常粗略的概述,但应该给你的总体思路。
你应该检查出半条命Luigi Auriemmas papers。你会发现一个数据包解码器和一些反汇编算法。
关于半条命2的逆向工程信息可能很难实现,因为它与作弊有关。我猜想像mpcforum这样的棋盘是你最好的选择。
我建议你看看雷神发动机1-3。它们可用于源代码。半条命的协议可能有点不同,但最有可能接近。
- 1. I2C协议如何工作
- 2. HTTP协议工作
- 3. 网络时间协议如何工作?
- 4. 传输协议如何工作?
- 5. http/ssh协议是如何工作的?
- 6. 简单消息协议如何工作?
- 7. 协议/委托不工作
- 8. NSCopying协议不工作
- 9. 多协议
- 10. 符合多种协议的Casting类型作为单个协议
- 11. 离子2 SOAP协议
- 12. 如果__lt__协议未实现,比较如何工作?
- 13. 如何让ViewController符合多种协议?
- 14. 协议委托不工作有时
- 15. 协议相对URL不工作
- 16. 抛出:NoSuchAlgorithmException:TLSv1.2工作未知协议
- 17. 链接不工作没有http://协议
- 18. openflow协议在哪一层工作?
- 19. 我的协议和代表不工作?
- 20. 协议未找到Android的工作室
- 21. 项目协作工具建议
- 22. 消息CRC协议工作在USB HID
- 23. 笨$ _ POST不工作有了REQUEST_URI协议
- 24. NET.TCP(WCF)协议如何在TCP之上工作?
- 25. 如何使chrome扩展为协议“file:// *”工作?
- 26. 你如何获得File://协议在IE8中工作?
- 27. 什么是sb协议以及内部工作如何?
- 28. 目标C中的协议如何工作?
- 29. 优先级上限协议如何工作
- 30. IPSec密钥交换协议如何工作?
我不相信网络协议在这里是正确的术语,所以我删除了标签。 – 2009-07-29 11:47:14
阅读标签,因为这正是JtR似乎要问的。 – 2009-08-03 11:58:11