Histoire interactive

Avec éditeur

a marqué ce sujet comme résolu.

Bonjour à tous, je suis actuellement en phase d'élaboration d'un projet d'histoires interactives pour un site destiné à des ados. Le site déjà en place dispose déjà dans sa bdd d'un millier d'exercices environ (qcm, textes à trous).

Je pensais créer des histoires interactives, avec plusieurs choix possibles par page pour aller plus loin. De temps à autre, un exercice vient s'intercaler et est obligatoire pour continuer d'avancer.

Ma question est la suivante : à votre avis, quelle est la meilleure solution de "navigation" entre les "pages" du livre interactif ?

  1. pur HTML-PHP, avec requêtes GET ou POST pour changer de page ?

  2. AJAX avec reload de la portion concernée à chaque choix du lecteur ?

  3. chargement complet en JS avant de commencer l'histoire puis résolution full JS ?

Je pencherais plutôt pour la solution 2, comme ça la progression pourrait être facilement sauvegardée en bdd. Qu'en pensez-vous ? C'est un petit site avec quelques milliers de visites par mois, qui tourne sous Laravel pour le moment. Merci de votre aide !

+0 -0

Non, je ne pense pas. En fait, je pense plutôt faire en sorte qu'il faille absolument suivre la trame, sans quoi on retourne au début (genre un 'livre dont vous êtes le héros'). Pour la vérification, je pensais stocker un token en session à chaque fois, en parallèle.

Edit : le but est de créer de petites histoires avec quelques exercices à l'intérieur, puis de les donner en devoir. Les élèves devraient arriver à la fin de l'histoire pour compléter le devoir.

+0 -0

Dans ce cas soit une 1 (c'est à la mode paraît-il), soit des pages rendues côté serveur. Les deux fonctionneront.

Est-ce-que t'as envie de faire une appli mobile ? (ça pencherait plus pour des APIs côté serveur).

Sinon t'embêtes pas. Rendu côté serveur ou rendu côté client seront à peu près équivalents.


  1. Single Page Application : une application entièrement écrite en Javascript et HTML, qui communique avec le serveur via des requêtes AJAX (REST, c'est encore mieux). 

+0 -0

Ok merci. Je faire ça simplement alors, avec un peu d'AJAX. Je ne suis pas vraiment limité au niveau des échanges client-serveur, vu le peu d'utilisateur que j'ai. Merci de ton avis :)

Edit : en plus je ne suis pas très bon en JS, je ne maîtrise aucun framework. Je n'utilise que knockout et jquery. Alors une SPA, ça me paraît difficile ^^

+0 -0

Personnellement je commencerais par la 1 (PHP tout simple), puis la 2 (AJAX) ensuite pour fluidifier l'interface si tu es toujours motivé.

Les gros inconvénients de la solution 3 / application à page unique dans ton cas, pour moi, c'est :

  1. Si l'aventure est longue, ça peut être lourd de tout charger en js au premier lancement
  2. Vu que tout est disponible chez le client tout de suite, il y a moyen de tricher pas trop difficilement et tu n'as que peu de moyens pour vérifier qu'on n'a effectivement pas triché.

En obligeant le joueur à passer par le serveur à chaque étape, ou tout au moins chaque étape cruciale, tu peux facilement t'assurer qu'il ne triche pas et qu'il ne peut pas tricher trop facilement

+0 -0

Vu que tout est disponible chez le client tout de suite,

Application à page unique ça ne veut pas dire "ne pas communiquer avec le serveur" hein… Le serveur peut très bien envoyer (en JSON) la question à afficher, et le code client se contenter de l'afficher.

+0 -0

Merci de vos conseils. Je pense directement m'orienter vers la solution 2 (AJAX). Il me reste à régler la question de l'organisation en bdd. Pour le moment, j'ai fait ça comme ça :

1
2
3
4
5
table 'stories' : (id, author_id, first_page_id, title, description)

table 'pages' : (id, story_id, title, subtitle, text_field)

table 'pages_organization' : (id, page_id, target_page_id, text_field)

Tout commence sur une page avec la liste des histoires. Lorsque l'utilisateur en choisit une, il tombe sur la 1ère page grâce à 'first_page_id'. De là, au fond de chaque page se trouvent des liens vers les pages possibles listées dans 'pages_organization', qui dirigent vers les bonnes pages target.

Par la suite, si le système fonctionne, j'ajouterai la présence d'exercices dans les pages, ce n'est pas difficile. Par contre, là où je vais ramer, ce sera pour la création d'histoires en ligne je pense.

C'est clair que je ne vais pas pouvoir faire aussi bien que ça par exemple :)

Edit : le système à possibilités multiples fonctionne en PHP pur, c'est déjà ça :)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte