Ergebnis 1 bis 12 von 12

Thema: [RPG-Maker VX] Title Screen - Schlicht aber nicht Default?

  1. #1

    [RPG-Maker VX] Title Screen - Schlicht aber nicht Default?

    Man will es schlicht.
    Klar möchte ein jeder heute für sein Spiel einen individuellen Titelbildschirm haben. Und das "Scripten" in den neueren RPG-Maker-Generationen bietet dafür auch eine hervorragende Grundlage. Aber für meine Zwecke sind selbst erstellte Grafiken, alternative Fonts und bunte Hintergrundbilder zu viel des Guten.
    Ich möchte einen schlichten Titelbildschirm, der jedoch nicht sofort an den langweiligen Standard "RPG-Maker-VX-hübsche-Häuser-und-blauer-Himmel"-Bildschirm erinnert. Leider stoße ich da viel zu schnell an meine Grenzen. Denn ich weiß, ich muss scripten und, na ja, der einzige Maker, den ich bisher je ernsthaft benutzt habe, war der RM2K.
    Leider finde ich im ganzen Internet auf jeder Sprache, die ich verstehe, keine Skripte, Tutorials, etc., die auf meine bescheidenen Wünsche eingehen.

    Meine Kernfragen sind nun:
    1. Kann ich die Durchsichtigkeit des Auswahlmenüs (Neues Spiel, Laden, Beenden) im Titelbildschirm verändern?
    2. Kann ich das Fenster des selben Menüs auch verbreitern?
    3. Kann ich Schrift im Titelbild hinzufügen (ohne extra Grafiken anzufertigen)?
    4. Kann ich zum Beispiel Wettereffekte integrieren?
    5. Kann ich die Sichtbarkeit des Hintergrundbildes verändern?

    Für alle vier Fragen gilt: "Wenn ja, wie?"
    Und am besten wär der Sache gedient, wenn keine externen Ressourcen hierzu benötigt würden.

    Geändert von Knopey (28.09.2012 um 08:48 Uhr) Grund: Flüchtigkeitsfehler, man kommt nicht drum herum

  2. #2
    Deine Wünsche sind alles andere als Bescheiden, sondern ein erheblicher eingriff in die Engine. Insbesondere deine Wettereffekte.

    Aber dennoch:

    Tatsache 1: Möglich ist (fast) alles.
    Tatsache 2: Du wirst auf der ganzen Welt kein Tutorial finden, das dir erklärt, wie du mit einer Programiersprache, die du nicht kannst, an einem System, das du nicht kennst, änderungen vornehmen kannst, um dein gewünschtes ergebniss zu bekommen.


    Unter dem Strich hast du also nur 2 Möglichkeiten:

    Entweder du lernst richtig Ruby ... mit Einstiegstotorials von klein auf. Oder du benutz bereits existierende Scripts, auch wenn diese "extern" sind. Von Moghunter gibt es beispielsweise eines für den VX.
    http://www.atelier-rgss.com/RGSS/RGSS_VX.html

    Geändert von caesa_andy (28.09.2012 um 11:09 Uhr)

  3. #3
    Noooüüüüüün!!!
    War ja klar, dass so etwas kommen musste.
    Nun ja, die Wettereffekte wären ja nicht notwendig. Aber nun gut, ich danke trotzdem.
    Mal schauen, wie ich mich herantasten werde. Vermutlich nehm ich mir die Zeit für einen Ruby-Lehrgang.

  4. #4
    Was genau hast du denn erwartet? Das irgendwer ein Tutorial geschrieben hat in welchem drinsteht, wie dein Quellcode auszusehen hat? Dann kann der jenige auch gleich den Quellcode öffentlich machen, dass ist dasselbe.

    Das ist, als wenn du fragst, ob es ein Tutorial gibt, in welchem drinsteht, wie man als Deutscher ohne Chinesisch-Kentnisse einen Roman auf Chinesisch schreibt.

  5. #5
    Zitat Zitat von Knopey Beitrag anzeigen
    [...]
    Meine Kernfragen sind nun:
    1. Kann ich die Durchsichtigkeit des Auswahlmenüs (Neues Spiel, Laden, Beenden) im Titelbildschirm verändern?
    Sehr einfach.

    Zitat Zitat von Knopey Beitrag anzeigen
    2. Kann ich das Fenster des selben Menüs auch verbreitern?
    Sehr einfach.

    Zitat Zitat von Knopey Beitrag anzeigen
    3. Kann ich Schrift im Titelbild hinzufügen (ohne extra Grafiken anzufertigen)?
    Sehr einfach.

    Zitat Zitat von Knopey Beitrag anzeigen
    4. Kann ich zum Beispiel Wettereffekte integrieren?
    Relativ kompliziert.

    Zitat Zitat von Knopey Beitrag anzeigen
    5. Kann ich die Sichtbarkeit des Hintergrundbildes verändern?
    Was genau meinst du mit Sichtbarkeit? Transparenz? In dem Falle sehr einfach.

    Du verwendest den VX, nicht den VX-Ace, richtig?
    Den Ace habe ich nämlich nicht, bei dem VX allerdings kann ich dir weiterhelfen:

    Zuallererst musst du in deinem Projekt den Scripteditor öffnen und das Script suchen mit dem Namen: "Scene_Title", alle Veränderungen müssen wir hieran vornehmen.

    Das hier ist die Stelle im Script welche die Hintergrundgrafik für den Titelbildschirm setzt:
    Code:
    def create_title_graphic
        @sprite = Sprite.new
        @sprite.bitmap = Cache.system("Title")
      end
    Wenn du bei diesem Bild die Transparenz ändern willst so musst du lediglich folgende Zeile am Ende hinzufügen:
    Code:
    @sprite.opacity = 128
    Das würde die Transparenz des Hintergrundbildes auf 50% setzen. Der Wert muss eine ganze Zahl zwischen 0 und 255 sein wobei 0 völlig unsichtbar und 255 völlig sichtbar bedeutet.

    Der einfachste Weg Text auf dem Titelbildschirm hinzuzufügen wäre es meiner Meinung nach ihn direkt auf das Bild zeichnen zu lassen:
    Code:
    def create_title_graphic
        @sprite = Sprite.new
        @sprite.bitmap = Cache.system("Title")
        @sprite.bitmap.font.name = "Arial"
        @sprite.bitmap.font.size = 22
        @sprite.bitmap.font.color = Color.new(255, 0, 0, 255)
        @sprite.bitmap.font.bold = true
        @sprite.bitmap.font.italic = false
        @sprite.bitmap.draw_text(0,0,256,24,"Hallo Welt", 1)
      end
    Dieser kleine Abschnitt hier würde folgendes machen:
    Als font wird Arial verwendet mit einer Schriftgröße von 22, gezeichnet wird in der Farbe Rot (RGBA 255, 0, 0, 255) und zwar fett, aber nicht kursiv.
    Dann wird an dem Punkt (0 / 0) (linke obere Bildschirmecke) ein 256x24 Großes Rechteck gewählt und der Text Hallo Welt mittig hineingeschrieben so gut es geht.
    Die ganzen Aktionen mit dem Font kannst du auch weglassen, ich habe sie nur mit eingefügt um dir zu zeigen, was alles möglich ist.
    Die Funktion "draw_text(...)" hat folgende Syntax:
    1. Parameter: X-Position des Textes
    2. Parameter: Y-Position des Textes
    3. Parameter: Breite des Rechteckes in welches geschrieben werden soll
    4. Parameter: Höhe des Rechteckes in welches geschrieben werden soll
    5. Parameter: Text welcher geschrieben werden soll
    6. Parameter: Alignment: 0 == Linksbündig, 1 == Zentriert, 2 == Rechtsbündig

    Um das Kommandofenster durchsichtig zu machen musst du folgenden Code verändern:
    Code:
    def create_command_window
        s1 = Vocab::new_game
        s2 = Vocab::continue
        s3 = Vocab::shutdown
        @command_window = Window_Command.new(172, [s1, s2, s3])
        @command_window.x = (544 - @command_window.width) / 2
        @command_window.y = 288
        if @continue_enabled                    # If continue is enabled
          @command_window.index = 1             # Move cursor over command
        else                                    # If disabled
          @command_window.draw_item(1, false)   # Make command semi-transparent
        end
        @command_window.openness = 0
        @command_window.open
      end
    Das ist der Standardcode für das Command-Window, also das Fenster mit den Auswahlmöglichkeiten.
    Um die Breite des Fensters zu ändern musst du auf folgende Zeile achten:
    Code:
    @command_window = Window_Command.new(172, [s1, s2, s3])
    Hiermit wird das Fenster erstellt und der erste Parameter im Konstruktor gibt die Breite an, in diesem Fall die 172 als Standardwert. Wenn du diese Zeile nun, zum Beispiel, in folgende ändern würdest:
    Code:
    @command_window = Window_Command.new(300, [s1, s2, s3])
    Wäre das Fenster etwas breiter.
    Du kannst die Position des Fensters mit den beiden Zeilen darunter verändern, diejenigen welche:
    Code:
        @command_window.x = (544 - @command_window.width) / 2
        @command_window.y = 288
    lauten. Hier hast du zugriff auf die X- und Y-Koordinaten des Fensters (die linke obere Ecke des Bildschirms ist 0,0).
    Wenn du diese Zeilen zum Beispiel wie folgt änderst:
    Code:
        @command_window.x = 0
        @command_window.y = 0
    Ist das Fenster ganz oben Links.

    Um die Durchsichtigkeit des Fensters zu ändern musst du auch nicht sehr viel machen, folgende Zeilen kannst du an dem Code hinzufügen:
    Code:
    @command_window.contents_opacity = 128
    @command_window.back_opacity = 128
    Die erste Zeile würde die Durchsichtigkeit des Fensterinhalts, also der Schrift, setzen. Wie auch bei dem Bild, oben beschrieben, auf 50%. (Werte zwischen 0 == unsichtbar und 255 == vollkommen sichtbar.)
    Die zweite Zeile würde die Durchsichtigkeit des Fensters an sich auf 50% setzen. Auch hier gelten für die Werte die gleichen regeln.

    Im ganzen könnte der Code dann wie folgt aussehen:
    Code:
    def create_command_window
        s1 = Vocab::new_game
        s2 = Vocab::continue
        s3 = Vocab::shutdown
        @command_window = Window_Command.new(172, [s1, s2, s3])
        @command_window.x = (544 - @command_window.width) / 2
        @command_window.y = 288
        if @continue_enabled                    # If continue is enabled
          @command_window.index = 1             # Move cursor over command
        else                                    # If disabled
          @command_window.draw_item(1, false)   # Make command semi-transparent
        end
        @command_window.openness = 0
        @command_window.open
        @command_window.contents_opacity = 224
        @command_window.back_opacity = 128
      end
    Ich hoffe das konnte dir helfen, auf den Wettereffekt kann ich leider nicht eingehen, da ich mit dem VX noch nie wirklich gearbeitet habe.

  6. #6
    caesa_andy, danke für deine Antwort aber mal abgesehen davon, dass der Vergleich irgendwie so gar nicht zutreffend ist, habe ich mir genau das Gleiche gedacht, und das Internet durchforstet, um zu sehen, ob jemand etwas Derartiges veröffentlicht hat. Leider vergebens, also dachte ich mir, fragen kostet bekanntlich nichts. Und siehe da - ein Post unter deinem kommt genau das, was ich mit erhofft habe.

    Tausend Dank, Cornix! Ich wende deinen Support direkt morgen mal an. Das Wetterzeug wäre nur hübscher Schnickschnack gewesen, geht auch gut ohne
    Plausibel, super erklärt und leicht verständlich. Danke noch mal

  7. #7
    Zum Wettereffekt:
    Allzu schwer ist der Effekt nicht einzufügen, da dazu bereits eine passende Klasse existiert: Spriteset_Weather.
    Um den Wettereffekt einzubinden sind letztlich nur noch folgende Schritte nötig:

    1. Beim Start des Titelmenüs muss ein neues "Spriteset_Weather" erzeugt und in einer Variablen gespeichert werden.
    Dazu muss in der Methode "start" in Scene_Title folgende Zeile eingefügt werden:
    Code:
    @wettereffekt = Spriteset_Weather.new
    Über die gewählte Variable (hier @wettereffekt) kann anschließend auf das neue Objekt zugegriffen werden.
    Da der Wettereffekt, die Hintergrundgrafik und das Kommandofenster standardmäßig die selbe Priorität (z-Koordinate) haben sollte diese Zeile zwischen create_title_graphic und create_command_window eingefügt werden.


    2. Für einen Wettereffekt können Wettertyp und Wetterstärke eingestellt werden. Dazu können nach der Erstellung folgende Aufrufe getätigt werden:
    Code:
    @wettereffekt.type = 1          # <- 0: kein Wetter, 1: Regen, 2: Sturm, 3: Schneefall  -  in diesem Fall wurde Regen gewählt
    @wettereffekt.max = 25          # <- Wetterstärke: hier darf eine ganze Zahl zwischen 0 und 40 gewählt werden
    3. Damit der Wettereffekt auch animiert ist und nicht fest auf dem Bildschirm klebt muss die Wetterbewegung aktualisiert werden.
    Auch hier nimmt dir das Spriteset_Weather fast alle Arbeit ab, es muss nur jedes Mal
    Code:
    @wettereffekt.update
    aufgerufen werden wenn sich die Animation weiterbewegen soll. Damit das regelmäßig passiert sollte diese Zeile in die update-Methode von Scene_Title eingefügt werden (wird regelmäßig aufgerufen).

    4. Wird das Titelmenü beendet sollte saubererweise auch der Wettereffekt beendet werden.
    Dazu sollte in der terminate-Methode von Scene_Title folgende Zeile eingefügt werden:
    Code:
    @wettereffekt.dispose
    Sollte zumindest so funktionieren, habe den RMVX lange nicht mehr ausprobiert

    Geändert von ETeCe (29.09.2012 um 11:19 Uhr)

  8. #8
    Spitze, danke. Hab jetzt alles, was ihr dankenswerterweise so übersichtlich aufgeschrieben habt, mal angewandt. Vieles funktioniert auch.
    Nur leider wirkt die Veränderung der sprite.opacity für den Titelhintergrund nicht in Kombination mit dem gezeichneten Text. Einzeln funktioniert beides. Wende ich aber beides an, bleibt der Hintergrund einfach so vollständig sichtbar.

    Leider passiert beim Einfügen der Zeilen für den Wettereffekt jar nüscht. Die Variable (der Code unter 1. deines Posts) habe ich in "Start Processing", unmittelbar gefolgt vom Code unter 2. Den Update (unter 3.) habe ich in "Frame Update" eingefügt. Und der Code aus 4. ist in Termination Processing hinterlegt. Ich vermute ja, dass ich die Variable an der falschen Stelle gesetzt habe, aber wo wäre sie richtig gewesen?

  9. #9
    Könntest du vielleicht den kompletten, von dir veränderten, Code einmal hier schreiben damit wir darüberschauen können? Vor allem besagte, nicht funktionierende, Codestellen.

  10. #10
    Klar. Habe den Code mal übernommen und Abschnitte, in denen ich Änderungen vorgenommen hab, rot markiert. Alles in allem lautet das Script Scene_Title:

    (Der Code ist versteckt im Spoiler)

    Die Sektion "Draw Text on Title Screen" hab ich selber hinzugefügt, der Übersicht halber.

  11. #11
    Dein Problem mit der Transparenz und dem Text liegt daran, dass du zwei Funktionen verwendest welche beide den selben Namen tragen.
    Dadurch wird eine Funktion von der anderen überschrieben. Das bedeutet, dass ihre Funktionen natürlich nicht ausgeführt werden können.

    Code:
      #--------------------------------------------------------------------------
      # * Create Title Graphic
      #--------------------------------------------------------------------------
      def create_title_graphic
        @sprite = Sprite.new
        @sprite.bitmap = Cache.system("Title")
         @sprite.opacity = 128
      end
      #--------------------------------------------------------------------------
      # * Draw Text on Title Screen
      #--------------------------------------------------------------------------
      def create_title_graphic
        @sprite = Sprite.new
        @sprite.bitmap = Cache.system("Title")
        @sprite.bitmap.font.name = "Arial"
        @sprite.bitmap.font.size = 50
        @sprite.bitmap.font.color = Color.new(255, 0, 0, 255)
        @sprite.bitmap.font.bold = true
        @sprite.bitmap.font.italic = true
        @sprite.bitmap.draw_text(0,0, 512,256,"Cornix und ETeCe, vielen Dank für eure Hilfe! :)", 1)
      end
    Das hier ist der böse Abschnitt.
    Du musst das ganze wie folgt ändern:
    Code:
      #--------------------------------------------------------------------------
      # * Create Title Graphic
      #--------------------------------------------------------------------------
      def create_title_graphic
        @sprite = Sprite.new
        @sprite.bitmap = Cache.system("Title")
        @sprite.opacity = 128
        @sprite.bitmap.font.name = "Arial"
        @sprite.bitmap.font.size = 50
        @sprite.bitmap.font.color = Color.new(255, 0, 0, 255)
        @sprite.bitmap.font.bold = true
        @sprite.bitmap.font.italic = true
        @sprite.bitmap.draw_text(0,0, 512,256,"Cornix und ETeCe, vielen Dank für eure Hilfe! :)", 1)
      end
    Nun sollte es auch funktionieren.

  12. #12
    So was hab ich mir schon gedacht. Ich habe daraufhin dann einfach den Namen des Textes von "Sprite.new" in Xyz.new geändert. Dann kam nur leider eine Fehlermeldung und das Spiel wurde beendet :P
    Hab das jetzt noch mal nach deinen Angaben korrigiert, und es klappt

Berechtigungen

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