[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
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
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.
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.
[...]
Meine Kernfragen sind nun:
1. Kann ich die Durchsichtigkeit des Auswahlmenüs (Neues Spiel, Laden, Beenden) im Titelbildschirm verändern?
...
Sehr einfach.
Zitat von Knopey
2. Kann ich das Fenster des selben Menüs auch verbreitern?
...
Sehr einfach.
Zitat von Knopey
3. Kann ich Schrift im Titelbild hinzufügen (ohne extra Grafiken anzufertigen)?
...
Sehr einfach.
Zitat von Knopey
4. Kann ich zum Beispiel Wettereffekte integrieren?
...
Relativ kompliziert.
Zitat von Knopey
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:
Wenn du bei diesem Bild die Transparenz ändern willst so musst du lediglich folgende Zeile am Ende hinzufügen:
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:
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:
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:
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:
Wäre das Fenster etwas breiter.
Du kannst die Position des Fensters mit den beiden Zeilen darunter verändern, diejenigen welche:
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:
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:
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:
Ich hoffe das konnte dir helfen, auf den Wettereffekt kann ich leider nicht eingehen, da ich mit dem VX noch nie wirklich gearbeitet habe.
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
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:
Ü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:
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 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:
Sollte zumindest so funktionieren, habe den RMVX lange nicht mehr ausprobiert
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?
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.
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.
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.
#--------------------------------------------------------------------------
# * 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:
#--------------------------------------------------------------------------
# * 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
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