我正在写游戏服务器和客户端。服务器生成一个世界,并为各种播放器客户端提供服务。它不是大型多人游戏。
客户端(至少现在)运行一个相当苛刻的软件渲染器,以及进行标准的客户端模拟(然后需要权威服务器批准),因此这方面可用的任何处理可扩展性都是好。
服务器也将是处理器密集型的,并且鉴于项目的性质,随着项目的进展,服务器可能会变得更加紧张。世界是程序性的,其中一些在游戏中发生;根据当时的系统功能(理想情况下运行的外部进程最少),在游戏开始之前设置世界选项。因此,服务器绝对需要硬件线程数量的可扩展性。
同样,由于不是MMO ,玩家都可以访问客户端和服务器,以便他们可以设置自己的服务器。许多玩家只有一台机器可以同时托管服务器,并运行客户端,以便能够与他们的朋友一起玩。基于这个事实,哪个会更好地为我服务?
......为什么?
PS。即使上面的一些复杂性只是稍后才会通过,我需要尽可能早地使架构(在这方面)正确。
答案 0 :(得分:1)
关注点的分离始终是一个重要因素,因此最好将它们作为单独的流程保留。它的性能也更好。如果我只想使用客户端功能,则没有理由将服务器相关代码保留在同一个应用程序中。我只会在需要时启动它。
答案 1 :(得分:1)
我认为帮助您做出决定的最重要方面是 - 是否存在为客户端和服务器共享的任何计算密集型任务?如果你可以为客户端和服务器做一次计算而不是两次,那么有一个进程是有意义的(但这可能很难实现)。否则我说分开吧。
我发现分离过程没有什么优势:
(如果我想出来,我可能会在列表中添加一些东西)