标签: multiplayer

Android多人游戏实时游戏,什么是最好的协议/通信?

我想开发一款Android多人实时游戏.但我仍然混淆了沟通的最佳方式.我找到了一些选择:

  1. TCP
  2. UDP
  3. Ajax/Comet/Messaging服务即pubnub.com,beaconpush.com
  4. 推送通知
  5. XMPP
  6. Android Cloud To Device Messaging
  7. Pubsubhubub协议
  8. Smartfoxserver

我只是想知道其他实时游戏是如何做到的?我想知道最常见的做法,并且结果可以接受.

我很感激你的想法.谢谢!

android real-time multiplayer game-engine

5
推荐指数
1
解决办法
4512
查看次数

多人游戏架构

任何人都可以推荐文章,书籍,教程吗?

也许是(文章,书籍,教程)关于多人游戏架构,HTML5网络,JavaScript,WebSockets,Node.js?

html5 multiplayer websocket node.js

5
推荐指数
1
解决办法
5346
查看次数

多人白板竞赛条件

想象一下多人白板,几个人可以同时画画.为了简单起见,我们可以说白板上有一个可以被任何用户移动或删除的对象.没有用户拥有的对象的概念(即允许任何用户操纵任何对象是很重要的...这是一个免费的所有白板)

我的问题是这个......如果两个用户试图同时对该对象做一个不同的动作,即一个删除它,另一个移动它,会发生什么?

现在 - 只是让消息通过,它就完全没了.

一个想法是拥有一个服务器端控件,它可以解析谁拥有对象的控制权,并且在解决冲突之前不允许任何事情发生在客户端.解决冲突可以基于先到先得的原则.

即使这种情况发生得非常快,但是小延迟(~50-300ms)是不可接受的,因为在客户端必须立即进行移动.例如,不要操纵对象,而是想到笔.因为有一个延迟,直到他们已经开始画...不好!

另一个想法是有一个"请求控制"按钮,它要求服务器端扩展控制....与以前相同的想法,但现在他们不会因笔画的初始延迟而感到沮丧.这也不是那么好,因为他们必须按下那个按钮,直到他们可以做任何事情,而这个白板真的是给孩子们的......

还有其他方法吗?:)

c# flash multiplayer actionscript-3

5
推荐指数
1
解决办法
563
查看次数

TCP与UDP - 使用两者产生的问题

当我学习各种技术时,我经常会想到我经常使用的应用程序如何实现这些东西.我和一些FPS一起玩了几个MMO.我做了一些环顾四周,发生在这个线程上:

http://www.gamedev.net/topic/319003-mmorpg-and-the-ol-udp-vs-tcp

我一直看到,当允许丢失一些数据包时UDP会闪耀.涉及的开销更少,更新更快.在环顾四周并阅读各种文章和主题之后,我发现通常会使用UDP完成字符定位.像FPS这样的游戏通常会使用UDP完成,因为发生了所有快速变化.

我已经多次看到有人指出同时使用UDP和TCP时可能发生的问题.这些问题可能是什么?新手程序员大多会遇到这些问题吗?在我看来,使用UDP和TCP的组合是理想的,获得每个的优点.但是,如果将两者结合使用会增加代码的大量复杂性以处理所引起的问题,那么在某些情况下可能不值得.

udp network-programming tcp multiplayer

5
推荐指数
1
解决办法
7212
查看次数

JavaScript和处理浮点确定性

我正在寻找使用回滚网络代码构建一个浏览器多人游戏,该网络代码在客户端上运行确定性模拟.在遇到浮点路障之前,我已经在Flash中对网络代码进行了原型设计.

基本上,根据我的理解,Flash中的整数数学是通过将ints转换为Numbers,进行数学运算,然后转换回来完成的int.它显然更快,但这意味着不可能在不同的计算机体系结构中进行确定性数学运算.

在我将所有鸡蛋放入JavaScript篮子之前,我想问几个问题.

  1. JavaScript中所有主流浏览器都有真正的整数运算吗?或者做一些浏览器做Flash事件并转换为浮点数/双精度数来进行数学运算然后再转换回int?

  2. 在不同的计算机体系结构中,是否有类似于BigDecimalBigNum确定数学运算的东西?只要在合理范围内,我不介意一些性能损失.如果没有,是否有一些JavaScript定点库可以解决我的问题?

  3. 这是一个很长的镜头,但是有没有HTML5 2D游戏引擎,它具有像x/y位置和碰撞之类的东西的确定性数学?游戏引擎列表至少可以说是压倒性的.我对从头开始构建一个确定性的跨浏览器兼容引擎感到不安,但这可能就是我必须要做的.

注意:根据响应从HTML5编辑到JS.为我缺乏知识而道歉.

javascript floating-point html5 point multiplayer

5
推荐指数
1
解决办法
811
查看次数

Java libgdx(desktop / android)多人游戏如何

我正在开发一款名为“巫师战争”的游戏。此游戏需要允许2位玩家同时玩,并且需要TCP连接来传达咒语的创建/销毁等,以及UDP连接来处理位置等。它会有一个客户端和一个主机端。话虽这么说,我的程序旨在在Android上运行。我在网上找到的所有教程/信息都针对JApplets或类似的东西。因此,我想从如何建立/使用连接的简短代码示例中获得一些帮助,或者只是指向有关如何建立实际连接的足够有用信息的链接。

java udp tcp multiplayer libgdx

5
推荐指数
1
解决办法
1万
查看次数

为什么要使用像Exit Game的Photon这样的服务器?

我已经完成了我的研究,但是我很难理解为什么有人会想要使用这些类型的服务器(Photon,SmartFox等)来进行游戏编程,因为它们已经提供了像.Net框架这样的东西.

我似乎很难理解使用这些昂贵的服务器之一而不是滚动自己的好处.编码游戏网络的大部分工作都不是你必须做的事情吗?

我想创建一个多人服务器/客户端游戏,但我从StackOverflow的专业人士那里听说像Photon这样的东西不值得付费,因为他可以"在一两天内为他的游戏创造类似的东西".我的用法是一个游戏,既是单人游戏,也是多人游戏COOP(客户端到客户端),如果它的销售情况良好,或者我只为该功能(服务器/客户端架构)获得kickstarter资金,可能是MMO.尽管很可能,我会像Valve那样对游戏进行编程,甚至单人游戏都是服务器/客户端架构,"服务器"位于客户端的离线系统上.

使用Photon比使用C#.Net制作自己的游戏服务器有什么好处?

.net c# networking multiplayer mmo

5
推荐指数
1
解决办法
3302
查看次数

Unity 5.1网络 - 为主机和所有客户端生成一个对象作为子对象

我有一个可以装备多种武器的玩家对象.配备武器时,其变换的父级设置为其手.我已经搞砸了一段时间,并且不能让它对主机和客户端起作用.现在我正在尝试在服务器上装备武器,并告诉所有客户设置他们的父母变换.

public NetworkInstanceId weaponNetId; 

   [Command]
    void Cmd_EquipWeapon()
    {
        var weaponObject = Instantiate (Resources.Load ("Gun"),
                                        hand.position,
                                        Quaternion.Euler (0f, 0f, 0f)) as GameObject;

        weaponObject.transform.parent = hand;

        NetworkServer.Spawn (weaponObject);

        //set equipped weapon
        var weapon = weaponObject.GetComponent<Weapon> () as Weapon;

        weaponNetId = weaponObject.GetComponent<NetworkIdentity> ().netId;
        Rpc_SetParentGameobject (weaponNetId);
    }

    [ClientRpc]
    public void Rpc_SetParentGameobject(NetworkInstanceId netID)
    {   
        weaponNetId = netId;
    }
Run Code Online (Sandbox Code Playgroud)

在更新中,我正在更新武器转换

    void Update () {

    // set child weapon tranform on clients
    if (!isServer) {
        if (weaponNetId.Value != 0 && !armed) {
            GameObject child = NetworkServer.FindLocalObject (weaponNetId); …
Run Code Online (Sandbox Code Playgroud)

network-programming multiplayer unity-game-engine unity-networking

5
推荐指数
2
解决办法
9813
查看次数

配对和斯威夫特

我正在使用Swift,SpriteKit和Firebase进行多人游戏.

这是我第一次使用多人游戏和GameKit,所以我没有得到配对的概念.我读了Apple文档,但老实说它不清楚,它告诉我实时匹配可以做什么,并在objective-c中显示一些代码.

我花了很长时间在swift中搜索配对,我只发现了这个.

我知道每场比赛都是从比赛开始,matchRequest但我不知道该怎么做.

配对如何运作?我应该使用什么方法?有谁知道我在哪里可以找到一个例子?

multiplayer ios firebase sprite-kit swift

5
推荐指数
0
解决办法
263
查看次数

ARCore - 资产改变位置/方向是否有任何事件?

我是使用ARCore和Sceneform for Android(Java)创建AR应用程序的新手.我正在使用云锚构建多人应用程序,其中两个或更多人可以在一个或多个资产上进行交互.当资产改变它的位置时,如何让事件向其他连接用户广播?

这是我的代码:

private AppAnchorState appAnchorState = AppAnchorState.NONE;

private SnackbarHelper snackbarHelper = new SnackbarHelper();

private StorageManager storageManager;

private Socket mSocket;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /******************* Here **************************/
    // connect to socket

    mSocket = new ArSync().onCreate();
    mSocket.connect();
    // listen for change event

    mSocket.on("modelChanged", new Emitter.Listener() {
        @Override
        public void call(final Object... args) {
            MainActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    //TODO: call the application to load reslove by number
                    //textView.setText("Current ID is :" + 
                      args[0].toString()); …
Run Code Online (Sandbox Code Playgroud)

android multiplayer arcore sceneform

5
推荐指数
0
解决办法
254
查看次数