Komut dosyaları motorun bir soyutlamasıyla etkileşime girmeli mi?


10

Java ve Jython kullanıyorum ve bazı araştırmalardan sonra komut dosyalarını motor arayüzüne doğrudan erişim sağlamanın bir ikisini sıkıca birleştireceği için bir hata olabileceğini keşfettim.

Modların varlık oluşturmasına ve yönetmesine izin veren çoğu komut dosyası gibi görünüyor, bir tür soyutlama yoluyla bunu yapıyor. Bu soyutlamalar bu nedenle var mı, yoksa programcı olmayanların oyunu modifiye etmeleri için daha sezgisel bir yol sağlamak mı?

Yanıtlar:


7

Her ikisi de, genel olarak. Komut dosyalarınız motorun kendisiyle değil, soyutlanmış veya en azından orta düzeyde bir işlevsellik katmanıyla konuşmalıdır.

İlk olarak, bu size ekstra bir kontrol ve güvenlik önlemi sağlar. Bir betiğin oyununuzla sahip olmasına izin verilen arayüzü ve böylece ne ile uğraşabileceğini kolayca, temiz bir şekilde tanımlamanıza izin verir ve daha sonra araya uygun olmayacak ek güvenlik kontrollerini araya yerleştirmenize izin verir. gerçek işlevsellik katmanının kendisi.

İkinci olarak, komut dosyalarına maruz kalan arabirimi daha programcı dostu veya genel olarak daha kolay olacak şekilde basitleştirmenizi sağlar.

İkisi arasındaki bağlantıya karşı biraz yalıtım sağlar, ancak genellikle bu kadar büyük bir anlaşma değildir çünkü komut dosyaları her zaman, doğası gereği etkileşime girmelerine izin verilen arayüzlere bağlanır. Diğer iki nokta daha faydalıdır.


3

Ayrıca, motorda değişiklik yapmak istemeniz durumunda size yardımcı olacağını düşünüyorum. Motor değiştikten sonra tüm komut dosyalarınızı değiştirmek zorunda kalmadan bunları yapabilirsiniz. Josh'un bahsettiği soyutlama katmanını değiştirmeniz yeterlidir.


1

Değişiklikler oluşturmak için kullanılan oyunun çekirdeği ve senaryolar arasında bir katman oluşturmak benim görüşüme göre gereklidir.

Bu yöntemi kullanarak çeşitli avantajlar elde edersiniz:

Modörler için daha kolay:
Bunu yapmanın iyi bir nedeni, belirttiğiniz gibi modlar yapmanın daha kolay bir yoludur. Daha az kod satırı yazmak, daha fazla okunabilirlik anlamına gelir ve yeni başlayanları programlamak için anlama sorunlarını en aza indirir. İdeal olarak, bu API oyunun yüksek seviyesindeki bir şeyi değiştirmek için bir yöntem koleksiyonu olmalıdır . Bu şu anlama gelir: Bir varlığın gerçekte nasıl doğduğunu bilmeden ya da bir çağrıyla bir görüntüyü görüntülemeden varlığını doğurur ; bu, yalnızca görüntü adını parametre olarak alır.
Daha az zamanda daha fazla yazabileceğiniz için, bir programcı olarak da bundan faydalanırsınızJava ile gerekenden daha .

Güvenlik:
İnsanların tüm oyunu kontrol etmesini önlemek şarttır. Oyun tek bir oyuncu başlık olurdu umurumda olmaz, ama oyun var ne zaman umrumda olur bazı çok oyunculu eylem. Sadece bir yüksek puanlar tablosu olsa bile. Birisi hile nedeniyle kazandığında
diğer insanlar her zaman hayal kırıklığına uğrarlar (örneğin: pozisyon değişiklikleri, daha spesifik: pozisyon değişikliği ve doğrudan bayrak sınırlama). Oyuncuların bunu yapmasını engellemek için ana göreviniz burada.
Hile yapanın her zaman kodunu değiştirebileceğini, kodu değiştirebileceğini, bu istemciyle yeniden derleyebileceğini ve oynayabileceğini unutmayın, bu nedenle sunucu tarafında kontroller ekleyin. Genel olarak, sağlanan "Güvenlik" sadece hileler için hayatı zorlaştırmak için% 100 güvenli bir seçenek değildir.

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.