Unity ve diğer araçlar yerine C / C ++ 'ı tercih ediyorum: Bir oyun geliştiricisi için bu kadar büyük bir düşürücü mü? [kapalı]


35

Okulda Unity kullanarak büyük bir oyun projemiz var. Üzerinde çalışan 12 kişi var. Öğretmenim, öğrencilere yüksek seviyeden düşük seviyeye bakmasını sağladığı için öğrencilere öğretmenin önemli bir araç olduğuna inanıyor gibi görünüyor.

Görüşünü anlayabiliyorum ve merak ediyorum: Birlik, oyun geliştirme şirketlerinde bu kadar önemli bir motor mu? Başka bir şey kullanmayı göze alamayacakları için kullanan pek çok şirket var mı? Unity oyun yapımında büyük bir oyuncu gibi konuşuyor, ancak oyunun mümkün olduğu kadar çabuk olmasını isteyen küçük indie oyun şirketlerine uygun olduğunu düşünüyorum.

Birliğin sektörde bu kadar önemli olduğunu düşünüyor musunuz? C ++ becerilerinin değerini tehlikeye sokuyor mu?

Unity'den hoşlanmadığımdan değil, sadece onunla hiçbir şey öğrenmedim, bunun yerine Ogre veya SFML ile küçük adımlar atmayı tercih ediyorum.

Ayrıca, C ++ alıştırma alıştırmalarımız da var, fakat bunlar sadece teorik alıştırmalar.


9
C ++ ve OOP noktası nesnenin yeniden kullanımıdır. Birlik, bunun ve platformlar arası taşınabilirliğin başlıca örneğidir. XBox'ta, iPhone'da veya Wii'de oyun başlatmak için ihtiyacınız olan tüm araçları sunarlar. Cidden, hepsini C ++ 'ta baştan yazmayı tercih ettiğinizi mi söylüyorsunuz?
Stephen Furlani

2
Kesinlikle hayır, demek istediğim bu değil. Sadece gönderildiği çöp toplanan dilleri beğenmediğimi ve ayrıca tescilli olduğu için kodu değiştiremeyeceğinizi söylüyorum: mevcut başka bir motoru çimdikleyebileceğiniz kadar ince ayarlayamazsınız. . Amacınız geçerli, ancak sizi takip edersem şirketler birlik yerine geçmek yerine önceki motorlarını tekrar kullanabilirler. Unity ile, gerçekten değiştiremeyeceğiniz bir şeye sadık kalırsınız, bu tür araçları düşündüğümde bu her zaman benim için en büyük engeldir: Özel bir motorun bu sorunu yoktur.
jokoon

2
Iyi olabilir (çoğu diğer profesyonel kaynak lisansları gibi pahalı) bir kaynak lisans almak varsayarak Unity değiştirin. Ayrıca oldukça sık güncellenir, bu yüzden özellik seti açısından gerçekten statik değildir.
Tetrad

Bu temelde "hangi teknolojiyi kullanmalı" sorusudur. Ayrıca daha tartışma / görüş odaklı. Ne yazık ki ikinci kez kapanmaya oy
veremem

Yanıtlar:


34

Birlik bu bağlamda tamamen geçerli bir çözümdür. Birçoğu hala C ++ öğrenme sürecinde olan 12 kişiyi hayal edin, onu kullanan geniş ve karmaşık bir oyun uygulaması yazın. Yalnız hata ayıklamak için harcadığınız zamanın miktarında, muhtemelen Birlik'te başka bir oyun yazabileceksiniz .

C ++ 'ı nasıl kullanacağımı bilmenin önemli olmadığını söylemiyorum - bu özellikle de' ana oyun endüstrisine 'katılmayı planlıyorsanız önemlidir. Ancak belki de eğitmeniniz bu durumda doğrudur - bu projeyi bir oyunun nasıl tasarlanacağı hakkında düşünmek ve bunu yaparken eğlenmek için bir öğrenme deneyimi olarak kullanın. Süreçte, C ++ becerilerinizi alıştırmalar ile geliştirmeye çalışın ya da bu arada SFML veya başka bir temel çerçeveyi kullanarak küçük oyunlar yazabilecek kadar ileri gidin.

