Quelles technologies choisir
#1
Bonjour à tous !

J'aimerais me lancer dans l'aventure de créer mon petit jeu par navigateur, mais à l'heure actuelle, je ne sais pas sur quelles technologies m'orienter.
J'aimerais garder un certain contrôle sur le code, et j'ai l'impression que les outils comme Synfony sont excellents pour faciliter les choses, mais qu'au final on perd aussi des possibilités, de la vision sur ce qui est fait pour nous etc...

Dans tout les cas je sais que j'aurais beaucoup à apprendre à tout les niveaux, donc avant me lancer, j'aimerais au maximum savoir ce que je dois apprendre !

Est-ce que vous sauriez m'orienter vers des outils ou langages qui sont adaptés etc... ?

Jusque là dans les quelques projets que j'ai fais j'ai surtout touché PHP, un peu de javascript et je me débrouille en SQL.

Merci d'avance pour vos idées et conseils !!
Répondre
#2
Salut,

perso, je pense que tu te poses mal la question, car cela reviendrait à demander "qu'est ce que je dois apprendre pour faire de l'informatique?". C'est trop vaste comme question, et la réponse dépend spécifiquement de ce que tu comptes faire (comme jeu).

Il vaudrait donc mieux préciser le projet que tu as en tête, pour pouvoir alors savoir quelles technos seraient adaptées, et réitérer si besoin (une fois un "champ" de techno choisi, réajuster ce que tu veux faire comme jeu pour qu'il colle peut-être encore mieux à la techno, histoire de te faciliter la vie).

Parce que niveau "techno", ça va du SDK type Unreal Engine, Neoaxis ou Unity au PHP basique sans styling CSS (les "jeux à formulaires" comme certains les appellent : ) ) en passant par du Javascript full-client (ou client-server, généralement avec du push/communication bidirectionnelle entre client et serveur), sans oublier les outils type RPGMaker, Godot (ou un truc du genre) et autres IDE pour faire des applis mobiles... :/
Ah, puis j'oubliais Love (et je ne citerai pas la liste de langages type Haskell, Go, Rust, R, et je fais sûrement même des erreurs de nommage tant y'en a : ) )
Répondre
#3
Merci pour cette première réponse 2

Oui en effet c'est difficile de m'orienter sans avoir plus de détails.

Mon objectif c'est un jeu par navigateur orienté gestion et stratégie. J'aimerais pouvoir afficher une carte (probablement un découpage hexagonal), naviguer sur celle-ci, cliquer sur les cases.
Niveau graphisme rien de compliqué en vue avant un bout de temps, juste associer une image aux cases.
Le joueur disposera d'un certain nombre de personnages avec chacun leurs compétences donc il faut aussi une partie visualisation de personnage, je verrais bien une petite fenêtre avec un visuel du personnage en 3D mais je n'ai aucunes idées d'à quel point c'est facile ou pas à mettre en place.
Aussi quand on cliquera sur une case de la carte, j'aimerais pouvoir afficher une sorte de menu d'actions possibles un peu genre pop up.

Le reste au final ce sera du code pour ce qui est de la génération de ressources, expérience des unités etc...

On m'a dit que la mode en ce moment était aux Framework JS en front end avec du PHP en back end.
J'ai regardé rapidement les framework et c'est pas le choix qui manque, j'ai du mal à ce stade à déterminer sur quels critères m'orienter vers l'un ou l'autre ou même si la technologie est adaptée.

J'avais pensé à partir sur Synfony pour bien structurer l'application et gagner en compétence dessus, mais on m'a fait remarquer que même si cela procure beaucoup d'outils et raccourcis, cela masque aussi un certain nombre de choses. j'aime bien avoir le contrôle sur le code ...
Du coup en back end je me vois plutôt coder en manuel à mon rythme sans aides logicielles particulières.
Répondre
#4
Dans ce cas effectivement tu as les choix classiques.

Pour le JS tu peux regarder les frameworks React, Vue, Svelte par exemple.
Pour le backend tu trouveras ici des gens capables de t'aider en PHP, Elixir et Node/Express. Si tu connais déjà Symfony ça me paraît un choix tout à fait valide, ça te permettra de faire ce que tu souhaites faire. Et un framework, c'est comme le reste, si tu veux garder le "contrôle sur le code" alors il te faut apprendre à maîtriser le framework pour bien t'appuyer dessus tout en restant indépendant. Partir en "manuel" est une perte de temps car tu vas recoder (et probablement pas aussi bien) la couche HTTP, la couche des vues, des modèles, la connexion à la base de données, etc. Alors que Symfony te le donne d'office. Je ne sais pas si tu es débutant mais dans ce cas, la première règle à suivre avec un framework c'est de ne pas coder toute ta logique de jeu dans les controllers. Le plus simple pour ça c'est de travailler ton code dans la ligne de commande, ou alors dans une simple page web qui affiche tes données dans un <pre/> (voire opter pour du TDD), et quand une logique fonctionne, utiliser les controllers pour passer à ta logique les données venant du navigateur, et renvoyer le résultat au navigateur, uniquement.
Répondre
#5
Merci pour ces informations supplémentaires !

