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?
Antworten:
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:
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).
quelle
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:
Ich denke, es werden mehr als 1000 Sprites angezeigt.
quelle