Was muss ich bei der Bewertung von Bibliotheken, Engines und Frameworks für die Erstellung eines Spiels beachten?


10

Ich werde ein Spiel machen. Ich habe festgestellt, dass es viele Spiele-Engines, Bibliotheken und Frameworks gibt, und ich habe ein wenig Probleme bei der Entscheidung, welche ich verwenden soll.

Ich bin schon ziemlich gut mit einigen Programmiersprachen, aber es gibt andere, die ich überhaupt nicht kenne. Ich bin nicht dagegen, neue Programmiersprachen zu lernen, wenn das hilft, aber mein eigentliches Ziel ist es, mein Spiel zu verbessern.

Welche Kriterien sollte ich verwenden, um Engines, Bibliotheken und Frameworks miteinander zu vergleichen, damit ich entscheiden kann, nach welchen Kriterien ich am produktivsten sein kann, um mein Spiel zu beenden?


11
Für das, was es wert ist, verwende ich einen zweistufigen Ansatz: (1) wähle einen willkürlich aus; (2) bereue die Entscheidung später. Der Vorteil ist, dass Sie den ersten Schritt schnell hinter sich bringen.
Cameron Fredman

2
Sollte dies nicht eine Community-Wiki-Frage sein?
Marton

Ich bin froh, dass dies zu einer Community-Wiki-Frage wird, aber ich habe keine Möglichkeit, dies zu tun. Ich gehe davon aus, dass CW bei Fragen heutzutage nur für Moderatoren bestimmt ist.
Trevor Powell

@ Martin Warum denkst du, sollte es ein CW sein?
MichaelHouse

1
@ Byte56 Weil diese Frage immer auftaucht, wenn jemand mit der Spieleentwicklung beginnen möchte. Es gibt bereits viele Frameworks / Engines, und ein so allgemeiner "Was ist zu beachten?" - Wiki-Eintrag wäre wirklich hilfreich. Ich denke, es würde viele Fragen beantworten, "welche Engine soll ich verwenden?", Die auf dieser Site erscheinen werden. Die letztere Formulierung würde solche Fragen tatsächlich "nicht konstruktiv" machen.
Marton

Antworten:


14

Es ist so, als würde man ein Auto oder einen Computer auswählen. Oder so ziemlich alles, was verschiedene Funktionen hat, von denen einige Ihnen sehr am Herzen liegen, andere nichts ausmachen und andere vielleicht gar nicht enthalten sein sollen.

  1. Erstellen Sie eine Liste der Funktionen, an denen Sie interessiert sind, z. B. 2D / 3D-Unterstützung, Beleuchtung, Physik, Verwendung einer Sprache, die Sie gut kennen usw.
  2. Ordnen Sie sie nach Wichtigkeit für Sie, basierend auf Ihrem aktuellen Projekt.
  3. Untersuchen Sie Ihre Optionen und versuchen Sie für jede Option, ihre Support-Funktionen danach zu bewerten, wie gut sie mit Ihren Projektzielen übereinstimmen.
  4. Verwenden Sie diejenige, die am besten zu Ihren Zielen passt. Alternativ können Sie die besten auswählen und eine Probefahrt machen. Implementieren Sie eine einfache Funktion Ihres Spiels und finden Sie heraus, welche Ihnen besser gefällt.

Ich denke, ein Großteil davon läuft darauf hinaus, tatsächlich zu wissen, was Sie wollen. Das heißt, Sie müssen eine ziemlich gute Vorstellung von dem Spiel haben, das Sie machen. Was wahrscheinlich bedeutet, dass Sie einen ziemlich detaillierten Plan benötigen, wie Sie Ihr Spiel implementieren und was es beinhalten wird. Als Bonus hilft Ihnen all diese detaillierten Informationen dabei, Ihr Spiel zu beenden. Es ist viel einfacher, einem Plan zu folgen und Dinge von einer Liste zu streichen, als nur eine Idee für ein Spiel zu haben und einfach mit dem Schreiben von Code zu beginnen.


3

Zuerst sollten Sie zumindest eine ungefähre Vorstellung davon haben, wie Ihr Spiel aussehen wird und was es benötigt. Es gibt die üblichen Fragen, ob Ihr Spiel Physik benötigt oder nicht. Dann gibt es die miteinander verbundenen Fragen, die sich hauptsächlich auf die Umgebung beziehen, in der Ihr Spiel entwickelt und ausgeführt wird, und darauf, wie kommerziell Ihr Spiel ist oder nicht.

  • Welche Plattformen werden Sie unterstützen? Auf welcher Plattform entwickelst du dein Spiel?
  • In welchen Programmiersprachen möchten Sie Ihr Spiel implementieren?
    • Dies wird von den Plattformen beeinflusst, die Sie unterstützen möchten.
  • Welche Art von Grafik, Audio und Eingabe wird Ihr Spiel haben?
  • Ist Ihr Spiel Freeware oder Open Source oder ist es kommerziell?
    • Wenn Open Source, möchten Sie später Werbung machen, entweder mit Ihrem Spiel oder mit einem anderen Spiel, das die Engine Ihres ersten Spiels verwendet?

Wenn Sie nur Windows verwenden möchten, sind DirectX- und C # -basierte Bibliotheken starke Kandidaten. Wenn Sie plattformübergreifend sein möchten, sollten Sie sich Bibliotheken ansehen, die auf OpenGL und C / C ++ basieren, oder Flash, wenn Ihr Spiel 2D ist und Sie sich die Tools von Adobe leisten können. Wie Ihre Plattform beeinflusst Ihre Programmiersprache Ihre verfügbaren Bibliotheken. Ein in C ++ geschriebenes Programm kann nur schwer eine Java-Bibliothek aufrufen.

Wenn Ihr Spiel kommerziell ist, können Sie eine Engine wie Unity kaufen. Wenn Ihr Spiel Freeware oder Open Source ist, sollten Sie sich auf Bibliotheken konzentrieren, die auch Open Source sind oder zumindest für nichtkommerzielle Projekte kostenlos sind. Open-Source-Bibliotheken sind natürlich auch für kommerzielle Projekte nützlich. Überprüfen Sie beim Betrachten von Open Source-Bibliotheken unbedingt deren Lizenz. Bei einigen Lizenzen müssen Sie Teile Ihrer eigenen Software Open Source erstellen, je nachdem, wie Sie eine Bibliothek verwenden. Wenn Sie sich auf Open Source-Bibliotheken beschränken, wird die Verwendung von Bibliotheken natürlich noch weiter eingeschränkt.

Überprüfen Sie beim Betrachten einer Bibliothek, wie aktiv ihre Entwicklung und Community ist. Ich würde einer Bibliothek vertrauen, die bekannt ist und aktiv mehr als eine Bibliothek unterhält, die auf einer Webseite einer Universität gehostet wird, die seit 1999 nicht mehr aktualisiert wurde.

Eine letzte Frage, insbesondere wenn dies nicht Ihr erstes Spielprojekt ist, ist, ob es Aspekte gibt, die Ihr Spiel benötigt oder nicht , mit denen Sie zu kämpfen haben, wenn Sie versuchen, es selbst zu tun. Denn gerade diese Aspekte sind Kandidaten für die Suche nach einer Bibliothek. Wenn Ihr Spiel eine Kollisionserkennung benötigt und Sie wissen, dass Sie die Kollisionserkennung nicht selbst implementieren können (wie ich es nicht kann), sollten Sie eine Physik-Engine in Betracht ziehen und die darin enthaltenen Kollisionserkennungsfunktionen nutzen.


1
  • Macht die Bibliothek das, was Sie brauchen?
  • Ist es darauf spezialisiert, das zu tun, was Sie brauchen? Wie viel Unordnung ist damit verbunden?
  • Wie ist es aufgebaut? Willst du dich übergeben, wenn du es siehst? Wenn ja, dann ist es wahrscheinlich nicht die beste Wahl für Ihre Gesundheit und Ihre Gesundheit.
  • Ist es flexibel genug für Ihre Bedürfnisse? Es ist nicht gut zu bemerken, dass die Bibliothek nicht funktioniert, nachdem Sie bereits die Hälfte Ihres Codes damit geschrieben haben.
  • Wie zukunftssicher ist die Bibliothek? Fügt der Entwickler im Laufe der Zeit Funktionen hinzu? Repariert er Dinge? Verbessert er die Dinge? Dies kann einen großen Unterschied machen, wenn es wahrscheinlich ist, dass die Entwicklung Ihres Spiels einige Jahre dauert. Nicht so wichtig für kleine Projekte, die Sie in einem Monat haben werden.
  • Ist die Größe angemessen? Bei kleinen Projekten kann es einen großen Unterschied machen, ob der Player 20 MB oder 200 MB herunterladen muss. Größere Projekte sind wahrscheinlich groß genug, dass die Größe der Middleware kaum einen Unterschied macht.

1

Zusätzlich zu den spielspezifischen Funktionen, die von Personen kommentiert wurden, sollten Sie auch einige allgemeine Fragen berücksichtigen.

  1. Unterstützungsstruktur - selbst wenn die Spiel-Engine perfekt ist, ist die Unterstützung möglicherweise zu teuer oder nicht vorhanden.
  2. Wie einfach ist es zu lernen? Vielleicht möchten Sie nicht, dass etwas zu groß wird, da die Zeit zum Lernen möglicherweise unerschwinglich ist.
  3. Deckt es Ihre Zukunftspläne ab? Vielleicht möchten Sie keine Zeit investieren, um eine für den Moment perfekte Engine zu erlernen, sondern nur, um eine brandneue Engine für das nächste Projekt von Grund auf neu zu lernen. Oder vielleicht willst du das.
  4. Lizenz - Wenn Sie ein Closed-Source-Spiel erstellen, stellen Sie sicher, dass die Lizenz der Engine nicht zu OpenSource führt.

