自上而下的2d地图:归一化与否?


11

我是游戏编程的绝对初学者,如果这个问题的表述不当,请注意,这不是我身边的草率行为,而是缺乏游戏编程经验。

我计划编写的游戏将使用自上而下的2D地图作为“世界”。世界可能大于窗口(窗口可以放大或缩小),并且车辆可以位于世界的任何位置(=它不是平铺的地图,空间是“连续的”)。

举例说明:如果世界是1000x1000米的地形,则车辆可能位于(327.31,720.4)米的位置。

我的问题是:内部代表世界的最便捷方法什么?我可以考虑以下可能性:

  • 什么也不做,像使用物理对象一样使用仪表
  • 标准化为将世界尺寸定义为代表最大缩放1000米的像素数的像素,
  • 标准化为1,将单词定义为大小为1的正方形

...但是我敢肯定,可能还会有其他一些/我的一些没有意义。仅仅是我的第一场比赛,我对自己面临的问题并没有清晰的认识,我希望获得一些指导,以做出合理正确的初始选择。

感谢您的时间。


我有这个问题。我不会发布答案-那里已经有很多东西了。但是,如果您以任意单位工作,则只需调整单个值即可支持任何分辨率。就游戏性而言,它也更容易处理。最后,随着像素测量等大量数据的出现,物理模拟会爆炸。
共产党鸭子

Answers:


10

我同意使用真实值(米,英尺等)作为距离的基础。您的其他两个建议的问题在于它们都是变量。在世界范围内使用1会导致您所有的算术运算结果都在-1和1之间的浮点数,这可能会导致更多的浮点错误。同样,如果您决定制作可变的世界尺寸(用于较长游戏的“大”世界等),则会在代码中引入许多问题。同样,如果使用像素,即使是在最大/最小缩放级别下,如果决定增大或减小缩放级别,也会遇到困惑和问题。


这个答案非常好(+1)。我特别喜欢您如何解释使用“ 1”表示世界范围的潜在问题。
兰道夫·理查森

如果您要进行任何形式的物理模拟,即使完全虚构,使用定点整数也会导致无效结果。您所要做的只是模拟一辆在对角线上以单位速度行驶的车辆,您将发现无法正确表示其位置。
edA-qa mort-ora-y

3
同意RE:使用仪表。它还将帮助您从心理上可视化和理解事物。“那辆车长5米”或“这两个物体相距500米”,不必一直做心算就可以感觉到自己在做什么。
蒂姆·霍尔特

-1关于整数算术比浮点数更快的说法通常是不正确的,实际上,它们在大多数现代平台上都快得多
Maik Semder 2011年

2
对绝对位置仍然使用定点值可能是一个好主意。这导致了全世界范围内恒定的精度和相同的物理学。
CodesInChaos

7

在您建议的三个选项中,最好使用电表。在创建其他数据时,以米为单位的长度处理将使您的生活变得更加轻松。除其他原因外,您可能决定更改世界大小,或者不同的级别可能需要不同大小的地图。

您可能还决定使用英尺(或英寸)。这个决定的一部分可能取决于您使用哪种中间件软件包-一些物理引擎更喜欢一种或另一种单元类型(尽管它几乎总是可配置的)。在大多数情况下,您可以选择一个单位并随身携带。


5

归一化为“ 1”确实不是可行的方法(如果您有一个不正方形的世界?或者几个大小不同的世界……)。

使用像素作为像素。永远不要混淆游戏玩法和图形手段!不要将自己锁起来,这样就可以在无需更改代码的情况下更改图形。

因此,米(英尺或您最喜欢的任何测量)是必经之路。您将编码导弹发射器以50 km / h的速度运动要比0.00076单位/秒的感觉好得多...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.