帆布多人游戏的插座

时间:2014-11-29 14:16:08

标签: javascript php sockets canvas

我的js帆布游戏有问题。项目似乎疯狂的神游戏。 (在谷歌rotmg) 我使用php socket进行通信。当玩家改变时,我发送更新的x和y:

function keysPressed(e) {
    keys[e.keyCode] = true;

    if (socket_open) {
        var msgg = {
            type : 'char_pos',
            px : pixX,
            py : pixY
        };

        websocket.send(JSON.stringify(msgg));
    }
}

服务器部分:

//check for any incomming data
while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
{
    $received_text = unmask($buf); //unmask data
    $msg = json_decode($received_text); //json decode 
    $id=array_search($changed_socket,$clients);


        $pos[$id]['x']=$msg->px;
        $pos[$id]['y']=$msg->py;

    //prepare data to be sent to client
    $response_text = mask(json_encode(array('type'=>'rys_inni', 'id'=>$id, 'pos'=>$pos)));
    send_message($response_text); //send data
    break 2; //exist this loop
}

接下来,当数据回来时我会这样做:

websocket.onmessage = function (ev) {
    var msg = JSON.parse(ev.data);
    var type = msg.type; 

    if (type == 'rys_inni') {
        tab_innych_charow = [];
        for (key in msg.pos)
            if (typeof(msg.pos[key]) !== 'undefined')
                tab_innych_charow.push(msg.pos[key]);

    }
};

这是在间隔:

function rysuj() {

// clear canvas and bckground

    for (i = 0; i < tab_innych_charow.length; i++) {

        var x = tab_innych_charow[i].x; // +...;
        var y = tab_innych_charow[i].y; // +...;

        draw(ctx, something, x, y);
    }
}

问题在于不同玩家的滞后和我的游戏看起来很差。 哪里我搞错了?问题在于php?我读到了关于socket.io但我宁愿使用php,因为我觉得它更容易。在我的模型(狂神的境界)中移动非常快速和平滑。我不知道该怎么做。你是我的最后一次机会。感谢。

0 个答案:

没有答案