Les professionnels de l'industrie qui créent des jeux en utilisant UE4 utilisent-ils des plans ou utilisent-ils exclusivement C ++?

15

En tant que professeur sur un module de développement de jeux, j'ai généralement insisté pour que les utilisateurs utilisent C ++, car c'est une compétence plus recherchée dans l'industrie, mais le support en ligne et les informations sur C ++ dans Unreal Engine 4 semblent relativement faibles. Les professionnels utilisent-ils également les Blueprints ou non?

Mark Green
la source
11
La documentation ne sera pas un bon indicateur de la quantité utilisée.
MichaelHouse
La documentation sur Unreal Engine 4 C ++ fait défaut car vous allez lire le code vous-même. Vous n'avez pas strictement besoin de documentation si vous pouvez accéder au code source. Ce serait bien de l'avoir, cependant.
Oxy
1
@Oxy Le code source ne remplace pas la documentation. Période. La source est beaucoup plus difficile à lire que la documentation, par définition, car le but de la documentation est de distiller ce qu'une fonction fait dans un format lisible. Cela est doublement vrai pour le code hautes performances et extrêmement performant, comme Unreal.
Fund Monica's Lawsuit
1
J'explique ce qui se passe, pas pour justifier. "Ce serait bien de l'avoir, cependant." Et vous feriez mieux de lire le code des fonctions que vous utilisez, même celles documentées, parce que certaines importantes ont des pépites d'or comme "foo (x) {/ * foo Non implémentées, faisant plutôt bar (x) car elles agissent généralement comme foo (x ) a été fait * / bar (x);}. Je n'ai pas encore vu un système de documentation en action qui suit le rythme de l'évolution du code. Autre qu'une documentation automatisée qui ne fait rien de plus que de cracher les types de paramètres et les types de retour, tout comme lire un en-tête fait
Oxy

Réponses:

25

Oui, les jeux professionnels utilisent des Blueprints.

Certains utilisent un mélange de C ++ et de Blueprints. Nous utilisons les deux sur Dead by Daylight.

L'un des avantages de Blueprints est que les non-programmeurs peuvent accéder à la possibilité de scripter des comportements. Tous les projets ne les utiliseront pas de cette façon, mais c'est l'une des raisons pour lesquelles ils ont été conçus. Ils ont remplacé UnrealScript comme moyen de modifier les comportements sans toucher au C ++, et ils ont également remplacé Kismet qui était le système de script visuel d'Unreal 3.

Almo
la source
Pouvez-vous vous étendre? Est-ce que seuls les programmeurs utilisent des Blueprints, ou seulement le personnel "non technique", ou un peu des deux? Est-il utilisé à des fins spécifiques ou à peu près n'importe quoi?
KABoissonneault
7
@KABoissonneault C'est vraiment un mélange. La plupart du temps, il n'y a pas de moyen facile de délimiter clairement ce sur quoi les programmeurs travaillent et ce sur quoi les non-programmeurs travaillent. C'est particulièrement vrai si vous avez un concepteur, qui voudra probablement des ajustements partout dans le code. Les plans directeurs sont également beaucoup utilisés pour le prototypage rapide, et ils ne sont pas nécessairement convertis en C ++ si les performances ne le nécessitent pas. Cela variera également beaucoup selon le studio et le projet, il n'y a donc pas de réponse unique.
Fund Monica's Lawsuit
9

Petite anecdote extérieure à l'industrie du jeu: nous utilisons UE4 pour la visualisation de l'architecture en VR.

Bien que je préfère que la plupart des choses soient construites en C ++, nous utilisons également des plans directeurs pour toutes sortes de "logique supplémentaire" comme les interrupteurs d'éclairage, les portes, etc.

C'est ainsi depuis un peu plus de deux ans maintenant et j'étais le seul programmeur au début de cette entreprise. Voici donc mes observations:

  • C'est incroyable ce que les non-programmeurs peuvent faire avec Blueprints!
  • Je peux être horrifiant ce que les programmeurs novices font avec Blueprints;)
  • Même si je le convertis en C ++ à la fin, les Blueprints sont bien pour une phase RnD rapide

Et le plus important pour moi: dans de nombreuses conversations, il est devenu clair pour moi que Blueprints avait invoqué le désir de devenir programmeur dans mes collègues non-tech. La principale raison pour laquelle cela s'est produit est qu'ils pouvaient implémenter une logique assez complexe tout en pouvant la déboguer visuellement.

Ils ont en fait appris de dures leçons sur l'architecture logicielle et les pièges (ou plutôt les cauchemars) d'énormes plans de spaghetti. Mais seulement après avoir ressenti une tonne de petits succès en cours de route! Ils n'étaient donc pas du tout découragés mais plutôt motivés à faire mieux et à découvrir comment le faire par eux-mêmes.

Depuis, ils ont suivi des cours en C ++, Python et C #, la qualité globale de nos Blueprints est devenue bien meilleure, mais surtout: j'ai maintenant de l'aide pour développer nos bibliothèques de base :)

TLDR;

Oui, nous utilisons des Blueprints et ils ont même fait de mes pairs initialement non techniques de meilleurs codeurs.

Xceno
la source
1
L'une des bonnes choses à propos des langages visuels comme Blueprints est que vous n'avez pas à vous soucier de la syntaxe, et ils sont généralement si abstraits que vous pouvez faire beaucoup avec très peu de passe-partout. Ils permettent d'apprendre facilement à coder sans être embourbé par la syntaxe. Ils sont également normalement de trop haut niveau pour faire de la magie , mais, vous savez, c'est un compromis que je suis prêt à faire pour permettre aux non-codeurs d'avoir un impact direct sur le comportement du jeu.
Fund Monica's Lawsuit
@NicHartley essayez de faire myVector.x += otherVector.xdans Blueprints. : o
Almo
1
@Almo Je suis sûr à 90% que c'est possible, à moins que vous ne vouliez vraiment que ce soit une "ligne". Juste (get myVector x) (get otherVector x) -> (+) -> (assign myVector x)(wow, il est difficile d'écrire des plans dans le texte ...). Cependant, je n'ai pas de copie d'Unreal à tester. Ou, si les vecteurs sont immuables, alors faites-en un nouveau,(myVector.x + otherVector.x, myVector.y, myVector.z)
Fund Monica's Lawsuit
1
C'est certainement possible, mais c'est désordonné. Ligne vectorielle dans une boîte de coupure, qui a des sorties x, y, z. Faites-le deux fois, un pour obtenir myVector.x et un autre pour obtenir otherVector.x, ajoutez-les et acheminez-les vers une zone d'affectation.
Almo
1
Je n'ai pas dit que tu ne pouvais pas. Juste que c'est hideux.
Almo