Refine game onboarding for an ML-familiar audience

#2
by TiGa-RCE - opened
Files changed (3) hide show
  1. RELEASE_MANIFEST.json +2 -2
  2. help.html +88 -67
  3. index.html +2 -2
RELEASE_MANIFEST.json CHANGED
@@ -62,10 +62,10 @@
62
  "client.js": "0dca9e5b08a974c0f37f9ad5d405b24ff76a011e62b06feb2168860513d52744",
63
  "delivery.py": "6bdba2e87c3e19a41440cb16103695af27105f8bafbae38948bbb1b936ed0c1b",
64
  "gpu_tickets.py": "20928fcf1ca24648809ad8712c929377bdcc8b5e6b4387bfff3503ec5711928b",
65
- "help.html": "c9b2dd4e3bfaa6a7ece921760489ed70ae077af301e57deaa9334b9dd73aecf2",
66
  "hf-auth.js": "3f3938bbc0935e4e9230c094029ef46e03beea74be199887c50e053e03dafcfe",
67
  "hf_identity.py": "913fb1e089af21f376e8359a20cbc838d5bcd7971def6989a4382d53c1127b37",
68
- "index.html": "56202aa8029b23f171c4fa1053c5c22c01be7b61388ac774de8fe22ceb831519",
69
  "native/analysis.patch": "42f79de67cb0734cffb2a7582f5479cab42ab82675884b8b42b9f158d46a98e8",
70
  "native/build-receipt.json": "559a7e4e382f9f7caa1c5ceb566a5a0bbefad2ed3a2e2cf604e31c9c3890c348",
71
  "native/physics-build-receipt.json": "63561c108554a09884cc68a1bfadfb8a3f530a800de0700ff671d99e558609fe",
 
62
  "client.js": "0dca9e5b08a974c0f37f9ad5d405b24ff76a011e62b06feb2168860513d52744",
63
  "delivery.py": "6bdba2e87c3e19a41440cb16103695af27105f8bafbae38948bbb1b936ed0c1b",
64
  "gpu_tickets.py": "20928fcf1ca24648809ad8712c929377bdcc8b5e6b4387bfff3503ec5711928b",
65
+ "help.html": "58959e994a8e4bbd3c70b2a6256cb699ac615cde718c6d0288fabeee909098a2",
66
  "hf-auth.js": "3f3938bbc0935e4e9230c094029ef46e03beea74be199887c50e053e03dafcfe",
67
  "hf_identity.py": "913fb1e089af21f376e8359a20cbc838d5bcd7971def6989a4382d53c1127b37",
68
+ "index.html": "b9a8b6297b0e48d00be6452be040961aa258cb325a238d6d2adda3334d7b32b1",
69
  "native/analysis.patch": "42f79de67cb0734cffb2a7582f5479cab42ab82675884b8b42b9f158d46a98e8",
70
  "native/build-receipt.json": "559a7e4e382f9f7caa1c5ceb566a5a0bbefad2ed3a2e2cf604e31c9c3890c348",
71
  "native/physics-build-receipt.json": "63561c108554a09884cc68a1bfadfb8a3f530a800de0700ff671d99e558609fe",
help.html CHANGED
@@ -6,107 +6,119 @@
6
  <meta name="color-scheme" content="dark light">
7
  <title>AI Learns to Drive — Help</title>
8
  <style>
9
- :root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e8eef6;background:#101923;line-height:1.6}*{box-sizing:border-box}body{margin:0}.wrap{width:min(920px,100% - 32px);margin:0 auto;padding:28px 0 56px}header,.section{background:#172330;border:1px solid #304255;border-radius:14px;padding:22px;margin:0 0 16px}h1,h2{line-height:1.2;margin-top:0}h1{font-size:clamp(1.8rem,5vw,2.6rem);margin-bottom:.45rem}h2{font-size:1.35rem;margin-bottom:.6rem}p,ul,ol{max-width:74ch}a{color:#8dc8ff}a:focus-visible{outline:3px solid #ffd166;outline-offset:3px;border-radius:3px}.eyebrow{color:#a8c9e8;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.lead{font-size:1.08rem}.callout{border-left:4px solid #62c7a5;padding:.65rem 1rem;background:#112b2b;border-radius:0 8px 8px 0}nav ul{display:flex;flex-wrap:wrap;gap:.45rem 1.1rem;padding-left:1.2rem}.steps li{margin:.6rem 0}.pill{display:inline-block;background:#24364a;border-radius:999px;padding:.15rem .55rem;font-size:.9rem}.small{color:#bdc8d5;font-size:.94rem}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#d8e8fb}footer{padding:8px 4px;color:#bdc8d5}@media(max-width:600px){.wrap{width:min(100% - 20px,920px);padding-top:10px}header,.section{padding:16px;border-radius:10px}nav ul{display:block}nav li{margin:.25rem 0}}
10
  </style>
11
  </head>
12
  <body>
13
  <main class="wrap">
14
  <header>
15
- <p class="eyebrow">A bounded simulator experiment</p>
16
- <h1>AI Learns to Drive — Help</h1>
17
- <p class="lead">Choose a track, create or load a driving controller, then train and inspect the result. Cars are simulated behind the scenes; the map previews track layout and terrain, without showing cars driving.</p>
18
- <p class="small">The app’s <strong>Quick start</strong> button opens the short <strong>New here? Start a first run</strong> checklist. <strong>Help &amp; tutorial</strong> keeps this full guide one click away. This guide opens in a new tab, so your run and unsaved choices stay in place. Close this tab to return to the lab.</p>
19
- <p class="callout">You can try the built-in replica tracks and browser network editor without installing the original game. This lab does not reproduce the full game, award official stars, or change game progress.</p>
20
  <nav aria-label="Help topics"><ul>
21
- <li><a href="#first-run">First run</a></li><li><a href="#recipes">Recipes</a></li><li><a href="#batches">Batches</a></li><li><a href="#concepts">Basic ideas</a></li><li><a href="#freeze">Selective freezing</a></li><li><a href="#continue">Continue a winner</a></li><li><a href="#compare">Compare policies</a></li><li><a href="#storage">Files and storage</a></li><li><a href="#limits">Limits and compute</a></li><li><a href="#feedback">Feedback</a></li>
22
  </ul></nav>
23
  </header>
24
 
 
 
 
 
 
 
25
 
26
  <section class="section" id="first-run">
27
- <h2>Start your first run</h2>
28
- <p>You can start with the built-in settings. There is no need to save a recipe or build a batch first.</p>
29
  <ol class="steps">
30
- <li><strong>Choose a track.</strong> On <strong>Run &amp; results</strong>, select a built-in replica or upload a <code>.track</code> file. The <strong>Choose a track</strong> button in Quick start takes you to the track controls.</li>
31
- <li><strong>Create a controller.</strong> Pick a starter car and click <strong>Create starter network</strong>. This creates a small controller in the page without starting training. You can also upload a compatible <code>.evolution</code> file or use <strong>Network editor</strong>.</li>
32
- <li><strong>Review the settings.</strong> Open <strong>Training &amp; recipes</strong>, or use <strong>Review first-run settings</strong> in Quick start. Keep the starter values for a first experiment, or adjust them.</li>
33
- <li><strong>Start training.</strong> Return to <strong>Run &amp; results</strong>. Choose <strong>CPU — no GPU allowance</strong> to run without signing in. Under <strong>Action</strong>, select <strong>Train a population</strong>, then click <strong>Run training</strong>.</li>
34
- <li><strong>Receive the result.</strong> When the run finishes, click <strong>Download result</strong> to receive the controller and reveal winner and challenge details. If connected bucket autosave is on, it handles result delivery for you.</li>
35
  </ol>
36
- <p class="small">The starter uses 32 candidates, 20 generations, and 900 ticks per generation (15 simulated seconds per car per generation), mutation 0.3, decay 0, one parent, and one elite candidate. The reward is distance-only (+100); collision and idle elimination are off. These values are a starting experiment, not a promise of a lap.</p>
37
- <p class="small">To restore these values later, use <strong>Apply first-run settings to this form</strong>. Saved recipes stay as they are. To test an existing controller with unchanged weights, choose <strong>Frozen evaluation · one policy, unchanged weights</strong> under Action, then click <strong>Evaluate policy (weights frozen)</strong>.</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  </section>
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  <section class="section" id="recipes">
42
- <h2>Recipes: save a setup you want to reuse</h2>
43
- <p>A recipe holds training settings, reward choices, and optional selective freezing. It does not contain a track, network, or result. Keep up to ten named recipes in slots <strong>A–J</strong> at the top of <strong>Training &amp; recipes</strong>.</p>
44
  <ol class="steps">
45
- <li><strong>Save a setup.</strong> Adjust the training form, select a recipe slot, and give it a useful name. Click <strong>Save settings to A</strong> (or your chosen slot) to save the current settings in this browser.</li>
46
- <li><strong>Reuse it.</strong> Select a named recipe and click <strong>Apply recipe</strong> to copy its settings into the form. Choosing a slot alone does not apply it. Applying a recipe does not start training.</li>
47
- <li><strong>Check what is saved.</strong> The status shows whether the current form matches the saved recipe or has unsaved changes. Save again when you want to update that recipe.</li>
48
  </ol>
49
- <p><strong>Run training</strong> uses the current form. <strong>Batches use saved recipes</strong>, so save your changes before using them in a batch. Choose the track, starting network, and CPU or GPU on <strong>Run &amp; results</strong>.</p>
50
- <p class="small">Recipe libraries can be exported and imported as JSON. See <a href="#storage">Files and storage</a> for local and optional private-bucket storage.</p>
51
  </section>
52
 
53
-
54
  <section class="section" id="batches">
55
- <h2>Batches: run saved recipes in order</h2>
56
- <p>A batch is an ordered list of saved recipes. Use it when you want several training steps to run in sequence on the track and compute backend selected on <strong>Run &amp; results</strong>.</p>
57
  <ol class="steps">
58
- <li><strong>Save your recipes first.</strong> On <strong>Batches</strong>, choose a batch slot and give the batch a name. Recipe slots and batch slots are separate.</li>
59
- <li><strong>Build the sequence.</strong> Choose a saved recipe and click <strong>Add step</strong>. Use the step controls to move it up or down, duplicate it, or remove it. Repeats are allowed, with up to 20 steps per run. <strong>Advanced sequence</strong> also accepts comma-separated recipe slots, such as <code>A, B, A</code>.</li>
60
- <li><strong>Choose where each step starts.</strong> Check <strong>Use each step’s result to train the next step</strong> to continue from the previous step’s result. Leave it unchecked to start every step from the same original network.</li>
61
- <li><strong>Save, then run.</strong> Click <strong>Save batch</strong> to store the definition. Review the starting network, track, and CPU or GPU on <strong>Run &amp; results</strong>, then click <strong>Run batch</strong> on Batches.</li>
62
  </ol>
63
- <p>For example, you could name recipe A “Explore” and recipe B “Refine”, then run <code>A, B, A</code>. With continuation checked, the network trains through all three steps. Unchecked, each step begins with the original network. These names are examples; the app uses the recipes you saved in those slots.</p>
64
- <p><strong>Save batch and Run batch are separate actions.</strong> Changing a batch’s name, sequence, or continuation option creates an unsaved draft and disables Run batch. Save the draft to use it, or click <strong>Load saved batch</strong> to restore the saved version.</p>
65
- <p class="small">Starting a batch takes a snapshot of its saved recipe settings. Later recipe changes apply to future batch launches. A batch stores recipe references and its continuation choice; it does not save networks, tracks, or results.</p>
66
  </section>
