Cheat Sheet Pemrograman Game dan Software Testing Lengkap
Berikut adalah kompilasi materi perkuliahan Pemrograman Game dan Software Testing & Implementasi yang disajikan secara terstruktur, ringkas, dan komprehensif untuk persiapan ujian maupun tugas akademis.
Bagian 1: Pemrograman Game
Pertemuan 1: Dasar Pemrograman Game
1. Pengertian Game
Game adalah sistem interaktif yang dirancang untuk hiburan, edukasi, atau tantangan.
Ciri utama game:
- Tujuan (win condition)
- Aturan
- Pemain
- Tantangan
- Reward & Feedback
2. Game Mechanics (Mekanik Game)
Mekanik game merupakan cara pemain berinteraksi dengan dunia game.
- Movement: Walking, Running, Jumping, Climbing
- Combat: Melee, Ranged, Combo, Stealth
- Progression: Leveling, Skill, Upgrade, Reward
3. Game Programming
Aktivitas mengontrol logika game menggunakan kode program. Tanggung jawab utamanya mencakup:
- Gerakan karakter
- AI musuh
- Interaksi antrarobjek
- Optimasi performa
4. AI dalam Game
Bertujuan membuat karakter non-pemain (NPC) bertindak cerdas. Contoh penerapannya:
- Pathfinding
- Decision making
- Combat AI
Pertemuan 2: GDD dan TDD
1. Game Design Document (GDD)
Fungsi: Dokumen perancangan komprehensif untuk menjelaskan konsep game kepada seluruh anggota tim.
Isi wajib GDD:
- Game Identity: Nama game dan versi rilis.
- Konsep: Gambaran umum game serta tujuan yang harus dicapai pemain.
- Misi (Goal): Tujuan utama permainan (misalnya: bertahan hidup, menjadi kaya, atau memenangkan kompetisi).
- Genre: Action, RPG, Simulasi, dan lain-lain.
- Platform: PC, Mobile, Web/Cloud, dsb.
- Target User: Segmentasi usia, gender, dan preferensi demografis.
- USP (Unique Selling Point): Keunikan gameplay atau nilai jual pembeda dibanding game kompetitor.
- Story / Alur Cerita: Latar belakang narasi dan dinamika cerita utama.
- Karakter: Nama karakter, peran, desain visual, serta sifat.
- Gameplay (Inti Utama): Alur misi → aksi → aturan. Contoh: Misi kabur dari zombie, aksi berupa lari dan lempar barang, aturan lolos ke titik evakuasi.
- Core Loop: Siklus aktivitas mendasar yang berulang (main → reward → upgrade → main lagi).
- Reward & Punishment: Hadiah atas keberhasilan (+100 poin/uang) dan sanksi atas kegagalan (musuh bertambah kuat / kehilangan nyawa).
- Level Design: Distribusi tingkat kesulitan (level 1 mudah bertahap ke level selanjutnya yang menantang).
- UI / UX: Antarmuka menu, navigasi, HUD, tombol kontrol, dan kenyamanan interaksi pengguna.
2. Technical Design Document (TDD)
Fungsi: Panduan teknis arsitektural bagi programmer untuk mengimplementasikan game ke dalam kode.
Isi wajib TDD:
- Technical Goals: Sasaran teknologi yang ditargetkan (misalnya implementasi kecerdasan buatan, visual rendering tertentu).
- Technical Risk: Identifikasi potensi bug kritis, hambatan skalabilitas, dan limitasi performa.
- Code Style: Standar penamaan variabel, konvensi penulisan kelas, serta arsitektur folder.
- External Library: Pustaka kode eksternal, plugin, atau SDK pendukung.
- UML / Struktur Code: Diagram kelas, alur data komponen, dan relasi antarsistem.
- Performance: Target FPS minimal, batas alokasi memori, toleransi jeda loading.
- Build & Version: Skema penomoran versi produksi software.
- Platform: Rincian spesifikasi build hardware (PC, Android, dsb).
- Game Engine: Unity, Unreal Engine, Godot, atau engine kustom.
- Physics: Pengaturan sistem gravitasi, massa, dan kalkulasi benturan.
- AI: Logika algoritma agen (seperti steering behaviors dan state machine).
- Networking (Opsional): Penanganan sistem sinkronisasi server-client untuk mode multiplayer.
Perbedaan Mendasar GDD vs TDD: GDD berfokus pada apa yang dibuat (ide & konsep desain), sedangkan TDD berfokus pada bagaimana cara membuatnya (teknis kode & implementasi).
Pertemuan 3: Game Loop, Fisika, dan Transform
1. Game Loop (Jantung Game)
Siklus komputasi yang terus berulang sepanjang runtime aplikasi game:
- Input: Membaca tombol masukan dari perangkat keras kontroler/keyboard/touchscreen.
- Update: Memproses simulasi kalkulasi posisi, fisika objek, dan evaluasi keputusan AI.
- Render: Menggambar status visual lingkungan ke layar monitor.
2. Penggunaan Delta Time
Penting digunakan agar kecepatan pergerakan karakter konsisten di seluruh perangkat, tanpa bergantung pada variasi framerate (FPS).
- Tanpa deltaTime: FPS tinggi membuat objek bergerak terlampau cepat; FPS rendah membuat gerakan lambat.
- Dengan deltaTime:
posisi += kecepatan * deltaTimemenjamin laju pergerakan dikalkulasi per detik, bukan per frame.
3. Manager Pattern
Pola arsitektur software untuk mengelola status global dalam game:
- GameManager: Mengatur state permainan (menang, kalah, jeda level).
- AudioManager: Mengontrol musik latar dan efek suara interaksi.
- UIManager: Menangani antarmuka visual pemain seperti health bar dan skor.
- Perhatian: Hindari pembengkakan manajer menjadi God Object (kelas monolitik raksasa).
4. Sistem Koordinat dan Transform
- 2D: Sumbu X (horizontal) dan Sumbu Y (vertikal).
- 3D: Penambahan sumbu Z (dimensi kedalaman spasial).
- World vs Local Space: Koordinat World mengacu pada titik nol semesta game, sedangkan Local relatif terhadap objek induk (parent).
- Vector: Tipe data matematis representasi posisi, arah gerak, maupun orientasi gaya.
- Transform: Komponen wajib setiap GameObject yang menyimpan data Position, Rotation, dan Scale.
5. Rigidbody dan Fisika
Komponen pendukung yang membuat objek patuh terhadap hukum fisika komputasi (massa, gaya gesek, gravitasi). Tipenya mencakup:
- Dynamic: Dipengaruhi penuh oleh gaya tumbukan dan gravitasi.
- Kinematic: Gerakan digerakkan eksplisit melalui script tanpa terdorong oleh gaya benturan luar.
- Static: Objek diam tanpa pergerakan (misalnya lantai atau dinding pembatas).
- AddForce: Metode penambahan vektor dorong fisika terhadap objek.
Pertemuan 4: Object Pooling dan Collision
1. Object Pooling
Permasalahan: Instansiasi (Instantiate) dan pemusnahan (Destroy) objek secara berulang (seperti peluru dan drop item) menyebabkan lonjakan alokasi Garbage Collector sehingga memicu FPS drop.
Solusi: Object Pooling menginisialisasi kumpulan objek sekaligus sejak awal runtime, menonaktifkannya saat tidak dipakai, dan mengaktifkannya kembali saat diperlukan tanpa memicu alokasi memori berlebih.
2. Collider dan Tipe Deteksi Tabrakan
Collider berfungsi menentukan batas fisik representasi objek saat benturan.
- Jenis Collider: Primitif (box, sphere — ringan), Compound (gabungan primitif), dan Mesh (detail presisi namun komputasi berat).
- Collision: Menghasilkan benturan fisik padat dengan efek pantulan atau hambatan gerak.
- Trigger: Penetrasi tembus tanpa reaksi tolak, murni memicu event programatik (misalnya batas checkpoint, area healing, zona trigger).
3. Physics Material
Menentukan elastisitas dan friksi permukaan objek:
- Friction: Hambatan geser permukaan (nilai nol untuk bidang amat licin seperti es).
- Bounciness: Koefisien restitusi pemantulan (nilai 1 menandakan pemantulan energi penuh).
4. Optimasi Benturan
- Gunakan pembagian komputasi Broad Phase sebelum pengecekan presisi.
- Prioritaskan collider primitif sederhana dibanding mesh collider.
- Manfaatkan Layer Collision Matrix untuk mematikan pengecekan tabrakan antarlayer yang tidak relevan.
Pertemuan 5: Spatial Sensing (Deteksi Lingkungan)
1. Konsep Spatial Sensing
Kemampuan agen otonom untuk mendeteksi rintangan, melacak keberadaan lawan, dan mengenali lingkungan sekitar.
2. Metode Deteksi Spasial
- Raycasting: Menembakkan garis vektor linear dari titik asal ke arah tertentu berdasarkan persamaan
R(t) = O + tDguna mendeteksi objek pertama yang terpotong. - Shape Casting: Menembakkan volume geometri (SphereCast, BoxCast, CapsuleCast) untuk akurasi benturan yang memiliki ketebalan fisik.
- Overlap Detection: Menguji keberadaan objek di dalam area radius statis (contoh: gelombang ledakan area, radar).
- Field of View (FoV): Mensimulasikan kerucut visual NPC menggunakan perhitungan jarak, uji sudut pandang (dot product), dan konfirmasi garis bebas halang (raycast line-of-sight).
- Layer Mask: Penapisan bitwise untuk membatasi deteksi raycast hanya pada layer sasaran yang ditentukan.
Pertemuan 6: Steering Behaviour
1. Pengertian Steering Behaviour
Algoritma navigasi gerak kecerdasan buatan otonom untuk menghasilkan pergerakan yang organik, lentur, dan realistis.
2. Komponen dan Rumus Matematis
Setiap agen didukung oleh variabel posisi, kecepatan (velocity), dan percepatan (acceleration):
Steering Force = Desired Velocity - Current Velocity
Posisi = Posisi + Velocity
Velocity = Velocity + Acceleration
3. Ragam Pola Steering
- Seek: Menuju koordinat target secara agresif tanpa penurunan laju di titik akhir (arah gerak: Target − Posisi).
- Flee: Berlari berlawanan arah menjauhi bahaya target (arah gerak: Posisi − Target).
- Arrive: Modifikasi dari pola seek yang memperlambat laju agen begitu berada di dalam radius deselerasi untuk berhenti mulus tepat di titik sasaran.
- Wander: Menghasilkan gerakan jelajah acak yang halus dengan memproyeksikan target rotasi kecil acak pada lingkaran di depan agen secara kontinu.
Bagian 2: Pengujian Perangkat Lunak (Software Testing)
Prinsip Dasar dan Konsep Kualitas
1. Esensi Pengujian
Pengujian perangkat lunak adalah aktivitas mengeksekusi sistem untuk mengungkap kegagalan tersembunyi dengan membandingkan luaran aktual (actual result) terhadap harapan spesifikasi (expected result). Tujuannya adalah mendeteksi sebanyak mungkin defek sedini mungkin.
2. Verification vs. Validation
- Verification: Mengevaluasi apakah produk dibangun sesuai rencana spesifikasi teknis (“Are we building the product right?”).
- Validation: Menilai apakah produk memenuhi kebutuhan dan ekspektasi nyata pengguna (“Are we building the right product?”).
3. Prinsip Fundamental Testing
- Pengujian memperlihatkan keberadaan defek, bukan membuktikan ketiadaan bug secara absolut.
- Pengujian mendalam tanpa batas (exhaustive testing) tidak mungkin dilakukan.
- Penerapan Pareto Principle (80/20): mayoritas kegagalan fungsional umumnya berkumpul pada modul-modul spesifik.
- Pengujian harus direncanakan secara terstruktur dari tingkat granular ke tingkat integrasi luas.
4. Dimensi Kualitas
- Quality in Fact: Pemenuhan kesesuaian terhadap spesifikasi teknis rancangan perangkat lunak secara bebas error.
- Quality in Perception: Kepuasan akhir, ergonomi visual, dan kenyamanan pengguna saat berinteraksi dengan aplikasi.
Klasifikasi Error, Defect, dan Siklus Kerusakan
1. Rantai Kegagalan Perangkat Lunak
Mistake (Kekhilafan Manusia) → Fault / Defect (Cacat Kode/Desain) → Failure (Disfungsi Sistem Saat Dijalankan)
2. Jenis-Jenis Defect
- Wrong: Implementasi logika atau perhitungan tidak akurat dari kebutuhan rancangan.
- Missing: Fungsi atau atribut spesifikasi yang terlewat untuk dibuat.
- Extra: Fitur berlebih yang dibuat di luar batas requirement dokumen.
3. Klasifikasi Galat (Error)
- Syntax Error: Pelanggaran tata bahasa pemrograman yang dicegah saat proses kompilasi.
- Logical Error: Kegagalan algoritma di mana alur berjalan tanpa crash namun menghasilkan data yang menyimpang.
- Runtime Error: Interupsi abnormal saat program berjalan (misal pemanggilan pointer null atau pembagian dengan angka nol).
- Functional Error: Fitur gagal memenuhi alur kerja interaksi yang dipersyaratkan.
- Performance Error: Kemunduran performa, respon lambat, atau kebocoran sumber daya memori.
- Security Error: Celah keamanan pada sistem yang rentan dieksploitasi pihak luar.
Strategi Pengujian dan Model Mutu McCall
1. Tahapan Pengujian (Testing Stages)
- Unit Testing: Pengujian isolatif terendah pada fungsi, modul, atau method terkecil secara internal (umumnya White Box).
- Integration Testing: Pengujian antarmuka protokol integrasi antarmodul perangkat lunak.
- System Testing: Pengujian komprehensif pada keseluruhan kesatuan sistem aplikasi (umumnya Black Box).
- Acceptance Testing: Validasi operasional oleh klien/pengguna, terbagi atas Alpha Testing (lingkungan pengembangan tertutup) dan Beta Testing (lingkungan pengguna riil).
- Regression Testing: Pengujian verifikasi pascamodifikasi kode untuk menjamin perubahan perbaikan tidak merusak fungsionalitas terdahulu.
2. Metodologi White Box dan Black Box
White Box Testing (Fokus pada Struktur Internal Kode):
- Statement, Branch, Path, dan Loop Coverage.
- Pengukuran Cyclomatic Complexity melalui formula representasi graf:
V(G) = E - N + 2(di mana E adalah edge dan N adalah node).
Black Box Testing (Fokus pada Masukan Fungsional dan Luaran):
- Equivalence Partitioning
- Boundary Value Analysis (analisis nilai batas atas/bawah)
- Decision Table & State Transition Testing
- Use Case Testing
3. Model Kualitas Perangkat Lunak McCall
- Product Operation: Correctness, Reliability, Usability, Integrity, Efficiency.
- Product Revision: Maintainability, Flexibility, Testability.
- Product Transition: Portability, Reusability, Interoperability.
4. Manajemen Biaya Defect (Cost of Quality)
Biaya penanganan cacat program melonjak secara eksponensial seiring bertambahnya tahapan pengembangan:
- Tahap Requirement & Design: Biaya skala 1x.
- Tahap Pengujian (Testing): Biaya eskalasi mencapai 10x lipat.
- Tahap Pascarilis Produksi: Biaya perbaikan dapat menembus 100x lipat.
Data empiris menunjukkan bahwa dua pertiga cacat perangkat lunak berakar dari fase awal (analisis kebutuhan & desain), sehingga pengujian berbasis risiko (risk-based testing) sejak dini merupakan langkah preventif paling hemat biaya.
English with a size of 16.67 KB