# "绿波"工具

### 介绍

***"绿波"工具现在为您提供了在游戏中将不同路口的信号相位同步为协调走廊的能力。***

例如，在***市中心区域***，经常会出现多条***横向街道***一个接一个地穿过***主要交通轴线***的情况。   
为了仍然能够尽可能优化地***沿着主要交通轴线***引导***交通***通过各个路口，您可以使用此工具将***各个路口组合成组***。

在这些***走廊组***中，可以定义一个***参考路口***，组中的***其他路口***将以此为基准进行***对齐***。

通过为组中的其他***路口***设置"偏移量"，即相对于***参考路口***的***时间延迟***，您可以定义各路口在***参考路口之后***以多大的***时间偏移***切换到第1相位。   
  
经过一些调整和/或良好的规划，您沿走廊的信号灯将在车辆到达之前切换为绿灯（这样错过早期相位周期的车辆可以在新交通到达之前被清空）

---

### 准备绿波

**要使用绿波工具，必须在相应路口使用自定义相位周期，而不是任何预定义选项。**

[![自定义相位](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/rqnf9QbOTwhOFAPS-menu-customphase.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/rqnf9QbOTwhOFAPS-menu-customphase.png)

为了节省工作量，您可以例如复制参考路口的相位周期，并将其粘贴到受绿波影响的路口。

- 如果尚未完成：在下拉菜单中将**相位模式**设置为**"自定义相位"**，并在路口中**创建**所需的**相位**，或从其他路口**复制相位**
- 之后，您就可以点击出现的"**绿波**"按钮了

[![组已创建](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/j2Pis6eQwHqfq5Zu-greenwave-group-created.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/j2Pis6eQwHqfq5Zu-greenwave-group-created.png)

<p class="callout info">**用例演示（示例）** *包括标记的参考路口*</p>

[![参考路口](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/DtQHMMwvF2X4ACn2-greenwave-tutorial-reference.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/DtQHMMwvF2X4ACn2-greenwave-tutorial-reference.png)

<p class="callout info">**算法设计** *（绿波系统架构）*  
  
要实现正常运行的"**绿波**"，每个**相位周期**的**第一相位**（P1）**必须**优先考虑绿波应被引导的交通方向。   
  
**请注意以下事项：**  
  
**整体周期的第一相位**必须是决定绿波方向的相位。系统同步所有路口，使它们在轮到时准备好在正确的时间切换到第1相位。  
  
**整体周期的第二相位**应该是一个"***有用相位***"。这意味着：当各路口的*整体周期持续时间偏差过大*（因为没有很好地对齐）或路口的*相位数量*偏差过大（至少一个路口与其他路口相差≥2个相位）时，*系统*必须使用*最后一个相位*来补偿任何*不平衡*。   
因此，路口的最后一个相位将不时被延长以保持系统同步。为了避免横向街道"饿死"，即压缩其相位长度以便路口能够赶上，我决定在紧急情况下宁可延长最后一个相位并等待路口完成其周期。还有一个快速模式，系统在强制释放时会激活它。  
  
*强制释放在版本 2.2.2 中偶尔会因有时粗暴的干预而被注意到。在即将发布的版本更新中，这些系统也将再次进行调整。然而，在大多数用例中，这应该不会成为问题，并且可以通过您自己的操作来规避。这需要一些调整。*</p>

---

### 创建走廊组

- 现在点击"**新建组**"，随后将创建该组
- 在下拉菜单中选择刚刚创建的组（仍名为"新建组"），和/或重命名它（最好在指定的"组"选项卡中） 
  - 第一个添加的路口在大多数情况下也被视为参考路口。参考路口以偏移量 0s 确定。或者偏移量最低的路口自动成为参考路口。
- 现在添加另一个路口，理想情况下直接添加参考路口之后的路口，然后是下一个——依此类推
- 可以随时通过偏移量设置轻松调整路口的优先顺序 
  - 偏移量计算器可能会给您初步指导，帮助您大致估算需要设置的值。随着城市规模的增大和模拟速度的降低，设置的 12 秒当然不再是精确的 12 秒。在后端，帧被转换为人类可理解的值，然后传输到前端。

[![组选择](https://shelf.zessons.de/uploads/images/gallery/2026-01/bdD2X9t8elcK4jhA-greenwave-group-select.png)](https://shelf.zessons.de/uploads/images/gallery/2025-12/Yl2pjNWrdylUAIil-ox6ivitf5aiusoii-phaseeditor-phaseedit-phase1.png) [![偏移量放大](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/DuybqMQQYjkUb5kM-greenwave-offset-zoom.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/DuybqMQQYjkUb5kM-greenwave-offset-zoom.png) [![第二个路口](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/6uPiPauRlyQFUYoo-greenwave-tutorial-secondjunction.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/6uPiPauRlyQFUYoo-greenwave-tutorial-secondjunction.png)

<p class="callout info align-left">**系统架构和参考逻辑**（总结）  
*为了确保不同路口类型之间的同步性，系统建立了**动态参考控制**。以下逻辑规则适用于稳定运行：*  
  
**- P1 优先：** 周期的第一相位（**P1**）定义"绿波"的方向。系统根据各路口的个别偏移量进行计时，使它们在计算时刻准时初始化第1相位  
  
**- 顺序相位切换：** 对于绿波运行，相位必须按照 TTE 建立的新"顺序模式"切换模式进行切换，因为 TLE 传统模式中的相位切换无法预测，因此无法同步。世界上没有任何地方会以这种方式编程绿波，这里也是如此。要再次使用传统模式，您必须将受影响的路口从相应的走廊组中移除  
  
**- 动态漂移补偿：** 当各路口的整体周期长度不同或相位数量差异显著（差异≥2）时，系统会保护横向交通免于"饿死"。系统不会压缩相位，而是在需要时延长路口周期的**最后一个相位**，以平衡不平衡并等待参考路口的全局节拍  
  
**- 参考锚点（偏移量 0s）：** 偏移量最低（理想情况下为 0s）的路口充当节拍器。所有其他偏移量必须**相对于参考路口**计算——而不是相对于前一个路口</p>

---

### 组面板

[![重命名组](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/vonNsUr9h8XeavBU-greenwave-grouptab-rename.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/vonNsUr9h8XeavBU-greenwave-grouptab-rename.png)

在**"组"**选项卡中，您可以管理走廊的逻辑单元。在这里，您可以在对各个路口进行微调之前定义基本结构。

- **集中管理：** 一键创建新组，重命名以获得更好的概览（例如，按主要交通轴线命名，如"B1 / 波茨坦大街"）或删除不再需要的关联
- **ECS 逻辑：** 系统资源高效运行。由于*实体组件系统（ECS）*架构，没有存储数据的空组不会被自动永久保存。您不必担心"清理"孤立的空组——系统会在后端为您处理
- **状态反馈：** 在面板中，您可以一目了然地看到有多少路口已分配给一个组，以及该组是否已初始化（通过绿点/状态识别）。

> 只有在"路口"选项卡中分配了所需路口**之后**才重命名您的组。这可以简单地防止在对组结构进行复杂更改时出现数据同步的边缘情况

---

### 仪表板

仪表板是您的控制中心。在这里，您可以实时查看您的规划是否在游戏世界中生效。  
  
当您对走廊组进行重大更改时，有时可能会注意到混乱的行为——这取决于各路口之间的差异

- **SYNC 状态：** 如果 **SYNC 图标**显示为绿色，则表示路口已成功锚定在组的全局节拍中。 
  - 如果路口失去同步（例如，由于手动干预或极端的模拟延迟），您会在这里看到**强制释放逻辑**或**快速模式**如何尝试恢复同步。
- **相位进度条：** "相位 X / Y"下方的绿色条准确显示路口处于周期的哪个位置。
  - **重要：** 由于系统有时会在不平衡时**延长最后一个相位**，您会观察到这里的进度条有时会在周期结束时"等待"。这不是错误，而是**动态漂移补偿**在起作用
- **周期差异：** 在这里您还可以看到一次循环的总持续时间（以秒为单位）。确保组内所有路口的这些值尽可能接近（无害：例如屏幕截图中的 476s 与 472s）。差异越大，系统需要的干预就越大

[![仪表板第1部分](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/nWAy6fD5crwYewPT-greenwave-dashboard-pt1.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/nWAy6fD5crwYewPT-greenwave-dashboard-pt1.png) [![仪表板第2部分](https://shelf.zessons.de/uploads/images/gallery/2026-01/scaled-1680-/ifKjv7c77pTrrNMY-greenwave-dashboard-pt2.png)](https://shelf.zessons.de/uploads/images/gallery/2026-01/ifKjv7c77pTrrNMY-greenwave-dashboard-pt2.png)

<p class="callout info align-left">**找到"完美"的偏移量** - 使用仪表板观察实际交通流量。如果您看到车辆到达2号路口，但进度条只在第1相位的10%处，说明您的偏移量太高。目标是当参考路口的车队到达停车线时第1相位开始（进度条开始运行），或者可能更早一点，以考虑之前可能被电车阻挡的绿波。您拥有完全的自由！

**已知问题** - 在创建和设置组时，可能会发生仪表板中所有路口都卡在P1且什么都不做的情况。这确实不好，但您可以绕过它。从受影响的组中移除所有路口，在组不再包含路口时删除该组，创建一个新组，并仅在所需路口已在其中运行时才重命名。之后，无论您进行什么更改，都不应再出现问题。当所有路口的相位周期长度相同时，系统有时可能会遇到边缘情况，在这种情况下应该触发的强制释放逻辑根本不会被调用。</p>