0

Ein kurzer Spickzettel zur Bewertung von Bibliotheken, Frameworks, Engines und SDKs und zur Auswahl der besten

  • Bibliotheken, Frameworks, Engines SDKs usw. sind Tools, mit denen Sie Probleme lösen oder Probleme lösen und bestimmte Anforderungen erfüllen können.
  • Bewerten bedeutet herauszufinden, welches die meisten Anforderungen erfüllt.

Bevor Sie überhaupt mit der Bewertung beginnen, müssen Sie sich daher darüber im Klaren sein, in welchem ​​Szenario Sie sich befinden und welche Anforderungen Sie haben / haben möchten, da dies die Fragen sind, die von der Bewertung beantwortet werden sollten.

Das Szenario definiert, woher die Anforderungen kommen (wer entscheidet, was eine Anforderung ist und was nicht).


Typische Szenarien sind:

Das hobbeste Projektszenario

Sie alleine oder zusammen mit einigen Freunden möchten Ihr (vielleicht erstes) Spiel erstellen. Perfekt, Sie können alles selbst entscheiden und sind nur auf grundlegende technische Entscheidungen und technische Anforderungen beschränkt (sollte es sich um ein Handyspiel, ein PC-Spiel, ein Konsolenspiel, ein Web-Spiel usw. handeln). Sie können entscheiden, was Sie wollen.

Implizite Anforderungen sind, dass Sie etwas Bestimmtes lernen möchten (eine Sprache, ein bestimmtes Framework / eine bestimmte Engine).

Das Studentenszenario

Anforderungen können von Ihrem Lehrer kommen. Typische Anforderungen, die ich in diesem Fall hatte: Das Spiel muss einige physikalische Elemente und Multiplayer-Netzwerkunterstützung haben. Oder es muss in C ++ geschrieben sein. So wird die Bewertung einfach. Sie suchen nach einer Spiel-Engine, mit der Sie in C ++ codieren können und die möglicherweise bereits eine Netzwerk- und Physik-Engine enthält.

Eine böse (reale) Anforderung: Alles muss von Grund auf neu geschrieben werden (aber die Verwendung von Bibliotheken ist erlaubt). Es ist also kein Editor erlaubt (zB Unity3D). Sie suchen also nicht nach Engines / SDKS, sondern nach Bibliotheken.

Das Indie-Game-Szenario

Sie möchten später mit dem Spiel Geld verdienen. Daher müssen Sie es irgendwie verkaufen, wodurch Sie überprüfen können, welche Anforderungen aus dem Geschäft stammen, in dem Sie Ihr Spiel verkaufen möchten.

Erlaubt es Java-Spiele, HTML5-Spiele, ....)

Müssen Sie bestimmte Bibliotheken einschließen (wenn ja, in welchen Sprachen sind diese Bibliotheken verfügbar)?

Im Google Playstore müssen Sie Ihr Spiel als Android-Spiel schreiben. Im Apple AppStore müssen Sie Ihr Spiel als iOS-App schreiben. Oder Sie müssen eine Multiplattform-Engine auswählen.

Das professionelle Szenario

Sie haben nicht nur ein Geschäft, das Anforderungen bereitstellt, sondern höchstwahrscheinlich auch einen Verlag oder Kunden, der eigene Vorstellungen von Anforderungen hat. In diesem Szenario haben Sie auch ein größeres Team von angestellten Entwicklern. Abhängig von ihren Fähigkeiten ergeben sich neue Anforderungen (unsere Programmierer können nur C ++ schreiben, sodass wir keine reine Java / Android-Spiel-Engine verwenden können, ohne dass sie (viel) Zeit benötigen, um etwas Neues zu lernen).

Ich gehe für dieses Szenario nicht ins Detail. Sobald Sie es geschafft haben, ein Team von Mitarbeitern aufzubauen und einen Kunden / Verlag zu finden, wissen Sie bereits, wonach Sie bei der Bewertung suchen.


Wie entscheide ich, was meine Anforderungen sind, wenn ich ein Hobbiest oder Indi bin und niemand anderes es mir sagt?

