9
votes

Comment mettre en place le code d'un jeu simple?

Je viens d'un arrière-plan en train de développer principalement des sites Web, et peut-être des applications simples basées sur une forme. MVC fonctionne bien pour cela, mais je ne vois pas tout à fait comment cela est applicable à un match. Alors, comment le faites-vous?

Je développe avec Qt et OpenGL, si cela est pertinent. J'ai un qglwidget que j'utilise essentiellement comme un hub central pour le moment. Devrait-il passer l'entrée de l'entrée sur un objet de joueur afin qu'elle puisse la gérer, ou doit-elle contrôler le lecteur directement? Les objets devraient-ils se dessiner ou y devraient-ils y avoir un autre gestionnaire pour cela? Fondamentalement, qu'est-ce qui va où? Qui gère quoi?

Liens vers des articles pertinents, des réponses à certaines de ces questions, conseils ou structures de fichiers sont tous appréciés. Je ne me soucie pas vraiment de savoir comment le programmer, juste comment modulariser gentiment.

Merci:)


0 commentaires

4 Réponses :


5
votes

Eh bien, le point de départ de cliché pour le développement de jeux semble être GameDev . Il existe un certain nombre de tutoriels et d'articles à partir de là. Il dispose également d'un forum actif. Il y a aussi un livre, "Programmation des jeux Linux" (je suppose via qt que vous utilisez Linux), mais je crois que cela coûte de l'argent. Un certain nombre de livres peuvent toutefois être trouvés sur Internet, ce qui peut être l'un d'entre eux.

Il y a aussi l'art noir de la programmation du jeu, un wiki avec des titres de chapitre vraiment terrifiant. Voici un lien vers un chapitre particulièrement pertinent, bien que bien sûr, vous pouvez voir le tout: Chapitre 2 . ( Lien de sauvegarde Archive.org )

J'espère que cela aide, - AGOR


4 commentaires

J'espérais avoir quelque chose d'un peu plus spécifique que "gamedev". Cet art noir de la programmation de jeu ... est assez terrible. Il décrit surtout comment le jeu doit apparaître à l'utilisateur final et de manière assez rigide (jouer une animation de mort avec beaucoup de sons et de trucs, puis affichez un écran de score élevé!). Il décrit une boucle d'événement de base, mais j'espérais quelque chose un peu plus compliqué que comment écrire un jeu de 200 lignes dans un seul fichier. Que je puisse faire. Je ne voulais pas trop dire que simple. Je ne peux pas dire s'il a été écrit par une expérience de 15 ans, ou un PhD de 60 ans, essayant d'agir "Teh" Cool.


Je suppose que j'ai un peu emporté là-bas. Je vais creuser un peu plus, il pourrait y avoir des gemmes plus tard, mais le premier bit n'est pas très utile. Oui, je programmment sur Linux pour ce projet particulier ... Il est tellement plus facile d'obtenir les bibliothèques que j'ai besoin correctement installées. Mais je saute d'avant en arrière mais entre Windows et Ubuntu ... Mais les principes de design ne sont pas vraiment dépendants du système d'exploitation de toute façon. Quoi qu'il en soit, merci, je vais regarder à travers cela plus.


Pas de soucis. Si vous cherchez plus de niveau de détail, il peut être utile de fournir plus d'informations sur quel type de jeu votre fabrication. J'imagine que, disons que les jeux de stratégie en temps réel ont une structure de code assez différente que les tireurs de première personne ou des jeux de puzzle, ou autre. Comme une autre suggestion: il y a (bien sûr) des jeux open-source de n'importe quel genre, vous pouvez donc vous en tenir compte. Personnellement, je ne peux jamais faire de têtes ou de queues du code source, mais peut-être que vous êtes plus adepte. :) [Et oui, j'ai été gêné par la chose "Art Black", mais cela semblait approprié à l'époque? :)]


Ouais ... Je déteste passer à travers la source de quelqu'un d'autre, à moins que ce soit extrêmement simple et des barettes. Certaines choses ont autant de niveaux d'abstraction, vous devez creuser plusieurs fichiers pour déterminer ce qu'une fonction unique fait. Dieu merci pour les IDes modernes (Ctrl-Click!) :) Le jeu est un jeu de tir à défilement latéral. Sorte de mi-chemin entre Super Metroid et Slug métallique, je suppose. Avec la physique. :)



0
votes

C'est probablement plus basique que vous recherchez, mais j'apprends avec Pygame et que leur livre est un livre de APRED qui enseigne à GameDev de base si d'autres sont intéressés.


2 commentaires

Les gens continuent à suggérer un pygame ... Je ne suis pas vraiment intéressé à passer ou à apprendre une nouvelle bibliothèque, mais Je vais examiner la documentation pour voir comment ils structurent les choses. Si c'est vraiment très génial, il doit bien conçu correctement? Merci.


Gratter ça. Il ne semble pas que Pygame fournit une structure ... c'est juste une grosse bibliothèque utilitaire, n'est-ce pas? Ne fait pas appel du tout pour moi.



0
votes

Je veux presque crier duplicatin de ma question mais ce serait boiteux. :)

Quoi qu'il en soit, regardez à travers ces réponses. Je pense que si vous n'avez pas beaucoup d'expérience dans le jeu de Dev, sautez-vous. Ne pensez pas beaucoup de choses sur la phase de planification, vous craignez simplement d'obtenir quelque chose à l'écran, d'obtenir quelque chose de travail, puis de refacteur et de gâchis avec votre code (sans changer votre sortie) et vous découvrirez ce qui fonctionne et ce qui va mieux.

Je suis un grand fan d'écriture de quelque chose qui fonctionne, puis revenant et refactore. Vous pouvez apprendre beaucoup de cette façon, et vous passez moins de temps à aller dans des milieux hypothétiques essayant de comprendre les choses dans votre tête et de ne rien faire. (Et de ne pas dire que c'est ce que vous finiriez de faire, peut-être que vous êtes un excellent planificateur, mais je l'ai personnellement fait beaucoup de fois.)


6 commentaires

C'est le problème. Je suis toujours faire saute droit dans et jamais planifier, puis je me retrouve avec un énorme gâchis sur mes mains qui se déroulent de moi, puis je "refactorise" tout le programme dans le néant. Mieux vaut commencer par une certaine structure pour que je ne sois pas tellement tenté de la déchirer. J'ai peu d'expérience de jeu, mais pas aucun. J'ai un clone Mario SUPER BASIC, et un autre jeu ... mais lorsque vous essayez d'ajouter plus d'éléments (comme un écran de menu) tout tombe en morceaux. Comme si votre joueur est le seul objet qui gère les entrées ... Que se passe-t-il quand il meurt?


Quoi qu'il en soit, tu as raison. C'est assez similaire à votre question, je vais aussi lire ces réponses. Merci :)


dev.koonsolo.com/9/model-view-controller-for-for -Games c'est un bon. J'ai toujours pensé à "modèle" comme "base de données" et contrôleur comme ... Je ne sais pas, la manipulation des données post-publications et l'envoi du modèle, et des vues sont des vues .... J'ai dû tordre la tête un peu à voir Comment je pourrais appliquer cela à un jeu. Utile :)


Eh bien, si vous arrivez à la optique où votre joueur est le seul objet qui gère la saisie et que vous devez le faire mourir, puis vous refacteur; Mettez en surbrillance que le code de saisie, couper, la coller dans une nouvelle classe avec des appels vers la nouvelle classe de votre lecteur. Puis déplacez-le d'un niveau. Mettez les éléments d'entrée dans toute la classe gère le joueur et demandez-lui de manipuler le joueur comme une marionnette à l'aide de méthodes publiques plutôt que de manipulation directe des variables de lecteur. Continuez à bouger comme ceci, une étape / couche à la fois. C'est ce que refactoring est tout.


Vous avez raison d'explorer comment structurer une partie du début pour minimiser la nécessité de changer complètement à mi-chemin. Et c'est pourquoi j'ai posé la même question. C'est bien d'avoir une idée générale. Je trouve que cela aide si je vous asseyez et écrivez des exigences - qu'est-ce que tout ce que je veux que mon jeu soit. Dessinez ensuite de vrais diagrammes UML simples et assurez-vous qu'ils peuvent accomplir ces exigences. C'est une sorte de processus que le monde des affaires utilise et je pense qu'il est très propre de faire une partie aussi; De plus, cela vous oblige à avoir une idée claire de votre jeu dès le début.


Ouais ... Eh bien, tôt ou tard, je vais devoir refacteur de toute façon, et assurez-vous que je suivrais une méthode similaire comme si vous avez mentionné. Mais minimiser le refactoring lorsque vous SAVOIR Vous aurez besoin d'au moins quelques niveaux d'abstraction à partir de la batte ne fait pas mal. Déplacer quelque chose d'un niveau d'abstraction n'est pas si grave, mais vous pouvez vous mettre dans d'autres situations où le refactoring est un peu plus difficile. Merci pour les conseils :)



0
votes

Assurez-vous d'examiner les approches modernes axées sur les composants (lecture: pluggable), aussi épousée par PushbuttonEngine et décrite dans cette vidéo courte (5 minutes):

http://www.youtube.com/watch?v=auaqzzCjl-y < / a>


0 commentaires