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_lengthand/or contributing to an angle less thandiagram_edge_min_acceptable_angle - examining the set of subgraphs
Swith lengthicreated by edge removal and connecting them sequentially and looping over them, connectingS[i]toS[i + 1] - for each edge
AandBthat intersects at a pointj, splitting both edges onjso that there are four edges - calculating edge fuel costs, number of stops, and " junction block cycle " period
- determining
start_node_idanddestination_node_id - constructing and returning a
Trackfrom 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)
| File | Size | Uploaded | |
|---|---|---|---|
| rampanttrackgeneration-0.0.2.0.0.tar.gz | 6.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|