C# 客户端到客户端通信-阻止用户查看内容
我正在开发一个简单的回合制游戏(有点像棋盘游戏)。我决定为多人游戏实现一个简单的PBEM(通过电子邮件播放)系统。系统使用JSON传输每个玩家的动作 在3名玩家的情况下,系统的工作原理如下:C# 客户端到客户端通信-阻止用户查看内容,c#,json,encryption,aes,multiplayer,C#,Json,Encryption,Aes,Multiplayer,我正在开发一个简单的回合制游戏(有点像棋盘游戏)。我决定为多人游戏实现一个简单的PBEM(通过电子邮件播放)系统。系统使用JSON传输每个玩家的动作 在3名玩家的情况下,系统的工作原理如下: Player1做出动作并将其(作为JSON)发送给player2 玩家2读取JSON,然后附加自己的动作,然后将JSON发送给玩家3 Player3读取JSON,进行自己的移动,然后向player1发送一个新的JSON 我希望我在所有3台玩家电脑上的应用程序都可以打开并读取json,但玩家本身不应该能够
- Player1做出动作并将其(作为JSON)发送给player2
- 玩家2读取JSON,然后附加自己的动作,然后将JSON发送给玩家3
- Player3读取JSON,进行自己的移动,然后向player1发送一个新的JSON
您可以使用PKI(ech播放器将有自己的私钥/私钥对),他们将交换公钥。这样,只有收件人才能解密邮件。我认为PKI基础设施将解决您的问题,但这是一个非常昂贵的解决方案 与其考虑逆向工程,不如考虑访问控制措施。一旦player1向player2发送信息,应用程序应该锁定JSON数据文件。应用程序必须锁定该文件,以便其他程序或用户无法打开该文件进行读写
在这里,我们应该先问用例的问题。没有人能保证内部威胁。你的应用程序真的需要知道整个游戏状态吗?保守秘密的最好方法是在他们需要知道之前不要告诉任何人 例如,每个玩家可以在本地写下他们的游戏状态,然后对其进行散列,并且只与其他玩家共享该回合的散列。之后,他们可以向其他玩家提供完整的游戏状态,以验证他们没有作弊
您使用的技术取决于游戏的工作方式以及您实际需要共享的信息量。P2P通信和安全性并非微不足道。你不能只是建立一个连接并加密它。顺便说一句,HTTPS解决了安全通信问题。JSON根本不起作用。事实上,如果您使用gRPC,您将获得更好的性能。真正的问题是验证玩家身份、播放状态、防止作弊等。几乎所有在线游戏都使用服务器是有原因的。Windows上的DirectX有一个P2P组件,但WAN上的延迟太高了,即使是像《电子商务时代》这样的战略游戏。事实上,P2P和云计算一起发展:当你不能信任服务器,或者不能拥有一个受信任的服务器时,你如何处理数据中心中的通信?如何将eg文件或BLOB的状态分发到所有服务器,并在任何一个服务器随时可能出现故障时恢复正确的数据?通过广域网?可以说
分布式玩家,没有信任,比特币除了20年前所有在线游戏都解决了这个问题。你可以修改游戏规则,这样,如果每个人都看到上一轮的总体统计数据,就不重要了。或者每个对等方只能存储自己的状态,并且只能存储非敏感的总体状态。所有节点都必须验证任何状态更改,以确保没有作弊。无论如何,你都必须处理无序或延迟的操作。为什么不直接使用WCF呢。它有一个P2P特性,更不用说安全性了。你应该描述什么时候应该阅读不同的回合。根据您的描述,刚创建转弯,但从未处理。