Her şey bittiğinde, çok şey öğrenmiş olacaksınız, muhtemelen daha iyi bir programcı olacaksınız ve bir sonraki projeniz C ++ ile çok daha güvenle ele alınabilir.


2
İlginçtir ki, tamamen C ++ öğreten ve öğrencilerin hala C ++ öğrenme sürecine devam etmelerine rağmen tüm oyun motorlarını ve oyunlarını sıfırdan oluşturmalarını bekleyen okullar vardır. Elbette, aslında bir beceri pratiği yapmak onu nasıl öğrendiğinizdir (sınıf dersleri ve küçük ev ödevleri projeleri, daha büyük dönem veya yıl boyu devam eden projeler değil), bu yüzden okulların birinci sınıf programcılar üretmesinin nedeni budur. Unity gibi araçları çok hızlı bir şekilde ya da başka bir motorla toplama yeteneğine sahip programcılar. Öğrencileri zor işleri öğrenmeye zorlamak daha iyidir, çünkü kolay şeyler daha sonra sorun olmaz.
Sean Middleditch

Tüm oyun geliştirme programları programlama değildir ve Unity'yi kullanmak mutlaka "zor işlerden kaçınmak" değildir. Sadece sıfırdan uygulamaktan farklı sert şeyler vurgular. Bu programlama yerine tasarım verdi. Eğer bir oyun sıfırdan başlasaydı, çok daha ilkel bir "programcı sanatı" ve karakter ya da arsa beklemezdim.
wrosecrans

43

Birlik, daha çok küçük şirketlerde olmak üzere, sektörde popülerlik artmaktadır. Ancak, mükemmel bir öğretim ortamıdır. Bu önemli bir öğretim aracıdır, ancak özellikle ana şirketler arasında yaygın değildir. Tercih etmemen tamam.

Programlama öğrencileri arasında sık sık karışıklık gördüğüm için, burada bir şeyi not etmeme izin verin. "C ++ becerileri" uzun vadede pek kullanışlı değil. Aramanız gereken şey "programlama becerileri" ve "tasarım becerileri". Programlama dili kavramlarını ve bir yazılım sisteminin nasıl bir araya getirildiğini anlıyorsanız, dil gerçekten önemli değildir. Kendimi harika bir geliştirici olarak görmüyorum, ancak yeni bir dil seçip bir veya iki günde faydalı kodlar üretebilirim çünkü temelleri anlıyorum.

Unity Öğrenme, sizi C ++ 'da daha iyi hale getirecektir.


Gameforge ve BigPoint dünya lideri şirketlerdir ve
Unity'yi

1
Çok iyi bir cevap olduğu için +1. Bir oyun motoru öğrenmek okulların yapması için çok önemli bir şey çünkü zamanın% 99'u sıfırdan bir tane yapamayacaksınız. Mevcut bir motora dalmak ve onun parçalarını tanımak, veri akışını ayırt etmek ve bunların hepsi çok önemli şeylerdir. Yukarıda bahsedildiği gibi, dil C / C ++ zamanının% 99'u olmasına rağmen önemli değildir, ancak motoru veya daha genel olarak yalnızca bir başkasının kodunu anlayabilmesi, herhangi bir programlama alanında paha biçilmez bir beceridir. video oyunları olan zaman kritik yüksek stres kelimesi :)
James,

1
Bu cevaba katılmıyorum. Benim için senaryo yazarları ve programcılar arasında farklılıklar var. Unity'nin geliştiricileri programcılar, Unity'nin kullanıcıları komut dosyalarıdır. Sonuç aynı, oyun yapıyorlar ama uzun vadede Unity'yi kullanmak sorun olabilir. Oyun endüstrisi zengin ve şimdi Birlik gibi araçlara izin veriyor, ancak bana göre bilgisayarların daha hızlı olması. Böylece çok fazla kod yazabilirsiniz, işe yarıyor: Birlik açıkça gelişme hızı için piyasaya sürülüyor, pazarın dolar yüzünden sevdiği bir şey, ama bunun gerçek bir artı olduğunu sanmıyorum.
jokoon

