Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • Playm

    RPG Studio Webmaster

    Sie müssen sich registrieren, um eine Verbindung mit diesem Benutzer herzustellen.

313

Lifehack: Rubyhacker sein

Bewertung:

Von Playm, Sonntag, 17. September 2017, 08:00

Automatisieren ist die Idee den Computer für dich einfache (aber langweilige) Aufgaben erledigen zu lassen, damit du mehr Zeit hast dich zu langweilen und lustige Bilder im Internet anzugucken. Für mich war so eine Aufgabe heute mal wieder ein Raster zu malen. Also abwechselnd schwarze und weiße Quadrate auf ein Bild zu zeichnen.

Ab und zu erstelle ich mal ein Tileset für den RPG Maker - Like, wer es kennt Freunde - und ich habe es mir angewöhnt in den Hintergrund ein Raster zu legen, damit ich direkt sehe wo die Grenzen eines Tiles sitzen und wie ich die Objekte innerhalb der Tiles positioniert habe. (Ja, manche Grafikprogramme können das von selbst, aber meins nicht - okay?)
Nun stellt sich die Frage: Wie macht man das? Naja. Ich muss zugeben, oft male ich halt tatsächlich zwei oder vier Quadrate und fülle dann mit Kopieren und Einfügen das Bild mit weiteren Quadraten. Aber nicht heute! Nein, heute habe ich mir gesagt: Das ist zu stumpf. Das macht der Computer jetzt!

Hm, ja okay und jetzt blogge ich darüber, weil ich finde es gibt viel zu wenig Developerblogs, die erzählen auf welche kreative Weise man die Probleme des Entwickleralltags lösen kann.

Was brauch ich dafür?
Naja, man muss dem Computer ja irgendwie Anweisungen geben also währe eine Programmiersprache nicht schlecht. Und weil Automatisierung meiner Meinung nach etwas sehr organisches ist und man es gerne schnell mal auf neue Begebenheiten anpassen möchte, würde ich eine Skriptsprache nehmen und nichts, was man erst compilieren muss. (Wie es zum Beispiel bei der Programiersprache C oder Java der Fall ist.)

Programmiersprache
Als Liebhaber des RPG Maker XP empfehle ich als Skriptsprache natürlich :ruby: Ruby. Auf einem Mac oder Linuxrechner ist Ruby in der Regel schon vorinstalliert. Auf einem Windowsrechner könnt ihr das mit einem Installer schnell nachholen. Nachdem das erledigt ist, kommt der coole Hackerteil, wo man mit der Konsole (auch "CMD" oder "Eingabeaufforderung" genannt) arbeitet. Wenn ihr einen Windows7-PC habt, findet ihr die unter Start->Alle Programme->Zubehör->Eingabeaufforderung. Wenn ihr Windows 8 oder 10 habt, einfach mal in die Suche "CMD" oder "Eingabeaufforderung" eintragen.

Ihr bekommt ein schwarzes Fenster wo ihr mal "ruby --version" eintippen könnt (nur echt mit zwei Bindestrichen) und dann mit Enter bestätigt. Wenn ihr Ruby installiert habt, steht dann da sowas in der Art:

Zitat von »CMD«

ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32]
Je nachdem, auf welchem Betriebssystem ihr Ruby installiert habt steht da halt leicht was anderes.

Auch wenn ihr es vom RPG Maker RGSS gewöhnt seid, bringt Ruby selber in den Standardmodulen keine Möglichkeit mit Bitmaps zu erstellen und zu speichern. Mein Liebling für sowas ist ChunkyPNG. Damit könnt ihr leicht Bilder erstellen und als PNG abspeichern. Ein wunderschönes Modul.

ChunkyPNG
Ihr solltet euch diese Ruby Library installieren. Das funktioniert ganz einfach. Habt ihr eure Konsole (bzw. CMD, bzw. Eingabeaufforderung) noch offen? Gebt da mal folgendes ein:

Quellcode

1
gem install chunky_png

Es sollte folgende Meldung erscheinen:

Zitat von »CMD«

Successfully installed chunky_png-1.3.8
Parsing documentation for chunky_png-1.3.8
Done installing documentation for chunky_png after 2 seconds
1 gem installed


Automatisierung programmieren
Okay. Wir haben jetzt alles an der Hand, um in Zukunft nie wieder selber Raster malen zu müssen. Jetzt müssen wir dem Computer nurnoch sagen, was wir von ihm wollen. Das Hacken kann los gehen!

Kurze Einführung: Bilder erstellen mit ChunkyPNG
Starten wir direkt mit einem praktischen Beispiel. Wir wollen mal einfach ein Rechteck zeichnen und das Bild speichern.

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
require 'chunky_png'
 
# Erzeuge ein 100*100 Pixel großes Bild mit weißem Hintergrund
png = ChunkyPNG::Image.new( 100, 100, ChunkyPNG::Color::WHITE)
 
# Male ein Rechteck auf das Bild
png.rect(10, 10, # Startpunkt (10|10)
         60, 40, # Endpunkt   (60|40)
         stroke_color = ChunkyPNG::Color::BLACK,
         fill_color = ChunkyPNG::Color::TRANSPARENT)
 
# Speichere das Bild ab
png.save('Mein Bild.png', :interlace => true)

Ihr könnt den Code einfach mal in euren Texteditor kopieren und als example.rb speichern. Das Konsolenfenster noch offen? Jetzt navigiert mit der Konsole in den Ordner in dem das Script liegt. (Ordner per CMD wechseln - so geht's) Dort gebt ihr dann

Quellcode

1
ruby example.rb
in die Konsole ein.

Wenn ihr bis hierhin nichts falsch gemacht habt, erscheint im Ordner jetzt eine neue Datei: Euer erstes eigenes Bild ist da! Spielt gerne mal mit dem Skript rum. Verändert ein paar der Zahlen oder warum nicht mal coole eigene Farben?

Ruby Quellcode

7
8
9
10
png.rect(10, 10, # Startpunkt (10|10)
         60, 40, # Endpunkt   (60|40)
         stroke_color = ChunkyPNG::Color.rgb(124,252,0),
         fill_color = ChunkyPNG::Color.rgb(240,255,240))


Was kann ChunkyPNG alles?
Es erstellt und speichert PNGs. Das kann es sehr gut. Aber es bietet selber keine großen Werkzeuge, um Bilder zu gestalten. Es kann sehr gut mit PNG-Dateien umgehen. Es kann auf PNG-Bilder gerade und geschwungene Linien malen und zwei Bilder übereinander legen. Das war es eigentlich. Aber für die Automatisierung ist es genau richtig.

Fertiges Skript
Hier mein Skript was ich benutze, um mir meine Raster zu malen:
Spoiler

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
require 'chunky_png'
#------------------------------------------------------------------------------
# Options
#------------------------------------------------------------------------------
tile_size        = 48 # Tiledimension in Pixel (24*24 or 32*32 or 48*48)
tiles_per_row    = 16 # How many tiles per row - so that is the column count
tiles_per_column = 16 # How many tiles per column - so that is the row count :D
color1 = ChunkyPNG::Color::BLACK
color2 = ChunkyPNG::Color::WHITE
#------------------------------------------------------------------------------
# Creating an image from scratch, save as an interlaced PNG
#------------------------------------------------------------------------------
png = ChunkyPNG::Image.new(tiles_per_row*tile_size,      # width
                           tiles_per_column*tile_size,   # height
                           ChunkyPNG::Color::TRANSPARENT # background color
                          )
#------------------------------------------------------------------------------
# Draw raster on image
#------------------------------------------------------------------------------
for x in 0..tiles_per_row
  for y in 0..tiles_per_column
    dx = x * tile_size
    dy = y * tile_size
    if x % 2 == 0
      color = (y % 2 == 0) ? ChunkyPNG::Color::BLACK : ChunkyPNG::Color::WHITE
    else
      color = (y % 2 == 0) ? ChunkyPNG::Color::WHITE : ChunkyPNG::Color::BLACK
    end
    png.rect(dx, dy, dx + tile_size, dy+tile_size, stroke_color = color, fill_color = color)
  end
end
#------------------------------------------------------------------------------
# save image and terminate
#------------------------------------------------------------------------------
png.save('raster.png', :interlace => true)
Englische Kommentare für meine internationale Leserschaft. <3
zum Lesen den Text mit der Maus markieren


Vielleicht mag es einer von euch ja auch verwenden.

Fazit
Das Beste an der Automatisierung, ist den Code zusammen zu hacken und das Gefühl, wenn man in der Konsole den Rubyinterpreter startet und am Ende was eigenes rauskommt. Ich mache mich jetzt an mein Tileset dran und euch noch einen schönen Tag. :hi:

Dieser Artikel wurde bereits 61 mal gelesen.


Kommentare (3)

  • 3

    Von Josey (Mittwoch, 20. September 2017, 16:18)

    Ich denke seit gestern drüber nach, aber mir fällt da nichts ein. Ich wär ja schon nicht auf das Kästchenzeichnen gekommen XD
    Programme die viele Dateien umbenennen oder umwandeln oder Tags einstellen gibt es schon und ansonsten benutze ich nichts dergleichen :3 Aber sollte mir was einfallen, schreibe ich es dir *_____*

  • 2

    Von Playm (Montag, 18. September 2017, 17:42)

    Ja, in letzter Zeit bin ich wieder in Tüftellaune.
    Wenn Du witzige Ideen hast, was man automatisieren könnte, oder was für Tools man für regelmäßig anfallende Alltagsaufgaben basteln könnte - bin für Input dankbar. Dann habe ich was zum bloggen. : )

  • 1

    Von Josey (Montag, 18. September 2017, 00:30)

    Oh, schick! : D
    Ich selbst habe das allerdings einfach einmal ganz groß gemacht und ziehe mir das Bild dann einfach in das neue Tileset XD *N00b*
    Trotdem finde ich das DIng da toll, echt krass, was man so alles machen kann : D

Blog Navigation

Nächster Artikel

Mit Ruby eine GUI bauen

Von Playm (Sonntag, 24. September 2017, 08:00)

Vorheriger Artikel

Adminplausch - MV-Hosting Vorbereitungen laufen

Von Playm (Sonntag, 22. November 2015, 10:00)