JeuWeb - Crée ton jeu par navigateur
Jeu navigateur en 2016 : quelles technologies? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Jeu navigateur en 2016 : quelles technologies? (/showthread.php?tid=7719)

Pages : 1 2 3 4 5


RE: Jeu navigateur en 2016 : quelles technologies? - Kaitos - 14-11-2016

Citation :Il n'y a rien que PHP fera mieux que Node, et il y a un tas de choses que Node fera mieux que PHP
-----------------------------------------
Je suis d'accord qu'une stack hétérogène est très chiante à gérer et ne sera probablement pas une bonne solution.

Vous m'avez convaincu, une seule techno côté back-end me semble être un choix plus judicieux.

Citation :Si l'énorme permissivité de javascript te fait peur (et ça serait complètement légitime), tu peux aussi carrément essayer de programmer en TypeScript.
La librairie async offre une alternative relativement élégante aux "poupées russes" de callbacks.

Je note ! J'avais aperçu CoffeeScript il a quelques temps aussi...
Bref, si mon choix se tourne vers nodeJS, je regarderai attentivement les outils que tu viens de me proposer. Merci beaucoup.

Citation :Personnellement j'utilise le langage Elixir et le framework web Phoenix qui intègre un serveur web de production haute performances gérant les websockets (ou le long polling) de façon transparente en plus des classiques controlleurs, vues, templates, etc.
Intéressant! Oui je suis tout à fait prêt à me tourner vers un autre langage, si celui-ci me semble plus adapté.
Tu pourrai m'expliquer pourquoi tu as fait ce choix? Et si possible, de me listes les avantages et inconvénients? En résumé: Pourquoi devrais-je me tourner vers Elixir dans mon cas?


RE: Jeu navigateur en 2016 : quelles technologies? - niahoo - 14-11-2016

J'ai choisi Elixir pour deux raisons.

D'abord parce que la machine virtuelle BEAM (un peu comme la JVM pour Java) sur laquelle il tourne est une petite merveille qui permet de construire des programmes ultra robustes en ayant pour principal objectif de pallier tout les problèmes qui peuvent arriver (et qui vont arriver !) sur un programme qui tourne en continu, 24h/24, 7j/4 comme un serveur de jeu, et qu'elle est notamment optimisée pour programmer sur des architectures d'ajourd'hui (serveurs multi cœurs et programmes distribués sur plusieurs serveurs) sans demander gérer ça soi-même. BEAM existe depuis 30 ans environ et ne cesse de s'améliorer d'année en année.