14
jokoon: Senaryo yazımı ve programlama arasındaki fark nedir? Unity'nin güçlü bir kullanıcısı gölgelendiriciler yazıyor, oluşturma sırasını yönetiyor ve AI kodu yazıyor. Birlik "senaryoları" derlenir ve eğer istersen, tanrıçaya dürüst düşük seviye kodlaması ile genişletilebilir. Ve iyi Birlik kodlaması, iyi Birlik olmayan kodlama ile aynı ilkeleri izler. İki paradigma arasında sihirli bir fark yoktur.
Gregory Avery-Weir,

9

Başka bir şey kullanmayı göze alamayacakları için kullanan pek çok şirket var mı?

Evet, ama "göze çarpmak" sadece doların değerinden çok daha fazla.

Evet, Unity Pro'nun size ücretlendirdikleri maliyetle sağladığı özellik, özellikle başlık başına lisans yerine koltuk lisansı olduğu gerçeği göz önüne alındığında çok saçma.

Ama bunun üzerine, kullanımı gerçekten çok kolay bir araç. Sanatçıları ve tasarımcıları, sanat boru hattını nasıl kullanacaklarını eğitmek kadar zaman harcamazsınız. Söylemesi kolay "sadece dokularınızı ve modellerinizi sürükleyin ve gitmeleri iyi olur.

Bunun da ötesinde, tarayıcıda herhangi bir düzende 3D yapmanıza izin veren çok az araçtan biri. Sabit işlevden DX9 + 'a, Mac ve Windows'a kadar her shader platformunu hemen hemen destekliyorlar. Büyüyen "tarayıcı tabanlı oyun" pazarını hedeflemek istiyorsanız , bu teknoloji tek başına paha biçilmezdir .

Bir şeylerin programlama açısından, Unity'den elde ettiğiniz şey, bileşen tasarımını (kalıtım tarafında genellikle çok ağır olan kendi C ++ motorunuzu döndürmeye kıyasla) ve denemek için çok hızlı ve görsel bir ortamda sağlam bir kavramadır. oyun kodu. Gelecekteki C ++ motorlarına devralabileceğiniz Unity'yi kullanarak iyi tasarım uygulamalarını öğreneceksiniz.

Elbette, bir dilin diğeri üzerinde tercih edilmesi iyidir. Şahsen ben C # C ++ tercih ederim. Ancak, hangi dili kullandığınız, proje gereksinimlerinden gerçekten çok daha fazlasını gerektirir. Geliştiriciler, gerçekten bir pazardan uzak kalmak istemediğiniz için fanboysuzluk yapmayı göze alamazlar çünkü araçları veya dili bir sebepten ötürü sevmiyorsunuz.

Ayrıca, ikinci bir dili gerçekten öğrendikten sonra, bunun sadece yeni sözdizimi ve paradigmalar seçmenin çok zor olduğunu ve alet çantanıza yeni araçlar eklemenin gerçekten zor olduğunu göremezsiniz. Evet, C ++ 'ı öğrenmeli ve anlamalısınız, ancak yüksek seviyede önce iyi tasarımı anlamanız gerekir.


açıklama: Yani, Unity Pro'nun lisansının düz eski Unity'ye göre buna değdiğini mi kastediyorsunuz? Yorumunuz benim için biraz belirsizdi.
Kyle C,

7
Ücretsiz olanı kullanmamıştım, sadece 1500 $ / koltuk lisansı diğer ticari motor lisanslarına kıyasla ucuz.
Tetrad

Şu anda ücretsiz sürümü kullanmakta hiçbir sorun yok, sadece küçük kısıtlamalar var.
XandruCea

9

Gördüğüm kadarıyla temel sorun C ++ ya da Unity3D değil, yüksek seviye bir çözüme veya düşük seviye bir çözüme ihtiyacınız var .

Düşük seviyeli bir çözüm, giriş yapma, belleği yönetme veya modelleri yükleme işlemleriyle kirlendiğiniz bir çözümdür. Unity3D gibi temiz bir paket elde ettiğiniz üst düzey bir çözümdür.

Bana göre Unity3D (veya başka bir oyun motoru) veya C ++ kullanıp kullanmamanız oyununuzun ve projenizin hedeflerine bağlıdır.

  • Geliştirme süresinin hızlı olması ve / veya oyununuzun performansı yoğun olmaması veya grafiksel / hesaplamalı performansın en yüksek noktasında olmaması durumunda Unity3D kullanın. Oyuna odaklanmak istiyorsanız ve Unity3D’nin sağladığı varsayılan araçlar iyi durumdasa, Unity3D’yi kullanmayı düşünebilirsiniz.

  • C ++ diğer kütüphanelerde daha uzun geliştirme süresine sahipseniz, oyun daha fazla hesaplama / grafik gücü gerektirir veya Unity3D'nin içeremediği bir teknoloji kullanır.

Unity3D'nin iyi yanı, hala gerçek dünyadaki gelişmeleri yansıtan betik dilleri kullanmasıdır (C # veya JavaScript). Unity3D'de öğrendiğiniz OOP ve yazılım mühendisliği kavramları (Singleton, cephe, durum makineleri, dekoratörler, kompozisyon) uygulanabilir. Kaynak yönetimi, sahne grafiği, model yükleme, görüntü oluşturma, sahne kaydetme vb. DLL kodlaması.

Bu C ++ 'ı nerede bırakır? C ++ bir dildir ve C ++ 'ta Unity3D'de yapabileceğiniz birçok programlama kavramı vardır, bellek yönetimi veya belki de şablonlar siler (Unity 3.2 ile dil özellikleri, örneğin kapanmaları kapsayacak şekilde geliştirilmiştir).

Dediğim gibi, Unity3D'e karşı gerçekten C ++ değil. Unity3D'ye göre "C ++ plus kitaplıkları / SDK ya da kendi motorunuzu döndürün". Bu sizin hedeflerinize ve hedeflerinize bağlıdır. Yüksek kaliteli oyunlar veya görüntü oluşturma hattı veya girişi üzerinde kontrol sahibi olmanız gereken oyunlar için, C ++ plus kaputun altına girmenize izin veren bir motor kullanmak isteyebilirsiniz. Olmazsa, Unity3D ile 3D oyunlar için varsayılan tercihim olarak gideceğim.

Bununla birlikte, Unity3d ile bilgi, başlık deneyimi altında değildir, ancak oyun geliştirme sürecinin tamamını öğrenmek için başlamak için iyi bir yerdir. Örneğin, muhtemelen bir renderleyici yazmak ve OpenGL'de bir model yüklemek için artı bir sahne senaryosu ve giriş yapmak için çalışmaya değer bir sömestre ihtiyacınız olacak. Bunu Unity3D'de bir günden daha kısa sürede halledersiniz.


veya Ogre3d ile çalışın!
jokoon

Ogre3D ile en son çalıştığım zaman çok önceydi; Bir oyunun başlayabilmesi için Unity3D'den daha fazla çalışma gerektirdiğini düşünüyorum.
Extrakun

Bunun üzerine +1. C / C ++ ve Unity'yi tercih edemezsin çünkü bu bir elmalar ve portakallar. Yine de tercih edebileceğiniz şey, C / C ++ tarafından sağlanan daha düşük düzeyde geliştirme fikri veya Birimin izin verdiği daha yüksek düzeyde geliştirme fikridir.
Tim Holt,

8

Hayır, Unity3D, C ++ becerilerini hiçbir şekilde tehlikeye atmaz. Aslında, C ++ 'ı bilmek bir oyun programcısı için çok daha önemlidir.

Unity3D oyun geliştirme için gerçekten harika bir araçtır. Kendimden gerçekten hoşlanıyorum ve hemen hemen her oyun için, özellikle küçük ekipler için tavsiye ediyorum. Ancak Unity3D'nin kendisi C ++ ile yazılmıştır; ve gerçekten nasıl çalıştığını anlamak için C ++ 'ı (ve ayrıca bir sürü düşük seviye şeyleri) bilmek zorundasınız.

Unity3D kullanıyor olsanız bile, yalnızca C ++ becerileri ve dahil olan ilke ve algoritmaların düşük seviyeli anlayışı, onu tüm potansiyeli ile kullanmanıza izin verecektir. Bu, diğer oyun motorları için de geçerlidir.

Gerçekten iyi bir iş çıkarmak, performansınızın her bir son parçasını seçtiğiniz platformdan sıkmak ve mümkün olduğunca çok sayıda modern efekt ve algoritmayı tıkamak için, C / C ++ dışında hiçbir şey kullanamazsınız. Muhtemelen montajcı parçalarıyla.


