长久以来,我一直在思考如何为网格类游戏(比如《异星工厂》或《纪元》系列中建造建筑)添加对角放置的选项。

抛开众多方案不谈,唯一能在最低要求下“勉强”运作的模型是:每个方格都拥有其自身的“子方格”(四个这样的方格之间的夹角会在一个地块内形成一个十字),而对角子方格的边长约为 1/2√2 ≈ 0.7(以标准 1.0 边长为基准)。因此,如果一个建筑在普通网格中占据 2 格宽度,那么在对角网格中,其最接近的尺寸会是 3 个对角方格(3/2√2 ≈ 2.12,比 2 大了约 6%)。但这对于单独占一格的建筑来说效果不佳,因为在这种情况下,它们最接近的尺寸是 0.7 和 1.4,两者都是非常不合适的选项。除此之外,这个方案看起来还挺有前景。

不过据我所知,《纪元117》的开发者最近尝试了这种方法,并遇到了另一个问题:当两个建筑分别宽 2 格和 3 格时,它们可以顺利转换为宽 3 个对角方格(3/2√2 ≈ 2.12 ≈ 2)和宽 4 个对角方格(4/2√2 ≈ 2.8 ≈ 3)。但问题出在将它们组合起来时。在直线网格中,它们是 2 比 3 的关系,而现在变成了 3 比 4。考虑到《纪元》系列游戏中有紧凑规划的要求,很多建筑组合在对角网格中会显得很奇怪。

因此,唯一的选择是在两种网格中选取一个共同度量标准,并使用它。如前所述,最小的公共度量是直线网格的 2 格和对角网格的 3 格(实际尺寸分别为 2.0 和 2.12),这也是我正在考虑的方案(当然,3 格或更大的度量也可以使用)。所以,所有建筑的尺寸在普通网格中应乘以 2 格(例如 2×2、4×6 等),在对角网格中应乘以 3 格(例如 3×3、6×9 等)。同时,还要允许这些建筑按子方格移动(否则很难与对角网格组合)。

然而,问题依然存在。首先,这个网格相当小,因此使用起来已经相当棘手。其次,对角建筑占用的空间更大,它们的角可能会搞乱很多事情(即使像第二张图那样切掉角落),此外,直线建筑可以移动 1 格(即其最小尺寸的 1/2),但对角建筑只能移动其尺寸的 1/3(因为 1 格更小)。因此,玩家更倾向于将布局固定在以某个建筑为中心的更大 2×2 和 3×3 网格上,这样才有可能在两者之间进行转换。

当然,还有其他提升玩家体验的选项,比如允许建筑免费拓宽 1 格以便更好地适配,或者让某些建筑能够沿道路或其他建筑弯曲。道路也应该是 2 格宽,但你可以选择设置 1 格宽的小路,或者允许绘制拐角。总之,在这一点上,我只是在询问。

这值得尝试吗?还是说直接做一个脱离网格的游戏更简单?