Istilah-Istilah Teknis Engine Catur Lengkap
Kalau anda pernah buka Stockfish/LC0/Komodo lalu melihat tulisan seperti Depth 22 / SelDepth 36 / NPS 12M / PV, rasanya kayak baca dashboard pesawat. Padahal, istilah-istilah itu punya arti yang cukup “logis” kalau dibongkar pelan-pelan. Ada istilah seperti Hash, Depth, kN/s, Tablebase, dan masih banyak lagi yang mungkin teman-teman anda sekalian belum paham. Mari kita belajar bersama saya di blog ini. Di tulisan ini saya rangkum istilah teknis yang paling umum dan paling penting di dunia engine catur—mulai dari cara engine “mikir”, cara dia “menilai”, sampai angka-angka yang muncul di layar.
1) Bahasa & Format yang Dipakai Engine
GUI
Aplikasi antarmuka untuk menjalankan engine (misalnya: ChessBase, Arena, CuteChess, SCID, lichess analysis). Engine itu “mesin”, GUI itu “dashboard”-nya.
UCI (Universal Chess Interface)
“Bahasa komunikasi” standar antara GUI dan engine. Kalau anda lihat opsi seperti Threads, Hash, SyzygyPath, itu biasanya opsi UCI.
FEN (Forsyth–Edwards Notation)
Format teks untuk menggambarkan posisi catur (susunan bidak + giliran + hak rokade + en passant + move counter). Engine sering menerima posisi lewat FEN.
PGN (Portable Game Notation)
Format teks untuk menyimpan partai (langkah demi langkah, komentar, variasi).
EPD
Mirip FEN, sering dipakai untuk dataset posisi uji.
2) Angka-Angka di Layar Analisis Engine
Eval / Score
Nilai evaluasi posisi dari sisi yang jalan.
+ berarti menguntungkan pihak yang jalan (atau biasanya Putih, tergantung GUI).
- berarti menguntungkan lawan.
Satuan umum:
Centipawn (cp): 100 cp = kira-kira setara 1 pion.
Contoh: +0.35 ≈ +35 cp (unggul tipis).
+1.80 ≈ unggul besar (sering berarti menang kalau main rapi).
Mate score: #5 artinya ada mat dalam 5 langkah (dari sisi yang diuntungkan).
Catatan penting: eval bukan “kebenaran mutlak”. Itu hasil perhitungan berdasarkan depth & asumsi permainan terbaik.
Depth
Kedalaman pencarian utama, dihitung dalam ply (setengah langkah).
Depth 20 berarti engine melihat 20 ply (≈ 10 langkah kedua pihak), tapi ini penyederhanaan—karena ada teknik selektif.
SelDepth (Selective Depth)
Kedalaman maksimum yang dicapai di cabang tertentu akibat ekstensi/seleksi. Bisa jauh lebih besar dari Depth.
Nodes
Jumlah posisi (node) yang sudah dihitung.
NPS (Nodes Per Second)
Kecepatan engine: berapa node dihitung per detik.
Time
Waktu yang sudah dipakai untuk analisis pada posisi itu.
PV (Principal Variation)
Garis utama: urutan langkah yang menurut engine paling kuat saat ini.
Kalau PV berubah-ubah, artinya engine masih “berdebat” di dalam.
MultiPV
Mode menampilkan beberapa kandidat variasi terbaik (PV1, PV2, PV3, …). Berguna buat latihan dan memahami alternatif.
3) Cara Engine “Mikir”: Search (Pencarian)
Minimax
Ide dasar: saya memilih langkah terbaik untukku, mengasumsikan lawan juga memilih langkah terbaik untuknya.
Alpha–Beta Pruning
Optimalisasi minimax: engine tidak menghitung cabang yang sudah jelas lebih buruk daripada pilihan lain.
Alpha: batas bawah (best yang sudah ditemukan untuk pihak yang memaksimalkan).
Beta: batas atas (best untuk pihak yang meminimalkan).
Kalau suatu cabang “melampaui” batas, cabang itu dipotong (prune).
Game Tree
“Pohon” kemungkinan langkah: akar = posisi sekarang, cabang = langkah-langkah.
Branching Factor
Rata-rata banyaknya langkah legal per posisi. Ini yang bikin catur meledak kompleksitasnya.
Iterative Deepening
Engine mencari bertahap: depth 1, 2, 3, dst.
Keuntungannya:
cepat dapat jawaban sementara,
memudahkan move ordering (langkah terbaik dari depth kecil jadi petunjuk depth besar),
time management lebih stabil.
Ply
Satu “giliran” satu pihak. 2 ply = 1 langkah penuh (White+Black).
4) “Biar Cepat”: Move Ordering & Heuristik
Move Ordering
Urutan mencoba langkah sangat penting untuk alpha-beta. Semakin cepat menemukan langkah bagus, semakin banyak cabang buruk bisa dipangkas.
Teknik umum:
TT Move (Transposition Table Move)
Langkah terbaik yang tersimpan di hash table (lihat TT di bawah) dicoba dulu.
MVV-LVA
Heuristik capture: “Most Valuable Victim – Least Valuable Attacker”
Menangkap menteri dengan pion biasanya dicoba lebih dulu daripada tukar pion-pion.
Killer Move
Langkah non-capture yang sebelumnya menyebabkan cutoff di depth yang sama, dicoba lebih awal.
History Heuristic
Langkah yang sering “berhasil” (menyebabkan cutoff) di berbagai posisi diberi prioritas.
5) Teknik Memotong Cabang: Pruning & Reductions
Engine modern bukan cuma alpha-beta. Ada banyak “trik” untuk mengurangi kerja tanpa banyak mengorbankan akurasi.
Quiescence Search (QSearch)
Masalah: kalau berhenti di posisi “berisik” (banyak taktik capture/check), eval bisa menipu (horizon effect).
QSearch memperpanjang pencarian hanya untuk langkah-langkah “taktis” (biasanya capture, check, promosi) sampai posisi lebih tenang.
Horizon Effect
Engine “nggak lihat” ancaman yang sedikit di luar jangkauan depth, jadi eval kelihatan aman padahal habis itu runtuh.
Null Move Pruning
Engine berpura-pura “lewat giliran” (null move). Kalau posisi tetap terlihat bagus, berarti cabang lawan kemungkinan tidak berbahaya → bisa prune.
Dipakai hati-hati karena bisa salah di posisi zugzwang.
Futility Pruning
Kalau di depth dangkal suatu langkah jelas tidak mungkin memperbaiki posisi melewati ambang tertentu, engine mengabaikannya.
Razoring
Versi agresif: pada depth tertentu, kalau posisi terlihat sangat buruk, engine langsung masuk qsearch daripada memperdalam normal.
Late Move Reductions (LMR)
Langkah-langkah yang dicoba belakangan (biasanya kandidat lemah) dihitung dengan depth lebih kecil.
Kalau ternyata hasilnya bagus, engine bisa “re-search” dengan depth penuh.
PVS (Principal Variation Search)
Setelah langkah terbaik sementara ditemukan, langkah lain diuji dengan “jendela” sempit untuk cepat membuktikan apakah mereka kalah.
Aspiration Window
Engine menebak eval dekat nilai sebelumnya, lalu mencari dalam rentang sempit (misalnya +0.30 sampai +0.50).
Kalau meleset (fail-low / fail-high), dia ulang dengan jendela lebih lebar.
6) Memori Engine: Hashing & Transposisi
Transposition
Posisi yang sama bisa dicapai lewat urutan langkah berbeda. Menghitung ulang itu boros.
Transposition Table (TT)
“Cache” posisi: menyimpan info seperti skor, depth, bound (alpha/beta), dan best move.
Hash
Nilai kunci unik untuk posisi (biasanya dengan Zobrist hashing).
Zobrist Hashing
Metode cepat bikin “sidik jari” posisi berdasarkan XOR angka acak untuk setiap bidak di setiap petak + state (giliran, rokade, en passant).
Hash Size
Ukuran memori TT (mis. 256MB, 1024MB). Terlalu kecil → cepat “ketimpa”, terlalu besar → mubazir (tergantung RAM).
7) Evaluasi: Engine Menilai Posisi Pakai Apa?
Secara garis besar ada dua keluarga besar:
A) Classical/Handcrafted Evaluation
Engine menilai dengan rumus & fitur buatan manusia, misalnya:
Material (nilai bidak)
Piece-Square Tables (kuda bagus di pusat, raja aman, dll.)
Mobility (jumlah langkah aktif)
King Safety (perlindungan raja, open file ke raja)
Pawn Structure (pion dobel, pion terisolasi, passer)
Bishop pair, outpost, rook on open file, dsb.
B) Neural Evaluation (NNUE / Net)
NNUE
Jaringan saraf kecil yang sangat cepat di CPU, dipakai Stockfish modern.
Idenya: evaluasi “belajar” dari data, bukan ditulis manual sepenuhnya.
Network / Weights
File bobot jaringan saraf. Kalau anda ganti net, “rasa” evaluasi bisa berubah.
Incremental Update
NNUE di-update cepat saat langkah dimainkan, tidak menghitung ulang dari nol.
Policy & Value (umum di engine neural seperti Leela)
Policy: probabilitas langkah yang “masuk akal”.
Value: perkiraan hasil (menang/seri/kalah) dari posisi.
8) Engine Berbasis Monte Carlo (Leela/LC0)
MCTS (Monte Carlo Tree Search)
Alih-alih menghitung semua cabang seperti alpha-beta, MCTS “menjelajah” cabang yang menjanjikan lebih sering melalui simulasi/rollout terarah (dibantu network).
Playouts / Visits
Jumlah kunjungan/simulasi pada node. Semakin banyak visits, biasanya semakin stabil.
PUCT
Rumus untuk menyeimbangkan eksplorasi (coba hal baru) vs eksploitasi (perdalam yang sudah bagus).
9) Tablebase: “Sempurna” di Akhir Permainan
Endgame Tablebases (EGTB)
Database hasil akhir permainan dengan sedikit bidak (misalnya 6 atau 7-man). Memberi langkah sempurna.
Syzygy Tablebases
Format tablebase populer.
Istilah penting:
WDL: Win/Draw/Loss (hasil teoritis).
DTZ: Distance to Zeroing move (berapa langkah ke langkah yang mereset 50-move rule: capture/pawn move).
TB Hit
Saat engine “menyentuh” tablebase dan memakai datanya.
10) Manajemen Waktu & Mode Berpikir
Time Management
Cara engine membagi waktu per langkah (lebih lama di posisi kritis, lebih cepat di posisi mudah).
Ponder
Engine berpikir saat giliran lawan (menebak langkah lawan). Kalau tebakan benar, analisisnya “lanjut” dan hemat waktu.
Move Overhead
Cadangan waktu untuk mengantisipasi lag GUI/OS agar tidak kehabisan waktu.
11) Opsi Umum di Engine (Yang Sering Bikin Bingung)
Threads
Jumlah core CPU yang dipakai. Lebih banyak biasanya lebih cepat, tapi scaling tidak selalu linear.
SMP / Parallel Search
Cara engine membagi pencarian ke banyak thread.
Contempt
Preferensi engine terhadap hasil seri.
Contempt positif: engine cenderung “menghindari” seri dan main lebih tajam (kadang jadi berisiko).
Contempt rendah: lebih “objektif” menerima seri jika memang terbaik.
Skill Level / Limit Strength
Membatasi kekuatan engine (untuk sparring). Implementasinya beda-beda: bisa dengan noise, pruning ekstra, atau pembatasan depth.
UCI_LimitStrength & UCI_Elo
Beberapa engine mendukung simulasi level Elo tertentu.
12) Pengujian Kekuatan Engine
Elo
Ukuran kekuatan relatif berdasarkan hasil pertandingan.
SPRT
Metode statistik untuk memutuskan apakah perubahan engine benar-benar meningkatkan kekuatan (uji cepat tapi ketat).
TC (Time Control)
Kontrol waktu pengujian (mis. 10+0.1). TC memengaruhi hasil: engine tertentu unggul di blitz, yang lain unggul di long.
Opening Book / Book
Daftar pembukaan untuk variasi pertandingan engine. Dalam testing, book dipakai agar engine tidak main pembukaan yang sama terus.
13) Peran Opening Book dalam Penggunaan Engine Catur
Kalau engine itu “otak penghitung”, maka opening book itu seperti ingatan pembukaan yang sudah disiapkan—bukan hasil hitung dari posisi awal, tapi kumpulan langkah pembukaan yang dianggap layak berdasarkan teori, database partai, atau hasil uji engine.
Apa itu Opening Book?
Opening book (buku pembukaan) adalah daftar posisi pembukaan dan langkah-langkah yang direkomendasikan dari posisi itu. Biasanya disimpan dalam file book (formatnya bermacam-macam tergantung GUI/engine), lalu dipakai untuk:
memilih langkah pada fase pembukaan,
menghemat waktu hitung,
menghindari “pembukaan aneh” yang kadang muncul kalau engine dihajar time control super cepat,
membuat permainan lebih bervariasi.
Kenapa Engine Butuh Opening Book (Padahal Engine Kuat)?
Engine kuat, tapi pembukaan punya dua masalah praktis:
Waktu & efisiensi
Di awal permainan, banyak posisi masih “seimbang” dan bercabang besar. Engine bisa menghabiskan waktu hanya untuk memastikan sesuatu yang teori pembukaan sudah tahu.
Stabilitas di kontrol waktu cepat
Di bullet/blitz, engine bisa mengambil keputusan kurang “manusiawi” karena depth rendah. Book membantu engine tetap berada di jalur pembukaan yang sehat.
Variasi & anti-ulang-ulang
Kalau engine dibiarkan “murni” tanpa book, dia cenderung memilih jalur yang sama terus pada posisi awal yang identik. Book bisa memasukkan variasi.
Book vs Engine Calculation (Bedanya Apa?)
Main pakai book: engine memilih langkah dari database langkah pembukaan (sering tanpa menghitung lama).
Main “out of book”: engine mulai menghitung serius karena posisi tidak ada di book atau sudah melewati batas book.
Istilah yang sering muncul di GUI:
In-book: langkah masih dari opening book.
Out-of-book: engine sudah tidak mengikuti book, mulai mengandalkan search + evaluation sepenuhnya.
Jenis-Jenis Opening Book (Secara Praktis)
Book teori/klasik
Berdasar teori pembukaan (yang “normal” dan sering dimainkan manusia).
Book database
Dibuat dari kumpulan partai (misalnya dari master games). Kuat untuk “main natural”, tapi kadang membawa bias gaya main.
Book engine-tested
Dibuat dari hasil duel engine besar-besaran. Ini sering dipakai untuk kompetisi engine karena lebih objektif untuk performa mesin.
Polyglot book (umum di GUI)
Banyak GUI mendukung format polyglot. Biasanya isinya: posisi → beberapa kandidat langkah + bobot probabilitas.
Konsep Penting: “Book Bias”
Kalau anda menguji engine atau chess bot, opening book bisa “mengotori” hasil jika tidak dikontrol. Misalnya:
Engine A terlihat unggul, padahal book-nya kebetulan mengarahkan ke variasi yang sangat cocok untuk gaya evaluasinya.
Engine B sering masuk posisi susah karena book-nya lebih “tajam”.
Karena itu, di testing serius:
book sering disamakan,
atau dipakai opening suite (set posisi awal yang sama untuk kedua engine),
atau malah no book untuk uji murni (tergantung tujuan).
Book Depth / Book Length
Beberapa GUI mengizinkan anda mengatur “seberapa lama” book dipakai, misalnya sampai langkah ke-8 atau ke-12.
Book terlalu panjang: engine seperti “menumpang teori” terlalu lama.
Book terlalu pendek: variasi kurang, engine cepat masuk hitung berat.
Weighted Random / Varian Pemilihan Langkah
Agar tidak monoton, book sering memakai probabilitas:
Langkah utama punya bobot besar (sering terpilih).
Langkah sampingan punya bobot kecil (sesekali muncul).
Ini penting kalau anda bikin chess bot yang ingin terasa “hidup” dan tidak gampang ditebak.
Kapan Sebaiknya Memakai Opening Book?
Sparring vs manusia: ya, biar bot tidak main pembukaan aneh dan terasa natural.
Latihan pembukaan: ya, bisa fokus ke jalur tertentu (pakai book yang “dikunci”).
Testing engine: hati-hati; pakai opening suite/book yang sama untuk adil.
Analisis posisi pembukaan: sering lebih baik matikan book, biar engine benar-benar menghitung.
14) Tentang Chess Bot: Apa Bedanya dengan Engine, dan Komponen Teknisnya
Orang sering menyebut “engine” dan “bot” seolah sama, padahal sebenarnya:
Engine catur: program yang menghitung langkah terbaik (Stockfish, LC0, dsb).
Chess bot: “paket lengkap” pemain otomatis yang biasanya memakai engine di belakang layar, plus logika tambahan agar bisa bermain sesuai kebutuhan (misalnya gaya tertentu, level tertentu, atau perilaku tertentu).
Bayangkan begini:
Engine = mesin keputusan
Bot = karakter pemain (yang memakai mesin keputusan)
Komponen Utama Chess Bot Modern
Core Engine
Sumber kekuatan utama (search + evaluation). Bot bisa pakai Stockfish/LC0 atau engine lain.
Opening Book
Agar pembukaan bot:
tidak membosankan,
tidak “anti-manusia”,
bisa diarahkan ke repertoar tertentu (misalnya bot “pecinta Sicilian”).
Time Manager
Bot harus memutuskan: kapan mikir lama, kapan cepat.
Bot yang terasa “manusia” biasanya:
cepat di recapture sederhana,
lama di posisi kritis/taktis.
Strength Limiter
Jika bot untuk latihan, perlu pembatasan kekuatan:
membatasi depth,
menambah “noise” pada eval,
memilih langkah bukan yang terbaik mutlak, tapi dari kandidat beberapa langkah (mirip MultiPV lalu pilih probabilistik),
membatasi NPS/threads.
Catatan: “Skill level” yang bagus itu bukan cuma bikin bot blunder random, tapi bikin kesalahan yang masuk akal: salah rencana, salah timing, atau melewatkan taktik yang tidak terlalu jelas.
Style Layer (Gaya Bermain)
Beberapa bot diberi “kepribadian”:
agresif (lebih suka serangan raja),
solid (lebih suka endgame),
taktis (lebih suka komplikasi),
positional (lebih suka struktur pion bagus).
Secara teknis, ini bisa dilakukan dengan:
memilih dari beberapa PV berdasarkan “tema”,
mengubah parameter evaluasi (di engine klasik),
atau mengubah policy bias (di engine neural/berbasis policy).
Anti-Repetition / Anti-Draw Behavior
Bot kadang dibuat:
menghindari repetisi supaya partai tidak cepat seri,
atau justru “aman” dan ambil repetisi kalau posisi buruk.
Ini sering terkait dengan parameter seperti contempt, dan logika bot di luar engine.
Istilah Teknis yang Sering Terkait Chess Bot
Blunder rate: seberapa sering bot membuat kesalahan besar (biasanya diukur dengan drop eval).
Human-like errors: kesalahan yang “masuk akal” (bukan gantung menteri satu langkah tanpa alasan).
Opening personality: repertoar pembukaan yang membentuk karakter bot.
Move randomness: tingkat variasi pemilihan langkah (sering memanfaatkan MultiPV + bobot).
Kenapa Bot “Level Rendah” Kadang Terasa Aneh?
Karena jika pembatasannya kasar (misalnya random total), bot bisa:
melakukan langkah yang tidak punya tujuan,
tidak konsisten (1 langkah jenius, 1 langkah bunuh diri),
atau bermain pembukaan kacau.
Bot yang dirancang baik biasanya:
punya opening book sederhana,
punya batas depth,
dan memilih langkah dari kandidat yang masih “waras”.
Selamat malam, Gens Una Sumus.
HeDar.

Tidak ada komentar:
Posting Komentar