Saat ini saya sedang mengerjakan proyek iOS bernama Old Frank yang telah saya coba ikuti pola desain MVC.
Intinya adalah.
GameObjects(model) <- Scene(controller) -> Sprites "SpriteKit" (View)
Sekarang jika saya mengerti MVC dengan benar, Anda tidak dapat menggunakan banyak fitur yang ditawarkan SpriteKit jika Anda ingin mengikuti MVC. Misalnya saja SKAction
, deteksi tabrakan, dll.
Bukankah itu tergantung pada model di mana objek game berada dan bagaimana mereka harus bereaksi ketika menyentuh objek lain? Bukankah itu tergantung pada model untuk menentukan lokasi dari waktu ke waktu?
Apakah ada bagian SpriteKit yang akan dianggap oke untuk digunakan sebagai "tampilan" di MVC selain rendering?
ios
objective-c
spritekit
mvc
Skyler Lauren
sumber
sumber
Jawaban:
Pertanyaan Anda bagus. Saya memiliki pertanyaan yang persis sama tentang SpriteKit dan sangat bingung tentang kurangnya informasi di web tentang ini. SpriteKit tampaknya mendorong Anda untuk memasukkan semua kode Model-View-Controller Anda ke kelas yang sama (subkelas SKScene Anda), yang benar-benar membingungkan bagi saya. Bagaimana Anda bisa membangun game dengan kompleksitas menggunakan teknik itu? Menggabungkan status permainan (skor, angka, dll), dengan kode pengontrol seperti touches Mulai / Berakhir, dan melihat rendering semua di kelas yang sama menjadi sangat sulit untuk dikelola di luar permainan yang paling sederhana.
Saya setuju bahwa menggunakan pola kenang-kenangan untuk membantu kegigihan adalah ide yang bagus, tetapi saya juga berpikir pindah ke desain MVC bisa bermanfaat. Saat ini saya memindahkan game saya ke arsitektur MVC. Pendekatan saya saat ini adalah membuat model (objek permainan) saya mengelola physicsBodies, subkelas SKScene bertindak sebagai pengontrol, dan kelas terpisah untuk bertindak sebagai pandangan untuk mengonfigurasi dan membuat aspek visual dari SKNodes dalam adegan. Saya hanya sebagian jalan melalui proses, jadi tidak bisa mengatakan dengan pasti apakah ini akan menjadi desain yang baik, tetapi sepertinya itu akan jauh lebih baik daripada memiliki subkelas 10.000 baris SKScene.
sumber
Secara sederhana, desain umum dalam game SpriteKit adalah adegan, lapisan, simpul, dan simpul anak.
Anda dapat membuat setiap bagian menjadi kelas diskrit yang merangkum semua bagian, properti, dan metode.
Misalnya kelas Latar Belakang yang memiliki gambar berlapis, partikel, berbagai properti seperti kecepatan setiap lapisan harus bergerak dan metode publik untuk memulai dan berhenti menggulir latar belakang.
Dalam desain ini Anda merakit kelas-kelas diskrit yang melakukan pekerjaan mereka sendiri ke dalam Scene yang sebagian besar menangani pembaruan berjalan :, fisika, acara sentuh, dll.
sumber