我在想像Counter Sstrike,WoW等使用的方法游戏。在CS中,你通常只有50个ping,有没有办法以这种速度向在线MySQL数据库发送信息?如何像许多游戏一样快速发送信息?
目前我使用这我的程序请求一个在线的PHP脚本,但是这是很慢的,因为程序首先必须发送标题和信息后给它,然后检索结果作为一个普通的网页。
真有必须这样做的任何更容易,更快捷的方式?我听说过TCP/IP,这是我应该在这里使用的吗?通过PHP脚本可以以更快的方式连接到数据库吗?
我在想像Counter Sstrike,WoW等使用的方法游戏。在CS中,你通常只有50个ping,有没有办法以这种速度向在线MySQL数据库发送信息?如何像许多游戏一样快速发送信息?
目前我使用这我的程序请求一个在线的PHP脚本,但是这是很慢的,因为程序首先必须发送标题和信息后给它,然后检索结果作为一个普通的网页。
真有必须这样做的任何更容易,更快捷的方式?我听说过TCP/IP,这是我应该在这里使用的吗?通过PHP脚本可以以更快的方式连接到数据库吗?
TCP/IP是由三个协议:
ICMP是当你ping一个网络上的另一台计算机使用的是什么。
游戏,像反恐精英,不在乎你以前一样。所以没有完整性的要求,能够重建你所做的(这就是为什么竞争对手必须将他们正在做的事情放在一边)。这就是UDP的用途 - 无法保证数据的传送或接收。这就是为什么滞后会成为这样一个问题 - 你已经死了,你只是不知道它。
TCP保证发送和接收数据。比UDP慢。
有许多事情需要注意的有一个快速的连接 - 少啤酒花等
大多数游戏一样,你举的使用UDP这样做的那些(一个在TCP/IP协议的。)由于UDP的重量更轻,因此可以获得更好的性能,并且TCP的可靠性功能不是必需的,因此UDP是通过TCP选择的。
但请记住,这些游戏都有独立的客户端和服务器一般用C或C++。如果您的应用程序是基于浏览器的,并且您尝试通过HTTP执行此操作,那么请使用长期连接并尽可能多地删除标题,包括Cookie。您在那里可能会对Tornado框架感兴趣。你也可能想看看HTML5 WebSockets,但是广泛的支持仍然是一个公平的选择。
如果你的目标基于浏览器的插件,如Flash,Java和Silverlight的,那么你可能能够使用UDP,但我不知道有足够的了解这些平台进行确认。
编辑:
另外值得一提的是:一旦你的网络代码和协议充分优化there are still things you can do改善为玩家提供高坪的经验。
客户端到服务器的延迟关键的东西?使用非阻塞UDP。
对于可靠的东西,可以慢一点,如果使用TCP确保您在非阻塞的方式做到这一点(选择(),非阻塞发送等)。
使用UDP的主要原因是如果你有时间敏感的数据 - 如果一个小动物的位置下降,你最好忽略它并发送下一个位置数据包,而不是重新发送最后一个数据包。
而且我不认为任何高性能游戏都会将每个调用都解析为调用数据库。 (如果甚至使用数据库)偶尔或在重要事件中持续存在数据更为常见。
你不打算在http上实现Counterstrike或类似的东西。
这是标签为c#,但你使用PHP? – jvenema 2010-02-26 03:55:50
我的应用程序使用C#。 – Phoexo 2010-02-26 04:15:39