Merlin's beard
#1
Attention un bon petit pavé quand même !

RUN FOOLS !

J'ai mis en ligne mon premier jeu web, hier ! 72

Nouvelle adresse : merlinsbeard.online => merlinsbeard.fr

Bon il s'agit d'un tout petit petit jeu web codé en quatre jours, qui reprend les règles du Dudo (ou du Perudo pour ceux qui connaissent).

Il permet quand même de :
- discuter sur un chat général
- créer une partie publique ou privée (i.e. protégée par mot de passe)
- discuter sur un chat de la partie
- gérer une partie si on est le leader de la partie (initialiser le jeu, verrouiller la partie, bannir un joueur)
- jouer !

Pour l'histoire :

La semaine dernière je voulais continuer à apprendre erlang & elixir et j'ai donc  commencé à faire un petit jeu de démo pour tester Phoenix. J'ai manipulé un petit peu le framework et il y avait beaucoup de choses intéressantes (comme leurs middlewares qu'ils appellent des plugs (!) ou les systèmes de channel), mais il me faudrait, je pense, un bon mois (au moins) pour assimiler toutes les bases framework ; et le truc c'est  que j'avais envie de faire le jeu tout de suite...

Du coup, j'ai basculé sur la stack que j'avais déjà apprise pour mon projet de jeu web principal, en me disant que ça m'aiderait, en plus, à voir si j'étais capable de publier un jeu web avec les même technos et à gérer l'hébergement (car je n'avais jamais hébergé de site web avant).

Note que j'ai quand même gardé de Phoenix une copie du css fourni dans l'appli de démo (quand on fait un mix phx.new), pour ne pas m'embêter trop avec la partie front.


Le jeu :

C'est un jeu de type poker menteur où chacun possède des dés cachés sous un gobelet (à information partielle donc) et où on essaye de deviner combien il y a de dés en tout sur la table.

En jeu il y a trois actions :
- surenchérir sur la mise en cours
- relever le défi (équivalent du Calzo dans le jeu Dudo)
- crier par la barbe de merlin (équivalent du Dudo dans le jeu Dudo)

Les valeurs des faces des dés dans mon jeu sont :
- l'os (équivalent d'un 2/tonto dans le Dudo = un imbécile en espagnol, dixit wikipédia)
- le crâne (équivalent d'un 3/tren = un train en espagnol)
- la coupe (équivalent d'un 4/cuadra = un pâté de maisons en espagnol d'Amérique hispanique)
- l'épée (équivalent d'un 5/quina = une pièce de 500 pesos au Chili)
- la couronne (équivalent d'un 6/sexta = sixième)
- le merlin (équivalent d'un 1/as)

Le merlin est une face bonus qui compte comme n'importe quelle face et il y a des règles spécifiques concernant cette face lors des mises.


Mon retour sur le choix de l’hébergement :

Comme j'ai fini la 1ère version du projet après quelques jours, et bah je ne pouvais plus procrastiner comme avec mes autres projets et j'ai vraiment dû franchir le pas en me lancer dans la phase d'hébergement.

Comme je n'y connais pas grand chose en hébergement, j'ai décidé de choisir OVH, qui m'avait l'air d'un vieux "classique".

J'ai choisi l'offre VPS SSD la moins chère (VPS SSD 1 à 2,99€ HT/mois) avec une debian strech et un nom de domaine ".online" en rabais à 0,69 € HT/an au lieu de 28,99 € HT/an (bon, j'espère que je ne me suis pas fait avoir et qu'ils ne vont pas remettre le prix d'origine l'année prochaine).

Un problème que j'ai eu : j'ai eu un petit souci lors de ma 1ère commande, celle du nom de domaine à moins d'un euro (je ne sais plus le prix TTC exact) : j'ai été débité d'1 € sans qu'aucune commande ni facture n'apparaissent dans mon espace client (pas compris ?? Je regarderai si j'ai été débité de cet euro..) Puis j'ai recommencé une nouvelle fois la commande et cette fois ci tout s'est bien déroulé...

Bon du coup j'ai commandé le VPS ensuite car il n'y a pas de pack VPS + nom de domaine (on est obligé de faire 2 commandes) alors qu'il y a des offres groupées pour les mutus par exemple.

Mais au final, tout a été rapide dans les services et j'avais déjà un jeu en ligne le jour même (en http).

Mon retour sur le passage en HTTPS  :

Hier je me suis dit que ce serait bien de basculer en https ; surtout que sans reverse proxy sur linux on est obligé de lancer son appli en root si on veut pas se prendre une erreur EACCES pour cause d'avoir démarré une appli qui écoute sur le port 80.

Du coup j'ai testé la SSL gateway d'OVH.

En fait c'est pas si mal et c'est plutôt rapide : les robots ovh font tout le travail et il y a juste à saisir l'IP de la passerelle qu'on reçoit par mail dans le panel DNS...mais...

Par contre j'ai juste un gros reproche, c'est qu'OVH ne précise pas clairement :
- que ça ne fonctionne que sur le sous-domaine
- que les options redirection HTTPS, HTST, etc. et bref TOUTES les options SSL gateway sont réservées aux offres payantes (parce que ce n'est pas clair du tout dans le tableau comparatif : ça ne parle que de load balancing, d'IP dédié ou de choses comme ça).

Du coup j'ai trouvé ça un peu léger et, finalement, j'ai découvert que cerbot fait le même travail en 5 minutes avec nginx ou apache.

Du coup je recommanderai plutôt nginx en reverse proxy + cerbot pour une appli node.js en https ; je ne sais pas ce que vous en pensez ?

Mon retour sur l’hébergement de jeu sur un VPS :

Je n'ai pas grand chose à dire pour le moment (ça fait 1 jour, je n'ai pas assez de recul) à part que je me rends compte que j'y connais rien, qu'internet est vraiment bien documenté et que j'ai découvert (au sens pratique) plein de choses intéressantes  : les DNS, les iptables, plein de fichiers de config, pm2, nginx, cerbot, etc.

