Beste Game Engine / Framework und Sprache für 2D-Schauspieler / Sprite-intensives Spiel [geschlossen]

7

Ich bin neu in der Welt der Spieleentwickler.

Ich habe ein ziemlich großes Projekt im Sinn (ich lerne, indem ich mir Herausforderungen stelle: P) und frage mich, was die beste Engine / Framework / Sprache für ein 2D-Spiel mit Tausenden von Sprites / Schauspielern gleichzeitig auf dem Bildschirm ist. Bare-Metal-Zeug. Ich muss immer noch in der Lage sein, mit so vielen Schauspielern gleichzeitig hinein- und herauszuzoomen.

Dieses Spiel wird keine 3D-Elemente haben.

Irgendwelche Gedanken?

Vorschläge?

Grungetastic
quelle
Siehe Game Trailers Bonusrunde .
Quazi Irfan
1
Welche Plattform (en).
Tetrad
3
Mit Bare Metal meinen Sie C / C ++? Mit dem XNA SpriteBatch können Tausende von Sprites sehr einfach verarbeitet werden. aber es ist kein blankes Metall. Auch +1 für das Lesen der FAQ und das Stellen der wahrscheinlich besten 'besten' Frage, die ich gesehen habe.
Jonathan Dickinson
@ JonathanDickinson Ich sage Bare Metal, weil ich das als ziemlich prozessorintensiv betrachte. Diese Tausenden von Sprites tun alle etwas und interagieren. Und ich möchte so wenig wie möglich aufblähen. Hoffe das macht Sinn. Plattform ist PC
Grungetastic
Ich denke, XNA eignet sich hervorragend für den Umgang mit vielen 2D-Sprites, wenn Sie C # kennen, und sie können alle miteinander interagieren und so weiter. Wenn Sie 'Bare-Metal' wollen, dann ist C ++ auf opengl oder directX wahrscheinlich der richtige Weg. XNA läuft unter DirectX.
anonym

Antworten:

9

C # mit XNA

Da Sie neu in diesem Bereich sind, hätte XNA den Vorteil, auch ein sehr guter Ausgangspunkt zu sein. Von der Erstellung eines neuen Projekts bis zur Anzeige eines 2D-Sprites auf dem Bildschirm werden 5 Codezeilen benötigt:

private Texture2D texture;

texture = Content.Load<Texture2D>("sprite");

spriteBatch.Begin();
spriteBatch.Draw(texture, Vector2.Zero, Color.White);
spriteBatch.End();

Einfacher geht es nicht. Hat auch den Vorteil, dass viele Lehrbeispiele dafür zur Verfügung stehen.

Das Problem ist Ihre Leistungsanforderung. Aber ich habe es geschafft, Tausende von Sprites in XNA ohne Probleme zu zeichnen. Es steckte jedoch kein Gameplay-Code dahinter, und mein Computer ist High-End-Code, sodass die Ergebnisse voreingenommen wären. Aber mit sorgfältiger Optimierung würde es wahrscheinlich klappen. Das ist also meine Empfehlung.

C # mit SharpDX oder SlimDX

Wenn Sie sich weiterhin im verwalteten C # -Bereich befinden , können Sie auch einen Schritt zurückgehen und die Verwendung von SharpDX in Betracht ziehen , einem neuen verwalteten Wrapper für DirectX, der nach eigenen Angaben etwa sechsmal schneller als XNA ist. Das sollte genug Leistung für Ihre Bedürfnisse haben. Und es ist plattformübergreifend.

Es gibt auch SlimDX zu berücksichtigen.

C ++ mit DirectX / OpenGL

Und wenn Sie weiter in diese Richtung gehen, erreichen Sie mit DirectX / OpenGL endlich das reine C ++. Wenn Sie sich für diesen Weg entscheiden (der in dieser Phase übrigens viel schwieriger zu bewältigen sein wird), können Sie einige Dinge tun, um Ihnen das Leben zu erleichtern.

Zum Beispiel könnten Sie SDL verwenden , um das Fenster für Sie zu erstellen und sich um die Eingabe zu kümmern, und FMOD , um das Audio zu verarbeiten, mit dem ich viel einfacher arbeiten konnte als mit den nativen Gegenstücken.

Ich weiß auch nicht, wie es heutzutage ist, aber als ich das letzte Mal damit gearbeitet habe, fand ich, dass es dank der D3DXSprite-Klasse, deren IIRC der SpriteBatch von XNA sehr ähnlich war, während OpenGL I ziemlich einfach war, 2D-Sachen in DirectX zu machen musste alles von Grund auf neu implementieren (dh mit strukturierten Quads, orthografischen Projektionen herumspielen und die Stapelverarbeitung implementieren).

David Gouveia
quelle
8

Ich empfehle SFML , da Sie damit 2D-Sprites einfach verwalten und zoomen / unzoomen können (dank einer vorhandenen "Kamera" -Klasse). Ich habe festgestellt, dass diese Abstraktionen einfacher zu verwenden sind als XNA. Ich habe keine genauen Statistiken zur Leistung, aber da es C ++ verwendet und über OpenGL rendert, denke ich, dass es schneller als XNA sein kann.

Zufälligerweise arbeite ich mit SFML an einem ähnlichen Spiel. Es kann mehr als 1000 sich bewegende Sprites mit 50 FPS auf meinem Laptop verwalten, während die Spielelogik ausgeführt wird (Kollision zwischen Sprites usw.).

Hier ist ein Screenshot dieses SFML-Programms, das auf meinem 3 Jahre alten Laptop mit integrierter Grafik mit 25 FPS (800 x 600) ausgeführt wird:

viele Sprites in SFML

Ich denke, es werden mehr als 1000 Sprites angezeigt.

Lezebulon
quelle
+1 Ich habe schon gute Sachen über SFML gehört (normalerweise im Vergleich zu SDL).
David Gouveia
Für Leute, die den SFML-Pfad beschreiten möchten, sieht Code Blocks wie eine nette IDE aus, die SFML unterstützt
Grungetastic
Ich schlage vor, ein Link zu SMFL sollte hinzugefügt werden!
Zolomon