Java est il une bonne solution pour wakfu??

Répondre
Partager Rechercher
Bonjour,

Depuis quelque jour je test Wakfu sur l'open beta et je n'ai pu m'empêcher de remarquer qu'il y a encore pas mal de bugs mais ce qui m'inquiète c'est que beaucoup sont liés à des problèmes de programmation du moteur graphique et du moteur interne en Java. Je me demande si il est judicieux pour Ankama de développer Wakfu en Java tout du moins d'avoir lancé l'open beta alors que le moteur interne crash tout le temps.

J'ai toujours beaucoup aimé Ankama pour son design bien particulier et son gameplay stratégique mais j'ai peur qu'il fasse une erreur en se lançant sur un moteur java qui n'a pas l'air stable.

Donnez votre avis merci.
Je ne pense pas qu'ils puissent faire grand chose à ce stade du développement. Il est sans doute trop tard pour reculer.

Il leur faudrait tout recommencer à zéro et donc, entre guillemets, « annuler » le développement du jeu, pour reprogrammer dans un autre langage... je ne pense pas que c'est dans l'esprit d'Ankama pour le moment.
Si il à des plantages, il y à de fortes chances que cela n'ait rien à voir avec la machine virtuelle java en elle même. Car les rares bugs qui peuvent survenir sont soit du à des incompatibilités (connues et donc évitables) soit à cause d'un problème de programmation.

Je travaille dans le domaine bancaire et nous utilisons beaucoup le java comme language de développement. Quand c'est bien fait et éprouvé, c'est très stable.

PS: action script (language de programmation flash) et java reposent sur la même base.
Personnellement j'aurais préféré qu'ils utilisent un langage compilé (type C) qui du coup est beaucoup plus performant.

Maintenant pour ce que j'en ai vu, j'ai pas eu de plantage du moteur graphique, qui me paraît plus lent qu'instable.
Je connais bien Java aussi et si tu regarde mon premier post je ne fait nul référence à la machine virtuelle mais seulement au moteur du jeu.


Regardezdans le dossier de log le fichier texte où il y a toutes les exceptions de générées ...
par ce que tu pense qu'il y aurait eu moins d'exception en C ? je pense que c'est peut etre même mieux en java, car comme en flash c'est relativement souple, si un chargement plantouille ce n'est pas la mort et ça continue quand même.

En C il y aurait eu de forte chance d'avoir un magnifique segfault et plouf plus rien.

A mon avis avec le scrolling en temps réel ça met des grosses contraintes de timing, il faut que chaque élément soit chargé avant de pouvoir etre affiché à l'écran, et vu qu'il n'y à pas de chargement entre deux maps (comme dofus) tout se fait à la volée, et il y aura donc forcément des petits ratés par ci par la.

Mais bon pour l'instant y'en as bcp mais je ne pense pas qu'il faille blamer le language.
De toute façon, le problème ne viens pas du langage lui même mais de la façon dont les choses ont été programmées.

Et s'il est vrai qu'on perds pas mal en performance - de moins en moins remarquez - avec un langage interprété, on gagne par contre énormément en temps de développement (facteur 10 entre C/C++ et Java) ce qui laisse plus de marge pour optimiser ensuite.

Bref le choix du langage ne pose aucun souci à mon avis. Par contre il est évident que leur moteur nécessite encore beaucoup de travail.
Citation :
Publié par Keep KooL
Personnellement j'aurais préféré qu'ils utilisent un langage compilé (type C) qui du coup est beaucoup plus performant.

Maintenant pour ce que j'en ai vu, j'ai pas eu de plantage du moteur graphique, qui me paraît plus lent qu'instable.
oula, je sais pas quoi dire..... bah euuuuuuh.....C plus performant que java....oui certe a un certain niveau qui est d'ailleurs d'ordre academique sinon dans le concret comme ca a ete dit le langage de prog n'est nullement responsable ici (vous seriez etonne de voir ce qui est faisable en java cote "grosse" applications).
A part les pointeurs et le multi-heritage, il n'y a rien de fondamentalement differents entre les possibilites des deux langages (et encore tu simule le multi-heritage en java et il ne fonctionne qu'avec des pointeurs qui ne te sont juste plus directement accessibles).
Voit la solution java comme la panacee aux plantages qui te feront relancer ton os plutot que ta jvm.
Ankama a juste besoin de temps.



Citation :
Publié par drallieivEHD
par ce que tu pense qu'il y aurait eu moins d'exception en C ? je pense que c'est peut etre même mieux en java, car comme en flash c'est relativement souple, si un chargement plantouille ce n'est pas la mort et ça continue quand même.

En C il y aurait eu de forte chance d'avoir un magnifique segfault et plouf plus rien.

A mon avis avec le scrolling en temps réel ça met des grosses contraintes de timing, il faut que chaque élément soit chargé avant de pouvoir etre affiché à l'écran, et vu qu'il n'y à pas de chargement entre deux maps (comme dofus) tout se fait à la volée, et il y aura donc forcément des petits ratés par ci par la.

