Çok fazla oyuna sahip olduğunuzda, bir oyunda kaynakları nasıl toplarsınız?


10

Son zamanlarda Allegro 5 çerçevesini kullanarak C ++ ile temel bir Space Invaders klonu yaptım. Bitirdikten sonra yaklaşık 10 sprite ve 13MB değerinde DLL'im olduğunu fark ettim; bazı oyuncular mingW DLL'lere bile sahip değildi, bu da oyunu çok kafa karıştırıcı hale getiriyordu.

Tüm kaynaklarımı oyunuma kolayca veri ekleyebileceğim ve kaldırabileceğim ve kaynak tarafından alınan boyutu azaltacak şekilde temelde tek bir noktaya yerleştirecek şekilde nasıl paketleyebilirim? Ben kod blokları kullanıyorum.


1
Kaynaklar terimini nasıl anlıyorsunuz? Görüntüler, sesler, vb. Varlıklar veya bu terime DLL ekliyor musunuz?
Christian Ivicevic

Ben de bunlardan bir sürü var çünkü ben de DLL uyacak eğer tercih ederim.
Bugster

İlk fikrim, zziplibher zamanki varlıklarımı bir zip dosyasında saklamak için (oldukça eski ...) gibi uygun bir kütüphane bulmak ve daha sonra bunları motorumdaki özel bir içerik boru hattı aracılığıyla oyunuma yüklemek olacaktır. Başlangıçta aradığınız şey, dosyaları oyununuzda kullanabilmek için zip dosyasından belleğe yüklemenin bir yoludur. Oldukça zordur DLL ilgili genellikle çalıştırılabilir ya aynı Dir olmak zorunda çünkü Windowsya System32dir hangi DEĞİL tavsiye! TEMPOradan ayıklanacak ve buradan çalışacak bir SFX arşivine ne dersiniz ?
Christian Ivicevic

3
Bir yükleyicinin nasıl kullanılacağını mı soruyorsunuz? Çünkü DLL'ler kaynak değildir.
Nicol Bolas

Yanıtlar:


13

Burada karşılaştığınız iki zorluk var gibi görünüyor: dağıtım ve varlık paketleme.

dağıtım

Tüm uygulamanızı uygun gördüğünüz gibi dizinlere paketleyin, ardından üst düzey dizini bir .zip dosyasına yerleştirin. Bu .zip dosyasını dağıtın. Kullanıcılarınız zip dosyasını çıkardığında, oyunu çalıştırmak için ihtiyaç duydukları her şeyi içeren bir klasöre sahip olacaklar.

Dosyalarınızı nasıl yerleştirirsiniz?

  • .Dll dosyalarınızın genellikle yürütülebilir dosyayla aynı dizinde olması gerekir (istisnalar vardır, ancak basitlik açısından ...)
  • Varlıklarınız (resimler, ses) istediğiniz yerde olabilir, ancak bunları yürütülebilir dosyaya referansla taşırsanız, bunu dikkate almak için kaynak yükleme kodunu değiştirmeniz gerekir.

Genellikle böyle bir şey yaparım:

MyGame \ // üst düzey dizin tüm programlara sahip
  bin \ // dlls derlenmiş exe ile birlikte buraya gidin
  res \ // oyun kaynakları üst düzey dizin
    müzik\
    ses efektleri\   
    sesli \
  cfg \ // varsayılan yapılandırma dosyaları (kullanıcı-yapılandırmaları kullanıcı dizinine gider)
  MyGame.lnk // derlenmiş exe kısayolu

Varlık Ambalajı

Tüm oyun kaynaklarınızı (yukarıdaki res \ dizini) tek bir dosyaya sıkıştırmak için bir tür sıkıştırma kitaplığı (zlib, lzo) kullanabilirsiniz. Ardından, varlıklarınızı oyununuza yüklemek için kaynaklarınızın içeriğini gerçek zamanlı olarak ayıklamak için aynı sıkıştırma kitaplığını kullanmanız gerekir.

Öyleyse varlıklarınızı düzeltmek istediğinizde ne olur? Daha sonra şunlardan birini yapmalısınız: Tamamen yeni bir varlık dosyası derleyin ve kullanıcılarınıza dağıtın (böylece zaten sahip olduklarını yeniden indiriyorlar, ayrıca birkaç eklenti) veya bir güncelleyici (korumak için başka bir program) oluşturmalısınız ) ve işlerin yanlış gidebileceği ve varlık dosyanızın bozulacağı ile ilgilenir

Dürüst olmak gerekirse, bu işi yapmak tam olarak önemsiz değildir ve ben sizin durumunuzdaki ödemeyi görmüyorum. Basit bir dizin 10 spritelarınızı kapsüllemek için yeterli olmalıdır ve bir şeyler eklemek ve yama yapmak çok daha kolaydır: bunları doğru dizine indirmeniz ve yapmanız yeterlidir.

Yükleyici Oluşturma

Bu, Windows'u hedeflediğinizi varsayar ... Yukarıdakilere sahip olduğunuzda, oyununuz için bir yükleyici oluşturmaya çalışabilirsiniz. Her ne pahasına olursa olsun Visual Studio destek ClickOnce yöntemleri kaçınır. O var değil tipik Windows Installer ve tuhaflıklar vardır kendi seti ile birlikte geliyor.

Bu StackOverflow sorusuna bir göz atın - kullanabileceğiniz yükleyici paketlerine bir dizi yararlı bağlantı içerir. Bugünlerde birçok insan WiX'i seviyor gibi görünüyor . Hiç kullanmadım. Ayrıca, AdvancedInstaller ve InnoSetup popüler seçeneklerdir.


1
Bu cevap için teşekkürler, şimdi oyunumu nasıl dağıtacağım konusunda temel bir fikrim var.
Bugster

1
WiX kullanmayın. Kafanı incitecek ve aileni öldürecek.
Ray Dey

1
Başka bir seçenek daha var - birden fazla varlık paketi olabilir. "Resources.pak, patch1.pak, patch1337.pak, .." gibi bir şey yama verilerini depolamanın bir yolu olacaktır. Orijinal paketi değiştirmeye gerek yoktur, sadece motoru yama paketlerini algılama ve sipariş etme yeteneğine sahip olun.
snake5

0

Dll's eklemek yerine statik olarak bazı kütüphaneleri bağlayabilirsiniz. Olsa ve nasıl olsa her kütüphane için farklıdır.


-1

Dosyalarınızı paketlemek ve tek bir .dat dosyasına kaydetmek için Enigma gibi bir yazılım kullanabilirsiniz. Başlatıcınızın klasörünü değiştirmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.