Ergebnis 1 bis 20 von 95

Thema: Neuer RPG Maker - RPG Maker MV

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von MagicMaker Beitrag anzeigen
    Java? Das wäre ja noch schlimmer als jedes Ruby. Nein, mit HTML5/JS fahren sie da jetzt bedeutend besser
    und erreichen wahrscheinlich auch eine größere Coderschaft.


    Es gibt jetzt ein Pluginsystem, bei dem Sachen direkt an- und ausgeschaltet und Parameter angegeben
    werden können. Das wird anstrengend unübersichtliches oder nerviges Gefummel von Werten in irgendwelchen
    Scriptcodewänden hoffentlich ein für alle Mal ersetzen.
    Java ist die beliebteste Programmier-Sprache ist seit Jahren die beliebteste Programmiersprachen und ist plattformunabhängig.

    Wo siehst du da ein Problem?

  2. #2
    Zitat Zitat von Pepo Beitrag anzeigen
    Java ist die beliebteste Programmier-Sprache ist seit Jahren die beliebteste Programmiersprachen und ist plattformunabhängig.

    Wo siehst du da ein Problem?
    Java ist vlt ganz nett um ein ganzen Spiel darin zu schreiben, aber das ist nicht der Zweck des Scriptinteraces des Makers.
    Das Scriptinterface ist dazu gedacht kleine Plugins, Änderungen etc zu ermöglichen.
    In Ruby und JS kann man zB ohne Probleme ein neues Script hinzufügen, welches vorhandene Methoden einer Klasse überschreiben und oder hinzufügen kann - auch wenn die Klasse ganz woanders definiert wurde.
    Ein neues Script kann so zB einige Aspekte des Menüs ändern, ohne das Menüsystem komplett neu schreiben zu müssen.
    In Java geht das hingegen nicht, da muss die gesamte Klassendefinition in einer einzigen Datei stehen.

  3. #3
    Dafür gibt es in Java abstrakte Klassen und Interfaces, welche das ermöglichen .

    Aber da scheiden sich wohl die Geister und was wirklich praktikabler ist würde sich meiner Meinung nach erst bei einem Vergleich zeigen.

    Geändert von Pepo (26.08.2015 um 20:30 Uhr)

  4. #4
    Zitat Zitat von Shining Beitrag anzeigen
    Java ist vlt ganz nett um ein ganzen Spiel darin zu schreiben, aber das ist nicht der Zweck des Scriptinteraces des Makers.
    Das Scriptinterface ist dazu gedacht kleine Plugins, Änderungen etc zu ermöglichen.
    In Ruby und JS kann man zB ohne Probleme ein neues Script hinzufügen, welches vorhandene Methoden einer Klasse überschreiben und oder hinzufügen kann - auch wenn die Klasse ganz woanders definiert wurde.
    Ein neues Script kann so zB einige Aspekte des Menüs ändern, ohne das Menüsystem komplett neu schreiben zu müssen.
    In Java geht das hingegen nicht, da muss die gesamte Klassendefinition in einer einzigen Datei stehen.
    Wie bitte?
    In Java geht so ziemlich alles. Sogar Kompilieren zur Laufzeit und das dynamische Erzeugen von Klassen und Methoden.
    Alles was eine Scriptsprache kann, kann eine kompilierte Sprache ebenfalls, allerdings tut man es mit kompilierten Sprachen oftmals nicht, weil es als hässliches Design betrachtet wird.
    Aber wo ein Wille ist, ist auch ein Weg.

  5. #5
    Etwas offtopic, da es nicht mehr um den MV geht, aber ich möchte jetzt wirklich etwas dazu lernen.
    Erklärt mir mal (ggf per pn), wie ihr folgendes Problem in Java lösen würdet.

    Angenommen wir haben folgendes vorhandenes Skript:
    (zunächst Ruby)
    Code:
    class GameActor
    	[...]
    	def speed
    		[...]
    	end
    end
    Ich möchte die Formel für die Geschwindigkeit ändern. Da das ganze ein Plugin werden soll, will ich nicht bereits bestehenden Code verändern, sondern nur neuen hinzufügen.
    Desweiteren gibt es ja vielleicht mehrere verschiedene Plugins, die beide die Klasse GameActor manipulieren sollen, ich kann also auch nicht einfach die Klasse GameActor durch eine neue ersetzen.
    In Ruby reicht ein neues Script mit
    Code:
    class GameActor
    	def speed
    		neuer kram
    	end
    end
    dadurch wird nur die speed Methode überschrieben.

    Wie würde man soetwas in Java lösen?

    Vergleichbare Klasse in Java:
    Code:
    public class GameActor {
    	[...]
    	public int getSpeed() {
    		[...]
    	}
    }
    Mein erster Ansatz wäre wie Pepo Vererbung zu benutzen. zB
    Code:
    public class MyGameActor extends GameActor {
    	public int getSpeed() {
    		[...]
    	}
    }
    Jetzt muss ich aber überall, wo ein GameActor Objekt erzeugt wird, stattdessen ein MyGameActor Objekt erzeugen.
    Ich muss also doch bereits bestehenden Code verändern. Außerdem habe ich nun das Problem, dass bei verschiedenen Plugins, die die Klasse verändern, jedes Plugin eine eigene Unterklasse von GameActor verwenden will.

    Was für andere Wege Methoden zu ersetzen gibt es? Ich weiß man kann auf Methoden von Klassen zugreifen, ich kenne aber keinen Weg, sie direkt zu ersetzen.
    Code:
    Method speed = GameActor.getMethod("getSpeed")
    setMethod gibts ja leider nicht...

  6. #6
    Erstens: Was du in Ruby getan hast ist grauenvolles Design und es wird dir von jedem erfahrenen Programmierer davon abgeraten werden soetwas zu tun. Vorhandenen Code von einer anderen Stelle aus zu überschreiben verstößt gegen alle Arten von Regeln guter Programmierung.

    Wenn du es allerdings in Java tun willst, dann kannst du, zum Beispiel, Byte-Code Injection verwenden um den vorhandenen Byte-Code deiner GameActor Klasse mit beliebigem anderen Code zu überschreiben. Du wirst aber nirgendwo Freunde mit soetwas finden. Falls du jemals ein Portfolio für mögliche Arbeitgeber zusammenstellen möchtest würde dir solch ein Code wahrscheinlich sofort Tür und Tor versperren.

    Ganz Nebenbei:
    Alles geht beim Programmieren. Es gibt keine Naturgesetze die uns an irgendetwas hindern. Du hast zu jedem Zeitpunkt die vollständige Kontrolle über deine Hardware; du kannst den Speicherplatz beliebig beschreiben. Am Ende sind alles nur Bits und Bytes.

  7. #7
    Es ist ja auch nicht so, dass im Beispiel oben die Methode speed erweitert wird, sie wird komplett überschrieben. Wenn nun ein neues Plugin eingebunden wird, das wieder eine andere speed-Methode hat, dann wird die Methode nochmal überschrieben. Es kann immer nur eine Speed-Methode geben. Was würde es schaden, die Methode direkt in Game Actor umzuschreiben?

  8. #8
    Zitat Zitat
    Erstens: Was du in Ruby getan hast ist grauenvolles Design und es wird dir von jedem erfahrenen Programmierer davon abgeraten werden soetwas zu tun. Vorhandenen Code von einer anderen Stelle aus zu überschreiben verstößt gegen alle Arten von Regeln guter Programmierung.
    Zitat Zitat
    Was würde es schaden, die Methode direkt in Game Actor umzuschreiben?
    Es geht um Plugins, also Code den du zB hier im Forum posten kannst und jemand ohne Ahnung einfach in sein Spiel kopieren kann - das klassische "erstelle ein neues Skript über Main und füge das hier ein".
    Mein Beispiel ist da natürlich extrem simpel. Stellt euch ein komplexeres Skript vor, dass viele standard Klassen verändert. Ziel ist es doch ein einfaches Plugin System zu haben, bei dem man eben nicht an 5 verschiedenen Stellen etwas ändern muss.

  9. #9
    Dann müssen einfach die entsprechenden Standardklassen derart designed werden, dass man soetwas wie Plugins angenehm einfach verwenden kann.
    Was du in Ruby machst ist in der Software-Entwicklung verpönt. Aber im RPG-Maker bist du mehr oder minder dazu gezwungen, weil der Code der Standardklassen unter aller Sau ist. (Vielleicht ein bisschen übertrieben, aber der Code ist dennoch ziemlich schlecht)

    Wenn du ein gutes System haben möchtest, welches Plugins unterstützt, dann würdest du eine ordentliche Klassenhierarchy mit Factories und Delegation aufbauen um alle einzelnen Bestandteile modular austauschen zu können. Allerdings muss man dafür etwas mehr als minimale Programmierkenntnisse besitzen, also schätze ich soetwas ist für die Entwickler des RPG-Makers zu viel.

  10. #10
    Zitat Zitat von Cornix Beitrag anzeigen
    Aber im RPG-Maker bist du mehr oder minder dazu gezwungen, weil der Code der Standardklassen unter aller Sau ist. (Vielleicht ein bisschen übertrieben, aber der Code ist dennoch ziemlich schlecht).
    Dafür aber sauber auskommentiert, was ich für wichtiger halte.

    So kann ich den Code verstehen. Aber ich habe mich entschieden z. B. mein Spiel eh komplett über Events laufen zu lassen, da ich keine Lust habe mich nochmal neu in Ruby bzw. die Feiheiten von RGSS3 einzuarbeiten.

    Klar, so was wie eine Hypoth-Funktion bzw. allgemein eine Wurzel wird schmerzhaft vermisst aber da ja nicht alles 100 % korrekt in einem RPG-Maker-Spiel laufen muss kann man da super irgend nen Quark runterscripten der halt läuft und Ergebnisse im richtigen Bereich liefert.

    Guter Code? Nein! Spaß beim "Spiel machen"? Ja!

    Und für ein Hobby-Projekt auch voll ok.

    PS: Sorry für´s Offtopic.


  11. #11
    Zitat Zitat von Pepo Beitrag anzeigen
    Dafür aber sauber auskommentiert, was ich für wichtiger halte.
    Eh? "Sauber auskommentiert" mag Ansichtssache sein, mMn zählen die Kommentare im RPG Maker mit zu den unnützesten überhaupt, weil sie fast nie genutzt werden, um Code zu erklären, sondern oft - manchmal wortwörtlich - wiederholen was als Code schon da steht.
    Im Ace wurde das reduziert, aber im XP (und vermutlich auch im VX), wo scheinbar krampfhaft versucht wurde wirklich jeder Zeile einen Kommentar zu verpassen, findet sich zuhauf Blödsinn wie das hier:
    Code:
    def moveto(x, y)
      super
      # Centering
      center(x, y)
      # Make encounter count
      make_encounter_count
    end

  12. #12
    Exakt. Die Kommentare im RPG-Maker (zumindest im XP) sind die absoluten Anti-Kommentare. Sie verbessern den Code nicht, ganz im Gegenteil, sie machen die Qualität des Codes sogar schlechter.

  13. #13
    Zitat Zitat von Cornix Beitrag anzeigen
    Exakt. Die Kommentare im RPG-Maker (zumindest im XP) sind die absoluten Anti-Kommentare. Sie verbessern den Code nicht, ganz im Gegenteil, sie machen die Qualität des Codes sogar schlechter.
    Ich besitze den Ace und da waren die Kommentare zumindest aus meiner subjektiven Sicht gut, da ich mit ihnen den Code schnell nachvollziehen konnte.

  14. #14
    Das kann sein. Es sollte nicht schwer sein bessere Kommentare als im XP zu schreiben wenn man bedenkt, wie schwer es sein muss schlechtere Kommentare schreiben zu können.

Stichworte

Berechtigungen

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