Ich baue selbst Indie-Spiele, habe aber normalerweise keine Energie mehr, wenn ich ein neu entwickeltes Spiel auf ein Niveau gebracht habe, bei dem es möglich ist, mit Verhalten zu spielen. Mit schrecklichen Ergebnissen.
(Bild aus dem Intercom-Blog )
Zum Beispiel finde ich, dass die Iterationszyklen für das Optimieren des Verhaltens (dh das Verknüpfen und Neustarten einer C ++ - Anwendung) so lang sind, dass sie jede Kreativität zunichte machen. Ich baue ein Tool, um damit umzugehen.
Welche anderen Möglichkeiten gibt es, um das Spielverhalten schnell zu erkunden? Ich interessiere mich für die Methoden, die sowohl von Indie-Entwicklern als auch von größeren Unternehmen verwendet werden.
c++
game-design
prototyping
Jonas Byström
quelle
quelle
Antworten:
Wie Sie bereits bemerkt haben, ist die Geschwindigkeit der Iteration bei der Arbeit an der Spielmechanik von entscheidender Bedeutung. Je länger die Zeit zwischen dem Nachdenken über eine Änderung und dem Testen mit dieser Änderung liegt, desto weniger produktiv sind Sie und desto mehr werden Sie abgelenkt. Infolgedessen möchten Sie auf jeden Fall Ihre Iterationszeit verwalten.
Ich stelle fest, dass meine Produktivität wirklich abnimmt, wenn die Zeit zum Testen einer einfachen Änderung mehr als fünf Sekunden beträgt. Wenn Sie also experimentieren, um das Spielgefühl zu perfektionieren, muss eines Ihrer Ziele darin bestehen, herauszufinden, wie ich eine Änderung vornehmen und diese Änderung dann in weniger als fünf Sekunden nutzen kann. Es ist nicht wirklich wichtig, wie Sie es tun, solange Sie diese Iterationszeit auf etwa diese Ebene halten können.
Viele große moderne Engines (Unity, Unreal usw.) neigen dazu, ihren Editor in die Game-Engine zu integrieren, sodass Sie die meisten Änderungen live vornehmen können, ohne das Spiel neu zu starten. Kleinere Engines / Spiele konzentrieren die Arbeit normalerweise in die andere Richtung. Lassen Sie das Spiel so schnell kompilieren und starten, dass es keine Rolle spielt, ob Sie das Spiel für jede Änderung neu starten müssen. Sie sind immer noch im Test, bevor die fünf Sekunden abgelaufen sind.
In meinem aktuellen Projekt benötige ich ungefähr zehn Sekunden, um eine kleine Neukompilierung durchzuführen, eine Verknüpfung herzustellen, das Spiel zu starten und dann das Gameplay zu erreichen (das meiste davon generiert eine renderbare Weltgeometrie, wenn ich ein gespeichertes Spiel lade). Und das ist viel zu lang. Deshalb habe ich separate "Test" -Modi erstellt, mit denen ich verschiedene Teile des Spiels testen kann, ohne alle echten Spiel-Assets zu laden, damit ich viel, viel schneller ein- und aussteigen kann. normalerweise in zwei bis drei Sekunden. Wenn ich eine Benutzeroberfläche testen möchte, kann ich das tun, ohne in das echte Spiel zu laden. Wenn ich das Rendern testen möchte, habe ich einen anderen Modus, in dem ich das testen kann, ohne das gesamte Spielsystem zu laden.
Ich habe andere Leute gesehen, die das Problem angegangen sind, indem sie die Spielelogik in eine DLL gestellt und die bereits im Speicher befindliche Spieledatei die DLL neu laden ließen, während das Spiel ausgeführt wird. Sie können die DLL also neu erstellen und sie einfach in eine DLL laden Bereits geladene ausführbare Datei, sodass Sie die Grafikressourcen Ihres Spiels nicht neu laden oder neu erstellen müssen. Das kommt mir wie ein Wahnsinn vor, aber ich habe es gesehen.
Viel einfacher wäre es, das Verhalten und / oder die Konfiguration von Spielen in Skripten oder Datendateien anzugeben und das System so zu veranlassen, dass diese Dateien entweder bei Bedarf erneut geladen oder auf Änderungen überprüft werden, ohne dass sie beendet werden müssen das Spiel herunter, verknüpfe es erneut und starte es dann erneut.
Es gibt viele Ansätze. Wählen Sie aus, was für Sie am besten funktioniert. Einer der Schlüssel zu einer erfolgreichen Verbesserung der Spielmechanik ist jedoch die extrem schnelle Iteration. Wenn Sie das nicht haben, spielt es fast keine Rolle, was Sie sonst noch tun.
quelle
IF DEBUG
Compiler-Direktiven) haben, die direkt zu meinem "Test" -Zustand wechseln (Überspringen des Spielmenüs) etc.), das ist nur ein Kinderspielplatz mit dem, was ich gerade teste. Ich kompiliere also im Grunde genommen eine alternative ausführbare Datei, die automatisch ein sehr reduziertes Level lädt (weniger zu ladende Assets + kein Durcheinander mit dem Spielemenü jedes Mal).Reduzieren Sie die Kosten für das Testen von Ideen, um Prototypen zu erstellen.
Mein Workflow ist für kleine Spiele optimiert, aber ich habe diese Dinge hilfreich gefunden:
Makefile
einmake watch
Ziel, dasinotifywait
in einer Schleife läuft und auf Dateiänderungen reagiert, indem das Spiel automatisch kompiliert / ausgeführt wird. In einer interpretierten oder JIT-kompilierten Sprache erfolgt dies sofort.quelle
Als Entwickler, der sich hauptsächlich auf das Prototyping konzentriert, hier ein paar Ratschläge aus meiner Erfahrung.
Sehen Sie sich an, wie viel Zeit Ihr Prototyping benötigt. Meiner Erfahrung nach möchten Sie in maximal zwei Tagen eine spielbare Version von allem haben - von Grund auf neu; und Sie möchten jeden Tag ein oder zwei neue Funktionen testen. Wenn Sie diese Ziele nicht erreichen, suchen Sie nach Möglichkeiten, um schneller zu sein.
quelle
Man kann die Spielentwicklung auf diese vier Phasen aufteilen:
Ich glaube, dass die Gameplay-Erkundung hauptsächlich in der Prototyping-Phase stattfindet. Dies sind einige Ratschläge, die ich zu befolgen versuche:
Beginnen Sie mit dem Entwerfen eines Papierprototyps. Wenn Sie eine klare Vorstellung davon haben, wie das Spiel aussehen könnte, beginnen Sie, es zu codieren, damit Sie die Interaktionen tatsächlich spüren können. Vielleicht ist dies für 3D-Spiele nutzlos, aber persönlich hat es mir in der Vergangenheit sehr geholfen.
Code mit dem Wissen, dass Sie Ihren Code wegwerfen werden, nachdem Sie fertig sind. Auf diese Weise können Sie liberal sein, wenn es darum geht, welche Game-Engine Sie auswählen müssen.
Schnelle Iterationszyklen sind wichtig (wie bereits erwähnt). Wählen Sie eine Spiel-Engine, die auf der Fähigkeit basiert, Ihnen schnell zu zeigen, was Sie codiert haben. Sie müssen sich in dieser Phase auch nicht um die Leistung oder die grafische Wiedergabetreue kümmern.
Schränken Sie Ihren Anwendungsbereich ein. Wenn das eigentliche Gameplay 2D ist (gewöhnliches Strategiespiel, JRPG), Prototyp in 2D. In dieser Phase kümmert es dich nur um das Feedback zum Gameplay .
Verschwenden Sie keine Zeit mit Polieren oder Suchen nach Assets. Kritzele etwas auf ein Papier, mache ein Foto davon, schneide es in Photoshop aus, male es vielleicht aus und verwende es als Sprite. Schalten Sie Ihr Mikrofon ein und sagen Sie "Pew Pew". Setze zwei Würfel und eine Kugel zusammen und du hast einen Roboter. Denken Sie immer daran, dass die Erkundung der Spielmöglichkeiten Ihre erste und einzige Priorität ist.
Nachdem Sie sich für einen Prototyp entschieden haben, der Spaß macht, verfeinern Sie ihn. Ich glaube nicht, dass es einen Grund gibt, die Technologie zu wechseln, es sei denn, es gibt ein Gameplay-Element, das dies benötigt.
Später in der Entwicklungsphase behalten Sie den verfeinerten Prototyp zur Hand, während Sie ein neues, viel besser aussehendes, viel besser klingendes und viel besser fühlendes Spiel entwickeln. Hier müssen Sie die tatsächliche Spiel-Engine auswählen, die verwendet werden soll.
Nehmen Sie am Ende das, was Sie haben, und optimieren Sie es, um weniger Ressourcen zu verbrauchen.
Das meiste, was ich oben beschreibe, ist allgemein bekannt, aber wenn ich es auf eine Liste setze, die den gesamten Entwicklungsprozess unterteilt, kann ich jeden Schritt in die richtige Perspektive rücken. Ich hoffe es hilft dir auch.
quelle
Ich stimme der Antwort von Trevor Powell zu, dass die Geschwindigkeit der Iteration entscheidend dafür ist, dass Sie in kreativer Stimmung bleiben, anstatt nur zu polieren. Eine große Inspirationsquelle für mich ist Bret Victors Vortrag "Inventing on Principle" . Leider ist es schwierig, auf diesem Niveau echte Werkzeuge zu finden. Ich habe versucht, selbst einen für die Python-Entwicklung zu erstellen, mit dem ich meinen Python-Code ausführen kann, während ich ihn schreibe. Es heißt Live-Codierung in Python .
quelle
Ich habe ein Prototyping-Tool namens Trabant gebaut, das:
Ich habe 30 Test-Prototypen eingebaut, um dies zu überprüfen.
Wie Trevor Powell betonte, müssen Iterationen <5 Sekunden sein, und ich finde Iterationen <1 fast fünfmal so gut.
:)
Anko erwähnte, dass die Verwendung einer dynamischen Sprache eine gute Idee ist. Ich habe mich für Python entschieden, da es eines der am häufigsten verwendeten ist . In Bezug auf die Build-Automatisierung ist das Testen in Trabant so schnell wie das Drücken von F5 in der IDE (oder F6, um es auf Ihrem iPad zu testen). Da kein Build-Schritt erforderlich ist, wird es nicht schneller ausgeführt.
Der Wegwerfcode war einer von Neverminds Imbissbuden . Ich stimme vollkommen zu und Trabant setzt es durch.
quelle
Neben der Iterationsgeschwindigkeit von Trevor Powell, die wirklich wichtig ist, sind hier einige andere nützliche Überlegungen:
Es ist wie guter Code ...
Viele IFs drin.
Je solider das Konzept ist, desto weniger muss herumgespielt werden. Wenn Sie wissen, was das Fleisch von Ihnen ist, wird Prototyping - was zu setzen und wie Dinge in Bezug auf die zentrale Säule (Ihre Hauptsache) anzuordnen sind.
Wenn Sie wie viele andere anfangen - nicht ganz sicher, was Sie tun möchten, gehen Sie in eine Richtung und erkunden viel in der Art des Bildes, das Sie gezeigt haben.
In beiden Fällen spielt das Engagement für eine Technologie keine Rolle, wenn das, wonach Sie suchen, ohne viel Tiefe simuliert werden kann - erstellen Sie Prototypen für alles, was Sie wollen / können.
Verschwenden Sie keine Sekunde mehr auf Ressourcen. Laden Sie alles aus dem Internet herunter. Proprietär oder nicht. Sie möchten ein Gefühl für Ihr Konzept bei der Arbeit bekommen - es sei denn, Grafik ist Ihr Hauptmerkmal. Niemand wird Sie verklagen, um mit den Klängen, Texturen und allem anderen zu experimentieren. Sie stellen es noch nicht in den Laden. Es sei denn, Sie sind bereits finanziert - es lohnt sich, die Leute zu überzeugen, damit Sie das Geld für die gewünschten Ressourcen erhalten. Ich habe gesehen, wie Leute aus Spielestudios Spielkonzepte mit modifizierten Versionen von proprietären Spielen präsentieren, für die sie keine Rechte haben.
Es ist, als würden Sie ein maßstabsgetreues Modell erstellen. Es ist zwar fantastisch, eine miniaturisierte Nachbildung des Lebens zu haben, was Sie wollen. Manchmal reicht es aus, sie aus Zeitschriften herauszuschneiden, von Hand zu basteln und die Teile zusammenzukleben. Jeder, der ein bisschen Fantasie hat, wird nicht davon ausgehen, dass Sie den Wolkenkratzer tatsächlich aus demselben Karton bauen, mit dem Sie das Modell gezeigt haben. Und in der Kreativbranche ist es vorzuziehen, mit einfallsreichen Menschen zusammenzuarbeiten. Wenn sie nicht über einige Entwurfsprobleme hinausblicken können, um das Potenzial eines ganzen Konzepts zu erkennen, werden sie ein Produkt selten oder nie zu schätzen wissen. Keine Wertschätzung bedeutet, dass sie weniger bereit sind, sich zu engagieren, und das ist eine Abwärtsspirale. Es ist der Unterschied zwischen der Einstellung Ihres Kindes, die Welt zu erobern und stattdessen zu sagen: "Du kannst deine Schuhe nicht einmal richtig binden, du kleiner Scheißer."
Was auch immer Sie tun, denken Sie immer daran, dass eine Einstellung allein mehr als genug ist, um alles zu ruinieren, unabhängig von seinem technologischen oder wirtschaftlichen Potenzial.
Ich habe einmal ein Spiel mit ausschließlich GIF-Bildern als Prototyp erstellt und ihnen etwas mit Javascript zu tun gegeben. Es ist nicht blendend, aber es diente dem Zweck zu zeigen, was ich zeigen wollte. Es spielt keine Rolle, ob Sie es später exklusiv für Xbox entwickeln.
Wenn Ihre Idee komplexer ist als ein einfacher Prototyp, müssen Sie die Technologie, die Sie verwenden, genauer untersuchen - da der Prototyp als Gerüst für die letzte Sache dienen wird (einfach, weil viel investiert wird in es und es kann nicht leicht weggeworfen werden) - wenn Sie es offensichtlich genehmigt bekommen.
quelle