PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Komplizierte Animationen im AKS



Caine Luveno
20.09.2007, 12:51
Da will man Nachts ins Bett gehen und grübelt noch über sein RPG und dann fällt einem ein riesen Problem auf... oder ich denke einfach zu kompliziert... o_O

Folgendes: Ich hatte vor in meinem AKS möglichst Animationen zu verwenden die etwas besser aussehen als einfach nur eine Folge von verschiedenen Charsets, wie z.b. das der Held, wenn man sich im Rennen-Modus befindet und dann springt einen Salto in der Luft ausführt. Ich bleibe am besten bei dem Beispiel weil das noch am einfachsten zu erklären ist x)

Für die Animation hätte ich 3 Möglichkeiten zur Anzeige:

- CharSets
- Battle Animation
- Pictures

Bei CharSets gibt es das Problem das ich im MoveEvent Befehl zwischen StartJump und EndJump keinen Grafikwechsel durchführen kann. Lasse ich StartJump und EndJump weg und setze die Animationsstufen im Charset so das sich der Held so weit wie möglich vom Boden weg befindet sieht es mehr aus als macht er einen kleinen "Hopser" und keinen richtigen Sprung (d.h. die Entfernung zum Boden reicht nicht aus).

Bei BattleAnimations zeigt sich das Problem das diese "über allem" gezeichnet werden. D.h. es ist nicht möglich per SetScreenTone oder Picture das Bild irgendwie zu beeinflussen da die BA davon nicht betroffen wird und es etwas seltsam aussieht wenn der Bildschirm dunkel ist und der Held beim Springen auf einmal seinen Standardfarbton hat.

Bleibt noch eine Anzeige über Pictures. Gegenüber eine BA hat dies in jedem Fall den Vorteil das ich recht einfach mit einem darüberliegendem Picture den SetScreenTone Befehl für meinen T/N-Wechsel simulieren kann. Ich habe bloß absolut keine Ahnung wie ich bei einer Animation über Pictures exakt das gleiche Timing erreichen kann wie bei einer BattleAnimation.

Mal abgesehen davon das sich bei BA's und Pictures noch das Problem ergibt das diese über Events mit der Einstellung "Over Hero" angezeigt werden und wenn der Held hinter ein Objekt springt sich während des Sprunges also Darüber und nach dem Spring dahinter befindet. Das lässt sich zwar mit einer leichten Transparenz leicht korrigieren, man sieht aber leider das es eine Kompromisslösung ist <_<°

Nun, hat einer von euch eine Idee wie ich das am dümmsten umsetze? Die Sprung Animation wird auch leider nicht die einzige Ani bleiben bei der sich dieses Problem stellt da einiges per CharSets nicht zu machen ist.

Drauf verzichten ist auch unschön da dadurch die Grafikdarstellung meines KS ziemlich leiden würde :rolleyes:

Cherry
20.09.2007, 13:46
nimm den XP

nein scherz: kanns jetzt grad nicht testen, aber du könntest ja events machen, die du bei Bedarf um den Helden positionierst und mit ihnen die gleichen Move Events machst wie mit dem Helden, natürlich mit Slip Through. Musst dann halt die Animation auf den Helden und die Events aufteilen.

moment, du könntest doch auch folgendes machen: vor dem Jump setzt du einen Switch auf ON. Ein paralelles Event ändert dann die Grafik.

mfG

Caine Luveno
20.09.2007, 15:05
Nun, die Sache mit den Events um den Helden positionieren würde nur eingeschränkt funktionieren. Ich habe mal versucht einen Gegner zu scripten welcher aus 2x2 Events bestand. Kollision mit Objekten auf der Map etc. lief alles bestens. Bloß gab es das Problem das wenn ein anderer Gegner oder auch der Held sich so bewegt haben das diese sich zwischen den Zeitpunkt, nachdem das Testevent den Weg für alle 4 Events als "frei" markiert hatte und der Bewegung der 4 Events auf die nächsten Felder eines dieser Felder besetzt hatten das sich die Events verschoben haben.

Daher würde ich die Methode nur ungern nutzen.

Das mit dem Switch wird wohl nicht klappen da sich mehrere MoveEvents auf den Helden nicht überlagern können. Das erste Event bricht dann einfach ab.

Ich versuch das grad mal mit Pictures umzusetzen, aber es scheint kaum möglich zu sein das selbe Timing wie bei einer BattleAnimation zu treffen. Vorallem wenn einige Animationsschritte 1 Frame lang sind als BA. Wenn 3 Frames 0,1s wait sind müsste eigentlich 1 frame zwar 2x0,0s wait sein aber das haut vorne und hinten nicht hin <_<°

EDIT: Eine weitere Lösung wäre eine RPG_RT.exe welche die BA's unter Pics anzeigt, damit könnte ich Pics für den Screen Tone ebenfalls verwenden. Das kann aber afaik nur die 1.04 RM2k3 Exe und dann fehlen mir 10 Pics und ich muss fast alles umschreiben <_<

