Gamasutra: Mason Remaley’nin Blogu – Tam Ekrana Özel Bir Yalan mı (…çeşit)

Aşağıdaki blog yazısı, aksi belirtilmedikçe, Gamasutra topluluğunun bir üyesi tarafından yazılmıştır. İfade edilen düşünce ve görüşler, Gamasutra veya ana şirketine değil, yazara aittir. Tam ekrana özel, bilgisayarınızın bir pencere vermeye karar verebileceği gerçek bir şeydir, ancak henüz tam ekran özel ve kenarlıksız pencere ayarlarının beklediğiniz şeyi yaptığı tek bir oyun bulamadım. Bu konuda uzmansanız ve bu gönderinin herhangi bir şekilde yanlış olduğunu düşünüyorsanız, kesinlikle bana e-posta gönderin veya Twitter’da bana DM atın ve bir düzeltme yapacağım! Sonuca atlamakla ilgileniyorsanız, Diğer Oyunlarda ve Çıkarımlarda Tam Ekran Münhasırlığını Test Etme bölümüne bakın. Metodolojimle ilgileniyorsanız, okumaya devam edin. Bugün özellikle Windows 10’dan bahsediyorum. OpenGL kullanıyorum ve doğrudan win32’ye sesleniyorum, ancak grafik API’niz ve pencereleme kitaplığınızdan bağımsız olarak bu sonuçlar muhtemelen ilginizi çekecektir. Başlamadan önce muhtemelen bazı terimleri tanımlamalıyım: Tam ekrana özel dediğimde, birleştiriciyi atlayan tam ekran bir pencereden bahsediyorum. Tam ekran optimizasyon modu ile tam ekran özel modu arasında teknik olarak bir fark olduğunun farkındayım, ancak bu farkla özellikle ilgilenmiyorum. Bu testlerin birçoğunu FSO devre dışıyken çalıştırdım ve gözle görülür bir fark görmedim. Şunu da belirtmekte fayda var ki, tam ekrana özel bir seçeneğe sahip çoğu oyun, etkinleştirildiğinde ekranınızın çözünürlüğünü bozar. Münhasırlık için görüntü ayarlarınızı değiştirmek gerekli olsun veya olmasın, kesinlikle yeterli değil: yine, amacımız besteciyi atlamak. Birkaç gün önce, Way of Rhea için video seçeneklerini ayarlamanın zamanının geldiğine karar verdim. Daha önce aşağıdaki pencere modlarını destekledim (ya da en azından, yaptığımı sanıyordum!): Kenarlıksız pencere Pencereli Bunlardan herhangi birinde en boy oranını düzgün şekilde kilitlemedim, bu da UI ve/veya oyun öğelerinin ekran dışında olmasına neden olabilir bazı kurulumlar, bu yüzden ilk hedefim bunu düzeltmekti. Bunu yaparken, çoğu oyunun yalnızca sabit bir dizi çözünürlük arasından seçim yapmanıza izin vermesinin biraz garip olduğunu fark ettim. Geleneksel olarak bu mantıklıydı – istediğiniz çözünürlüğü elde etmek için ekran ayarlarıyla uğraşacaksanız, yalnızca ekranın desteklediği çözünürlükleri destekleyebilirsiniz! Ancak, giderek daha yaygın hale gelen kenarlıksız pencere modundaysanız, yalnızca bir çerçeve arabelleğini yeniden boyutlandırdığınız için çözünürlüğü istediğiniz herhangi bir şeye ayarlayabilirsiniz. Tam ekrana özel destek, hangi çözünürlükleri destekleyebileceğimi belirleyecekse, belki önce bunu devre dışı bırakmam gerektiğini düşündüm. Ne kadar zor olabilir ki? Pekala, muhtemelen bu yazının başlığını zaten gördünüz ve bu sorunun cevabının ne olduğuna dair bir tahmininiz var. 🙂 Muhtemelen DirectX’in bunun için bir API’si vardır, ama ben OpenGL’yi hedefliyorum. İnternet, OpenGL’de tam ekran özel modunu elde etmek için yapmanız gerekenler hakkında söylentilerle dolu. Bazıları WS_POPUP pencere stilini uygulamanız gerektiğini söylerken, diğerleri WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS. Diğerleri, CDS_FULLSCREEN ile ChangeDisplaySettings’i çağırmanız gerektiğini iddia ediyor. Tüm bu iddialarla ilgili büyük bir sorun var: belgelenmediler ve gerçekten işe yarayıp yaramadığını test etmenin açık bir yolu yok! İşleri doğru yapmak konusunda ciddiysek, tam ekran münhasırlığını test etmenin bir yolunu bulmamız gerekir. Bu konuda yanılmış olmayı çok isterim, ancak anlayabildiğim kadarıyla Microsoft/NVIDIA/etc, bir pencerenin tam ekrana özel olup olmadığını doğrudan kontrol etmenin bir yolunu sağlamıyor. Münhasırlığı test etmenin yollarını çevrimiçi olarak araştırırsanız, daha fazla kulaktan dolma bilgiler bulacaksınız: Çalışmayan Testler Hacim Ölçer İnsanlar genellikle bilgisayarın sesini bir kısayol tuşuyla değiştirerek ve ses katmanının gösterilip gösterilmediğini gözlemleyerek münhasırlığı kontrol eder. oyunun zirvesinde. Bunu münhasırlığı dışlamak için kullanabiliriz (besteciyi atladığımız için özel olursak ses ölçer görünmeyecektir), ancak münhasırlığı kanıtlamak için kullanamayız-açıkça oyunlar gördüm. özel değil, yine de ses ölçeri gizlemeyi başarır. (Aslında bunu nasıl başardıklarını daha çok merak ediyorum, eğer bunu nasıl yapacağınızı biliyorsanız, sizden duymak isterim.) Windows Anahtarı Diğer bir yaygın öneri, Windows anahtarının çalışıp çalışmadığını kontrol etmektir. İnsanların bunu neden bir test olarak önerdiğini anlayabiliyorum – bazı test makinelerimde, tam ekrana özel pencereler, Windows menüsünü gizler. Ancak, bu hepsi için geçerli değildir ve kaynağı kontrol etmediğiniz bir oyunu test ediyorsanız, windows tuşunun oyun tarafından manuel olarak devre dışı bırakılmış olması çok muhtemeldir. Bu testi kendiniz denerseniz, windows menüsünün belirsiz olmadığı kurulumlarda bile, münhasırlığı kaybettiği için pencerenin siyah yanıp sönmesine neden olduğunu fark edebilirsiniz… Yanıp Sönme Gördüğüm en son yaygın öneri, pencerenin açık olup olmadığını kontrol etmektir. /monitor, odağı kaybettiğinde siyah renkte yanıp söner. Şimdiye kadarki testlerimde, tam ekrana özel pencereler odağı kaybettiklerinde yanıp sönecek, ancak başka potansiyel flaş kaynakları da var – örneğin ChangeDisplaySettings, hiçbir ayar değiştirilmese bile monitörün yanıp sönmesine neden olabilir ve birçok oyun, kazanç/ odak kaybetmek. Münhasırlığı kaybetme nedeniyle flaş ile başka bir nedenle flaş arasındaki farkı söyleyebileceğine kendimi ikna etmeyi başardım, ancak bu çok ince ve oyunumun doğru çalışıp çalışmadığını kontrol etmek için güvenmek istemeyeceğim bir şey değil! İşe Yarayan Bir Test Bu, klasik Windows anahtar testi değil—biraz daha fazlası var.Klasik windows anahtarı testi değil—biraz daha fazlası var. Pekala, çalışmayan birkaç yöntemi listeledik. Peki ne yapıyoruz? Tam ekran özel modundaysak, besteciyi atlıyoruz. Bu, yazdırma ekranı gibi şeylerin doğru şekilde davranmayacağı anlamına gelir. Özellikle, tam ekrana özel bir pencereniz varsa ve yazdırma ekranı kısayoluna basarsanız, geçerli bir ekran görüntüsü almak yerine *son özel olmayan çerçevenin* ekran görüntüsünü alırsınız. Normalde bu bir baş belasıdır, ancak bugün bundan faydalanabiliriz! Test aşağıdaki gibidir: Tam ekrana özel olabilecek oyunu başlatın Kamerayı unutulmaz bir yere taşıyın Uygulamanın özel olmasını geçici olarak önleyin, örneğin Windows menüsünü açıp kapatmak için Windows tuşuna iki kez basarak veya oyunun bir bölümünü başka bir pencere Oyun normal durumuna döndüğünde, kamerayı yeni bir konuma taşıyın Yazdırma ekranı kısayolunuza basın Yazdırma ekranını kullanmanız önemlidir – örneğin Steam ile ekran görüntüsü almayın, Steam özel pencerelerin ekran görüntüsünü doğru şekilde alabilir Kontrol edin ortaya çıkan ekran görüntüsü: Ekran görüntüsü güncelse, ayrıcalıklı değilsiniz. Ekran görüntüsü, Windows menüsü/böylesi mevcutken bulunduğunuz oyunun alanına aitse, özel moddasınız! (menü/pencerenin kendisi ekran görüntüsünde görünmeyecektir) Lütfen dikkat: Microsoft’un bir gün bunu düzeltmeyeceğinin sözünü veremem, bu sonuçların Windows sürümünüzde tekrarlanabilir olup olmadığını kendiniz test etmeniz gerekecek. Hiçbir zaman güncel olmayan bir ekran görüntüsü alamıyorsanız, ya düzeltilmiştir ya da henüz tam ekran özel bir uygulamayı test etmemişsinizdir. 5 farklı kurulumda çevrimiçi olarak önerilen OpenGL’de tam ekran ayrıcalığı kazanmanın çeşitli yöntemlerini test ettim. Bulduklarım: WS_POPUP pencere stili olmadan hiçbir zaman başarılı bir şekilde ayrıcalık kazanmadım WS_CLIPCHILDREN veya WS_CLIPSIBLINGS pencere stillerinin fark yarattığını hiç gözlemlemedim CDS_FULLSCREEN ile ChangeDisplaySettings çağrısının fark yarattığını hiç gözlemlemedim Bu çok şaşırtıcı olmamalı -ismine rağmen, belgelere göre tek yaptığı ChangeDisplaySettings tarafından değiştirilen diğer ayarları geçici yapmaktır. Ayrıca bkz. Raymond Chen. 5 kurulumun tümünde, ChangeDisplaySettings’i çağırmadan herhangi bir çözünürlükte ayrıcalık elde edebilirim, sadece bir çerçeve arabelleğine işliyorum ve tıpkı kenarlıksız pencere modunda olduğu gibi yerel çözünürlüğe yükseltiyorum. Bununla ilgili hiçbir şey besteci gerektirmez. Beş kurulumdan ikisinde, DPI Aware olmadan münhasırlık elde edemedim Aşırı kafa karıştırıcı DPI Awareness API’sine rağmen, bu mantıklıdır – yanlış DPI’da oluşturursanız, bestecinin nihai sonucunuzu görüntülenmeden önce ölçeklendirmesi gerekir. DPI Aware olmam gerekmeyen kurulumlarda, ölçeklendirme gerektirmeyen “normal” bir DPI’m vardı. Tamam, WS_POPUP + DPI Farkındalığı için işler iyi görünüyor, değil mi? Pekala… WS_POPUP ve DPI Awareness münhasırlık için gerekli görünüyor, ancak ne yazık ki yeterli değiller! Çoğu oyuncunun kurulumuna en çok benzeyen kurulumda (NVIDIA GPU’lu tek monitör) tam ekran ayrıcalığını nasıl elde edeceğimi hiç çözemedim. Tamam, bu bir tür karışıklık! Diğer oyunlar bunu nasıl yapıyor? Tamam, bu bir tür karışıklık! Diğer oyunlar bunu nasıl yapıyor? …peki görünüşe göre, değiller! Şimdiye kadar, iyi karşılanmış grafiksel olarak yoğun bağımsız oyunlardan, bu tür şeylerle ilgilenmeyi bekleyeceğiniz daha büyük, iyi karşılanmış AAA oyunlarına kadar 6 oyunu test ettim. Özellikle eleştirmek istemediğim için oyunlara isim vermeyeceğim, sorun evrensel gibi görünüyor. İşte “anonimleştirilmiş” sonuçlar – Münhasırlığa izin verme açısından en bağışlayıcı bulduğum kurulumda test ettim: Ölçek Yayın Yılı Grafik API Motoru Tam Ekran özeldir Kenarlıksız Pencere özeldir Indie FPS 2020 DirectX Unity Hayır AAA TPS 2020 DirectX In House Evet Evet AA TP 2014, ancak güncel tutuldu DirectX/Vulkan In House Hayır Hayır AA FPS 2020 DirectX Unreal Hayır Hayır Indie FP 2020 In House DirectX Evet Evet AAA TPS 2020 DirectX In House Hayır Test edilen 6 oyundan hayır, hiçbiri tam ekran münhasırlığını güvenilir bir şekilde değiştiremez. Altıdan dördü kurulumumda hiçbir zaman münhasırlık elde etmedi ve kalan ikisi tam ekran görüntülendiğinde her zaman özeldi – kenarlıksız pencere modundayken bile. Not olarak, bu liste bir Unity oyunu, bir Unreal oyunu ve dört farklı tescilli motor içerir. Tam ekran özel seçeneğinin listelenen oyunlarda güvenilir bir şekilde yaptığı tek şey, ekran çözünürlüğünüzü oyuna uyacak şekilde değiştirmektir ve altıdan biri (AAA TPS 2020) bunu bile yapmadı. Başka hiç kimse güvenilir bir tam ekran münhasırlık geçişi sunmanın bir yolunu bulamadıysa, o modu da sunuyormuş gibi davranmak için çok az neden görüyorum! Ayrıca, bir çerçeve arabelleğinden yükseltmenin münhasırlık üzerinde hiçbir etkisi olmadığı (ve monitör çözünürlüğünü değiştirmeye kıyasla ölçülebilir bir mükemmel etki olmadığı) için, oyunumun oluşturabileceği çözünürlükleri sınırlamak için hiçbir nedenim yok. Bu gözlemleri göz önünde bulundurarak planım şu şekildedir: Kenarlıksız bir pencere modu öner Pencereli bir mod öner Yerel çözünürlüğün yüzdesi olarak bir oluşturma ölçeği seçeneği öner Pencereli mod penceresini desteklenen en boy oranları içinde keyfi olarak yeniden boyutlandırma yeteneği sun Bu, teknik olarak usta oyunculara fazla vaatte bulunmadan seçenekler sunun ve herkes için geniş bir kararlar listesinden daha az kafa karıştırıcı olmalıdır. WS_POPUP stilini kenarlıksız pencere modunda kullanmam gerekip gerekmediği konusunda çelişkiye düşüyorum – bir yandan bununla birlikte en azından bazı oyuncular tam ekran ayrıcalığı alacak, OTOH bu oyuncular daha sonra yazdırma ekranını kullanamayacak. Muhtemelen vsync ile yaptığım şeyi yapacağım – bunun için bir onay kutusu yapacağım, ancak geliştirici olarak ayarın olup olmadığı konusunda son sözü söylemediğimi kabul etmek için bir “ipucu” olarak etiketleyeceğim. herhangi bir etki. Bu gönderiyi beğendiyseniz ve gelecekte buna benzer daha fazla gönderi okumak istiyorsanız, beni Gamasutra, Twitter’da takip edebilir veya bültenime kaydolabilirsiniz!

About admin

Check Also

Overwatch’ın McCree’si, adaşı Blizzard’dan kovulduktan sonra adını değiştirecek

Eski bir Blizzard çalışanının adını taşıyan Overwatch kovboy kahramanı McCree, yakında adını değiştirecek. Onun adaşı, …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

wordpress tema