CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Questions diverses sur la programmation : [C++, java] Portabilité, mélange, utilisation...

DorianB53
DorianB53
Niveau 6
20 avril 2016 à 16:50:59

Bonjour,

en ce moment j'ai le c** entre 2 chaises, je n'arrive pas à choisir quel langage serait le mieux pour moi et sur lequel me concentrer. J'ai et je fais des jeux depuis plusieurs années principalement en java (pour sa portabilité extrême) mais depuis 1 an j'ai découvert le c++, et depuis quelques mois je me demande si je ne devrais pas me concentrer sur le c++ pour ensuite fais mes jeux avec. Cependant je me confronte à un gros problème du c++ pour moi -> sa portabilité plutôt complexe. J'aime énormément la syntaxe du c++ et ses outils (tel que les pointeurs :p) et s'il était plus portable le choix serais rapide... J'ai pas mal de questions à propos, je vais donc essayer de structurer le tout:

1) Je me demande donc quel serait le meilleur choix, sachant qu'en général un jeu doit être portable (mes jeux sont en majorité aussi sur mobile d'ailleurs), pour faire mes jeux .

2)Y a-t-il un moyen de mélanger ces 2 langages pour en tirer tous les avantages (portabilité du java et optimisation du c++) ?

3)Si vous avez eu aussi à faire un choix ou au contraire continuer à programmer avec les 2 langages j'aimerais avoir votre vécu.

4)Que faite vous en c++ en général et sur quelle plateforme et avec quels outils distribuer le vous ?

Merci d'avance, j'aurais peut-être d'autres question qui viendront avec vos réponses.

Dorian.

Biolixe
Biolixe
Niveau 6
20 avril 2016 à 17:32:34

CMake est prévu pour ce genre de choses ! Si ton projet est open-source, il pourra être compilé aisément par tout le monde. Sinon il faudra créer des releases pour chaque plateforme, ça peut être automatisé cela dit !

Biolixe
Biolixe
Niveau 6
20 avril 2016 à 17:34:46

Si tu veux faire du mobile, reste sur Java, si tu peux t'en passer, le C++ est vraiment cool, je l'utilise quotidiennement pour créer un jeu.

DorianB53
DorianB53
Niveau 6
20 avril 2016 à 17:38:55

Sinon il faudra créer des releases

C'est mon but, mais je n'y arrive pas, rien qu'avec QT je trouve que c'est plutot hard :/... Si tu as des liens pour m'aider je suis preneur :3

Message édité le 20 avril 2016 à 17:39:22 par DorianB53
smartties
smartties
Niveau 6
20 avril 2016 à 21:52:13

Je me demande donc quel serait le meilleur choix, sachant qu'en général un jeu doit être portable (mes jeux sont en majorité aussi sur mobile d'ailleurs), pour faire mes jeux .

Le c++ est portable et bien plus portable que le Java.
Si tu es débutant, et que tu souhaite faire du C++ tu as SDL, SFML, et le moteur cocos2D-x pour les jeux et Qt pour les apps. toutes ces technos sont multi plateforme (iOS, Android, Win, Mac).
Mais de manière général, ca sera toujours plus dur en c++, comparé à java.

Y a-t-il un moyen de mélanger ces 2 langages pour en tirer tous les avantages (portabilité du java et optimisation du c++) ?

Oui, cela s’appel le JNI (ndk), et te permet d'appeler du code C++ depuis du Java et inversement. Mais le but de cet outil n'est pas de "mélanger 2 langages" mais de pouvoir exécuter du code natif pour parfois avoir de meilleur performance. Mais cela rajoute pas mal de difficultés et requière de bonnes connaissances des deux langage pour être utilisé correctement.

Si vous avez eu aussi à faire un choix ou au contraire continuer à programmer avec les 2 langages j'aimerais avoir votre vécu.

Que faite vous en c++ en général et sur quelle plateforme et avec quels outils distribuer le vous ?

