Ce post a été publié sur LinuxFr.org. Vous pouvez le lire là bas, ainsi que les commentaires associés
Bonjour ’nal,
Quel plaisir de te retrouver. Je me suis enfin décidé à publier un APK de mon jeu pour que tu puisses le tester :
Ça fait des jours et des jours que je fais juste un dernier truc en me disant qu’après je publie, mais en réalité il y a toujours un truc à ajouter, il manque toujours quelque chose. Donc là c’est bon, j’y vais, tant pis pour ce qu’il manque, je pense qu’on peut beta tester.
Pour rappel c’est un jeu multi-joueur en ligne, et comme il n’y a pas beaucoup de joueurs je te suggère de te synchroniser avec des connaissances si tu veux trouver un adversaire !
Qu’est-ce que Bim!
(Section ajoutée suite aux commentaires de freem et Epy, merci !)
Bim! est un jeu « à la bomberman ». Deux à quatre joueurs sont dans une arène, le dernier survivant a gagné. Pour combattre, les joueurs posent des bombes dont ils peuvent augmenter la puissance en trouvant les améliorations disséminées dans l’arène. Une petite vidéo pour illustrer (clique sur l’image pour la lancer) :
À ma connaissance il n’y a qu’un seul autre jeu disponible sur Android avec un gameplay similaire et jouable en ligne, et il est évidemment non-libre. Le gameplay de Bim! se limite aujourd’hui à l’essentiel et devrait s’étoffer et se préciser dans les versions à venir en gardant en tête les bases : des parties simples et rapides, et une bonne ambiance. Tout en restant libre, bien sûr !
Quoi de neuf
Depuis la dernière fois, j’ai effectué les modifications suivantes.
J’ai changé le joystick logiciel pour quelque chose du type croix directionnelle (toujours logiciel évidemment) et j’ai mis une petite vibration sur les directions, ce qui permet de savoir que c’est pris en compte. Auparavant, avec le stick, je finissais toujours par avoir le doigt à l’autre bout de l’écran en essayant de tirer dessus comme s’il était physique. En plus d’autres petits problèmes de ressenti. Là avec la croix ça semble plus intuitif même si ce n’est pas idéal.
J’ai modifié la manière dont les entrées du joueurs étaient transmises à la simulation. Auparavant il pouvait y avoir plusieurs actions par cycle et l’application était immédiate. Maintenant il n’y a qu’une action par cycle et elle est appliquée avec un petit délai.
Le délai est important pour le jeu en ligne. Avec un effet instantané l’action d’un joueur était appliquée localement et envoyée au serveur qui la transmettait aux autres joueurs. Pendant le transport les autres joueurs avaient avancé de plusieurs cycles et devaient réparer la simulation avec les actions inconnues précédemment. Cela avait pour effet de faire popper subitement les actions des autres joueurs, ce qui était assez moche. Même en simulant une supposition des actions des autres, il y avait des ratés. En appliquant un délai à l’action cela lui laisse le temps d’arriver chez les autres avant d’être appliquée.
La musique du jeu est maintenant mise en pause lorsque l’application part à l’arrière plan.
Pas mal de modifs ont été faites sur l’aspect serveur. Déjà l’adresse du serveur de jeu est obtenue d’un service en ligne, ce qui me permettra de faire une transition plus douce lors de la mise à jour du premier.
Ensuite le serveur de jeu (et le client) sait maintenant gérer un second match après le premier.
Enfin le serveur envoie bien ses logs dans un fichier, maintenant avec l’horodatage.
Et bien sûr j’ai fait quelques bricoles sur des détails de compilation et sur la CI.
Bugs connus
Il y a quelques petits problèmes sur lesquels il va falloir que je me penche.
-
La longueur des flammes a l’air un peu aléatoire. Quand on prend les bonus elles grandissent, mais parfois elles redeviennent petites avant de redevenir grandes. Aucune idée si c’est un problème de sérialisation, ou d’algo, ou autre chose.
-
À cause du délai appliqué aux entrées de l’utilisateur on a tendance à poser les bombes dans la case voisine de celle où on était quand on a appuyé sur le bouton, c’est casse-pied.
-
On pose parfois deux bombes d’affilée. Aucune idée si c’est un bug ou si on a réellement appuyé deux fois sur le bouton. Un petit délai de temporisation entre deux dépôts de bombe serait le bienvenu.
Les pisteurs, la pub, et la mesure d’audience
Il n’y en a pas ! Ouais je sais, ça ne fait pas très moderne…
Le bon côté c’est que je n’ai pas à gérer des SDK d’analyse, ni à afficher des pop-ups de conditions d’utilisation, de cookies, et autres joyeusetés GDPR-compliant.
Le mauvais côté c’est que je me sens complètement à poil. La seule sorte de mesure d’audience que j’ai c’est un log anonyme sur le serveur. Si tu n’arrives pas à te connecter, je ne le sais pas. Si tu crashes, je n’ai pas de rapport de bug. Impossible de savoir dans quels menus tu vas, ni où tu cliques. Je n’ai pas la version de ton système, ta localisation, ou quoi que ce soit qui puisse m’être utile à comprendre ce que tu fais ni la portée de ce journal.
Du coup, si t’as un souci, il faudra que tu en parles dans un message sous ce journal :) C’est pas dit que je réponde mais ça me sera bien utile.
Téléchargement
La version zéro est disponible en téléchargement sur la page des releases sur GitHub. N’oublie pas d’inviter un ami pour jouer avec toi :)