Ensuite parce-que le langage en lui même est très charmant (hormis sa syntaxe inspirée de ruby (comme Coffeescript d'ailleurs) qui est une insulte au bon goût mais qui reste très facile à lire (pas comme Coffeescript)). Déjà ce n'est pas orienté objet, les variables sont immutables, il y a peu de constructions logiques (fonctions, if/else, switch, etc.) mais c'est largement suffisant, et si besoin on peut créer soi-même les siens car le système de macros est le meilleur que j'ai jamais vu, on peut créer des millions de processus concurrents (ce qui peut remplacer des objets quand on a besoin de créer des petites cellules indépendantes qui communiquent entre elles), et d'autres trucs ultra pratiques, comme le pattern matching, l'opérateur pipe.

Ensuite, les bonus :

Phoenix est cool, rapide, pas vraiment compliqué même si la doc pourrait être plus élaborée. En plus il est utilisable comme un petite librairie ou comme framework structurant toute l'appli. Perso je suis entre les deux.

Le package manager mix est de bonne facture et le compilateur est top.

La gestion de l'unicode est correcte et pas chiante comme en PHP.

Pour les Inconvénients, c'est plus difficile à héberger que PHP ou Node car l'offre est plus faible. Moi je m'en fous j'ai un serveur privé. C'est un langage fonctionnel immutable donc il faut adopter une nouvelle façon de penser ; ceci étant dit ce n'est pas compliqué que le paradigme orienté objet et se secouer un peu de temps en temps ne fait pas de mal.
Ce n'est pas très efficace pour faire des milliers de calculs dans tous les sens. Il vaudra mieux pour cela créer des fonctions en C ou Java et les appeler depuis Elixir (Elixir peut faire tourner ces programmes en faisant croire au reste du code que c'est un processus Elixir afin de communiquer facilement avec lui).

Et il vaut mieux comprendre l'anglais pour se lancer.

Évidemment ce sont des avis personnels Smile

edit: zut, encore un pavé !


RE: Jeu navigateur en 2016 : quelles technologies? - Kaitos - 14-11-2016

Pour commencer, merci d'avoir répondu aussi rapidement et avec autant de précision.
Ok c'est un petit pavé... mais très intéressant !
Je ne connaissais pas du tout Elixir, je n'en avais même jamais entendu parlé...

Citation :permet de construire des programmes ultra robustes en ayant pour principal objectif de pallier tout les problèmes qui peuvent arriver (et qui vont arriver !) sur un programme qui tourne en continu, 24h/24, 7j/4 comme un serveur de jeu
Pourrais-tu développer cette partie par hasard?

De ton côté, tu couples Elixir avec quelle autre technologies ? As-tu fais le bon choix ?
Car si je tente de coder un prototype en Elixir, j'aimerai ne pas trop tergiverser ! Quitte à récupérer une solution prête à l'emploi sur Github !

Et dernière question, après j'arrête de t’embêter ! =)
Pourquoi devrais-je choisir Elixir plutot que NodeJS? (Car j'allais potentiellement partir sur NodeJS)


RE: Jeu navigateur en 2016 : quelles technologies? - niahoo - 14-11-2016

Elixir est un langage compilé sur la machine virtuelle BEAM, cette même machine à été développée pour le langage Erlang créé par Ericsson qui servait à exploiter leur infrastructure télécom. Toute la plateforme (BEAM, Erlang, les librairies disponibles) a été créée dans un simple but : la tolérance aux pannes. Si jamais il y avait un problème sur un appel entre deux personnes, ça ne devait pas faire planter quoi-que-ce soit d'autre dans l'application. Et il fallait qu'à aucun moment on ne puisse pas appeler, la plateforme devait toujours être disponible, h24. C'est toujours le cas.

Tous les choix architecturaux ont été faits dans cette direction : variables immutables, mémoire non partagée, langage fonctionnel, concurrence et légèreté des processus, etc.

Du coup, bah oui, c'est robuste. Le chat de Facebook a longtemps tourné sur des serveurs écrits avec Erlang (ils l'ont réécrit en C++ il y a quelques temps car ça commençait à chauffer vu le nombre d'utilisateurs et le fait que les pros de Erlang sont peu nombreux et généralement pris).

Elixir bénéficie de tout ça puisqu'il compile vers BEAM, mais la communauté et les librairies sont plus orientées vers le web.

Je couple Elixir avec Javascript côté navigateur. Est-ce que j'ai fait le bon choix ? Je pense arriver à mes fins sans trop de problèmes, mais on saura si c'était le bon choix seulement à ce moment là. Ceci dit ça fonctionne, ça ne fait rien de moins que PHP ou Node, donc au pire c'est largement suffisant.

Tu devrais choisir Elixir plutôt que Node si les aspects que j'ai décrit dans mes deux posts t'intéressent. Mais si Node te motive, tu peux très bien l'utiliser, ce n'est pas un mauvais choix.

Tu peux aussi travailler un peu avec les deux pour comparer au début.

Il y a cet exemple de jeu fait avec Elixir dont le code est disponible sur Github : https://phoenix-battleship.herokuapp.com/


RE: Jeu navigateur en 2016 : quelles technologies? - Kaitos - 14-11-2016

Difficile de ne pas être intéressé par une technologie robuste, rapide et optimisée aux architectures matérielles d'aujourd'hui.
Surtout pour une application de jeu!

De ce fait, je pense réaliser un prototype en Elixir, dans le but de voir si ça me plait ou non. Car sur le papier ça semble vraiment pas mal.

Merci bien.


RE: Jeu navigateur en 2016 : quelles technologies? - Kaitos - 14-11-2016

Connais tu des bons tutos par hasard? Ou des sites listant les bonnes pratiques a adopter avec élixir ?


RE: Jeu navigateur en 2016 : quelles technologies? - niahoo - 14-11-2016

Si tu lis l'anglais, le site officiel a tout ce qu'il faut pour se lancer.


RE: Jeu navigateur en 2016 : quelles technologies? - Kaitos - 16-11-2016

D'accord merci.

Un des problèmes qui me semble important est l'accessibilité du langage Elixir et sa faible communauté (peu de personne semble qualifié en Elixir) . Imaginons qu'un jour, il me faille déléguer une partie du développement à une autre personne. Je pense qu'il sera difficile de trouver quelqu'un apte pour ce type de projet.


RE: Jeu navigateur en 2016 : quelles technologies? - niahoo - 16-11-2016

Pour l'accessibilité, je ne crois pas, le langage est simple à apprendre, tout ce qui est manipulé sont des types de données de base, il n'y a pas de classes, d'objets, de this, mais simplement des données et des fonctions. Je pense au contraire que c'est très accessible.

Pour déléguer une partie du dev tu trouveras de toutes façons beaucoup plus de gens sur le front-end, donc tu peux garder le backend, mais sinon effectivement la communauté est encore petite.


RE: Jeu navigateur en 2016 : quelles technologies? - Sephi-Chan - 16-11-2016

Je ne suis pas d'accord sur le caractère accessible : si le langage en lui-même l'est, concevoir des applications Elixir n'est vraiment pas triviale, surtout pour quelqu'un qui vient du Web et de sa facilité. Wink