# Starter Pong Dua Pemain SMA · Pemula · sesi 9–16 ## Memakai starter Ekstrak seluruh ZIP, Project Manager → Import → project.godot, lalu F5. Panah bergerak pada mode fisika; petunjuk kontrol khusus ada pada HUD. R membuat scene baru. Siapkan folder terpisah sebelum mengubah kode. Godot 4.x; contoh diperiksa dengan 4.4.1 Compatibility. ## Cakupan yang tersedia Dua paddle fisika, bola move_and_collide, pantulan normal, servis ulang, dan penghitung gol. Skor per pemain, batas tiga, serta menu dikembangkan siswa. Starter adalah acuan struktur dan mekanik minimum, bukan proyek akhir yang memenuhi semua rubrik. Gunakan lab sesi untuk menguji konsep kecil. Siswa membangun integrasi dan keputusan sendiri sesuai tugas presentasi. Tidak ada build executable yang diklaim telah diuji oleh paket ini. ## Susunan node saat runtime Node dibuat oleh world.gd dari bentuk dasar. Jalankan F6 lalu lihat Scene → Remote untuk menelusuri pohonnya. Untuk belajar konstruksi editor, buat scene siswa terpisah dan tambahkan node melalui tombol + sesuai fungsi helper di world.gd. ```text Arena2D Arena → CharacterBody2D / StaticBody2D / Area2D (mode fisika) CanvasLayer → Label (HUD) Button (mode antarmuka) Timer (mode spawn) ``` ## Cara membangun di editor 1. Buat root Node2D/Control sesuai tugas, simpan scene. 2. Tambahkan bentuk visual dan collision secara terpisah. Collider harus anak badan/area, bukan hanya mesh. Pada 3D, tambahkan kamera current dan lampu. 3. Tambahkan script pada node yang tepat. Implementasikan satu mekanik dari tugas sesi, uji, baru lanjut. 4. Hubungkan signal sekali lewat panel Node atau _ready. Label membaca model, bukan menjadi sumber keadaan. 5. Catat input, keadaan awal, harapan, aktual, perbaikan, dan batas pengujian. ## Urutan praktik - Sesi 9: Arena Pong dan Input Map. Susun dua paddle CharacterBody2D, dinding StaticBody2D dan collision; tetapkan aksi atas-bawah yang berbeda untuk tiap pemain - Sesi 10: Vector2 velocity dan delta. Gerakkan paddle dalam _physics_process dengan velocity dan move_and_slide; bandingkan kecepatan per detik dan batasi posisi vertikal - Sesi 11: Bola dan pantulan. Gerakkan bola CharacterBody2D memakai displacement velocity * delta melalui move_and_collide; gunakan normal tabrakan untuk memantulkan vektor - Sesi 12: Servis dan arah awal. Buat fungsi servis dengan posisi pusat dan dua arah awal terbatas; pastikan bola tidak muncul di dalam paddle - Sesi 13: Garis gol dan signal. Pasang Area2D pada kedua sisi; gol mengirim signal satu kali lalu menghentikan bola sebelum memperbarui skor - Sesi 14: Skor sampai tiga. Pisahkan aturan skor dari Label; periksa menang sebelum servis baru dan tampilkan pemenang yang sesuai - Sesi 15: Ulang dan uji tepi paddle. Kembalikan posisi, skor, status dan bola; uji sudut paddle serta dinding dengan kecepatan yang dibatasi - Sesi 16: Presentasi: Pong Dua Pemain. Dua siswa memainkan dua putaran dan mencatat bola lolos, skor ganda, atau input berbenturan sebelum presentasi ## Kriteria proyek - Dua input tidak saling mengambil alih dan paddle tetap di arena - Bola memantul sesuai normal dan tidak dikalikan delta dua kali - Satu gol memberi satu skor dan servis baru berasal dari pusat - Menang pada tiga poin menghentikan putaran; ulang menghapus skor lama Sumber: https://docs.godotengine.org/en/stable/