quest'n'click 4.5.0 · r1

Construite pour quest'n'click 4.5.0, révision r1. Si elle est publiée, et laquelle est la courante, est dit par publication.json.

Autres hébergeurs statiques

English · Type : procédure · Public : auteur · Contexte : dépôt du moteur, projet créé · Statut : prête · S'applique depuis : 4.2.5

dist/ est un dossier statique : Netlify, Cloudflare Pages, un serveur nginx ou Apache, un bucket de stockage objet derrière un frontal web, tout hébergeur qui sert des fichiers peut servir le jeu. Cette page dit ce qu'il faut à un tel hébergeur, qu'il construise le jeu lui-même ou que vous téléversiez un dist/ construit ailleurs.

Ce que vous obtenez

Le jeu servi par l'hébergeur de votre choix, avec un service worker qui se met à jour proprement et un cache hors ligne qui marche.

Contexte et versions

Prérequis

Où lancer les commandes

La construction se lance dans le projet créé ou le dépôt du moteur : sur votre machine, dans votre CI, ou dans l'étape de construction de l'hébergeur. Le téléversement (ou les réglages) passe par l'outil de l'hébergeur.

Étapes

  1. Choisir où tourne la construction.

    • Sur votre machine ou dans votre CI, puis téléverser dist/ : l'hébergeur n'a besoin que de fichiers. Le plus simple, et la seule voie quand l'hébergeur n'a pas Python.
    • Dans l'étape de construction de l'hébergeur : donnez-lui les mêmes réglages qu'à n'importe quelle CI.
    RéglageValeur
    Commande de construction (projet créé)pip install -r node_modules/quest-n-click/requirements.txt && npm run build
    Commande de construction (dépôt du moteur, public/assets commité)npm run build:web après les vérifications, ou npm run build
    Dossier de sortiedist
    Node22.12 ou plus récent
    Python3, avec pip (projet créé)
    ffmpegquand le jeu a de l'audio ou de la vidéo à encoder
    GAMEl'id du jeu (dépôt du moteur)
  1. Régler BASE_PATH quand le site n'est pas à la racine de son domaine : BASE_PATH=/games/my-game/ pour https://example.org/games/my-game/, avec une barre oblique à chaque bout. À la racine d'un domaine, laissez-le vide. Voir Sous-chemin.
  1. Régler les en-têtes de cache, là où l'hébergeur le permet :

    CheminEn-têtePourquoi
    index.html, sw.js, manifest.webmanifestCache-Control: no-cacheLa page et le worker doivent être revérifiés à chaque visite pour qu'une mise à jour soit vue
    assets/*.js, assets/*.css, workbox-*.jslong, par exemple max-age=31536000, immutableLeur nom porte une empreinte : une nouvelle construction donne de nouveaux noms
    assets/img/, assets/audio/, assets/video/long sans risqueLeurs adresses portent ?v=<empreinte>, qui change dès qu'un asset change
    data/ (le fichier de la fin scellée)no-cacheLe jeu le demande d'abord au réseau

    Servez .webmanifest en application/manifest+json, .webp en image/webp et .ogg en audio/ogg.

  1. Téléverser tout dist/ d'un coup, ou dans cet ordre : tout sauf index.html et sw.js d'abord, puis ces deux fichiers. Une page qui nomme des fichiers pas encore téléversés est une page blanche pour un nouveau visiteur (Déploiement incomplet).

Un serveur nginx, en exemple (non testé par le projet) :

# le jeu à la racine de play.example.org, dist/ copié dans /srv/my-game
server {
  server_name play.example.org;
  root /srv/my-game;
  location = /index.html { add_header Cache-Control "no-cache"; }
  location = /sw.js { add_header Cache-Control "no-cache"; }
  location = /manifest.webmanifest { add_header Cache-Control "no-cache"; }
  location /data/ { add_header Cache-Control "no-cache"; }
  location /assets/ { add_header Cache-Control "public, max-age=31536000"; }
}

Limite · https-required Un service worker ne s'enregistre qu'en HTTPS (ou sur localhost). En HTTP simple, le jeu se joue en ligne mais ne s'installe pas et ne se joue pas hors ligne.

Résultat attendu, et comment le vérifier

Erreurs fréquentes

SymptômeCauseCorrection
Une page blanche, 404 sur /assets/index-….jsSous un sous-chemin, construit sans BASE_PATHÉtape 2
Les joueurs ne reçoivent jamais la nouvelle versionsw.js ou index.html gardé longtemps en cache par l'hébergeur ou un CDNÉtape 3
Le jeu ne s'installe pas et ne se joue pas hors ligneServi en HTTP simple : le navigateur ne donne pas de service workerServir en HTTPS
La musique coupe ou ne joue pasL'hébergeur refuse le fichier, ou le sert avec un mauvais typeServir .ogg en audio/ogg

Fichiers ou données modifiés

Seulement chez l'hébergeur : les fichiers de dist/ et ses réglages. Rien dans le projet.

Revenir en arrière

Téléversez le dist/ d'une construction précédente (gardez les constructions publiées, ou reconstruisez le commit). Les joueurs y passent par le bandeau de mise à jour ; voir Retour arrière.

Références


Modifier la source de cette page · Signaler une erreur