Beklediğim cevap bu +1:]
Notabene

3

Söyleyebileceğim kadarıyla, hedef platformunuza bağlı, AAA oyunları ve konsol (XBOX, Wii, vb.) Oyunları maksimum performans elde etmek için genellikle C ++ 'ta olacak, ancak tarayıcı tabanlı bir oyun yazıyorsanız Unity de sık sık Kullanılmış.

Ancak, sorunuza göre, Unity gibi araçlarla yapmanın basitçe yapması gereken, çalışmak için geniş bir standartlaştırılmış çerçeve sağladığını düşünüyorum; bu, yarım yıllık bir projede yarı pişmiş prototip ile oldukça oyuna girmiş oyun arasında bir fark yaratabilir.


3

Pennsylvania'nın Bilgisayar Grafikleri ve Oyun Teknolojileri Yüksek Lisans Programına gittim, tüm projelerimizi en düşük seviyede, C ++, OpenGL, CUDA vb. Projelerle yaptım. Projelerimize fizik tabanlı animasyon, mimarlık karakter animasyonu ve Bezier eğrilerinin çeşitli biçimlerini temsil eden İK, bilirsin, programlama, doğrusal cebir ve hesaplamalardaki uzmanlığı destekleyen gerçekten temel şeyler.

Sonra, Unity'yi indirdim ve yaratmaya çalıştığım her şeyin herkesin kullanabileceği bu ücretsiz süitte şişelendiğini öğrendim.

Ben rahatsız mı oldum? Biraz, kuşkusuz, ama birlikten araç kullandığımda okuldan bu anlayışı benim için çok daha tehlikeli yaptığımı öğrendim. Halen bir yıldan daha kısa bir sürede konseptten pazara oyun getirdiğimiz oyunlarda çalışıyorum ve “o matematik meselesi” söz konusu olduğunda ben hala go-to-play. Sana tavsiyem bu hareketlerden geçiyor; sektöre girdiğinizde kesinlikle paha biçilmez olacaksınız.


Ondan (teorik olarak) bir rozet alabilirsiniz . :)
Cyclops

Burada hiçbir şey yok, çünkü sorular eskimez ve forumlarda olduğu gibi "ölür". :) Geç cevaplar her zaman tamamdır.
doppelgreener

0

Cevap vermekte gecikebilirim ama bu, bu kafa karışıklığını yaşayan kişilerin bazılarına yardımcı olacak ..

Başlangıçta, üçüncü taraf motorları (örneğin birlik) kullanmaktan nefret eden c ++ programcısıyım.

Birliği denedikten sonra, Oyun geliştiricisi için gerekli olan şeylerle karşılaştım. Özellikle birliği değil, YÜKSEK DÜZEY Perspektifine girmenin avantajlarını listeliyorum.

  1. Yüksek seviyede tasarımın nasıl yapıldığını anlamak, düşük seviyeli optimizasyonlardan rahatsız olmaktan daha önemlidir.
  2. Varlık mimarisine sahip olan (bileşen tabanlı mimari) motorları, bu mimarinin tam olarak nasıl yardımcı olacağını öğrenmede yardımcı olacaktır.
  3. En son teknolojiyi bileceksiniz (en azından terminoloji) ve en azından Grafik konusunda endüstri ile ilgili en güncel durumda olacaksınız. Bu, birliği denemeyi seçmemin asıl nedeni!
  4. Farklı kaynak ithalatçı araçları için harcanan zamanın atlanması. (Tabii ki boş zamanlarında daha eğlenceli olacağı için kendi 3d ithalatçılarımı c ++ ile yazmayı seveceğim)

Yukarıda, üst düzey motor seçiminin sebeplerinden bazıları var. Fakat aynı zamanda, C ++ 'ı mükemmel bir Game dev için en gerekli ve faydalı dili olarak öğrenmeyi bırakmamalısınız.

İlk önce görselleştirmeyi anlayın ve Unity ile hızlı prototipler yapın ve bu deneyimi c ++ ile iyi bir oyun tasarlamada kullanın.

Yakında birlik ile daha üst düzeyde iyi bir deneyim kazandığım için c ++ 'a döneceğim :)

İyi şanslar!


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.