2012-02-01 275 views
0

我想制作一个棋牌多人游戏,1人对1人游戏。多人游戏玩家2人游戏

我将使用动画和客户端和检查,如果这些举措是正确的,记录每个玩家动作到一个数据库,决定优胜者并给予一定的学分赢家服务器端语言闪光灯。

我的主要编程语言是PHP,我会根据我的指示让别人做Flash工作。

我想知道是否有人尝试过这样做,或者如果您有任何教程,指导,要遵循的步骤开发P2P游戏的时候?我希望能够有效地做到这一点,并且能够在具有512个RAM的VDS上支持至少100个玩家。

我打算让游戏的工作是这样的:

1)初始化像学分变量,Flash客户端的内线球员的名字,从PHP

2)检索它们后启动游戏

3)如果我是player2并且player1正在考虑做出决定,则flash客户端会向PHP文件发送请求以检查数据库,如果player1做出任何决定。如果是这样,这将是轮到我做了决定,移动一块

4)当我的轮到,不再要求再发送到PHP,直到我想移动的一块。当我尝试这样做时,它会发送一个请求,PHP会检查我的移动是否有效,并返回一些闪烁将用于显示错误或将指针移回播放器1的变量。

游戏还会有一个计时器这将与PHP同步。每个玩家可以认为20秒做出移动。

1)对于我的实现有什么建议吗?我在寻找什么样的建议来提高效率并减少服务器负载,并且如果有人对类似项目有过任何经验,他们是如何做的,或者他们会怎么做它呢?

2)我的实现周期性的HTTP请求的心不是一个好主意,因为我知道,服务器可以变成过载,我想知道,如果有人能提出任何替代方案,但安全的选项。同时100个用户将意味着大约100个HTTP请求/秒。这是VDS可以处理好几天的数字吗?


后来编辑:

,我对这个职位得到的答复后,我在等待转会时来到的是使用套接字而不是HTTP请求的每一秒会是最好的主意,用的结论在对面的球员。

我的游戏将有100张桌子供玩家使用,每个桌子有1个通讯插座和1个端口。所以1个100端口的插座。当游戏开始并发送初始化变量时,PHP将通信以刷新表的套接字和端口。

我打算使用闪存来侦听套接字服务器,看看对方玩家必须移动时会发生什么。

当我移动时,Flash会检查移动是否有效,然后将数据发送到PHP。 PHP将返回OK或NOT,并且还将更新套接字端口上的数据。

关于套接字,林不知道JavaScript将是一个很好的选择,所以我想着PHP套接字或JAVA套接字。

由于熟悉该语言,PHP套接字似乎是我的第一选择。 我的第二个将租用smartfoxserver,我的第三个将使用Player.IO的服务。 我打算创建一个非常好的游戏并出售它。图形已经完成,他们看起来很棒。最难的部分就是高效并且容易安装。


谢谢你的时间!问候

+5

'我想知道是否有人试图这样做'试图创建一个国际象棋游戏? – 2012-02-01 01:43:22

+0

是的,但我给了我的项目更大的描述 – NVG 2012-02-01 01:51:24

+0

游戏必须是安全的,并与服务器通信,这将检查是否每一个举动是正确的,更多。 – NVG 2012-02-01 01:57:39

回答

2

像这样的游戏的服务器负载应该是非常小的。如果你使用flash,我会利用套接字对象,并打开一个套接字到你的服务器,这样你就不需要纠缠于什么已经改变的问题......它会在/如果值得注意的话。 否则你的计划是一个很好的计划,所以,你可能不得不问一些关于你被困住的事情的具体问题。

如果您真的想减少服务器负载,请在闪存客户端写下国际象棋逻辑,并让IT人员决定尝试移动(由玩家进行)是否非法,或者玩家是否丢失或使用了服务器严格用于消息中继和数据存储。

+0

嗨,游戏逻辑将被写入闪存和服务器。我无法相信任何来自闪存的数据。任何人都可以模拟我的客户端,或反编译它并发送恶意数据。套接字似乎是解决HTTP请求的问题。 – NVG 2012-02-01 12:16:48

2

根据您的可用性设计项目有时是一个错误,例如PHP知识和对具有512 MB RAM的服务器的访问。有很多项目你应该首先考虑你的资源,但是一个独立的第一次游戏项目不是其中的一个。

即使您的主要语言是PHP,您也不应该自己限制自己在Flash部分上工作。另外,使用网络服务器和数据库作为多人游戏的通信方式会导致一些非常笨拙的行为。

您不受VDS的限制。您可以在Amazon EC2上使用微型实例,为free一年。如果从头开始设置EC2服务器似乎令人望而生畏,那么整个互联网上都有tutorials,可以让您从开始到结束。

游戏的前端可以用Javascript或Flash AS3编写。有很多游戏开发库可用于这两个。 Flixel,FlashpunkPushButton是免费的AS3游戏库。 MelonJS是一个Javascript/HTML5游戏库。他们都有丰富的文档和良好的社区。

可以使用node.js和使用socket.io来处理你的游戏通讯,即使你不知道什么包写服务器后端 - 或者,如果你想付出一点钱,让你可以使用类似Player.IO外部服务部门担心这一点。

如果您正确编写后端,一百个用户将不会成为您的服务器的问题。成千上万的人需要考虑新的硬件。

既然您正在寻找一般游戏制作建议,请开始阅读关于#AltDevBlogADay等博客的文章。你会从其他热衷于游戏的人那里获得很多有关设计的见解。

+0

嗨,你的回复是我正在等待的东西。如果Id仍然使用PHP在开始时发送初始化变量,然后将JAVA用于服务器端和实际的游戏逻辑(计算移动是否有效,决定赢家),并使用JAVA套接字与Flash进行通信玩家移动。这会使应用程序足够强大,我会说。 – NVG 2012-02-01 12:09:04

+0

关于套接字。我的知识是,PHP也可以使用套接字,但我不太了解它们。我知道这是一个愚蠢的问题,但是我必须为每个游戏桌面打开一个套接字吗?并且在游戏开始时使用PHP将套接字传递给闪存? – NVG 2012-02-01 12:19:16

+2

您只需为每个客户端使用一个套接字。客户端应该有一个用于发送和接收的连接对象,您可以使用服务器的地址进行初始化。如果您打算为您的服务器使用PHP套接字,那么您将不会使用像Apache这样的Web服务器来提供该代码 - 您将使用PHP编写自己的服务器。阅读本教程以获取更多信息:http://devzone.zend.com/209/writing-socket-servers-in-php/但是,如果您不熟悉以这种方式使用PHP,我仍然推荐使用node.js 。有很多很棒的教程可用。 – 2012-02-01 19:13:16