67
 
68
-
69
  <section class="section" id="concepts">
70
- <h2>Basic ideas</h2>
71
- <ul>
72
- <li><strong>Network or controller:</strong> reads its configured sensors and produces vehicle controls. Its vehicle type and output order are part of the file.</li>
73
- <li><strong>Population:</strong> a group of candidate controllers evaluated during training.</li>
74
- <li><strong>Generation:</strong> one round of simulation and selection. Training may mutate or recombine candidates between generations.</li>
75
- <li><strong>Reward:</strong> a weighted choice of measured outcomes the trainer should favor. Reward settings guide selection; they do not change the simulator's physics.</li>
76
- <li><strong>Frozen evaluation:</strong> runs one policy with unchanged weights. It does not train or create a winner population.</li>
77
- <li><strong>Recipe:</strong> a reusable set of training settings and reward choices, saved in this browser by default. <a href="#recipes">Save and apply recipes</a>.</li>
78
- <li><strong>Batch:</strong> an ordered sequence of saved recipes, with a choice to continue from each step’s result or restart from the original network. <a href="#batches">Build a batch</a>.</li>
79
- </ul>
80
  <p>Training measurements and fresh challenge checks are simulator results for reconstructed tracks. A supported challenge check replays the named current network with fixed weights; it does not accumulate stars across runs or evaluate original-game opponent races.</p>
81
  <p>Challenge checks use the selected driving settings, including collision elimination, and the chosen run duration or the track’s longer challenge deadline, capped at 300 simulated seconds. This extra replay may add processing time. A condition that is not met within that replay is not proof that the network could never meet it in a longer run.</p>
 
82
  </section>
83
 
84
-
85
  <section class="section" id="freeze">
86
  <h2>Selective freezing</h2>
87
  <p>On <strong>Training &amp; recipes</strong>, open <strong>Selective freezing</strong> to keep selected parameters at their values in the starting network. Freezing an input holds its outgoing weights; freezing a hidden layer holds its incoming weights and biases; freezing an output holds its incoming weights and bias. The available choices and names come from the selected network. Freeze selections are part of saved recipes and can be edited later. Frozen evaluation runs the selected policy unchanged.</p>
88
  </section>
89
 
90
-
91
- <section class="section" id="continue">
92
- <h2>Continue a winner</h2>
93
- <p>After the result has been received, select a role from <strong>Winner to continue or evaluate</strong>:</p>
94
- <ul>
95
- <li>Click <strong>Continue training</strong> to stage those weights as the next training input and return the form to training mode.</li>
96
- <li>Click <strong>Evaluate unchanged</strong> to stage the same weights for frozen evaluation.</li>
97
- </ul>
98
- <p>Neither choice starts a run. Review the track and settings, then click <strong>Run training</strong> or <strong>Evaluate policy (weights frozen)</strong> to start the selected action. The chosen track is retained unless you change it. The prior run's measurements are not reused as new evidence.</p>
99
- <p>Fitness winner means the best candidate under your chosen reward in the final generation. Fastest lap is the fastest completed forward lap observed during training. A clean-lap winner must meet the configured forward-lap count with zero physical contacts. One controller may fill multiple roles, and a role can be unavailable.</p>
100
- </section>
101
-
102
-
103
- <section class="section" id="compare">
104
- <h2>Compare policies</h2>
105
- <p>Frozen comparison runs selected policies in fresh simulations with their weights unchanged. Use the same track, vehicle, duration, controller frequency, collision and idle settings, and compute backend when you want a direct comparison. The app marks incompatible conditions instead of treating them as equivalent.</p>
106
- <p>Look at lap time, completed laps, contacts, distance, and challenge status together. A short run may end before a lap or challenge deadline. A challenge result is a bounded prediction for the replica track conditions; it is not an original-game award or a Steam leaderboard result.</p>
107
- </section>
108
-
109
-
110
  <section class="section" id="storage">
111
  <h2>Files, privacy, and storage</h2>
112
  <p>Your selected files stay in the browser until you start a run or explicitly save/export them. Processing copies and undelivered results are temporary; results expire within five minutes and are deleted after verified browser receipt by default. The app's cleanup does not establish provider-wide zero-data retention.</p>
@@ -115,15 +127,24 @@
115
  <p>Read the full <a href="/policy" target="_blank" rel="noopener">data policy</a> before using private files or bucket storage.</p>
116
  </section>
117
 
118
-
119
  <section class="section" id="limits">
120
  <h2>Limits and compute</h2>
121
  <p>The worker supports Formula, Rally, Snowmobile, and Truck. Networks support at most 20 inputs, 12 total layers, and 16 neurons per hidden layer. Formula, Rally, and Truck support up to five outputs; Snowmobile supports up to four and cannot use Handbrake. Fresh controllers for every vehicle require Steering and Acceleration; Formula imports retain their supported ordered output subsets.</p>
122
  <p>CPU runs: up to 4,000,000 requested vehicle-ticks in a 25-second native execution window. GPU runs: up to 8,000,000 requested vehicle-ticks in a 45-second native execution window. Both allow up to 1,024 cars, 2,000 generations, fourteen distinct reward metrics, and 32,768 car-generation analysis rows per run. Requested vehicle-ticks are an upper-bound work estimate, not a guarantee of runtime. Results and analysis have separate size limits. These are bounded vanilla-worker limits, not support for arbitrary modified-game networks or full original-game parity.</p>
123
  <p>The public GPU app also provides CPU execution without GPU allowance. GPU runs use HF allowance; optional HF sign-in can associate a request with your account but does not guarantee quota. Sign-in can reload the page, so do it before choosing files if needed.</p>
