Mata Kuliah: Game Engine
Pengantar Artificial Intelligence untuk Game
Referensi Utama: "Artificial Intelligence for Games" oleh Ian Millington.
Tools: Unity Game Engine (C#).
Tekan tombol Next atau Panah Kanan untuk memulai.
Tujuan Mata Kuliah
- Memahami perbedaan mendasar antara Academic AI dan Game AI.
- Menguasai konsep dasar pergerakan (Movement) dan Steering Behaviors.
- Mengimplementasikan Pathfinding (A*) dan Navigasi.
- Merancang pengambilan keputusan (Decision Making) menggunakan FSM dan Behavior Trees.
- Menerapkan teori Ian Millington ke dalam Unity Game Engine.
Roadmap Perkuliahan (Sesuai Millington)
- Minggu 1-2: Intro & Dasar Pergerakan (Ch 1-3).
- Minggu 3-5: Pathfinding & Graph Theory (Ch 4).
- Minggu 6-8: Decision Making (FSM, Behavior Trees) (Ch 5).
- Minggu 9-11: Tactical & Strategic AI (Ch 6-8).
- Minggu 12-14: Learning & Implementasi Proyek (Ch 9+).
Apa itu Game AI?
Game AI tidak selalu tentang menciptakan kecerdasan yang sesungguhnya.
"The goal of game AI is not to be smart, but to look smart."
— Ian Millington
Game AI berfokus pada:
- Ilusi Kecerdasan: NPC terlihat hidup dan responsif.
- Fun Factor: AI harus bisa dikalahkan (atau menantang), bukan sempurna.
- Efisiensi CPU: Harus berjalan real-time bersama rendering dan physics.
Struktur Dasar AI (The AI Model)
Millington membagi arsitektur AI menjadi 3 lapisan utama:
- Movement (Pergerakan): Bagaimana karakter bergerak dari titik A ke B.
- Decision Making (Keputusan): Apa yang harus dilakukan karakter sekarang? (Misal: Serang, Lari, Sembunyi).
- Strategy (Strategi): Koordinasi tim atau rencana jangka panjang.
Bab 2: Kinematic Movement
Bentuk pergerakan paling sederhana. Tidak memperhitungkan massa, inersia, atau gaya.
- Hanya memanipulasi Posisi dan Kecepatan secara langsung.
- Cocok untuk game platformer 2D sederhana atau menu navigasi.
// Unity Implementation
transform.position += velocity * Time.deltaTime;
Bab 3: Steering Behaviors
Pergerakan yang lebih natural dibanding Kinematic. Menggunakan gaya (forces) dan percepatan.
Konsep Utama:
- AI tidak langsung mengubah posisi, tapi memberikan gaya dorong.
- Menghasilkan gerakan melengkung yang halus.
Algoritma dasar: Seek, Flee, Arrive, Wander.
Algoritma Seek & Flee
- Seek: Menghitung vektor arah menuju target, lalu menerapkan akselerasi ke arah tersebut.
- Flee: Kebalikan dari Seek, menjauhi target.
Vector3 desiredVelocity = (target - me).normalized * maxSpeed;
Vector3 steering = desiredVelocity - currentVelocity;
Algoritma Arrive
Masalah dengan Seek: Karakter akan "overshoot" (melewati) target karena kecepatan penuh.
Arrive: Memperlambat karakter saat mendekati target (dalam radius tertentu).
- Seperti mengerem mobil saat mendekati lampu merah.
- Sangat penting agar NPC berhenti tepat di depan pemain.
Implementasi Steering di Unity
Kita memiliki dua opsi:
- Custom Script: Menulis algoritma Millington secara manual (menggunakan Vector3 math). Memberikan kontrol penuh.
- Unity NavMeshAgent: Sistem bawaan Unity. Menggabungkan Steering, Pathfinding, dan Obstacle Avoidance menjadi satu.
Di mata kuliah ini, kita akan belajar keduanya.
Bab 4: Pathfinding
Steering hanya menangani gerakan lokal. Bagaimana jika ada tembok di antara NPC dan Target?
Pathfinding adalah proses mencari rute terbaik dari A ke B dalam sebuah lingkungan yang kompleks (Graph).
- Mengubah level game menjadi data matematis (Graph/Grid).
- Mencari jalur terpendek (Shortest Path).
Representasi Dunia
Sebelum pathfinding bekerja, dunia game harus disederhanakan:
- Tile/Grid Graphs: Dunia dibagi menjadi kotak-kotak (seperti catur).
- Waypoint Graphs: Titik-titik spesifik yang dihubungkan garis.
- Navigation Mesh (NavMesh): Poligon yang merepresentasikan area yang "bisa diinjak". (Standar Unity).
Algoritma A* (A-Star)
Algoritma pathfinding paling populer di dunia game.
Menggabungkan dua konsep:
- Dijkstra: Menjamin rute terpendek.
- Heuristic (Greedy): Estimasi jarak ke target untuk mempercepat pencarian.
Rumus: $$f(n) = g(n) + h(n)$$
Unity NavMesh System
Unity menggunakan A* di atas Navigation Mesh.
- Bake: Proses pra-kalkulasi area yang bisa dilalui.
- NavMeshAgent: Komponen yang ditempelkan pada NPC untuk otomatis mencari jalan.
- NavMeshObstacle: Komponen untuk rintangan dinamis (misal: pintu yang bisa menutup).
Contoh Code NavMesh
Sangat sederhana dibanding menulis A* dari nol:
using UnityEngine.AI;
public NavMeshAgent agent;
public Transform target;
void Update() {
agent.SetDestination(target.position);
}
Namun, kita tetap perlu memahami teori A* untuk kasus di mana NavMesh tidak bisa digunakan (misal: game grid turn-based).
Bab 5: Decision Making
Karakter sudah bisa bergerak dan mencari jalan. Tapi, kapan dia harus bergerak?
Metode pengambilan keputusan:
- Decision Trees: Pohon keputusan sederhana (If-Else bercabang).
- Finite State Machines (FSM): Standar industri lama.
- Behavior Trees: Standar industri modern.
Finite State Machines (FSM)
Sistem di mana NPC hanya bisa berada dalam SATU kondisi (State) pada satu waktu.
- States: Patrol, Chase, Attack, Flee.
- Transitions: Syarat perpindahan (Misal: Jika Player terlihat -> Pindah dari Patrol ke Chase).
Mudah dibuat, tapi sulit dikelola jika game menjadi sangat kompleks ("Spaghetti Code").
Implementasi FSM di Unity
enum State { Patrol, Chase, Attack }
State currentState;
void Update() {
switch (currentState) {
case State.Patrol: PatrolLogic(); break;
case State.Chase: ChaseLogic(); break;
}
}
Kita akan mempelajari pola State Pattern (C# Class-based) agar kode lebih rapi.
Behavior Trees (BT)
Evolusi dari FSM. Struktur hierarki yang lebih fleksibel dan modular.
- Terdiri dari Nodes (Sequence, Selector, Action).
- Dieksekusi dari akar ke daun setiap frame.
- Digunakan di game AAA (Halo, Uncharted) dan Unity (melalui Graph View atau aset pihak ketiga).
Fuzzy Logic & Markov Systems
Millington juga membahas logika samar (Fuzzy).
- Bukan sekadar "Ya/Tidak" (Binary), tapi ada "Agak", "Sangat", "Sedikit".
- Contoh: "Jika darah agak kritis dan musuh sangat dekat, maka lari."
- Membuat perilaku NPC terasa lebih manusiawi dan kurang robotik.
Bab 6: Tactical & Strategic AI
AI tidak hanya soal individu, tapi juga pemahaman lingkungan dan kerja tim.
- Waypoint Tactics: Menandai titik strategis (misal: tempat sniper, tempat berlindung).
- Influence Maps: Membagi peta menjadi grid untuk mengetahui area mana yang dikuasai musuh atau aman.
Influence Maps
Teknik merepresentasikan data taktis spasial.
- Bayangkan "Heatmap".
- Area merah = Bahaya (Banyak musuh).
- Area hijau = Aman.
AI bisa menggunakan data ini untuk memutuskan rute pathfinding yang paling aman, bukan hanya yang terpendek.
Group AI & Koordinasi
Bagaimana agar musuh tidak menyerang pemain satu per satu seperti di film laga lama?
- Slot Assignment: Hanya izinkan 2 musuh menyerang jarak dekat, sisanya menunggu di belakang.
- Messaging System: NPC "Berteriak" ke NPC lain ("Saya butuh bantuan!", "Saya menyerang dari kiri!").
Bab 7 & 8: Board Games & Turn Based
Meski fokus kita Real-time (Unity), teori Minimax penting.
- Minimax Algorithm: Melihat beberapa langkah ke depan untuk meminimalkan kerugian maksimum.
- Relevan jika kalian membuat game strategi berbasis giliran (Turn-based Strategy) di Unity.
Bab 9: Learning (Pembelajaran)
Topik yang sedang hangat: Machine Learning (ML).
Bedanya Classic AI vs ML:
- Classic AI: Programmer menulis aturan (If Health < 10 then Run).
- Learning AI: Komputer belajar aturan sendiri melalui Trial & Error (Reinforcement Learning).
Unity ML-Agents
Implementasi modern dari Bab 9 Millington di Unity.
- Menggunakan Python (TensorFlow) untuk melatih otak AI.
- Hasil latihan dimasukkan kembali ke Unity.
- Contoh: Melatih NPC bermain sepak bola atau menyeimbangkan bola.
Tantangan Modern
- Predictability: AI yang terlalu pintar justru tidak seru.
- Cheating: AI punya akses data pemain (posisi), tapi harus berpura-pura tidak tahu.
- Performance: Ribuan unit (RTS) membutuhkan teknik optimasi tinggi (DOTS/ECS di Unity).
Evaluasi & Penilaian
- Tugas Individu (30%): Implementasi Steering & Pathfinding kecil.
- UTS (20%): Teori konsep Millington & Coding dasar.
- Proyek Akhir (50%): Membuat Demo Game dengan AI lengkap (FSM + Pathfinding + Sensing).
Tugas Untuk Minggu Depan
- Install Unity Hub dan versi Unity 2022 LTS atau terbaru.
- Install Visual Studio atau VS Code.
- Baca Bab 1 & 2 dari buku Ian Millington.
- Siapkan project Unity 3D kosong.
Q & A
Terima Kasih
Mari ciptakan AI yang cerdas (atau terlihat cerdas)!