SmartFox Server : Un Bon Produit… mais Pas Parfait

Mise à jour : Cet article concerne la branche 1.x de SmartFox Server et non pas la nouvelle version plus récente et à la conception repensée SmartFox Server 2X.

Les aspects sociaux et communautaires n’ont jamais aussi présents dans l’univers actuel des technologies de l’information que depuis ces deux dernières années. La faute à Facebook et autres MySpace ou Twitter. Et qui dit communauté dit mise en relation des individus. Pour arriver à ce résultat, il est nécessaire de concevoir soi-même ou d’utiliser un serveur multi-utilisateurs dédié ou non au jeu. Une courte recherche Google montre que les prétendants « immédiats » ne sont pas légion. Seuls deux résultats ressortent immédiatement comme Electro Server ou SmartFox Server. C’est à ce dernier que nous allons nous insérer maintenant car cela fait déjà plus d’un an que je travaille avec presque quotidiennement et une bonne partie des ces bons et mauvais côtés sont d’ors et déjà ressortis dans mes diverses expérimentations.

Les bons côtés

Le prix

De façon pratique, utiliser une solution existante est avant tout une question de coût. Développer un serveur multijoueurs sûr, fiable et dont la charge peut facilement évoluer n’est pas une tâche facile. D’une part, cela demande un certain nombre de connaissances réseau bien entendu, mais aussi en matière d’optimisations multi-processus. Mais tant bien même une telle solution serait développée en interne par une société, il faudrait encore disposer par la suite d’une équipe de maintenance pour corriger les éventuels bugs et/ou faire évoluer la technologie en fonction des besoins. SmartFox Server propose une license progressive pour la version Pro dont le prix peut aller jusqu’à 2000 € pour un nombre illimité de clients.

Prêt à Etre Déployé

SmartFox Server a été développé en Java et peut donc être déployé sur à peu près n’importe quelle architecture serveur sans dépendance spécifique. De plus, un grand nombre d’API clientes existe pour plusieurs langages et/ou plate-formes très populaires tels que Flash/Flex, Unity ou encore iPhone OS. Des fonctions de base sont diponibles et permettant de réaliser quelques tâches simples sans difficulté.

Une Plate-Forme Reconnue

SmartFox Server est également une plate-forme utilisée dans un grand nombre de projets professionnels et commerciaux, recevant quotidiennement plusieurs dizaines de milliers d’utilisateurs. Cela dénote bien évidemment une qualité certaine pour ce produit.

Le Support

Une plate-forme dédiée au support sous la forme d’un forum est accessible à tous pour résoudre les problèmes rencontrés avec le serveur. En général, les réponses arrivent quelques heures après les questions, ce qui est appréciable dans un cadre professionnel.

Les mauvais côtés

Malheureusement, tout n’est pas rose au pays de SmartFox et cela entraîne parfois bien des complications dans l’utilisation de ce serveur. Voyons par le menu les points qui nécessiteraient véritablement une amélioration de la part de l’éditeur.

Code Source Serveur Propriétaire

SmartFox Server étant un logiciel payant, il est normal pour son éditeur de le voir comme un produit fermé. Cela pose d’autres problèmes du point de vue utilisateur lorsque certaines fonctionnalités sont erronées ou peu pratiques et que l’on reste sur sa faim : impossible de modifier quoi que ce soit. Dans la plupart des cas, il est possible de contourner le problème, mais pas de le résoudre véritablement. L’exemple le plus probant étant la classe DbManager fournie par SmartFox qui ne permet pas de gérer à sa guise les erreurs SQL ou d’autres petites choses comme les transactions. Nous avons été obligés de réécrire un gestionnaire de base de données qui puisse fonctionner avec SmartFox et en accord avec nos besoins. Dommage, d’autant que cela n’est pas le seul point faible du logiciel.

Peu de Fonctionnalités de Localisation

Même si un serveur n’est pas censé supporter la traduction d’une application, certaines fonctionnalités de localisation auraient dû être intégrées au serveur d’entrée de jeu. Notamment en ce qui concerne le filtre de mots tabou. Il est possible de fournir à SmartFox une liste de mots que l’on ne souhaite pas voir apparaître dans les messages publics ou privés du réseau. Le serveur filtre automatiquement ces mots et éjecte au bout d’un certain nombre de répétitions les utilisateurs disgracieux. Cette fonctionnalité est tout à fait appropriée mais il n’est pas possible de filtrer les mots tabou par langue. Ce qui peut entraîner des croisements inattendus entre les langues où un mot français tout à fait banal pourrait passer pour une insulte dans une autre langue. Mais cela n’est pas le seul cas où ce problème se pose. Les messages d’erreurs du serveur sont également exclusivement en anglais. Il faut donc créer des vérifications à chaque fois pour renvoyer les bons codes d’erreur au client qui se chargera d’afficher le message texte correspondant à l’utilisateur. Dommmage…

