Skip to main content

RampantTrackGeneration is..

.. the Track generation logic for Rampant on the Tracks.

The logic is invoked by calling

@staticmethod
    def generate_track(
        diagram_width: int,
        diagram_height: int,
        num_diagram_regions: int,
        angle_min_quantile: float,
        length_min_quantile: float,
        num_path_nodes_min_quantile: float,
        max_fuel_cost: float, 
        min_cycle_period: int,
        max_cycle_period: int,
        max_length_travel_duration_seconds: int,
        stop_radius: int
    ) -> Track:

in TrackGenerator.

Track

@dataclass(frozen=True)
class Track:
    nodes: dict[uuid4, Point]
    edges: dict[uuid4, EdgeVertexInfo]

    start_node_id: uuid4
    destination_node_id: uuid4

    start_destination_path_edges: tuple[uuid4]
    
    node_info: dict[uuid4, NodeInfo]
    edge_info: dict[uuid4, EdgeInfo]

describes a set of edges, each a connection between two Points. nodes are the Points.

generate_track derives the Track from a randomly generated Voronoi diagram.

It preserves the organic appeal of the diagram's shape - unevenly spaced points connected by edges of varying length - and goes on to enhance that by

  • removing all edges shorter than diagram_edge_min_acceptable_length and/or contributing to an angle less than diagram_edge_min_acceptable_angle
  • examining the set of subgraphs S with length i created by edge removal and connecting them sequentially and looping over them, connecting S[i] to S[i + 1]
  • for each edge A and B that intersects at a point j, splitting both edges on j so that there are four edges
  • calculating edge fuel costs, number of stops, and " junction block cycle " period
  • determining start_node_id and destination_node_id
  • constructing and returning a Track from the information so far

The diagram is generated with Voronout and modeled with rustworkX.

node_info contains further information about nodes

@dataclass(frozen=True)
class NodeInfo:
    num_steps_to_destination: int
    num_seconds_block_cycle: int

for game logic - num_steps_to_destination tells you how many edges away it is from destination_node_id's node, while num_seconds_block_cycle is used in the " junction block cycle " mechanic.

edge_info is likewise for edges

@dataclass(frozen=True)
class EdgeInfo:
    edge_traversal_fuel_cost: float
    edge_traversal_duration: float

    edge_stop_info: tuple[StopInfo]

    edge_image_default_b64: str
    edge_image_focused_b64: str

edge_traversal_fuel_cost is the fuel spent in-game by a Walker traversing the edge - edge_traversal_duration is the time it takes to do so in seconds, used for animation purposes.

edge_image_*_b64 are the edge's graphical representations in its default/focused states, stored in base64. The game converts them into sprites to show on-screen.

@dataclass(frozen=True)
class StopInfo:
    stop_point: Point
    stop_id: uuid4

    stop_fuel: float

stop_fuel is how much fuel a Walker can draw from the stop.

Release files for RampantTrackGeneration 0.0.2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for RampantTrackGeneration 0.0.2.0.0
File Size Uploaded
rampanttrackgeneration-0.0.2.0.0.tar.gz 6.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for RampantTrackGeneration 0.0.2.0.0
File Interpreter ABI Platform
rampanttrackgeneration-0.0.2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.5 MB

Release files / rampanttrackgeneration-0.0.2.0.0.tar.gz

Download URL rampanttrackgeneration-0.0.2.0.0.tar.gz
Size 6.5 MB
Tags Source
SHA-256 checksum
How to use checksums
bcee397738620c89e5b38c40c4a7ab7065ca4a062b88f8d868ea4c27f4479baf
BLAKE2b-256 checksum
How to use checksums
de4a86cc1781e16d3e4e6a89ffb024e42e8cbac9e69bd99953ddb49072ab557a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / rampanttrackgeneration-0.0.2.0.0-py3-none-any.whl

Download URL rampanttrackgeneration-0.0.2.0.0-py3-none-any.whl
Size 20.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8709c0831590e764a2b903e91463fa07c18e290ddbca04b6fd5a61e0e0d5f61
BLAKE2b-256 checksum
How to use checksums
5af064465efb04b4f00dd8d494a10c9327e2b03f7787d53e8a90bf2cd657e015
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page