124
- <p>These are bounded vanilla-worker limits. They do not cover arbitrary modified-game networks or establish full original-game physics parity.</p>
125
  </section>
126
 
 
 
 
 
 
 
 
 
 
 
 
127
 
128
  <section class="section" id="feedback">
129
  <h2>Feedback</h2>
 
6
  <meta name="color-scheme" content="dark light">
7
  <title>AI Learns to Drive — Help</title>
8
  <style>
9
+ :root{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#e8eef6;background:#101923;line-height:1.6}*{box-sizing:border-box}body{margin:0}.wrap{width:min(920px,100% - 32px);margin:0 auto;padding:28px 0 56px}header,.section{background:#172330;border:1px solid #304255;border-radius:14px;padding:22px;margin:0 0 16px}h1,h2{line-height:1.2;margin-top:0}h1{font-size:clamp(1.8rem,5vw,2.6rem);margin-bottom:.45rem}h2{font-size:1.35rem;margin-bottom:.6rem}p,ul,ol{max-width:74ch}a{color:#8dc8ff}a:focus-visible{outline:3px solid #ffd166;outline-offset:3px;border-radius:3px}.eyebrow{color:#a8c9e8;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.lead{font-size:1.08rem}.callout{border-left:4px solid #62c7a5;padding:.65rem 1rem;background:#112b2b;border-radius:0 8px 8px 0}nav ul{display:flex;flex-wrap:wrap;gap:.45rem 1.1rem;padding-left:1.2rem}.steps li{margin:.6rem 0}.pill{display:inline-block;background:#24364a;border-radius:999px;padding:.15rem .55rem;font-size:.9rem}.small{color:#bdc8d5;font-size:.94rem}code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#d8e8fb}footer{padding:8px 4px;color:#bdc8d5}.table-scroll{overflow-x:auto;margin:16px 0}table{width:100%;border-collapse:collapse;text-align:left;font-size:.95rem}caption{text-align:left;font-weight:700;margin-bottom:8px}th,td{padding:10px 12px;border-bottom:1px solid #304255;vertical-align:top}th{color:#d8e8fb}tbody th{width:31%;font-weight:600}section{scroll-margin-top:16px}@media(max-width:600px){.wrap{width:min(100% - 20px,920px);padding-top:10px}header,.section{padding:16px;border-radius:10px}nav ul{display:block}nav li{margin:.25rem 0}}
10
  </style>
11
  </head>
12
  <body>
13
  <main class="wrap">
14
  <header>
15
+ <p class="eyebrow">AI Learns to Drive · Training lab</p>
16
+ <h1>From a first run to a repeatable experiment</h1>
17
+ <p class="lead">A guide to this Space’s driving task, training controls, and results.</p>
18
+ <p class="small">Use <strong>Quick start</strong> in the app for the short checklist; <strong>Help &amp; tutorial</strong> opens this guide. Close this tab to return to your existing run and unsaved choices.</p>
 
19
  <nav aria-label="Help topics"><ul>
20
+ <li><a href="#start-here">Start here</a></li><li><a href="#first-run">First run</a></li><li><a href="#results">Read results</a></li><li><a href="#continue">Next experiment</a></li><li><a href="#compare">Compare</a></li><li><a href="#recipes">Recipes</a></li><li><a href="#batches">Batches</a></li><li><a href="#concepts">Challenge checks</a></li><li><a href="#freeze">Freezing</a></li><li><a href="#storage">Storage</a></li><li><a href="#limits">Limits</a></li><li><a href="#game-reference">Game wiki</a></li>
21
  </ul></nav>
22
  </header>
23
 
24
+ <section class="section" id="start-here">
25
+ <h2>What you are optimizing</h2>
26
+ <p>The task is to drive a vehicle around a track. Your controller maps its configured sensor observations—such as raycast distances and velocity—to controls such as steering, acceleration, and braking. The network file includes the vehicle type, sensors, and output order; changing those changes the policy’s interface.</p>
27
+ <p>Training uses evolutionary search: simulate a population, score candidates, select parents, then generate variations through mutation and optional crossover. The <strong>mutation rate controls the scale of parameter perturbations</strong>; it is not an SGD learning rate. Reward settings determine the selection objective without changing the physics. Game reference: <a href="https://ai-learns-to-drive.fandom.com/wiki/Training_Process" target="_blank" rel="noopener">Training Process</a>.</p>
28
+ <p class="callout">This lab is headless. The map previews the track and terrain; it does not animate the cars. Inspect behavior through reported measurements and fresh evaluations. Built-in tracks are reconstructed replicas, usable without installing the original game. The lab does not award official stars or change game progress.</p>
29
+ </section>
30
 
31
  <section class="section" id="first-run">
32
+ <h2>Run one small baseline</h2>
 
33
  <ol class="steps">
34
+ <li>On <strong>Run &amp; results</strong>, choose <strong>Replica A01 Beginner</strong>. Set <strong>Starter car</strong> to <strong>Formula</strong>, then click <strong>Create starter network</strong>. This creates the small <strong>6-input → 4-hidden-unit → 5-output</strong> controller in the page; training has not started.</li>
35
+ <li>Open <strong>Training &amp; recipes</strong>. Keep the current starter settings below. If you have edited the form, use <strong>Apply first-run settings to this form</strong> to restore them. You do not need to save a recipe first.</li>
36
+ <li>Return to <strong>Run &amp; results</strong>. Choose <strong>CPU — no GPU allowance</strong> to run without signing in, and <strong>Action → Train a population</strong>, then click <strong>Run training</strong>.</li>
37
+ <li>When it finishes, click <strong>Download result</strong>. Read the laps, lap time, and contacts as explained below, and retain the downloaded <code>.evolution</code> as your checkpoint. To keep a different winner, use <strong>Download weights</strong> in that winner’s row.</li>
 
38
  </ol>
39
+ <div class="table-scroll"><table>
40
+ <caption>Current starter settings</caption>
41
+ <tbody>
42
+ <tr><th scope="row">Controller interface</th><td>Speed and five raycast distances in; Steering, Acceleration, Handbrake, Brake, and Boost out</td></tr>
43
+ <tr><th scope="row">Population and generations</th><td>32 candidates × 20 generations</td></tr>
44
+ <tr><th scope="row">Simulation horizon</th><td>900 ticks = 15 simulated seconds per car per generation</td></tr>
45
+ <tr><th scope="row">Mutation and decay</th><td>Mutation 0.3; decay 0; crossover off; one parent; one preserved elite</td></tr>
46
+ <tr><th scope="row">Reward and elimination</th><td>Distance-only (+100 total score); collision and idle elimination off</td></tr>
47
+ <tr><th scope="row">Timing and execution</th><td>60 Hz physics and decisions; one CPU worker</td></tr>
48
+ </tbody></table></div>
49
+ <p class="small">This baseline promises neither a completed lap nor a wall-clock runtime. Connected bucket autosave, if enabled, receives the result automatically. Restoring starter settings changes the form, not saved recipes.</p>
50
+ </section>
51
+
52
+ <section class="section" id="results">
53
+ <h2>Read the result before changing the setup</h2>
54
+ <p>Match a measurement to its policy. The run’s overall best lap may belong to a different candidate from the downloaded final fitness leader.</p>
55
+ <div class="table-scroll"><table>
56
+ <thead><tr><th scope="col">Reported value</th><th scope="col">What it tells you</th></tr></thead>
57
+ <tbody>
58
+ <tr><th scope="row">Selection fitness</th><td>The configured reward score used to rank candidates within their evaluated generation. It is not lap time or a universal score for comparing runs.</td></tr>
59
+ <tr><th scope="row">Forward laps / best lap</th><td>Completed forward laps and the fastest completed lap for that policy. A missing lap time means no completed lap was reported.</td></tr>
60
+ <tr><th scope="row">Physical contacts</th><td>Recorded contacts. A clean-lap winner needs zero contacts and the configured minimum forward-lap count.</td></tr>
61
+ <tr><th scope="row">Distance (simulation units)</th><td>Actual distance traveled by the vehicle. This alone does not establish progress around the course.</td></tr>
62
+ </tbody></table></div>
63
+ <p><strong>Final fitness leader</strong> comes from the final generation. <strong>Fastest completed lap</strong> is selected across training. One controller can fill several winner roles, and a role can be unavailable.</p>
64
+ <p><strong>Reward distinction:</strong> Distance measures progress along the track’s centerline; Actual Distance measures the vehicle’s traveled path, so extra movement can be inefficient. Best Lap Performance needs a completed lap before it can reward a lap time. Distance can provide a signal before the first lap. Game reference: <a href="https://ai-learns-to-drive.fandom.com/wiki/Reward_Functions" target="_blank" rel="noopener">Reward Functions</a>.</p>
65
  </section>
66
 
67
+ <section class="section" id="continue">
68
+ <h2>Choose the next experiment</h2>
69
+ <p>After receiving the result, choose a role under <strong>Winner to continue or evaluate</strong>:</p>
70
+ <ul>
71
+ <li><strong>Continue training</strong> stages that winner’s weights as the next input and selects training mode.</li>
72
+ <li><strong>Evaluate unchanged</strong> stages those weights for a fresh frozen evaluation. It changes no weights and selects no new winners.</li>
73
+ </ul>
74
+ <p>Staging a winner does not start a run. Review the settings, then click <strong>Run training</strong> or <strong>Evaluate policy (weights frozen)</strong>. Built-in track selection is retained; reselect a custom track file if needed. Previous measurements are not reused as new evidence.</p>
75
+ <p>To begin a fresh trial, use <strong>Create starter network</strong> on Run &amp; results. Load a saved <code>.evolution</code> file to return to an earlier checkpoint.</p>
76
+ <p><strong>Next-step hypotheses:</strong> evaluate the saved policy before changing it. If useful progress is cut short, try a longer training horizon within the work limit. Once it completes laps consistently, try smaller mutation perturbations or a revised reward mix. Start with one change and check the outcome; there is no guaranteed best schedule. Game reference: <a href="https://ai-learns-to-drive.fandom.com/wiki/Training_Strategies" target="_blank" rel="noopener">Training Strategies</a>.</p>
77
+ </section>
78
+
79
+ <section class="section" id="compare">
80
+ <h2>Make comparisons interpretable</h2>
81
+ <p>For a controlled training comparison, vary one factor and hold the others constant: starting checkpoint, track, vehicle, horizon, controller frequency, elimination settings, and compute backend. Then evaluate the resulting policies under the same conditions.</p>
82
+ <p>Frozen comparison runs selected policies in fresh simulations with unchanged weights. The app marks incompatible conditions. Compare lap time, completed laps, contacts, and distance together. Compare fitness only when the reward and evaluation conditions match; these selection scores are relative to the evaluated generation. A short horizon may end before a lap or challenge deadline. Success on one track does not establish generalization to another.</p>
83
+ </section>
84
 
85
  <section class="section" id="recipes">
86
+ <h2>Recipes save settings, not models</h2>
87
+ <p>At the top of <strong>Training &amp; recipes</strong>, keep up to ten named recipes in slots <strong>A–J</strong>. Each holds training settings, rewards, and optional selective freezing. Tracks, networks, and results are excluded.</p>
88
  <ol class="steps">
89
+ <li>Adjust the form, choose a slot, and name the recipe. <strong>Save settings to A</strong> (or your chosen slot) stores the current settings in this browser.</li>
90
+ <li>To reuse a saved recipe, select it and click <strong>Apply recipe</strong>. Choosing a slot alone does not apply it; applying does not start training.</li>
91
+ <li>The status shows whether the form matches the saved recipe or has unsaved changes. Save again to update that recipe.</li>
92
  </ol>
93
+ <p><strong>Run training uses the current form; batches use saved recipes.</strong> Save changes before using them in a batch. Track, starting network, and CPU or GPU remain separate choices on <strong>Run &amp; results</strong>. Export/import the recipe library as JSON, or use optional <a href="#storage">private-bucket storage</a>.</p>
 
94
  </section>
95
 
 
96
  <section class="section" id="batches">
97
+ <h2>Batches run saved recipes in order</h2>
98
+ <p>A batch runs up to 20 training steps on the track and backend selected on <strong>Run &amp; results</strong>. Recipe slots and batch slots are separate.</p>
99
  <ol class="steps">
100
+ <li>Save your recipes first. On <strong>Batches</strong>, choose a batch slot and name.</li>
101
+ <li>Select a saved recipe and click <strong>Add step</strong>. Move steps up or down, duplicate, or remove them. Repeats are allowed. <strong>Advanced sequence</strong> edits the same list as comma-separated slots, such as <code>A, B, A</code>.</li>
102
+ <li>Check <strong>Use each step’s result to train the next step</strong> to continue from the previous result. Unchecked, every step starts from the same original network.</li>
103
+ <li>Click <strong>Save batch</strong>. Review the starting network, track, and CPU or GPU on <strong>Run &amp; results</strong>, then return to Batches and click <strong>Run batch</strong>.</li>
104
  </ol>
105
+ <p>For example, save A as “Explore” and B as “Refine”, then run <code>A, B, A</code>. With continuation, the network trains through all three stages. Without it, each starts from the original. These names are illustrative; the app uses your saved recipes.</p>
106
+ <p>Saving and running are separate. Changing the name, sequence, or continuation option makes an unsaved draft and disables Run batch. Save your changes or use <strong>Load saved batch</strong> to restore the saved version.</p>
107
+ <p class="small">A batch stores recipe references and the continuation choice, without networks, tracks, or results. Starting takes a snapshot of saved recipe settings; later recipe changes affect future launches.</p>
108
  </section>
109
 
 
110
  <section class="section" id="concepts">
111
+ <h2>Reference: challenge checks</h2>
 
 
 
 
 
 
 
 
 
112
  <p>Training measurements and fresh challenge checks are simulator results for reconstructed tracks. A supported challenge check replays the named current network with fixed weights; it does not accumulate stars across runs or evaluate original-game opponent races.</p>
113
  <p>Challenge checks use the selected driving settings, including collision elimination, and the chosen run duration or the track’s longer challenge deadline, capped at 300 simulated seconds. This extra replay may add processing time. A condition that is not met within that replay is not proof that the network could never meet it in a longer run.</p>
114
+ <p class="small">These checks are bounded predictions for replica conditions, not original-game awards or Steam leaderboard results.</p>
115
  </section>
116
 
 
117
  <section class="section" id="freeze">
118
  <h2>Selective freezing</h2>
119
  <p>On <strong>Training &amp; recipes</strong>, open <strong>Selective freezing</strong> to keep selected parameters at their values in the starting network. Freezing an input holds its outgoing weights; freezing a hidden layer holds its incoming weights and biases; freezing an output holds its incoming weights and bias. The available choices and names come from the selected network. Freeze selections are part of saved recipes and can be edited later. Frozen evaluation runs the selected policy unchanged.</p>
120
  </section>
121
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  <section class="section" id="storage">
123
  <h2>Files, privacy, and storage</h2>
124
  <p>Your selected files stay in the browser until you start a run or explicitly save/export them. Processing copies and undelivered results are temporary; results expire within five minutes and are deleted after verified browser receipt by default. The app's cleanup does not establish provider-wide zero-data retention.</p>
 
127
  <p>Read the full <a href="/policy" target="_blank" rel="noopener">data policy</a> before using private files or bucket storage.</p>
128
  </section>
129
 
 
130
  <section class="section" id="limits">
131
  <h2>Limits and compute</h2>
132
  <p>The worker supports Formula, Rally, Snowmobile, and Truck. Networks support at most 20 inputs, 12 total layers, and 16 neurons per hidden layer. Formula, Rally, and Truck support up to five outputs; Snowmobile supports up to four and cannot use Handbrake. Fresh controllers for every vehicle require Steering and Acceleration; Formula imports retain their supported ordered output subsets.</p>
133
  <p>CPU runs: up to 4,000,000 requested vehicle-ticks in a 25-second native execution window. GPU runs: up to 8,000,000 requested vehicle-ticks in a 45-second native execution window. Both allow up to 1,024 cars, 2,000 generations, fourteen distinct reward metrics, and 32,768 car-generation analysis rows per run. Requested vehicle-ticks are an upper-bound work estimate, not a guarantee of runtime. Results and analysis have separate size limits. These are bounded vanilla-worker limits, not support for arbitrary modified-game networks or full original-game parity.</p>
134
  <p>The public GPU app also provides CPU execution without GPU allowance. GPU runs use HF allowance; optional HF sign-in can associate a request with your account but does not guarantee quota. Sign-in can reload the page, so do it before choosing files if needed.</p>
 
135
  </section>
136
 
137
+ <section class="section" id="game-reference">
138
+ <h2>Further reading: the game wiki</h2>
139
+ <p>The wiki describes the original game. Menus, defaults, and supported features can differ here; use this lab’s controls and limits for Space runs.</p>
140
+ <ul>
141
+ <li><a href="https://ai-learns-to-drive.fandom.com/wiki/Getting_Started" target="_blank" rel="noopener">Getting Started</a> — game overview.</li>
142
+ <li><a href="https://ai-learns-to-drive.fandom.com/wiki/Training_Process" target="_blank" rel="noopener">Training Process</a> — evolution controls.</li>
143
+ <li><a href="https://ai-learns-to-drive.fandom.com/wiki/Car_Sensors" target="_blank" rel="noopener">Car Sensors</a> — observation choices.</li>
144
+ <li><a href="https://ai-learns-to-drive.fandom.com/wiki/Reward_Functions" target="_blank" rel="noopener">Reward Functions</a> — scoring metrics.</li>
145
+ <li><a href="https://ai-learns-to-drive.fandom.com/wiki/Training_Strategies" target="_blank" rel="noopener">Training Strategies</a> — experiment ideas.</li>
146
+ </ul>
147
+ </section>
148
 
149
  <section class="section" id="feedback">
150
  <h2>Feedback</h2>
index.html CHANGED
@@ -32,9 +32,9 @@
32
  };
