Saya sedang membangun mesin gim saya sendiri di C ++ dan saat ini saya memutuskan antarmuka pengguna apa yang harus saya gunakan.
Haruskah saya menggunakan perpustakaan? Haruskah saya membuatnya sendiri?
Saya sedang membangun mesin gim saya sendiri di C ++ dan saat ini saya memutuskan antarmuka pengguna apa yang harus saya gunakan.
Haruskah saya menggunakan perpustakaan? Haruskah saya membuatnya sendiri?
Jawaban:
Faktanya, widget Qt dapat diintegrasikan dengan OpenGL dan OpenGL dapat dengan mudah diintegrasikan dengan Qt (QGLWidget). Tentu saja, platform mencari widget asli mungkin tidak persis apa yang Anda cari, tetapi jangan khawatir, ada cara untuk menyesuaikannya, membuat sendiri atau menggunakan sesuatu yang lain yang lebih sesuai dengan kebutuhan Anda, seperti Qt Quick (yang Anda harus dapat mengintegrasikan juga).
Jika Anda tertarik, jangan lewatkan tautan ini: Widget masuk ke dimensi ketiga: WolfenQt dan Percepat widget Anda dengan OpenGL
Saya tidak berpikir Anda harus menulis sendiri, tugas menciptakan mesin permainan sangat besar dengan sendirinya, jika Anda ada banyak perpustakaan dengan lisensi yang baik yang dapat Anda gunakan, dan modifikasi sesuai dengan keinginan Anda.
Untuk mesin gim saya akan pergi untuk GUI mode Segera. Informasi lebih lanjut di sini: http://www.mollyrocket.com/forums/viewtopic.php?t=134
Gagasan utamanya adalah menggambar komponen dan mengontrol interaksi pada saat yang sama:
if (button(id, position, size))
{
button_was_pressed();
}
Untuk satu, Unity menggunakan konsep serupa.
Anda dapat menemukan implementasi oleh NVIDIA, yang digunakan dalam demo mereka: http://code.google.com/p/nvidia-widgets/
Secara pribadi, saya akan merekomendasikan CEGUI . Ini open source dan cukup bagus. Namun, yang harus Anda ingat adalah bahwa itu bisa sangat, sangat bertele-tele jika Anda menulis semuanya dengan tangan.
Tetapi, di sisi positifnya, memiliki penyaji untuk OpenGL dan DirectX. Saya berhasil meletakkannya di atas template yang biasanya saya gunakan, yang menulis ke tekstur langsung menggunakan VBO (itu jenis hacky).
Game yang dimaksud adalah untuk tugas jaringan. Tugasnya adalah memiliki permainan jaringan, dengan lobi. Saya tahu lobi akan membuat sakit di leher, jadi saya memilih perpustakaan yang melakukan sebagian besar untuk saya.
Masalah dengan sebagian besar pustaka GUI (Qt mungkin yang paling populer C ++ yang bukan hanya Windows) adalah bahwa sebagian besar tidak akan terintegrasi dengan baik ke dalam mesin. Secara tradisional di aplikasi GUI, perpustakaan GUI mengontrol loop utama dan Anda hanya menghubungkan panggilan balik ke acara. Dalam mesin gim, Anda biasanya ingin mengendalikan perulangan, sehingga bisa jadi paling sulit. Mungkin Anda mencari sesuatu yang hanya akan menangani kontrol menggambar dan dialog dan semacamnya ke dalam konteks 3D yang Anda berikan? Itu bisa menjadi jauh lebih sulit untuk ditemukan: - /
Saya sangat percaya pada menulis sendiri tetapi sekali lagi saya sangat oldskool. Berkelahi dengan lib GUI lain untuk melakukan hal yang Anda inginkan cenderung membuat saya gila, ditambah dengan fakta bahwa sebagian besar GUI gim cukup sepele sehingga Anda tidak perlu pergi keluar pada MDI dan desain OO super di mana tombol dapat memiliki tampilan gulir yang menyorot ketika Anda melayang-layang di atas bilah tugas di sisi kotak centang dengan ibu jari yang dapat diseret - atau sesuatu seperti itu. Stroke berbeda untuk orang yang berbeda kurasa.
Salah satu opsi yang mungkin layak diselidiki adalah menggunakan WebKit untuk membuat antarmuka pengguna Anda dan melakukan semua UI Anda dengan CSS / HTML / Javascript.
Berikut ini adalah implementasi sumber terbuka (Berkelium) , dan inilah sumber tertutup, penerapan komersial (Awesomium)
Saya akan menyarankan IUP - Portable User Interface: http://www.tecgraf.puc-rio.br/iup/
Saya hanya menggunakannya dengan bahasa pemrograman Lua tetapi sangat mudah digunakan. Itu hanya datang dalam rasa C, LED dan Lua tetapi Anda dapat dengan mudah membuat pembungkus untuk itu.
Saya pribadi menggunakan CEGUI dalam proyek game saya, dan ini adalah solusi yang cukup kuat. Masalahnya adalah, kadang-kadang hampir terasa seperti membuat satu perubahan kecil pada mengubah banyak file Anda.
Saya belum menggunakannya, tetapi libRocket baru saja benar-benar gratis, menghapus semua biaya lisensi dan apa yang tidak. Bagian keren dari lib ini adalah Anda menulisnya dalam sintaks html / css. http://librocket.com
Hanya mengajukan saran yang menarik, jika mengembangkan game untuk Windows, gunakan Win32 API. Cukup gunakan kontrol windows normal (saya akan merekomendasikan menggunakan perpustakaan ATL / WTL) tetapi membuat mereka pemiliknya ditarik.
Saya melihat teknik ini digunakan dalam game Unreal Tournament pertama, sambil melihat melalui header yang dirilis secara publik (untuk pembuat mod).
Salah satu manfaat utama untuk melakukan ini adalah memiliki seluruh infrastruktur Windows UI yang Anda inginkan, serta mempertahankan preferensi pengguna untuk tingkat pengulangan keyboard, sensitivitas mouse, kecepatan klik ganda, dan hal-hal lainnya. Juga jika Anda mematuhi aturan, antarmuka akan cepat dan bebas berkedip.
Kekurangannya adalah Anda masih harus menulis beberapa kode untuk mensubktrasikan kontrol windows untuk membuatnya menarik, sehingga Anda dapat menerapkan grafik dan efeknya sendiri.
Hanya membuang ini sebagai ide.