Bagaimana Anda mengemas sumber daya, dalam permainan saat Anda memiliki terlalu banyak sumber daya?


10

Saya baru-baru ini membuat klon Space Invaders dasar, di C ++, menggunakan kerangka kerja Allegro 5. Setelah saya selesai, saya menyadari saya memiliki sekitar 10 sprite, dan DLL bernilai 13MB; beberapa pemain bahkan tidak memiliki DLL mingW, yang membuat permainan sangat membingungkan.

Bagaimana cara mengemas semua sumber daya saya dengan cara yang saya dapat dengan mudah menambahkan dan menghapus data ke permainan saya, dan untuk mengurangi ukuran yang diambil oleh sumber daya, pada dasarnya menempatkan mereka di satu tempat? Saya menggunakan kode kunci.


1
Bagaimana Anda memahami istilah sumber daya? Aset seperti gambar, suara, ... atau apakah Anda menyertakan DLL dalam istilah ini?
Christian Ivicevic

Saya lebih suka jika saya bisa cocok dengan DLL juga karena saya punya banyak.
Bugster

Gagasan pertama saya adalah menemukan perpustakaan yang cocok seperti (cukup usang ...) zziplibuntuk menyimpan semua aset saya yang biasa dalam file zip dan kemudian memuatnya dalam permainan saya melalui pipa konten kustom untuk musuh mesin. Apa yang pada dasarnya Anda cari di awal adalah cara untuk memuat file dari file zip ke memori untuk dapat menggunakannya dalam game Anda. Mengenai dll itu cukup sulit karena mereka biasanya harus berada di dir yang sama dengan executable atau Windowsatau System32dir yang TIDAK direkomendasikan! Bagaimana dengan arsip SFX untuk diekstrak TEMPdan dijalankan dari sana?
Christian Ivicevic

3
Apakah Anda bertanya tentang cara menggunakan installer? Karena DLL bukan sumber daya.
Nicol Bolas

Jawaban:


13

Sepertinya ada dua tantangan yang Anda hadapi di sini: distribusi, dan pengemasan aset.

Distribusi

Kemas seluruh aplikasi Anda ke dalam direktori sesuai keinginan Anda, lalu tempatkan direktori tingkat atas ke dalam file .zip. Bagikan file .zip itu. Ketika pengguna Anda mengekstrak zip, mereka akan memiliki folder dengan semua yang mereka butuhkan untuk menjalankan game.

Bagaimana Anda menempatkan file Anda?

  • .Dlls Anda biasanya harus berada di direktori yang sama dengan executable (ada pengecualian, tetapi demi kesederhanaan ...)
  • Aset Anda (gambar, audio) dapat di mana saja Anda inginkan, meskipun jika Anda memindahkannya dengan mengacu pada executable Anda, Anda harus memodifikasi kode pemuatan sumber daya Anda untuk memperhitungkannya.

Saya biasanya melakukan sesuatu seperti ini:

Direktori tingkat atas MyGame \ // menampung seluruh progrma
  bin \ // dll pergi ke sini bersama dengan exe yang dikompilasi
  direktori tingkat atas res \ // sumber daya game
    musik\
    efek suara\   
    suara\
  cfg \ // file konfigurasi default (konfigurasi pengguna masuk dalam direktori pengguna)
  MyGame.lnk // pintasan untuk mengkompilasi exe

Kemasan Aset

Anda dapat menggunakan semacam perpustakaan kompresi (zlib, lzo) untuk memampatkan semua sumber daya game Anda (direktori res \ di atas) ke dalam satu file. Maka Anda perlu menggunakan pustaka kompresi yang sama untuk mengekstraksi konten sumber daya Anda, secara waktu nyata, untuk memuat aset Anda ke dalam gim Anda.

Lalu apa yang terjadi ketika Anda ingin menambal aset Anda? Maka Anda harus: mengkompilasi file aset baru dan mendistribusikannya ke pengguna Anda (sehingga mereka mengunduh kembali apa yang sudah mereka miliki, ditambah beberapa tambahan), atau Anda harus membangun sebuah updater (program lain untuk memelihara ) dan berurusan dengan fakta bahwa ada masalah dan file aset Anda akan rusak ...

Sejujurnya, itu tidak sepele untuk membuat itu bekerja dan saya tidak melihat hasilnya dalam situasi Anda. Direktori sederhana seharusnya cukup untuk merangkum 10 sprite Anda dan jauh lebih mudah untuk menambahkan dan menambal hal-hal: hanya perlu mengunduhnya ke direktori yang benar dan selesai.

Membangun Penginstal

Ini dengan asumsi Anda menargetkan Windows ... setelah Anda memiliki yang di atas, Anda dapat bekerja membangun installer untuk gim Anda. Saya akan menghindari metode ClickOnce yang didukung Visual Studio. Ini bukan penginstal Windows khas Anda dan dilengkapi dengan seperangkat quirks sendiri.

Lihatlah pertanyaan StackOverflow ini - ini berisi serangkaian tautan bermanfaat untuk paket pemasang yang dapat Anda gunakan. Banyak orang akhir-akhir ini sepertinya menyukai WiX . Saya tidak pernah menggunakannya sendiri. Selain itu, AdvancedInstaller dan InnoSetup adalah pilihan populer.


1
Terima kasih atas jawaban ini, sekarang saya memiliki ide dasar bagaimana saya harus mendistribusikan game saya.
Bugster

1
Jangan gunakan WiX. Itu akan melukai kepala Anda dan membunuh keluarga Anda.
Ray Dey

1
Ada pilihan lain - mungkin ada lebih dari satu paket aset. Sesuatu seperti "resources.pak, patch1.pak, patch1337.pak, .." kemudian akan menjadi cara untuk menyimpan data patch. Tidak perlu memodifikasi paket asli, cukup buat mesin yang mampu mendeteksi dan memesan paket tambalan.
snake5

0

Anda mungkin dapat menghubungkan beberapa perpustakaan secara statis alih-alih termasuk dll. Namun jika dan bagaimana berbeda untuk setiap perpustakaan.


-1

Anda dapat menggunakan perangkat lunak seperti Enigma untuk mengemas file Anda dan menyimpannya dalam satu .dat. Anda harus mengubah folder peluncur Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.