Pour mes jeux, j'ai écrit mon propre moteur en C++ et de l'OpenGL, compatible sur iOS, Android, Win, Mac.
Même si 98% du code est écrit en C++, j'utilise du code spécifique à chaque plateforme pour gérer les inputs/output, callback, création du context de l'app... puis depuis ce même code j’appel mon code C++. Ce qui me donne quelque milliers de lignes de code en Java pour Android, et en Obj-C pour iOS. Bref j'ai choisi de faire ça parce que c'est la partie qui m’intéressais le plus. Mais c'est un long et inutile chemin si l'objectif premier est de créer un jeu.
Donc si ton but n'est pas de réinventer la roue où de créer ton propre moteur, alors utilise quelque chose qui a déjà fait ces preuves : C++ : cocos2D-x, irrlicht, ogre3d, SDL, SFML, Qt et en Java : andengine, libgdx, jmonkey...

Faire du cross plateforme en c++ est fastidieux. Apres je ne sais pas ce que tu entends par "je suis débutant", si tu es perspicace et que tu sais utiliser google pour chercher solution à tes erreurs en anglais
(la plus part du temps sur stackoverflow :-))) ) ça devrait le faire.
Sinon rester sur du java, est également une sage solution.

LGV
LGV
Niveau 28
20 avril 2016 à 22:22:53

[...] Mais c'est un long et inutile chemin si l'objectif premier est de créer un jeu.

Ca fait plaisir a lire :D Trop souvent des debutants qui veulent creer un jeu, et non developper des technos/outils, se voient conseiller des languages plutot que des outils/framework operationnels.

Je n'ai pas une grande experience des plateformes mobiles, mais de ce que j'ai pu voir il n'y a pas vraiment de solution "ultime", c-a-d portable, facile et operationnelle.
Ce qui est facile et operationel est souvent natif, donc non portable
Ce qui est portable et facile n'est pas operationnel (pas acces a toutes les fonctionnalites du matos, soucis de performance, etc.)
Ce qui est portable et operationnel n'est pas facile, e.g. le moteur maison de Smartties

Pour ma part je me tourne vers le HTML5 (en typescript pour developper le framework) ; ca permet de targetter web, windows et macOS facilement, et eventuellement android et iOS si l'appli/jeu n'a pas besoin de bcp de puissance

Message édité le 20 avril 2016 à 22:23:47 par LGV
DorianB53
DorianB53
Niveau 6
21 avril 2016 à 12:20:11

Bonjour,

J'ai déjà créé des jeux dans les 2 langages avec des outils déjà disponibles (SFML en c++ et libgdx en java), mais par exemple pour compiler (à l'époque) mon projet en c++ avec la SFML pour android, impossible, j'avais d'ailleurs demandé de l'aide ici, mais personne n'avait réussi à trouver la solution... C'est d'ailleurs à cause de ça que je dis que le c++ est moins portable que le java. Et je n'ai jamais trouvé un seul tutoriel pour nous expliquer comment compiler un projet en c++ pour d'autre os (linux/mac/android) clairs...

