Animationen

Einstiegsfragen, Mathematik, Physik, künstliche Intelligenz, Engine Design
Antworten
Benutzeravatar
FSA9Code
Beiträge: 7
Registriert: 21.07.2018, 11:20

Animationen

Beitrag von FSA9Code »

Hallo zusammen, ich spiele gerade mit MonoGame herum und erstelle Animationen. Für die ersten Versuche verwende ich heruntergeladene Spritesheets. Der Aufbau ist meist gleich, angenommen eine (Schleifen-)Bewegungsanimation:

Frame 0: beide Füße mittig
Frame 1: Schritt linker Fuss
Frame 2: beide Füße mittig
Frame 3: Schritt rechter Fuss

Frame 0 wird als Idle-Animation verwendet. Wenn ich die Bewegung nun mit Frame 0 beginne, wird im ersten Intervall die Spielfigur ohne sichtbare Animation verschoben. Wenn ich mit Frame 1 beginne würde es "richtig" aussehen . Nun sind aber die Spritesheets wie beschrieben aufgebaut und die Beispiele in diversen Tutorials fangen mit Frame 0 an. Natürlich können die Animationen auch mit Frame 1 gestartet werden, aber ich habe wahrscheinlich etwas Entscheidendes übersehen. Wie realisiert ihr eure Animationen bzw. was wäre denn die Standardvorgehensweise?
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: Animationen

Beitrag von xq »

Was spricht denn in deinem Fall gegen
Frame 0: Schritt linker Fuss
Frame 1: beide Füße mittig
Frame 2: Schritt rechter Fuss
Frame 3: beide Füße mittig
Das ganze ist ja ne Modulus-Operation (also nach Frame 3 kommt wieder Frame 0) und damit isses egal, welche Indizes die Frames haben. Du kannst ja deine Reihenfolge beliebig rotieren, bis dein gewünschtes Startframe ganz vorne ist.
Wie realisiert ihr eure Animationen bzw. was wäre denn die Standardvorgehensweise?
Mein Motto ist da: Was dem zweck dient, ist erlaubt. Wenn es einfach zu benutzen, umzusetzen, … ist, ist es wohl auch nicht so verkehrt, es so zu machen.
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Benutzeravatar
marcgfx
Establishment
Beiträge: 2050
Registriert: 18.10.2010, 23:26

Re: Animationen

Beitrag von marcgfx »

Mach das was gut ausschaut, für sowas gibt es keine klaren Richtlinien. Die Reihenfolge der Bilder kannst du in einem array definieren, das mache ich bei meinem Projekt zumindest so. Es sind aber auch mehr als 3 Bilder.
Benutzeravatar
FSA9Code
Beiträge: 7
Registriert: 21.07.2018, 11:20

Re: Animationen

Beitrag von FSA9Code »

Ich habe es jetzt nach deinem Vorschlag umsetzt MasterQ32, mit Modulo ist es besser. Zumal Multiplayer auch eine Option ist dann muss es sowieso nach der GameTime gehen und nicht nach der (festen) Framerate.

Die Animationen in Devader sehen top aus, da wäre ich schon zufrieden wenn meine Animation in drei Jahren halbwegs so aussehen. Für deine komplexen Endgegner würde mir schon die Mathematikkenntnisse fehlen.

Aber das Thema Animationen wird wohl noch etwas erweitert werden müssen: Zum einen müsste die Animationsgeschwindigkeit skalieren (z.B. Zauber) oder schnellere Laufanimation (z.B. bei kleineren Chars).

Zum anderen wird es wohl bei Castanimationen auf 3 Phasen hinauslaufen, eine Startanimation, einen variablen Teil und einen Abschluss. Ich habe in DAoC gespickt und da wird es so gehandhabt. WOW dagegen verwendet wohl nur 2 Phasen und beginnt gleich mit der variablen Phase (z.B. beim Priester Smite).

Die beiden Spiele sind 3D aber die Prinzipien sollten auch für 2D umsetzbar sein. Ich denke auch nicht an ein Spielidee sondern erst einmal kleine Prototypen die sich auf wenig Aspekte fokussieren.
VirtualLabs2000
Beiträge: 15
Registriert: 26.02.2002, 10:34
Kontaktdaten:

Re: Animationen

