Tugas Besar Mata Kuliah IF2211 Strategi ITB. Built by Kelompok 2 - JnCK
- General Info
- Our Approach
- Technologies Used
- Setup
- Usage
- Project Status
- Room for Improvement
- Acknowledgements
- Contact
Overdrive adalah sebuah game yang mempertandingan 2 bot mobil dalam sebuah ajang balapan. Setiap pemain akan memiliki sebuah bot mobil dan masing-masing bot akan saling bertanding untuk mencapai garis finish dan memenangkan pertandingan. Agar dapat memenangkan pertandingan, setiap pemain harus mengimplementasikan strategi tertentu untuk dapat mengalahkan lawannya.
Pada tugas besar ini, setiap kelompok diminta untuk membuat sebuah bot yang akan diadu dengan bot kelompok lain pada permainan Overdrive di kompetisi Tubes 1. Bot tersebut mengimplementasikan algoritma greedy yang berperan sebagai strategi bot agar dapat menyelesaikan fungsi objektif dari permainan Overdrive, yaitu memenangkan permainan dengan cara mencapai garis finish lebih awal atau mencapai garis finish bersamaan tetapi dengan kecepatan lebih besar atau memiliki skor terbesar jika kedua komponen tersebut masih bernilai imbang.
Algoritma yang kelompok kami terapkan adalah algoritma greedy (sesuasi dengan spesifikasi tubes). Greedy yang digunakan adalah hasil penggabungan dari tiga aspek dasar permainan yaitu cautious yang mengurus pergerakan bot dalam memilih dan menghindari obstacle, opportunist mengurus segala hal dalam penggunaan power up untuk kepentingan bot kami sendiri, dan destructive berfungsi dalam penggunaan power up penyerangan untuk dapat membuat bot musuh semakin tertinggal ataupun menghentikan gerakan mereka. Hasil dari penggabungan ketiga aspek tersebut menjadikan JnCK-bot sebagai bot yang all-rounder, dengan kemampuan seimbang antara penggunaan power up menyerang maupun bertahan dan juga mampu menganalisis lane terbaik.
Greedy yang dilakukan kurang lebih untuk mencari lane terbaik digunakan greedy terhadap weight tiap lane, dengan weight ditentukan berdasarkan banyaknya power up dan juga terrain. Untuk penggunaan power up aspek opportunist juga dengan pendekatan yang mirip yaitu mencari lane dengan weight paling optimum untuk melakukan power up. Sedangkan, untuk power up penyerangan dilakukan pengecekan terhadap kondisi bot saat ini lalu jika kondisi-kondisi terpenuhi maka akan dipilih power up terbaik untuk digunakan berdasarkan weight (prioritas).
- Java (Maven)
- NodeJS
Untuk menjalankan permainan dibutuhkan:
- Java Development Kit (Minimal 8)
- IntelliJ IDEA
- NodeJS
- Apache Maven
- Starter Pack Overdrive, bisa diunduh disini
Untuk menggunakan bot sebenarnya tidak perlu di-build lagi karena sudah ada versi build paling baru pada commit terakhir,jika ingin melakukan build:
- Buka folder repository pada IntelliJ IDEA
- Akan muncul pop-up untuk melakukan load terhadap Maven Projet atau jika tidak muncul bisa klik kanan pada
pom.xml
laluAdd to maven project
- Load Maven Project tersebut
- Di kanan atas nanti terlihat ada tulisan "Maven", klik tulisan tersebut
- Lalu klik "JnCK-bot", "Lifecycle", dan
install
- Hasil dari build tersebut akan muncul di folder bin
Pada repository tersedia source code beserta file jar dari bot yang kelompok kami buat. Untuk menggunakannya:
- Download starter pack dari Overdrive untuk bisa menjalankan permainan
- Extract starter pack tersebut
- Lakukan
clone
atau unduh repository ini - Tempatkan folder repository pada root folder yang sama tempat meng-extract starter pack Overdrive.
- Edit konfigurasi bot pada game-runner-config.json.
- Pilih 'player-a' ataupun 'player-b'
- Edit path pada salah satu player yang dipilih menjadi menjadi "./" + folder repository
- Jalankan command
start run.bat
atau klik dua kali pada filerun.bat
di file explorer.
Project ini sudah selesai
Room for improvement:
- Strategi algoritma yang digunakan pada bot ini merupakan strategi greedy sebagai pemenuhan kriteria tugas besar. Pada dasarnya algoritma greedy belum tentu menghasilkan hasil yang terbaik,sehingga untuk improvement bisa dilakukan percobaan terhadap jenis-jenis algoritma lainnya.
- Jenis greedy yang kelompok kami gunakan juga mungkin belum menjadi yang paling optimum, sehingga bisa dilakukan eksplorasi terhadap alternatif-alternatif greedy yang lainnya.
- Bot kami merupakan bot all-rounder yang tidak menggunakan strategi khusus pada skenario tertentu, sehingga mungkin bisa dilakukan berbagai macam strategi cheesy yang memungkinkan.
- Projek ini dikerjakan untuk memenuhi tugas besar mata kuliah IF2211 Strategi Algoritma
- Terima kasih kepada seluruh dosen pengajar mata kuliah IF2211 dan asisten
Created by: