C# 如何在MMO类型的游戏中创建优化的动态网络服务器/客户端?

C# 如何在MMO类型的游戏中创建优化的动态网络服务器/客户端?,c#,unity3d,networking,C#,Unity3d,Networking,我已经在基于服务器/客户端的格式上涉猎了一点网络,并且我已经开始在我的项目中实现一些游戏机制。一切正常,正如预期的那样,但添加任何类型的网络元素都意味着为一个非常简单的机制添加大量代码 例如,对于没有加密或其他任何内容的简单身份验证,我需要来自客户端的CanAuth指令,然后根据当前状态从服务器接受或拒绝该指令,然后如果服务器接受,我需要从客户端到服务器的实际身份验证,这将提供身份验证信息,然后,服务器必须处理并回答客户机,以表明身份验证被拒绝或接受 所有这些都是非常基本的指令,但我这样做的方式

我已经在基于服务器/客户端的格式上涉猎了一点网络,并且我已经开始在我的项目中实现一些游戏机制。一切正常,正如预期的那样,但添加任何类型的网络元素都意味着为一个非常简单的机制添加大量代码

例如,对于没有加密或其他任何内容的简单身份验证,我需要来自客户端的CanAuth指令,然后根据当前状态从服务器接受或拒绝该指令,然后如果服务器接受,我需要从客户端到服务器的实际身份验证,这将提供身份验证信息,然后,服务器必须处理并回答客户机,以表明身份验证被拒绝或接受

所有这些都是非常基本的指令,但我这样做的方式(这可能是问题所在)是,对于每个指令,我需要大约4个类:

  • 客户端上的CanAuth,发送到服务器
  • 服务器上的CanAuth,用于从客户端接收和解释
  • 服务器上的CanAuthAnswer,在处理CanAuth请求后发送到客户端
  • 客户端上的CanAuthAnswer,从服务器接收和解释
除此之外,我还需要检查从客户端的服务器接收到的指令类型,并在服务器上从客户端执行相同的操作,这意味着我需要有一个包含所有指令类型的大型枚举,当我从客户端或服务器接收到消息时,我需要检查它是哪种枚举类型,然后在每个类上使用正确的指令来启动处理部分

基本上,在我的游戏中添加一个非常简单的指令大约需要30分钟。一个游戏机械师可以有3到50条指令,这取决于机械师的复杂程度

我该如何着手进行优化,使一切都变得动态,这样我就不必把一天的大部分时间都花在客户端和服务器上制作指令上了?我确信有更好的方法来处理这件事,但我看不出来


提前感谢您的回答,并为我糟糕的英语道歉。

我的问题被否决的原因是什么?没有足够的细节?不清楚的?不要只是把我的问题弄得晦涩难懂,而要说明原因。我在这里诚恳地寻求帮助,也许你应该添加一些代码,说明如何注册新指令等。第二部分听起来像是数据驱动编程的工作。不要添加
if-else
switch
语句,而应该有一个条件动作对列表。除此之外,元编程如果您知道如何使用它,可能会使这变得简单,就像
[Modifiable]
[Modifies]
[Invokable]
[Invokes]
我的问题被否决的原因一样?没有足够的细节?不清楚的?不要只是把我的问题弄得晦涩难懂,而要说明原因。我在这里诚恳地寻求帮助,也许你应该添加一些代码,说明如何注册新指令等。第二部分听起来像是数据驱动编程的工作。不要添加
if-else
switch
语句,而应该有一个条件动作对列表。除此之外,元编程如果您知道如何使用它,可能会使这变得像
[Modifiable]
[Modifies]
[Invokable]
[Invokes]