Günümüzde Oyun geliştirme için hangi teknolojiler kullanılıyor? [kapalı]


14

Çevrimiçi bir forumda oyun geliştirme hakkında her soru sorduğumda, her zaman çizgi çizme algoritmalarını öğrenmek, bit seviye görüntü manipülasyonu ve video dekompresyonu vb.

Ancak God of War 3 gibi oyunlara baktığımda, bu oyunların bu kadar düşük seviyeli teknikler kullanılarak geliştirilebileceğine inanmakta zorlanıyorum.

Bu tür oyunların mükemmelliği, herhangi bir anlaşılabilir (benim için) programlama metodolojisine meydan okuyor.

Ayrıca oyun donanımı günümüzde gerçekten bir canavar. Bu yüzden geliştiricilerin daha yüksek bir soyutlama düzeyinde çalışması mantıklıdır.

Oyun endüstrisindeki en son geliştirme metodolojisi nedir? Nasıl 30-35 geliştiriciden oluşan bir ekip (en çok yönetim ve pazarlama havasıdır) böyle bir zihin boggling oyunları yapabilir?

Soru çok genel görünüyorsa, 3. Savaş Tanrısı'nın mimarisini açıklayabilir misiniz? Ya da bir klon üretmeye ne dersiniz? Bence objektif olarak cevaplanabilir olmalı.


2
Birisi düşüşü açıklamak ister mi?
Monika Michael

2
Downvotes, sorunun "yapıcı" olmamasından kaynaklanmaktadır. Alıntı için, "Bu soru bizim Q & A biçimi için iyi bir uyum değildir. Biz cevaplar gerçekleri, referansları veya belirli uzmanlık tarafından desteklenmesi bekliyoruz, ancak bu soru büyük olasılıkla solicit tartışma, tartışmalar, yoklama veya uzatılmış tartışma" . Yani, soru herhangi bir hassasiyetle cevaplanamaz. Hala sorunuzun haklı olduğunu, ancak yeniden biçimlendirilmesi gerektiğini düşünüyorum.
9000

2
@ 9000 Peki bu soru nasıl yapıcı değil?

1
@delnan: Muhtemelen downvoter'lar "Oyun endüstrisindeki en son geliştirme metodolojisi nedir?" . Bana göre, "nasıl bir klon üretmeye devam edersin" çok daha iyi.
9000

Yanıtlar:


12

Yasal Uyarı: Ben değil , bir video oyunu geliştiricisi. Ama benim "hobici" bir ilgim var.


Gördüğünüz AAA oyunlarının çoğu Engines kullanılarak yapılır. En baştan yazmıyorlar. Bir motoru bir çerçeve gibi düşünün. .NET framework, Java SDK, Cocoa araç setiniz var.

Yazılım oluşturma işinizi kolaylaştırmak ve mutfak lavabo kodunu soyutlamak için her şey. Gerekli, ancak her seferinde yazmak çok verimsiz.

Bu motorları kullanarak geliştirici oyunlarını oluşturabilir ve temel kod hakkında endişelenmenize gerek kalmaz. ( Hata yapma, oyun geliştirme yazılım mühendisliğinin en zor dallarından biridir. )

Örneğin, Unreal Engine 4'te bir katil geliştirme kiti ve stüdyosu var:

http://www.youtube.com/watch?v=MOvfn1p92_8

resim açıklamasını buraya girin

Dışarıda birçok farklı motor var. Bazıları ücretli, bazıları ücretsiz, bazıları metale daha düşük, diğerleri daha yüksek bir soyutlama sunuyor.

Örneğin:

  • OGRE
  • Gerçekdışı Motor
  • Birlik
  • Kaynak
  • ve daha fazlası...

5

Gbjbaanb'ın yorumuna istinaden, oyun programlamayı eğlenceli kılan şeylerden bazıları kod tabanının sınırlı ömrü ve hassasiyet gerektirmemesidir. Örneğin, bir FPS oyunu tasarlıyorsanız ve hareket algoritmanız bazen oyun karakterinizi birkaç piksel kapalı bırakırsa, büyük bir anlaşma olmaz ve hiç kimse fark etmez. Bir parça iş yazılımı tasarlıyorsanız ve zaman zaman toplam fonksiyonunuz sizi birkaç dolar indirirse, bu çok daha ciddi bir hatadır. Bu yüzden oyunları tasarlarken bazı yönler çok daha az hassas olabilir (ve cevapların tam olarak doğru olup olmadığını kontrol eden otomatik bir test paketi yerine sadece insan testini geçmek zorundadır).

Benim deneyimim, özellikle gerçek zamanlı oyunlar için oyun programlamanın, GUI çalışmaları dışında yaptığım neredeyse tüm diğer yazılım geliştirmelerinden çok farklı bir deneyim olduğudur. Denemeniz gereken bir şey!


4

Cevap "motorlar" dır. Oyunlar, temel olarak büyük kütüphaneler veya çerçeveler olan çeşitli grafik ve oyun motorlarının üzerine inşa edilmiştir.

OSS dünyasında, örnek olarak Ogre'ye bir bakın, ticari oyunlar için Kaynak gibi şeyler var .

Kodun birçoğu atılabilir ve bir iş ortamında toplanmayacak gibi başka faktörler de var - ancak bir oyunun sınırlı ömrü ve hızlandırılmış geliştirme zaman çizelgeleri, kodun (neredeyse) tasarlandığı anlamına geliyor. sadece çalışmak, korunmamak.


