Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 39

Thema: ATB -> CTB

  1. #1

    ATB -> CTB

    Hallo? Hallooooo?! Ist hier noch jemand? Ich hoffe.

    Ich bin gerade dabei, mein ATB in ein CTB (siehe FF10, Velsarbor) zu verwandeln.
    Ein Skript zu erstellen, was die Grundfunktion, also das errechnen der Reihenfolge durchführt war leichter als gedacht.

    Ich nehme einfach den Tempowert, setze ihn gleich eine andere Variable, subtrahiere von dieser solange 1, bis sie 0 ist. Geschieht das, wird der 1. Slot gefüllt. Dann wird die 2. Variable wieder gleich den Tempowert gesetzt und die ID des gerade zu befüllenden Slots wird +1 gesetzt, solang bis alle Slots voll sind.
    Der Code für 2 Kampfteilnehmer sieht so aus:


    Das Problem dabei ist jetzt nur, dass der Teilnehmer mit dem niedrigsten Tempowert am häufigsten dran ist. Es sollte natürlich genau anders herum sein, aber ich bin noch nicht richtig drauf gekommen, wie ich das am besten mache.
    Eine Möglichkeit, die mir eingefallen ist, ist den Tempowert als "Summand" zu benutzen und bis zu einem Zielwert aufzuaddieren. Als Zielwert hatte ich 255 genommen, weil das vorraussichtlich den maximalen Tempowert darstellt, aber das ist jetzt unwichtig.
    Ich befürchte nur, dass diese Methode nicht so genau ist, wie die Subtraktion -1. Angenommen, der Tempowert ist 50, dann würde es zu einem "Überschuss" von 45 kommen (6*50-255 = 45).
    Ich kann das ehrlich gesagt grad nicht so recht überblicken, wie sich das auswirkt, vielleicht kann mir da jemand helfen.

    Geändert von IndependentArt (02.04.2019 um 14:36 Uhr)

  2. #2
    Hi,
    warum addierst du nicht +1 bis zu einem bestimmten Wert anstatt 1 zu subtrahiern bis du 0 erreichst? So hättest du warscheinlich den umgekehrten Effekt. Oder du nimmst 255-[Geschwindigkeitswert] und subtrahierst dann bis 0.
    Aus dem Skript werd ich so nicht ganz schlau: Was ist Variable 1130 oder 1016 und was bedeutet die Variable 1837 mit der du den current CTB slot vergleichst?

  3. #3
    Zitat Zitat
    warum addierst du nicht +1 bis zu einem bestimmten Wert anstatt 1 zu subtrahiern bis du 0 erreichst?
    und was wäre dieser bestimmte Wert?

    Zitat Zitat
    Oder du nimmst 255-[Geschwindigkeitswert] und subtrahierst dann bis 0.
    das wäre vmtl. genau das was ich bereits ausprobiert hab, nur umgekehrt.

    1130 und 1016 sind die Tempo-Stats von Charakter und Gegner.
    Ich vergleiche am Ende nur, ob "Current CTB Slot" größer als 1837 ist, weil auf der Variablen ID 1836 der letzte zu befüllende Slot liegt.

  4. #4
    Zitat Zitat von IndependentArt Beitrag anzeigen
    und was wäre dieser bestimmte Wert?
    Den bestimmst du selbst. Vielleicht 255? Weil das Max Wert ist?
    Zitat Zitat von IndependentArt Beitrag anzeigen
    das wäre vmtl. genau das was ich bereits ausprobiert hab, nur umgekehrt.
    Und hat es dann so funtioniert? Müsste ja logischerweise,
    Da Bsp. Char hat Wert 50 und Gegner 60 -> 255-50= 205 und 255-60 ist 195. Wenn du dann runterzählst sollte Der Gegner Schneller sein, weil er den höheren Wert hat.
    Zitat Zitat von IndependentArt Beitrag anzeigen
    1130 und 1016 sind die Tempo-Stats von Charakter und Gegner.
    Ich vergleiche am Ende nur, ob "Current CTB Slot" größer als 1837 ist, weil auf der Variablen ID 1836 der letzte zu befüllende Slot liegt.
    OK macht Sinn.

  5. #5
    Der Überschuss ist kinderleicht in den Griff zu bekommen, in dem man Abfragt, ob der Zähler > 255 ist und im Ja-Fall dieselbe Variable auf 255 setzt.

    Leider wird IndependentArt diese Antwort nicht lesen, da er mir vor Wochen mitgeteilt hat, mich ohne Angabe von Gründen und ohne eine mir bekannte Vorgeschichte auf seine Ignore-Liste zu setzen.

  6. #6
    Zitat Zitat
    warum addierst du nicht +1 bis zu einem bestimmten Wert anstatt 1 zu subtrahiern bis du 0 erreichst?
    Zitat Zitat
    Den bestimmst du selbst. Vielleicht 255? Weil das Max Wert ist?
    Nochmal folgende Erklärung wie es momentan funktioniert:
    Charakter 1 Tempowert = 20
    Gegner Tempowert = 10

    Ich setze 2 andere Variablen gleich diese Tempovariablen (damit mir die Originalwerte erhalten bleiben).

    Von diesen ziehe ich -1 ab, bis eine davon 0 ist. Der Gegner-Wert wäre als erstes 0, weil er kleiner ist. Wenn das passiert, wird der erste Slot mit der Zahl die für den Gegner steht bestückt (Gegner 1 = 4) und der Wert von dem abstrahiert wird, wird resettet (also wieder 10). Fällt der Charakterwert auf 0, passiert das gleiche (für Charakter 1 wird der Slot = 1 gesetzt). Da der Gegnerwert genau halb so groß ist, werden die Werte jetzt gleichzeitig auf 0 fallen. Der Charakter erhält allerdings Vorzug, weil die Abfrage im Skript über dem Gegner steht.
    Hierdurch ergibt sich für die ersten 10 Slots ca. Folgendes Pattern: 4 1 4 4 1 4 4 1 44
    Gibt auch schon eine Visualisierung dazu:


    Was würde es mir nun nützen, eine Variable +1 zu rechnen, bis sie 255 ist? ^^ Vlt meintest du aber auch +Tempowert, wie ich es bereits gemacht habe und ich hab das falsch verstanden.

    Auf jeden Fall kommt es ja auf das gleiche raus, ob ich +Tempowert rechne, bis die Variable 255 überschreitet oder -Tempowert von 255 an runter zähle.


    @Ken
    Ich glaube, es wurde noch nicht so recht verstanden, warum ich mir Sorgen um den Überschuss mache und ich bin auch nicht sicher, wie ich das artikulieren kann.
    Mir ist klar, dass ich fragen kann ob der Zähler > 255 ist. Mir gehts aber gar nicht darum, irgendeinen Wert auf 255 runter zu bügeln. Wäre der Tempowert 50, würden die 255 ja mit 300 überschritten werden und ich könnte die Aktion einleiten.
    Die Differenz von 45 würde allerdings völlig unberücksichtigt bleiben, was mich zu der Befürchtung führt, dass hier nicht genau gerechnet wird, im Gegensatz zu der Variante wo 1 subtrahiert wird und man genau auf 0 kommt.

    Es müsste vielleicht irgendeine Möglichkeit geben, wie man die Statuswerte in ihr Gegenteil vekehrt. So dass die hohen Werte niedrig werden und die niedrigen Werte hoch. Aber mir ist noch nichts brauchbares dazu eingefallen.
    Ich hoffe, man versteht das irgendwie.

    btw: Ich hab dich mal entblockt.

  7. #7
    Zitat Zitat von IndependentArt Beitrag anzeigen
    Ich glaube, es wurde noch nicht so recht verstanden, warum ich mir Sorgen um den Überschuss mache und ich bin auch nicht sicher, wie ich das artikulieren kann.
    Mir ist klar, dass ich fragen kann ob der Zähler > 255 ist. Mir gehts aber gar nicht darum, irgendeinen Wert auf 255 runter zu bügeln. Wäre der Tempowert 50, würden die 255 ja mit 300 überschritten werden und ich könnte die Aktion einleiten.
    Also kein Plan, ob ich das jetzt richtig verstehe, aber wenn die 6 einfach bedeutet, dass das Tempo sechs Mal aufaddiert wird, bis sie einen Wert größer oder gleich 255 erreicht, hast du bei Tempo = 50 mit der Rechnung 50+50+50+50+50+50=300 zwar als Ergebnis 300, du kannst den Wert aber in eine neue Variable speichern und davon 255 abziehen und erhälst damit den Überschuss. Die eigentliche Zielvariable, die somit ja immer noch > 255 ist, setzt du trotzdem wieder auf 255. Im ersten Additionsschritt addierst du diesen Überschuss (45) zusätzlich auf den ersten Step der Tempovariable, sodass sich ergibt: (50+45)+50+50+50+50+50=345. (Einfach zwei Variablen addieren sollte deinem Code nichts tun, denn wenn du mal genau auf 255 landest enthält die Überschussvariable dementsprechend den Wert 0). Der nächste Wert, der in die Überschussvariable eingespeichert wird, wäre 345-255 und würde im nächsten 6er-Schritt wieder auf den ersten Wert aufaddiert werden usw.

    Zitat Zitat von IndependentArt Beitrag anzeigen
    Es müsste vielleicht irgendeine Möglichkeit geben, wie man die Statuswerte in ihr Gegenteil vekehrt. So dass die hohen Werte niedrig werden und die niedrigen Werte hoch. Aber mir ist noch nichts brauchbares dazu eingefallen.
    Du speicherst die Tempowerte doch in Variablen. Die multiplizierst du jeweils mit -1 und dann müsste das passen.

    Geändert von Ken der Kot (02.04.2019 um 20:35 Uhr)

  8. #8
    Zitat Zitat von IndependentArt Beitrag anzeigen
    Was würde es mir nun nützen, eine Variable +1 zu rechnen, bis sie 255 ist? ^^ Vlt meintest du aber auch +Tempowert, wie ich es bereits gemacht habe und ich hab das falsch verstanden.
    Ich nehme an, dass das eine Antwort auf dein Problem war:
    Zitat Zitat von IndependentArt Beitrag anzeigen
    Das Problem dabei ist jetzt nur, dass der Teilnehmer mit dem niedrigsten Tempowert am häufigsten dran ist. Es sollte natürlich genau anders herum sein, aber ich bin noch nicht richtig drauf gekommen, wie ich das am besten mache.

    Zitat Zitat von IndependentArt Beitrag anzeigen
    Nochmal folgende Erklärung wie es momentan funktioniert:
    Charakter 1 Tempowert = 20
    Gegner Tempowert = 10

    Ich setze 2 andere Variablen gleich diese Tempovariablen (damit mir die Originalwerte erhalten bleiben).

    Von diesen ziehe ich -1 ab, bis eine davon 0 ist. Der Gegner-Wert wäre als erstes 0, weil er kleiner ist. Wenn das passiert, wird der erste Slot mit der Zahl die für den Gegner steht bestückt (Gegner 1 = 4) und der Wert von dem abstrahiert wird, wird resettet (also wieder 10). Fällt der Charakterwert auf 0, passiert das gleiche (für Charakter 1 wird der Slot = 1 gesetzt). Da der Gegnerwert genau halb so groß ist, werden die Werte jetzt gleichzeitig auf 0 fallen. Der Charakter erhält allerdings Vorzug, weil die Abfrage im Skript über dem Gegner steht.
    Hierdurch ergibt sich für die ersten 10 Slots ca. Folgendes Pattern: 4 1 4 4 1 4 4 1 44
    Gibt auch schon eine Visualisierung dazu:
    Aus der Erklärung wird mir jetzt so langsam das Problem klar. Der Gegner hat weniger Tempowert als der Held, kommt aber öfter dran. Und jetzt möchtest du, dass das genau andersrum ist.
    Die Lösung von Hasenmann zielt genau darauf ab. Nehmen wir dein Beispiel:

    Held: Tempo 20
    Gegner: Tempo 10
    neuer Maximalwert: 30

    Jetzt addierst du die ganze Zeit 1 auf die Tempowerte, bis einer den Maximalwert erreicht.
    - Das ist jetzt nach 10 Schritten der Held => Held erhält Slot in der Reihenfolge und setzt seinen Wert wieder auf 20.
    - Nach 10 weiteren Schritten stehen beide auf 30 => Beide erhalten einen Slot, Held wird wieder auf 20 gesetzt, Gegner wieder auf 10
    - Das Ganze beginnt von vorne

    Damit bedeutet ein höherer Wert, dass man öfter dran kommt.

    -------
    Es gibt dabei aber ein paar Sachen, die du beachten musst:
    - Kein Charakter kann einen höheren Tempowert als das festgelegte Maximum haben. Außerdem sollte niemand sehr nahe daran kommen können, sonst kann es sein, dass einer sehr, sehr oft hintereinader dran ist.
    Beispiel: Maximalwert ist 300, dein Held hat Tempo 299. Jetzt kommt er in jedem +1 Schritt dran, d.h. selbst wenn der Gegner Tempo 290 hat, ist der Held 10 Mal so oft dran.
    - Das Beispiel macht schon den Effekt deutlich: Der Zusammenhang zwischen unterschiedlichen Tempowerten ist nicht mehr konstant, d.h. wenn der Held den doppelten Tempowert eines Gegners hat, kommt er nicht zwangsläufig doppelt so häufig dran.
    Mit dieser Methode kommt es auf den Unterschied zur Maximalgrenze an: Wenn die Differenz (Maximalwert - Heldentempo) halb so groß ist wie die Differenz (Maximalwert - Gegnertempo), dann ist der Held doppelt so oft dran.


    ------
    Und noch eine kleine Anmerkung:
    Ich behaupte, du musst dein Skript mit -1 nicht umbauen, wenn du stattdessen als Grundwerte "Maximalwert - Tempo" als Input lieferst. Probier einfach mal, deine temporäre Variable (die du ja momentan nur setzt, um den "richtigen" Tempowert nicht zu überschreiben), auf "Maximalwert - Tempo" zu setzen. Das Sollte den gewünschten Effekt erzielen .

    Bei der Wahl des Maximalwertes musst du dir dann Gedanken machen, wie groß diese Spanne werden soll und wie schnell der Held seinen Tempowert steigern kann bzw. welche Items / Ausrüstung das in welchem Ausmaß tun können.

    Geändert von Caledoriv (02.04.2019 um 20:49 Uhr)

  9. #9
    @Caledoriv
    Jop so hab ich das gemeint.

  10. #10
    @Ken

    Das mit dem "Aufgeben" ist gar kein schlechter Gedanke. Ich könnte auch einfach -255 rechnen, sobald 255 überschritten wird. Damit würde ich quasi beim "Überschuss" wieder anfangen aufzuaddieren für den nächsten Slot.

    Das scheint mir im Moment am praktikabelsten zu sein. Habs auch grad schon getestet.


    Caledoriv

    Ich glaube, die Variante ist für stark variierende Tempowerte nicht praktikabel. Für die Tempowerte 10 u. 20 und Max. 30 funktioniert es natürlich genau so wie vorher. Ich denke aber, mein Maximalwert wird schon irgendwo um 255 liegen. So kehren sich die Tempowerte im Verhältnis zum Max. Um, damit hätte ich quasi Werte von 245 und 235, was ein 1 4 1 4 1 4 Pattern ergeben würde, weil der Unterschied zwischen den Werten quasi aufgehoben wird. ^^

  11. #11
    Ich habe in meinem Spiel auch ein CBS, wie du es suchst. Dabei bin ich über 3 verschiedene Designs / Techniken gegangen:

    Das erste ist, wie beschrieben, ein fixer Maximalwert. Dies fand ich zuerst sehr gut, aber später sind mir paar Probleme klar geworden: Relationen gab es nicht. Dies ist ein Design Problem, so ist ein sehr schneller Charakter gefühlt nicht wirklich schneller. Es fühlte sich eher an, als wären alle gleich schnell und erst in Runde 5 oder 6 agierte der schnelle Charakter bemerkbar öfters. Also müsste ein Kampf über 15 Runden mind. gehen um einen schnellen Charakter auch schnell wirken zu lassen, was ich vermeiden wollte.

    Die zweite ist, ein variabler Maximalwert. Der Maximalwert ist die Summe aller Tempo-Werte. Dies funktionierte und fühlte sich schon viel besser an, doch gab dies mir kaum Kontrolle über das Balanzing, so dass schnell einige Probleme geschahen.

    Die nun dritte Möglichkeit ist ein Slot / Turn - Max. Dies ist etwas schwieriger technisch. Es wird ganz normal vom Tempo -1 gerechnet, bis einer bei 0 ist, der übernimmt Slot 1 und bekommt dann wieder sein Tempo wert (addiert). Dies wird dann Bsp. 10 mal wiederholt. Nun ist es aber nicht so, dass Slot 1 anfängt, sondern der letzte Slot. Dabei hat jede Aktion seinen fixen Tempo-Wert (Verteidigen hat z.B. Tempo 300, während Angriff Tempo 100 hat) und der Abzug (also -1) ist abhängig vom Agi Wert. Ein schneller Charakter (also mit hohen Agi) ist somit schneller wieder dran.

    Ich hoffe das konnte dir etwas helfen / inspirieren

  12. #12
    Ich habe einmal ein Kampfsystem mit einem ähnlichen System entwickelt. Ich hatte damals viele detaillierte Tests durchgeführt, bis ich ein System gefunden habe, mit dem ich zufrieden war.
    Mein System hat folgende Eigenschaften:
    * Es ist relativ simpel zu implementieren. (das ist sehr gut)
    * Ein Character mit doppelter Geschwindigkeit erhält ca. doppelt so viele Züge. (das ist eher gut)
    * Die Anzahl der Züge für einen Character entspricht ca. der Prozentzahl von dessen Geschwindigkeitswerts in Bezug zu der Summe aller Geschwindigkeitswerte. (das ist eher gut)
    * Es verhält sich zyklisch für genügend viele Züge. Das heist es bilden sich Muster für der Abfolge der Charactere. (kann gut oder schlecht sein, je nach Geschmack)
    * Sehr langsame Charaktere kommen erst sehr sehr spät zum Zug (das ist eher schlecht)

    Hier ist eine Beispielausgabe:


    Hier ist ein zweites Beispiel mit Zahlen die näher bei einander liegen:


    Zuletzt ein extremes Beispiel mit einhundert Zügen und sehr geringen Geschwindigkeitsunterschieden:




    Hier ist der Ablauf des Algorithmus:
    1. Jeder Charakter hat einen Geschwindigkeitswert (ich nenne diesen Agi). Hohe Werte sind besser als niedrige.
    2. Im Kampf gibt es für jeden Charakter einen Ready-Wert. Also wie bereit der Charakter ist am Zug zu sein.
    3. Zu Beginn des Kampfes wird das Ready-Limit auf das (Maximum aller Agi-Werte) + 1 gesetzt. <- Die +1 in dieser Berechnung ist wichtig! Sie verbessert das Ergebnis erheblich!
    4. Der folgende Pseudo-Code bestimmt, welcher Charakter im Moment am Zug ist:


    Code:
    1) Suche den Charakter mit dem höchsten Ready-Wert
    2) Hat ein Charakter einen Ready-Wert >= Ready-Limit ?
    2) Falls ja => Dieser Charakter ist am Zug.
    3) Falls nein => Setze für jeden Charakter den Ready-Wert = Ready-Wert + Agi
    4) Gehe zurück zu 1)
    Es ist hierbei wichtig, dass entweder der Ready-Wert von allen Charakteren oder von keinem erhöht wird.
    Sobald ein Charakter seinen Zug durchgeführt hat gilt: Ready-Wert = Ready-Wert - Ready-Limit.
    Der Ready-Wert für den aktiven Charakter wird also um das Ready-Limit reduziert.


    Ich hoffe das war ausführlich genug, um das Prinzip zu verstehen.

    Geändert von Cornix (04.04.2019 um 01:20 Uhr)

  13. #13
    Danke für die weiteren Antworten.

    @Cornix

    Soweit ich das verstehe, ist das ziemlich genau das System wie ich es jetzt implementiert habe.
    Interessant finde ich, dass du den Ready-Wert aus allen Agi-Werten errechnest. Das ist vermutlich ökonomischer und letztlich wohl auch gerechter. Deshalb werd ich es wohl übernehmen.

    Apropos gerecht, ich frage mich gerade noch, was die Reihenfolge der Abfragen für einen Einfluss auf die Züge hat.
    Momentan sieht meine Abfragen-Struktur für 6 Teilnehmer so aus:
    Charakter 1
    Gegner 1
    Charakter 2
    Gegner 2
    Charakter 3
    Gegner 3

    Damit haben die oberen evtl in einigen Situationen eine starke Priorität, weil sie immer als erstes abgefragt werden. Zumindest sieht es mir danach aus, ich kann die Konsquenzen nicht völlig abschätzen.
    Zum Gegensteuern schwebt mir vor, jeder Abfrage ein Label vorzuschieben. Eine Variable zählt dann immer von 1-6 und lässt das Skript damit zum jeweiligen Label springen, was das ganz wohl etwas ausgeglichener machen dürfte.

  14. #14
    Ich würde das konsistent halten und nicht Helden und Gegner abwechseln. D.h. entweder alle Helden zuerst oder alle Gegner zuerst. Im Extremfall wirkt es dann für den Spieler zufällig, wer in welcher Reihenfolge dran kommt.

    Aber die Reihenfolge der Abfrage sollte sowieso nur dann etwas ändern, wenn zwei Kämpfer den gleichen Tempowert angesammelt haben. Soll heißen, die Abfrage ist im Idealfall noch etwas komplexer:

    Beispiel 1:
    Grenzwert ist 300
    Tempo Held: 20
    Tempo Gegner: 15
    Momentaner Wert Held: 290
    Momentaner Wert Gegner: 295

    Nach dem nächsten Schritt hätten beide einen Wert von 310. Nur in diesem Fall sollte die Reihenfolge der Abfrage einen Unterschied machen.

    Beispiel 2:
    Grenzwert ist 300
    Tempo Held: 20
    Tempo Gegner: 15
    Momentaner Wert Held: 290
    Momentaner Wert Gegner: 290

    Nach dem nächsten Schritt überschreiten beide den Grenzwert: Der Held hat 310 und der Gegner hat 305. In dem Fall wäre es in meinen Augen ideal, wenn der Held den ersten Slot bekommt und der Gegner den zweiten, obwohl beide in derselben Iteration den Grenzwert überschritten haben.

  15. #15
    @Caledoriv

    Ich hab mal mit verschiedenen Abfragemethoden herumprobiert und alle haben mir zumindest für meine Werte die exakt gleichen Ergebnisse gebracht. Es scheint also, als macht das nur einen marginalen Unterschied.

    ---

    Ich habe indessen die Basisvariante implementiert, welchen sehr zuverlässig die Reihenfolge ermittelt.
    Jetzt hantiere ich gerade mit Dingen herum, die doch etwas komplizierter sind als erwartet: Flexible "Zugzeit" und Preview. Damit meine ich einfach, dass natürlich unterschiedliche Aktionen unterschiedlich lang dauern sollen. Ich will jetzt nicht auf die spefizischen Probleme eingehen, auf die ich dabei gerade stoße, weil ich im Moment schon noch davon ausgehe, die selbst lösen zu können.

    Ich bin dabei jedoch auf eine Design-Frage gestoßen: Angenommen ich wähle für meinen gegenwärtigen Zug eine Aktion, welche die doppelte Zeit benötigt. Sollte der gleiche Zug auch für alle folgenden berechneten Züge angenommen werden oder wird für die ein Zug mit normaler Geschwindigkeit angenommen?
    Angenommen die Basisdauer ist 100 und eine spezielle Aktion dauert 200.
    Dann würde für die Folgezüge eins dieser Muster herauskommen:

    200 100 100 100 100 100 100 (für den 2. Zug zurück zur Basisberechnung)
    200 200 200 200 200 200 200 (spezielle Berechnung beibehalten)

    Aus meiner Sicht ist es ziemlich naheliegend, die erste Variante zu wählen, so baue ich es auch gerade. Aber vielleicht habt ihr ja noch andere Gedanken dazu.

  16. #16
    Ja, die Reihenfolge der Abfrage macht nur einen Unterschied, wenn mehrere Kämpfer gleichzeitig die Grenze überschreiten.

    @ Zugdauer:
    Mehr Infos bitte^^. Im Moment habe ich den Eindruck, dass sich beim Wählen dieser "langen" Aktion die Zugreihenfolge ändern kann und dementsprechend an dieser Stelle neu berechnet werden müsste? Ist das so oder habe ich das falsch verstanden?

    Generell hatte ich eine Zugdauer bisher nicht auf dem Schirm; ich bin bisher davon ausgegangen, dass Aktionen keine Dauer haben und dementsprechend nur der Tempowert die Reihenfolge bestimmt. Falls dem nicht so ist, würde ich die Aktionsdauer für den Standardangriff als Referenzwert nehmen.

    -----
    Ich bin gerade so überrascht, weil eine sich ändernde Reihenfolge für mich als Spieler ersteinmal komisch wirkt und mir im schlechtesten Fall meine Strategie versaut, weil mein Held auf einmal nicht mehr wie angezeigt an die Reihe kommt. Wenn man die Reihenfolge nicht so hunderprozentig genau sieht (wie z.B. in Mondschein), sind solche Änderungen kein Problem.
    Aber wenn ich als Spieler alles schon mehrere Züge vorausplanen kann und für mich die neue Zugreihenfolge nicht ersichtlich ist, macht das u.U. keinen guten Eindruck.

    Daher würde ich in dem Fall unbedingt eine Anzeige einbauen, wie sich die Zugreihenfolge mit dieser Aktion verändert! Dann kann ich als Spieler immer noch genau so vorausplanen und erlebe keine "bösen" Überraschungen. Außerdem ist das ein cooler Effekt für Dinge, welche das Tempo erhöhen / erniedrigen.

  17. #17
    Hi,
    sorry für die späte Antwort, war etwas beschäftigt.
    Ich hab nun festgestellt, dass ich die Abfragereihenfolge doch durchzählen muss. Ich hatte einen Fall mit 2 Kampfteilnehmern und es kam immer nur der Charaktere an die Reihe. Das Durchzählen der Abfragen konnte das fixen.

    Zitat Zitat
    @ Zugdauer:
    Mehr Infos bitte^^. Im Moment habe ich den Eindruck, dass sich beim Wählen dieser "langen" Aktion die Zugreihenfolge ändern kann und dementsprechend an dieser Stelle neu berechnet werden müsste? Ist das so oder habe ich das falsch verstanden?
    Exakt.
    Ich kenne ehrlich gesagt nur 2 Spiele mit diesem System und beide haben unterschiedliche Zugdauer für bestimmte Aktionen.

    Zitat Zitat
    Daher würde ich in dem Fall unbedingt eine Anzeige einbauen, wie sich die Zugreihenfolge mit dieser Aktion verändert! Dann kann ich als Spieler immer noch genau so vorausplanen und erlebe keine "bösen" Überraschungen. Außerdem ist das ein cooler Effekt für Dinge, welche das Tempo erhöhen / erniedrigen.
    Ich denke, das ist ja auch genau das, was ich mit dem Preview bezwecken will, sofern wir da nicht aneinander vorbei reden.
    Ich hab mal ein Beispiel:




    Ich experimentiere gerade mit Prozentwerten herum:
    Die Aktion Angriff läuft bei diesem Beispiel auf 100% des Tempowerts.
    Zauber hingegen läuft auf 500%.
    Die Tempowerte beider Teilnehmer sind 11. Damit ergibt sich ein Ready-Wert von 22+1.
    Ich hätte bei 500% glaube ich mit einem etwas größeren Unterschied gerechnet, sprich, dass Ramirez noch mehr Züge bekommt. Aber ich denke, das liegt am Wechsel der Abfragenreihenfolge und an der Formel des Ready-Werts.
    Gleich mal ausprobieren ... YO, frage ich eine feste Größe wie 255 als ab, sieht die Verteilung für "Zauber" schon anders aus:



    edit: stimmt nicht, war mein Fehler. auch mit einem festen ready Wert von 255 kommt genau das gleiche raus.

    Die 500% sind natürlich ein unrealistisches Beispiel. Ich denke nicht, dass die Zuglänge großartig über Unterschiede zwischen 50-200% hinaus geht, aber es verdeutlicht, worauf man achten muss, je nachdem, in welche Richtung man das Syteam tweaken will. Das muss ich mir jetzt eben genau überlegen.

    Geändert von IndependentArt (10.04.2019 um 18:13 Uhr)

  18. #18
    Moment; das mit den Prozentwerten erscheint mir nicht schlüssig... sofern ich das richtig verstehe.

    Beispiel:
    Mein Startheld lernt auf Level 5 gerade seinen ersten Zauber. Der Zauber dauert 200% des Tempos. Der Tempowert auf dem niedrigen Level ist 15. Ergo: Die Aktion dauert 30 Einheiten.

    Jetzt spiele ich weiter. Mein Held wird Level 35 und hat jetzt Tempowert 50. Derselbe Zauber dauert jetzt nach dieser Logik 100 Einheiten (anstatt wie auf dem niedrigen Level nur 30).


    => Habe ich das so richtig verstanden? Das erscheint mir nicht sinnvoll zu sein, wenn dem wirklich so ist. Als Alternative werfe ich mal das hier ein:

    (Dauer des Standardangriffs) * (Modifikator der Aktion)
    ------------------------------------------------------------------------------ = Dauer der Aktion
    ...................... Tempowert des Charakters


    @ Reihenfolgeanzeige:
    In den Bildern wird also die Reihenfolge bei Ausführen dieser Aktion angezeigt? D.h. wenn ich Pfeil hoch / runter drücke, wird sofort die Reihenfolge geupdated? Wenn das so ist, finde ich das top .

  19. #19
    Zitat Zitat
    => Habe ich das so richtig verstanden? Das erscheint mir nicht sinnvoll zu sein, wenn dem wirklich so ist.
    Nein. Die Prozent beziehen sich auf das, was hinzugefügt wird.
    Beispiel für einen Durchlauf des Skripts bei Tempowert 10:
    100%: aktueller Zeitwert + 10
    500%: aktueller Zeitwert + 50

    Der "aktuelle Zeitwert" ist quasi der Wert, der den Ready-Wert überschreiten muss, damit ein Slot in der Aktionsreihenfolge belegt wird.

    Zitat Zitat
    In den Bildern wird also die Reihenfolge bei Ausführen dieser Aktion angezeigt? D.h. wenn ich Pfeil hoch / runter drücke, wird sofort die Reihenfolge geupdated? Wenn das so ist, finde ich das top .
    So wahr mir Gott helfe:



    Das ist ein Test mit 1000% für Zauber. Ich verstehe es noch nicht ganz.

  20. #20
    Danke für die Bilder^^.
    Sieht auf jeden Fall richtig gut aus!
    Die 3D-Perspektive macht richtig was her .

    Bzgl. Dauer einer Aktion:
    Anscheinend haben wir wirklich aneinander vorbeigeredet. Bisher bin ich davon ausgegangen, dass die Aktion sofort ausgeführt wird, aber die Aktionsdauer dann negativ für den folgenden Zug berechnet wird (d.h. mache ich jetzt eine Aktion mit hoher Dauer, dauert es länger, bis ich wieder dran komme).

    Jetzt habe ich den Eindruck, dass die Aktion erst ausgeführt wird, wenn diese Dauer vergangen ist. So ähnlich wie in Grandia.
    Also so ganz blicke ich noch nicht, wie genau du das umsetzt. Ist aber auch nicht so wichtig^^.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •