RU

Урок 6 — Сохранение рекордов и настроек

Файлы игрока попадают в папку var/ игры на компьютере и в хранилище браузера (IndexedDB) в вебе: код один и тот же.

// лучший результат
$best = $this->engine->storage->readJson('scores.json', ['best' => 0]);
if ($this->score > $best['best']) {
    $this->engine->storage->writeJson('scores.json', ['best' => $this->score]);
}

// настройки (сохраняются сразу)
$difficulty = $this->engine->options->get('difficulty', 'normal');
$this->engine->options->set('difficulty', 'hard');

Когда игрок покидает страницу или закрывает окно, событие close позволяет сохранить состояние:

$this->engine->lifecycle()->on('close', fn () => $this->engine->storage->writeJson('partie.json', $this->state()));

Никогда не читайте файлы игрока на этапе сборки: папка var/ не публикуется.