Cherry
20.09.2007, 18:24
AUßer du schaffts das mit den Offsets, ich hab echt keie Lust... Hast du da schon was ausprobiert :bogart:

EDIT: mir ist grade was anderes eingefallen: Du könntest den Hero auf transparent stellen und ein Event auf der Position des Heros anzeigen. Dann meine Methode mit dem Switch, aber so, dass das paralelle Event keine Move Events zum ändern der Grafik verwendet sondern ebenfalls Switches, die die anderen Seiten des Events aktivieren, das auf dem Hero liegt... Müsste afaik klappen.

Caine Luveno
20.09.2007, 18:38
AUßer du schaffts das mit den Offsets, ich hab echt keie Lust... Hast du da schon was ausprobiert :bogart:

EDIT: mir ist grade was anderes eingefallen: Du könntest den Hero auf transparent stellen und ein Event auf der Position des Heros anzeigen. Dann meine Methode mit dem Switch, aber so, dass das paralelle Event keine Move Events zum ändern der Grafik verwendet sondern ebenfalls Switches, die die anderen Seiten des Events aktivieren, das auf dem Hero liegt... Müsste afaik klappen.

Ich hab mich ne halbe Nacht mit den Offsets rumgeplagt, hab dann aber nach X-Fehlern auch die Lust verloren XD

Was du da oben geschrieben hast ist zwar eine gute Idee... bloß gibt es dann wieder das Problem das einige Animationen größer sind als ein Charset ;)

Und nochwas zur 1.04 Exe: Unterstützt keine Shift-Taste <_<° und wenn ich noch den KeyPatch einbauen müsste kann ich fast alles neubauen :/

Cherry
20.09.2007, 19:10
naja, aber du kannst damit immerhin WÄHREND EINES SPRUNGS die Grafik ändern! Damit brauchst du die Sprünge nicht mehr über CharSets realisieren!


Bei CharSets gibt es das Problem das ich im MoveEvent Befehl zwischen StartJump und EndJump keinen Grafikwechsel durchführen kann. Lasse ich StartJump und EndJump weg und setze die Animationsstufen im Charset so das sich der Held so weit wie möglich vom Boden weg befindet sieht es mehr aus als macht er einen kleinen "Hopser" und keinen richtigen Sprung (d.h. die Entfernung zum Boden reicht nicht aus).

Das Problem wäre damit gelöst!

Caine Luveno
20.09.2007, 23:10
naja, aber du kannst damit immerhin WÄHREND EINES SPRUNGS die Grafik ändern! Damit brauchst du die Sprünge nicht mehr über CharSets realisieren!


Der Satz macht keinen Sinn. Wenn ich das ganze per Event regel welches sich immer über dem Helden befinden soll, hilft mir das ja nur wenn ich die Ani aus CharSets mache ;)

Eine BA oder Pics kann ich ja auch so auf den Helden anzeigen und ihn vorher transparent machen.

Alan
21.09.2007, 05:59
Eine BA oder Pics kann ich ja auch so auf den Helden anzeigen und ihn vorher transparent machen.

Sorry, hatte grade keine Zeit, um den ganzen Beitrag zu lesen, aber falls es sich um ein Action-KS handeln sollte, würde ich dir in jeder Situation dringend davon abraten, deinen Helden transparent zu setzen... aus dem einfachen Grund, dass es da manchmal zu Bugs kommt, wo er nachher einfach nicht mehr auftauchen will. Bei einem rundenbasierenden KS geht das zwar in Ordnung, ich würde es da aber mit Variablen bzw. Switches lösen und einfach eine Seite im Heldenevent machen, wo nichts zu sehen ist, die dann per Switch startet.


Greetings!


Alan

Cherry
21.09.2007, 06:12
heldenevent? lol
@caine luveno: der Satz macht sehr wohl Sinn, du hast ja geschrieben, dass du, wenn du die Animation mit CharSets machst, du die Grafik während einer Sprungs nicht ändern kannst, und den Sprung nur in der CharSet Grafik zu realisieren sieht blöd aus, weil du dann nur einen kleinen Hopser machen kannst. DIESES Problem ist dann gelöst, du kannst also das ganze CharSet für die Ani nutzen und musst nichts freilassen zum Sprungandeutn

Caine Luveno
21.09.2007, 12:05
@Alan

Es handelt sich um ein AKS. Den Helden transparent zu setzen ist kein Problem, die Bugs von denen du warscheinlich sprichst tauchen wohl dann auf wnen ein anderes MoveEvent (z.b. Held wird angegriffen) das erste untebrricht welches den Helden wieder sichtbar machen müsste.

@Cherry
DAs ist soweit klar. Damit kann ich dann alles was in ein CjarSet passt problemlos darstellen.