A première vue je pensais essayer d'apprendre React.
Je connais surtout les langages en eux même, je n'ai jamais utilisé Symfony encore, du coup c'est pour ça que j'essaie de faire un tour de table avant de me lancer dans l'apprentissage des outils dont j'aurais besoin.

J'ai oublié d'en parler précédemment, j'aurai aussi la question de la responsivité, il me faut avoir un site parfaitement adapté pour que le jeu soit jouable sur tout supports. J'ai déjà bossé sur la responsivité à la main, également vu un peu bootstrap. Est-ce qu'il y a quelque chose dans React par rapport à ce sujet ?

Je suis d'accord sur l'argument que tout refaire à la main, c'est souvent un bon moyen de passer beaucoup de temps sur du déjà fait avec le risque de le faire moins bien.
D'un autre côté je trouve ça vraiment intéressant aussi d'ajouter à la main les briques une par une car ça oblige à vraiment comprendre ce que l'on fait et l'utilité de chaque composant.
Je trouve que de plus en plus, on se repose sur des utilitaires sans se poser assez de questions sur comment ça fonctionne.

Mais bon je dis ça, je ne me suis pas encore lancé sur de très gros projet, donc je n'ai pas d'expérience personnelle sur ces deux solutions.
Répondre
#6
La question de réinventer la roue revient souvent ici. Beaucoup de gens se trouvent un prétexte pour recoder un énième framework.

Il est vrai que tu apprendras des choses en essayant de coder toi même une version de ces couches, mais il faut le faire intelligemment. Par exemple :

1. Prendre quelques heures et faire un prototype, jouer avec, regarder si ça fonctionne, être fier de soi d'y être arrivé.
2. Comparer son code avec un framework reconnu. Avoir été devant les mêmes choix permet de comprendre les choix des auteurs des frameworks, ainsi que leurs limitations.
3. Ranger ton code dans un coin, utiliser le framework reconnu et attaquer vraiment ton projet.

J'ai fait ça maintes fois, j'ai appris énormément de trucs, mais mes projets reposent pleinement sur du code qui n'est pas à moi en lequel j'ai confiance. Sauf dans un cas parce que la fonctionnalité n'était pas vraiment couverte pour le langage que j'utilise, je n'avais pas le choix et j'ai eu raison car mon package est utilisé par de nombreuses personnes.

Je pense qu'on a tous tendance à vouloir recoder ces couches parce qu'au fond c'est facile. Tu sais déjà ce que tu dois faire, et traiter une requête HTTP, savoir les headers à utiliser, les status codes à renvoyer, c'est basique en fait. Les frameworks connus ont beaucoup de code et de fonctionnalités car ils couvrent beaucoup de cas spécifiques, c'est pour ça que je ne vanterai pas de pouvoir faire aussi bien, mais les cas de base faciles, le chemin est bien balisé. C'est pour ça que tous les quatres matins tu as un pékin qui vient te présenter un nouveau Router pour PHP. Mais bon, oui, c'est facile de parser une URL et de chercher le controller correspondant dans un array, tout le monde y arrive.

Bon et des fois t'as un gars ou une meuf qui arrive avec un nouveau Router, et là par contre le truc est nickel et plus performant que la concurrence. Mais ces gens ont déjà utilisé de nombreux autres routeurs (c'est un exemple, ça vaut aussi pour les modèles, les controllers, …). Tu ne verras pas un débutant arriver avec une innovation qui chamboule le monde de PHP.

Ensuite quand on parle de créer un jeu, là on attaque quelque chose de difficile : c'est toi seulement qui doit définir ce que tu dois coder, ce qui est déjà difficile. Tu as peu d'exemples pratiques car tous les jeux ont une bonne partie de fonctionnements uniques, ou ne sont pas open-source. C'est donc là dessus qu'il faut se concentrer.

