我想创建一个国际象棋多人游戏,1个玩家对1个玩家。
我将使用flash动画和客户端以及服务器端语言来检查动作是否正确,将每个玩家动作记录到数据库,决定胜利者并为获胜者提供一些信用。
我的主要编程语言是PHP,我会根据我的指示让某人做flash工作。
我想知道以前是否有人试图这样做,或者你有什么教程,指南,开发p2p游戏时要遵循的步骤?我想有效地做到这一点,并且能够在512 RAM的VDS上支持至少100名玩家。
我打算让游戏像这样工作:
1)在从php
中检索后,初始化flash中的信用,玩家名称等变量2)开始游戏
3)如果我是player2而且player1正在考虑做出决定,那么如果player1做出任何决定,flash客户端将向PHP文件发送请求以检查数据库。如果是这样,轮到我做决定并移动一件
4)当轮到我时,不再向PHP发送任何请求,直到我想移动一块。当我尝试这样做时,它发送一个请求,PHP将检查我的移动是否有效,并返回一些闪存将用于显示错误或将指针移回player1的变量
游戏还将有一个与PHP同步的计时器。每个玩家都可以考虑20秒进行移动。
1)对我的实施有什么建议吗?我正在寻找的是提高效率和减少服务器负载的建议,如果有人对类似项目有任何经验,他们是如何做到的,或者他们将如何做到这一点?
2)我对周期性HTTP请求的实现不是一个好主意,因为我知道服务器可能会过载,我想知道是否有人可以建议任何替代但安全的选项。同时100个用户意味着大约100个HTTP请求/秒。这是VDS可以处理数天的数字吗?
稍后编辑:
在我对这篇文章的回复之后,我得出的结论是,在等待对方玩家的移动时,每秒使用套接字而不是HTTP请求是最好的选择。
我的游戏将有100个桌面可供玩家使用,1个插座用于通信,1个端口用于每个桌面。所以1个插座有100个端口。当游戏开始并发送初始化变量时,PHP将与表通信以闪存表的套接字和端口。
我打算使用flash来监听套接字服务器,看看当对方玩家必须移动时会发生什么。
当我移动时,flash会检查移动是否有效,然后将数据发送到PHP。 PHP将返回OK或NOT,并且还将更新套接字端口上的数据。
关于socket,我不确定javascript是不是一个很好的选择,所以我想到PHP套接字或JAVA套接字。
由于熟悉该语言,PHP套接字似乎是我的第一选择。 我的第二个是租用smartfoxserver,第三个是使用Player.IO的服务。 我打算创造一个非常好的游戏并出售它。图形已经完成,它们看起来很棒。最困难的部分是高效且易于安装。
感谢您的时间!此致
答案 0 :(得分:2)
像这样的游戏的服务器负载应该非常小。如果你正在使用flash,我会利用套接字对象,只需打开一个套接字到你的服务器,这样你就不需要纠缠它有什么变化的问题......它将通知客户/ /如果有什么值得注意的话。 否则你的计划是一个非常好的计划,所以,你可能不得不问一些关于你所困扰的事情的具体问题。
如果您真的想减少服务器负载,请在Flash客户端中写下国际象棋逻辑,并让IT决定是否尝试移动(由玩家)是非法的,或者玩家是否丢失或者是什么......使用服务器严格用于消息中继和数据存储。
答案 1 :(得分:2)
围绕您可用的项目设计项目有时是错误的,例如PHP知识和访问具有512 MB RAM的服务器。有很多项目你应该首先考虑你的资源,但一个独立的,第一次游戏项目不是其中之一。
即使您的主要语言是PHP,您也不应限制自己使用Flash部分。此外,使用Web服务器和数据库作为多人游戏的通信方法将导致一些非常笨重的行为。
您也不受VDS的限制。您可以将Amazon EC2上的微实例用于free一年。如果从头开始设置EC2服务器似乎令人生畏,互联网上有tutorials从开始到结束。
游戏的前端可以用Javascript或Flash AS3编写。有很多游戏开发库可供两者使用。 Flixel,Flashpunk和PushButton是免费的AS3游戏库。 MelonJS是一个Javascript / HTML5游戏库。所有这些都有广泛的文档和良好的社区。 p>
您可以使用node.js编写服务器后端并使用socket.io来处理您的游戏通信,即使您对数据包一无所知 - 或者您可以使用{{3}之类的内容如果你想支付一点钱并让外面的服务为你担心。
如果您正确地编写了后端,那么一百个用户对您的服务器来说就不是问题了。当你成千上万时,你需要开始考虑新的硬件。
由于您正在寻找一般游戏制作建议,因此请开始阅读Player.IO等博客上的文章。你会从其他对游戏充满热情的人那里获得很多关于设计的见解。