33
  })();
34
  </script>
35
- <header class="lab-header"><div><div class="eyebrow">AI LEARNS TO DRIVE</div><h1>Training lab</h1><p class="intro">Build a driver, train it, inspect the result.</p></div><div class="header-actions"><button id="quick_start_toggle" type="button" aria-controls="firstRunGuide" aria-expanded="false">Quick start</button><a class="help-link" href="/help#first-run" target="_blank" rel="noopener">Help &amp; tutorial ↗</a></div></header>
36
  <details class="about"><summary>About &amp; feedback</summary><p>Simulator by <a href="https://github.com/Zorro909/driving_sim_rs">Zorro909</a>; interface and hosting by <a href="https://github.com/seeker-cyber-maker/driving_sim_rs">TiGa</a>. Inspired by the <a href="https://store.steampowered.com/app/3312030/AI_Learns_To_Drive/">game by ActivationFunction</a>. Built-in tracks are reconstructed replicas. For supported conditions, the lab checks the run’s final fitness policy (or frozen input) with a bounded fresh replay. It predicts conditions only and does not award or accumulate original-game stars; opponent races and other unsupported conditions remain unchecked.</p><p>Uploaded files are used for the requested run. Results are held briefly in application memory and deleted after verified download or expiry. Browser recipes contain settings only. <a href="/policy" target="_blank" rel="noopener">Read the data policy</a>.</p><p>Cars are simulated behind the scenes. The map shows track layout, not moving cars.</p><p><a id="feedbackLink" href="https://github.com/seeker-cyber-maker/driving_sim_rs/issues/new" target="_blank" rel="noopener">Report a problem</a> · Opens an editable draft for you to review.</p><p id="buildLabel" class="hint">Build: connecting…</p></details>
