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?
software-engineering
Trevor Powell
quelle
quelle
Antworten:
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.
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.
quelle
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.
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.
quelle
quelle
Zusätzlich zu den spielspezifischen Funktionen, die von Personen kommentiert wurden, sollten Sie auch einige allgemeine Fragen berücksichtigen.
quelle
Ein kurzer Spickzettel zur Bewertung von Bibliotheken, Frameworks, Engines und SDKs und zur Auswahl der besten
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.
quelle
Geh hierher .
Trotz der Anzahl der Spiel-Engines haben Sie tatsächlich nicht so viele Möglichkeiten.
quelle