Par où commencer si je veux écrire un jeu C ++ 2d? [fermé]

17

Je suis développeur web C # et je souhaite étendre mes compétences et m'amuser en le faisant. Je connais quelques notions de base de C ++ et j'aimerais écrire un simple jeu / moteur de jeu 2D pour moi-même en utilisant C ++. De quelles autres bibliothèques ou SDK ai-je besoin et où trouver des tutoriels et des ressources d'information pour aller de l'avant?

J'ai déjà étudié XNA avec C #. Il y a beaucoup de ressources pour cela, mais je préfère utiliser des produits non Microsoft. Le but de cela est de s'amuser un peu tout en devenant un programmeur mieux arrondi.

Veuillez noter que je ne demande pas le meilleur endroit pour commencer. Je demande juste un point de départ.

Merci pour toute aide!

quakkels
la source

Réponses:

27

Le point de départ standard (selon mon expérience) pour le développement de jeux C ++ est SDL . Vous devez obtenir vos mains un peu plus sales que XNA.

Si vous voulez essayer quelque chose d'un niveau un peu plus élevé, je suggère SFML . Il gère certaines des tâches les plus subalternes pour vous, mais vous devez toujours garder un œil sur votre utilisation de la mémoire, etc.

Mike Cluck
la source
1
Je vais les examiner. Mon plus gros problème avec XNA est qu'il était si simple que je n'avais pas l'impression d'apprendre vraiment les trucs de niveau inférieur que je souhaitais explorer.
quakkels
6
SFML a un beau design, mais est encore un peu bogué et est en train de refonte majeure de l'API - je ne l'utiliserais pas pour des jeux plus complexes jusqu'à ce que la prochaine version soit bien peaufinée.
Bitgarden
Si vous voulez quelque chose d'un peu plus difficile que SDL, essayez ClanLib . Comme XNA, il prend en charge l'accélération matérielle, mais fonctionne également sous Linux et également en 2D exclusif.
ChrisC
2
Vous pouvez également aller droit à la gorge - OpenGL est mon préféré (vous pouvez l'envelopper avec SDL ou SFML)
ultifinitus
9

Je suggère d'utiliser SDL . Cela fait longtemps que la documentation et le support sont assez bons, et c'est l'un des moyens les plus simples que je connaisse pour obtenir une surface de dessin à l'écran. Cela vous permettra de vous entraîner à écrire des classes en C ++ (car vous voudrez probablement encapsuler beaucoup les appels de la fonction SDL C) et vous donnera également une certaine expérience de l'utilisation de pointeurs et de références et de la gestion de base de la mémoire. La gestion de votre propre mémoire est l'une des principales différences entre C ++ et C #.

Steve Blackwell
la source
9

Personnellement, je choisirais Allegro 5 , pour les raisons suivantes:

  1. Il a un système de construction basé sur CMake. Cela rend beaucoup plus facile que la plupart des systèmes de construction de travailler sur plusieurs plates-formes. Cela semble être une chose mineure, mais c'est assez important dans l'ensemble. Cela rend la construction de la bibliothèque beaucoup plus simple.

  2. SFML est toujours dans un flux important. 2.0 est un changement assez substantiel. Alors qu'Allegro a déjà subi un changement important avec la version 5, et c'est maintenant une question de stabilité.

  3. Il couvre la modularité d'une manière différente de SFML. Avec SFML, vous demandez des composants spécifiques, mais vous les obtenez tous. Si vous demandez le composant graphique, vous obtenez tout le composant graphique. Avec Allegro 5, vous obtenez toujours le composant graphique. Mais si vous ne voulez pas utiliser les chargeurs bitmap d'Allegro, vous n'avez pas à le faire; vous pouvez utiliser le vôtre.

  4. Il a une très bonne documentation. SFML utilise une documentation de style Doxygen, mais même cela est assez spartiate. Alors qu'Allegro 5 est plus complet, les fonctions sont regroupées en fonction des systèmes spécifiques qu'elles couvrent. Ce n'est pas parfait, mais c'est mieux dans l'ensemble.

  5. Ils sont assez intelligents pour ne pas essayer de faire du filetage. Avec C ++ 11 / Boost.Threads soit largement disponible ou juste au coin de la rue, l'utilisation d'un autre thread wrapper peut être plus que problématique: il peut être dangereux de faire fonctionner correctement votre code.

Nicol Bolas
la source
Pourquoi préféreriez-vous / proposez-vous Allegro plutôt que SDL ou SFML?
Quazi Irfan,
@iamcreasy: Si vous insistez.
Nicol Bolas,
Vous ne mentionnez toujours pas SDL ...
Ingénieur
@NickWiggill: SDL dispose de threads et de systèmes de génération spécifiques à la plate-forme. Je n'ai pas ressenti le besoin de l'appeler pour quelque chose de spécifique.
Nicol Bolas
@ nicol-bolas vous n'avez pas mentionné les inconvénients d'Allegro. Comme une très faible quantité de tutoriel comparant.
Quazi Irfan
4

Je pense qu'un endroit fantastique pour commencer est LazyFoo . Cela vous permettra de devenir opérationnel avec SDL plus rapidement que n'importe quel autre endroit que j'ai vu. Je recommanderais d'entrer rapidement dans OpenGL (dès que vous pourrez le supporter) car vous obtiendrez beaucoup plus pour votre programmation - avec une accélération matérielle. Si vous suivez cette voie, je recommande ce guide .

ultifinitus
la source
2

Je recommanderais SFML si vous utilisez c ++. Il vous montrera rapidement quelque chose à l'écran et l'utiliser avec votre code de jeu c ++ est simple.

jmp97
la source
2
  • SFML - le bébé du groupe, mais potentiellement le plus facile à utiliser d'après ce que j'ai lu.
  • SDL - la route du milieu. Bibliothèque très mature, sensible, généralement concise si un peu arcanique de temps en temps, et un choix très courant. La configuration des formats d'affichage peut être un peu un bâtard, j'ai utilisé les tutoriels de lazyfoo pour vous aider sur ce front.
  • Allegro - Gériatrique, il existe depuis les jours Atari ST. Pour cette raison, une grande partie du code de rendu 2D (qui, je pense, ne se trouve que dans Allegro 4) est assez rapide car la logique a été conçue pour des systèmes de spécifications beaucoup plus bas. Personnellement, je ne le trouve pas très intuitif, même en tenant compte de la documentation.

Considérant qu'OpenGL accélère le côté 2D de nos jours, il n'est pas si important d'avoir accès aux moteurs de rendu rapides qu'Allegro et SDL ont (ou avaient dans les versions antérieures). Cependant, lorsque je choisis une bibliothèque, je me concentre sur la maturité du projet, la base d'utilisateurs et les documents plus que sur la vitesse (tant que la vitesse est raisonnable), et je dirais que SDL et Allegro gagnent sur ces fronts. SDL a également été de publier trois titres AAA comme Civ: Call to Power.

Ingénieur
la source