Quels sont les principes fondamentaux du développement de jeux? [fermé]

12

Je ne comprends absolument pas comment un jeu vidéo peut être codé.

Je suis un programmeur débutant et je n'ai qu'une expérience dans l'écriture d'applications de console qui font des mathématiques et quoi. Je ne comprends pas comment ces processus logiques peuvent faire bouger les images à l'écran (jeux vidéo). Évidemment, si je sautais dans un livre de développement de jeux ou quelque chose comme ça, je comprendrais, mais je suis actuellement encore en train de comprendre les principes fondamentaux de la programmation en général. Quelqu'un pourrait-il donner une explication simple, sur le plan du codage, sur le saut entre faire un ordinateur faire des mathématiques simples et faire en sorte qu'un ordinateur produise des programmes graphiques incroyables tels que des jeux vidéo? Peut-être y a-t-il des vidéos d'introduction que quelqu'un peut me montrer?

Mat
la source

Réponses:

14

En supposant que vous êtes un débutant absolu en programmation, et afin de baser mon exemple sur quelque chose que vous pourriez savoir, tout en écrivant une application console qui a un menu où vous voulez que l'utilisateur choisisse parmi les options disponibles, que ferez-vous en premier?

Si vous avez pensé à créer votre menu, vous avez obtenu un point, mais que se passe-t-il si après que l'utilisateur a appuyé sur une touche qui ne fait pas partie de l'option disponible,

  1. votre application se fermera-t-elle, ou
  2. doit-il continuer jusqu'à ce que l'utilisateur appuie sur la touche "Quitter"?

Mon pari serait # 2, l'application continuera jusqu'à ce que l'utilisateur appuie expressément sur la touche pour quitter l'application console.

Un jeu est en quelque sorte similaire! Quand voulez-vous que le jeu se termine? Lorsque l'utilisateur choisit de le faire, non? Par conséquent, l'action ou le menu du jeu doit durer jusqu'à ce que l'utilisateur souhaite quitter. Ensuite, vous devrez créer une boucle qui indique au programme de continuer jusqu'à ce que cette touche pour quitter ait été enfoncée.

Vous venez de découvrir la boucle de jeu. Un jeu n'est qu'un autre programme qui s'exécute jusqu'à ce qu'il soit expressément quitté par l'utilisateur.

Dans la boucle du jeu, lorsque vous jouez au jeu, les mouvements sont des images dessinées sur l'écran à des coordonnées spécifiques. Lorsque l'utilisateur / le joueur appuie sur une touche directionnelle telle que [Left], alors vous faites rafraîchir vos coordonnées de votre image tout en décrémentant sa coordonnée X afin de donner l'impression d'un mouvement vers la gauche. Vous devez obtenir ces entrées afin d'obtenir quelle action le joueur souhaite que son personnage / vaisseau fasse ensuite. Ensuite, la boucle de jeu continue de boucler jusqu'à ce que vous puissiez obtenir une autre action souhaitée du joueur, jusqu'à ce que le jeu soit quitté.

Eh bien, je crains que cette réponse commence à être assez longue, alors permettez-moi de vous indiquer deux autres questions qui pourraient vous intéresser, j'espère.

  1. Par où commencer à écrire des jeux, des tutoriels ou similaires?
  2. Déplacer mon sprite dans XNA en utilisant des classes .

Ce troisième lien n'est pas sur la façon de commencer à écrire des jeux, mais sur la façon de faire bouger un sprite à l'écran. Puisque vous avez également demandé comment déplacer les graphiques à l'écran, j'ai pensé que cela pourrait vous intéresser.

J'espère que ça aide! =)

Will Marcouiller
la source
4

Lorsque vous créez des applications console, vous utilisez très probablement des fonctions appelées print () ou read () ou write (). Au lieu de cela, les jeux graphiques utilisent d'autres fonctions qui peuvent être aussi bas que set_pixel () pour définir la couleur d'un pixel individuel à l'écran, sur des cadres entiers qui vous permettent de dessiner des modèles tridimensionnels avec beaucoup d'effets.

Mais l'idée principale est la même que pour une simple application de console mathématique. Vous obtenez une entrée de l'utilisateur, agissez en conséquence pour modifier certaines variables, puis imprimez (ou dessinez) une sortie. Les jeux et autres programmes interactifs effectuent 30, 60 ou plus de ces cycles d'entrée-calcul-sortie se produisent chaque seconde. Bien sûr, chaque partie peut être aussi complexe que vous le souhaitez, mais tout se résume généralement à l'entrée-calcul-sortie. Alors ne vous inquiétez pas, vous êtes sur la bonne voie.

Quant aux recommandations, je dirais que vous continuez à programmer, autant que vous le pouvez. Si vous êtes intéressé à vous concentrer sur la programmation de jeux et que vous ne connaissez que la programmation sur console, essayez de créer une petite aventure ou un RPG basé sur du texte. De cette façon, vous vous entraînerez beaucoup sur la façon de gérer vos variables, d'utiliser des nombres aléatoires et d'organiser votre code.

Après avoir acquis une certaine expérience avec cela, abordez les bases d'une bibliothèque graphique. Si vous faites de la programmation procédurale, je recommanderais OpenGL, tandis que si vous faites de la programmation orientée objet, je recommanderais XNA.

Cependant, ne prenez pas trop de choses à la fois. Il est très facile d'être déçu d'apprendre un outil compliqué, pendant que vous apprenez à gérer une arborescence source, pendant que vous apprenez à parcourir un tableau, pendant que vous apprenez à obtenir des entrées et du son, tout en vous concevez votre jeu.

Il y a un long chemin à parcourir, mais rappelez-vous que le plaisir consiste à le parcourir.

Continuez votre bon travail!


la source
4