Fehlt mir nur noch eine Lösung für Anis die größer als ein CharSet sind <_<°

Alan
22.09.2007, 06:33
@Caine Luveno: Jup, das hast du völlig richtig erkannt - leider passiert das in der Praxis nur allzu oft. Aber es ergibt sich noch ein weiteres Problem. Nehmen wir an, deine Schlag-Taste ist die Enter-Taste (oder Leertaste, je nachdem...) und du gestaltest den Angriffsablauf so:

Held: unsichtbar werden -----> Schlaganimation (BA)------>Held sichtbar werden




So. Und jetzt stell dir mal vor, was passiert, wenn der Held mit Enter eine Kiste aufmacht.... Ich sag's dir - diese Hero Opacity macht nix als Ärger...

Caine Luveno
22.09.2007, 12:12
Für den Fall den du bschrieben hast: Ein PP Event welche sabfragt ob der Held vor der Truhe steht. Wenn ja, wird nix transparent gemacht ;)

Das Problem mit den sich überschneidenden MoveEvent ist gelöst. Da selbiges ja auch für Fix Direction, MoveSpeedUp, MoveSpeedDown u.s.w. gilt. Ich sage mal vor so einem "kritischen" Move Event aktiviert man einen Switch und deaktiviert ihn danach wieder. Nun kann man abfragen ob das kritische MoveEvent noch aktiv ist oder nicht, und ggf. das Ausführen eines zweiten MoveEvents verhindern ;)

Zu meinem Problem: Ich hab mich jetzt dran gesetzt das Spiel für die RPG_RT.exe 1.04 umzucoden. Das scheint mir nochd as einfachste zu seind a man ja bedenken muss ds wenn ich so komplizierten Kram mit vielen Events etc. zusammenschuster das ich diese auf JEDE Map kopieren muss <_<° Dadurch fliegen zwar einiges Features.... aber es wird Platz frei für wichtigere Features x)

Batista
22.09.2007, 15:33
Bloß gab es das Problem das wenn ein anderer Gegner oder auch der Held sich so bewegt haben das diese sich zwischen den Zeitpunkt, nachdem das Testevent den Weg für alle 4 Events als "frei" markiert hatte und der Bewegung der 4 Events auf die nächsten Felder eines dieser Felder besetzt hatten das sich die Events verschoben haben.Das leuchtet mir nicht wirklich ein. Wenn ein Event erstellt wird, dass die obere Körperpartie beim Sprungangriff darstellen soll und jenes Event bei der Ausführung des Angriffs auf die Heldenkoordinaten mit y-1 gesettet wird, dann kann doch kein anderes Event den Weg blockieren. Durch Set Event Place können sich meines Wissens jedenfalls so viele Events überlappen wie man lustig ist.

Caine Luveno
22.09.2007, 16:12
Da ging es darum um den Helden herum Events zu positionieren um Animationen die größer als das Heldenevent sind darstellen zu können.

Das Problem ist folgendes:



XXX->Z
XYX->Z
XXX->Z


Y ist der Held. X sind die Events um ihn herum. Wir gehen davon aus der Held will nach rechts. Also prüft ein Testevent die 3 Positionen Z ob alle begehbar sind. Ist das der Fall wird ein Switch angeschaltet und der Held kann weitergehen. Das MoveEvent startet also seine Arbeit.



XXX->Z
XYX->Z<-A
XXX->Z


Nun lassen wir A einen Gegner sein welcher auf den Helden zugeht um ihn anzugreifen. Wenn das MoveEvent der Heldenevents noch nicht beendet ist, und der Gegner sich schneller bewegt als die Heldenevents kann es vorkommen das der Gegner das Feld Z schneller erreicht als das Heldenevent auf gleicher Höhe.



XXX
XYXA
XXX


Womit das ganze dann so aussieht. Sowas habe ich halt schonmal ausprobiert. Die einzige Lösung wäre die Events auf OverHero zu stellen, was bei der Kollision mit Objekten, je nach Art der Animation, unschön aussieht.

Batista
22.09.2007, 16:35
Gut, war dann falsch bei mir angekommen =3.

Da ging es darum um den Helden herum Events zu positionieren um Animationen die größer als das Heldenevent sind darstellen zu können.
Was ja schon unnötig rechenintensiv ist, da die Animationen nur bei den entsprechenden Aktionen abgespielt werden. Die x Events bei der Aktionsausführung per Set Event Place an die richtige Stelle zu setzen wäre nicht nur wesentlich weniger Aufwand, sondern auch unanfällig für das Problem (da eben kein x Event mehr parallel mitlaufen muss). Zumal du dann auch nur OverHero benutzen musst wenn es nötig ist.
Vielleicht stehe ich aber immer noch auf dem Schlauch, was ich nicht hoffe =/.