Cevap 1:

Motor, (belirli türde) bir oyun yapmak için önceden hazırlanmış bir dizi araç ve mekanizmadır. Bir çerçeve, temelde oyunların, genellikle donanım arabirimi ve girdisi gibi önemli yönlerini işleyen, ancak önceden belirlenmiş bir kural seti bulunmayan bir kod tabanıdır.

Yani, örneğin, Unreal motoru bir atıcı motorudur. Hareket, girdi, fizik, haritalar, yumurtlama vb. İçin zaten kurallar vardır. Ayrıca, bu kuralları kendi vizyonunuzla oynamak için kendi kurallarınızla desteklemek için kullanılabilecek bir harita ve varlık editörü ile birlikte gelir. Bu, Unreal motorunun diğer oyun türlerini yapamayacağı anlamına gelmez, ancak ayrıntılı model ve dokularla hızlı tempolu atıcı mekaniğine izin veren kurallarla zaten optimize edilmiştir. Alternatifler, bu optimizasyonun permütasyonları ile oynayacaktır (bu nedenle hareket etmek, ancak ateş etmemek bir spor oyunu haline gelebilir). Gerçekten çılgın bir şey yapmak için bir motorun iç işleyişiyle gerçekten uğraşabilirsiniz (gerçek dışı bir bulmaca oyunu gibi), ancak bu bir motorun noktasını (sizin için yapılan işin% 40'ı) kaçırır, bu yüzden de kullanın...

Çerçeveler sadece oyun yapımının faydacı yönlerine ulaşmanın bir yolunu sağlayan kod kümeleridir. İyi çerçeveler oyunların yönlerini, yani denetleyici girdisi, grafik, ses, kalıcılık ve varlık yönetimini birleştirme eğilimindedir. Çerçeveler belirli bir oyun türüne yatkın değildir, ancak yetenekleri farklı oyun aralıklarına güç verebilir (2d çerçeve herhangi bir FPS yapmaz). XNA, Xbox 360'ın tüm yönlerinin ve bilgisayarların çoğu yönünün kullanılmasına izin veren işlev kümesidir. Bir FPS motoru XNA'dan yapılabilir, ancak tüm bunlar kendiniz yapmanız gerekir.


Cevap 2:

Bu benim evcil hayvanımdan biri ve bu bilginin etkili bir şekilde kaybolması pratik nedenlerle üzücü, sinir bozucu ve aslında bazen kötü.

“Çerçeve” çok geniş bir terimdir, “belirli bir mimariyi teşvik eden bir kütüphane” den çok daha fazlası anlamına gelmez. STL (veya diğer standart kütüphaneler) gibi bir şeye, herhangi bir mimariyle çalıştığı için çerçeve adı verilmez. Bir çerçeve size bir “çerçeve” verir, i. e. temel bir mimari.

Yani herhangi bir motor da bir çerçevedir, ancak tüm çerçeveler motor değildir.

Motor teriminin oyun geliştirme endüstrisinde son on yıldır kullanılma şekli şudur: bir motor, kullanıcı için hiçbir sonucu olmayacak olan kod çağrılarını filtreleyerek performansı optimize eder.

Örneğin, bir grafik motoru ortaya çıkan görüntüyü etkilemediği için “kamera” nın arkasındaki nesneleri çıkarır. XNA / Monogame gibi bir çerçevede 10000 nesnenin görüntülenmesi her zaman aynı performansa yol açacak ve 10000 nesnenin tümü grafik kartına gönderilecektir. Görünmeyen nesneler CPU tarafından filtreleneceğinden ve grafik kartı bunları oluşturmaya zahmet etmeyeceğinden, nesnelerden uzağa bakan bir motorda çok daha iyi performans elde edilir.

Bir fizik motoru çarpışmalar için aynı şeyi yapar: birbirinden uzak veya hareket eden hiçbir yerde olmayan nesneler çarpışma çözümü için bile dikkate alınmaz.

Ses motorları ses kaynaklarını belirli faktörlere göre filtreler, ağ motorları nesneleri ağ önceliği, mesafe vb.

Önemli bir sonuç, temel olarak her motorun yönetilecek nesneleri (“GameObject”, “Entity”, “Pawn”…) tanımlayan terminolojiyi kullanması, temel olarak her çerçevede donanıma gönderilen komutları tanımlayan terminoloji kullanmasıdır (“Doku ”,“ VertexBuffer ”,“ ShaderProgram ”…).

Dolayısıyla, bir motor kullanarak biraz gerçekçi bir oyun dünyası kullanan bir oyun üzerinde çalışıyorsanız, size çok zaman kazandıracak. Ancak Portal'daki portallar veya Minecraft'ta eksene hizalanmış küp gibi bir dünya gibi gerçekçi olmayan özellikler ekliyorsanız, bir çerçevenin kullanılmasının daha hızlı bir çözüm olduğu motor işlevselliğini devre dışı bırakmak için çok zaman harcayabilirsiniz.


Cevap 3:

Bir oyun motoru, oyun geliştirmeye izin veren birleşik bir API ile oluşturulmuş ve birbirine bağlanmış kütüphanelerin (grafik, giriş, ses vb.) Bir koleksiyonudur. Bir editör içermesi gerekmez. Bazı motorlar Unreal gibi bir türe daha yönelir, ancak agnostik ve herhangi bir türe karşı esnek olan birçok şey vardır.

Bir oyun geliştirme çerçevesi, hem motorun kullandığı programlama dilini hem de oyun motorunun API'sını kullanarak geliştirmeyi kolaylaştıran bir şablona (veya bir dizi şablona) benzer. Oyun motorlarının çoğunluğu zaten varsayılan bir çerçeveyle geliyor ve oyunun çekirdeğine sınırlı veya tam erişimimiz var. Üç çeşit çerçeve vardır:

  • Motorun Varsayılan Çerçevesi: Oyun motorlarının çoğu, isteğe bağlı veya geliştiricilere zorlanan varsayılan bir çerçeveyle gelir. Amaç kod ile oyunun gelişimini kolaylaştırmaktır. Örneğin: motorla birlikte gelen çerçeveyi kullandığınız sahnede belirli bir nesneyi kontrol etmek için Unity'nin MonoBehaviour veya Unreal's Actor sınıfından miras almak.Game Genre Framework: Bunlar genellikle varsayılan çerçevenin üstünde yapılır (veya oyun motoru hiç yoktur) ve geliştirmeyi daha kolay ve daha hızlı hale getirmek için belirli bir türe yöneliktir. Örneğin: görevleri oluşturmanıza ve düzenlemenize, envanter, metin diyalogları vb. İşlemenize olanak tanıyan bir RPG çerçevesi. Bunlar çoğunlukla kod içeriyor olsa da, bazıları Unreal veya Unity gibi Editör özelliklerini ekler. “Paradigma” Çerçevesi: daha iyi bir kelime eksikliği. Bu çerçeveler ya çerçevenin üzerine inşa edilmiştir ya da çerçeveyi (kısmen ya da tamamen) değiştirir ve kodu daha otomatik bir şeye yazarken varsayılan yönteminizi değiştirme amacına sahiptir. Örneğin: Dependecy Injection (Birlik için Zenject) veya bir Enyty-Component sistemi (JmonkeyEngine için Zay-ES) ekleyen bir çerçeve.