Au niveau technos & langages :

En très bref, je suis parti  sur du javascript :
- la partie client est faite avec react.js et avec un client qui est transpilé & builder avec webpack & babel
- la partie serveur est faite avec express.js, sous node.js
- le client &  le serveur communiquent avec socket.io

J'ai choisi de ne pas faire de persistance pour ce projet, donc pas de BDD (mais sinon j'ai l'habitude d'utiliser postgresql & pg).

Pour l'authentification, j'ai repris le système classique qu'utilise mon projet principal, c'est à dire via un token jwt :
- 1.a : le client fait un appel ajax avec ses identifiants
- 1.b : le serveur vérifie les identifiants et, si c'est ok, crée un jeton chiffré qu'il renvoie au client
- 2.a : le client utilise le jeton pour se connecter à socket.io (qui écoute sur le serveur)
- 2.b : le serveur vérifie le jeton et, si il est ok, accepte la connexion socket.io qu'il associe à un user et se prépare à traiter les commandes du jeu

Mais bon ici, quand le serveur vérifie les identifiants, il se contente de confirmer qu'il n'y a pas un autre user connecté avec le même login.

Et du coup (c'est là où je voulais en venir en parlant de ça) c'est tout à fait possible de se connecter avec plusieurs onglets pour tester le jeu tout seul avec différents logins (car une partie de "Dudo" nécessite d'être au moins 2).

Le TDD :

Lors de l'écriture de mon code j'ai pratiqué intensément le TDD aka le "Totally Drunken Development" qui, comme son nom l'indique, consiste à produire du code en étant pas vraiment DRY.

Ouais non, faut pas déconner non plus ; mon module de test c'est juste un " console.log(\n"Pad de test !"); exit(0); ".

Et puis de toutes façons les "vrais" ils travaillent que sur du légacy code, et pis si t'as vraiment des balls, tu codes en COBOL, et si t'es pas d'accord, j'te prends dans l'octogone ! Ce message s'auto-éditera dans 5 secondes, bonne chance Jim !.

Par contre j'ai pu testé une partie hier avec murthy et spoke, ce qui m'a permis de noter plein de bugs que j'ai corrigé hier soir avec une mise en production des fixs ce matin ; merci à eux !
Répondre
#2
Citation :un nom de domaine ".online" en rabais à 0,69 € HT/an au lieu de 28,99 € HT/an
Gaffe car OVH a parfois tendance à faire des offres d'appel hyper-bas-coût, puis à faire payer plein pot le renouvellement !
Répondre
#3
(08-08-2019, 05:40 PM)Xenos a écrit :
Citation :un nom de domaine ".online" en rabais à 0,69 € HT/an au lieu de 28,99 € HT/an
Gaffe car OVH a parfois tendance à faire des offres d'appel hyper-bas-coût, puis à faire payer plein pot le renouvellement !

Exactement, je me suis posé la question.

Au début en lisant 0.69/an je pensais que comme il y avait le "/an" on parlait de plusieurs années mais j'ai un gros doute quand je vois qu'il y a marqué renouvellement à 38,39€ TTC sur cette page.

Du coup je viens de désactiver le renouvellement automatique pour le domaine dans "Gérer mes service" et ça m'a marqué que ce sera désactivé à date d'échéance si je n'ai pas payé.

Je verrai combien on me demande à ce moment là et je vous ferai un retour si j'y pense.

De toutes façons, je me fiche un peu du référencement pour ce projet.
Répondre
#4
En effet! Il va falloir que je fasse la même vérification sur varii.space... j'avais oublié ça https://www.ovh.com/fr/domaines/dotspace.xml :/

Perso, si tu fais du petit projet "comme ça vite fait", tu peux prendre un domaine classique (.com) et mettre tous les jeux dessus. C'est finalement ce que j'ai fait sur https://reinom.com et c'est clairement plus simple à gérer que 1 domaine/mini-jeu, ou même que 1 sous-domaine/mini-jeu

Au plaisir de faire une partie sur merlin ! : )
Répondre
#5
Moi je pensais faire 1 VPS avec plusieurs domaines qui pointent dessus et nginx qui dispatche sur les différents jeux mais si c'est trop d'arnaques comme là je vais peut être faire comme ça au final (1 seul domaine) ; mais il faudrait que je trouve un nom qui sonne bien.. 2

Quand tu veux pour une partie de merlin. 34
Répondre
#6
Bon du coup j'ai réservé merlinsbeard.fr (les .fr sont à 8,39 € TTC/an, ce qui est déjà plus raisonnable que 22€ ou 38€) et je ferais la bascule au niveau du code au prochain commit (enfin je dis commit mais j'utilise même pas de gestionnaire de version ; à la prochaine version plutôt).

Et en parlant de prochaine version, je pensais :
- pour une mineure : rajouter les règles du Dudo (sur la vue page d'accueil et peut-être sur la vue de jeu)
- pour une éventuelle V2 : proposer d'autres jeux à jouer (et tjs sans pub, sans inscription, sans tracking)

Je pensais à des jeux qui se joueraient sans limitation du nombre de joueur (comme les loups-garous), est-ce que vous en connaissez d'autres ?
Répondre




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