Wo fange ich an, wenn ich ein C ++ 2d-Spiel schreiben möchte? [geschlossen]

17

Ich bin ein C # Webentwickler und möchte meine Fähigkeiten erweitern und dabei ein bisschen Spaß haben. Ich kenne einige der Grundlagen von C ++ und würde gerne ein einfaches 2D-Spiel / eine Spiele-Engine für mich schreiben, die C ++ verwendet. Welche anderen Bibliotheken oder SDKs benötige ich und wo finde ich einige Tutorials und Informationsressourcen, um voranzukommen?

Ich habe mir XNA bereits mit C # angesehen. Dafür gibt es eine Menge Ressourcen, aber ich würde eher Nicht-Microsoft-Produkte verwenden. Das Ziel ist es, ein bisschen Spaß zu haben und gleichzeitig ein besser abgerundeter Programmierer zu werden.

Bitte beachten Sie, dass ich nicht nach dem besten Startplatz frage. Ich frage nur nach einem Ort, an dem ich anfangen kann.

Danke für jede Hilfe!

Quakkels
quelle

Antworten:

27

Der Standardstartplatz (nach meiner Erfahrung) für C ++ - Spieleentwickler ist SDL . Du musst deine Hände ein bisschen schmutziger machen als XNA.

Wenn Sie etwas Höheres ausprobieren möchten, dann würde ich SFML vorschlagen . Es erledigt einige der einfacheren Aufgaben für Sie, aber Sie müssen trotzdem Ihre Speichernutzung usw. im Auge behalten.

