Quelles technologies sont utilisées de nos jours pour le développement de jeux? [fermé]

14

Chaque fois que je pose une question sur le développement de jeux sur un forum en ligne, je reçois toujours des suggestions comme l'apprentissage d'algorithmes de dessin au trait, la manipulation d'images au niveau du bit et la décompression vidéo, etc.

Cependant, en regardant des jeux comme God of War 3, j'ai du mal à croire que ces jeux pourraient être développés en utilisant des techniques de si bas niveau.

La pure beauté de ces jeux défie toute méthodologie de programmation compréhensible (pour moi).

De plus, le matériel de jeu est vraiment un monstre de nos jours. Il va donc de soi que les développeurs travailleraient à un niveau d'abstraction plus élevé.

Quelle est la dernière méthodologie de développement dans l'industrie du jeu? Comment est-ce qu'une équipe de 30 à 35 développeurs (dont la plupart sont des fluffes de gestion et de marketing) est capable de créer de tels jeux époustouflants?

Si la question vous semble trop générale, pourriez-vous expliquer l'architecture de God of War 3? Ou comment procéder pour produire un clone? Je pense que cela devrait être objectivement responsable.

Monika Michael
la source
2
Quelqu'un voudrait-il expliquer le downvote?
Monika Michael
2
Les votes à la baisse sont dus au fait que la question n'est pas "constructive". Pour citer, "cette question ne convient pas à notre format de Q&R. Nous nous attendons à ce que les réponses soient étayées par des faits, des références ou une expertise spécifique, mais cette question suscitera probablement un débat, des arguments, un sondage ou une discussion approfondie" . Autrement dit, la question ne peut être répondu avec précision. Je pense toujours que votre question a du mérite, mais doit être reformulée.
9000
2
@ 9000 Et comment cette question peut-elle être qualifiée de non constructive?
1
@delnan: probablement les downvoters n'étaient pas satisfaits de phrases comme "Quelle est la dernière méthodologie de développement dans l'industrie du jeu?" . Pour moi, "comment procéder pour produire un clone" est bien mieux.
9000
4
Cela n'aurait -il pas plus de sens sur gamedev.stackexchange.com ?
Dan est en train de jouer par Firelight

Réponses:

12

Avertissement: je ne suis pas un développeur de jeux vidéo. Mais j'ai un intérêt "amateur".


La plupart des jeux AAA que vous voyez sont créés à l'aide de moteurs. Ils ne sont pas écrits de fond en comble. Imaginez un moteur comme un framework. Vous avez .NET Framework, Java SDK, Cocoa toolkit.

Toutes les choses pour vous faciliter la tâche en créant un logiciel et en résumant le code de l'évier de cuisine. C'est nécessaire, mais l'écrire à chaque fois est très improductif.

L'utilisation de ces moteurs permet aux développeurs de créer leur jeu et de ne pas avoir à se soucier d'une partie du code sous-jacent. ( Ne vous y trompez pas, le développement de jeux est l'une des branches les plus difficiles de l'ingénierie logicielle. )

Par exemple, Unreal Engine 4 a un kit de développement et un studio de tueur:

http://www.youtube.com/watch?v=MOvfn1p92_8

entrez la description de l'image ici

Il existe de nombreux moteurs différents. Certains payés, certains gratuits, certains plus jusqu'au métal, d'autres offrent une abstraction plus élevée.

Par exemple:

  • OGRE
  • Unreal Engine
  • Unité
  • La source
  • et beaucoup plus...
sergserg
la source
5

En référence au commentaire de gbjbaanb, certaines des choses qui rendent la programmation de jeu amusante sont la durée de vie limitée de la base de code et le manque d'exigences de précision. Par exemple, si vous concevez un jeu FPS et que votre algorithme de mouvement place parfois votre personnage de jeu à quelques pixels, ce n'est pas grave et personne ne le remarquera. Si vous concevez un logiciel d'entreprise et que votre fonction de somme vous fait parfois perdre quelques dollars, c'est un bug beaucoup plus grave. Ainsi, lors de la conception de jeux, certains aspects peuvent être beaucoup moins précis (et ne doivent passer que des tests humains, plutôt qu'une suite de tests automatisée qui vérifie que les réponses sont précisément correctes).

D'après mon expérience, la programmation de jeux, en particulier pour les jeux en temps réel, est une expérience très différente de ... presque tous les autres logiciels de développement que j'ai faits, peut-être à l'exception du travail de l'interface graphique. C'est quelque chose que vous devez essayer!

Ivan
la source
4

La réponse est "moteurs". De nombreux jeux sont construits sur différents graphismes et moteurs de jeu qui sont essentiellement de grandes bibliothèques ou des cadres.

Dans le monde OSS, jetez un œil à Ogre pour un exemple, pour les jeux commerciaux, vous avez des trucs comme Source.

Il y a d'autres facteurs en jeu, comme une grande partie du code est jetable et ne passerait pas dans un environnement professionnel - mais c'est parce que la durée de vie limitée d'un jeu et les délais de développement accélérés signifient que le code est (presque) conçu juste pour travailler, pas pour être entretenu.

gbjbaanb
la source
Bien sûr, ces moteurs ne sont que des abstractions de construction de code C / C ++ régulières (bien que hautement optimisées) au sommet des API de niveau inférieur (par exemple DX ou OpenGL pour les graphiques).
Mais c'est une bonne idée d'avoir de l'expérience dans la création d'un jeu très simple en C ou C ++ juste pour donner à l'auteur une idée du développement du jeu.
KyelJmD
4

Unity3D est vraiment sympa. Voici quelques points que j'aime à ce sujet:

  • il vous permet de créer des jeux d'une manière indépendante de la plate-forme, puis de créer automatiquement des déployables pour Windows, Mac OS X, Android, IOS. Cela est vrai pour la version actuelle (3.x). Apparemment, la version 4 vous permettra également de déployer sur Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Même si vous avez besoin d'une licence payante pour l'utiliser (commercialement), vous pouvez télécharger une version gratuite dans laquelle vous pouvez utiliser la plupart des fonctionnalités (c'est-à-dire que vous ne pouvez pas par exemple faire des déployables pour les plates-formes mobiles). Cela donne un excellent moyen de prévisualiser la chose avant de décider de l'acheter ou non:

