Linux Neden Oyunlarda Geri Kaldı? Linux İçin Oyun Geleceği, OpenGL ve DirectX

Başlatan AnimeOTAKU, 11 Ocak 2016 - 22:08:25

« önceki - sonraki »

0 Üyeler ve 2 Ziyaretçi konuyu incelemekte.

AnimeOTAKU

  Yazı, 1 Ocak 2010 tarihinde Wolfire Games Blog'un sahibi David Rosen tarafından yazılmıştır, bu yüzden günümüzde hâlâ geçerliliğini korumayan şeyler içerebilir. Steve Cruz adlı Ekşi Sözlük kullanıcısına çevirisi için teşekkür ediyorum. SDN Forum`dan realmanager adlı üyenin bu yazıya çok büyük katkıları var. 1 saatlik uğraş ile yazıdaki bir çok hatayı düzeltmiş. Ardından bende 1 saate yakın daha uğraşarak; imla hatalarını düzelttim, daha okunaklı olması için düzeltmeler yaptım ve çeşitli eklemelerde bulundum. Yazı,  uzun bir uğraşın sonucu anlayacağınız. Eğer yazıda hatalar görürseniz lütfen bildiriniz. Çevrimdışı okuyabilmeniz için PDF biçimindeki dosyanın indirme adresini veriyorum: http://www.mediafire.com/view/pz29k557cfra1s9/Linux_Neden_Oyunlarda_Geri_Kald%C4%B1_Linux_%C4%B0%C3%A7in_Oyun_Gelece%C4%9Fi%2C_OpenGL_ve_DirectX.pdf



Linux Neden Oyunlarda Geri Kaldı? Linux İçin Oyun Geleceği, OpenGL ve DirectX

