我建設有多人一個小遊戲,我的問題是,當我發子彈是存在時,它的大約80同時發送大量數據的滯後
我使用UDP類型超過量的滯後,我連接代碼服務器:
udp = socket.udp()
udp:settimeout(0)
udp:setpeername(address, port)
我UDP:子彈發送到服務器:
udp:send('%S03'..startX..','..startY..','..bulletAngleX..','..bulletAngleY)
服務器:Reteveing子彈並將它們發送回客戶端的休息:
elseif code == '%S03' then
local bulleta = string.gmatch(params, "[^,]+")
local sX = tonumber(bulleta())
local sY = tonumber(bulleta())
local dX = tonumber(bulleta())
local dY = tonumber(bulleta())
for i,v in ipairs(clients) do
udp:sendto('%C01'..math.random(120, 200)..','..sX..','..sY..','..dX..','..dY, v['ip'], tonumber(v['port']))
end
end
客戶:讓子彈數據,並在表中創建它們:
elseif code == '%C01' then
local xy = string.gmatch(re, "[^,]+")
local dis = tonumber(xy())
local xStart = tonumber(xy())
local yStart = tonumber(xy())
local xAngle = tonumber(xy())
local yAngle = tonumber(xy())
table.insert(bullets, {distance = dis, sX = xStart, sY = yStart, x = xStart, y = yStart, dx = xAngle, dy = yAngle})
x和子彈Y的cordition的更新在客戶端發生時,他得到的子彈X, y,並在子彈距離距離第一個位置超過300像素時移除子彈。
但我的問題仍然存在,當我拍攝滯後..