Mais bon pour l'instant y'en as bcp mais je ne pense pas qu'il faille blamer le language.
+1
Imho le problème initial décrit par l'auteur n'est pas directement lié au langage choisi, à la programmation du jeu ou à l'aspect technique en général.

Le moteur et la fréquence des crash sont à la hauteur de tout ce qui concerne ce MMO: très en retard par rapport à la "phase officielle" à savoir l'open-bêta.

J'ai pas l'impression que ce point là est plus en retard que le contenu ou le Game Design.


Je pense que l'application en elle-même est à la mesure du peu d'investissement qu'Ankama y fait, et je partage la crainte d'ailiosa sur le fait que le jeu risque de sortir dans un état qui lui fait pas honneur pour des questions marketing et de contraintes de temps.
Citation :
Publié par drallieivEHD
PS: action script (language de programmation flash) et java reposent sur la même base.
Pas vraiment non
AS3 est un langage ECMA, spécification qu'il partage avec JavaScript et non Java

Et sinon, de mon point de vu Java pour le JV c'est une epic failure, surtout sur Wakfu, pour le même genre de moteur, j'ai des perf similaire en AS3 et je le trouve plus adapté pour faire du JV que Java.

Sans parler de C# par exemple, XNA aurait été une solution viable, d'ailleurs leur éditeur de map est en C#, et avec Mono on se coupe meme pas de Linux...
Bah de toute façon ... Vu l'argent qu'ils vont faire dessus, çà change pas grand-chose ^^

Alors, oui, le C++ aurait été mieux et plus rapide (C++ 2* plus rapide que Java sur 1.000.000.000 d'opérations ou un truc comme çà, j'ai essayé une fois, j'm'en souviens plus).

Bonne chance pour cette discussion, qui va finir en un fatatras pas possible XD
Pour rectifier, la rapidité d'execution d'un langage dépend de plusieurs choses :
- de la manière dont c'est codé
- de l'optimisation du compilateur
- de la machine sur laquelle le programme est executé

"C++ 2* plus rapide que Java sur 1.000.000.000" c'est complétement erroné. Java est certe plus lent que le C mais le rapport est très faible.

De plus, java est un langage stable, facile à prendre en main et puissant pour créer des applications dont la performance n'est pas essentielle. Java permet la programmation orientée objet ce qui n'existe pas en C. Le C++ permet de programmer en objet.

S'il y a tant de bugs dans wakfu c'est du au fait que les développeurs doivent travailler sans tests unitaires. On appelle ça travailler à la rache ...

Le principe des tests c'est de vérifier au fur et à mesure de l'avancement du projet, qu'il n'y a pas de régression (bugs) dans l'existant.

En plus quand on voit le nombre de problèmes de compatibilité, on dirait qu'ils travaillent avec des API de bas niveau. J'en vois pas l'utilité.

Citation :
Sans parler de C# par exemple, XNA aurait été une solution viable, d'ailleurs leur éditeur de map est en C#, et avec Mono on se coupe meme pas de Linux...
XNA aurait été un très bon choix.

Et pour finir, en dehors de la programmation leur gros problème c'est qu'ils s'attachent aux détails avant de fournir quelque chose de simple et stable. On aurait pu penser qu'avec dofus, ils auraient pris connaissance de leurs erreurs mais non ils continuent dans leurs conneries.

Wakfu ressemble à un laboratoire dans lequel ils placent le maximum d'idée, ils peuvent se le permettre aujourd'hui mais demain les temps seront peut-être plus dur.
Histoire de relancer un peu le débat il y à pour moi trois aspects importants :

1. La performance à l'exécution :
Le C est directement exécuté par le processeur, alors que le java est exécutée par une machine virtuelle, et est donc forcément plus long. Par contre il ne faut pas oublier que c'est un jeu, graphiquement moyen, on ne parle pas de HD, ni d'affichage de milliers de polygones dans un univers 3D qui porte à perte de vue (même si on rentre limite dans des problématiques plus hardware que logicielles).

2. La portabilité :
La JVM java existe sur la plupart des systèmes et ne nécessite pas de compilation particulière, contrairement au C qui doit tenir compte des spécificités et être recompilé pour chaque environnement ciblé. Le déploiement est donc beaucoup plus facile et rapide en Java qu'en C. L'aspect modulaire, permettant des mises à jour de code lourd est très facile en Java. Une modularisation (du code compilé), ou un patch est beaucoup plus complexe en C.