37
- <details id="firstRunGuide" class="quick-start"><summary id="firstRunTitle">New here? Start a first run <span class="hint">Four steps, whenever you need them</span></summary><ol class="quick-steps"><li><strong>Choose a track</strong><p>Pick a built-in replica or upload your own track.</p><button id="first_run_track" type="button">Choose a track</button></li><li><strong>Create a driver</strong><p>Choose a car and create a small starter network, or upload a network you already have.</p><button type="button" data-open-tab="drive" data-focus="starter_create">Set up a network</button></li><li><strong>Review the settings</strong><p>The starter settings are ready for a short first experiment. You can save them as a recipe later.</p><button id="first_run_settings" type="button">Review first-run settings</button></li><li><strong>Run and inspect</strong><p>Start training, then download the result to inspect your drivers. A first run may not finish a lap.</p><button type="button" data-open-tab="drive" data-focus="run">Go to run controls</button></li></ol><div class="quick-footer"><a href="/help#first-run" target="_blank" rel="noopener">Read the full step-by-step tutorial ↗</a><button id="quick_start_close" type="button">Close quick start</button></div></details>
38
  <nav class="tabs" role="tablist" aria-label="Lab sections"><button type="button" id="tab-drive" role="tab" data-tab="drive" aria-controls="drive" aria-selected="true" tabindex="0">Run &amp; results</button><button type="button" id="tab-training" role="tab" data-tab="training" aria-controls="training" aria-selected="false" tabindex="-1">Training &amp; recipes</button><button type="button" id="tab-batch" role="tab" data-tab="batch" aria-controls="batch" aria-selected="false" tabindex="-1">Batches</button><button type="button" id="tab-editor" role="tab" data-tab="editor" aria-controls="editor" aria-selected="false" tabindex="-1">Network editor</button></nav><div id="drive" class="pane" role="tabpanel" aria-labelledby="tab-drive"><div class="grid"><section class="card"><h2>Simulation</h2><div class="toolbar" aria-label="Create a starter network"><label for="starter_vehicle">Starter car</label><select id="starter_vehicle"><option value="0" selected>Formula</option><option value="1">Rally</option><option value="2">Snowmobile</option><option value="3">Truck</option></select><button id="starter_create" type="button">Create starter network</button></div><p id="starter_network_status" class="hint" role="status">Creates a small network in this page only. It does not start a run or change saved recipes.</p><label for="run_mode">Action</label><select id="run_mode"><option value="train" selected>Train a population</option><option value="evaluate">Frozen evaluation · one policy, unchanged weights</option></select><p id="run_mode_help" class="hint">Training uses the selected recipe. Frozen evaluation runs the selected policy in a fresh car without changing its weights.</p><button id="run" disabled>Run training</button><p id="starCheckNotice" class="hint">After each run, supported star challenges are checked with unchanged weights. Results are predictions, not game awards. <a href="/help#concepts" target="_blank" rel="noopener">How checks work</a>.</p><p class="hint">Select or create a network below to enable training. Review Training &amp; recipes before running.</p><p>Supports Formula, Rally, Snowmobile and Truck networks. Control outputs follow the original vehicle editor rules. Network shape and supported sensors are bounded by the original game contract.</p>
