Saya sedang mencari untuk membangun lintas platform platform engine 2D gaya permainan RPG untuk ChaiScript .
Saya ingin dapat melakukan semua gambar dengan SVG dan membutuhkan input joystick. Saya juga membutuhkan perpustakaan yang saya gunakan untuk menjadi opensource dan kompatibel dengan lisensi BSD.
Saya kenal dengan allegro , ClanLib , dan SDL . Sejauh yang saya tahu, tidak ada perpustakaan yang dibangun atau integrasi yang jelas untuk SVG. Juga, saya mengetahui percakapan sebelumnya di situs ini mengenai Qt untuk pengembangan game SVG.
Saya berharap untuk menghindari Qt karena ukuran dan kompleksitas membuatnya menjadi persyaratan. Selain itu, Qt tampaknya tidak memiliki dukungan input joystick, yang mengharuskan SDL atau pustaka lain juga digunakan.
Jadi pertanyaan saya dapat disimpulkan sebagai berikut:
- Apa cara terbaik untuk mendapatkan dukungan SVG dan joystick di perpustakaan 2D C ++ sambil meminimalkan ketergantungan sebanyak mungkin (lebih baik menghindari Qt sama sekali)?
Jawaban:
Saya tidak melihat alasan mengapa Anda tidak bisa menggunakan SDL atau perpustakaan input lain dengan perpustakaan grafis 2D seperti libcairo .
Adapun ChaiScript, pernahkah Anda mendengar tentang Lua ?
sumber
Pernahkah terpikir oleh Anda untuk bertanya ... mengapa begitu?
Tentu, SVG adalah spesifikasi yang rumit untuk diterapkan pada level dasar "memasukkan XML ke memori dan memvalidasinya". Tapi saya tidak berpikir Anda sepenuhnya menghargai fakta sederhana bahwa rendering SVG tidak cepat .
Browser web cepat jika mereka membuat halaman web kurang dari 500 ms atau lebih. Gambar SVG mungkin membutuhkan waktu 20 ms + untuk diurai, dan itu untuk yang kecil, sederhana. Sesuatu yang mungkin Anda temukan dalam sebuah game, sebuah game non-grafis-sepele, akan memakan waktu lebih lama. Render gambar SVG tidak dimaksudkan untuk animasi cepat.
Bahkan sesuatu tingkat rendah seperti libCairo bukanlah penyaji berkinerja tinggi. Tentu saja, ini cukup cepat untuk peramban, tetapi tidak terlalu bagus dalam kinerja rendering perangkat lunaknya.
Singkatnya, saya akan membuang sepenuhnya SVG dan melihat apakah libCairo dapat melayani kebutuhan Anda. Itu hanya untuk tujuan evaluasi, untuk melihat apakah kinerjanya cukup cepat dalam keadaan yang mendekati tujuan yang Anda inginkan. Setelah itu ditentukan, Anda dapat memutuskan apa yang harus dilakukan selanjutnya dalam hal teknologi (Qt, SDL, apa pun).
sumber
Mengenai SVG ini bukan yang terbaik untuk menghasilkan konten on-the-fly dan untuk rendering real-time, bahkan dalam 2d, namun ....
Jika Anda menggunakan file SVG untuk membuat konten asli Anda, maka Anda bisa memiliki fase generasi pra-level / area dengan layar pemuatan / cut-scene yang sesuai di mana Anda akan menggunakan konten SVG untuk membuat gambar standar dari resolusi yang Anda butuhkan, ini akan memungkinkan Anda untuk kode hanya dengan gambar normal sambil mempertahankan fleksibilitas SVG untuk penargetan multi-resolusi. Ini bukan ide, tetapi dengan cara ini Anda dapat memanfaatkan perangkat keras untuk bermain dengan gambar yang telah ditentukan sebelumnya seperti yang dirancang untuk dilakukan, daripada mencoba menghasilkan konten dengan cepat dari file SVG. Karena komputer hanya akan menampilkan layar pemuatan / cut-scene, Anda dapat mendedikasikan sebagian besar sumber daya yang tersedia untuk menghasilkan gambar standar dari SVG dan karenanya melakukannya dengan cepat dan efisien.
sumber
Irrlicht memiliki dukungan SVG dan joystick
sumber