Was macht ihr an Euren Projekten gerade?

  • Das ist mir mittlerweile auch extrem wichtig bei Plugins. Irgendwann komme ich immer an dem Punkt, wo ich es mit einem anderen Plugin, dass ich benutze kompatibel machen muss, oder einfach ans eigene Projekt anpassen will. Es gibt nichts schlimmeres dann ins Skript zu gehen und zu sehen, dass der Code verschleiert wurde -_-
    Also cool, dass du da so entgegenkommend bist!

    Kannst du mir ein paar typische Dinge nennen, die Plugins inkompatibel machen? Wie kann man sowas, aus deiner Sicht, am besten vermeiden und was für Dinge musstest du bisher ändern? Würde mich interessieren, damit ich das in Zukunft direkt mit beachten kann. Selbst habe ich noch nicht so viele Plugins ausprobiert und hatte daher auch noch nie Probleme.

  • Ich habe seit langem mal wieder gemalt und intensiv an meinem Spiel weiter gearbeitet. Zur Zeit sitze ich am "CrimeBoard". Es ist Bildbasierend und läuft ohne Plugins. Besonders stolz bin ich auf die Steuerung, da man nicht nur nach links und rechts Auswählen kann sondern auch nach oben und unten. Es läuft sehr weich und ich habe es mit nur einer Seite Script geschafft bzw. mit nur einem Event. Das Stichwort sind Schleifen und Label. Je mehr ich mit dem Maker ausseinander setze, desto kürzer und eleganter werden meine "Scripte" Wenn ich mich noch an die ersten Scripte erinnere, einen HAU DEN LUKAS mit 3 gleichzeitig laufenden parallel Events... xD oh je.

    P.S. Eigenlob stinkt zwar, aber muss auch mal sein (im Video wird man es sehen....xD)


    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • Ich mag ja so Detektiv-Zeug wo man dem Täter auf der Spur ist. Würde mir gerne mehr davon ansehen. Möchtest du ein wenig was vom Konzept erzählen? Ist das eine Sidequest?


    Ouh man, und ich arbeite mit mehreren parallelen Events :D Mit Schleifen und Label habe ich mich noch nicht auseinandergesetzt und weiß auch nicht, ob ich die brauche. Naja, das dachte ich bei Scripts auch... Möchtest du vielleicht einen Einblick zeigen, wie du mit Schleifen und Label umgehst? Ehrlich gesagt, weiß ich gerade auch nicht wofür man Label benutzt ?(

  • Ich mag ja so Detektiv-Zeug wo man dem Täter auf der Spur ist. Würde mir gerne mehr davon ansehen. Möchtest du ein wenig was vom Konzept erzählen? Ist das eine Sidequest?


    Ouh man, und ich arbeite mit mehreren parallelen Events :D Mit Schleifen und Label habe ich mich noch nicht auseinandergesetzt und weiß auch nicht, ob ich die brauche. Naja, das dachte ich bei Scripts auch... Möchtest du vielleicht einen Einblick zeigen, wie du mit Schleifen und Label umgehst? Ehrlich gesagt, weiß ich gerade auch nicht wofür man Label benutzt ?(


    Labels sind quasi "Markierungen" innerhalb eines Events. Du kannst Labels im Event setzen und später mit "Springe zu Label" das Skript an dieser Stelle fortsetzen. Ich verwende Labels gerne in Kombination mit Schleifen. Eine Schleife wiederholt das Skript endlos, was ich z.B. nutze, um auf die Eingabe des Spielers zu warten.

    Ich habe dir vereinfacht dargestellt, wie ich das mit dem "Ermittlungsbrett" umgesetzt habe, abgesehen von der Startanimation.



    Das Event beginnt damit, dass ich das erste Label (Abfrage) setze. Dieses Label verarbeitet als Erstes die Abfrage, was passiert, wenn der Spieler die Enter-Taste drückt. Kurz gesagt: Wenn der Spieler Enter drückt, wird geprüft, welcher Text angezeigt wird (welche Variable ist gerade aktiv?). Der entsprechende Text wird dann angezeigt.


    Das Event läuft weiter, und es folgt die zweite Phase, die "Auswahl". Hier wird festgelegt, was passiert, wenn der Spieler die Pfeiltasten (links, rechts, oben, unten) drückt. Es wird bestimmt, welches Bild aktiviert wird und welche Bilder vorhanden sind. Falls das Bild nicht existiert, wird es übersprungen.


    Die dritte Phase ist eine Schleife. Diese wiederholt sich so lange, bis der Spieler erneut Enter drückt (-> Springe zu Label "Abfrage") und alles von der Schleife bis zur Abfrage erneut abgespielt wird. Alternativ kann der Spieler eine Pfeiltaste drücken (-> Springe zu Label "Auswahl"), und das Skript wird ebenfalls wieder bis zur Schleife abgespult.

    So funktioniert im Groben das Ermittlungsbrett. Dabei enthalten die Sektionen "Abfrage" und "Auswahl" viele einzelne Abfragen, die nacheinander abgearbeitet werden.


    Der große Vorteil liegt darin, dass die Eingabesektion nur einmal durchlaufen werden muss. Anschließend läuft das Event automatisch weiter und führt alles aus, was unter den jeweiligen Bedingungen passieren soll. Dies spart enorm an Rechenleistung, da, wie bereits erwähnt, nur ein paralleler Prozess dafür notwendig ist.

    Ich persönlich finde Labels sehr elegant um komplexe Events zu erstellen. Ich habe etwas gebraucht meine "Makerdenkweise" darauf auszurichten, aber irgendwann hat es klick gemacht und es läuft fast wie von alleine. Am meisten hat mir die Denkweise in "Phasen" zu arbeiten geholfen. So habe ich auch mein Kartenspiel mit nur einem Event super umsetzen können.


    Ben
    Hey zurück ich warte immer noch auf die weitern LP von Bärchi :D

    Jollo
    Ich danke dir! :) <3 Ich liebe das zeichnen und das sieht man denke ich auch in meinem Spiel sehr deutlich.

    Rinober
    Verdammt woher wusstest du das?!!?!?!? :D

  • Danke dass du es so anschaulich erklärt hast, das ist eine interessante Methode. Ich habe so eine Funktion auch schon mal erstellt, dafür hatte ich aber mehrere Events für benötigt. Es sieht erstmal etwas kompliziert aus, aber wenn man es dann versteht ist das eine übersichtliche Herangehensweise.

  • Kannst du mir ein paar typische Dinge nennen, die Plugins inkompatibel machen? Wie kann man sowas, aus deiner Sicht, am besten vermeiden und was für Dinge musstest du bisher ändern? Würde mich interessieren, damit ich das in Zukunft direkt mit beachten kann. Selbst habe ich noch nicht so viele Plugins ausprobiert und hatte daher auch noch nie Probleme.

    Ich beantworte das mal.


    - Namenskollisionen bzw. unachtsame Nutzung globaler Variablen.

    Das lässt sich leicht durch strict-mode und eine IIFE um den Code lösen (wobei ich da stattdessen gern einen try/catch-block verwende, da MV etwas Hilfe beim Anzeigen von Fehlern beim Pluginstart braucht).

    Wenn es eine JS-API gibt, dann sollte diese durch eine einzelne globale Variable mit dem Namen des Plugins erreichbar sein.


    - intransparentes Ueberschreiben von Methoden bzw. die Aenderung von Aufrufsignaturen.

    Also wenn einfach eine neue Version der Funktion eingefuegt wird und es keinen return old.apply(this, arguments);-Aufruf gibt. Ich persoenlich schreibe das auch dann so rein, wenn es weder parameter noch einen Rueckgabewert gibt, da ich nicht weiss, ob jemand anderes an der Stelle diese Regel verletzt.


    - Aenderung von Objekten aus der Spielengine selbst.

    Dies fuehrt oft zu Namenskollisionen. Man kann den Namen der Properties den Namen des Plugins voranstellen, aber ich benutze stattdessen normalerweise eine WeakMap, da ich nicht moechte, das andere an der Stelle die API meines Plugins umgehen.


    (Fuer CustomTraits wuerde ich ein concat auf das Ergebnis von Game_Actor.prototype.currentClass machen, statt das Datenarray zu aendern. Das ist erstmal sauberer und es kann ja sein, dass in den urspruenglichen Daten absichtlich Duplikate vorkommen.)


    - keine API / nicht-modifizierbare Hooks

    Die oeffentlichen Funktionen des Plugins und solche, die nuetzlich sein koennten, sollten anderen Plugins zur Verfuegung stehen. Fuer die Hooks schreibe ich normalerweise sowas hier:


    Sieht etwas nervig aus, aber dadurch koennen sich andere Plugins dann vor oder nach diesem Aufruf einklinken oder ihn deaktivieren, ohne dass etwas an meinem Plugin geaendert werden muss. (gut fuer Updates, auch die Versionierung)


    - Aenderungen am Aufrufkontext.

    Wenn man das Verhalten von Szenen anpasst, muss man z.B. auf Scene_Boot achten, da waerend dieser Szene die Spieldaten noch nicht initialisiert sind. Es kann auch bei neuen Kampfmodi solche Probleme geben, falls andere Plugins eine bestimmte Phasenreihenfolge voraussetzen.


    Man kann nicht immer alle Probleme vermeiden, aber meistens geht's ziemlich gut.

    (Das ist kein sauberes JSDoc, aber ich glaube das kriegt man bzgl. RPG Maker auch kaum 100% korrekt hin waerend der Quellcode noch lesbar ist.)

  • Tamschi vielen Dank für die ausführliche Erläuterung. Einige Dinge beachte ich bereits. Andere sind bei mir vermutlich noch nicht relevant (API und Hooks) und den Tipp mit concat werde ich berücksichtigen, wenn ich noch ein Update veröffentliche. Auf jeden Fall habe ich deinen Post mal gebookmarkt ;)


    Ansonsten habe ich vergangene Woche für meine beiden Plugins eine Seite auf itch eingerichtet und sie im offiziellen RPG Maker Forum vorgestellt. Feedback gab es dort leider gar nicht bisher, dafür aber rund 20 Downloads insgesamt. Das verbuche ich mal als kleinen Erfolg :D


    Im Moment konzentriere ich mich im Wesentlichen nur darauf die Geschichte für den Prolog und das erste Kapitel meines Spiels fertigzustellen. Was eigentlich auch schon so gut wie durch ist. Heute habe ich auch angefangen einfach die restlichen geplanten (für die beiden Kapitel) Maps zu erstellen und ganz grob zu skizzieren. Einfach damit ich vor Augen habe wie groß bzw. klein das alles jetzt ausfällt. Hab mir auch noch ein Tileset gekauft weil ich einfach weg wollte vom RTP aber auch nicht mit dem Pixeln hinterherkomme. Am Ende soll aber immer noch alles selbstgepixelt sein :D

  • Also weiter machen kannst Du in jedem Falle! :)
    Was das Mapping betrifft, so hast Du noch recht viel leere Fläche in Außenbereichen und sehr groß dimensionierte Innenbereiche. Da würde ich mich beim Mappen immer wieder auf die eigentliche Spielkamera konzentrieren und schauen, dass man stets etwas Interessantes zu sehen hat - egal, wo man sich gerade befindet. Das können (für Innenräume) ein gedeckter Tisch mit passenden Stühlen, (für außen) ein markanter Baumstamm mitten im Wald oder andere "Points of Interest" sein - also gewissermaßen Orientierungspunkte für den Spieler.

    Wenn Du kleinere Dimensionen und einen Ticken mehr Detailfülle verwendest, wird sich Dein Mapping rasch noch eine Prise spannender gestalten. :)

    Was ich aktuell bereits sehr mag, ist die Idee mit dem überhängenden Dach und auch dass Du Dich im Laden mit dem Holzboden bereits etwas ausgetobt hast, was den Einsatz verschiedener Objekte betrifft. Grafiken aus dem RTP lassen sich im geringen Maße gerne auch mal zweckentfremden bzw. grafisch leicht anpassen.
    Wenn Du mehr Inspirationen suchst, könnten auch die Sample Maps einen Blick wert sein. :)
    Dafür musst Du nur im Maptree Deiner Levels einen Rechtsklick machen und dann dementsprechend (in der deutschen Version) "Beispielkarte laden" auswählen.

    Meine Projekte:

    Hauptprojekt:Village Siege (Arbeitstitel)Tower-Defense Spiel mit kleinem TwistPrototyp: ~ 30%GDevelop
    Nebenprojekt:Misty Hollow: Makabere Abenteuer (Arbeitstitel)klassisches RPG mit einer Mischung aus Witz und GruselDemo: ~ 5%RPG Maker MZ

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!