8
votes

Vouloir apprendre à écrire des jeux 2D

Hey Stackoverflow Community! J'ai appris les bases de C # (je peux écrire quelques applications de formulaire) et maintenant je veux apprendre à écrire des jeux 2D. Je ne sais pas où commencer. Y a-t-il un moteur qui est bon pour les jeux 2D? Après avoir appris les bases de 2D, je voudrais écrire de simples jeux qui fonctionnent sous Windows et Linux (ce qui serait cool, Linux :)).

J'ai demandé à un ami qui occupe la programmation et il a dit que je devrais utiliser Xna avec C # (mais cela ne fonctionnerait que sur les fenêtres). Après que Googleing, j'ai découvert que OpenGL avec C ++ serait préférable d'écrire des jeux pour Linux, car il n'y a pas de DirectX / XNA. Et je n'ai pas encore utilisé C ++, cela va prendre un peu de temps pour apprendre, encore une fois.

Y a-t-il quelque chose que vous pouvez suggérer? Peut-être un autre moteur? Je viens d'installer Xna et j'ai regardé le jeu de démonstration (plateforme), ce code n'est pas du tout difficile. Xna est-il bon pour les jeux 2D?


1 commentaires

Jetez un coup d'œil à Tao, mono-project.com/tao


7 Réponses :


20
votes

Prenez un pas à la fois. Lorsque vous commencez, vous n'avez pas besoin votre code pour travailler sur chaque plate-forme. Peu importe qu'il utilise OpenGL ou DirectX, car vous allez avoir vos mains pleines à créer une partie pour exécuter sur une plate-forme avec une API graphique. < / p>

Deuxièmement, ne vous inquiétez pas trop sur les "moteurs". Vous n'avez pas besoin un moteur pour faire une partie, et souvent, ce sera plus de problèmes que ça vaut la peine. L'obsession entière avec les "moteurs" est fondamentalement une mauvaise idée. Si vous essayez d'obtenir un seul composant logiciel pour prendre en charge chaque fonctionnalité dont vous avez besoin pour un jeu, il ne va pas d'être utile pour aucun d'entre eux ..

Tout ce dont vous avez besoin est:

  • Un langage de programmation que vous êtes à l'aise. On dirait que ceci est c #, alors collez-vous avec ça.
  • Un moyen de mettre des graphiques à l'écran. La bibliothèque .NET peut faire cela dans une certaine mesure, mais une bibliothèque de niveau supérieur le rendra probablement plus facile. Vous pouvez utiliser XNA ou SLIMDX ou un autre wrapper Direct3D. Ou vous pouvez donner sdl.net un coup. Ou vous pouvez écrire votre propre. Les capacités que vous allez avoir besoin sont assez basiques et chaque bibliothèque graphique, 2D ou 3D, vous permettront de le faire.

    Vous n'avez particulièrement pas besoin de rien qui est "bon pour les jeux 2D". XNA est capable de mettre des graphiques à l'écran, de sorte que vous avez besoin. Si vous comprenez également le code requis pour l'utiliser, alors XNA est assez bon. Ne vous inquiétez pas d'essayer de trouver le "meilleur", ou quelque chose qui a "génial pour les jeux 2D" comme point de vente.


6 commentaires

Ajoutez le cadre TAO pour la création de OpenGL et d'autres API de plate-forme croisée cool à la disposition des langues .NET, qui apporte presque la plateforme inter-plateformes gratuitement;)


Tao est sympa ... voici l'un des plus beaux tutoriels pour XNA et Old Gestiond DirectX pour C # J'ai trouvé: RIEMERS.NET/ENG/TURTORIALS/XNACSHARP.PHP


Eh bien, mon argument était que la platine croisée ne matière . Tao est-il plus facile à utiliser que d'autres cadres spécifiques à la plate-forme? Si oui, alors que est pourquoi il devrait l'utiliser. Sinon, il ne devrait pas l'utiliser, peu importe le nombre de plates-formes qu'il serait exécutée.


En principe, oui. En supposant que vous restez dans les bits de .net qui sont soutenus par Mono. Et bien sûr, le code graphique peut être très fickle. Vous devrez probablement passer un peu de temps à le déboguer car il rend mystérieusement différemment sur Linux que les fenêtres. Mais laissez-moi demander à nouveau, Pourquoi avez-vous besoin de cela, votre tout premier jeu à être multiplate-forme? Avez-vous également traduit tout ce que vous avez lu en première année à l'espagnol, en russe et en chinois?