Une Documentation Peu… Documentée

Une documentation d’API est censée vous aider à apprivoiser la philosophie de développement qui a été choisie par les créateurs du logiciel, vous aider à éviter de tomber dans les pièges les plus basiques et surtout à comprendre comment marchent les différentes fonctionnalités. Malheureusement, là aussi, SmartFox fait les choses différemment. Certes l’API n’est pas très fournie avec à tout casser une trentaine de classes Java apparaissant dans la documentation. L’ennui c’est que la plupart des pages ne semblent que faire référence aux différentes signatures des fonctions sans en expliquer le sens. On va tout aussi vite avec Eclipse, et même plus loin, puisque l’IDE nous permet d’en savoir plus sur les classes pourtant à accès public qui ne sont pas référencées. Reprenons l’exemple du filtre de mots tabou (classe BadWordsFilter). Cette classe est tout à fait accessible à tous hors du package SmartFox mais elle n’est documentée nulle part. Elle est pourtant bien utile pour par exemple filtrer les pseudos disgracieux (qui ne sont pas automatiquement filtrés).

Résolument Développé pour les Jeux en Tour par Tour

Même si rien n’empêche d’envisager une utilisation pour un jeu temps réel, il est difficile en connaissant un tant soit peu l’interface de programmation de SmartFox de penser que son utilisation ne soit pas limitée à des jeux en tour par tour où les temps de réponses ne sont pas nécessairement critiques. On relève par exemple des ralentissements globaux spectaculaires du serveur dans les temps de réponse quand une quantité importante de données est envoyée à un client. Tout cela ne serait pas nécessairement un problème si cela intervenait uniquement au sein d’une zone, mais cela bloque toutes les zones.

Redémarrage et Rechargement Automatique des Extensions

La grande force d’un serveur comme SmartFox est sa capacité à être étendu à volonté par des extensions serveurs pouvant être codées en Java, en ActionScript 1/2/3 ou en Python. Pour des raisons de proximité avec le serveur, nous avons fait le choix de Java, mais les trois API proposent les mêmes fonctionnalités. En ce qui concerne les extensions Java, le serveur permet de recharger le code source en cas de modifications du fichier binaire. Tout se passe bien lorsque tout le code source est stocké dans des extensions, mais si vous souhaitez utiliser des classes ne dérivant pas des extensions fournies, le rechargement en cas de modification ne marche pas pour ces classes et vous êtes dans l’obligation de redémarrer complètement le serveur pour que les changements soient pris en compte.

Redémarrage, Occupation mémoire et Outils d’administration

Le dernier point sur lequel je m’arrêterai (et non des moindres) concerne la qualité de finition de l’outil en production. Certes, lorsque tout est bien programmé, le serveur fonctionne à merveille, mais laissez passer une seule exception un peu « violente » et le serveur tombe en panne générale immédiatement. Difficile de le considérer alors comme « rock solid » (solide comme un roc) tel que le site officiel le décrit. De même, en cas de redémarrage sous un environnement Linux 64 bits pourtant tout ce qu’il y a de plus normal, le serveur redémarre correctement mais la JVM dans laquelle il fonctionnait au départ reste figée en mémoire et une nouvelle est exécutée pour la nouvelle instance du serveur. Problématique si chaque instance réclame plusieurs gigaoctets de mémoire vive pour fonctionner. Dernière chose sur les finitions, SmartFox est pourvu d’une interface d’administration qui permet soit disant de connaître le pourcentage d’utilisation processeur du serveur mais, soit le serveur est très performant, soit l’indicateur est inopérant, car cette valeur est toujours égale à 0% (je vous laisse deviner la bonne réponse).

Conclusion

SmartFox promet beaucoup et offre déjà bon nombre de choses, mais la plupart sont terminées à moitié. Certes, le prix de la licence n’est pas très élevé mais on serait en droit d’attendre plus d’un logiciel qui se veut être à la pointe de ce qui se fait en la matière. SmartFox est en partie sauvé par sa communauté très active et qui permet d’avancer beaucoup plus vite, mais il ne faudrait pas grand chose pour qu’un concurrent un tant soit peu sérieux lui rafle la mise.

Publicités

2 commentaires

  1. Merci pour cette description du produit SmartFoxServer. Je voulais mettre Oregano pour son prix ( gratuit ) et efficacité, mais il est beaucoup trop compliqué pour moi a installer. J’ai donc essayé une version gratuite de SmartFox ( installation simple ) mais le prix est beaucoup trop haut pour moi.
    ps : je suis toujours a la recherche d’un bon produit.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s