# Starter Ekspedisi Bercabang 3D SMA · Lanjutan · sesi 49–64 ## 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 Gerak, dua NPC berbasis jarak, menerima lalu menyelesaikan satu misi, dan reset. Graf tiga misi, dua akhir, dialog data, serta save tervalidasi 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 Arena3D WorldEnvironment DirectionalLight3D Camera3D (current) StaticBody3D + CollisionShape3D (lantai) MeshInstance3D / CharacterBody3D / RigidBody3D (sesuai mode) CanvasLayer → Label (HUD) ``` ## Cara membangun di editor 1. Buat root Node3D, 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 49: Audit flag dan graf misi. Gambar tiga misi dengan panah prasyarat serta dua akhir; telusuri urutan sah dan satu urutan terlarang di kertas - Sesi 50: Brief dan skema misi. Tetapkan ID, prasyarat, flag selesai dan akibat pilihan; pisahkan definisi misi dari progres pemain - Sesi 51: Courtyard dan dua NPC. Susun arena bentuk dasar, pemain dan dua Area3D interaksi; pilih satu NPC aktif saat berada dekat - Sesi 52: Dialog dari data. Buat panel Control dengan ID dialog, teks serta dua pilihan; uji tujuan tidak valid pada contoh kecil - Sesi 53: Evaluasi prasyarat. Fungsi membaca semua flag syarat sebelum menawarkan misi; tidak mengubah flag saat hanya menampilkan dialog - Sesi 54: Status misi terpusat. Kelola TERKUNCI, TERSEDIA, AKTIF dan SELESAI dari data; tampilan menerima signal perubahan - Sesi 55: Akibat pilihan sekali. Terapkan satu keputusan dan kunci pilihan sesudahnya; interaksi berulang tidak menggandakan penyelesaian - Sesi 56: Dua cabang akhir. Tetapkan satu pilihan eksklusif menuju dua akhir; buktikan kedua akhir terjangkau dari progres yang sah - Sesi 57: Log misi dan petunjuk. Tampilkan tujuan aktif sesuai state dan sembunyikan petunjuk yang sudah tidak berlaku - Sesi 58: Skema simpan versi satu. Simpan versi, flag yang dikenal dan ID misi aktif di JSON user://; tulis data sederhana bukan referensi node - Sesi 59: Validasi sebelum muat. Parse ke data sementara, cek versi, tipe, ID serta prasyarat; terapkan hanya setelah semua sah dan pakai default jika gagal - Sesi 60: Reset dan pemulihan. Uji buka ulang pada satu checkpoint aman, mulai baru dan dialog setelah muat tanpa callback ganda - Sesi 61: Matriks jalur misi. Susun kasus misi terkunci, pilihan ulang, tiap akhir, file rusak dan flag yang saling bertentangan - Sesi 62: Brief pengguna baru. Penguji menukar satu prasyarat atau dialog; perbarui data lalu buktikan tidak ada siklus atau akhir tidak terjangkau - Sesi 63: Build dan penyerahan. Uji build, kontrol interaksi, file simpan serta README; prioritaskan perbaikan yang memutus jalur misi - Sesi 64: Presentasi: Ekspedisi Bercabang 3D. Tunjukkan dua akhir, interaksi berulang, simpan-muat sah, penolakan berkas rusak dan alasan struktur sistem Penguji mengubah satu prasyarat misi atau tujuan dialog. Perbarui data, periksa kedua akhir tetap terjangkau, dan uji file progres lama atau rusak sebelum menerima perubahan. ## Kriteria proyek - Graf tiga misi tidak bersiklus dan setiap ID serta akhir dapat ditelusuri - Prasyarat mengunci pilihan dan akibat keputusan diterapkan sekali - Simpan-muat tidak menerima progres dengan prasyarat bertentangan - Data brief baru, dua akhir dan build diuji dengan bukti serta batas pengujian Sumber: https://docs.godotengine.org/en/stable/