http://unity3d.com/unity/licenses

  • Fonctionne avec la plupart des logiciels de modélisation 3D (je préfère 3D Studio Max, mais il en prend également en charge d'autres):

http://unity3d.com/unity/editor/importing ( faites défiler un peu)

  • Le codage (script) peut être fait en C # qui est un langage agréable, avec une bonne API et des contrôles de temps de compilation. Livré avec un bon environnement de développement (IDE et tout). Si vous voulez quelque chose de différent, il prend également en charge Javascript.

  • A un très bon support physique (collisions, gravité, forces, etc.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Possède un magasin de ressources qui vous permet d'acheter divers modèles, scripts, animations, etc., et en fonction de vos compétences (et de votre portefeuille), vous pouvez les obtenir / modifier pour obtenir rapidement des ressources décentes pour votre jeu.

  • Dernier point mais non le moindre, c'est assez rapide. Découvrez les démos mobiles, à mon humble avis, ils se déplacent assez bien et ont des graphismes très décents:

http://unity3d.com/gallery/made-with-unity/game-list

Voici un joli projet Unity que j'attends actuellement:

Wasteland 2 de Brian Fargo

Ils ont une belle entrée de blog expliquant pourquoi ils ont choisi Unity , ainsi que d' autres expliquant comment cela fonctionne .

Shivan Dragon
la source
3

ID Software est l'un des fournisseurs qui publie généralement des jeux de pointe. Quelques années plus tard, ils les publient souvent en open source. Sur http://fabiensanglard.net/quake3/index.php vous pouvez trouver une analyse du code source de Quake3. C'est une description assez verbeuse et même si Quake3 est assez ancien, les concepts devraient toujours être pertinents pour les jeux modernes.

Et oui, si vous voulez construire un moteur de jeu compétitif, rapide et moderne, vous devrez connaître toutes ces pièces de bas niveau. Si vous ne voulez pas vous en soucier: il existe différents moteurs (moteur quake3 ou ceux d'autres réponses) mais bon, vous ne créez pas un nouveau jeu révolutionnaire ;-)

johannes
la source
D'après l'apparence de cette analyse, Quake 3 est antérieur à quelques techniques essentielles de "bas niveau" du développement de jeux d'aujourd'hui. Pour commencer, les shaders (fournis par OpenGL).
Quake 3 est sorti en 1999. Oui, il y a longtemps. Mais cela montre comment travaillent les gens qui essaient d'aller à la limite de ce qui était alors possible. La plupart des autres moteurs disponibles se tournent davantage vers la réutilisabilité, le code "propre", etc. au lieu des performances maximales. (Cela ne signifie pas que les autres moteurs sont mauvais et lents, mais je pense que cela vaut la peine de les regarder si vous voulez en savoir plus sur l'architecture et la mise en œuvre du moteur de jeu 3D)
johannes
Un autre article connexe sur les mathématiques binaires de bas niveau dans les jeux 3D, en utilisant Quake comme exemple: blog.quenta.org/2012/09/0x5f3759df.html
johannes
1

Comme le mentionnent de nombreuses réponses, les moteurs de jeu et les bibliothèques jouent un grand rôle. Cependant, notez que cela s'applique davantage aux jeux commerciaux de taille moyenne qu'aux petits jeux "indépendants".

Par exemple, sur les plates-formes mobiles, la plupart des jeux sont écrits en utilisant uniquement un ensemble de bibliothèques relativement primitives plutôt que de s'appuyer sur des moteurs de jeu à part entière et des cadres. Ils existent, mais pour l'essentiel, il s'agit de réutiliser votre propre code de projets antérieurs.

zxcdw
la source