How action sequence works (Indonesian) - theoallen/TSBS GitHub Wiki

Oke semuanya, di halaman ini wa mau nerangin sebenernya gimana action sequence di TSBS dieksekusi. Ini penting lantaran kalo kamu ngerti gimana dasar-dasarnya eksekusi di TSBS, kamu bakal bisa bikin animasi yang keren banget. Langsung aja dah!

##1. TSBS ngikutin cara eventing RM Tak jelasin dasarnya. Jika kamu emang master eventing, atau setidaknya ngerti cara nge-event, kamu harusnya bisa paham lebih cepat. Kayak yang udah kamu tahu, semua event command akan dieksekusi sampe ada wait. Nah, wait itu termasuk dalam :

  1. Wait command
  2. Show Message
  3. Move route (cek wait for completion box)
  4. Show animation (cek wait for completion box)
  5. Show balloon icon (cek wait for completion box)
  6. Tint screen / Shake screen / Flash screen /Show weather (cek wait for completion box)
  7. Move picture (cek wait for completion box)

Jika kamu masukin salah satu dari command itu, event bakal dihentiin bentar sampe selese kan? Jika kamu mau nambah item tinggal kasi aja change item bersamaan dan semuanya akan dieksekusi di waktu yang bersamaan juga. Dan jika kamu mau bikin gerakan yang bersamaan, tinggal bikin dua move route dan jangan centang "wait for completion". Dan dua karakter itu akan berjalan bersamaan. Disamping itu, tidak mengabaikan update lain seperti autonomous movement.

Sama halnya dengan TSBS. Wa ngadopsi gimana cara kerja event nanganin masalah multitask. Sementara skill lagi dieksekusi, gwa tetep eksekusi update lain seperti gerakan idle dari sprite battler lain. TSBS gwa nge-eksekusi semua command bersamaan sampe kamu bener-bener ngasi wait. Di TSBS, wait itu terdiri dari dua command berikut ini :

  1. [:pose,],
  2. [:wait],

Tanpa kedua command tersebut, semua akan dieksekusi di waktu yang sama. Terserah kamu bagaimana nantinya kamu ngegunainnya.

##2. Triggers and Timing Hampir semua yang ada di TSBS itu hanya sekedar "trigger/pemicu". Maksudnya apa? Trigger itu ngga ngelakuin apa-apa sampe kamu ngasi kesempatan buat eksekusi. Contohnya, kamu kasi perintah gerakin aktor ke target dengan [:move_to_target, 50, 0, 15, 0]. Ini artinya kamu pindah aktor dengan koordinat X lebih 50 dari target (Jika koordinat X si target adalah 150, nanti aktor kamu akan berpindah ke 200) dan membutuhkan durasi perjalanan sebanyak 15 frame untuk menyelesaikan perintah itu.

Action sequencenya akan jadi seperti ini :

[:move_to_target, 50, 0, 15, 0],
[:wait, 30], # <-- Beri waktu untuk gerak. Boleh 15 ato lebih

Dan contoh gambar gifnya seperti ini.

Move to target

Atau cara alternatifnya kamu bisa menggunakan [:pose]. Katakanlah karakter kamu akan loncat sampai ke target. Kamu tinggal ganti saja method wait. Liat gambar battler berikut.

Battler

Untuk pose loncat, kamu ambil nomor 5 untuk separuh awal. Dan ambil 3 untuk separuh akhir. Dan, actor kamu butuh "istirahat" sebentar setelah gerak. Dan sequencenya bakal jadi seperti ini.

[:move_to_target, 50, 0, 46, 3], # <-- pemicu
[:pose, 2, 5, 23], # pose loncat (setengah awal)
[:pose, 2, 3, 23], # pose loncat (setengah akhir)
[:pose, 2, 1, 45], # "Istirahat" setelah gerak

Contoh Gif

Jumping

Catat kalau "move trigger" itu butuh 46 frame untuk menyelesaikan tugasnya. Jadi gwa taruh 23 x 2 frame wait dengan [:pose]. Di 23 pertama gwa ambil grid ke-5 dan yang terakhir gw ambil grid ke-3. Jadi totalnya adalah 46. Tapi itu belum cukup. Gwa tambahin wait sebentar jadi sequencenya ngga terlihat kecepetan. Gwa bikin actor istirahat sebentar dengan cara nambahin [:pose, 2, 1, 45],. Seperti yang lu liat, actor menunggu sebentar setelah gerak. Jadi total semuanya adalah 46 + 45 = 81 frame

##3. Damage and Animation timing Sama halnya dengan damage dan animasi. Kamu bisa ngedamage dan play animasi di waktu yang sama. Atau tampilin animasi dulu baru damage. Lihat contoh sequence berikut

[:move_to_target, 50, 0, 46, 3], # <-- Pemicu
[:pose, 2, 5, 23], # Pose loncat (Separuh awal)
[:pose, 2, 3, 23], # Pose loncat (Separuh akhir)
[:pose, 2, 1, 45], # Istirahat bentar
[:show_anim],      # Animasi!
[:target_damage],  # Damage!
[:wait, 45],       # Tunggu sampai selesai

Hasilnya adalah animasi skill dan damagenya akan dieksekusi di waktu yang sama. Contoh gifnya adalah seperti berikut ini

Damage

Beda lagi kalau gwa tambahin wait diantara [:show_anim] dan [:target_damage] seperti ini

[:move_to_target, 50, 0, 46, 3], # <-- pemicu
[:pose, 2, 5, 23], # Pose loncat (Separuh awal)
[:pose, 2, 3, 23], # Pose loncat (Separuh akhir)
[:pose, 2, 1, 45], # Istirahat bentar
[:show_anim],      # animasi!
[:wait, 30],       # tunggu sampe selese
[:target_damage],  # damage!
[:wait, 45],       # tunggu sampe selese

Contoh gifnya seperti ini

Damage

Ngerti bedanya? Yup, damage akan dieksekusi setelah animasi. Ini lantaran gwa tambahin [:wait, 30] pas sebelum [:target_damage]. Jika kamu cukup kreatif, kamu bahkan bisa bikin timing berdasar animasi. Jadi sebelum animasi selese, panggil [:target_damage]. Gw kasih contoh dari sample game (ED: Skyward Temple)

Ini adalah animasi darkness portal secara menyeluruh

darkness portal

Damage akan dieksekusi di tengah animasi seperti ini

Damage timing

Nah, seperti ini lah pemahaman dasar dari action sequencenya TSBS :smiley: