Bir oyun motoru ne yapmalı? [kapalı]


20

Becerilerimi geliştirmek / yeni bir şeyler denemek istiyorum ve 3D ile başlamak istiyorum. C ++ ile 3D programlamaya başlamayı okudum ama motorlar hakkında sorum var:

  • Motor ne yapmalı? 3D API (yani OpenGL veya DirectX) yukarıda soyutlama katmanı olduğunu biliyorum ama tam olarak ne yapmalı?

Kitap önerileri için bu soru size yardımcı olmalıdır: gamedev.stackexchange.com/questions/455/…
Tetrad

Yanıtlar:


27

Bir oyun motorunun düşük seviye grafik API'lerinden soyutlandığını söylemekte haklısınız, ancak tam teşekküllü bir oyun motoru çok daha fazlasını yapıyor.

Oyun motorları, oyun geliştirmeyle ilgili her şeyi kolaylaştırmayı amaçlamaktadır. Her birinin kendi benzersiz özellikleri vardır, ancak genellikle grafikler, ses, giriş, sahne yönetimi, çarpışma algılama, matematik ve genel yararlı araçlar için kolay soyutlama katmanları sağlarlar. Bazıları fizik API'leri için sarmalayıcılar ve eklentiler sağlar ve hatta bazıları AI desteğine sahiptir (çoğunlukla FSM'ler, yol bulma ve - mevcut eğilim - davranış ağaçları ile sınırlıdır). Birçoğu platformlar arası işlevsellik konusunda kendilerini destekliyor ve gurur duyuyor.

Bir oyun motorunun amacı, sıfırdan bir oyun oluşturmaktaki küçük sıkıntılarla uğraşmak zorunda kalmadan veya bir sürü kitaplık kurmak ve kendinize uyacak şekilde kendi paketleyicilerinizi yazmak zorunda kalmadan kullanıcının bir oyun oluşturmasını kolaylaştırmaktır. oyun.

Orada çok sayıda motor var, ancak bir grafik motoru ve bir oyun motoru arasındaki farka dikkat edin (Örneğin, Unity bir oyun motoru, oysa Ogre bir grafik motoru olurdu).

Konuyla ilgili iki kitabım var, ancak konuyla ilgili iyi bir genel bakış sunuyorlar:

  • 3D Oyun Motoru Mimarisi David H Eberly

  • Oyun Kodlama Tamamlandı Mike McShaffry

Tam, profesyonel bir oyun motoru oluşturmak için ihtiyacınız olan bilgi derinliğini elde etmek için her bileşen hakkında birkaç kitaba ihtiyaç duyacağınız için çok derin değiller, ancak kavramları çok iyi açıklıyorlar.

Game dev oyununa başlıyorsanız, motor yapmayın. Sizi şu sayfaya yönlendiriyorum: http://geometrian.com/programming/tutorials/write-games-not-engines/

Motorlar doğru olmak için zor bir şeydir. Bir sürü oyun yazarsanız, bir süre sonra size yardımcı olması için kendi kişisel motorunuzu yapmak için kullanabileceğiniz çok sayıda yeniden kullanılabilir kodunuz olduğunu göreceksiniz. Ve kemerinizin altında çok sayıda (tam) oyun olması, tek bir motordan çok daha etkileyici.

Umarım yardımcı olur.

ışın


1
Blog makalesi için +1. Bu konuda tam olarak ne söyleyeceğimi söylüyor.
Tetrad

5
Evet, hiç kimse oyun yapmadan önce bir oyun motoru yapmamalıdır. Henüz kullanılabilir olduğunu bilmiyorsanız, kodunuzun yeniden kullanılabilir olduğunu nasıl anlarsınız?
Kylotan

@Kylotan Bunun çok geç olduğunun farkındayım, ancak sürekli olarak başkalarına alıntı yaptığım için bu yorum için teşekkür etmek istiyorum :)
Ray Dey

"Motor değil oyun yazma" bağlantısı öldü FYI. Okumayı dört gözle bekliyordum :(
DrewJordan

5

Ray'ın cevabına ek olarak: Motorlar (Oyun, Grafik, Ses, vb.) Sadece temel API'lerle etkileşimi kolaylaştırmakla kalmaz, aynı zamanda oyuna özgü işlevleri de uygular, örn: Gölgeleme modeli, 3D ses.

Özellikle Oyun motorları için: oyun nesnelerini, kaynakları (Bellek, iş parçacıkları, diğer tüm motorlar) ve modüller arası iletişimi yönetirler. Önemsiz herhangi bir proje için gerekli olan oyun yapısını, ölçeklenebilirliği ve esnekliği sağlarlar.


Yapı, ölçeklenebilirlik ve esneklik noktası için +1 ve bellek yönetimi eklemeyi unuttum
Ray Dey

1

Bir oyun motorunun ne olduğuna dair ayrıntılı bir eğitim yazdım - özellikle iPhone ve Android platformları bağlamında. Bir oyun motorunun çeşitli bölümlerinin örneklerini içeren ayrıntılı açıklamalar ekledim: UI, Grafik, Ses, Fizik, Parçacık efektleri. Eğitim burada mevcuttur: Oyun motoru nedir? . Umarım faydalıdır.


0

Her oyun motorunun bir oyun motorunun ne yapması gerektiği konusunda biraz farklı bir fikri vardır.

Ancak zaten çok fazla oyun motoru olduğu için gerçekten bir motor değil bir oyun yapmanızı tavsiye ederim.

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.