Un jeu sur ordinateur est une boucle sans fin de:

  • Mise à jour: avancez l'état du jeu d'une petite tranche de temps (comme 1/80 seconde).
  • Peignez l'état actuel du jeu.

Il en existe des variantes. Certains jeux ont plus de mises à jour entre chaque peinture, ou il peut les faire varier pour rendre le jeu également fluide sur différentes machines. Mais ce sont des détails techniques.

La phase de mise à jour qui se produit entre 50 et 100 fois par seconde (oui c'est souvent) fait ceci:

  • Mettez à jour la physique des jeux. Disons qu'un acteur a une vélocité. La mise à jour devrait le déplacer un tout petit peu dans la bonne direction. De plus, si vous utilisez un moteur physique, il devrait vérifier les collisions avec d'autres actos ou obstacles.
  • Mettez à jour les règles du jeu. C'est ce qui en fait un jeu et non une expérience physique. Disons qu'une balle a touché l'acteur joueur. Les règles du jeu indiquent au joueur de déduire X points de vie et la balle de disparaître.
  • Mises à jour de l'IA. Parfois, les acteurs contrôlés par ordinateur devraient décider quoi faire. Allez à gauche ou à droite? Trouvez un chemin vers un endroit agréable. Tire une arme.
  • Contrôle d'entrée. Mettez à jour l'acteur joueur en fonction des boutons enfoncés sur le clavier.
  • Mettre à jour le graphique de scène. Cela peut faire avancer une animation d'une étape ou mettre à jour l'interface graphique pour montrer que le joueur a maintenant 10 points de vie en moins. Son seul but est de rendre le jeu agréable et agréable.

Par où commencer?

La condition de base pour un jeu graphique est de programmer des graphiques. Assurez-vous que vous pouvez ouvrir une fenêtre et y dessiner une balle.

Je suppose que vous pouvez faire une sorte de cours. Faites un cours de balle. Il comprend les membres suivants: x, y, deltaX, deltaY. Tous sont des entiers et des échelles de pixels. Maintenant, écrivez cette boucle.

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

Cela fera rebondir la balle des limites des fenêtres. Ce n'est pas encore un jeu, mais plutôt une simulation physique. Si vous écrivez la mise à jour de la physique des balles dans la classe de balles, il est facile d'ajouter plusieurs balles. Stockez-les dans une liste et mettez à jour et peignez chacun pour chaque cadre.

Vous pouvez ajouter une palette (simuler la physique et la rendre contrôlable avec la souris ou le clavier) et un objectif de jeu tel que d'empêcher la balle d'atteindre le mur de gauche. Si le jeu ajoute de plus en plus de balles au fil du temps, la difficulté augmentera. Vous avez un jeu.

Pourquoi dormir pendant (25 - workTime) millisecondes? Si vous le faites comme ça, la simulation s'exécutera à un rythme constant de 40 mises à jour et peintures par seconde. Ce sera assez lisse. Si vous sautiez la partie sommeil, l'animation serait saccadée et occuperait 100% du processeur. De plus, la vitesse de la balle dépendrait de la vitesse de la machine qui la fait fonctionner. Maintenant, la vitesse verticale de la balle est de 40 * pixels deltaY par seconde.

Gunslinger
la source
2

Prenez votre programme de console qui fait des maths, puis quand vous entrez une bonne réponse faites-le tirer des confettis ... C'est devenu un jeu (Quelqu'un à part moi joue à Math Blaster comme un enfant? :)).

En ce qui concerne la façon dont les ordinateurs sont conçus pour créer des environnements de jeu, cela peut parfois être un peu difficile de vous envelopper, mais cela revient à une application de la compréhension humaine du monde qui les entoure. Les jeux utilisent les mêmes mathématiques, physiques et sciences pour se définir que nous appliquons au monde qui nous entoure pour expliquer comment cela fonctionne.

Les jeux Sim sont un bon exemple du réel au virtuel. Il y a longtemps, j'ai lu une interview avec le gars derrière les jeux Sim et presque tous, sans exception, sont nés de la lecture d'un sujet essayant d'expliquer le monde qui nous entoure, puis exploités avec des formules mathématiques et placés dans un environnement virtuel pour le représenter. SimCity, par exemple, découle d'essayer de simuler les bases des économies.

En ce qui concerne les détails de la façon dont vous créez un environnement de jeu 3D, y mettez de la physique, ajoutez de l'audio, laissez un utilisateur commencer à interagir avec lui. Eh bien, c'est pour cela que ce site et bien d'autres sont là et il serait impossible de résumer en une réponse plus précise.

À la fin de la journée, je décris les jeux vidéo comme des bases de données limitées très rapides. Ils sont fortement axés sur les données relationnelles et l'accès aux données à haute vitesse .. Je veux dire que si vous restituez une trame tous les 60e de seconde, vous traitez des quantités potentiellement importantes de données très rapidement en fonction de la relation de l'endroit où le joueur est dans le jeu. à toutes les autres données suivies par le jeu :)

James
la source
Lol, "les jeux vidéo en tant que bases de données limitées très rapides" ne fait qu'ajouter à la confusion.
michael.bartnett
1

Ce que vous devez comprendre, ce sont des matrices. Ils sous-tendent les jeux. Une fois que vous aurez compris la puissance des matrices, vous verrez comment les jeux se réduisent à de simples mathématiques.

Vous prenez une position de sommet dans l'espace de jeu. Vous le projetez en utilisant une matrice sur l'écran (trouvez ses coordonnées d'écran). Vous interpolez quelques pixels entre lui et ses sommets voisins, et vous avez terminé. C'est évidemment une simplification excessivement grande, mais les principes de base de la pixellisation ne sont pas du tout complexes une fois que vous avez des matrices.

DeadMG
la source