java - 多人回合制游戏架构问题

标签 java mysql webserver multiplayer

<分区>

我正在致力于创建一个 2D 游戏,以学习多人游戏的一些来龙去脉。游戏本身将让两名玩家的军队在战略回合制战斗中相互对抗。我正在将它开发为一个独立的桌面客户端(然后可能最终是一个电话应用程序)。

我正在用 Java 编写游戏并且我不信任客户端,所以我正在考虑安全性。玩家将拥有一个个人帐户,其中包含他们的军队列表和服务器上的内容。此外,我计划使用 mySQL 在服务器上存储此类数据。

不过,我不太确定如何实现它。我是否使用网络服务器之类的东西?这似乎是错误的,但我不知道在客户端不受信任的 Java 前端和后端使用什么技术。请注意,我不是要就最佳方法进行辩论,我只需要了解概念,可能是一些示例技术,也可能是教程链接。

感谢您的帮助!

最佳答案

除非您计划将其作为网页游戏,否则我不认为使用网络服务器是最好的主意。

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

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

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

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

例如,您的协议(protocol)可以包括以下命令: (客户端到服务器)Move(UnitGroup, Point) - 告诉服务器你想将一个组移动到一个点,然后服务器执行计算以确定单元到达并开始将它们移动到那里所需的时间。

(服务器到客户端)PositionUpdated(UnitGroup, Point) - 告诉客户端一个组移动到某处并且可能需要在显示中更新

如果您发布您的协议(protocol),玩家甚至可以让他们自己的客户端随心所欲地观看游戏。您的服务器将通过仅向客户提供他们应该“看到”的内容来保持公平。

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

关于java - 多人回合制游戏架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14699174/

相关文章:

java - 使用字符串数组将字符串转换为不同的字符

java - 插入嵌入式文档而不阅读整个文档 - spring,mongo

java - Hibernate中如何连接多个表?

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column 'id' in 'where clause' Id is null

webserver - Docker替代独立的多主机Web服务器

java - 使用 Amazon Athena 从 S3 读取多个 json 文件

php - 为什么这个 PHP 脚本只返回数字 6?

PHP-如何合并/连接 MySQL 表?

Web 服务器上的 Python 脚本

apache2 未使用 site-available/joomla.conf 中指定的目录