标签: multiplayer

是否有ajax的替代方案,如果没有服务器端修改则不需要轮询?

我正在尝试创建一个基于"ajax"的小型多人游戏.PHP"处理程序"给出了对象的坐标.通过使用ajax,每200MS轮询此handler.php文件.

由于没有必要在没有任何事情发生时进行轮询,我想知道,如果没有频繁的轮询,是否可以做同样的事情?例如.彗星,虽然我听说你需要为Comet配置服务器端应用程序.这是一个共享的网络服务器,所以我不能这样做.

如果不需要在客户端更改任何内容,可能会阻止handler.php文件甚至返回响应,这可能吗?然后,即使事情没有改变,你仍然会让客户无用地要求回复.基本上,如果需要向客户端告知某些内容,它应该只使用带宽和服务器资源,例如.对象坐标的变化.

ajax html5 comet multiplayer

11
推荐指数
4
解决办法
7122
查看次数

确定性浮点和.NET

我如何保证.NET应用程序中的浮点计算(比如在C#中)始终产生相同的位精确结果?特别是在使用不同版本的.NET并在不同平台上运行时(x86 vs x86_64).浮点运算的不准确无关紧要.

在Java中我会使用strictfp.在C/C++和其他低级语言中,这个问题基本上是通过访问FPU/SSE控制寄存器来解决的,但这在.NET中可能是不可能的.

即使控制了FPU控制寄存器,.NET的JIT也会在不同平台上生成不同的代码.在这种情况下,像HotSpot这样的东西会更糟糕......

我为什么需要它?我正在考虑编写一个实时策略(RTS)游戏,它在很大程度上依赖于快速浮点数学和锁定步进模拟.基本上我只会通过网络传输用户输入.这也适用于通过存储用户输入来实现重放的其他游戏.

不是一个选择:

  • 小数(太慢)
  • 固定点值(使用sqrt,sin,cos,tan,atan时太慢和麻烦......)
  • 像FPS一样在网络上更新状态:不能选择发送数百或几千个单位的位置信息

有任何想法吗?

floating-point deterministic multiplayer real-time-strategy

11
推荐指数
1
解决办法
564
查看次数

Web服务器和游戏服务器之间有什么区别?

我想建立一个基于回合制的多人iPhone游戏,它需要一个游戏服务器来连接玩家并传输世界状态数据.我试图了解游戏服务器的工作方式,以便我可以开始设计和构建游戏服务器.到目前为止,我只有构建Web应用程序的经验,所以我自然而然地希望设计游戏服务器以与Web服务器类似的方式工作,但它可以吗?

我过去使用的ASP.NET MVC Web服务器由客户端向服务器发送请求以获取某些网页数据,服务器生成HTML或XML或JSON并将其以HTTP数据包的形式返回给客户端.对于多人游戏来说,这个过程听起来完全相同,除了客户端可能不会请求HTML,但是请求XML或JSON数据是有意义的,对吗?

所以我的问题是......

  1. 可以使用ASP.NET MVC编写游戏服务器,并使用我设计的RESTful API与Web服务器一样工作吗?
  2. 有没有比使用包含XML或JSON数据的HTTP数据包更好的方法来请求和接收游戏数据?从游戏服务器返回的数据很小.
  3. 使用RESTful API从Web服务器访问数据很有意义,但使用RESTful API从游戏服务器请求游戏数据是没有意义的,事实上,听起来它可能会导致安全问题,您的想法?
  4. 最后,任何人都可以推荐任何好的游戏书籍,展示如何构建一个体面的游戏服务器的例子吗?

非常感谢您的帮助!

iphone asp.net-mvc multiplayer

10
推荐指数
2
解决办法
4823
查看次数

处理XNA + lidgren中的延迟

我在XNA 试验lidgren,我遇到了'滞后'的问题.

我已经下载了他们的XNA样本,并注意到他们的样本甚至滞后.问题是,另一方面的运动并不顺畅,我正在尝试在局域网上(实际上在同一台计算机上),而不是在互联网上.

由于与lidgren和XNA的连接滞后,是否有任何相同的问题?

c# xna multiplayer lidgren

10
推荐指数
1
解决办法
6638
查看次数

游戏引擎设计:多人游戏和监听服务器

我的游戏引擎现在包含一个可操作的单人游戏部分.我现在开始考虑如何进行多人游戏.

我发现许多游戏实际上没有真正的单人游戏模式,但是当你独自玩游戏时,你实际上也是在托管一个本地服务器,而且几乎所有游戏都像在多人游戏中一样运行(除了数据包可以通过)通过替代路线以获得更好的性能)

我的引擎需要进行大量重构才能适应这种模式.将有三种可能的模式:专用客户端,专用服务器和客户端服务器(监听模式)

  • 在游戏行业中使用的监听服务器模型多久一次?
  • 它的(dis)优势是什么?
  • 我还有其他选择吗?

c++ networking multiplayer

10
推荐指数
1
解决办法
8045
查看次数

WebSockets性能

我正在考虑实现一个HTML5 mmog,其中涉及快速运行的对象.玩家通过射击不断改变该物体的方向.我想过WebSockets等(socket.io)和画布.

我认为方向改变的计算必须在客户端和服务器端进行,然后同步 - 与服务器是主服务器以避免作弊.

我担心的是,无论服务器的速度有多快,延迟都会导致延迟,从而导致同步失败.

有没有一种解决这个难题的好方法?如何实现这一数据量的实时同步,其中所有信息对于不错过方向变化至关重要.所有玩家都需要毫不拖延地获得移动物体的新方向,以免破坏游戏玩法.