39
  <p id="computeBlock"><label for="backend">Compute</label><select id="backend" disabled><option value="cpu">CPU — no GPU allowance</option><option id="gpuOption" value="gpu" disabled>GPU — uses GPU allowance</option></select></p><p id="backendNote" class="hint">Checking available backends…</p>
40
  <div id="connectionRecovery" hidden><button id="retry" type="button">Reconnect to app</button><p class="hint">Checks server availability. Does not restart training, sign you in, or reset GPU allowance.</p></div>
 
32
  };
33
  })();
34
  </script>
35
+ <header class="lab-header"><div><div class="eyebrow">AI LEARNS TO DRIVE</div><h1>Training lab</h1><p class="intro">Build a driver, train it, inspect the result.</p></div><div class="header-actions"><button id="quick_start_toggle" type="button" aria-controls="firstRunGuide" aria-expanded="false">Quick start</button><a class="help-link" href="/help#start-here" target="_blank" rel="noopener">Help &amp; tutorial ↗</a></div></header>
36
  <details class="about"><summary>About &amp; feedback</summary><p>Simulator by <a href="https://github.com/Zorro909/driving_sim_rs">Zorro909</a>; interface and hosting by <a href="https://github.com/seeker-cyber-maker/driving_sim_rs">TiGa</a>. Inspired by the <a href="https://store.steampowered.com/app/3312030/AI_Learns_To_Drive/">game by ActivationFunction</a>. Built-in tracks are reconstructed replicas. For supported conditions, the lab checks the run’s final fitness policy (or frozen input) with a bounded fresh replay. It predicts conditions only and does not award or accumulate original-game stars; opponent races and other unsupported conditions remain unchecked.</p><p>Uploaded files are used for the requested run. Results are held briefly in application memory and deleted after verified download or expiry. Browser recipes contain settings only. <a href="/policy" target="_blank" rel="noopener">Read the data policy</a>.</p><p>Cars are simulated behind the scenes. The map shows track layout, not moving cars.</p><p><a id="feedbackLink" href="https://github.com/seeker-cyber-maker/driving_sim_rs/issues/new" target="_blank" rel="noopener">Report a problem</a> · Opens an editable draft for you to review.</p><p id="buildLabel" class="hint">Build: connecting…</p></details>
37
+ <details id="firstRunGuide" class="quick-start"><summary id="firstRunTitle">New here? Start a first run <span class="hint">Four steps, whenever you need them</span></summary><ol class="quick-steps"><li><strong>Choose a track</strong><p>Pick a built-in replica or upload your own track.</p><button id="first_run_track" type="button">Choose a track</button></li><li><strong>Create a driver</strong><p>Choose a car and create a small starter network, or upload a network you already have.</p><button type="button" data-open-tab="drive" data-focus="starter_create">Set up a network</button></li><li><strong>Review the settings</strong><p>The starter settings are ready for a short first experiment. You can save them as a recipe later.</p><button id="first_run_settings" type="button">Review first-run settings</button></li><li><strong>Run and inspect</strong><p>Start training, then download the result to inspect your drivers. A first run may not finish a lap.</p><button type="button" data-open-tab="drive" data-focus="run">Go to run controls</button></li></ol><div class="quick-footer"><a href="/help#start-here" target="_blank" rel="noopener">Read the full step-by-step tutorial ↗</a><button id="quick_start_close" type="button">Close quick start</button></div></details>
38
  <nav class="tabs" role="tablist" aria-label="Lab sections"><button type="button" id="tab-drive" role="tab" data-tab="drive" aria-controls="drive" aria-selected="true" tabindex="0">Run &amp; results</button><button type="button" id="tab-training" role="tab" data-tab="training" aria-controls="training" aria-selected="false" tabindex="-1">Training &amp; recipes</button><button type="button" id="tab-batch" role="tab" data-tab="batch" aria-controls="batch" aria-selected="false" tabindex="-1">Batches</button><button type="button" id="tab-editor" role="tab" data-tab="editor" aria-controls="editor" aria-selected="false" tabindex="-1">Network editor</button></nav><div id="drive" class="pane" role="tabpanel" aria-labelledby="tab-drive"><div class="grid"><section class="card"><h2>Simulation</h2><div class="toolbar" aria-label="Create a starter network"><label for="starter_vehicle">Starter car</label><select id="starter_vehicle"><option value="0" selected>Formula</option><option value="1">Rally</option><option value="2">Snowmobile</option><option value="3">Truck</option></select><button id="starter_create" type="button">Create starter network</button></div><p id="starter_network_status" class="hint" role="status">Creates a small network in this page only. It does not start a run or change saved recipes.</p><label for="run_mode">Action</label><select id="run_mode"><option value="train" selected>Train a population</option><option value="evaluate">Frozen evaluation · one policy, unchanged weights</option></select><p id="run_mode_help" class="hint">Training uses the selected recipe. Frozen evaluation runs the selected policy in a fresh car without changing its weights.</p><button id="run" disabled>Run training</button><p id="starCheckNotice" class="hint">After each run, supported star challenges are checked with unchanged weights. Results are predictions, not game awards. <a href="/help#concepts" target="_blank" rel="noopener">How checks work</a>.</p><p class="hint">Select or create a network below to enable training. Review Training &amp; recipes before running.</p><p>Supports Formula, Rally, Snowmobile and Truck networks. Control outputs follow the original vehicle editor rules. Network shape and supported sensors are bounded by the original game contract.</p>
39
  <p id="computeBlock"><label for="backend">Compute</label><select id="backend" disabled><option value="cpu">CPU — no GPU allowance</option><option id="gpuOption" value="gpu" disabled>GPU — uses GPU allowance</option></select></p><p id="backendNote" class="hint">Checking available backends…</p>
40
  <div id="connectionRecovery" hidden><button id="retry" type="button">Reconnect to app</button><p class="hint">Checks server availability. Does not restart training, sign you in, or reset GPU allowance.</p></div>