2014-03-06 22 views
0

我正在用java创建一个简单的基于文本的多玩家游戏。将逻辑放置在服务器/客户端程序中的位置

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

我想知道我应该在哪里放置大部分的逻辑?客户?服务器?服务器应该只是一个能够提供客户请求的任何信息的程序?或者客户端程序应该简单地将用户的命令转发给服务器,并让服务器决定从那里执行什么操作。 ?

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

例如: 让我们说客户端A想目前攻击客户端B:我发送一个字符串从客户端看起来像这样

“一,攻击性B 1321”服务器

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

+1

对这个问题的任何答案将是一本关于游戏设计的书。 – Rainbolt

回答

0

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

关于是否允许玩家获取资源的决定应当在服务器上进行。

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

+0

好的,这有助于很多,谢谢! – user3326785

+0

在实际通信方面。一个简单的字节流来回是一个好方法吗? – user3326785

+0

字节,文本,JSON,XML - 只要客户端和服务器可以编码和解码,任何东西都可以工作。我已经成功地使用了其中的每一个。如果您需要节约带宽,请不要使用XML。 –

相关问题