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.