Ada beberapa terobosan yang sangat menarik dalam toolkit UI utama selama beberapa tahun terakhir. Game UIs telah berevolusi juga, tetapi pada kecepatan yang agak lambat. Ini mungkin karena mengembangkan subsistem UI berfitur lengkap adalah usaha yang signifikan, dan sulit untuk membenarkan investasi sumber daya.
Sistem UI favorit pribadi saya adalah Windows Presentation Foundation (WPF). Ini benar-benar membawa potensi diferensiasi UI ke tingkat berikutnya. Berikut adalah beberapa fitur yang lebih menarik:
Kontrol "terlihat-kurang" secara default. Logika kontrol dan tampilan visual umumnya dipisahkan. Setiap kontrol dikirimkan dengan gaya dan templat default, yang menjelaskan tampilan visual standarnya. Misalnya, tombol dapat direpresentasikan sebagai persegi panjang bulat dengan goresan luar, warna solid atau latar belakang gradien, dan penyaji konten (untuk menyajikan keterangan). Pengembang (atau desainer) dapat membuat templat gaya khusus yang mengubah tampilan dan (sampai batas tertentu) perilaku kontrol. Gaya dapat digunakan untuk menimpa properti sederhana kontrol, seperti warna foreground / background, template, dll .; templat mengubah struktur visual yang sebenarnya.
Gaya dan template mungkin termasuk "Pemicu". Pemicu dapat mendengarkan peristiwa atau nilai properti tertentu (atau kombinasi nilai) dan mengubah aspek gaya atau templat secara kondisional. Misalnya, templat tombol biasanya memiliki pemicu pada properti "IsMouseOver" untuk tujuan mengubah warna latar belakang saat mouse melayang di atas tombol.
Ada beberapa "level" elemen UI yang berbeda, mulai dari elemen bobot yang lebih ringan dengan fungsionalitas minimal hingga kontrol berat penuh. Ini memberi Anda beberapa fleksibilitas dalam bagaimana Anda menyusun UI Anda. Kelas elemen UI yang paling sederhana UIElement
,, tidak memiliki gaya atau templat dan hanya mendukung acara masukan yang paling sederhana. Untuk elemen sederhana seperti indikator status, fungsi ini mungkin yang Anda butuhkan. Jika Anda memerlukan dukungan input yang lebih luas, Anda dapat berasal dari FrameworkElement
(yang meluas UIElement
). Widget tradisional umumnya berasal dari Control
, yang meluas FrameworkElement
dan menambahkan gaya kustom dan dukungan template (antara lain).
WPF menggunakan model grafik vektor resolusi tetap, terukur, independen. Pada Windows, aplikasi WPF dirender dan disusun menggunakan Direct3D.
Pengenalan WPF termasuk bahasa pemrograman deklaratif baru yang disebut Xaml. Xaml, berdasarkan Xml, adalah bahasa yang disukai untuk mendeklarasikan "adegan" UI. Ini sebenarnya cukup apik, dan meskipun mungkin tampak serupa pada pandangan pertama, secara fundamental berbeda dari bahasa yang ada seperti XUL (dan jauh lebih kuat).
WPF memiliki subsistem teks yang sangat canggih. Ini mendukung sebagian besar jika tidak semua fitur font OpenType, antialiasing ClearType dua arah, penentuan posisi subpixel, dll.
"Ok, bagus, sekarang bagaimana ini relevan dengan pengembangan game?"
Kembali ketika WPF masih dalam pengembangan (dan dikenal sebagai "Avalon"), saya mengambil kursus desain video game di Georgia Tech. Tugas akhir saya adalah permainan strategi berbasis giliran, dan saya menginginkan UI yang sangat cakap. WPF / Avalon sepertinya rute yang baik untuk pergi karena memiliki satu set lengkap kontrol berfitur lengkap dan memberi saya kemampuan untuk sepenuhnya mengubah tampilan dan nuansa kontrol tersebut. Hasilnya adalah game dengan UI yang indah dan jernih dengan tingkat fungsionalitas yang biasanya hanya Anda lihat di aplikasi lengkap.
Sekarang, masalah dengan menggunakan WPF untuk game adalah itu cukup berat dan menjadikannya "kotak pasir" sendiri. Maksud saya, tidak ada cara yang didukung untuk hosting WPF dalam lingkungan game Direct3D atau OpenGL. Dimungkinkan untuk meng-host konten Direct3D dalam aplikasi WPF, tetapi Anda akan dibatasi oleh framerate dari aplikasi WPF, yang umumnya lebih rendah dari yang Anda inginkan. Untuk beberapa jenis gim, seperti gim strategi 2D (tangkapan layar proyek gim WPF saya saat ini), masih bisa berfungsi dengan baik. Untuk hal lain, jangan terlalu banyak. Tetapi Anda masih bisa menerapkan beberapa konsep arsitektur WPF yang lebih menarik dalam mengembangkan kerangka UI Anda sendiri.
Ada juga implementasi WPF / G3 / Direct3D open-source yang tidak dikelola yang disebut "WPF / G (WPF untuk Game)"] ( http://wpfg.codeplex.com/ ) yang dirancang khusus untuk digunakan dalam game di kedua Win32. dan Windows Mobile. Pengembangan aktif tampaknya telah berhenti, tetapi terakhir kali saya memeriksanya, itu adalah implementasi yang agak lengkap. Subsistem teks adalah satu bidang yang benar-benar kurang dibandingkan dengan implementasi WPF Microsoft, tapi itu kurang menjadi masalah untuk game. Saya akan membayangkan bahwa mengintegrasikan WPF / G dengan mesin game berbasis Direct3D akan relatif mudah. Pergi rute ini dapat memberi Anda kerangka kerja UI yang sangat mampu, resolusi-bebas dengan dukungan luas untuk penyesuaian UI.
Hanya untuk memberi Anda gambaran seperti apa UI game berbasis WPF, berikut adalah screenshot dari proyek kesayangan saya: