Halden Valley

Terrain, friction & sustainment

Preparatory bombardment0:00
Day 1 · 07:00 · Dawn
Objective: Halden villageHeld by defenders
← SimLab library Fictional terrain · abstract scale

Battle log

    Camera

    Image annotations

    Layers

    Drag to orbit, right-drag to pan, scroll to zoom. Click a unit for cover, suppression and supply.

    Halden Valley

    Opening the battlefield…

    Preparing terrain and units.
    Halden Valley user manual

    Field guide

    What the model does, how to read it, and what every parameter changes.

    What you are watching

    Halden Valley is an automated, fictional battle on a 400 × 400 abstract-unit map. Granite defends the village on the north bank; Ember approaches from the south. The map is generated terrain, not a real place or a reconstruction of a historical battle. You configure a scenario and observe it; clicking units inspects them rather than issuing orders.

    Start a run

    1. Open Parameters. Choose shared conditions under General, then a strategy and resources for each side.
    2. Select Apply & restart. This discards the current run and starts a fresh, paused scenario.
    3. Press Play. Use 1×, 2× or 4× to change playback speed. Pause to inspect a unit or compare supplies.
    4. Use Replay to restart the same seed and settings. Change one parameter at a time for a useful comparison.

    Optimise

    Optimise searches the selected side’s strategy and starting combat force mix using a genetic algorithm. It starts from applied parameters, includes the current setup, and keeps the opposing side and all other settings fixed. Initial forces can be reallocated within the original weighted game-point budget and existing parameter limits; the panel lists every weight. Population is candidate count per generation; generations is the number of breeding/evaluation rounds. Training seeds are shared across candidates. The best training candidate and original setup are compared on separate validation seeds. Wins are the primary fitness measure, with objective progress and remaining strength as tie-breakers. More samples reduce noise but take longer. No global optimum or improvement is guaranteed. Review the candidate and validation before Apply candidate & restart; closing or Stop leaves your parameters unchanged.

    Repeated runs

    Run until stable pauses the displayed battle and opens an accelerated batch tool. It holds the currently applied parameters fixed and varies the seed. Stability means the attacker win-rate estimate meets the selected uncertainty tolerance and recent-check consistency rule; it does not mean identical outcomes, the best strategy, or convergence of every metric. Start batch, watch the completed-run count, and Stop at any time. Closing cancels work. A run-limit result is explicitly inconclusive. The panel explains the minimum sample, check interval and uncertainty assumptions, and reports remaining strength, losses by type, supplies, crossing delays, bridge work and combat activity with means and observed ranges. Only win rate controls stopping; the other metrics need not have converged. Rendering is omitted, but physics and simulation time steps are unchanged. Parallel workers selects how many independent simulations run at once; automatic uses a conservative device limit, while up to eight can be requested for throughput. Exact sight-check caching reduces repeated work without changing the model.

    How the battle ends

    Attackers must reach 100% village capture with ready infantry, hold a functioning north-bank supply point, have delivered supplies there by truck, and still have stock at that point. Capturing the village alone is insufficient. Defenders win when the scenario time limit expires without those conditions, or when no living mobile ground combat attackers and no scheduled reinforcement waves remain.

    To establish the north-bank point, after 40 simulation seconds attackers need at least two ready mobile ground combat units, including infantry, within 33 map units of its designated location. No ready defender mobile ground combat unit may be within 38 units. This must last for the configured security time; interruption resets the timer. The new point starts empty. The previous forward point becomes a south-bank relay.

    Two clocks, different meanings

    Elapsed / limit is simulation time in minutes:seconds. The default limit is 7:00 (420 seconds). Day N · HH:MM is a separate, accelerated daylight clock, starting at 07:00. By default, 360 simulation seconds represents a full 24-hour day: one simulation second advances this clock by four minutes. Thus a seven-minute scenario spans 28 displayed hours. These are game scales, not real-world durations. Both clocks pause together and advance faster at 2× or 4×.

    Drawing on the rendered image

    Select Draw line and drag across the battlefield. Lines remain visible on the image; Undo and Clear lines remove them. Done drawing or Escape restores camera interaction. These are screen annotations, not movement orders or terrain-anchored routes. Save image exports the battlefield with the lines as a PNG.

    Controls and navigation

    ControlMeaning
    Play / Pause; 1× / 2× / 4×Run or pause; speed multiplies simulation time, not weapon statistics.
    Replay / Run againReset time, units, stocks, bridges, wrecks and outcome using the selected seed and parameters.
    WeatherChanges conditions and restarts the same seed, paused.
    ViewObserver shows all units. Defender/Attacker contacts restrict enemy display to current team sightings. It does not change combat rules.
    Seed / New seedAn integer from 1 to 2,147,483,646 controls the model’s seeded randomness. New seed restarts with a different sequence. Visual effects also use unseeded randomness; compare model outcomes, not identical smoke.
    Parameters / Cancel / DefaultsOpening pauses playback. Cancel discards unapplied edits; closing restores the previous playback state. Defaults fills the editor with baseline values; Apply is still required. Settings are stored in this browser when storage is available.
    Camera buttons / FollowMove the viewpoint or track an inspected moving unit; no effect on its orders. Drag to orbit, right-drag to pan, scroll to zoom; touch gestures control the camera on mobile.
    Supply lines / Place names / Unit markersVisibility layers only. A drawn line or radius does not guarantee a delivery or a clear route.
    ForcesOn narrow screens, opens the force and supply panels.
    Keep viewingDismisses the result overlay; it does not resume an ended battle.

    Optimise a side

    A genetic search over strategy and starting force mix, beginning with your currently applied scenario.

    Search rules and budget

    Changes only the selected side’s strategy and initial infantry, tanks, IFVs, artillery, bunkers, drones, aircraft, missile launchers and air-defence counts. The opposing side, shared conditions, reinforcement budgets, engineering kits, supply stocks, trucks, entry ammunition and fuel stay fixed. Zero starting counts may become nonzero through reallocation; a zero total force budget stays zero.

    Candidates cannot exceed the original force budget or any unit-count parameter limit. Fictional points per unit: infantry squad 1; tank 5; IFV 3; artillery 4; bunker 3; drone 2; aircraft 8; missile launcher 4; air defence 3. These are transparent game-search weights, not real costs or validated measures of combat value. Starting and candidate point totals appear in the review.

    Every candidate within a generation uses the same training seeds. Surviving candidates receive progressively more seeds, and finalists receive an additional confirmation sample before selection. Fitness prioritises wins, then final objective progress (denial for defenders), then remaining combat strength. Two elites survive each generation; tournament selection, crossover and mutation produce the rest. Duplicate candidates reuse their evaluated results. The current setup is included in the initial population.

    The best training candidate and original setup are then tested on separate, matching validation seeds. Validation is reported even if the candidate is worse. This is a limited search, not proof of an optimum. Only Apply candidate & restart changes your scenario. Closing or Stop cancels; no incomplete candidate is applied.

    Training samples grow by two each generation. With defaults, the last generation uses 13 seeds; the top three are rechecked on 26 training seeds. Thirty separate seeds compare the chosen candidate with the baseline. Duplicate candidates reuse earlier samples. The default upper bound is 483 full simulations before reuse (384 generation evaluations, up to 39 extra finalist checks and 60 validation runs). Larger populations, generations and seed samples take longer. The displayed battle remains paused.

    Ready. Apply any edits in Parameters before starting.

    Validation against your starting setup

    No search completed yet.

    Run until stable

    Estimate how often attackers win with the currently applied parameters. Each run varies only the seed; it does not search for better strategies.

    Uses at least 100 runs, checking every 20. Stops when the uncertainty half-width meets your tolerance and the last three cumulative win-rate estimates differ by no more than half that tolerance. Otherwise it stops at the maximum without claiming stability.

    The conservative 95% bound accounts for the planned repeated checks, assuming independent seeded outcomes. It describes uncertainty within this game model, not real-world accuracy. Additional outcome, loss, supply, crossing and combat metrics show descriptive means and observed ranges; they are not convergence targets. Same-seed repeats would be deterministic and would not establish robustness.

    Runs without animation in the same model engine, without loading the 3D renderer into workers. Automatic mode uses up to four background workers (one on touch devices). You can select up to eight, capped by reported processor capacity. More workers can improve throughput but can also increase heat or slow an overloaded device. Large scenarios can still take a long time and use substantial CPU/battery. Closing this panel or pressing Stop cancels immediately. Your displayed battle remains paused and unchanged.

    Ready. Apply any parameter edits before starting.

    No batch results yet.

    Metrics across completed runs

    Mean and observed min–max describe variation across completed runs; ranges are not confidence intervals. “Runs” is the sample count for that row. Win-only durations exclude other outcomes. No applicable runs shows —, not zero.

    No completed runs yet.

    Metric definitions

    Strength is surviving combat health divided by maximum combat health entered so far; absent combat forces have no strength percentage. Losses count destroyed roster units or squads, not people, and include reinforcements that entered. Truck losses exclude rail-convoy vehicles. Stored supply includes rail, depot, forward and relay stocks; cargo in transit is excluded. Delivery totals are cumulative, not stock remaining. Bridge destructions count events, including repeat destruction of rebuilt decks. Open decks excludes fords. Queue and collision waits sum time across units. Suppression events can repeat for the same unit. Wreck-pushing travel is pusher travel while pushing, not the sum of every displaced hull’s distance. Guidance losses and launches are not hit counts. Aircraft and drone departures are counted separately, including the first patrol departure and each departure after servicing. Bridgehead rate records establishment, even if the point is later destroyed.

    Only attacker win rate controls the stability stop. These additional metrics are descriptive and may still vary when the win-rate rule is satisfied.

    Scenario laboratory

    Resources & conditions

    Set each side's resources independently, then choose the shared conditions.

    Apply restarts the scenario, paused, with the seed and weather shown in General conditions. Each side's starting forces and reinforcement budget are separate. Set a resource to zero to remove it. Values outside the displayed limits are clamped when applied. SP are abstract supply points.