Saya mengalami kesulitan membungkus kepala saya di sekitar desain game. Pada platform android, saya memiliki aktivitas dan mengatur tampilan kontennya dengan tampilan permukaan khusus. Tampilan permukaan kustom bertindak sebagai panel saya dan saya membuat contoh dari semua kelas dan melakukan semua gambar dan perhitungan di sana.
Pertanyaan: Haruskah saya membuat instance kelas lain dalam aktivitas saya?
Sekarang saya membuat kelas utas khusus yang menangani loop game.
Pertanyaan: Bagaimana saya menggunakan kelas yang satu ini dalam semua kegiatan saya? Atau apakah saya harus membuat turunan terpisah dari kelas utas setiap kali?
Dalam permainan saya sebelumnya, saya memiliki beberapa level yang harus membuat turunan dari kelas utas dan di kelas utas saya harus menetapkan metode konstruktor untuk setiap tingkat yang terpisah dan dalam loop menggunakan pernyataan pergantian untuk memeriksa level mana yang perlu dirender. dan perbarui. Maaf jika itu terdengar membingungkan.
Saya hanya ingin tahu apakah metode yang saya gunakan tidak efisien (yang mungkin) dan bagaimana cara mendesainnya dengan cara yang benar. Saya telah membaca banyak tutorial di luar sana dan saya masih mengalami banyak masalah dengan topik khusus ini. Mungkin tautan ke beberapa tutorial yang menjelaskan hal ini? Terima kasih.
sumber
OpenGL ES
Anda harus tahu bahwa penyaji diOpenGL ES
sudah memiliki utas sendiri dan dalam hal ini Anda tidak perlu secara manual membuat dan memulai yang baruThread
danRunnable
untuk sistem itu.Biasanya, loop game Anda mandiri di dalam satu Aktivitas.
saat Anda berganti Activity, Anda menghentikan / mematikan game-loop Anda. Aktivitas terpisah harus sesuai dengan menjeda permainan (misalnya karena Anda telah beralih ke aktivitas "kirim email ke teman" atau "menu utama")
Untuk level tambahan, Anda seharusnya tidak membuat atau merusak semua utas baru ... kecuali jika Anda beralih ke "level-selesai, memuat level berikutnya, harap tunggu" Aktivitas, dan Anda harus memulai kembali "main game" "Aktivitas tetap. Tetapi bahkan dalam kasus itu, Anda tidak benar-benar membuat utas "ekstra", Anda hanya membuat satu utas dalam satu Aktivitas tersebut, dan secara berurutan membunuh / memulai kembali / membunuh / memulai kembali ... dll. Aktivitas tersebut. setiap kali level selesai.
sumber
Jika Anda mengerti bahasa Jerman, tutorial ini sangat bagus.
Untuk bahasa inggris saya bisa merekomendasikan tutorial ini
Mengenai kelas utas: Saya tidak tahu apakah benar-benar perlu bahwa Anda dapat referensi dari semua kelas dalam aplikasi Anda. Dalam permainan saya, saya memecahkannya seperti itu:
Kelas yang bertanggung jawab untuk menggambar GUI utama memiliki metode render utama. Dalam metode ini disebut kelas utas yang memperbarui semua elemen GUI dan memproses input pengguna.
Thread juga bertanggung jawab untuk mempertahankan framerate yang konstan. Tergantung pada gim yang Anda kembangkan, ini bisa jadi penting.
sumber