Aller au contenu
quest'n'click

CréerGuidePour auteursS'applique de 4.2.5

Le jeu statique sur Clever Cloud

This page in EnglishCette page sur le wiki GitHub

Le jeu est un site statique ; sur Clever Cloud, il tourne comme une petite application Node qui construit dist/ à chaque déploiement et le sert. Cette page ne traite que du jeu. Héberger le Studio d'équipe est une autre affaire : Vue d'ensemble Clever Cloud.

Ce que vous obtenez

Une application Node Clever Cloud, déployée par git push via clever deploy, qui sert votre jeu sur son domaine. Chaque déploiement reconstruit le jeu à partir du commit poussé.

Contexte et versions

Deux cas, deux réglages :

  • Le dépôt du moteur (un jeu dans games/<id>/) : npm start sert dist/ avec sirv (scripts/start.mjs), sur toutes les interfaces, sur $PORT (8080 s'il n'est pas défini), chaque fichier avec Cache-Control max-age=3600. Ce lanceur existe depuis la 4.1.8. public/assets est commité dans ce dépôt : le déploiement n'a besoin que de Vite, pas de Python.
  • Un projet créé (quest-n-click create) : il n'a ni script start ni serveur statique (le paquet du moteur laisse sirv-cli de côté), et public/assets n'est pas commité : le déploiement doit lancer l'étape des assets, qui demande Python et Pillow.

La page vaut à partir de la 4.2.5. Vérifié sur : non vérifié. Les réglages du dépôt du moteur ci-dessous sont ceux que donnait docs/fr/TOOLS.md jusqu'à la 4.4.0 ; personne n'a rejoué cette page sur une application Clever Cloud réelle, et le cas du projet créé n'y a jamais été déployé par le projet. Lisez chaque commande avant de la lancer.

Prérequis

  • Un compte Clever Cloud et clever-tools, connecté (clever login).
  • Le jeu se construit sur votre machine (Construire et publier un jeu) : le déploiement relance la construction, et une construction qui échoue laisse la version précédente en ligne.
  • Le projet est un dépôt Git, son travail commité : clever deploy pousse le commit de la branche courante.

Où lancer les commandes

Sur votre machine, dans le dépôt du moteur ou dans le projet créé : clever … relie ce dossier à l'application et pousse son historique Git. La construction elle-même tourne sur Clever Cloud.

Étapes

  1. Créez une application Node et reliez-la au dossier :

    # dans le dépôt du moteur ou le projet créé
    clever create --type node my-game
  1. Réglez la construction.

    Dépôt du moteur : Vite est une dépendance de développement, la construction est build:web, et GAME nomme le jeu (sinon package.json → config.game, sinon demo) :

    # dans le dépôt du moteur
    clever env set CC_NODE_DEV_DEPENDENCIES install
    clever env set CC_POST_BUILD_HOOK "npm run build:web"
    clever env set GAME my-game

    Projet créé : donnez-lui un serveur et une commande de démarrage, puis un hook de construction qui installe Pillow à côté de l'application et construit :

    # dans le projet créé
    npm install sirv-cli@3
    npm pkg set scripts.start="sirv dist --host 0.0.0.0 --port \$PORT --maxage 3600"
    clever env set CC_POST_BUILD_HOOK "python3 -m pip install --target .python -r node_modules/quest-n-click/requirements.txt && PYTHONPATH=.python npm run build"
    git add package.json package-lock.json && git commit -m "Serve dist/ on Clever Cloud"

    Le build du projet créé lance verify (solveur compris) sur le serveur, à chaque déploiement.

  1. Laissez BASE_PATH vide : l'application sert le jeu à la racine de son domaine. Ne le réglez que si un proxy devant publie le jeu sous un sous-chemin (Sous-chemin).
  1. Déployez, et suivez les journaux :

    # dans le dépôt du moteur ou le projet créé
    clever deploy
    clever logs
  1. Ouvrez-le sur le domaine que donne Clever Cloud (clever open), ou ajoutez le vôtre avec clever domain add play.example.org et son enregistrement DNS.

Résultat attendu, et comment le vérifier

  • clever logs montre la construction du hook, puis sirv à l'écoute sur le port 8080.
  • Le jeu s'ouvre sur le domaine de l'application ; la ligne « Offline » (ou sa traduction) du menu pause finit sur « complete » (le texte par défaut du moteur ; un jeu le traduit).
  • Dans le dépôt du moteur, node scripts/e2e.mjs https://<votre-domaine>/ le joue jusqu'à la fin.

Erreurs fréquentes

SymptômeCauseCorrection
vite: not found dans le journal de constructionDépendances de développement non installées (dépôt du moteur)CC_NODE_DEV_DEPENDENCIES=install
L'application ne devient jamais saineRien n'écoute sur $PORT, ou seulement sur 127.0.0.1npm start doit servir sur 0.0.0.0:$PORT (le lanceur et le script ci-dessus le font)
No module named 'PIL'Le hook n'a pas installé Pillow, ou PYTHONPATH manqueGardez les deux parties du hook du projet créé
Le jeu de démo au lieu du vôtreGAME non réglé dans le dépôt du moteurclever env set GAME <id>, puis déployez
La version précédente reste affichéeLe service worker attend le joueur ; index.html est en cache une heureCache et service worker

Fichiers ou données modifiés

  • L'application et ses variables sur Clever Cloud ; un remote clever et .clever.json dans le dossier.
  • Projet créé : package.json (start, la dépendance sirv-cli) et package-lock.json.
  • dist/ et .python/ sur le système de fichiers de l'application, reconstruits à chaque déploiement.

Revenir en arrière

Une construction qui échoue n'est pas déployée : l'instance en place continue de servir la version précédente. Pour revenir à une version antérieure, annulez le commit et relancez clever deploy ; les caches et les sauvegardes des joueurs suivent alors Retour arrière. clever delete supprime l'application.

Références