through the manipulation of connections between transmit point structures.<br>
<br>
The caverns were a group of game zones that were intended to be situated underground.</p><divclass="fullcomment"><divclass="comment cmt"><p>A service that assists routine access to a series of game zones
through the manipulation of connections between transmit point structures.<br>
<br>
The caverns were a group of game zones that were intended to be situated underground.
Access to the caverns was only sometimes possible
through the use of special above-ground warp gates called geowarps (geowarp gates)
and those geowarps were not always functional.
Usually, two caverns were available at a time and connections to these caverns were fixed
to specific active geowarp gates.
The changing availability of the caverns through the change of geowarp gate activity
was colloquially referred to as a "rotation" since it followed a predictable cycle.
The cycle was not just one of time but one of route
as one specific geowarp gates would open to the same destination cavern.<br>
<br>
The client controls warp gate destinations.
The server can only confirm those destinations.
The connectivity of a geowarp gate to a cavern warp gate had to have been determined
by opening the cavern with an appropriate packet
and checking the map description of the cavern gates.
The description text explains which of the geowarp gates in whichever zone has been connected; and,
where usually static and inanimate, that geowarp gate will bubble online and begin to rotate
and have a complementary destination map description.
Opening different combinations of caverns changes the destination these warp gate pairs will connect
and not always being connected at all.
The warp gate pairs for the cavern connections must be re-evaluated for each combination and with each rotation
and all relevant pairings must be defined in advance.</p></div><dlclass="attributes block"><dt>See also</dt><dd><spanclass="cmt"><p><code>ActorContext</code></p></span><spanclass="cmt"><p><code>Building</code></p></span><spanclass="cmt"><p><code>ChatMsg</code></p></span><spanclass="cmt"><p><code>Config.app.game.cavernRotation</code></p></span><spanclass="cmt"><p><code>GalaxyService</code></p></span><spanclass="cmt"><p><code>GalaxyAction.LockedZoneUpdate</code></p></span><spanclass="cmt"><p><code>GalaxyResponse.UnlockedZoneUpdate</code></p></span><spanclass="cmt"><p><code>InterstellarClusterService</code></p></span><spanclass="cmt"><p><code>org.log4s.getLogger</code></p></span><spanclass="cmt"><p><code>resources/zonemaps/lattice.json</code></p></span><spanclass="cmt"><p><code>SessionActor</code></p></span><spanclass="cmt"><p><code>SessionActor.SendResponse</code></p></span><spanclass="cmt"><p><code>StashBuffer</code></p></span><spanclass="cmt"><p><code>WarpGate</code></p></span><spanclass="cmt"><p><code>Zone</code></p></span><spanclass="cmt"><p><code>ZoneForcedCavernConnectionsMessage</code></p></span><spanclass="cmt"><p><code>ZoneInfoMessage</code></p></span></dd></dl></div></li><liclass="indented0 "name="net.psforever.services.GenericEventBus"group="Ungrouped"fullComment="no"data-isabs="false"visbl="pub"><aid="GenericEventBus[A<:net.psforever.services.GenericEventBusMsg]extendsActorEventBuswithSubchannelClassification"class="anchorToMember"></a><aid="GenericEventBus[A<:GenericEventBusMsg]:GenericEventBus[A]"class="anchorToMember"></a><spanclass="permalink"><ahref="../../../net/psforever/services/GenericEventBus.html"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><spanclass="kind">class</span></span><spanclass="symbol"><ahref="GenericEventBus.html"title=""><spanclass="name">GenericEventBus</span></a><spanclass="tparams">[<spanname="A">A <: <ahref="GenericEventBusMsg.html"name="net.psforever.services.GenericEventBusMsg"id="net.psforever.services.GenericEventBusMsg"class="extype">GenericEventBusMsg</a></span>]</span><spanclass="result"> extends <spanname="akka.event.ActorEventBus"class="extype">ActorEventBus</span> with <spanname="akka.event.SubchannelClassification"class="extype">SubchannelClassification</span></span></span></li><liclass="indented0 "name="net.psforever.services.GenericEventBusMsg"group="Ungrouped"fullComment="no"data-isabs="true"visbl="pub"><aid="GenericEventBusMsgextendsAnyRef"class="anchorToMember"></a><aid="GenericEventBusMsg:GenericEventBusMsg"class="anchorToMember"></a><spanclass="permalink"><ahref="../../../net/psforever/services/GenericEventBusMsg.html"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><spanclass="kind">trait</span></span><spanclass="symbol"><ahref="GenericEventBusMsg.html"title=""><spanclass="name">GenericEventBusMsg</span></a><spanclass="result"> extends <spanname="scala.AnyRef"class="extype">AnyRef</span></span></span></li><liclass="indented0 "name="net.psforever.services.InterstellarClusterService"group="Ungrouped"fullComment="no"data-isabs="false"visbl="pub"><aid="InterstellarClusterServiceextendsAbstractBehavior[net.psforever.services.InterstellarClusterService.Command]"class="anchorToMember"></a><aid="InterstellarClusterService:InterstellarClusterService"class="anchorToMember"></a><spanclass="permalink"><ahref="../../../net/psforever/services/InterstellarClusterService.html"title="Permalink"><iclass="material-icons"></i></a></span><spanclass="modifier_kind"><spanclass="modifier"></span><spanclass="kind">class</span></span><spanclass="symbol"><ahref="InterstellarClusterService.html"title=""><spanclass="name">InterstellarClusterService</span></a><spanclass="result"> extends <spanname="akka.actor.typed.scaladsl.AbstractBehavior"class="extype">AbstractBehavior</span>[<ahref="InterstellarClusterService$$Command.html"name="n