UDP中的多人游戏" Chokes"互联网

时间:2015-10-09 09:30:02

标签: c# udp multiplayer lag

我尝试制作有效的PONG游戏,然后将其更改为多人游戏。

您可以选择"游戏速度"这基本上是球可以移动和发送位置数据所需的周期数。

所以每个tick(默认为200)服务器都将其发送到

<?
include 'connectDB.php';
?>
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div>
<div class="modal-body">
    <?php 
    if(!empty($_GET['ItemID']))
    {
        $ID = $_GET['ItemID'];
        echo $ID;

        $query1 = "SELECT * FROM `trademe`.`itemdb` WHERE `itemdb`.`itemID` = $ID;";
        $result1 = mysqli_query($dbconnect, $query1);
        if(mysqli_num_rows($result1) > 0)
        {
            $row1 = mysqli_fetch_assoc($result1);
            echo "
            <table class=\"table-striped\">
            <tr>
            <td class = \"imgBoxCol\">
            <img class=\"imgBox img-rounded imgBox\"src=\"" . $row1['img_path'] . "\"></img>
            </td>
            <td>
            <p >Ad Title: <input name=\"editadTitle\" value=\"" . $row1['adTitle'] . "\"/></p> 
            <p>Item Name:<input name=\"edititemName\" value=\" " . $row1['itemName'] . "\"/> </p>
            <p>Condition:<textarea name=\"editcond\" type=\"text\" >" . $row1['cond'] . "</textarea></p>
            <p>Description:<textarea name=\"editdescription\"  type=\"text\" > " . $row1['description'] . " </textarea></p>
            <p>Method:<input name=\"editmethod\" value=\"" . $row1['method'] . " \"/></p>
            <p>Category:<input name=\"editcategory\" value=\"" . $row1['category'] . " \"/></p>
            </td>
            </tr>

            </table>
            ";
        }
    }?>
</div>
<div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    <button type="button" class="btn btn-primary">Send message</button>
</div>

(当然是在String.Format中)

客户端将其发送到服务器的每个tick:

pos:{0}:{1}&ballpos:{2}:{3}&gametick:{4}

以便将客户端位置与托管播放器同步。

它使用此功能发送消息:

pos:{0}:{1}

现在,当我们玩游戏时,我们以skype为例,skype连接质量非常低,而且非常滞后。 然后游戏变得迟钝。

是否有更有效的方法将数据发送到同步位置?

1 个答案:

答案 0 :(得分:1)

以下是一些提示:

  1. 根据时间发送数据包,而不是循环周期。循环周期很大程度上受PC上其他东西的影响。这使您可以更好地控制更新的频率,并且不会因系统性能而异。 200 微秒快速疯狂。你并不需要那样。
  2. 您的本地网络充斥着数据包并导致瓶颈。
  3. 不经常发送数据包。
  4. 每秒5次是一个很好的数字
  5. 如果更新速度不够快,请执行专业人员的操作。根据过去的更新,插入球的去向。例如,你对方向和速度有所了解,所以做出有根据的猜测!
  6. 更新应该是常规的,确定性的(你知道什么时候会发生)和非易失性(缺少一个不是问题)。 试着降低更新速率,看看会发生什么。