Beitrag von VirtualLabs2000 »

Wenn du zu dem Thema noch Inspiration brauchst und bereit bist, dich in "etwas älteren" Source Code einzuarbeiten, kann ich dir Commander Keen empfehlen: https://github.com/keendreams/keen/

Zugegeben, man braucht schon etwas Zeit, um den Code zu verstehen. An vielen Stellen fragt man sich, warum da jetzt ausgerechnet so die Bits rumgeschubst werden und was dieser oder jener Check soll - alles um es zur damaligen Zeit irgendwie schnell zu machen.

Aber ich denke, die grundsätzlichen Konzepte wären auch für dein Problem heute noch anwendbar und übertragbar.
So gibt es zu jedem Frame eine Datenstruktur, die beschreibt, welches Sprite zu dem Frame gehört, was dieser Frame hinsichtlich der Spielmechanik macht (horizontale Bewegung, vertikale Bewegung, Callback-Funktionen für gültigen Input, HitCheck usw.), Dauer des Frames und welcher Frame auf diesen folgt, sofern die Callback-Funktionen z.B. aufgrund von Input keinen anderen Frame als Nachfolger setzen.
https://github.com/keendreams/keen/blob ... en.c#L1319

Vielleicht hilft es ja :)
Benutzeravatar
FSA9Code
Beiträge: 7
Registriert: 21.07.2018, 11:20

Re: Animationen

Beitrag von FSA9Code »

Cooles Game, vielen Dank VirtualLabs2000 für den Link. Ist das Original von 1991? Ich habe mir gerade ein Video davon angesehen, dass hat bereits Slopes! Die verschiedenen Animationen bei Absprung und Fall passen auch gut.

Leider bin ich in C/C++ nicht fit, von daher wird der Quellcode wahrscheinlich schwierig für mich. Das Konzept ist trotzdem interessant. Genau an dem Zusammenspiel zwischen Input, Aktionen und Animationen knabbere ich gerade, vor allem für die Aneinanderreihung von Aktionen (Animationen) fehlt mir ein Konzept.

Irgendwie scheinst du den Quellcode zu gut zu kennen, entweder hast du den Quellcode sehr genau durchgearbeitet, oder warst an der Entwicklung beteiligt?
VirtualLabs2000
Beiträge: 15
Registriert: 26.02.2002, 10:34
Kontaktdaten:

Re: Animationen

Beitrag von VirtualLabs2000 »

Commander Keen habe ich früher sehr gerne gespielt. Irgendwann Anfang letzten Jahres wollte ich mich nach langer Zeit mal wieder mit Spieleprogrammierung beschäftigen, wobei es mir da nicht so sehr um das Spiel selbst ging, sondern ich wollte einfach mal wieder was mit DirectX, C++17 usw machen. Also kam ich auf die Idee, den alten Quellcode zu studieren und zusammen mit den Spieldateien von Commander Keen 4 das Spiel in DirectX 11 auf der Microsoft UWP-Plattform nachzubauen. Dahinter steckte der Gedanke, dass ich es dann vielleicht auch mal hier auf meiner Xbox laufen lassen könnte.

Hatte das Projekt dann irgendwann nicht mehr weitergeführt, aber die grundlegende Spielmechanik hatte ich erfolgreich implementiert. Allen voran die Sprite-Engine zum Laden, Darstellen und Scrollen eines beliebigen Levels, das Laden der alten Level-Dateien und das Rumlaufen von Keen durch die Level inkl. Springen, Fallen und Kollisionserkennung.
Während ich natürlich die Grafik- und Soundausgabe komplett neu schreiben musste und auch wollte, so war mir aber der alte Quellcode eine große Hilfe, die Mechanik des Spiels zu verstehen und möglichst originalgetreu zu übernehmen. Deswegen fiel mir das dann auch sofort ein, als ich deinen Beitrag hier gesehen habe.

Wenn du erstmal nur ein paar weitere Informationen suchst:
http://www.shikadi.net/moddingwiki/Commander_Keen_4-6

Gibt ne doch recht umfangreiche Community mit Wiki, wo z.B. auch die verwendeten Datenstrukturen zumindest grob erklärt werden (leider manchmal doch ziemlich unvollständig):
http://www.shikadi.net/moddingwiki/Keen ... ion_Format
Antworten