Après oui je comprends bien que l'on peut utiliser un moteur graphique par exemple tel qu'Unity mais je trouve (pour l'avoir utilisé) que l'on n'est pas assez libre sur certaines choses.
Dans tous les cas merci de vos réponses et si vous avez des explications (rapides bien sûr) sur la compilation multi plateforme d'un projet c++ je vous serai très reconnaissant !

DorianB53
DorianB53
Niveau 6
21 avril 2016 à 13:27:32

De toutes façons tant que je ferais des jeux android je vais continuer à faire mes jeux en java mais j'aimerais quand même comprendre comment compiler un programme c++ vers d'autre plateformes simplement et sans avoir besoin de recompiler son programme directement sur la plateforme... Ça va surtout me servir pour qt ou si je veux faire des jeux sans être sur portable(avec la SFML par exemple), car les seules réponses que j'ai trouvées pour compiler son projet vers Linux et Mac depuis Windows c'est de compiler ses projets depuis les plateformes... Si quelqu'un peut m’éclairer là-dessus :/ ? (Et si vous avez vraiment le temps, m'expliquer rapidement le principe du portage d'un projet c++ sur mobile et son utiliser face au java) .

Merci dans tous les cas de m'aider.

LGV
LGV
Niveau 28
21 avril 2016 à 15:15:03

Il te faut un compilateur adapte a la plateforme que tu cibles, car si le code source peut etre identique, le binaire resultant est different (un executable windows est different d'un executable linux ou mac).

Un compilateur etant lui meme un executable, il n'en existe pas pour toutes les plateformes sources, et un meme compilateur n'est pas necessairement capable de generer des binaires pour toutes les plateformes cibles.

Il est generalement preferable de compiler directement sur la plateforme cible, pour des soucis de compatibilite, pour l'integration dans les toolchains et pour s'assurer immediatement du resultat (automatisastion de tests pour des build reports, etc.).

Si tu veux faire du linux, il te suffit d'installer une machine virtuelle, et compiler ton code avec par exemple gcc ou icc. Si sur windows tu compiles avec autre chose (mvc), il faut s'assurer dans le code source de ne pas utiliser des directives specifiques a un compilo en particulier (notamment les #pragma), et coller si besoin des bouts de compilation conditionnelle un peu partout la ou tu as besoin de reglages specifiques a chaque plateforme cible.

De toute facon il te faudra tester sur la machine cible, pour verifier les performances, stabilite, etc. donc autant organiser la compilation de cette maniere egalement

Message édité le 21 avril 2016 à 15:16:52 par LGV
LGV
LGV
Niveau 28
21 avril 2016 à 15:20:53

Tout ca pour dire que c'est qqch qui s'organise directement dans l'archi du projet et au niveau du code source ; des properties sheets ici pour les options de compilations, du pre-processeur la pour la compilation conditionnelle selon la plateforme, tweaks de linkage differents, etc. Dans le but de faire passer le *meme* code source avec des metadata *differentes* dans des toolchains *differentes*.

Tu ne peux pas utiliser la meme toolchain pour cibler des plateformes differentes (possible dans certains cas, mais pas reprensentatifs de la situation generale)

Message édité le 21 avril 2016 à 15:22:15 par LGV
DorianB53
DorianB53
Niveau 6
21 avril 2016 à 18:11:56

Ok, merci de l'explication, je vais donc rester en java pour mes jeux et pour tout ce qui est jeux non mobile ou logiciel via qt je passerais en c++ ou avec un moteur graphique (Unity ou UE).

Merci à tous !

89ron
89ron
Niveau 10
22 avril 2016 à 04:52:59

Le C++ dans UE4 c'est du C++ de très haut niveau (facile a manier (grâce au Garbage Collector et les conteneur orienter Game Dev), ils l'appellent eux même le Assisted C++), qui une fois respecter a lettre te permet d'avoir un jeu complétement multiplateforme tout en évitant de s’embêter avec la partie architecture.

Le C++ est fastidieux, en fonction de tes IDE et des plateformes viser tu sera amener a gérer de nombreux détails très chronophages, a moins de vouloir sortir un jeu gérant plus 3000 sprites a 60 fps et ou d'avoir un game feel aux petits ognons (qui selon mon point de vu est crucial dans un jeu). il vaux mieux rester sur Java / Obj-C

Par contre connaitre C++, il faut pas se voiler la face, ça possède de gros avantages :
- Performances.
- Multiplateforme.
- Beaucoup de bibliothèques / sources.
- Porte d’entrée dans les studio de dev pro.
- Adaptabilité aux autres langage plus rapide.

DorianB53
DorianB53
Niveau 6
22 avril 2016 à 10:36:20

Merci de ton point de vue, je vais continuer sur du C++ avec qt et autres pour l'instant pour apprendre la gestion multiplate-forme et faire mon choix plus tard quand j'aurais tous les éléments pour choisir (ce n'est pas pour tout de suite d'après ce que tu me dis ^^).

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment