Beiträge von Daan

    Ah, das sieht schonmal gut aus. Das mit den Kommazahlen ist für mich sogar ideal, da ich viel mit Prozenten rechnen werde (und ich lieber mit Dezimalen rechne als mit /100). Das ganze macht es für mich "übersichtlicher" mein Kampfsystem zu strukturieren, da ich dann mit Namen arbeiten kann und nicht alles 10 mal irgendwo ausschreiben muss, welche Variablennummer für was da ist x)


    Ich werde womöglich noch einen .js-Kurs oder so belegen, bei dem ich dem Lehrer mit Fragen nerven kann, aber das ist schonmal etwas, womit ich gedanklich weiterarbeiten kann^^

    Es geht mir ehrlich gesagt mehr um die Programmierung im .js selber, nicht ob ich .js-Variablen erstelle um die per Scriptcalls genau so zu nutzen wie die MV-Variablen. Wenn ich jetzt sagen würde ich schmeiße alle Variablen, die ich für das Kampfsystem brauche, in die .js, die ich für das Kampfsystem zusammenbastle, kann ich dann beispielsweise Rechenergebnisse (aka Schaden, Heilung, Zustände,...) ohne großes Umherbasteln abfragen und zur Not in eine MV-Variable schmeißen? Für diese Variablen wäre es ja im Endeffekt egal, ob die nun mit jedem Speichern des Spiels mit gespeichert werden oder nach jedem Schließen wieder auf 0 gesetzt werden, da die sowieso immer wieder neu angesteuert werden müssen.

    Genau die meinte ich. Die Berechnungen zwischen MV-Variablen und den .js-Variablen stelle ich mir ja eher weniger schlimm vor, aber Variablen sind ja auch da, um Daten zu speichern und das alles. Deswegen würde ich gerne, bevor ich damit anfange, wissen, welche Besonderheiten und Limits es gibt, wenn man beide oft gemischt nutzt (ungeachtet der Übersichtssache, das kriege ich schon gebacken). Bei Java weiß ich beispielsweise, dass der Speicherplatz für eine Variable schon im Vorfeld belegt wird, was bei 3.4k Variablen etwas viel sein kann, nur ist JavaScript doch etwas anders...

    Heyo.


    Mehr eine allgemeine Frage hier... Und zwar dachte ich, dass es eventuell einfacher ist, einige Variablen "auszulagern", also als Variablen in einem .js zu nutzen. Es geht mir dabei hauptsächlich um mein Kampfsystem, ich war bei meinem Testsystem beim 2k3 auf ca. 3.400 Variablen, die ich dafür nutzen musste. Zugegeben, ich wage zu bezweifeln, dass man die restlichen 1.600 Variablen für den "Rest" des Spiels überhaupt voll bekommt, vor allem weil man ja die meisten Variablen ja auch mit was anderem belegen kann, wenn man weiß, dass man sie nicht mehr braucht (Beispielsweise für Sidequest A muss man X Monster töten, bei der nachfolgenden Quest B muss man Y Monster töten, da könnte man einfach die gleiche Variable dafür nutzen). Außerdem kann ich für viele Dinge einfach die Daten in Excel/Access erstellen und dann in das .js "exportieren", womit ich große Massen gleichzeitig bearbeiten kann.


    Nun bin ich in .js (noch) nicht bewandert und wollte fragen: Gibt es etwas, was ich besonders beachten muss, wenn ich die Variablen von .js nutze? Wie werden die gespeichert, wenn ich das Spiel verlasse? Sollte ich vorsichtshalber alle Variablen beim Neustart auf 0 setzen um Probleme zu vermeiden?

    Da in meinem Fall ein Active Time Battle-System den Rest des Systems kaputt machen würde. Ein großer Teil basiert auf Kombos, mit Angriff A kann man Angriff B oder C ausführen, mit Angriff B Angriff D oder Angriff E. Jeder Job hat eine unterschiedliche Anzahl an Angriffen und Kombos zur Verfügung, sodass es nicht nur auf "Spam Command 'Attack'" hinausläuft, die Kombos vom Paladin sind zum Beispiel 3 Angriffe lang und die Möglichkeit, eine zusätzliche Fähigkeit (Schutz, Heilung oder einen "schwachen" Standardangriff) einzusetzen. Der Red Mage hingegen stützt mit seinen physischen Angriffen seine Magie, hat dabei keine festgelegten Kombos, kann aber bis zu 5 Angriffe/Zauber setzen. Das bedeutet dann auf der anderen Seite dass man einige Zeit braucht, um die Kombos auszuwählen, Mechaniken zu erfüllen und alles.


    Setzt man das jetzt in ein ATB, setzt man den Spieler entweder unter Druck, weil er unerfahren ist oder er einen neuen Job ausprobiert oder man langweilt ihn, weil er bereits alle Kombos und Rotations drauf hat. Man könnte es natürlich auch etwas langsam machen und upspeeden, wenn niemand dran ist oder schlicht die Zeit "stoppen", wenn jemand einen Zug ausführt. Beides aber stört den Zeitfluss, weil man dann einfach kein Gefühl hat, wielange was noch läuft oder man dann "gerne noch 10 Sekunden wartet", damit man einfach den DoT wieder auf den Gegner setzen kann.


    Das hat mich schon im Vornherein vom ATB abgewandt.


    (Namen der Jobs werden eventuell noch geändert, klingt sonst zu sehr von FF abgeguckt)

    Heyo.


    Konnte mich ehrlich gesagt nicht für einen einzelnen Titel entscheiden, da beides jeweils allein irgendwie... unvollständig klang.



    Ich stehe zurzeit vor einem Problem auf eher theoretischer Basis. Zur Erläuterung: Ich baue mir ein eigenes Kampf-/Jobsystem auf, welches an eines der älteren Final Fantasy-Spiele erinnert, mit einigen Änderungen. Beispielsweise wird es für alle Fähigkeiten einen Cooldown geben, viele Angriffe und Zauber haben Zusatzeffekte wie DoTs, Buffs/Debuffs, etc., sodass man im Endeffekt wirklich darauf achten muss, wann man welche Fähigkeit einsetzt, welche man lieber aufhebt und was gegen welchen Gegner gut ist. Also im Grunde steht schon die ganze Theorie hinter dem System.


    Bis auf einer Sache: Die Zeit im Kampf, Rundenabfolge, Initiative oder wie man es sonst nennen mag. Dies ist auch keine Frage der Programmierung, das ist dabei sogar das kleinste Problem. Es geht mir eher darum, dass vieles auf Buff-Management hinausläuft, was eigentlich gar nicht mal so schlecht ist. Doch wie mit den Timings? Was macht für Cooldowns und für Bufflänge die Zeit aus? Zurzeit habe ich einen "Timer" für alle Kampfteilnehmer. Dieser tickt für jeden gleichzeitig runter, jenachdem, wie hoch der Geschwindigkeitswert ist. Ist der Timer auf 0, ist der jeweilige Charakter am Zug. Das gibt einige Probleme:


    Beispiel 1 "Damage over Time, das kleinste Übel"

    Natürlich kann ich es so machen, dass ein DoT 3 Runden anhalten soll und der CD vom DoT dann auch 3 Runden ist. Man kann jetzt sagen, dass der DoT mit Zug des Anwenders tickt und dann auch Schaden macht. So macht der 3x Schaden und der DoT ist wieder Einsatzbereit. Allerdings Bedarf das dann auch eine Menge an Workarounds durch Zuordnung wer den DoT an welchen Gegner verursacht hat. Würde ich den Tick mit Zug des Opfers durchführen, ist die Zuordnung deutlich einfacher, weil ich einfach nur sagen muss "DoT, 3 Runden, Stärke 100", Sache erledigt. Allerdings würde der DoT deutlich schneller ticken, wenn das Opfer sehr schnell ist - oder andersrum deutlich langsamer, wenn das Opfer langsam ist. Das wirkt sich dann eher negativ auf das Cooldown-Management aus. Die Unterschiede im Schaden selbst sind dabei nicht ganz so hoch (außer der Gegner ist so langsam, dass man die Fähigkeit 4x hätte einsetzen können). Hier wäre es dann vermutlich am einfachsten zu sagen, dass es eine Runde gibt und jeder Charakter pro Runde auch einmal rankommt, wie es in den ganz alten Final Fantasy-Teilen war. Aber dazu später mehr.


    Beispiel 2 "Buffs und Debuffs, mit Slow und Haste exploiten?"

    Haste und Slow waren in Final Fantasy schon immer mächtige Tools, wenn es darum ging, gefährliche Gegner auszuschalten. Es ergibt ja auch Sinn, je schneller die Zeit für einen läuft, desto schneller kann man agieren. Allerdings gibt es hier wieder das Problem wann welcher Buff weiterticken soll. Mein Paladin hat eine Fähigkeit, mit der er die ganze Gruppe während 2 Runden vor einen Teil des Schadens schützt. Lasse ich die Zeiten individuell laufen, hat der Ninja diesen Buff für vielleicht effektiv 1 Runde, wenn er mit Haste beschleunigt ist. Lasse ich die Zeit über den Paladin laufen, bin ich einfach mal so dreist und belege ihn mit Stop - und die ganze Gruppe bekommt solange weniger Schaden, bis der Paladin wieder normal in der Zeit läuft (und zugegeben, der Paladin ist nicht zum Schaden machen da, aber er soll keine passive Aura sein, dass alle weniger Schaden nehmen). Das gleiche mit Debuffs auf Gegnern, einmal schön sämtliche Fähigkeiten auf einen Gegner, dass der mehr Schaden nimmt, Stop, und solange er in diesem Zustand ist, darf auf ihn eingeprügelt werden mit dem Schadensbonus. Läuft der Debuff über die Zeit des Anwenders und ist der nicht unbedingt für den Schaden da, belege ich ihn mit Stop. Das ganze lässt sich jetzt auf alle anderen Arten und Weisen fortführen, deswegen belasse ich es hierbei. Wichtig ist jedenfalls, alle Statuseffekte sollten im gleichen Stile weiterticken, weil es sonst sehr willkürlich und einfach falsch wirkt, wenn ich für jede Sache eine Sonderregelung habe. Auch hier wieder die einfachste Methode "jeder darf pro Runde 1x angreifen"



    Beispiel 3 "Lösung der Probleme 1 und 2, das Problem mit der Dynamik"

    Ich hatte ja nun gesagt, dass es sich die beiden Beispiele vorher mit einem System lösen lässt, welches besagt, dass jeder pro Runde 1x dran ist - was übrigens auch DEUTLICH einfacher zu erstellen ist. Allerdings habe ich große Bedenken, was die Dynamik betrifft. Wenn ich jetzt einfach mal wieder den Paladin nehme - schwere Rüstung und langsam - und den Ninja - sehr geschickt und schnell - warum sollten beide pro Runde gleich oft zum Zug kommen? Würde es sich nicht einfach nur merkwürdig anfühlen, wenn jemand sehr schnelles genau so oft angreift, wie jemand, der aufgrund seiner Ausrüstung verlangsamt ist? Wie würde es mit Haste und Slow aussehen? Doppelt angreifen pro Runde bedeutet automatisch "doppelte Stärke" (begrenzt, da Cooldowns), aber wäre das nicht einfach viel zu übertrieben? Wie sähe es dann aus, wenn man 1 Runde nur 1x dran ist, in der zweiten dann 2x, dann wieder 1x,... ? Weil einfach "an erster Stelle" setzen an jeder Runde ist etwas langweilig. Was man natürlich machen könnte, ist, dass jeder Charakter pro Runde 2x zum Zug kommt und, je nach Geschwindigkeitswert vielleicht auch 3x oder nur 1x (±Haste/Slow) und dann am Ende der Runde werden alle Buffs durchgetickt. Wenn das nämlich von vornherein so darauf abgestimmt ist, ließe sich das ganze auch darauf balancen, auch mit den Cooldowns und alles. Bin mir aber dabei noch nicht ganz sicher, ob das so klappt, wie ich mir denke.


    Ich bin noch weit davon entfernt, irgendwas in der Richtung zu basteln, wollte aber lieber schonmal im Voraus Meinungen dazu hören, zumal das mich schon seit einigen Wochen stört.


    Und in diesem Sinne: Immer her mit euren Meinungen, Fragen, Anregungen.

    Hmm... eher in Richtung klassisch Final Fantasy, FF III ist wohl am nähesten (verschiedene Jobs, Jobs erfüllen unterschiedliche Rollen, blablub). Wollte aber auch mit vielen Mechaniken experimentieren für Kämpfe wie Tankbuster, Aggro, Wipemechaniken, all sowas.

    Sieht auf den ersten Blick recht gut aus. Habe zwar nicht wirklich viel Erfahrung mit .js, aber im Grunde ist der Syntax dann "Befehl setValue(Zu änderne Variable(ID) , Berechnung)" sein.


    Und der Rest lässt sich ja dann verschachteln, wie ich es in Excel oft tue. Das ist genau das, was ich brauche und schön simpel. Vielen Dank!

    Hey Leute.


    Wollte im Grunde nur mal Hallo sagen... Über mich gibt es eigentlich nicht viel zu erzählen, nur, dass ich vor Ewigkeiten mal (mehr oder weniger Erfolgreich) mit dem RPG-Maker 2k3 rumgebastelt habe und den einen oder anderen Script für eine Handvoll Leute erstellt habe. Vor einiger Zeit hatte ich, hauptsächlich aus Gründen des Ausgleichs, mal die Idee gehabt, ein Spiel mit dem RPG-Maker zu programmieren. Ich habe eine Menge Ideen, Pläne und alles andere, was ich dazu brauche, Story, Aufbau, Aublauf... nur muss das alles sortiert werden, die Story wollte ich erstmal komplett geschrieben haben, bevor ich starte, und und und. Schon komisch, dass ich arbeite, um Ausgleich von meiner Arbeit zu bekommen, aber auf der anderen Seite... wenn es etwas ist, worauf man Lust hat, warum nicht?


    Sonst bin ich recht ruhig und habe lieber meine Ruhe, andererseits genieße ich Gesellschaft und kann selber recht lebendig werden. Gegensätze halt, nicht?

    Das sieht eher nach einem Loop aus, der Variablen, der in einem bestimmten Muster liegen mit einem anderen Muster die Werte bestimmen, nicht? Das wäre eher weniger das, was ich brauche, aber mein Beispiel war auch ungünstig gewählt (da ich vorhin schnell weg musste).


    Es geht darum, dass die Variable, die in der Referenz gespeichert ist, direkt angesprochen und geändert/abgefragt wird. Ein zweites (hoffentlich besseres) Beispiel:

    Ich habe 3 Events, die ich direkt ansprechen kann. In Event A kann ich den Wert der Variable 1 (Referenz) ändern, ich spreche es an und ändere den Wert auf 5.

    In Event B habe ich die Abfrage "Schmeiße mir den Wert von der Variable aus, die in Variable 1 (Referenz) gespeichert ist". Ich spreche es an und bekomme den Wert, der in Variable 5 gespeichert ist, als Text.

    Ich spreche Event A nochmal an, ändere den Wert aber auf 12. Dann spreche ich wieder Event B an, dieses mal bekomme ich aber den Wert von Variable 12 als Text.

    In Event C habe ich als Befehl "Wert der Variable, die in Variable 1 (Refenz) gespeichert ist, auf 1000 setzen". Ich spreche Event A an, ändere den Wert auf 3, spreche Event C an und Variable 3 hat jetzt als Wert 1000.


    Danke aber schonmal für die schnelle Antwort!

    Heyo.


    Ich bin kein Fremder der alten RPG-Maker (hauptsächlich habe ich mit dem 2k3 gearbeitet) und da ich ein kleines Projekt vorhabe, wollte ich mich mal an den neueren wagen. Nun ist mir aber aufgefallen, dass seit XP nur sehr begrenzte Möglichkeiten zur Verfügung stehen, Variablen zu ändern, das größte Problem: Referenzen.


    Da ich zum Beispiel schon eine feste Vorstellung vom Kampfsystem habe und den Anfang im 2k3 schon vorprogrammiert habe, hatte ich einer Reihe an Variablen schon Skillslots, Charakterwerte, Statusveränderungen, etc. zugeordnet. Diese konnte ich mithilfe von einigen zusätzlichen Variablen abfragen und auch direkt verändern lassen. Ein Beispiel, wenn man die Klasse wechselt (und sich dann die Skills verändern):


    Der Charakter A hat seine 30 Skillslots in den Variablen 300 - 329, Charakter B von 330 - 359

    Event "Klasse wird geändert" startet


    Wenn Charakter = A

    --> Referenzvariable 1 wird auf Wert 300 gesetzt


    Wenn Charakter = B

    --> Referenzvariable 1 wird auf Wert 330 gesetzt



    Variable von Referenzvariable 1 wird auf 1 gesetzt

    Referenzvariable 1 wird um 1 erhöht

    Variable von Referenzvariable 2 wird auf 2 gesetzt

    Referenzvariable 1 wird um 1 erhöht

    Variable von Referenzvariable 1 wird auf 3 gesetzt

    ...


    Wenn ich dann die Klasse vom Charakter B ändern würde, dann wären die Werte von Variable 330 = 1, 331 = 2, 332 = 3. Oder wenn ich die Klasse von Charakter A ändere dann halt 300 = 1, 301 = 2,...


    So kann ich dann für die einzelnen Klassen dann Events erstellen, ohne dann für jeden Charakter aufwendig Copy+Paste-Arbeit leisten zu müssen und es ist einfacher, hinterher was zu ändern (wenn ich beispielsweise einen Skill für eine Klasse hinzufüge oder wegnehme, müsste ich das nur 1x ändern und nicht für jeden Charakter einzeln). Targeting, Kampftimer, Zustandseffekte, etc. hatte ich auch über Referenzen gelöst.


    Da der MV das von sich aus nicht unterstützt, gibt es dann irgendwie die Möglichkeit, das über .js zu lösen? Ich wäre immerhin dedicated genug, um mir die Sprache für meine Zwecke anzueignen.