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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Etudier le C++ pour utiliser Unreal Engine


Sujet :

C++

  1. #1
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut Etudier le C++ pour utiliser Unreal Engine
    Bonjour à tous

    Je viens à vous pour avoir quelques conseils à propos de l'apprentissage du C++, n'ayant jamais réellement suivi l'évolution du langage jusqu'ici.

    Courbe d'apprentissage

    Je souhaiterais, dans un futur proche, développer un prototype de jeu vidéo nécessitant l'utilisation d'un moteur de jeu compatible sous Linux et me suis donc tourné directement vers Unreal Engine. Seulement petit souci, UE ne supporte que le C++ et je n'ai aucune expérience dans ce langage: pensez-vous qu'apprendre le C++ et apprendre à utiliser UE en même temps relève totalement du suicide ou est-ce jouable ? (nous ne prendrons bien entendu pas en compte les compétences en géométrie spatiale requises pour certains travaux)

    Si non, quel moteur me conseillerez-vous pour travailler ? Unity supporte le C# mais n'est pas officiellement compatible avec les systèmes Unix. (bien qu'ils fournissent désormais des binaires, mais ne garantissent sont fonctionnement que pour la 12.04 de Ubuntu)

    Je précise que je cherche un engine compatible Linux (vivement supporté par sa communauté, si possible) car je n'ai, pour le moment, aucune machine sous Windows à portée de main, et ça ne risque pas de changer pour un petit moment, malheureusement.

    Je vous remercie d'avance pour votre réponse qui me sera fort utile, car j'ai vraiment du mal à me décider vers quel outil me tourner.

    Bonne journée !

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par Songbird_ Voir le message
    UE ne supporte que le C++
    Oui et non. La méthode de développement préférentielle recommandée par Epic pour la « plèbe » (petits studios, développeurs indépendants, étudiants, amateurs..) est celle qui utilise le système de « blueprints ». C'est encore plus vrai s'il s'agit de prototypage. Que tu connaisses ou pas le C++, tu iras bien plus vite sans mettre les mains dans le moteur.


    Citation Envoyé par Songbird_ Voir le message
    je n'ai aucune expérience dans ce langage: pensez-vous qu'apprendre le C++ et apprendre à utiliser UE en même temps relève totalement du suicide ou est-ce jouable ?
    Le gros problème du C++ avec Unreal c'est qu'hors quelques articles technique d'ordre très général, l'unique documentation disponible, ben ce sont les sources du moteur (parfois commentées, souvent pas). Si en plus de te fader la prise en main des rouages du système tu dois faire l'apprentissage du langage C++ dont la courbe est effectivement très élevée, tu prends le risque de te noyer.

    Cela dit, il nous faudrait connaître plus de détails sur :

    • ton parcours. D'où pars-tu : quelles bases as-tu en développement logiciel ? Connais-tu, par exemple, le C (avec un certain niveau, je veux dire) ? Sais-tu globalement comment fonctionne un ordinateur, un GPU, un moteur graphique..?
    • ton projet : de quel genre de jeu s'agit-il ? De combien de temps disposes-tu pour le développement de ce proto ? Y'a-t-il d'autres personnes dans l'équipe ?


    J'ajoute un point de vue personnel. Je ne suis pas un développeur de grand talent mais je connais le C++, je connais Unreal et j'ai un certain background en programmation de jeux. Ben je n'ai pas une super expérience avec Unreal en C++. Je me suis bien souvent retrouvé avec l'impression de lutter contre le système plus que de m'appuyer sur les facilités qu'il offre pour atteindre un objectif. Le moteur est très complexe et parfois incohérent (des centaines de personnes sont passées dessus et ça se voit), c'est comme une putain de cathédrale construite sur 800 ans. Tu as des arches romanes qui supportent des voûtes byzantines surmontées de flèches gothiques, et le portail est en art déco. Bien entendu tu n'es pas obligé d'en saisir tous les aspects mais tu peux vite te sentir submergé et ça peut finir par jouer sur ta motivation.


    Citation Envoyé par Songbird_ Voir le message
    (nous ne prendrons bien entendu pas en compte les compétences en géométrie spatiale requises pour certains travaux)
    C'est-à-dire que tu les as ou que tu ne les as pas, ces compétences ?


    Unity est certainement bien plus facile à prendre en main. Es-tu certain que la prise en charge Linux soit si expérimentale ? Il me semblait que c'était plus mature que ça mais je ne me suis pas renseigné en détail.


    TL;DR: avant d'avoir la réponse à mes questions et sauf si tu as une très bonne raison pour faire du C++ Unreal, je te recommanderai plutôt soit les blueprints Unreal (à noter que tu peux faire communiquer les deux par la suite), soit Unity, soit une solution alternative (Godot en Python..) que le forum « jeux 2D/3D » sera plus à même de te conseiller.

  3. #3
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Salut,

    Tout d'abord, merci pour ta réponse.

    quelles bases as-tu en développement logiciel ? Connais-tu, par exemple, le C (avec un certain niveau, je veux dire) ?
    En 4 ans, je n'ai principalement fait que du Java SE. Je peux donc me mettre sur pratiquement n'importe quel projet utilisant ce langage, mais mes connaissances vis-à-vis du C ne doivent pas dépasser le pong.

    Sais-tu globalement comment fonctionne un ordinateur, un GPU, un moteur graphique..?
    Oui, dans son ensemble, mais je ne suis pas avancé.

    de quel genre de jeu s'agit-il ?
    De la conquête temps réel vue TPS.

    De combien de temps disposes-tu pour le développement de ce proto ?
    J'ai tout mon temps, pas de limite à proprement parler.

    Y'a-t-il d'autres personnes dans l'équipe ?

    Non, personne. C'est un projet personnel destiné à "m'initier" à la programmation de jeux. Peut-être est-ce un projet trop important pour des premières heures ?

    C'est-à-dire que tu les as ou que tu ne les as pas, ces compétences ?
    Non, je pense que je ne les ai pas.

    Unity est certainement bien plus facile à prendre en main. Es-tu certain que la prise en charge Linux soit si expérimentale ? Il me semblait que c'était plus mature que ça mais je ne me suis pas renseigné en détail.
    Je n'ai pas encore eu le temps d'installer Unity sur ma machine actuelle pour vérifier si le moteur tournait correctement sur une distribution Xubuntu 16.04, mais le support reste quand même assez timide. (le binaire n'est pas proposé dans la page de téléchargement, entre Windows et MacOS)

    Enfin, non je n'ai pas de raisons précises d'utiliser du C++. J'avais prévu de travailler avec car j'avais remarqué que seul ce langage (en dehors de blueprint) était pris en charge par UE.

    C'est noté pour Godot et blueprint, merci à toi.

    Bonne journée !

  4. #4
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Citation Envoyé par Songbird_ Voir le message
    De la conquête temps réel vue TPS.
    Là, je sèche. Peux-tu détailler, citer un jeu similaire ? Comment la caméra est-elle positionnée ? Comment évolue-t-elle ? Je cherche à connaître les implications sur le rendu de la scène.

    As-tu déjà un plan des fonctionnalités que tu prévoies d'intégrer à ce proto ?


    En ce qui concerne l'apprentissage du langage : je viens seulement de lire ta signature. Tu fais du Rust ? Cela peut changer pas mal de choses.. et notamment grandement diminuer l'investissement de temps nécessaire pour devenir productif en C++ puisque tu as la rigueur nécessaire et que tu es déjà familiarisé avec certains concepts et abstractions. Sois toutefois préparé pour quelques déconvenues, Rust est souvent considéré comme C++ done right. Outre son modèle de compilation C qui va te paraître archaïque (adiós cargo !), le C++ comporte beaucoup de surprises et d'incohérences issues de son évolution chaotique.

    Quoiqu'il en soit, cela ne change pas la teneur de mon message précédent : assure-toi d'avoir une bonne raison pour faire du C++ Unreal. D'autant plus pour un prototype : par définition réalisable en peu de temps et potentiellement « jetable ».

  5. #5
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Rust est souvent considéré comme C++ done right
    Bah je croyais que c'était le D... ou le C#... ou le java...

    Sinon, il y a un binding rust pour SFML. C'est plus compliqué qu'un blueprint à la unreal/unity/godot mais c'est peut-être une bonne option pour apprendre la programmation de jeu tout en profitant de tes connaissances en rust.

    https://github.com/jeremyletang/rust-sfml

  6. #6
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Alors, un jeu similaire qui a un peu vieilli mais la mécanique pourrait beaucoup lui ressembler: Bladestorm Nightmare. (Je t'invite à jeter un oeil à partir de la séquence que je t'ai donné)

    Comment la caméra est-elle positionnée ? Comment évolue-t-elle ?
    Pour reprendre le jeu que je t'ai présenté, la caméra se trouve donc derrière le mercenaire (le joueur) et peut pivoter autour de lui pour visionner les alentours. Une vue à la troisième personne en plongée.


    As-tu déjà un plan des fonctionnalités que tu prévoies d'intégrer à ce proto ?
    C'est assez rudimentaire, mais j'avais gardé ça sur papier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     + Conquête
     |
     + - - - Capture de points stratégiques
     |        + - - - Défense des points (les moyens déployés par le point pour défendre)
              |
     |        + - - - Offensive à partir des points (choisir quel point ennemi attaquer à partir d'un point allié)
              |
     |        + - - - Gestion de l'IA des alliés (qui se résumerait pour le moment à aller d'un point A à un point B et capturer un point)
     + - - - Créer un système de "quadrillage" pour positionner les points et créer des "routes" entre-eux.
     |
     + - - - Créer plusieurs types de points stratégiques (e.g. plus axés sur l'attaque, la défense, le nombre de troupes déployées)
    Bon il manque certaines choses comme les conditions de capture (qui peut capturer un point ? Comment ?), les événements qui découlent d'une capture (régénération des effectifs du point/fort, déploiement des alliés, la manière dont le jeu va choisir le type du point après capture).

    En ce qui concerne l'apprentissage du langage : je viens seulement de lire ta signature. Tu fais du Rust ? Cela peut changer pas mal de choses.. et notamment grandement diminuer l'investissement de temps nécessaire pour devenir productif en C++ puisque tu as la rigueur nécessaire et que tu es déjà familiarisé avec certains concepts et abstractions.
    Oui je fais du Rust, je ne suis pas un maître jedi non plus, ça doit faire que quelques mois que je l'étudie.

    Sois toutefois préparé pour quelques déconvenues, Rust est souvent considéré comme C++ done right. Outre son modèle de compilation C qui va te paraître archaïque (adiós cargo !), le C++ comporte beaucoup de surprises et d'incohérences issues de son évolution chaotique.
    Quoiqu'il en soit, cela ne change pas la teneur de mon message précédent : assure-toi d'avoir une bonne raison pour faire du C++ Unreal. D'autant plus pour un prototype : par définition réalisable en peu de temps et potentiellement « jetable ».
    D'accord, merci pour ces précisions. Je pense que je vais me tourner vers le blueprint si Unity ne fonctionne pas sur ma machine. (Sinon, je verrai pour faire ce prototype en Boo)


    EDIT:
    Sinon, il y a un binding rust pour SFML. C'est plus compliqué qu'un blueprint à la unreal/unity/godot mais c'est peut-être une bonne option pour apprendre la programmation de jeu tout en profitant de tes connaissances en rust.

    https://github.com/jeremyletang/rust-sfml
    Ah oui, effectivement !
    Merci pour le lien je vais aller voir. Je trouve les exemples de départ assez compacts, ça me plaît bien.

    Bonne soirée.

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 116
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Pour un premier jeu, je trouve tout de même le niveau nécessaire bien haut. Après, ce que je conseille, c'est de faire des prototypes. Que ce soit avec Godot, avec Unity ou Unreal, prendre une journée par moteur/techno pour faire un prototype du jeu que l'on vise permet :
    • de découvrir le moteur ;
    • d'être confronter au moteur, à sa communauté, à sa documentation (voir donc s'il est facile à prendre en main) ;
    • de voir si le jeu peut être réalisé avec ce moteur.
    • ...


    Note : pour un jeu 3D (le sous entendu de TPS), si vous ne voulez pas recoder tout un moteur, je déconseillerai tout ce qui est SDL/SFML, car cela demande beaucoup de travail.
    Pour Godot, la 3D n'est pas folichone ni très avancée, si on peut dire. C'est avant tout un moteur 2D. La version 3.0 corrigera normalement ce point, mais elle n'est pas sortie.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Alors pour ce qui est caméra à la troisième personne, pour le coup c'et facile tu peux partir de l'exemple Unreal qui va bien. Tu peux t'en sortir simplement en tweakant les paramètres de la caméra et de son « bras-ressort » sans jamais avoir à toucher à une seule matrice de transformation.

    En ce qui concerne l'IA, Unreal dispose également de facilités pour programmer des comportements de déplacement, via un système de navmeshes. Je ne peux pas t'en dire plus perso car lorsque j'ai voulu m'en servir il s'est avéré que le système n'était fonctionnel que pour des pawns (typiquement des personnages bipèdes) alors que j'avais besoin de faire se déplacer des véhicules.. Il faudrait que tu joues un peu avec pour voir si tu parviens à modéliser le système de flocking (la manière dont l'escouade se réorganise autour de l'officier). Il existe plusieurs tutoriaux pour faire suivre des waypoints à des NPC, tu peux partir de là et adapter.

    Le combat rapproché.. c'est un peu ce qu'il y a de pire à rendre crédible visuellement. En comparaison avec des gars qui se tirent dessus, je veux dire. Faut voir ce que tu décides de modéliser dans le proto, tu peux complètement laisser ça de côté et simplement considérer que deux personnages « se battent » lorsque la distance qui les sépare est inférieure à un certain seuil.

    Si je m'en tiens à la vidéo que tu as mise en lien, je pense que tout est réalisable en blueprints. C'est cependant beaucoup de travail, je ne te le cache pas. À toi de voir comme le dit LittleWhite si tu es à l'aise pour t'exprimer avec la techno.


    Petite astuce pour bien se rendre compte de ce qu'offre Unreal : outre les projets de base fournis avec le moteur, il est important de télécharger également les Content Examples (depuis le launcher Epic) qui contiennent foule d'implémentations de comportements et d'effets.

  9. #9
    Membre Expert

    Avatar de Songbird
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Juin 2015
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2015
    Messages : 494
    Billets dans le blog
    8
    Par défaut
    Bonjour,

    Pour un premier jeu, je trouve tout de même le niveau nécessaire bien haut. Après, ce que je conseille, c'est de faire des prototypes. Que ce soit avec Godot, avec Unity ou Unreal, prendre une journée par moteur/techno pour faire un prototype du jeu que l'on vise permet :

    • de découvrir le moteur ;
    • d'être confronter au moteur, à sa communauté, à sa documentation (voir donc s'il est facile à prendre en main) ;
    • de voir si le jeu peut être réalisé avec ce moteur.
    • ...
    Oui, bien entendu. Je cherche principalement à faire des essais, si je vois que je n'arrive à rien, j'essaierai de réaliser quelque chose de moins "complet" pour le moment puis je reviendrai dessus en temps voulu.


    Note : pour un jeu 3D (le sous entendu de TPS), si vous ne voulez pas recoder tout un moteur, je déconseillerai tout ce qui est SDL/SFML, car cela demande beaucoup de travail.
    Pour Godot, la 3D n'est pas folichone ni très avancée, si on peut dire. C'est avant tout un moteur 2D. La version 3.0 corrigera normalement ce point, mais elle n'est pas sortie.
    Ok, c'est noté. Je garde l'implémentation de la SFML en Rust sous le coude pour d'autres choses.

    En ce qui concerne l'IA, Unreal dispose également de facilités pour programmer des comportements de déplacement, via un système de navmeshes. Je ne peux pas t'en dire plus perso car lorsque j'ai voulu m'en servir il s'est avéré que le système n'était fonctionnel que pour des pawns (typiquement des personnages bipèdes) alors que j'avais besoin de faire se déplacer des véhicules.. Il faudrait que tu joues un peu avec pour voir si tu parviens à modéliser le système de flocking (la manière dont l'escouade se réorganise autour de l'officier). Il existe plusieurs tutoriaux pour faire suivre des waypoints à des NPC, tu peux partir de là et adapter.

    Le combat rapproché.. c'est un peu ce qu'il y a de pire à rendre crédible visuellement. En comparaison avec des gars qui se tirent dessus, je veux dire. Faut voir ce que tu décides de modéliser dans le proto, tu peux complètement laisser ça de côté et simplement considérer que deux personnages « se battent » lorsque la distance qui les sépare est inférieure à un certain seuil.

    Si je m'en tiens à la vidéo que tu as mise en lien, je pense que tout est réalisable en blueprints. C'est cependant beaucoup de travail, je ne te le cache pas. À toi de voir comme le dit LittleWhite si tu es à l'aise pour t'exprimer avec la techno.
    D'accord. De toute façon je ne cherche pas à produire des effets extraordinaires, si je me familiarise un minimum avec ces mécaniques ça sera déjà très bien.


    Merci à tous pour vos réponses et conseils, je vais aller installer tout ça.

    Bonne journée à vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Unreal Engine 4 – Tutoriels pour débutants - Utiliser une texture émissive
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 30/05/2016, 20h09
  2. Unreal Engine 4 – Tutoriels pour débutants - Utiliser une texture de normales
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 30/05/2016, 20h06
  3. Unreal Engine 4 – Tutoriels pour débutants - Utiliser une carte de relief
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 16/05/2016, 12h43
  4. Unreal Engine 4 – Tutoriels pour débutants - Introduction
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 29/03/2016, 21h36
  5. Quels outils utiliser pour le reverse engineering sous windows
    Par Menontona dans le forum Autres Logiciels
    Réponses: 15
    Dernier message: 30/05/2006, 23h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo