Браузер / Интерактивный разбор / Чтение: 16 мин

Dino: почему игра всё время ускоряется?

Исследуйте с REA игру с динозавром на основе Chromium. Восстановите правило ускорения, добавьте управление скоростью и проверьте пограничный случай чисел с плавающей точкой.

На этой странице

01. Попробуйте перед разбором

Нажмите «Играть» и перепрыгните препятствие. Переместите ползунок скорости с 3 на 12: препятствие сразу начнёт двигаться быстрее. Включите автоматическое ускорение снова и наблюдайте, как число медленно растёт от 6.000.

Эксперимент со скоростьюИГРАЙТЕ / НАБЛЮДАЙТЕ / ОБЪЯСНЯЙТЕ
СКОРОСТЬ 6.000ПРЕОДОЛЕНО 0
Знакомая игра. Одно правило для исследования.

Нажмите «Играть», затем «Прыжок». Перемещение ползунка включает фиксированную скорость.

Новая учебная игра. Только правило ускорения соответствует документированному исследованию.

Что вы создадите

Игровой эксперимент и функция скорости, проверенная для пяти количеств обновлений.

Перед исследованием

Лаборатория работает здесь. Для исследования нужны REA, подключённая к вашему агенту, Chrome и общедоступная HTTP-версия игры. Если REA ещё не подключена, начните с руководства по установке. Настроить REA →

02. Подключитесь к версии, доступной для анализа

Откройте общедоступную t-rex-runner от wayou в отдельном отладочном профиле Chrome. Команда ниже предназначена для macOS; в Windows или Linux используйте исполняемый файл Chrome с теми же флагами. Оставьте браузер и терминал открытыми на время исследования.

Это руководство относится к HTTP-странице, а не chrome://dino. Если страница изменилась, сохраните фактически прочитанный скрипт и его хеш перед сравнением с историческими результатами ниже.

Терминал
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --remote-debugging-address=127.0.0.1 \
  --remote-debugging-port=9222 \
  --user-data-dir="$(mktemp -d /tmp/rea-dino.XXXXXX)" \
  https://wayou.github.io/t-rex-runner/
Скопируйте этот запрос для исследования
Используй REA для вызова list_browser_targets по адресу http://127.0.0.1:9222. Выбери страницу t-rex-runner по URL, затем вызови inspect_web_page с включённым include_script_sources. Прочитай загруженный index.js. Найди начальную скорость, величину ускорения, условие обновления и порог скорости. Укажи места в исходном коде. Пока не воссоздавай игру.

03. Уточните, что означает одно «обновление»

Настройка с именем ACCELERATION — подсказка, а не полное объяснение. Проследите, где она используется. Срабатывает ли она при каждой отрисовке, только во время игры или только без столкновения? Попросите агента показать окружающее условие, чтобы ответ учитывал и другие сценарии.

Документированная версия начинает с 6 и прибавляет 0.001 при допустимом обновлении, если текущая скорость ниже 13. Это не «0.001 в секунду». Наша учебная игра выполняет 60 фиксированных обновлений логики в секунду; отрисовка не зависит от этого шага и частоты обновления дисплея.

  • Запишите значение до и после одного обновления.
  • Найдите условие столкновения или игрового состояния вокруг приращения.
  • Проверьте, сравнивается ли порог до сложения или после.
  • Отделяйте временные параметры кадров от восстановленной арифметики.

04. Добавьте регулятор скорости, сохранив правило

Создайте минимальную игру, в которой правило видно: простой персонаж, одно препятствие, кнопка прыжка и показатель скорости. Ползунок должен включать фиксированную скорость, а автоматический режим — возвращать документированное начальное значение.

Не заменяйте незаметно условие ограничением сверху до 13. Такое упрощение кажется безобидным, но меняет результат на границе. Сначала реализуйте правило буквально, затем вносите намеренные изменения в отдельном режиме.

Скопируйте этот запрос для исследования
Создай независимую браузерную мини-игру с кнопками игры/паузы, прыжка и перезапуска. Воспроизведи только документированное правило обновления скорости. Добавь ползунок фиксированной скорости от 2 до 18 и автоматический режим со стартом на 6. Используй фиксированный шаг логики, ставь игру на паузу вне экрана, поддержи клавиатуру и касания. Обозначь новую графику, столкновения и прыжки как учебный код. Тестируй импортированную функцию скорости, а не её вторую копию.

05. Исследуйте лишнюю 0.001

Многократно запускайте функцию скорости без столкновений. Сравните контрольные точки ниже, сохраняя неокруглённое значение результата. Неожиданный итог — полезная часть упражнения: сравнение выполняется до сложения, а повторные приращения с плавающей точкой не обязаны точно попасть в десятичный порог.

Если после 10 000 обновлений вы получаете 13.000, проверьте, нет ли ограничения сверху или десятичного округления внутри цикла. Если результат зависит от частоты обновления экрана, проверьте, не продвигается ли симуляция на шаг при каждом нарисованном кадре.

Скопируйте этот запрос для исследования
Выполни фактическую функцию ускорения для 0, 1000, 4000, 7000 и 10000 обновлений от скорости 6. Верни полную точность и отображение с тремя десятичными знаками. Сравни с исходным отчётом, объясни несовпадения и укажи, выполнялась ли наша замена или исходная игра. Не считай чтение кода проверкой работающей исходной игры.

06. Сравните известные результаты

Используйте их как явные контрольные точки. Совпадение подтверждает это небольшое правило, но не совместимость всего приложения.

ОбновленияОжидаемое отображениеЧто выясняется
06.000Начальное значение
1 0007.000Приращение за обновление
4 00010.000Накопление
7 00013.000Округление может скрыть пограничный случай
10 00013.001Сравнение перед сложением

Сохраните оба файла в одной папке. Запустите проверки с Node.js; устанавливать пакеты не требуется.

Терминал
node check-case-labs.mjs

07. Что действительно проверено?

Отчёт REA содержит контролируемые запуски исходной HTTP-игры. Этот сайт проверяет собственный модуль скорости по записанным контрольным точкам; мы не повторяли анализ исходной игры. Графика, прыжки, столкновения и расстояния между препятствиями выше — новый учебный код. Воссоздаётся только правило ускорения.

Записанные результаты численных тестов этого сайта →

Источники: Данные REA по калькулятору и динозавру · Ветвь обновления игры в зафиксированной версии. Руководство, иллюстрации и браузерные эксперименты созданы независимо.

Следующий экспериментКак 16 пуль узнают, где вы находитесь? →

Впервые используете инструмент? Что такое REA? · Как мы проверяем руководства