我正在进行多人游戏,我遇到了同步玩家的问题.
当玩家按下其中一个移动键(W,A,S,D),然后客户端发送关于按下的按钮的数据包,服务器根据按下的键设置速度,并将新的速度发送回所有附近的玩家.
当玩家释放密钥然后客户端发送数据包时,服务器将玩家速度设置为0,0并将位置和速度发送给所有附近的玩家.
所以问题是当我释放钥匙时,大多数时候玩家会跳回来.
我怎么能解决这个问题?
我正在使用socket.io.
客户端:
socket.on('positionEntity', function (data) {
console.log((data.x - entities[data.id].x)+" "+(data.y - entities[data.id].y));
entities[data.id].setPosition(data);
});
$(document).keyup(function(e) {
if (e.keyCode == 87) {
keys.W = false;
socket.emit("stopMove", {dir: 0, time: Date.now()});
}
if (e.keyCode == 65) {
keys.A = false;
socket.emit("stopMove", {dir: 1, time: Date.now()});
}
if (e.keyCode == 83) {
keys.S = false;
socket.emit("stopMove", {dir: 2, time: Date.now()});
}
if (e.keyCode == 68) {
keys.D = false;
socket.emit("stopMove", {dir: 3, time: Date.now()});
}
});
$(document).keydown(function(e) { …Run Code Online (Sandbox Code Playgroud) 我正在制作3D游戏.
游戏需要大约100个立方体才能工作,所有立方体都是动态的.
我真的不知道这样的游戏需要多少性能,但我正在使用带有Mali-400 MP2 GPU,1 GB RAM,1.5 GHz双核的平板电脑进行测试.我知道在一个网格中渲染所有立方体,但是我不能分别移动所有这些立方体.
这个设置给了我一个非常摇摆的fps.跳跃在20到50之间,大多在30以下.(在模拟器10-15中)
当游戏开始时,我构建了一个ModelInstances的arraylist,他们都使用相同的模型.
model = new ModelBuilder().createBox(1f, 1f, 1f, new Material(ColorAttribute.createDiffuse(Color.GREEN)), Usage.Position | Usage.Normal);
// width,height,length = 5, creating a total of 125 cubes
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
for (int z = 0; z < length; z++) {
if (this.map[x][y][z] > 0) {
this.modelInstances.add(instance = new ModelInstance(model));
instance.transform.translate(x, -(y * 1.5f), -z);
}
} …Run Code Online (Sandbox Code Playgroud)