首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于多人回合的游戏架构问题

基于多人回合的游戏架构问题
EN

Stack Overflow用户
提问于 2013-02-05 10:26:11
回答 2查看 3.2K关注 0票数 3

我正在开发一款2D游戏,以了解多人游戏的一些细节。游戏本身将使两个玩家的军队在一场基于战略回合的战斗中相互对抗。我正在开发它作为一个独立的桌面客户端(然后可能最终是一个手机应用程序)。

我是用Java编写游戏的,我不信任客户端,所以我考虑到了安全性。玩家将有一个个人账户,里面有他们的军队名单和其他东西,这些东西也会保存在服务器上。此外,我计划使用mySQL在服务器上存储此类数据。

然而,我真的不确定如何实现这一点。我是不是要用网络服务器之类的东西?这似乎是错误的,但我不知道在客户端不受信任的情况下,Java前端和后端应该使用什么技术。请注意,我并不是在寻找关于最佳方法的争论,我只需要知道概念,可能是一些示例技术,也可能是教程的链接。

谢谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 10:36:58

除非你打算把它变成一个浏览器游戏,否则我不认为使用网络服务器会是最好的主意。

套接字可能是您正在寻找的答案,使用套接字,您可以创建自己的不信任客户端的通信协议。

您的服务器将需要使用服务器套接字并接受多个客户端。

您还可以将Swing用于客户端UI。

Here是默认的java套接字教程。

例如,您的协议可能包括以下命令:(客户端到服务器) Move(UnitGroup,点)-告诉服务器您要将组移动到某个点,然后服务器执行计算,以确定设备到达并开始移动到该点所需的时间。

(服务器到客户端) PositionUpdated(UnitGroup,点)-告诉客户端一个组移动到了某个地方,可能需要在显示中进行更新

如果你发布你的协议,玩家甚至可以制作他们自己的客户端来观看他们想要的游戏。您的服务器将保持公平,只向客户端提供他们应该“看到”的东西。

不过,我不知道这会如何影响延迟。

票数 5
EN

Stack Overflow用户

发布于 2013-02-05 11:08:19

在Psetmaj的有用答案中添加一点:

您的游戏客户端和游戏服务器将以一种非常以Java为中心的方式处理您使用的结构(列表等)。您还没有体验到的部分将是弄清楚如何将这些命令和结构打包成TCP或UDP格式传输,然后在另一端将它们解包。这称为“编组”(打包有效负载时)和“解组”(解包后将其转换为Java可以理解的内容)。事实上,它的“困难”部分是它非常单调乏味,并且需要对每一条来回传递的不同消息进行处理。

我的建议是创建一个助手函数库,该函数库负责将您使用的结构转换为它们在网络上发送和接收时的表示形式。这种表示可以是基于文本的,如AJAX或基于二进制的,如Java的RMI,无论您决定尝试哪一个。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14699174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档