Wednesday, August 28, 2013

Ruby - Fiber Explanation

Ruby - Fiber class
Level : Skilled / Scripter
Pembukaan :
Dalam library standarnya Ruby ada yang namanya class Fiber. Class ini biasanya dipake buat bikin semacem Checkpoint untuk berhenti dan bisa dilanjutkan dalam kapan saja. Class ini dipake dalam RGSS3 dalam class Window_Message dan Game_Interpreter. Jadi kalo kalian mo ngemodif class itu, setidaknya kalian harus ngerti fiber itu apaan.

Window Message Update Fiber
Game Interpreter create fiber
What to do?
Insert script baru buat lahan kamu eksperimen.


Lalu bikin script kayak gini untuk basenya
def updates
  Graphics.update
  Input.update
end

updates while true
Lalu bikin def diatas update misalnya kayak gini


def run
  Fiber.yield 1
  Fiber.yield 2
  Fiber.yield 5
  Fiber.yield "hello world"
  Fiber.yield :hello_world
end
Lalu di def update dijadiin gini.
def updates
  Graphics.update
  Input.update
  puts $fiber.resume if Input.trigger?(:C) # Tambahin
end

$fiber = Fiber.new { run } # Tambahin
updates while true

Lalu coba kamu testplay di RM
Ntar ini yang bakal kamu liat



Di setiap kali kamu mencet confirm, maka console akan ngeprint secara urutan itu. Tinggal kapan aja method resume dipanggil. Karena urutan checkpoint udah abis, kalo kamu terusin lagi, maka ini yang akan kamu temuin.

Sebenernya isi fiber itu bisa apa aja. Kamu akan menemukan hal yang berbeda kalo kamu ngisinya kek gini juga
def run
  puts "a","b","c"
  Fiber.yield
  puts 1,2,3
  Fiber.yield
  puts "third checkpoint"
  Fiber.yield
  puts "last", "checkpoint"
  Fiber.yield
end

Maka ntar yang akan kamu temui kayak gini


Fungsi fiber yang kayak gini dimanfaatin dalam Message System dimana kalian tau sendiri kalo dalam message tulisan akan diprint perhuruf. Bukan sekaligus. Oke, sekarang kita coba bikin fiber simulasi dari message system lewat console. Ganti semuanya jadi kayak gini semisal

def run
  text = "This is just a sample text for " + 
  "fiber testing.\nSo I make it very " +
  "loooooong so \nit may take a long time. " +
  "dsadsadsadsad\nsadsadasdsadsaddsadsadsadsad"
  index = 0
  loop do
    Fiber.yield text[index]
    index += 1
  end
end

def updates
  Graphics.update
  Input.update
  print $fiber.resume
end

$fiber = Fiber.new { run }
updates while true

Kalo kamu testplay di RM, kamu akan nemuin hal menarik di console. Liat kek gini hasilnya

Printed text

Printed text
Textnya akan berjalan sama kek yang ada dalam message.
Sekian update tutorial level scripter gw. Ntar kalo ada hal menarik yang lain lagi gw bagi deh.

No comments:

Post a Comment

Comment rules :
1. Stay in topic or I will ignore
2. Comment must be in either Bahasa Indonesian or English.

I appreciate any form of comments. However, please do not spam!