Art of Roads in Games
道路:从贝塞尔曲线到理想城市建设 (Dào lù: Cóng Béisè Qūxiàn dào Lǐxiǎng Chéngshì Jiànshè)
这篇文章探讨了城市建设游戏中道路设计的演变,以及作者为了追求更真实的道路模拟而进行的探索。作者从童年时玩SimCity 2000的经历开始,对道路的复杂性和美感产生浓厚兴趣,并逐渐观察到现实世界中道路的精妙设计。
城市建设游戏中的道路演变 (Chéngshì Jiànshè Yóuxì Zhōng de Dàolù Yǎnbiàn)
早期游戏如SimCity 2000侧重于道路的基本功能,而后续作品不断改进道路设计,例如SimCity 4增加了地形和对角线道路,SimCity 2013引入了曲线道路,Cities: Skylines则提供了更大的自由度,允许玩家自由放置道路和构建复杂的立交桥。然而,这些游戏中的道路仍然存在不真实的问题,例如匝道的锐角或弯曲。
贝塞尔曲线的局限性 (Béisè Qūxiàn de Jūxiànxìng)
作者发现,许多游戏使用贝塞尔曲线来生成道路,这是一种优雅且强大的曲线插值方法。然而,贝塞尔曲线存在一个关键缺陷:它无法保持形状和曲率偏移。这意味着当道路弯曲时,内侧和外侧的曲线速度不同,导致几何图形扭曲或自相交。作者用一个例子说明了贝塞尔曲线在极端弯曲情况下的失败。
幼儿园数学:圆弧的优势 (Yòu'éryuán Shùxué: Yuán Hú de Yōushì)
为了解决这个问题,作者转向了更基础的几何形状——圆。圆弧具有保持平行性的特性,无论如何偏移,结果仍然是完美的平行弧线。这不仅解决了贝塞尔曲线的形状问题,还能简化道路交叉口的计算,因为圆弧之间的交点计算比贝塞尔曲线要简单得多。
过渡曲线:舒适的骑行体验 (Guòdù Qūxiàn: Shūshì de Qíxíng Tǐyàn)
尽管圆弧很棒,但它们也有缺点:它们的曲率是恒定的,这会导致车辆进入弯道时产生突发性的侧向力。为了解决这个问题,工程师们使用过渡曲线,其中最著名的是类环线 (Clothoid)。类环线逐渐增加曲率,从而提供更平稳、更舒适的行驶体验。虽然类环线在数学上更复杂,但对于城市街道上的低速行驶来说,圆弧已经足够理想。
作者的道路系统构建动机 (Zuòzhě de Dàolù Xìtǒng Gòujiàn Dòngjī)
作者构建自己的道路系统,主要出于以下两个原因:一是出于好奇心,想自己实现更真实的道路模拟;二是现有的教程和资源质量较低,作者希望提供一个更好的解决方案,供其他城市建设游戏开发者使用。作者计划在后续文章中分享具体的实现细节。
(Translation Notes: The article is heavily technical in parts, so I've tried to maintain accuracy while keeping the summary concise. Terms like "Bezier Spline" and "Clothoid" are kept in their original form as they are standard technical terms.)