您好我已经用Java编写了一个多人游戏,我想知道我需要学习什么和/或我应该使用什么才能让游戏通过网络或多台计算机在互联网上播放。我真的很无知从哪里开始所以任何建议都会有所帮助,谢谢。
答案 0 :(得分:46)
答案 1 :(得分:2)
一种可能的架构方法是让一个游戏实例充当主机(例如,第一个启动)。它将协调游戏并发送游戏状态的信息并转向其他每个玩家。
当玩家进行移动时,它会将移动信息发送给主机,这将更新游戏的状态(并检查移动的有效性等)。然后,它会将新游戏状态发送给每个玩家,并且还会(可能作为单独的通信)向适当的客户发送下一轮的通知并等待其响应。
在某种意义上,主机在这种情况下充当游戏服务器,但可能更容易使用/播放,因为没有必须运行的单独进程才能玩游戏。
答案 2 :(得分:1)
如果您想通过网络添加多人游戏功能,可能需要查看Netty project来构建通信基础架构。
但在你能做到这一点之前,你需要确保你的游戏拥有正确的“架构”。您需要拥有大型模块:客户端和服务器。
服务器负责所有游戏逻辑。从某种意义上说,它是游戏引擎。客户负责向服务器查询游戏状态,将其显示给播放器,获取播放器输入并向服务器发送命令。
在没有学习网络编程的麻烦的情况下解耦我们的客户端和服务器代码的一种方法是从CLI运行两个不同的程序。执行顺序可以是这样的:
冲洗并重复。这基本上就是PBEM服务器所做的事情。
为了帮助解耦客户端和服务器,定义一个“语言”来表示游戏状态的变化以及服务器要执行的命令是有意义的。如果客户端缓存状态并应用从服务器发送的更改,则会有所帮助。
一旦您的客户端和服务器代码完全解耦,并且“语言”已完全定义,您就可以将通信机制从基于文件的更改为基于套接字。