Was ist der beste Ansatz, um einen 2D-Charakter zu erstellen, um im Einsatz Tonnen verschiedener Ausrüstungen verwenden zu können?

14

Ich möchte ein 2D-Spiel erstellen, aber ich möchte den Charakter haben, Tonnen verschiedener Ausrüstungen in verschiedenen Kombinationen zu tragen, wie ein Rollenspiel oder so.

Nehmen wir also an, der Benutzer ändert seine Schultern und Hosen, dies muss dem Spieler gezeigt werden und all diese verschiedenen Ausrüstungen müssen der Aktion der verschiedenen Charaktere folgen (Schlagen, getroffen werden, Zauberei, etc.).

Ich sehe ein paar Probleme, bei denen ich wissen möchte, welche Vorgehensweise / welcher Algorithmus / welche Architektur am besten zu lösen ist.

1 - Sprites oder Animationen

Soll ich für jede Ausrüstung in jeder Aktionsanimation unterschiedliche Sprites erstellen?

Ist es besser, nur das Sprite des Geräts zu haben und es direkt auf dem Code zu animieren, z. B. durch Drehen und Übersetzen (mit etwas wie Tween auf Flash)?

Gibt es eine andere bessere Option? (Ich mag die obigen Ideen wirklich nicht)

2 - Positionen

Nehmen wir an, er schaut während eines Zuges des Charakters direkt in die Ansicht des Spielers, beendet aber seine Bewegung und zeigt dem Spieler seine rechte Seite (als würde er sein Schwert von einer Seite zur anderen schwingen).

Wenn wir einen Teil des Benutzers betrachten, wie zum Beispiel seinen Kopf, beginnt er vorne und dreht sich dann nach links.

Es bedeutet mindestens 3 verschiedene Positionen für jede Kopfausrüstung (Helm, Mütze, was auch immer).

Dies hat sicherlich Einfluss auf die Beantwortung der ersten Frage. Wie geht das am besten?

3 - Schichten

Betrachten wir eine Charakterbewegung, bei der er sich mit offenen Armen um 360 Grad dreht. Zu Beginn der Animation befindet sich seine rechte Hand in der Nähe der Sicht des Benutzers, und in der Mitte der Bewegung befindet sich diese wahrscheinlich hinter dem Körper des Charakters in der Animation.

Was auch immer die Option in Frage 1 ist, Sie müssen sicherlich eine Art Ebenenmodell verwenden, um dieses Sprite oder diese Animation näher an der Ansicht des Spielers zu starten und später zu weit von der Ansicht des Spielers zu wechseln.

Gibt es einen guten Weg, das zu tun?

Ich weiß, die Frage ist ziemlich lang und schwer zu verstehen. Lassen Sie mich wissen, wenn Sie der Meinung sind, dass es besser ist, einige Zeichnungen zu haben, um zu erklären, welche, und ich werde versuchen, das zu tun.

homemdelata
quelle
Auf welchem ​​Niveau soll Ihre Kunst sein? Mögen Sie Retro-Pixelkunst? Oder diese HD-Sprites, wenn Sie über eine vorhandene Grafik verfügen, die mir wirklich dabei helfen würde, meine Antwort anzupassen.
Jesse Dorsey
Hallo Noctrine. Eigentlich betrachte ich es als eine "kunstunabhängige" Frage. Ich werde später am Wochenende versuchen, einige Erklärungen zu zeichnen, um das Verständnis zu erleichtern. Vielen Dank
homemdelata

Antworten:

8

Ich denke, es hört sich so an, als ob Sie nach einem 2D-Skelett-Animationssystem suchen. Ich kenne leider kein Standardsystem dafür, da es größtenteils vom 3D-gfx-but-2D-Game-Trend abgelöst wurde.

coderanger
quelle
+1 Dies ist viel einfacher, wenn Sie nur den Charakter 3D machen.
Knight666
aber für "3D-gfx-but-2D-game" müsste ich eine der Lösungen in Betracht ziehen, die ich sowieso erwähne, sonst brauche ich ein Sprite für beliebige Gegenstandskombinationen, zum Beispiel dasselbe Bruststück mit 10 verschiedenen Klammern Stücke werden 10 Animationen erzeugen :(
homemdelata
Nicht wirklich, Sie haben nur Befestigungspunkte am Skelett und können alles hineinfallen lassen, was Sie brauchen.
Coderanger
2
Ich habe eine (Open Source) einfache 2D-Skelett-Animationsbibliothek für XNA erstellt, einschließlich eines anständigen Editors. Schauen Sie sich youtube.com/user/srekel#p/a/u/0/46LIoFNdG_4 und youtube.com/user/srekel#p/a/u/1/8sYkeu5k7XE
Srekel
Das ist fast die richtige Antwort. Eigentlich hast du mich dazu gebracht herauszufinden, dass ich nach einem 3D-Skelettsystem für 2D-Animation suche. Ich muss Algorithmen dafür finden (falls vorhanden)
homemdelata
8

Wie Zorba sagt, haben die meisten Retro-Spiele dies nicht speziell getan, da (mit Sprites) für jedes einzelne Gerät Animationen mit mehreren Frames benötigt würden.

Einige "faule" Alternativen:

  • Tauschen Sie die Ausrüstung mit der Palette aus, anstatt völlig andere Sprites zu erstellen.
  • Zeichne die Figur so, dass die einzigen Teile ihres Körpers, die animiert werden, Teile sind, die nicht mit Ausrüstung verbunden sind. Wenn der Charakter ohnehin nur eine einzige Rüstung tragen kann, machen Sie stattdessen einen Helm, und dann können Sie den gesamten Körper animieren, während Sie den Kopf ruhig halten.
  • Verwenden Sie ein einzelnes Sprite für den Charakter im Hauptspielbildschirm, aber zeigen Sie die Ausrüstung in einem Subscreen mit einem statischen Porträt. Dann brauchen Sie sich nicht um Animation zu kümmern.
Ian Schreiber
quelle
2

In alten Spielen wie der Ultima-Serie zeichneten sie tatsächlich ein Gerät in jeder möglichen Charakterhaltung. Die Okklusion wird entweder dadurch behoben, dass die Ausrüstung nicht gezogen wird (wenn sich der linke Handschuh hinter dem Spieler-Sprite befindet, brauchen Sie sich keine Sorgen zu machen) oder indem die Ausrüstung einfach in der Reihenfolge von hinten nach vorne gezogen wird.

Offensichtlich war dies sehr arbeitsintensiv, und infolgedessen gab es relativ wenige Einzelstücke mit vielen palettentauschten und palettenmodifizierten Versionen dieser Ausrüstung.

In einem modernen Spiel würde ich dringend empfehlen, 3D-Charaktere zu erstellen. Wenn Sie zweidimensional wirkende Kunstwerke haben möchten oder Ihre Plattform nicht die Leistung für echtes 3D hat, ist es wahrscheinlich immer noch besser, alles in 3D zu modellieren, zu rendern und dann das Endergebnis von Hand zu optimieren.

Alternativ können Sie die 3D-Modelle in Echtzeit packen und sie in eine Textur rendern, wenn Sie wissen, dass Sie keine Feinabstimmung benötigen, keine PS für 3D-Gesamtleistung haben, aber keine riesige Sprite-Bibliothek ausliefern möchten Das Modell wird gleich im Spiel auftauchen.

ZorbaTHut
quelle
Das Gleiche, das ich bei der anderen Antwort erwähne, ist hier beachtlich: Ich müsste eine der Lösungen in Betracht ziehen, die ich ohnehin erwähne, sonst brauche ich ein Sprite für alle Gegenstandskombinationen, zum Beispiel dasselbe Bruststück mit 10 verschiedenen Hosenträgerteilen erzeugt 10 Animationen :(
homemdelata
2
Sie würden das "End-Sprite" zur Laufzeit zusammenstellen. Sie haben kein Sprite für "den Player", sondern eine Liste von Sprites, die für jedes Animationsframe gerendert werden. Wenn der Spieler also nach rechts zeigt, würdest du "linker Handschuh", "linker Arm", "Spielercharakter", "Stiefel", "Hose", "Körperschutz", "Helm", "rechter Arm" rendern. , "rechter Handschuh" in Ordnung. Dann animieren Sie jedes Teil der Ausrüstung einzeln und schweben in der Luft.
ZorbaTHut
1

Lesen Sie in James Da Silvas Buch nach, wo er erklärt, wie er "The Dishwasher: Dead Samurai" gemacht hat. Es wird Ihnen zeigen, wie KISS dies so ziemlich lösen kann. Der Vorschlag, 3D- oder 2D-Skelettanimationen zu verwenden, ist gültig und gehört in den gleichen Bereich.

Kaj
quelle
Können Sie den Link hinzufügen?
Homemdelata
0

Dies ist eine großartige Frage, aber ich denke, Sie haben sie selbst beantwortet. Sie benötigen ein 2D-Knochensystem, das das Wechseln von Knochenschichten unterstützt, sodass verschiedene Gliedmaßen bei der Drehung der Figur hintereinander und voreinander laufen können. Sie müssen Ihre Sprites auch aus 4 oder 8 Winkeln zeichnen (oder aus beliebig vielen). Je nachdem, welche Fähigkeiten in Ihrem Team vorhanden sind, ist es möglicherweise einfacher, diese Elemente in 3D zu erstellen und aus den gewünschten Winkeln zu rendern.

Die Verwendung einer 3D-Engine ist ebenfalls eine gute Lösung, obwohl dies eine Reihe von Herausforderungen mit sich bringt.

Iain
quelle
Ja, das ist fast so. Habe gerade die andere Antwort als richtig erhalten, aber diese ist auch gültig. Wie ich bereits sagte, brauche ich ein 3D-Skelettsystem für 2D-Animationen :)
homemdelata