Sarabande adalah salah satu proyek paling niat yang pernah saya kerjakan, karena kurang lebih setahun sudah saya kembangkan, walaupun cuman sampai versi ke 2. Nah setelah versi itu, Apakah akan ada update lagi? Jawaban singkatnya ngak ada (Tapi...). Jadi, setelah kurang lebih 2 tahun proyek ini ditinggalkan, saya merencanakan untuk menulis ulang Sarabande. Beberapa masalah dari versi sekarang dan jawaban untuk versi barunya yakni:
Saat pertama kali proyek ini dibuat, saat itu saya masih belajar menggunakan SFML dan C++. Kode yang saya tulis cukup berantakan saat itu (versi C++). Karena itu kadang saya juga malas untuk ngedebug-nya kalau ada error.
Versi rewrite ini akan saya tulis lebih terstruktur, Jadi ngak ada lagi fungsi main yang sampai 1000 baris. Dan rencananya Sarabande ini akan jadi library. Jadi kalau mau buat Game yang bisa mainin SMML tinggal tambahin aja library-nya. Lalu di versi yang baru ini, library yang digunakan adalah SFML 3, daripada versi sebelumnya yang masih pakai SFML 2.
Saya rasa sistem interpreter ini cukup buang2 memori. Alasannya karena saat musik di load, program Sarabande langsung memuat semua isi dalam filenya ke dalam String dan langsung dimainkan disaat bersamaan. Hal ini membuat program jadi lemot ketika musiknya panjang, karena semua isi filenya, yang berjenis String, yang makan banyak memori (karena per perintah bisa sekitar 4-9 huruf, dikalikan dengan panjangnya lagu) langsung diinterpretasi dan dimainkan.
Solusinya yakni dengan meng-compile file sebelum dimainkan. Caranya ketika dikompilasikan, string perintah akan diubah menjadi perintah biner, yang mungkin per-perintah hanya menghabiskan 1 sampai 4 byte, sudah termasuk parameternya, dibandingkan perintah string yang lebih besar per perintah (Lihat cantuman di bawah).
Untuk masalah dokumentasi, saya akan buat halaman blog baru. Karena di halaman sebelumnya cukup terobrak-abrik. Ya intinya benar2 saya tulis ulang, jadi jangan nanggung2 ya kan?
Versi Mod Minetest (Luanti) jadi gimana? Nah kalau itu nanti dulu, karena saya masih fokus mikirin versi C++. Kalau secara teknis, di Lua sistem compiler-interpreter seperti ini seharusnya bisa diimplementasikan.
Terakhir, yakni kapan? Kalau tepatnya belum tahu (karena orang ini (sok) sibuk wkwkwk). Paling lambat tahun ini, sebelum Desember. Karena tahun depan saya mulai sibuk dengan ujian kelulusan (wismilak ya).
Cantuman
* Compiling Process
___________________ _____________ ______________
| | | | | \
| Human Readable | ---> | Sarabande | ---> | Binary \
| SRBD File | | Compiler | | SRBB File /
|___________________| |_____________| |______________/
Container for SMML syntax Container
Sarabande Markup compiled into for the compiled
Language (SMML). a smaller binary binary SMML.
file.
___________________________________________________________
| |
| Compilation Mode ? |
|______. .___________________. .___________________. .______|
______| |______ ______| |______ ______| |______
| | | ? | | ? |
| Full | | Partial | | Normal |
| Pre-interpret | | Pre-interpret | | |
|_______________| |_______________| |_______________|
Fully preinterpret Partially preinter- Preserve all of
equations, variables pret equations. the equations in
into a compact number. a methological form.
Space usage: Small Space usage: Medium Space Usage: Various
(mostly large)
Example: Example: Example:
note c4 4 1 setvar l 4 setvar l 8 / 2
note c4 gv l 1 note c4 gv l 1
* Interpreting Process
_______________ _______________ ____________________
\ | | | | |
\ Binary | ---> | Sarabande | ---> | Human Hear-able |
/ SRBB File | | Interpreter | | Musical Sequence |
/______________| |_______________| |____________________|
Container Binary SMML syntax Hear-able musical
for the compiled Interpreted into sequence.
binary SMML. audio signal
sequence.
SRBD: SMML Container (*.srbd)
SRBB: Binary SMML Container (*.srbb)
The compiling and interpreting process can be done in sequence or individually.
For example, both process can be done in sequence to play a musical sequence
directly from the human readable SRBD file. Or perhaps just do the compiling
process to produce a SRBB file that can be transported easily, and can be played
later using the Interpreter. The compiling process removes all unnecessary data
such as comments and variable names. For variable names, they are replaced by
index number, more like a pointer.
Tidak ada komentar:
Posting Komentar