标签: dead-reckoning

处理网络游戏的延迟问题

我正在考虑制作网络游戏.我对此有点新意,并且已经遇到了很多问题,试图为航位推算和网络延迟制定一个好的计划,所以我很想看到关于这个主题的一些好的文献.我将描述我考虑过的方法.

最初,我只是将玩家的输入发送到服务器,在那里进行模拟,并向所有玩家广播游戏状态的变化.这使作弊变得困难,但是在高延迟下,事情有点难以控制,因为你不会立即看到自己行为的结果.

这篇GamaSutra文章提供了一个解决方案,通过在客户端上进行模拟,可以节省带宽并使本地输入看起来更流畅,但它似乎可以防止窗外作弊.此外,当玩家开始操纵环境,推动岩石之类的时候,我不知道该怎么办.这些先前中立的对象将暂时成为客户端发送PDU所需的对象,或者可能是多个玩家同时执行的对象.谁的PDU会赢?每个玩家何时停止双重跟踪物体(与死亡计算版本进行比较)?天堂禁止两名球员参加相扑比赛(例如开始互相推进).

这个gamedev.net位显示gamasutra解决方案不合适,但描述了一种不能真正修复我的协作巨石推动示例的不同方法.我发现的大多数其他东西都是针对射手的.我希望看到一些更适合像SNES Zelda这样的游戏的东西,但需要更多的物理/动力.

  • 注意:我不是在这里询问物理模拟 - 其他图书馆都有这个.尽管存在网络延迟,但仍然可以使游戏平稳且反应灵敏

networking latency dead-reckoning

28
推荐指数
2
解决办法
9583
查看次数

使用加速度计和陀螺仪计算位移(MPU6050)

我是一名计算机科学专业的学生,​​从事电子项目,需要计算偏航,俯仰,滚动和X,Y,Z位移.我想用一把枪连接IMU并跟踪它的方向和位移.我能够得到Yaw,Pitch和Roll,但遗憾的是无法理解如何计算我的枪的位移或位置.我使用的是包含MPU-6050的10-DOF GY-87传感器.

我得到了g和m/s2格式的值.从我研究过的研究来看,我需要获得加速度/时间2,然后添加所有值.但是我不明白我应该使用什么时差.参考:如何根据手机加速度计算距离

#include "I2Cdev.h"
#include "MPU6050.h"

// Arduino Wire library is required if I2Cdev I2CDEV_ARDUINO_WIRE implementation
// is used in I2Cdev.h
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    #include "Wire.h"
#endif

// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;
//MPU6050 accelgyro(0x69); // <-- use for AD0 high

int16_t ax, ay, az;
float dx, dy, …
Run Code Online (Sandbox Code Playgroud)

position arduino accelerometer dead-reckoning gyroscope

5
推荐指数
2
解决办法
4万
查看次数

Winsock应用中的线性航位推算

我在服务器 - 客户端Winsock游戏中理解我如何实现Dead Reckoning有点困难.

我一直在互联网上寻找一个可靠解释的解释:

  1. 当消息应该从服务器发送到客户端时

  2. 如果客户端没有收到更新消息,它应该如何操作,它是否继续使用预测位置作为当前位置来计算新的预测位置?

我使用的航位推算方法是:

path vector = oldPosition - oldestPosition
delta time = oldTime - oldestTime
delta velocity = path vector / delta time
new delta time = current time / oldest time
new prediction = oldPosition + new delta time * delta velocity
Run Code Online (Sandbox Code Playgroud)

希望这是正确的配方!:)

还应注意连接类型是UDP,并且游戏仅在服务器上播放.服务器将更新消息发送到客户端.

有人可以帮我回答我的问题吗?

谢谢

c++ networking winsock dead-reckoning

4
推荐指数
1
解决办法
3477
查看次数

GeoTools - 如何使用GeoTools类进行航位推算和课程计算

我目前正在使用GeoTools工具包对海洋船只数据进行计算,例如计算两个lon/lat点之间的Great Circle距离.我还有两个需要满足的要求,但我不确定在GeoTools中查找类来进行这些计算.

要求#1: 计算移动船舶的航位推算位置.

输入值:

  • 目前的经度
  • 目前的纬度
  • 当前速度(可以很容易地转换为距离,给定时间'T')
  • 当前课程

预期产量:

  • 在经过时间'T'之后估计经度/纬度位置

要求#2: 计算从位置'A'到位置'B'的路线.

输入值:

  • 经度'A'
  • 纬度'A'
  • 经度'B'
  • 纬度'B'

预期产量:

  • 当然直接从'A'指向'B'

任何人都可以指导我进入能够执行这些计算的GeoTools课程吗?我被GeoTools中的大量课程所震撼,我似乎无法找到我需要做的事情.

java geospatial dead-reckoning latitude-longitude geotools

3
推荐指数
1
解决办法
3007
查看次数