Bir kütüphane ve motor arasındaki fark nedir?


31

Scala ile 2D oyun geliştirmeye yardımcı olmak için bir kütüphane üzerinde çalışıyorum. Şimdiye kadar, yararlı sınıflar, dosya yükleme, çarpışma algılama, görüntüler, sprite, vb.

Peki sınıf kütüphanesi olmak ne zaman durur ve motor olur? Yararlı çerçeve ve oyun motoru arasındaki fark tam olarak nerede yatıyor?


Ayrımın yapılamayacağını söyleyebilirim çünkü onlar farklı bir soyutlama seviyesindeki kavramlar. "Büyük" bir motor hala bir çerçevedir.
André Paramés

1
Bir oyun motoru ile bir çerçeve arasında daha az bir fark vardır, ancak başlıktan, bir kütüphane ve motor arasında büyük ve açıkça tanımlanmış bir ayrım vardır. Bu bağlantı özetliyor: gamefromscratch.com/post/2015/06/13/…
Serapth

Yanıtlar:


21

İnsanların buraya girdiği kafa karışıklığının birinin genel olarak diğerinden oluştuğunu düşünüyorum, bu yüzden insanların gerçekten bilmek istediği şey, biri diğerini kabul edecek kadar vaktiniz olduğunda.

Peki sınıf kütüphanesi olmak ne zaman durur ve motor olur?

Asla.

Faydalı bir çerçevede ve bir oyun motorunda fark tam olarak nerede yatıyor?

Hiçbiri yok.

Şimdi cevapları açıklayayım. Bir oyun motoru sınıf kütüphanelerinden oluşur. Bir oyun motorunda oldukları için sınıf kütüphaneleri olmayı bırakmazlar. Bir kütüphane oyun motorunda belirli bir ihtiyacı karşılamak için kullanışlı bir çerçevedir. Tam bir oyunun gereksinimlerini karşılayan bir çerçeve oyun motorudur.

İşte oyun motorlarından bazı örnekler:

  • Gerçek dışı motor
  • Gerçeklik Motoru
  • Kaynak Motor
  • Deprem Motoru
  • Birlik motoru

Ve bazı kütüphane örnekleri

  • Novodex (Fizik)
  • FMOD (Ses)
  • Havok (Fizik)
  • Ogre3D (Rendering)
  • BINK (Video Kütüphanesi)
  • Direct3D (Grafik)
  • OpenGL (Grafikler)
  • DirectSound (Ses)
  • XInput (Giriş)

Bu yardımcı olur umarım


1
Bir işleme motoru ve bir grafik kütüphanesi arasındaki fark nedir? : p
Zaky Alman

1
@Zaky Almanca - Ogre3D FMOD bir ses 'motor' gibi bir grafik 'motor'. Ayrı ancak bunlar bir Oyun motoru değil, kullanıcı girişi, ağ bağlantısı veya benzeri işlemleri yapmıyorlar. Burası bazı karışıklıkların ortaya çıkabileceğini düşünüyorum. Bu çağrışımda Kütüphane, Modül, Komponent veya Motor değiştirebilirsiniz. Bunlar olsa bir 'Oyun Motoru' değildir. Bir grafik kütüphanesi, Direct3D'ye benzeyen bir şey veya Direct3D'ye göre daha ince olan bir API olabilir, ancak bunu doğrudan gerçekleştirmez. OpenGL ve etrafındaki sarmalayıcılar da grafik kütüphane alanına girer.
James,

14

Her iki terim için de (veya bu konu için "çerçeve" terimi için somut bir tanım yoktur). Yazılım paketlerinde çeşitli ince ayrımları yorumlamanın ve sınıflandırma yapmanın yüzlerce farklı yolu vardır.

Kişisel olarak bir "kütüphane" yi nispeten küçük ve yönlendirilmiş bir işlevsellik kümesi sağlayan bir şey olarak görüyorum, oysa "bir çerçeve" daha fazla veya daha geniş bir işlevsellik sağlıyor ve bir "motor" da aynı (veya daha fazlasını) sağlıyor ve tipik olarak onunla birlikte gelen ilgili araçlar.

Bir "motorun" tipik olarak bir "kütüphane" den daha fazla veya daha yüksek düzeyde işlevsellik sağladığını düşündüren güvende hissetmek için başkalarının aynı terimlerle ilgili kişisel yorumlarını yeterince gördüm, ancak bu satırı kendi yazılımınız için çiziyorsunuz. sana bağlı.


Bir çerçeve ile diğer kütüphaneler arasında somut bir fark vardır; bunlar önceki kitabın Wiki sayfasında listelenmiştir . Kısaca, çerçeve uygulamanın akışını kontrol eder ve kodunuzu ona eklersiniz; diğer kütüphanelerde akışı kontrol eder ve kodunu çağırırsınız.
André Paramés

1
Bunu kesin olarak düşünmezdim; Vikipedi, "oyun motoru" için de bir sayfaya sahiptir ve tıpkı "kütüphane" ve "çerçeve" gibi, bu terimler wiki sayfasındaki açıklamaya uygun şekillerde olduğu gibi deneyim. Hala çok el dalgalı.
Josh

2

Bu çok zor bir soru, çünkü kütüphane ile motor arasındaki çizgi bazen çok ince ve bulanık olabilir. Bir kütüphanenin motora dönüştüğü noktanın, belirli bir oyuna veya belirli bir oyuna yönelik olduğu zamanlar olduğunu söylemek zorundayım.

Örneğin: Unreal motoru (veya Kaynak veya Quake), FPS oyunları için kullanılmak üzere tasarlanmıştır (fizibil bir şekilde diğer oyunlar için kullanılabilir, ancak motora karşı çalışmak için biraz zaman harcarsınız). Ogre3d (hatta Directx, SDL veya diğer ortak kütüphaneler), kodun ana kısımlarını sökmeden veya bunların etrafında çalışmak zorunda kalmadan herhangi bir tür oyun yapmak için kullanılabilir.

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.