3. La charge de développement :
Java propose de nombreuses librairies bien plus variées et ciblées qu'en C (i18n, luajava et log4j par exemple pour wakfu ). Cela permet donc de réutiliser très facilement du code déjà développer et d'ainsi ne pas réinventer la roue. Le C permet aussi d'utiliser des librairies, mais on trouve rarement exactement la librairie qui nous convient. De manière générale, le temps nécessaire à un développement en Java est aussi beaucoup plus court (outils de développement, librairies d'optimisation ou des tests, de déploiement, ...). Cela veut donc dire que pour un même temps de travail, un développeur Java arrivera à produire plus de résultat qu'un développeur C (en moyenne). Les évolutions seront donc plus rapidement faites (et testées) au dépit d'une légère perte de performances.


Au final, pour ce que Wakfu est (un jeu avec un large public visé), Java est selon moi un choix plus intéressant que du C.
Si par contre on parle d'un exemple complètement opposé, par exemple un logiciel de CAO professionnel, destinées à un parc de machine très ciblé, avec des fonctionnalités très lourde et amenées à être peu modifiée, un autre language serait plus adapté.


Et pour ceux qui ne seraient pas tout à fait convaincus par le Java, Wakfu utilise gluegen pour exécuter des librairies C natives pour certaines tache

Le mot de la fin : les languages de programmation c'est comme la cuisine, peut importe la recette utilisée, si on utiliser des mauvais produits on aura un mauvais plat.
Citation :
Publié par drallieivEHD
2. La portabilité :
La JVM java existe sur la plupart des systèmes et ne nécessite pas de compilation particulière, contrairement au C qui doit tenir compte des spécificités et être recompilé pour chaque environnement ciblé. Le déploiement est donc beaucoup plus facile et rapide en Java qu'en C. L'aspect modulaire, permettant des mises à jour de code lourd est très facile en Java. Une modularisation (du code compilé), ou un patch est beaucoup plus complexe en C.
C'est peut être vrai sur les gros systèmes ou les différentes VM sont surveillée et relativement bien standardisées.
Mais sur portable, par exemple, y a beau avoir nombre de téléphone portable implémentant une MV java, les constructeurs font tellement n'imp en l'implémentant, faire marcher le même code java d'un téléphone à un autre sans modification relève de la magie vaudou
Donc Java c'est bien les machines virtuelles c'est bien, mais ne jamais oublier qu'on peut être victime d'un implémentation de la VM bugguée.
En meme temps si l'on commence a utiliser 40 000 JVM differentes il est tout a fait logique de perdre en portabilite, les standards et la jvm officielle de sun sont la pour ca.
Sinon il y a pas a discuter sur le cote portable de Java, c'est sa plus grande force et je tiens a noter que non seulement les VM sont de plus en plus en vogue ( faut pas trop se demander pourquoi ) mais en plus il faudrait pas oublier que Java viens du C++ et que ( je me repete ) a part un acces direct aux zones (potentiellement) dangereuses du programme il n'y a pas de difference entre les deux a part sa portabilite (en tout cas dans le concret et non dans des demonstrations de post-doctorant en science informatique).

Je le dis clairement je prefere le Java au C, rien contre le C c'est juste que ca me tanait quand je savais que j'avais le meme resultat bien plus rapidement ( en terme de temps de code ) que Java et je parle pour moi ! je pense que tres honnetement chacun essayera ici de deffendre le language qu'il prefere donc inutile de rentrer plus dans le detail.

Maintenant pour ce qui est du choix de Java pour Wakfu c'est justement leur choix et rien de plus ( on peut maintenant chacun emettre son hypothese, la mienne -- pour le peu que ca interesse -- c'est la facilite. Attention ! N'allez pas me faire dire ce que je n'ai pas dit, ce n'est en rien facile de faire un jeu comme Wakfu bien au contraire c'est seulement que c'est pas forcement marrant de devoir appeler ses destructeurs chaque fois, entre autre, quand on sait ce qu'on veut au final et que Java nous permet de l'avoir).

Donc comme cela a deja ete tres bien dit, le language de prog utilise n'est pas celui qu'il faut pointer du doigt car tout depends de plusieurs facteurs qui ont aussi deja ete cites. Tout repose entre les mains du/des programmeur(s).
Pour choisir un language de programmation pour un projet il faut avant tout prendre en compte les facteurs determinant du projets et aux dernieres nouvelles, Ankama n'a jamais rien communique a ce sujet.

Au final on ne peut pas dire ici si java est un bon choix ou non tant qu'on ne connaitra pas ces facteurs (je sais par exemple que ca commencait doucement a les savonner de devoir effectuer des portages pour tel ou tel OS). Tout ce que je peux dire en tout cas c'est que quand on programme "bien" la difference cause par le choix du language n'est pas notable, seule le support ou les contextes du projet peuvent le justifier.
Citation :
Publié par therevolution
"C++ 2* plus rapide que Java sur 1.000.000.000" c'est complétement erroné. Java est certe plus lent que le C mais le rapport est très faible.
Owi Owi !
Et l'ASM est encore plus rapide ! Vite, recodons Wakfu en ASM !
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés