Die einfachste und unterhaltsamste Art, 2D-Spiele zu programmieren? Blitz? XNA? Ein anderer Motor? [geschlossen]

20

Dies ist ein Beitrag, der meine Suche nach der unterhaltsamsten Art und Weise beschreibt, wie ein Hobby-Spielprogrammierer seine Freizeit mit dem Erstellen eines Spiels versüßen kann.

Meine Anforderungen: Ich habe mir zuerst Flash angeschaut, ein paar kleine Spiele gemacht, aber ich bezweifle die Leistung. Ich würde gerne ein ziemlich großes Strategiespiel machen, bei dem mehrere hundert Einheiten gleichzeitig kämpfen, Explosionen und Animationen eingeschlossen. Auch zoombare Karten. Ich habe gesehen, dass Adobe eine neue 3D-API für Flash hat, aber ich weiß nicht, ob dies auch die 2D-Leistung verbessert. Ich konnte in den MAX10-Sitzungen nichts zu dieser Frage finden. Würden Sie sagen, dass Flash eine gute Technologie ist, um große 2D-Spiele einfach zu erstellen? Ich mag Actionscript wirklich und ich mag, wie einfach alles in Flash ist. Es gibt verschiedene Motoren, die es noch einfacher machen.

Ich mache das nur zum Spaß, und es wäre noch besser, wenn es geeignete Animations- / Partikel-Editoren gäbe und wenn die Engine, die ich verwenden würde, für mehrere Plattformen verfügbar wäre. (damit mehr Leute mein Spiel spielen können, sobald es fertig ist). Ich möchte es auch auf vielen mobilen Plattformen verfügbar haben. (weil ich Touch-Eingabe aus irgendeinem Grund liebe)

Ich kenne das XNA-Framework ziemlich gut, aber es sind keine guten Engines dafür verfügbar, und es wird nur unter Windows ausgeführt, was eine enorme Deaktivierung darstellt. Noch größer ist, dass Sie die XNA Redistributable jedes Mal installieren müssen, wenn Sie das Spiel jemandem geben möchten. Wenn ich XNA verwende, müsste ich alle Tools selbst erstellen und sie wahrscheinlich mit WPF erstellen. (Ich würde gerne Tools mit Adobe AIR erstellen, aber leider sind die APIs für Bildmanipulationen usw. in Flash weitaus schlechter als in XNA / WPF.) Nun bin ich mir bewusst, dass ich meine eigene Engine dafür erstellen könnte unterstützt jede dieser Plattformen, aber ehrlich gesagt, das wäre zu viel Arbeit durch APIs zu pflügen. Schließlich möchte ich ein Spiel machen, keine Engine.

Die Frage lautet also : Gibt es möglicherweise eine plattformübergreifende (kostenlose oder frei zu entwickelnde?) Engine, die ich für die 2D-Entwicklung verwenden könnte? Ich bevorzuge: C #, Actionscript. Es macht mir nichts aus, C ++ zu verwenden, wenn das Toolset über dem Durchschnitt liegt, aber ich bezweifle sehr, dass es so etwas gibt. Bitte beweise mir das Gegenteil :) Also Zusammenfassung: Ich würde gerne Flash verwenden, aber ich weiß nicht, ob es gut genug skaliert. Ich bin kein Scripter, ich möchte einige echte APIs, mit denen ich in einer richtigen IDE arbeiten kann.

Nur zur Information habe ich mir mehrere Alternativen angeschaut, eigentlich suche ich schon lange. Sie würden mir sehr helfen, endlich eine Entscheidung zu treffen.

  • Funktionsmäßig wäre die Flatredball-Engine ideal. Aber ich habe ihre Werkzeuge ausprobiert und ehrlich gesagt, sie sind schrecklich. Absolut unbrauchbar, ich müsste es mir sicher selbst machen. Ich habe mir ihre API nicht angesehen, aber wenn ihre Tools so schlecht sind, bin ich nicht geneigt, weiter zu suchen.

  • Unity3D. Dieses ist ganz nett, aber ich brauche wirklich kein 3D und es ist ziemlich ... viel Arbeit zu lernen. Mir gefällt auch nicht, dass es so teuer ist, es für verschiedene Plattformen zu verwenden, und dass ich nur durch Skripterstellung Code dafür schreiben kann. Sie müssen jede Plattform separat kaufen. Die Benutzerfreundlichkeit des Editors ist durchschnittlich, das Produkt insgesamt ist für die meisten Zwecke gut genug, aber es selbst zu lernen, wäre übertrieben.

  • Shiva 3D. Es sieht gut genug aus, aber ich brauche nicht wirklich 3D. Die Benutzerfreundlichkeit des Editors ist meiner Meinung nach etwas schlechter als bei Unity3D, und mir war nicht klar, wie ich mit der Programmierung beginnen soll. Ich denke, es erfordert C ++ für die Codierung, also ist das auch negativ. Ich will spaß haben und c # macht spaß;)

  • SDL. Ehrlich gesagt muss ich immer noch auf all diese verschiedenen SDL-Implementierungen portieren. Und ich mag keine OpenGL-Programmierung, es ist einfach hässlich. Und es braucht C ++, ich weiß, dass es möglicherweise einige Wrapper gibt, aber ich verwende keine Wrapper, weil ...

  • Irrlicht. Viele Funktionen, aber der Support scheint gering zu sein und richtet sich an Enthusiasten. C # -Bindungen werden wiederholt gelöscht. Ich bin kein Motorenthusiast, ich möchte nur ein Spiel machen. Ich sehe das nicht bei Irrlicht.

  • Ogre3D. Viel zu viel Arbeit, es ist nur eine Grafik-Engine. Auch keine Unterstützung für mehrere Plattformen und C ++.

  • Drehmoment2D. Kostet etwas zu benutzen und ich habe nicht viel Gutes über Support und Dokumentation gehört. Kostet auch extra für jede Plattform.

Maxi
quelle
Die FRB SDK-Tools sind schlecht (insbesondere Glue, ich verwende es nicht), aber Sie sparen Zeit beim Schreiben und die Dateiformate sind einfach, wenn Sie Ihre eigenen Tools schreiben müssen. Die API ist nicht so schlecht und scheint für diesen Bereich geeignet zu sein. Das größte Problem im Moment ist das Fehlen eines XNA 4.0-Ports für PC und Xbox. Außerdem können XNA-Redist und andere Voraussetzungen Teil der Installation sein - und mit Clickonce können Sie die automatische Aktualisierung und Bereitstellung einsatzbereit machen.
Oskar Duveborn
Nun, mein Punkt ist, dass ich sie nicht verwenden würde und daher die Werkzeuge unbrauchbar sind. Zusätzlich zu ihrer schlechten Benutzeroberfläche und ihrem allgemeinen Gefühl stürzen sie immer wieder auf mich. Was ist, wenn sich herausstellt, dass eine bestimmte Funktion fehlt? Selbst wenn sie Open Source wären, würde ich nicht in die Nähe dieser Codebasen gehen wollen. Scheint hart, aber ich möchte wirklich nur ein bisschen entspanntes Programmieren, und FRB scheint ein Obstkuchen der Frustration zu sein. Stellen Sie sich vor: Ich habe den Partikeleditor ausprobiert und konnte nicht einmal die Schaltfläche zum Öffnen einer Bilddatei finden. Was wohl das wichtigste Merkmal ist, auf dem alles andere aufbaut.
Maxi
Keine vollständige Antwort, aber Flash lässt sich besser skalieren, als Sie sonst vielleicht denken. Wenn Sie anstelle des Anzeigestapels in einen Bitmap-Datenbereich übergehen und einige andere einfache Optimierungen vornehmen, können Sie viel mehr daraus herausholen, als es mit einer naiveren Lösung scheint.
Gregory Avery-Weir
Das Listenelement im Partikeleditor heißt einfach "Textur" im Emitter-Eigenschaftenfenster. ^^ Es gibt Tutorials zu allen Werkzeugen, damit nicht-codierende Inhaltsersteller helfen können. Aber ja, die Benutzeroberflächen sind vom Standpunkt des Interaktionsdesigns aus wirklich schrecklich.
Oskar Duveborn
1
Da XNA nur unter Windows ausgeführt wird, gibt es eine Open-Source-Implementierung der XNA-API namens MonoGame, die auf allen Nicht-Windows-Plattformen ausgeführt werden kann: cocoa-mono.org/archives/400/… Ich habe sie selbst nicht verwendet, aber es existiert.
ChaosTechnician

Antworten:

10

Pygame ist bei weitem mein Favorit. Da das Programmieren in Python bedeutet, dass Sie schnell programmieren und 2D-Dinge schnell erledigt werden können, macht Pygame Spaß ...

jokoon
quelle
Als Bonus, wenn Sie entscheiden, dass Sie in die 3D-Welt ziehen möchten, gibt es Pyglet, das GL in Schlangenhaut hüllt;)
Wayne Werner
9

Ich benutze LÖVE seit einiger Zeit und es gefällt mir sehr gut. Du müsstest Lua lernen, aber es ist trotzdem eine lustige kleine Sprache zu lernen. Die Leute im Forum sind äußerst hilfsbereit.

egarcia
quelle
Was ist die Leistung? Welche IDE kann ich verwenden?
Maxi
1
Ich unterstütze das. Wir haben Lua und LOVE für unser Global Game Jam-Spiel verwendet und es hat fantastisch geklappt. Sie haben eine Menge großartiger Open-Source-Bibliotheken unter einer gemeinsamen API zusammengestellt, und jede Veröffentlichung wird immer besser. Die Leistung ist großartig (Lua ist unglaublich schnell!) Und viele fortgeschrittene OpenGL-Funktionen wie FBOs sind verfügbar, was für viele 2D-Engines selten ist. Abgesehen von all diesen Vorteilen ist es plattformübergreifend (Win / Mac / Linux). Ich würde es auf jeden Fall gut aussehen lassen.
Bob Somers
1
@Maxi: In Liebe brauchst du nur einen Editor und eine Konsole, auf der du schreiben kannstlove .
egarcia
2
Haben die Russen damit ein Spiel gemacht? Es würde aus Russland mit Liebe: P
Bart van Heukelom
5