我认为这个问题已经在现有的mmogs中解决了.

有任何想法吗?

html5 canvas multiplayer websocket

10
推荐指数
1
解决办法
3241
查看次数

chrome.socket如何用于广播或多播?

我想创建一个仅用于LAN的Chrome打包应用程序,其中一个实例用作服务器(会话主机),其他实例必须发现服务器并加入会话.这可以用chrome.socket实现吗?

我已经设置了这样的服务器:

var socket = chrome.socket || chrome.experimental.socket;
socket.create('udp', {}, function(createInfo) {
    var publish_socket = createInfo.socketId;
    socket.bind(publish_socket, '225.0.0.42', 42424, function (result) {
        if (result < 0) console.error(result); // this works fine
        socket.recvFrom(publish_socket, null, function(recvFromInfo) {
            console.log(recvFromInfo); // UNABLE TO MAKE THIS HAPPEN
        });
    });
    // Chrome won't let me listen for app window closing
    var cleanup_timer;
    cleanup_timer = setInterval(function(){
            if (requesting_window.closed) {
                socket.destroy(publish_socket);
                clearInterval(cleanup_timer);
            }
        },
        5000
    );
});
Run Code Online (Sandbox Code Playgroud)

套接字是绑定的,我可以在ss -ua:

State      Recv-Q Send-Q      Local Address:Port …
Run Code Online (Sandbox Code Playgroud)

javascript multicast multiplayer broadcast google-chrome-extension

9
推荐指数
1
解决办法
4871
查看次数

Google Play游戏服务多玩家设备定位更改将用户踢出了房间

我正在开发一个只有一个活动的应用程序(扩展BaseGameActivity),并在多个片段之间切换(很像Google的示例代码状态).

我现在正在2台独立的设备上测试一款多人游戏.两个用户都可以成功登录,相互发送消息等.然而,当一个用户旋转他们的设备时,他们就会被踢出房间.

我认为这是有道理的,因为活动正在被破坏和重新创建.但我不明白的是,我们需要做些什么来让用户旋转他们的设备并保持游戏状态(登录,加入房间等)?

  • 一个想法:android:configChanged ="orientation | screenSize" - 但Android不鼓励(出于好的理由,在大多数情况下) - 但这是我们采用Google Play游戏服务与设备方向更改呆在房间里的方式?

  • 如何使用"onRetainNonConfigurationInstance()"来保存GameHelper实例,并在重新创建活动时再次使用它?

  • 或以某种方式在服务中实现游戏连接(登录,房间加入等)?

或者我是否以错误的方式思考这个问题?!感谢您的想法和帮助.如果可能的话,代码示例也将非常受欢迎.

android multiplayer device-orientation google-play-games

9
推荐指数
1
解决办法
3130
查看次数

GameCenter Multiplayer坚持"开始游戏......"

我目前正在开发我的游戏,我决定在游戏中通过GameCenter启用多人游戏,以允许用户玩他们的朋友.我遵循了RayWinderLinch的教程,但遇到了问题.

我的问题是,当我加载GKMatchMakingViewController并点击Play Now两个设备上的大按钮时,它会找到彼此(这意味着发生)并且在设置的游戏中心用户名下会说Ready.

这意味着GameCenter已找到每个玩家,并准备开始它应该的比赛,但在我的情况下,比赛永远不会开始.它停留在一个循环上,说Starting Game...没有任何反应.看来,

func matchmakerViewController(viewController: GKMatchmakerViewController!, didFindMatch theMatch: GKMatch!)

func match(theMatch: GKMatch!, player playerID: String!, didChangeState state: GKPlayerConnectionState)

方法永远不会运行.我完全迷失了正在发生的事情.我已经多次尝试过这个问题来解决问题,但没有任何效果.我将附加一个图像,显示我的问题仍然存在的应用程序的屏幕,我还将附加我正在使用的代码.

我正在使用基于GameKitHelper.h上述提到的教程的框架.它是用swift编写的,叫做 GCHelper

可以使用前面提到的GitHub链接找到GCHelper的代码

我已经删除了这个问题不必要的代码

 class GameScene : SKScene, GameKitHelper, MultiplayerNetworkingProtocol {

     override func didMoveToView () {

          GCHelper().authenticateLocalUser() //Authenticate GameCenter User
          println("\n \n \n Authenticating local user \n \n \n")

     }

      func startMultiplayer () {

           var vc = self.view?.window?.rootViewController
           GameKitHelper().findMatchWithMinPlayers(2, maxPlayers: 2, viewController: vc!, delegate: self); …
Run Code Online (Sandbox Code Playgroud)

multiplayer ios game-center sprite-kit swift

8
推荐指数
1
解决办法
1368
查看次数

Multipeer连接和数据沿途发送

我正在开发一款平台游戏,尝试使用IOS Multipeer连接来制作多人游戏.我陷入困境/困惑/不知道在同伴之间发送消息的最佳方式是什么(大多数是游戏中的4个同伴).游戏风格就像有趣的跑步,我有4个英雄跑步和互相射击和类似的东西.问题在于保持其他球员的位置让我疯狂!有时其他玩家处于错误的位置(请记住所有设备都具有相同的屏幕尺寸).这是因为连接滞后.我每秒可以发送多少信息以及管理数据传输的最佳方式是什么?

任何想法/想法都表示赞赏.

xcode multiplayer ios multipeer-connectivity

8
推荐指数
1
解决办法
1184
查看次数