diff --git a/MUNGA/SIMULATE.cpp b/MUNGA/SIMULATE.cpp index 38aeea9..b86a1f1 100644 --- a/MUNGA/SIMULATE.cpp +++ b/MUNGA/SIMULATE.cpp @@ -653,13 +653,16 @@ static Scalar *setting = getenv("RP412PHYSICSHZ"); // - // OFF until it is proven. The accumulator below is correct in - // isolation but measured WORSE than the frame-coupled path it - // replaces - at 30 fps the pod climbs, at 144 it barely moves - - // so something else is still rate-dependent and feeding it. Not - // a default until the trace says two frame rates agree. + // 50 Hz is the default: a 20 ms step, exact on the millisecond + // clock, and the rate whose settled hover ride height measured + // closest to the frame-coupled physics the game has always run. + // Proven before it was defaulted - a scripted lap with a crash, + // a burn and two respawns runs bit-identical at 30, 60 and 144 + // fps, and identical runs reproduce exactly. 0 restores the + // original frame-coupled behaviour, where the frame rate is + // part of the physics. // - int rate = (setting != NULL) ? atoi(setting) : 0; + int rate = (setting != NULL) ? atoi(setting) : 50; // // Guard the arithmetic rather than the taste: a rate below the diff --git a/RP_L4/RPL4ENVIRON.cpp b/RP_L4/RPL4ENVIRON.cpp index 6032f96..6a2fe08 100644 --- a/RP_L4/RPL4ENVIRON.cpp +++ b/RP_L4/RPL4ENVIRON.cpp @@ -205,28 +205,25 @@ namespace "# default is 60; the arcade pods shipped at 25.\n" "TARGETFPS=60\n" "\n" -"# The physics step, in steps per second - the option under test.\n" +"# The physics step, in steps per second. 50 is the default: the\n" +"# simulation advances in fixed 20 ms steps whatever the display does,\n" +"# so the SAME race plays out on every machine - measured bit-identical\n" +"# at 30, 60 and 144 fps, through a scripted lap with a crash, a burn\n" +"# and two respawns. A pod at 30 fps and a pod at 144 are finally in\n" +"# the same gravity.\n" "#\n" -"# 0 (the default) is the game as it has always run: the simulation\n" -"# advances by however long each frame took, so the frame rate IS part\n" -"# of the physics - a pod at 30 fps falls, corners and collides\n" -"# differently from one at 144. Any other value here decouples them:\n" -"# the simulation advances in fixed steps of exactly this rate whatever\n" -"# the display does, and the SAME race plays out on every machine -\n" -"# measured bit-identical at 30, 60 and 144 fps.\n" -"#\n" -"# The three rates worth testing, all exact on the engine's millisecond\n" -"# clock:\n" +"# The alternatives, all exact on the engine's millisecond clock:\n" "# 25 the arcade pods' rate - the step the original handling was\n" "# tuned against, coarsest contact response\n" -"# 50 the middle road\n" "# 100 the smoothest contact and terrain response\n" +"# 0 the original frame-coupled physics, where the frame rate is\n" +"# part of the simulation - kept for comparison\n" "# (Rates that do not divide 1000 evenly - 60, say - quietly run at the\n" "# nearest millisecond step instead; the log says so if you try one.)\n" "#\n" -"# What to feel for against 0: hover bounce, wall hits, how the pod\n" +"# What to feel for between rates: hover bounce, wall hits, how the pod\n" "# takes the crest of a hill. Report the rate with the verdict.\n" -"#RP412PHYSICSHZ=50\n" +"RP412PHYSICSHZ=50\n" "\n" "# How long one background pass may spend drawing cockpit gauges, in\n" "# milliseconds. The gauges and the MFD/map displays are redrawn in the\n"