在服务器/客户端程序中放置逻辑的位置

时间:2014-03-06 02:46:13

标签: java xml sockets text

我正在用java创建一个简单的基于文本的多人游戏。

我想要一个服务器程序,它是每个客户端之间所有通信的中心枢纽。

我想知道我应该把大部分逻辑放在哪里?客户?服务器?服务器应该只是一个程序,提供客户端请求的任何信息?或者客户端程序是否应该将命令从用户转发到服务器并让服务器决定从那里做什么。 ?

目前,客户端和服务器套接字都只使用ObjectOutputStream / ObjectInputStream在彼此之间来回发送String“命令”,以确定用户请求的命令。客户端和服务器之间的首选通信方式是什么? XML包含类似sql的语法?

例如: 假设客户端A想要攻击客户端B.目前:我从客户端向服务器发送一个字符串,如下所示

“攻击b 1321”

1321 =客户端B在数据库中的位置。

1 个答案:

答案 0 :(得分:0)

这个问题太宽泛,无法得出明确的答案。话虽如此,任何具有良好黑客技能的不诚实玩家可能会破坏的计算都应该在服务器上进行,或至少在那里进行检查。例如,第一人称射击游戏可能会在客户端上进行所有物理计算,并将每个镜头的结果报告给服务器,以便它可以转发给其他客户端。服务器不必检查客户端说错过的镜头,但是至少需要对客户端所说的点击进行基本的碰撞检测。

当然,应该在服务器上做出关于是否允许玩家获取资源的决定。

我的基本经验法则是尽量让服务器免于不必要的计算,但要做那些需要安全性或服务器上整体即时游戏状态的计算机。