Merci, je pense que je vais utiliser Xna. A déjà écrit un petit jeu, beau cadre :)


Frais. J'ai entendu de bonnes choses à ce sujet, et c'est bien soutenu. Et plus tard, une fois que vous avez un match, tout cela fait fonctionner sur toutes les plateformes que vous aimez. Mais faites-la courir sur une plate-forme avant de vous inquiéter de deux ou trois plates-formes. Vous allez avoir vos mains pleines comme ça;)



4
votes

Probablement la plate-forme la plus simple et la plus accessible est flash. Facilement distribuable et plutôt rapide à apprendre pour les jeux (à en juger par la quantité de jeux flash disponibles sur le Web).

Je suis d'accord avec Jalf. Ne commencez pas à penser à des moteurs. Les moteurs sont une bête complexe et compte tenu de votre expérience de programmation, il peut devenir très écrasant très rapidement. Il y a beaucoup de choses qui vont dans des jeux et les modèles de conception qui les impliquent ont tendance à être très différents de ceux qui disent une application typique. Et opengl Type de choses devient très complexe lorsque vous commencez à parler de choses telles que la détection de frappe.

Une autre direction que vous pourriez prendre est au lieu de commencer votre propre jeu à partir de la terre, vous pouvez essayer de faire un mod à quelque chose comme une demi-vie 2 ou unreal. Cela vous donne une plate-forme de base que vous pouvez changer et voir comment elle se comporte. En attendant, vous visualisiez au code des autres personnes et de voir les subtilités du développement de jeux.

Voici quelques liaisons rapides que j'ai retirées d'une recherche Google en ce qui concerne le jeu flash. Je suis sûr qu'il y a probablement pas mal de livres disponibles en ligne également en ce qui concerne la création d'un jeu en Flash et d'autres langues.


2 commentaires

Y a-t-il de bons outils gratuits pour cela (flash) comme Visual Studio Express pour C #? J'aimerais vraiment savoir, car Adobe Flash CS semble un peu cher.


Il y a flash développer et FDT



2
votes

Si vous envisagez de poursuivre un avenir dans la programmation graphique, je choisirais OpenGL pour les raisons suivantes:

  • OpenGL est implémenté sur Windows, Mac, Linux et même PlayStation 3. (extrêmement polyvalent)
  • Une fois que vous êtes à l'aise avec une programmation 2D, vous pouvez passer à 3D et rester avec OpenGL.
  • opengl est également comme rapide en termes de performance par rapport à DirectX.
  • C ++ fait partie de tous les programmes de programmation au niveau collégial. *
  • Je pense que les employeurs respectent la connaissance de C ++ plus que toute autre langue.

    La courbe d'apprentissage peut être plus élevée, mais votre temps sera bien dépensé.

    * Si votre collège n'a pas de C ++ dans le cadre de leur programme de programmation, vous êtes une valeur aberrante.


4 commentaires

Ne pensez-vous pas que cela devrait être considéré comme une considération que 99.99999% de tous les jeux PC utilisent DirectX, pas OpenGL? Et pratiquement aucun jeu sur PS3 l'utilise, car les enveloppes OGL de Sony sucent et les développeurs travaillent généralement directement contre le GPU.


Je suis désolé, ton point est? Au cours de la dernière décennie (la liste inclut la Original Unreal, à partir de 1998), un 73 matchs de 73 matchs ont été apportés à la section OpenGL? (Notez que beaucoup de ceux de cette liste également support DirectX). Sugugez-vous sérieusement que cette liste constitue la majorité des jeux? Que votre développeur de jeu moyen utilise OpenGL pour le développement de leur PC? Cette opengl est ce que vous devriez aller pour si vous voulez "un avenir dans la programmation graphique"?


Si OpenGL est si grave, pourquoi l'avez-vous inclus comme une option dans votre réponse? "Peu importe que cela utilise OpenGL ou DirectX"


Pour répondre à votre dernière question, oui. La liste des logiciels comprend également des titres modernes extrêmes massivement tels que Google Earth et Photoshop CS4. Quoi qu'il en soit, si vous lisez la comparaison de Wikipedia sur DirectX vs OpenGL, vous verrez qu'ils sont équivalents en termes de facilité d'utilisation et de performance. En choisissant DirectX, vous ne devez rien gagner et vous exposer uniquement au verrouillage du vendeur.



1
votes

De mon expérience Il est de loin une meilleure meilleure rédaction de la base de votre jeu d'abord sous une forme d'application simple (peut-être basée sur le texte), puis de construire des graphiques au-dessus de cela juste en essayant des bits et des morceaux de tutoriels. De cette façon, vous aurez toujours un squelette de travail que vous pouvez jouer avec et vous ne vous compliquez pas immédiatement avec tous les appels graphiques.

Un autre point est une motivation: Si vous avez toujours une application de travail, il est beaucoup plus satisfaisant de la regarder progressant et développez plutôt que d'être frustré par «travaux / ne fonctionne pas de transitions de travail» et toujours en attente de tous les bits à se réunir pour former quelque chose de compléter à distance.

En ce qui concerne les moteurs: DirectX et OpenGL Ces jours-ci sont des moteurs eux-mêmes. Ils vous permettent de faire beaucoup de travail primitif très facilement (obtenez un modèle de 3DS Max et de le charger dans votre application dans 1-2 lignes de code), pour un petit jeu, vous n'aurez plus besoin d'autre chose.

Je suis également d'accord avec munkiphd: Flash serait une très bonne plate-forme pour un jeu 2D. C'est très simple et vous permet de vous éloigner de toute la programmation graphique ennuyeuse. Cependant, la programmation ActionScript n'est nulle près de la programmation «Heavy-Duty» avec des langages C-familiaux et de Dev Dev. plates-formes. ActionScript me frustre chaque fois que je le vois.


1 commentaires

Je ne suis pas nouveau lors de la programmation, je programme PHP depuis 5 ans et a démarré Windows / Linux PROG. il y a demi-an. J'ai écrit des progsttes à Delphes (je déteste sa syntaxe) et c #. Donc, ce ne serait pas un problème d'écrire un jeu. J'ai demandé ici de savoir quel moteur / cadre / quoi que je devrais utiliser. Je sais que Flash n'est pas difficile à coder, mais je veux coder en C # :) Merci jusqu'à présent ..



1
votes

Si vous voulez vous concentrer sur des jeux 2D et continuer à utiliser C # pour le moment, et que vous puissiez avoir vos amis à jouer à vos jeux sur Mac et PC, avez-vous pensé à utiliser Silverlight?

Utiliser Silverlight se contenterait de quelques problèmes tels que l'installation.

Vous pouvez essayer une création de quelques jeux à Silverlight, puis après avoir mouiller vos pieds, vous seriez mieux à la position de décider quels autres outils que vous aimeriez apprendre ensuite. Avec Silverlight 3.0 étant récemment publié, il y a en fait un afflux de personnes qui essaient de voir jusqu'où il peut être poussé pour le jeu, ce qui pourrait vous aider à répondre aux questions. Si vous décidez de cet itinéraire, vous pouvez publier ici ou sur des sites tels que Silverlight.net

Disclamer: Je ne suis pas sûr de l'état de Silverlight pour Linux


0 commentaires

4
votes

Quelqu'un a mentionné Flash, qui est une bonne suggestion, mais un peu cher. Si vous souhaitez faire du développement Flash / As3 gratuitement, je vous recommanderais de jouer avec Flixel . Vous aurez également besoin FlashDevelop , qui est une belle (aussi libre ) IDE. Le site Flixel a beaucoup de bonnes ressources pour vous aider à démarrer.


1 commentaires

Flixel est génial, parfait pour les jeux 2D. Vous pouvez utiliser FlashDevop, mais aussi Flexbuilder ou même votre éditeur de texte préféré comme Emacs: utilisez simplement les outils de ligne de commande Flex SDK gratuits. Si vous allez l'éditeur de texte + la ligne de commande, vous devrez utiliser un système de construction comme la marque, la fourmi ou le râteau.



1
votes

Flixel fait rock - vous pouvez obtenir un jeu 2D et courir avec une quantité minimale de code. Vous pouvez trouver un didacticiel détaillé qui vous permet de créer un jeu de plate-forme simple à l'aide de Flixel ici .

Texte alt


0 commentaires