Sık sık, diğer oyun geliştiricileriyle bir araya gelip oyunumuz için OpenGL kullandığımızı söylediğimizde güvensiz bakışlarla karşılaşıyoruz: neden biri OpenGL kullanır ki? DirectX`in bu işin geleceği olduğunu düşündüklerinden, grafik kartı temsilcilerine OpenGL kullandığımızı söylediğimizde odanın ısısı on derece birden düşüyor. Bu bizi şaşkına çeviriyor. Örneğin standartlara dayalı sitelerin Silverlight, Flash ve ActiveX'den daha üstün olduğu yaygın bir düşüncedir. Çoklu sistemler için yazılım geliştirme takdire şayan ve akıllıcadır, kendine saygısı olan hiçbir kullanıcı kapalı-standart yazı dökümanları ve değiş tokuş sunucularıyla uğraşmaktan hoşlanmaz. Bu ne tuhaf bir dünyadır ki mühendisler sadece Microsoft'un en son çıkardığı ruhsatlı apisini kullanmak için deli olmuyor ama aynı zamanda onun açık standart olan rakibini geçersiz kabul ediyor?

     Neden OpenGL'i desteklediğimizin hikayesine dalmadan önce birazcık tarihten söz edelim;



OpenGL Nedir?

     1982'de Silicon Graphics IrisGL [GL, Graphics Library'nin (Görüntü Kütüphanesi) kısaltılmışıdır.] adında, lisanslı bir api kullanan yüksek performanslı grafik terminalleri satmaya başladı. Yıllar içinde IrisGL şişti ve devam ettirilmesi zor bir hal aldı. Silicon Graphics radikal yeni bir adım atıncaya kadar; IrisGL'in kodunu daha anlaşılır hale getirip bir açık standart yaratmak. Rakipleri bu sayede yeni açık grafik kütüphanesini (OpenGL) kullanabilecek fakat karşılığında kütüphanenin devamlılığını sağlamaya ve güncellemeye yardım edeceklerdi.

     Bugün OpenGL, Khronos Group isimli kar amacı gütmeyen ve yüksek kalite medya apilerinin devamını sağlamakla ilgilenen bir çok şirketin temsicilerinden oluşan bir grup tarafından yönetiliyor. Daha düşük seviyede OpenGL mimari inceleme kurulu (ARB) tarafından kontrol ediliyor. OpenGL, Xbox hariç tüm oyun platformlarında destekleniyor. Bu da bizi bir sonraki başlığımıza getiriyor:



DirectX Nedir?

     Ms-Dos zamanından bu yana Microsoft, oyunların, kullanıcıların işletim sistemi seçiminde önemli bir rol oynadığını anladı. Bu sebeple 1995'te özel oyunların yeni işletim sistemleri Windows 95'de kullanılabilmesini teşvik etmek için lisanslı bir kütüphane seti hazırladı. Bu kütüphaneler Direct3D, Directinput, Directsound'dan oluşuyordu ve topluca DirectX ismini alıyordu. Microsoft 2001'de oyun pazarına girdiğinde DirectX Box'ı ya da kısaca Xbox'ı tanıttı. Xbox gelecek nesilde oyun pazarını ele geçirme amacıyla üretilmiş tam bir kayıp birincisiydi (4 milyar doların üzerinde kaybettirdi.).

     Şu anki oyun sahnesine bakarsak, açıkça bu strateji işe yaradı. Çoğu önemli PC oyunu şuan DirectX'i kullanıyor ve hem Windows hem de Xbox 360'da çalışıyor. Bazı istisnalar dışında rakip platformlarda çalışmıyorlar. Bunlar olmasa da olur diyebilmek için fazla önemli platformlar ve bu bizi büyük soruya getiriyor.



Neden Herkes DirectX Kullanıyor?

Herkes DirectX kullanıyor çünkü oyun geliştirmede api seçimi bir pozitif geri besleme döngüsüdür ve 2005 yılında bu döngü DirectX'in yönüne doğru değiştirildi. Çünkü ne zaman bir api daha popüler hale gelse iletişim etkisinden dolayı giderek daha ve daha fazla popüler hale gelir. En önemli iletişim etkileri şöyledir; api daha popüler hale geldikçe grafik kartı üreticileri daha fazla destek verir ve böylece grafik programcıları apiyi nasıl kullanabileceklerine dair bilgiye daha çabuk ulaşır.

     Api kullanımında ibre, DirectX'in yönüne, Microsoft'un Xbox360 ve Windows Vista tanıtımındaki iki uçlu kampanya sırasında döndü. Bu kampanya OpenGL'in geleceği ile ilgili yaydıkları fud [(korku (fear), belirsizlik (uncertainity), şüphe (doubt)] ve DirectX'in özelliklerini fazla bir şekilde abartmayı içeriyordu. O zamandan bu yana, iletişim etkisi, bu tutarsızlığı OpenGL ana akım PC oyunu piyasasından neredeyse yok olana kadar besledi.



1. İletişim Etkisi ve Bozuk Çemberler

Windows'ta DirectX grafik sürücülerinin OpenGL grafik sürücülerine göre daha iyi desteklendiği bir gerçektir. Bu, üretici desteğindeki bozuk çemberden kaynaklanıyor. Oyun geliştiricileri farklı sebeplerden dolayı OpenGL'den DirectX'e yöneltilirken grafik kartı üreticileri OpenGL sürücüleri, eklentileri ve dökümanları için daha az hata raporu almaya başladılar. Bu da daha sağlıksız OpenGL sürücülerine ve daha fazla oyun üreticisinin OpenGL'den DirectX'e geçmesine sebep oldu. Bu döngü şu an bile böyle devam ediyor.

     Benzer şekilde, daha fazla grafik programcısının OpenGL yerine DirectX'i nasıl kullanacağı bilmesi bir gerçek, yani DirectX'i kullanarak oyun yapmak OpenGL'le yapmaktan daha ucuz ve daha az eğitim gerekiyor. Bu başka bir bozuk çemberin sonucu; daha fazla oyun projesinin DirectX kullanmasıyla daha fazla programcı DirectX kullanmayı öğrenmek zorunda kaldı ve projelerde DirectX'i kullanmak OpenGL'i kullanmaktan daha ucuz hale geldi.



2. OpenGL ve Vista İkilisi Hakkında Korku Kampanyası

     Microsoft, Windows Vista'yı piyasaya sürerken OpenGL ile ilgili bir korku, belirsizlik ve şüphe (fud) kampanyası başlattı. 2003'de Microsoft, OpenGL mimari inceleme kurulunu terk etti ve böylece OpenGL'in geleceği ile ilgili bir beklentilerinin kalmadığını gösteriyorlardı. Sonra 2005'de Siggraph (Grafiğe Özel İlgi Duyanlar Konferansı) ve Winhec (Windows Donanım Mühendisliği Konferansı) kapsamında yaptığı sunumlarda Windows Vista'nın OpenGL desteğini kaldırabileceği ve sadece eski XP uygulamalarının sürümlerini destekleme yoluna gidebileceği izlenimi uyandırdı. OpenGL'in bu sürümü DirectX'in üstünde çalışacak ve böylece çok ciddi bir performans kaybına uğrayacaktı. Bu kampanya OpenGL kullananlarda büyük bir paniğe ve böylece bir çok grafik programcısının DirectX'e geçmesine yol açtı.

     Vista piyasaya çıktığında, OpenGL'le ilgili iddialarında çark etti ve üreticilere doğrudan OpenGL desteği veren hızlı kurulabilir sürücüler (icd) yazabilme imkanı verdi. OpenGL kurulu, OpenGL'in hala birinci sınıf vatandaş olduğunu ve OpenGL'in performansının hala DirectX kadar iyi olduğunu kanıtlayan bir haber yayınladı. Ne yazık ki OpenGL için hasar artık alınmıştı; OpenGL'le ilgili genel görüş kötü şekilde sarsılmıştı.



3. Pazarlama Kampanyalarındaki Yanlış Yönlendirme

Windows Vista ve Windows 7 için çıkış stratejileri Microsoft'un DirectX'i pazarlama çabasına eşlik etti. Bunu değişik DirectX sürümlerinden 'öncesi' ve 'sonrası' ekran görüntülerini göstererek yaptılar. Bir çok oyuncu DirectX 9'dan DirectX 10'a geçerlerse görüntülerin sihirli bir değnek değmiş gibi saçma sapan karanlık halinden normal hale geçeceğine ya da Halo 1'den Crysis'e geçeceğine inandı. Oyun gazetecileri, Crysis'in DirectX 9 sürümü ile DirectX 10 sürümü arasında hiçbir fark olmadığını ve DirectX 10 özelliklerinin bir konfigürasyon dosyası ile oynanmasıyla DirectX 9 sürümünün de gayet güzel çalışabildiğini kanıtladılar. Bu apaçık yanlışlığa rağmen pazarlama teknikleri ile oyuncular en yeni grafik özelliklerine erişmenin tek yolunun DirectX güncellemeleri olduğuna ikna edildi.

     Birçok oyun Microsoft'un pazarlama maskaralıklarına katılırken, John Carmack gibi daha sağlam grafik programcıları bunun içinde yer almayı reddetti. O bunu şu şekilde ifade etti; "Şahsen, DirectX 10 gibi bir şeye şimdilik atlamazdım. Taşların biraz daha yerine oturmasını ve gerçekten ona çok ciddi bir ihtiyaç olup olmadığını görmeyi beklerdim."



Peki Biz Neden OpenGL Kullanıyoruz?

  OpenGL'e daha az üretici desteği verilmesine, artık oyunlarda kullanılmamasına, Microsoft tarafından aktif olarak saldırılmasına ve pazarlama momenti olamamasına rağment neden hala onu kullanmalıyız? Onu hendeğe atıp herkes gibi DirectX kullansaydık daha kârlı olmaz mıydı? Hayır. Çünkü gerçekten OpenGL, DirectX'den daha güçlü, daha fazla platformu destekliyor ve oyun dünyasının geleceği için önemli.



1. OpenGL, DirectX'den Daha Güçlü

OpenGL'in DirectX'den daha hızlı draw call'ları olduğu yaygınca bilinen bir bilgi. (Eğer benim sözüm * bir şey ifade etmiyorsa http://developer.nvidia.com/...tensions-gdc-2006.html adresindeki Nvidia sunumuna bakabilirsiniz.) ve üretici eklenti mekanizması sayesinde yeni GPU özelliklerine en önce onun üzerinden ulaşabiliyorsunuz. OpenGL size tüm platformlarda tüm yeni grafik özelliklerine doğrudan erişim imkanı sunuyor. DirectX ise sadece en yeni Windows sürümlerinde olmak üzere, bu yeni özelliklerle ilgili tek tük resim kareleri sunuyor. Microsoft'un DirectX 11'de çok yücelttiği yeni tesselation teknolojisi OpenGL'de 3 yıldır var olan bir eklentidir. Hatta fast instancing ve vertex texture fetch özellikleri yıllar önce kullanılabilir durumdaydı. Gelecek birkaç yılda ne gibi yeni teknolojiler ortaya çıkacak bilmiyorum ama biliyorum ki ilk önce OpenGL'de kullanılabilir olacak.

     Microsoft, DirectX 10 ve 11 için çok çalıştı ve şimdi neredeyse OpenGL kadar hızlı çalışıyorlar ve neredeyse aynı miktarda özelliği destekliyorlar. Gel gelelim, büyük bir problem var; Windows XP üzerinde çalışmıyorlar! PC oyuncularının yarısı bugün bile hala XP kullanıyor, ancak sorun bundan ibaret değil. DirectX ve Windows'un yeni sürümleri çıktığında birkaç yıl sonra oyuncuların çoğu performans sorunları, donanım veya yazılım uyumsuzluğu, sürücü eksikliği gibi nedenlerden dolayı bir önceki Windows'ta (ki büyük ihtimal bu Windows 7 olacak) kalacak. Yani bu döngü hep bu şekilde devam edecek çünkü pazarlama kaygısı yüzünden zaten bu şekilde tasarlandı. Yani DirectX en yeni teknolojilere en çabuk, en performanslı ve en kararlı ulaşmak için geçerli bir seçenek değil. Eğer en iyi grafik kalitesine ve hızına sahip olmayı ve bunu en fazla oyuncuya ulaştırmayı önemsiyorsanız OpenGL'den başka seçenek yok.



2. OpenGL Çoklu Sistemlerde Çalışır

Bizim Lugaru isimli oyunumuzun kullanıcılarının yarısıdan fazlası Windows harici platformlar kullanıyor ve yeni oyunumuz Overgrowth için de durum aynı olursa şaşırmayız. Ana oyun üreticileriyle konuştuğumuzda Windows ve Xbox harici platformları desteklemenin zaman kaybı olduğunu duyuyoruz. Gel gelelim, bu iddia için hiçbir zaman bir kanıt göremedik.

     John Carmack'e Rage'in bir DirectX oyunu olup olmadığını sorduğumda şunu söyledi; "Hala bir OpenGL oyunu ama açıkça Xbox360 için Direct3D vari bir api ve Playstation 3 için CG kullanıyoruz. Teknolojinin hangi apiyi veya hangi nesil uygulamayı kullandığıyla ne kadar az ilgilendiğini görmek çok garip. Elinde küçük bir avuç dolusu dosya apiyle ilgileniyor ve milyonlarca satır kodun hangi platformda çalıştığının bile farkında bile değil.". Eğer OpenGL ile her platforma ulaşabiliyorsanız neden DirectX'e güvenerek kendi kendinizi ayağınızdan vurasınız ki? Eğer tek umarsadığınız şey Windows ise bile Windows kullanıcılarının yarısının hala eski sürüm Windows kullandığını ve kullanacağını (döngü),  eğer DirectX'in son versiyonu ile yazdıysanız sizin oyununuzu gerçek anlamda tam verimle oynayamayacaklarını tekrar hatırlatmak isterim. Windows kullanıcılarına da (en büyük masaüstü oyun platformu) en yeni grafiği ulaştırmanın tek yolu OpenGL'den geçiyor.



3. OpenGL, Oyunların Geleceği İçin Daha İyi

OpenGL, herhangi bir platformda kullanıcıları donanımlarının verebileceği en yüksek kalite grafiği tatmaları için yaratılmış kâr amacı gütmeyen açık bir standarttır. Kullanımı, daha çok genç olan bu pazarı ele geçirmek isteyen tekelci dev bir şirketin saldırıları sonucu baltalanmıştır. Yavaş yavaş Direct3D'nin Windows tarafından desteklenen tek api olmaya başlamasıyla, Microsoft, PC oyunu pazarını boyunduruğu altına almaktadır. Bizim özgürlük, fiyatları aşağı ve kaliteyi yukarı çekmek için rekabete ihtiyacımız var.

     Microsoft'un oyun pazarında tekelleşmesinin hem oyuncu hemde oyun üreticisi için çok tehlikeli sonuçları olabilir.



OpenGL Toparlanabilir Mi?

     1997'de durum aynı şu anda olduğu gibiydi. Microsoft Direct3D için kitlesel bir pazarlama kampanyası yürütüyordu ve sonunda herkes "biliyordu" ki Direct3D, OpenGL'den daha hızlı ve daha iyiydi! Bu durum Chris Hecker,  DirectX'i itham eden açık mektubu yayınlamasıyla değişmeye başladı. (http://chrishecker.com/images/3/33/Gdmogl.pdf) Bundan kısa bir süre sonra John Carmack ünlü
OpenGL çıkışını postaladı. (http://www.bluesnews.com/archives/carmack122396.html) ve ID Software'in tüm oyunlarını OpenGL ile yaparak
sözlerinin arkasında durdu ve DirectX'in en yeni 3D oyunlar için gerekli olmadığını kanıtladı.

     Bu dersin son yıllarda unutulmaya başlandığı görülüyor. Çoğu oyun geliştiricisi DirectX pazarlamasının büyüsü altına girdi veya bozuk çemberlerin ve iletişim avantajlarının girdabına kapıldı. Şimdi reklamın örtüsünü ve kafa karıştıran kelimeleri bir kenara bırakalım ve gerçeğin ne olduğunu görelim. Eğer DirectX kullanıyorsanız ya artık güçsüzleşmiş ve şişmiş DirectX 9'u kullanacaksınız ya da DirectX 10 ya da 11 kullanmak için kullanıcı tabanınızın büyük bir kısmını kurban edeceksiniz ki mevcut birçok donanımın bunlara tam destek vermediğini unutmayın.

     Diğer yandan eğer OpenGL kullanırsanız DirectX 11'den daha hızlı ve güçlü grafik özelliklerine sahip olacaksınız ve buna Windows'un tüm sürümleri, Linux ve ismini saymadığım birçok platformda sahip olacaksınız (Xbox hariç). Ayrıca bu özelliklere tarayıcı oyunlarının yeni nesli olan ve hızlı bir şekilde gelişen WebGL standartında da sahip olacaksınız.

     Eğer bir oyun geliştiricisiyseniz sizden tek istediğim şekilleri karşılaştırıp OpenGL'in daha iyi bir seçenek olup olmadığına karar vermeniz. Bazı programcılar DirectX'in tarzını OpenGL'e tercih edebilirler ama bu düşük seviyeli apileri bir soyutlama katmanına çeviriyor olacaksınız bu yüzden bu bir tercih faktörü olmamalıdır. Eğer OpenGL ile ilgili sevmediğiniz bir şey varsa sadece mimari inceleme kurulundan (ARB) değiştirmelerini isteyin. Onlar size hizmet etmek için var.

     Eğer eski sürüm Windows, Linux veya Mac kullanan bir oyuncu iseniz, umarım DirectX'in yeni oyunların sizin platformunuza erişimi engellemek için var olduğunun farkındasınızdır. Buna karşı savaşmanın tek yolu OpenGL oyunlarını desteklemenizdir.





Yazının sonuna Stone adlı SDN Forum üyesinin bu yorumunu eklemeyi uygun gördüm (düzenlenmiştir):


     
Merhaba arkadaşlar. OpenGL gerçekten güçlü bir platform. Ben hem Windows Developer olarak hemde Game Developer/Software Engineer olarak OpenGL ile zamanında oldukça yakından ilgilendim fakat şu an ki kullandığım API tamamiyle farklı. Şu anda C++ ile Native DirectX, C# ile de XNA kullanıyorum. Büyük projelerde en önemli kısım Development süreçleridir ve OpenGL bunu ne yazık ki tam olarak karşılayamıyor. DirectX için kullanılan halihazırda bir Debugger/Compiler ve Interface var. Visual Studio özellikle XNA'de Development sürecini %40 oranında azalttığı bir gerçek. Ve bu durum dahada ilerliyor. API'lerin yanında Library'ler sürekli gelişiyor ve sürekli kullanılan kodlar daha kolay bir şekilde kullanılmaya başlıyor. Örneğin Game Development ile uğraşanlar Device oluşturmak ve bir Triangle çizdirmenin OpenGL'de kaç satır olduğunu iyi bilirler. XNA'de Device zaten elimizde hazır. C# ve .Net ile birlikte süreç dahada kısalıyor. Bu yazının direkt Microsoft'u desteklediğini sanmayın. Rekabet olması son kullanıcıların, oyun severlerin ve oyun geliştiricilerin işine yarar. Rekabet sayesinde çok daha güçlü ve gelişmiş teknolojilere sahip olunaabilir. Ama şu anda DirectX, OpenGL karşısında açık ara önde ve bir çok büyük grafik kartı tasarımcılarıda DirectX ile daha hızlı sonuçlar elde edebiliyor. Örneğin OpenCL (Open Computing Language) ve DirectCompute da bunlardan biri. Elbette her ikiside OpenGL'i tamamen destekliyorlar fakat DirectX ve .Net Framework ile Development süreci daha kısayken ve bir proje üzerinde zaman kısayken ve platform tek bir platform ise neden OpenGL kullanılsın ki? Bu da sadece diğer bir bakış açısı. Saygılarımla.




ahmet_matematikci

Bir solukta okudum. Elinize sağlık. akıcı bir dil kullanılmış.
♥ Kız tavlamak için kahraman olmak gerekmez. Doğru kadın zaten sizi kahraman yapar ;)

naklov

Zevkle okuduğum bir makale, paylaşımın için teşekkür ederim.
Peşinden Gidecek Cesaretin Varsa Bütün Hayaller Gerçek Olabilir..

seron

Faydalı bir yazı olduğuna karar verdim. Paylaşım için teşekkür ederim...

plazma

Okumuştum makaleyi ama tabikide 6 yılda bazı şeyler değişti, vulkan olsun sürücüler olsun, api vs. Emeğiniz için teşekkür ederim uğraş verilmiş hakikaten umarım yeni makalelerde de çevirilerinizi görmeye devam ederiz.

AnimeOTAKU

Alıntı yapılan: plazmaOkumuştum makaleyi ama tabikide 6 yılda bazı şeyler değişti, vulkan olsun sürücüler olsun, api vs. Emeğiniz için teşekkür ederim uğraş verilmiş hakikaten umarım yeni makalelerde de çevirilerinizi görmeye devam ederiz.
Yanlış anlama oldu, İngilizce'den Türkçe'ye çeviren ben değilim. Steve Cruz adlı bir Ekşi Sözlük kullanıcısı çeviriyi yapmış.

Sh4oTT

Emeği geçen herkese teşekkürler OpenGL ve DirectX in ne oldugunu öğrenmiş oldum :)

XRumer

Uzun zaman önce Ekşi Sözlük'te görmüştüm bu yazıyı. Çok güzel bir yazı olmuş. Microsoft'un oyunları Windows tekel haline getirmek için nasıl kullandığına harika bir örnek. Neyse ki OpenGL'in kıymeti yavaş yavaş anlaşılıyor. Steam'in Linux'a gelmesiyle birlikte Linux'taki oyun sorunu bayağı çözüldü ve çözülmeye devam ediyor. Microsoft, PC hariç her platformda geride kaldı. Eninde sonunda PC'de de kaybedecektir. Yeter ki özgür yazılım dünyası doğru adımlar atsın, geleceğe yatırım yapsın. OpenGL, HTML5 gibi yazılımlar bunun çok iyi örnekleri.