Mais bon, comme je le disais, n'hésite pas à coder toi-même des briques dont tu veux comprendre le fonctionnement et les enjeux. Simplement, ne t'y attache pas, et pense à les remplacer par un équivalent bien maintenu quand tu en as l'occasion. Mais je pense que tu apprendras tout aussi bien simplement en lisant du code. C'est en forgeant qu'on devient forgeron il paraît, mais ça ne marche pas pour tout. Par exemple on ne s'improvise pas chirurgien en commençant par dix ans à charcuter des gens au hasard. On se tape dix ans d'études à lire ce qui a été fait avant, à s'entrainer sur des prototypes, apprendre à choisir le bon outil (framework) pour chaque opération, etc.

Enfin, ce qui est intéressant dans un framework c'est également de créer une architecture, un tout cohérent. Mais un jeu à besoin de ça aussi, il te laisse donc toute la place pour t'amuser et t'exprimer.

Citation :Je trouve que de plus en plus, on se repose sur des utilitaires sans se poser assez de questions sur comment ça fonctionne.

Donc, se reposer de plus en plus, c'est bien, ne pas se poser de questions c'est bête mais l'un n'implique pas l'autre.
Répondre
#7
Je vois l'idée !

J'ai encore une question assez générale, mais en quelques mots, comment est-ce que vous définiriez l'utilité d'un framework JS ?
Qu'est-ce qu'il permet de faire ?
Quelle place occupe-t-il dans le projet ?
Est-ce que c'est quelque chose d'indépendant ou est-ce que ça se combine ? Par exemple React et Synfony ?
Répondre
#8
(08-20-2019, 09:15 PM)VincHawthorne a écrit : J'ai encore une question assez générale, mais en quelques mots, comment est-ce que vous définiriez l'utilité d'un framework JS ?
Qu'est-ce qu'il permet de faire ?

Les frameworks Javascript répondent généralement au besoin de faire de créer des composants riches ou bien une application riche et qui soit simple à maintenir, testable.

L'idée est de servir une page unique (souvent très légère) mais qui va BEAUCOUP changer. Gérer son cycle de vie (des données sont envoyées vers le serveur, de nouvelles données arrivent en réponse ou par push, l'utilisateur clique sur "précédent", etc.) devient vite difficile en le faisant à la main. Les frameworks JS permettent d'industrialiser tout ça de manière efficace. Généralement, ils poussent à utiliser un gestionnaire d'état qui te permet de raisonner facilement sur le fonctionnement de ton application.


(08-20-2019, 09:15 PM)VincHawthorne a écrit : Quelle place occupe-t-il dans le projet ?
Est-ce que c'est quelque chose d'indépendant ou est-ce que ça se combine ? Par exemple React et Synfony ?

Si tu fais une application riche, tu n'auras presque plus de HTML rendu par ton application. Tu auras juste beaucoup de fichiers Javascript (transformés avec des outils comme Webpack) pour générer tout le HTML dont tu as besoin. En caricaturant un peu : ton application PHP servira juste une page d'accueil en HTML très basique, et toutes les autres pages retourneront du JSON que l'application Javascript utilisera. Tu peux donc tout à fait avoir le backend en PHP avec Symfony et le frontend en Javascript avec React.
Répondre
#9
comme Sephi en précisant / insistant bien sur le fait qu'il faudra toujours connaitre le html et css. La différence, ce n'est pas une page html (générée par un langage serveur comme php ou autre, ou simplement des pages .html) qui est réalisée, c'est le js qui assemble des "blocs" de code html. Donc il faut toujours savoir rédiger ces blocs, et les stylés.

La différence fondamentale est la notion d'événement côté utilisateur (voire côté serveur dans le cas de tchat, pvp, ... toute interaction en temps réel/semi réel avec un autre joueur) qui modifie la page (et pas je clique sur un lien, j'arrive sur une nouvelle page)
[WIP]projet Rivages
[WIP]projet Arthur (comme si ça suffisait pas d'un...)
Répondre
#10
Bonsoir à tous,

Merci encore pour vos dernière réponses !
J'ai commencer quelques balbutiements sur Synfony et j'ai une question sur l'association Synfony/Git.
J'ai vu dans le projet Synfony des fichiers gitignore donc j'imagine qu'un certain nombre de choses sont déjà présentes pour aider.

Mais comme je ne connais ni très bien Synfony ni très bien Git, j'ai du mal à voir comment je fais le lien entre le projet, crée dans un dossier, et mon repository que j'ai crée sur github.

Est-ce que vous sauriez m'orienter ?
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  Jeu navigateur en 2016 : quelles technologies? Kaitos 42 9 343 12-20-2016, 10:10 PM
Dernier message: Vincent G



Utilisateur(s) parcourant ce sujet : 1 visiteur(s)