2008-10-07 7 views
11

Je suis en train de déconner avec le développement de jeux 2D en utilisant C++ et DirectX dans mon temps libre. Je trouve que l'approche de modélisation de domaine de problème d'entreprise n'aide pas autant que je voudrais;)Quelles sont les bonnes ressources sur la conception de moteur de jeu 2D?

Je suis plus ou moins à la recherche d'une «meilleures pratiques» équivalentes à la conception de base du moteur de jeu. Comment les entités devraient interagir les unes avec les autres, comment les animations et les sons devraient être représentés dans un monde idéal, et ainsi de suite.

Quelqu'un at-il de bonnes ressources à recommander?

Répondre

15

Gamedev.net est généralement là où je me tourne pour avoir une idée de ce que les autres membres de la communauté de développement de jeux font. Cela dit, je crains que vous ne trouviez que l'idée de «meilleures pratiques» dans le développement de jeux soit plus volatile que la plupart des autres. Les jeux ont tendance à être des applications si spécialisées qu'il est presque impossible de donner des réponses «taille unique». Ce qui fonctionne très bien pour Tetris sera inutile avec les astéroïdes, et un modèle qui fonctionne parfaitement pour Halo risque d'échouer lamentablement pour Mario.

Vous trouverez également rapidement qu'il n'existe pas de «norme industrielle» pour les formats de texture, de maillage, de niveau, de son ou d'animation. Tout le monde roule tout seul ou utilise tout ce qui est pratique pour la plateforme. Vous voyez parfois des choses comme COLLADA, ce qui est bien, mais ce n'est encore qu'un format intermédiaire conçu pour faciliter l'écriture des exportateurs.

Si vous êtes nouveau dans le développement de jeux vidéo, mon conseil serait le suivant: ne vous tuez pas sur votre structure de code lors de votre première utilisation. Essayez un jeu simple, comme les astéroïdes, et tirez-le jusqu'à ce qu'il fonctionne, peu importe à quel point le code est "laid". Utilisez des formats simples avec lesquels vous êtes familier sans vous soucier de leur capacité à supporter de gros projets. Ne vous inquiétez pas des plugins, des skins, des éditeurs ou de tout autre fluff. Il suffit de le faire fonctionner! Ensuite, quand vous avez fini avec ce premier jeu, choisissez un autre, et cette fois-ci, nettoyez un ou deux aspects de votre code (mais n'allez pas trop loin!) De là, itérez!

Je vous promets que cela vous permettra d'aller plus loin que n'importe quel montant en ligne pour la «bonne façon» jamais (cela venant de quelqu'un qui a fait beaucoup de piquer).

Et une dernière pensée pour vous: Si vous vous sentez plus à l'aise pour travailler dans un espace plus défini, jetez un oeil à XNA ou à une bibliothèque similaire. Ils prédéfiniront certains des «meilleurs» formats à utiliser et vous donneront des outils pour travailler avec eux, ce qui éliminera une partie des conjectures initiales.

Bonne chance, et surtout rappelez-vous: les jeux (et leur développement) sont censés être amusants! Ne soyez pas trop pris par les petites choses!

6

Faire une partie. Une fois que vous avez terminé, faites-en une autre. Regardez ce que vous avez aimé et ce que vous n'avez pas aimé, puis faites-en un autre. Cependant, sérieusement, vous pouvez lire tous les guides de «bonnes pratiques» pour la conception de jeu que vous aimeriez, mais finalement, il s'agit d'expérimenter. La seule façon d'acquérir de l'expérience est de s'asseoir et d'écrire un jeu. Après avoir fait cela quelques fois, vous aurez une meilleure idée de la façon d'écrire un jeu. beaucoup mieux.

+3

Tout comme la construction d'une maison. faites le premier pour votre pire ennemi, le suivant pour un ami et le troisième pour vous-même. :-) – KPexEA

3

À peu près n'importe quel livre qui a Andre Lamothe comme l'un des contributeurs.

GameDev a des tonnes d'articles aussi bien.

0

Puisqu'il n'a pas encore été mentionné, pourquoi ne pas commencer par regarder un moteur existant qui a été libéré dans la communauté? Puisque vous parlez en 2D, je voudrais revenir en arrière et recommander quelque chose comme Abuse. Oui, c'est ancien et la plupart des morceaux intéressants sont en Lisp - mais le jeu est devenu très populaire pendant un moment, ce qui signifie qu'ils faisaient quelque chose de bien.

En fait, je pense que le fait que tant de jeu original était en Lisp est une leçon très utile. Choisissez le langage/l'outil le plus robuste et ne vous inquiétez pas des performances. Vous pouvez toujours optimiser les parties lentes en C plus tard.

1

Je ne suis pas d'accord avec vous: les applications d'entreprise ne vous préparent pas à la programmation de jeux.

J'ai créé quelques jeux à petite échelle en python, java, html/php et perl. La structure de base d'un jeu, comme vous le savez sans doute, est:

boucle principale:
    handleInput()
    updateGameLogic()
    renderImages()

Maintenant, c'est Tout va bien pour les jeux à un seul fil, à un seul fil, comme dans les années 70 ou 80. Mais je ne trouve pas que cette structure soit particulièrement adaptée aux jeux multi-écrans (comme les RPG) ou à quelque chose de plus exotique. Cela ne se passe pas très bien. Le code devient assez funky car vous devez gérer une variété d'entrées. Ça ne va pas bien.

Cependant, avant que je frappe trop cette métaphore, s'il vous plaît noter que c'est un endroit EXCELLENT pour commencer. J'irais même jusqu'à recommander l'apprentissage de Python/Pygame et commencer à construire des jeux avec cet outil plutôt que C++, ce qui complique le processus de conception et d'implémentation. Lorsque vous prototyperez en python, vous verrez que le jeu prend forme plus rapidement et se lance dans des problèmes indépendants de la langue.

Pour moi, les aspects les plus difficiles et les plus fastidieux de la programmation de jeux sont les atouts graphiques et sonores. Alors que je suis un peu un nerd audio et un musicien amateur, créer de la musique crédible et appropriée et SFX est un projet à part entière. Je n'ai pas de talent graphique, je dois donc me fier à la modification d'images existantes ou à l'utilisation de celles qui sont disponibles gratuitement. Heureusement, il existe des polices gratuites largement disponibles qui peuvent être utilisées pour les jeux (et peu d'autres, car elles sont presque universellement mauvaises). Enfin, il n'y a rien de tel que l'open source pour voir comment les autres projets gèrent cela. La bataille de Westnoth est un jeu mature et de taille moyenne. Vous pourriez vouloir voir ce qui se passe là-bas. Encore une fois, les jeux en python rendent souvent leur code source disponible, ce qui vous permet de parcourir des centaines de projets. Vous pouvez également décompiler les ROMs atari 2600, mais cela ne vous dira pas grand-chose sur la programmation aujourd'hui. L'ancien VCS était un périphérique dédié qui traitait ses applications de manière très dépendante du système. :-D

Enfin, j'aime aussi André LaMothe. J'ai son vieux livre de 1993 qui compte un million de pages. Bien que ce soit toujours une bonne référence sur certaines idées de jeux génériques, une grande partie est évitée par la disponibilité de bibliothèques et de frameworks gratuits qui n'existaient pas à l'époque.

Bonne chance pour votre projet.

Questions connexes