IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Microsoft mise sur C++ plutôt que Java pour écrire la nouvelle version de Minecraft Education Edition
Gage de plus de rapidité ?

Le , par Victor Vincent

430PARTAGES

8  0 
La prochaine version de l'édition de Minecraft destinée à l’éducation sera disponible l’été prochain et écrite en C++ plutôt qu’en Java, langage avec lequel étaient écrites les précédentes versions. Ce pari de la société permettrait au célèbre jeu de gagner en rapidité et en souplesse, d’après des développeurs de la plateforme. La société annonce que toutes les fonctionnalités existantes dans les anciennes versions Java seront conservées dans la nouvelle version C++. En plus de cela, il est projeté d’ajouter de nouvelles fonctionnalités à la nouvelle version. Les élèves qui utilisent Office 365 auront notamment la possibilité de se connecter à l’aide de leur compte grâce à leur identifiant Office. Ils pourront également mettre en place des réseaux peer-to-peer sans serveur.

Le vrai défi pour les équipes de Microsoft sera de pouvoir implémenter toutes les fonctionnalités de la version Java et que celles-ci restent compatibles aussi bien sur les ordinateurs, tablettes, smartphones et consoles de jeu Windows. Une refonte d’une application telle que celle-ci pose aussi un autre problème qui n’est pas des moindres, celui de la communauté qui soutient le jeu. En effet, si la communauté de Minecraft, qui participait au développement de la plateforme, ne peut plus contribuer en utilisant le langage Java, cela pourrait considérablement diminuer l’activité de cette dernière.


Source: windowsa2z.com

Et vous ?

Pensez-vous que Microsoft fait le bon choix en réécrivant Minecraft en C++ ?

Voir aussi

la rubrique C++

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de EyZox
Membre confirmé https://www.developpez.com
Le 01/02/2016 à 12:25
De mon point de vue, ça n'a surtout rien a voir.
Ce n'est pas Java le problème, c'est la manière donc le programme est conçu et écrit.
J'invite les connaisseurs à regarder toutes les bizarreries farfelu qu'on peut apparemment trouver dans le code Minecraft.
Quels sont les vrai problèmes de performance de Minecraft liés uniquement à Java ?
Minecraft n'est pas multi-thread, est-ce lié à Java ? On charge et on affiche plein de données dont on n'a absolument pas besoin, est-ce lié à Java ?

Je vous invite aussi à aller faire un tour sur les forums Minecraft afin de constater comment on y trouve tout et n'importe quoi, et l'idée que Java est responsable de la médiocrité des perfs, au vue des arguments techniques qu'on y trouve, semble sortis d'un collégien de 14 ans développeur expérimenté qui "maitrise" tout les langages et qui a déjà réalisé plusieurs benchmark sur les PC de la bibliothèque à l'aide du chronomètre ultra-précis de sa montre mickey (Oui j'ai une petite dent contre la communauté minecraft et son manque de maturité (Cf. l'affaire des licenses de mods imposés et l'affaire des achats in-game interdit))

Ça me rappel la mode "Linux". Période durant laquelle on conseillait a tout ceux disposant d'un PC moyen de gamme de jouer a Minecraft sur Linux parce qu'il y avait de meilleur performance (jusqu'a 45% de FPS en plus !!). Ah ? Pourquoi ? Comment ? C'est toujours un mystère aujourd'hui ... en tout cas, ceux qui sont passé sur Linux uniquement pour jouer à Minecraft avec 30 fps en plus se sont bien rendu compte que tout ça n'était pas très sérieux. Dans les quelques mois suivant, plus un bruit sur Linux ... Mettez a jour vos pilote graphique alors ! +60% de FPS ! Ou bien faite une mise a jour de la librairie LWJGL +10% de FPS ! Bon aujourd'hui on ne trouve plus grand chose, donc proposons de tout réécrire en C++ ou de passer à Java 8 !

Certes dans ce que je viens de dire, on y gagne peut-être quelque chose mais c'est dérisoire.

Faites un Minecraft en C++, vous tuez tous les mods, vous tuez tout le jeu. Quelle est la proportion de joueur qui utilise encore Minecraft Vanilla ?
12  2 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/02/2016 à 12:59
Personnellement, je n'ai rien contre une refonte de Minecraft si les fonctionnalité restent, il est vrai que le jeu actuel était techniquement loin d'être optimum, que soit la faute de Java ou non.

Par contre, maintenant que Microsoft est aux commandes on peut être presque certain que l'on va dire au revoir au multi-plateforme et pour ce qui est des mods je crains également le pire.
11  1 
Avatar de Freem
Membre émérite https://www.developpez.com
Le 08/02/2016 à 15:41
Citation Envoyé par koala01 Voir le message
Salut,
Cependant, je me rend compte que ce qui risque de poser problème pour beaucoup d'entre vous est... que tous le mods créés pour minecraft risquent d'être à refaire.

J'ai simplement envie de poser la question "Ah bon, et pourquoi donc "

Car, à moins qu'il ne s'agisse réellement de remplacer un fichier .class par un autre (dans lequel on a modifié le code d'origine, oserais-je dire), il y a énormément de projets "multi langages" qui utilisent une base de C++ dans certains coins, une base de java dans d'autres et, qui sait, pourquoi pas un peu de C#, de python ou de n'importe quel autre langage encore ailleurs.

A vrai dire, je me demande même s'il y a vraiment un seul langage qui soit tout à fait incompatible avec n'importe quel autre (mis à par le C peut-être ).


Pas expert en dev non plus donc.
Pour info, quand on fait des bibliothèques partagées, le C++ est incompatible avec lui-même, potentiellement d'une version d'un compilateur à une autre version du même compilateur, sans parler entre divers compilateurs. Je parle bien des binaires générés, hein, par du code source.
Les langages ne sont généralement compatibles qu'avec le C, et c'est de par cette compatibilité C (qui est quand même limitée, qui impose en général de se taper du code spécifique d'import de fonctions, pas toujours si simple. En C# j'avais essayé, mais essayer de comprendre ces histoires de pointeurs sécurisés ou non, et le fait d'appeler tel ou tel truc sécurisé ou non d'une portion de code qui ne l'est pas était une galère sans nom. En Java il me semble que c'est moins lourd.) qu'ils sont compatibles les uns avec les autres.

Quelques éclaircissements au sujet de l'incompatibilité du C++ avec lui-même, il faut savoir que l'ABI n'est pas imposée par le standard, pour que les éditeurs de compilo/lib standard puissent optimiser le comportement dans la direction qui leur sied. Et ensuite, garder une API stable d'une version à l'autre d'un système n'est pas aussi évident pour un langage natif que pour un langage interprété/semi-interprété (ou qui tourne sur une VM, comme vous préférez). Ajouter à ça les différences entre les systèmes, que ce soit l'OS (win/linux/*BSD) ou le matos (32/64bits, x86/arm, big/small/whatever endian,...).
Quelques exemples:

* Le C (et donc le C++) fournit des types par défaut dont la taille varie selon l'architecture. En 16 bits, un int faisait 16 bits, en 32 bits il en fait 32. En 64 bits, ça dépend de l'OS sous-jacent. A savoir que, le C++ fournit en standard des types dont la taille minimum et/ou maximum depuis plus longtemps que C++ (uint32_t, uintleast32_t, ce genre de trucs). A l'origine, ils ne fournissaient que ces types à taille variable. J'ai découvert ce problème en BTS, parce que je savais programmer avant, et que j'utilisais de vieux compilos 16bits, et j'ai très rapidement cessé d'utiliser les types natifs, sauf les char (qui eux, sont stables à priori... pas garantit, mais ça doit au moins être compatible ASCII, donc minimum 7 bits, et je doute qu'il reste beaucoup de proco qui utilisent des bytes de 7 bits...). D'ailleurs, pourquoi la SDL offre-t-elle des types non natifs (INT32 p.e.) (on peut aussi se demander pourquoi elle n'utilise pas les types standards, mais la réponse est simple: Visual Studio, au moins jusqu'au 2005 inclus, ne fournissait pas stdint.h, pourtant standard C99 (mais C++11 seulement, oui ce sont des langages différents)).
* L'implémentation des vtables, le truc qui permets le support de la RTTI (qui est d'ailleurs un mécanisme coûteux), est laissée à la discrétion du compilateur. Si la vtable est encodée en mémoire au début de la classe, ou après les données de la classe, ou dans un segment différent selon le compilateur, les ABI de la classe pètent, et un binaire C++ ne pourra pas être exploité d'un système à l'autre.
* les exceptions, dont l'implémentation n'est pas spécifiée par le standard, encore une fois. Par exemple, que spécifie le standard quand une exception n'est jamais rattrapée? Et si elle est lancée d'un binaire différent (appel d'une "DLL" par une autre ou par un exécutable, par exemple et pour faire simple) sans être rattrapée dans ce binaire (mais l'est dans le binaire appelant)?
* l'alignement mémoire, qui est un problème matériel mais qui ne concerne pas les langages non natifs (sauf ceux qui font joujou avec le réseau, j'imagine?).

Bref, écrire du code natif et portable n'est pas aussi trivial qu'on peut le croire. Surtout si en plus on veut un truc un peu performant.
Le faire en C++ relève de l'impossible, sauf si l'on accepte de ne pas utiliser un certain nombre de fonctionnalités C++. Je m'étais penché à une époque sur la création d'un système de plug-in, où l'API comme l'ABI doivent être rétrocompatibles au maximum d'une version à l'autre (il y à de bons articles dessus sur drdobbs pour les curieux) et en gros, la méthode classique (la plus simple aussi), c'est de ne fournir que des structures et des fonctions qui prennent ces structures en paramètre qui les génèrent et les nettoient, des "classes dépliées" donc.
Sauf que... pour qu'une telle bibliothèque soit exploitable à fond en C++, il faut fournir les détails d'implémentation de la structure, sinon il sera impossible de l'utiliser dans des templates, tels que std::unique_ptr. Ou, au moins, donner au compilateur un moyen de connaître la taille de cette structure (attention à l'alignement, ici).

Je pense que le C est probablement le langage qui à la compatibilité maximale avec les autres langages, grâce à son manque de complexité. Et pourtant, ça reste loin d'être simple, de faire du code portable et efficace.


Dés lors, j'ai envie de dire que, pour que les mods fonctonnent, il "suffit" de deux choses :
  1. que microsft puisse mettre un système de plugins cohérent au point pour son code C++ et
  2. qu'ils fassent en sorte que ces plugins puissent être écrits dans différents langages

Entre des projets "à plugins multiples" comme peut l'être visual studio (et d'autres projets de chez eux) et l'expérience tirée de .NET en ce qui concerne la compatibilité, je ne doute pas vraiment qu'ils aient les connaissances et la capacité à résoudre ces deux points
J'aurai surtout cité le fait qu'ils maintiennent un OS depuis +20 ans, et le fait qu'ils arrivent encore à exécuter des binaires datant de w95, quand le binaire en question n'est pas trop mal écrit. Pas sûr que ce serait faisable sous linux (et je suis un linuxien développeur C++, je suis parti pris, mais de l'autre côté ).

En tout cas, la réécriture complète d'une application est vraiment l'avant dernier recours en général. Le dernier étant de changer le langage au passage, et je ne le ferai que si il ne m'est pa possible de trouver les outils nécessaires pour travailler dans l'ancien langage sur mon environnement (typiquement, du code delphi exploitant des routines win32 quand on ne dispose que d'une Debian...).
Le code originel doit vraiment être dégueu, donc, parce que le plus simple aurait été de balancer le code dans des bibliothèques tierces, potentiellement écrites dans un autre langage. Certains arrivent même à faire ça à partir d'un binaire après tout (bon, forcément, quand on à pas le source originel... je pense notamment à keeperfx). Ou alors ça doit vraiment en valoir la chandelle.
6  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 01/02/2016 à 13:03
Je ne crois pas que les versions consoles de Minecraft soient écrit en Java... Je pense que la société veut juste conserver une base de code unique pour toutes ses plateformes.
5  0 
Avatar de Daïmanu
Membre émérite https://www.developpez.com
Le 01/02/2016 à 15:34
Citation Envoyé par EyZox Voir le message
Faites un Minecraft en C++, vous tuez tous les mods, vous tuez tout le jeu. Quelle est la proportion de joueur qui utilise encore Minecraft Vanilla ?
Sauf erreur de ma part, on parle ici de Minecraft Education Edition, pas le Minecraft que tout le monde connaît.

Quant aux mods, ils sont déjà en piteux états (non support officiel de la part de Mojang, multiple mod loader incompatible entre eux, attendre vainement qu'un mod 1.7.10 soit adapté à la version 1.8.x, voire 1.9.x prochainement).

Si Microsoft réécrit le jeux de base en C++, peut être que les mods vont être supportés et leur écriture facilitées .
6  1 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/02/2016 à 22:00
Citation Envoyé par Daïmanu Voir le message
Sauf erreur de ma part, on parle ici de Minecraft Education Edition, pas le Minecraft que tout le monde connaît.
Sauf que si Microsoft prend la peine de faire une récriture complète du moteur en C++ pour cette version qui ne lui rapporte rien, ce n'est certainement pas pour rien. Il parait clair que c'est un premier pas vers généralisation aux autres versions de Minecraft.
6  1 
Avatar de Oliver57
Membre à l'essai https://www.developpez.com
Le 01/02/2016 à 12:14
Je ne suis même pas étonné... c'est inconcevable pour Microsoft de continuer a maintenir un produit dans un langage d'une société quasi concurrente...
6  2 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 01/02/2016 à 16:01
Citation Envoyé par helix_tp Voir le message
Il va y avoir rapidement un clone libre de minecraft.

Bon il y en a déjà certainement un paquet.
En effet, il y en a déjà beaucoup trop en fait, mais aucun pour le moment qui ne soit aussi complet et facilement utilisable.

Citation Envoyé par cuicui78 Voir le message
j'ai raté un truc. minecraft a été racheté par Microsoft ?
Oui Mojang, l'éditeur de Minecraft, a été racheté par Microsoft en septembre 2014.

Citation Envoyé par cuicui78 Voir le message
qu'elle est le but de faire un minecraft éducation ?
pourquoi dit-on que minecraft est un jeu ? faut faire quoi ?
On dit que Minecraft est un jeu, parce que c'est un jeu. C'est un jeu de construction ou on construit a peu près tout ce que l'on veux à base de blocs de un mètre de coté, et de survie ou il faut se défendre la nuit de monstre divers et s'aventurer dans des caverne et des mines.
Si on est pas intéressé par le coté survie, il y a un mode créatif où on a des ressources illimitées, on est immortel et peux voler.

Je ne sais pas le but exact de la version éducation, mais je suppose que l'aspect construction peut être intéressant pour des très jeunes enfants, et ça leur permet de découvrit les commande de l'ordinateur de manière ludique. Pour la programmation, je pense qu'il y a déjà des outils plus simples que minecraft.
4  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 02/02/2016 à 10:54
En même temps ils ont annoncé la version Windows 10 de Minecraft qui sera elle aussi sera native, on peut donc penser que cette version éducation sera une variation de la version Windows 10. Et je suis sur que cette version a vocation a remplacer la version Java à terme.

Pour ce qui est de la communauté des mod, elle a de toute façon toujours été dans la bidouille vu que l'API de mod promise depuis des années par Mojang n'arrive pas, et n'arrivera probablement jamais. La création de mods est basée sur un reverse engenering et un remplacement de certains fichier ".class"

S'il profitaient de la refonte en C++ pour faire une bonne API de mod stable, ça serait au contraire déjà un grand pas.
4  0 
Avatar de Aiekick
Membre extrêmement actif https://www.developpez.com
Le 01/02/2016 à 14:25
quelques questions ( sans troll je le precise )
j'ai raté un truc. minecraft a été rachété par microsoft ?
qu'elle est le but de faire un minecraft education ?
pourquoi dit t'on que minecraft est un jeu ? faut faire quoi ?
3  0