私はマルチプレイヤーで小さなゲームを構築しています.私の問題は、弾丸を送るときに約80の量を超えると遅延があることです.
私はUDPタイプ、サーバーへの接続コードを使用しています:
udp = socket.udp()
udp:settimeout(0)
udp:setpeername(address, port)
サーバーへの弾丸の私の udp:send:
udp:send('%S03'..startX..','..startY..','..bulletAngleX..','..bulletAngleY)
サーバー: 弾丸を取得し、残りのクライアントに送り返します:
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 座標の更新は、クライアントがブレット x、y を取得したときに発生し、最初の位置からの距離が 300 ピクセルを超えたときにブレットを削除します。
しかし、私の問題は、撮影中にラグがあることです..