Tabii ki, bu motorlar daha düşük seviyeli API'lerin (ör. Grafikler için DX veya OpenGL) üzerindeki düzenli (yüksek düzeyde optimize edilmiş) C / C ++ kod oluşturma soyutlamalarıdır.

Ancak yazarın oyun geliştirmenin nasıl bir fikir olduğu konusunda fikir sahibi olmak için C veya C ++ kullanarak çok basit bir oyun oluşturma deneyimine sahip olmak iyi bir fikirdir.
KyelJmD

4

Unity3D gerçekten güzel. İşte hoşuma giden bazı noktalar:

  • platform agnostik bir tarzda oyunlar oluşturmanıza izin verir ve ardından Windows, Mac OS X, Android, IOS için otomatik olarak konuşlandırılabilir öğeler oluşturur. Bu, geçerli sürüm (3.x) için geçerlidir. Görünüşe göre sürüm 4, Linux üzerinde de konuşlandırmanıza izin verecektir:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Gerçekten (ticari olarak) kullanmak için ücretli bir lisansa ihtiyacınız olsa da, özelliklerin çoğunu kullanabileceğiniz ücretsiz bir sürüm yükleyebilirsiniz (örneğin, mobil platformlar için konuşlandırılamazsınız). Satın almaya karar vermeden önce şeyi önizlemek için harika bir yol sunar:

http://unity3d.com/unity/licenses

  • Çoğu 3d modelleme yazılımı ile çalışır (3d Studio Max'i tercih ederim, ancak diğerlerini de destekler):

http://unity3d.com/unity/editor/importing (biraz aşağı kaydırın)

  • Kodlama (betikleme) güzel bir dil olan C # ile, iyi bir API ve derleme zaman kontrolleri ile yapılabilir. İyi bir geliştirme ortamı (IDE ve her şey) ile birlikte gelir. Farklı bir şey istiyorsanız, Javascript'i de destekler.

  • Çok iyi fizik desteğine sahiptir (çarpışmalar, yerçekimi, kuvvetler, vb.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Çeşitli modeller, komut dosyaları, animasyonlar vb.

  • Son fakat en az değil, oldukça hızlı. Mobil demoları inceleyin, IMHO oldukça iyi hareket ediyor ve çok iyi grafiklere sahipler:

http://unity3d.com/gallery/made-with-unity/game-list

İşte şu anda beklediğim güzel bir Unity projesi:

Brian Fargo'nun Çorak Toprakları 2

Onlar neden Unity seçtikleri hakkında güzel bir blog girişi var , ve bununla birlikte nasıl çalıştığını tartışan diğer .


3

Kimlik Yazılımı, genellikle en yeni oyunları yayınlayan satıcılardan biridir. Birkaç yıl sonra bunları genellikle açık kaynak olarak serbest bırakırlar. Açık http://fabiensanglard.net/quake3/index.php Eğer Quake3 kaynak kodunun bir analizini bulabilirsiniz. Bu oldukça ayrıntılı bir tanımdır ve Quake3 oldukça eski olmasına rağmen, kavramlar modern oyunlar için hala geçerli olmalıdır.

Ve evet, son teknoloji ürünü modern, hızlı, rekabetçi bir oyun motoru oluşturmak istiyorsanız, tüm bu düşük seviyeli parçaları bilmeniz gerekecek. Bunlarla ilgilenmek istemiyorsanız: Farklı motorlar (quake3 motoru veya diğer cevaplardan olanlar) var ama iyi, o zaman yeni bir devrimci oyun yaratmıyorsunuz ;-)


Bu analizin bakış açısından Quake 3, günümüz oyun geliştirme sürecinin birkaç hayati önem taşıyan "düşük seviye" tekniğinden önce geliyor. Yeni başlayanlar için, (OpenGL tarafından sağlanan) gölgelendiriciler.

deprem 3 1999'da piyasaya sürüldü. evet bu çok uzun zaman önceydi. Ancak, o zaman mümkün olanın sınırına gitmeye çalışan insanların nasıl çalıştığını gösterir. Mevcut diğer motorların çoğu, maksimum performans yerine yeniden kullanılabilirliğe, "temiz" koda vb. (Bu, diğer motorların kötü ve yavaş olduğu anlamına gelmez, ancak 3D oyun motoru mimarisi ve uygulaması hakkında bilgi edinmek istiyorsanız hala bakmaya değer olduğunu düşünüyorum)
johannes

3D oyunlarda ikili düşük seviyeli matematik hakkında Quake'i örnek olarak kullanan başka bir ilgili makale: blog.quenta.org/2012/09/0x5f3759df.html
johannes

1

Birçok yanıtın belirttiği gibi, oyun motorları ve kütüphaneler büyük rol oynamaktadır. Ancak, bunun orta büyük ticari oyunlar için küçük "indie" oyunlar için geçerli olmadığını unutmayın.

Örneğin, mobil platformlarda çoğu oyun, tam gelişmiş oyun motorlarına bir çerçeveye güvenmek yerine sadece bir dizi göreceli ilkel kitaplık kullanılarak yazılır. Varlar, ancak çoğunlukla daha önceki projelerde kendi kodunuzu yeniden kullanmakla ilgilidir.

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.