Ich habe mich für Flash entschieden. Mit der neuen 3D-API von Molehill können auch 2D-Sprites im 3D-Raum viel schneller gezeichnet werden. Ich sehe keinen Grund, warum Flash für das zuvor beschriebene Spiel nicht schnell genug sein sollte. Ich muss die Tools selbst bauen, aber das hätte ich wahrscheinlich trotzdem tun müssen. Die Verwendung von AIR zum Erstellen von Tools ist meiner Meinung nach auch ziemlich ordentlich. Flash hat auch die größte Reichweite mit Plattformen, was cool ist.

Maxi
quelle
Probieren Sie Cocos2d-x aus . Es ist das, was ich für meine Entwicklung von Indiespielen verwende.
Stephen Furlani
1
Flash ist wahrscheinlich eine gute Wahl, da es sehr gute (ausgereifte) Tools und Bibliotheken für Flash gibt. Die Molehill-API wird die CPU stark entlasten (zuvor wurde alles von der CPU erledigt). Sie müssen jedoch über die Verteilung Ihres Spiels nachdenken. Flash bedeutet normalerweise ein browserbasiertes Spiel ...
Bummzack
Und pass auf, dass Handyspiele, Flash und Handys eine so schlechte Kombination sind.
Gustavo Maciel
" Und pass auf, dass Handyspiele, Flash und Handys eine so schlechte Kombination sind. " @Gtoknu, warum?
NemoStein,
@NemoStein Versuchen Sie, über YouTube nach Flash-Inhalten zu suchen, die in Mobiltelefonen ausgeführt werden. Außerdem hat Adobe die Entwicklung von Flash für Android eingestellt und es gibt keinen Flash für iOS.
Gustavo Maciel
4

Versuchen Sie es mit SFML

svenstaro
quelle
SFML ist zwar nützlich, aber nur eine Grafik-, Netzwerk- und Sound-API, jedoch keine umfassende Spiel-Engine (obwohl es ziemlich ähnlich ist).
a_m0d
2

Probieren Sie Cocos2d-x aus . Es ist das, was ich für meine Entwicklung von Indiespielen verwende.

Es handelt sich um eine bewährte OpenGL (ES) -Plattform mit Sound, Physik und sogar ein wenig 3D, die bereits seit einiger Zeit für das iPhone erhältlich ist und gerade auf anderen Plattformen verfügbar ist.

Stephen Furlani
quelle
2

Da Sie sagten, dass Sie Actionscript mögen, aber plattformübergreifend suchen, werfen Sie einen Blick auf HaXe + NME . HaXe ist eine ähnliche Sprache wie Actionscript, kann jedoch in Flash, Javascript, PHP oder C ++ kompiliert werden. NME ist eine Bibliothek, die der Grafikbibliothek von Flash ähnelt, jedoch auch auf anderen Plattformen ausgeführt werden kann. Mit dieser Kombination können Sie auf viele verschiedene Plattformen kompilieren.

Ich habe NME noch nicht verwendet, aber mein erster Test mit HaXe + Maulwurfshügel (vor wenigen Tagen) ergab 60 fps beim Rendern von 10.000 16x16 rotierenden Sprites auf meinem Laptop. Ich benutze HaXe erst seit ein paar Tagen und habe nicht genug Erfahrung damit, um sicherzugehen, dass es das Richtige für Sie ist, aber es ist einen Blick wert.

amitp
quelle
1

Ich persönlich bin ein großer Fan von Allegro 5 , aber es ist eine C-API. Trotzdem ist es eine einfache API, die Ihnen den Weg frei macht und Zugriff auf Folgendes bietet:

  • 2D-Grafik (abhängig von der Plattform mit OpenGL oder D3D)
  • Klingen
  • Schriftarten (einschließlich Bitmap und TTF)
  • Eingabe (Maus & Tastatur)
  • PhysicsFS (Dateisystemvirtualisierung)
  • Bild wird geladen

5.1 wird auch Shader-Unterstützung hinzufügen.

SDL 1.3 entwickelt sich ebenfalls recht gut. Sam scheint fertig damit zu sein, die wichtigsten API-Änderungen vorzunehmen, und was bereits enthalten ist, ist bereits ziemlich stabil. Trotzdem ... es ist noch nicht einmal Beta und Allegro 5.0 ist erschienen.

Zugegeben, für komplexere und fortgeschrittenere Spiele möchten Sie Allegro 5 wahrscheinlich mit einer Art Physikbibliothek (z. B. Box2D ) kombinieren . Trotzdem können Sie einen langen Weg zurücklegen und viel Spaß haben - mit nichts anderem als Allegro 5, der C- oder C ++ - Standardbibliothek und Ihrem eigenen Code.

Greg Jandl
quelle