Mike Cluck
quelle
1
Ich werde mich darum kümmern. Mein größtes Problem mit XNA ist, dass es so unkompliziert war, dass ich nicht das Gefühl hatte, wirklich die Dinge auf niedrigerem Niveau zu lernen, die ich erforschen möchte.
Quakkels
6
SFML hat ein hübsches Design, ist aber immer noch ein bisschen fehlerhaft und befindet sich im Umbau der API. Ich würde es nicht für komplexere Spiele verwenden, bis die nächste Version gut überarbeitet ist.
Bitgarden
Wenn Sie etwas anspruchsvolleres als SDL suchen, probieren Sie ClanLib aus . Wie XNA unterstützt es die Hardwarebeschleunigung, funktioniert aber auch unter Linux und exklusiv in 2D.
ChrisC
2
Sie können auch direkt in die Kehle gehen - OpenGL ist mein persönlicher Favorit (Sie können es mit SDL oder SFML
verpacken
9

Ich würde vorschlagen, SDL zu verwenden . Es ist schon eine lange Zeit vergangen, daher sind die Dokumentation und der Support ziemlich gut und es ist eine der einfachsten Möglichkeiten, eine Zeichenoberfläche auf den Bildschirm zu bringen. Sie üben das Schreiben von Klassen in C ++ (da Sie wahrscheinlich viele der SDL C-Funktionsaufrufe einschließen möchten) und haben Erfahrung im Umgang mit Zeigern und Verweisen sowie in der grundlegenden Speicherverwaltung. Das Verwalten des eigenen Speichers ist einer der Hauptunterschiede zwischen C ++ und C #.

Steve Blackwell
quelle
9

Persönlich würde ich Allegro 5 aus folgenden Gründen wählen :

  1. Es hat ein CMake-basiertes Build-System. Dies macht es viel einfacher als die meisten Build-Systeme für die Arbeit auf mehreren Plattformen. Dies scheint eine Kleinigkeit zu sein, ist aber insgesamt ziemlich wichtig. Dies vereinfacht die Erstellung der Bibliothek erheblich.

  2. SFML ist immer noch in erheblichem Wandel. 2.0 ist eine ziemlich wesentliche Änderung. Während Allegro mit Version 5 bereits eine bedeutende Änderung durchlaufen hat, dreht sich jetzt alles um Stabilität.

  3. Es behandelt die Modularität anders als SFML. Mit SFML fragen Sie nach bestimmten Komponenten, aber Sie bekommen alle. Wenn Sie nach der Grafikkomponente fragen, erhalten Sie die gesamte Grafikkomponente. Mit Allegro 5 erhalten Sie immer die Grafikkomponente. Wenn Sie jedoch die Bitmap-Loader von Allegro nicht verwenden möchten, müssen Sie dies nicht tun. Sie können Ihre eigenen verwenden.

  4. Es hat sehr gute Dokumentation. SFML verwendet eine Dokumentation im Doxygen-Stil, aber selbst das ist ziemlich spartanisch. Während Allegro 5 umfassender ist, sind die Funktionen nach bestimmten Systemen gruppiert, die sie abdecken. Es ist nicht perfekt, aber insgesamt ist es besser.

  5. Sie sind klug genug, um nicht zu versuchen, das Einfädeln zu machen. Mit C ++ 11 / Boost.Threads, das entweder weit verbreitet ist oder gleich um die Ecke ist, kann die Verwendung eines anderen Thread-Wrappers mehr als nur problematisch sein: Es kann gefährlich sein, den Code ordnungsgemäß zum Laufen zu bringen.

Nicol Bolas
quelle
Warum bevorzugen / empfehlen Sie Allegro gegenüber SDL oder SFML?
Quazi Irfan
@iamcreasy: Wenn du darauf bestehst.
Nicol Bolas
Sie erwähnen SDL immer noch nicht ...
Engineer
@NickWiggill: SDL verfügt über Threads und plattformspezifische Buildsysteme. Ich hatte nicht das Bedürfnis, es für etwas Bestimmtes auszurufen.
Nicol Bolas
@ nicol-bolas du hast die Nachteile von Allegro nicht erwähnt. Wie sehr geringe Anzahl von Tutorials zu vergleichen.
Quazi Irfan
4

Ich denke, ein fantastischer Startpunkt ist LazyFoo . Auf diese Weise können Sie schneller als an jedem anderen Ort, den ich gesehen habe, mit SDL arbeiten. Ich würde empfehlen, schnell in OpenGL einzusteigen (sobald Sie es ertragen können), da Sie mit der Hardwarebeschleunigung viel mehr für Ihren Programmier-Dollar bekommen. Wenn Sie diesen Weg gehen, empfehle ich diesen Leitfaden .

ultifinitus
quelle
2

Ich würde SFML empfehlen, wenn Sie C ++ verwenden. Es bringt Sie schnell auf den Bildschirm und die Verwendung mit Ihrem C ++ - Spielcode ist unkompliziert.

jmp97
quelle
2
  • SFML - das Baby in der Gruppe, aber möglicherweise am einfachsten zu bedienen, was ich gelesen habe.
  • SDL - die mittlere Straße. Sehr ausgereifte Bibliothek, vernünftig, im Allgemeinen kurz und bündig, und eine sehr häufige Wahl. Das Einrichten von Anzeigeformaten kann ein Kinderspiel sein. Ich habe Lazyfoos Tutorials verwendet, um diesbezüglich zu helfen.
  • Allegro - Geriatrisch gibt es schon seit Atari ST-Tagen. Aus diesem Grund ist ein Großteil des 2D-Rendering-Codes (der meines Erachtens nur in Allegro 4 enthalten ist) verdammt schnell, da die Logik für Systeme mit viel niedrigeren Spezifikationen entwickelt wurde. Ich persönlich finde es nicht sehr intuitiv, auch wenn ich die Dokumentation betrachte.

Da OpenGL heutzutage die 2D-Seite der Dinge beschleunigt, ist es nicht so wichtig, auf die schnellen Software-Renderer von Allegro und SDL (oder früheren Versionen) zuzugreifen. Wenn ich mich jedoch für eine Bibliothek entscheide, konzentriere ich mich mehr auf Projektreife, Benutzerbasis und Dokumentationsgeschwindigkeit (sofern die Geschwindigkeit angemessen ist), und ich würde sagen, dass SDL und Allegro an diesen Fronten gewinnen. SDL hat auch dreifache AAA-Titel wie Civ: Call to Power veröffentlicht.

Ingenieur
quelle