Stellen Sie sich selbst Fragen zu Ihren Zielen und Ihrem Spiel?

  • Was soll mein Spiel sein? Handy, PC, Web (HTML / Js), welche Controller werde ich verwenden (Touchscreen, Gyroskop, Gamepad)

  • Was ist neu in meinem Spiel und was haben andere Spiele auch. Die Teile, die andere Spiele ebenfalls haben (Rendering, Audio, Eingabeverarbeitung), werden von den meisten (Game Engines) Tools ausgeführt, die Sie finden können, oder es ist einfach, Bibliotheken mit dieser Funktionalität in Ihrem eigenen Spiel oder Ihrer Game Engine zu bündeln.

  • Was ist die Dimension meines Projekts: böse Vögel oder Skyrim? Angry Birds können in nahezu jedem Werkzeug ausgeführt werden, und Skyrim ist auf Hochleistungswerkzeuge mit (angenommenen) Jahren zusätzlicher Anpassung beschränkt (Hochleistungs-Geländemotoren sind nicht einfach).

  • Ist mein einziges Ziel nur, ein Spiel fertig zu machen? Ja? Perfekt, Sie können einige hochentwickelte Dinge wie Unity, Unreal, ... verwenden, die einen praktischen Editor und eine große Community haben, die Ihnen Tutorials zur Verfügung stellt und Ihre Fragen beantwortet. Es entlastet Sie von einfachen Aufgaben wie dem Laden von Maschen, dem Implementieren eigener mathematischer Funktionen usw.

  • Ist mein Ziel, etwas Bestimmtes zu lernen? Ja? was willst du lernen?

  • Welche Sprache soll ich wählen? Wenn das Ziel immer noch darin besteht, Ihr Spiel zu beenden, wählen Sie das aus, das Sie / Ihr Team am besten kennen? Wenn Sie eine bestimmte Sprache lernen möchten, wählen Sie ein Werkzeug in dieser Sprache aus.

  • Wird Tool X genug Leistung für mein Spiel haben? Vielleicht wirst du es nie erfahren. Selbst bei großen Produktionen dauert die Optimierungs- und Polierphase lange und ist eine große Anstrengung, um dies zu erreichen. Sorgen Sie sich um die Leistung, wenn Sie auf Leistungsprobleme stoßen. Sie wissen nicht, wie das Tool funktioniert, wenn Sie nicht an seine Grenzen stoßen. Alles auf der Website des Tool-Entwicklers ist nur eine grobe Vermutung. Nachdem ich jahrelang Tools evaluiert hatte, hörte ich auf, irgendetwas von der Entwickler-Website zu glauben.


Die Beantwortung solcher Fragen bringt Sie zu den Anforderungen. Die Auswertung besteht darin, eine Liste der Tools zu finden und zu testen (nicht nur die Homepage zu lesen), was das Tool bieten kann oder nicht.


Anforderungen werden nicht in Stein gemeißelt, sondern sind dynamisch. Sie werden während der Entwicklung kommen und gehen. Ob das Spiel Physik braucht oder nicht, hängt zum Beispiel vom Design ab. Wenn sich das Design ändert, kann sich auch die Anforderung ändern.

Nehmen Sie die Anforderungen, die Sie haben, und legen Sie los. Sich ändernde Anforderungen sind das tägliche Brot der leidenden, ähm, glücklichen Entwickler, unabhängig von Projektgröße und Erfahrungsniveau.


0

Geh hierher .

Trotz der Anzahl der Spiel-Engines haben Sie tatsächlich nicht so viele Möglichkeiten.

  1. Lizenzbeschränkungen. Einige Engines behindern Ihre Fähigkeit, Ihr Produkt freizugeben, ohne zuvor hohe Lizenzgebühren zu zahlen, z. B. Unity , mit dem beispielsweise eine zusätzliche Gebühr für die Kompilierung auf iOS erhoben wird (dies wurde 2016 geändert ).
  2. Plattformen. Möchten Sie mehrere Plattformen ansprechen? Welche?
  3. 2D oder 3D? Einige Motoren sind für 2D ausgelegt.
  4. Benötigt Physik? Einige Motoren bieten Physik
  5. FPS, RTS? Es kann ratsam sein, eine Engine zu verwenden, die auf den von Ihnen erstellten Spieltyp spezialisiert ist.
  6. Natürlich möchten Sie in Ihrer Lieblingssprache arbeiten. Magst du C nicht? Dann benutze nicht Allegro!
  7. Bist du ein großer Designmuster, OOP-Fan? Bekannte OGRE "überbeansprucht" Muster
  8. Aktive Entwicklung? Sie sollten den Kompromiss zwischen der Verfügbarkeit von neuesten Funktionen (DX11 / OGL 4) und der Stabilität eines Motors berücksichtigen, dessen Entwicklung sich vor einigen Jahren abgeschwächt hat
  9. Nutzerbasis? Eine große Benutzerbasis bedeutet normalerweise bessere Foren, sodass Sie Ihre Fragen leichter beantworten können
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.