Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
4k çözünürlükte interface bit kadar kalıyor. Windows ölçeklendirmedir falan denedim bir şey değişmiyor tam ekran modunda 4k da görüntü tam ekrana sığmıyor. Pencere modunda görüntü net değil. 2k çözünürlükte daha iyi fakat bu seferde görüntü bir tık bulanık. Bu lanet oyunun ilkelliği insanı çıldırtır. Bunun hakkında fikri çözümü olan var mı? 1080p mi kullanacağız bunun yüzünden
Bir çözüm üretildiyse bende bulamadım. Normal oyuncular nasıl oynuyor anlamadım. Herkes 1080 yada 2k çözünürlüğe çekip bulanık mı oynuyor ne yapıyorlar.
Denedim interface bit kadar kalıyor. Windowsda ölçek %150 ayarlı bu client ayarlarınıda kurcaladım ne yaptıysam bit kadar interface düzeltemedim çözünürlüğü düşürmek dışında hadi düşürmekte mesel değil bu seferde oyun bulanık oluyor.
Yeni bir UI dizayn paketi satın aldım, hobi olarak Metin2'ye uyarlamak istedim. Uyarlarken fark ettim ki Metin2'nin arayüz elementlerinin hiç biri dinamik boyutlandırılmıyor. 4k monitör de kullansanız envanterin uzunluğu 560pixel, 480p monitör de kullansanız envanter uzunluğu 560pixel.
Demek istediğim bu:
Yani 4k monitörde oyunu açsanız envanter karınca duası gibi kalacak.
Ben çalışmaya introselect ve introcreate'ten başladım. Şimdilik yapabildiğim doğru hesap formülünü bulup (Tabiki de yapay zekayla) karakteri bütün çözünürlüklerde ekranın aynı noktasına...
Yeni bir UI dizayn paketi satın aldım, hobi olarak Metin2'ye uyarlamak istedim. Uyarlarken fark ettim ki Metin2'nin arayüz elementlerinin hiç biri dinamik boyutlandırılmıyor. 4k monitör de kullansanız envanterin uzunluğu 560pixel, 480p monitör de kullansanız envanter uzunluğu 560pixel.
Demek istediğim bu:
Yani 4k monitörde oyunu açsanız envanter karınca duası gibi kalacak.
Ben çalışmaya introselect ve introcreate'ten başladım. Şimdilik yapabildiğim doğru hesap formülünü bulup (Tabiki de yapay zekayla) karakteri bütün çözünürlüklerde ekranın aynı noktasına...
Geçmişte javascript canvas ile oyun yazarken bu tarz hesaplamaları yapmıştım. Metin2 için test etmedim.
Windowsun scaling özelliğini client için devredışı bırakmalısın. Modeller ve texturelerin bulanıklılığı gidiyor. Ui için ise bir tane origin çözünürlük belirleyip mevcut çözünürlükle arasındaki farkı bulman gerekiyor.
Genelde bu tarz eski oyunlarda 1024x768 , 800x600 gibi düşük çözünürlüğe uygun gui ayarlanıyor. Login sayfasındaki butonları ve inputları ele alalım.
1024x768 ‘de butonun boyutu 100x50 ise
3840x2160 çözünürlüğünde kaç olmalı?
Orijinimiz 1024x768 olduğuna göre oranı bulmamız gerekiyor.
Genişlik için: 3840/1024
Yükseklik için: 2160/768
Ancak fark ettiysen aspect ratio da değişiyor 1024x768 4:3 ken 3840x2160 ise 16:9. Butonumuz boyutu 100x50 yani 2:1. Butonu orantılı büyütmek için çıkan sonuçların bir tanesini çarpan olarak kullanmalısın. Eğer çıkan sonuçlardan x’i x’e y’yi y’ye çarparsan butonun oranı bozulur.
Bozulmanın önüne geçmek için çıkan sonuçlardan en küçüğünü al. Benim verdiğim örnekte yükseklik en düşük olacak. Daha sonra ui ‘nin original yükseklik ve genişliği ile çarpıyorsun.
Button x: 100*2.81
Button y: 50*2.81
En küçüğünü alma sebebi ise ekranda taşma olmasını engellemek için.
Ben javasciptte oyun yazarken şu şekilde hesaplamayı yapardım hep
ölçek = karekök( (yeni genişlik * yeni yükseklik) / (orijin genişlik * orijin yükseklik))
Ancak metin2 ui ‘sinde resimlerde kullanılıyor. Örneğin itemler. Bunların boyutları sabit. Directx bu resimeleri çizerken tekrar ölçeklendirme imkanı vermesi gerekiyor fakat araştırmadığım için bir şey diyemiyorum. Bu yorumum nereden başlamanız gerektiği ile ilgili temel düzeyde bilgi içeriyor.
Ayrıca ek bir not daha genelde işler bu kadar basit olmuyor. Ekrandan taşma durumları olabilir bunlar içinde ek kontroller lazım.
Bu yorumu yazarken geçmişe paylaştığım bi konuyu hatırladım. Devamını getirecektim ama kaldı öyle metin2 ui si için uğraşırken 2d uzayda çalışıyormuş gibi düşün. Eminim çoğu şeyi halledersin. Ayrıca soru için teşekkürler
2 boyutlu düzlemde herhangi bir objenin belirli bir konum içerisine geldiğini nasıl tespit ederiz?
İlk önce 2 boyutlu uzay hakkında bilgi edinelim. 2 boyutlu uzayda sağ, sol, yukarı ve aşağı gidebiliriz. Gidebileceğimiz 4 yön vardır.
Yatay harekette bulunduğumuz konuma x, dikey harekette ise bulunduğumuz konuma y diyoruz.
Aşağıdaki görselde 2 boyutlu uzayın koordinat düzlemi örneği yer almaktadır.
Merkez noktası 0, 0 olacak şekilde sağ tarafa gittikçe x değeri artar, sol tarafa gittikçe x değeri azalır. Yukarı ilerledikçe y artar aşağı indikçe y azalır.
2 boyutlu düzlemde...
Ben o işe meşguliyetten devam etmedim yoksa çoğu şey oluyordu. ama envanter gibi gridslot kullanan yerlerde ve butonlar gibi bazı diğer kısımlarda SRC taraflı detaylı değişiklikler gerekecekti. Gridslot scaling, scalingine göre tıklanabilir alanın ayarlanması, itemin üzerine gelince çıkan beyaz pperdenin scalingi vs gibi. ama harici yerler sadece pythondan ölçeklenebilir yapılabilir pekala.
Login tasarımı yapmaya çalışıyorum. Her seferinde boyutu değiştikçe yerler değişiyor ve gıcık bir hal alıyor. Araştırmalarım sonucu bende pek birşey bulamamıştım.
GetScreenHeight();
GetScreenWidth();
Kullanarak kullanıcının monitör değerini alsak onuda değişkenlerle kontrol ettirsek mesela ama o zamandq tüm ui yi bağlamak lazım tek tek bunun üzerinde uğraşıyorum. Tek tek bağlamak yerine toplu ekleyebileceğim bir yöntem bulursam inşallah Çözücem.
Login tasarımı yapmaya çalışıyorum. Her seferinde boyutu değiştikçe yerler değişiyor ve gıcık bir hal alıyor. Araştırmalarım sonucu bende pek birşey bulamamıştım.
GetScreenHeight();
GetScreenWidth();
Kullanarak kullanıcının monitör değerini alsak onuda değişkenlerle kontrol ettirsek mesela ama o zamandq tüm ui yi bağlamak lazım tek tek bunun üzerinde uğraşıyorum. Tek tek bağlamak yerine toplu ekleyebileceğim bir yöntem bulursam inşallah Çözücem.
Zaten mikrop oyunun temelinde ekran çözünürlüğüne göre bir ölçekleme yok. 800x600 de aç kocaman 1920x1080de aç daha ufak. çözünürlüğe göre ölçekleme hiç yapılmamış. 4K ekrana geçince bende bu eksiklikten sorun yaşıyorum. 4k çözünürlükte oyun içi görsel çok iyi gayet güzel fakat bu interface kısmını çözmek lazım. Ondada bayağı bir değişiklik falan lazım. Bilgisi olan arkadaşlar elbet vardır ama bu zamana kadar kimse üzerine düşmemiş bunun. Hatta bu oyunu yaparken 800x600 ile yapmışlar tahminimce çünkü o zaman tüm arayüz birbiri ile bütünleşiyor. taskbardaki 1080 ile 800p arasındaki butonların birbirinden uzaklaşmasından anlaşılıyor.
Açık konuşmam gerekirse pythonda biraz özürlüyüm ama c++ taraflı neler yapılabilir müsait olduğumda bakacağım. Bir şeyler bulabilirsem rehber konusu olarak paylaşırım. Eğer bu olayın python bağımlılığı varsa bile bu bağımlılığı tamamen kaldırıp tamamen c++ tarafından dinamikleştirmek en iyisi olacaktır. uitaskbar.py düzelt, uiinventory.py düzelt, uicharacter.py düzelt falan işkence..
Zaten mikrop oyunun temelinde ekran çözünürlüğüne göre bir ölçekleme yok. 800x600 de aç kocaman 1920x1080de aç daha ufak. çözünürlüğe göre ölçekleme hiç yapılmamış. 4K ekrana geçince bende bu eksiklikten sorun yaşıyorum. 4k çözünürlükte oyun içi görsel çok iyi gayet güzel fakat bu interface kısmını çözmek lazım. Ondada bayağı bir değişiklik falan lazım. Bilgisi olan arkadaşlar elbet vardır ama bu zamana kadar kimse üzerine düşmemiş bunun. Hatta bu oyunu yaparken 800x600 ile yapmışlar tahminimce çünkü o zaman tüm arayüz birbiri ile bütünleşiyor. taskbardaki 1080 ile 800p arasındaki butonların birbirinden uzaklaşmasından anlaşılıyor.
Açık konuşmam gerekirse pythonda biraz özürlüyüm ama c++ taraflı neler yapılabilir müsait olduğumda bakacağım. Bir şeyler bulabilirsem rehber konusu olarak paylaşırım. Eğer bu olayın python bağımlılığı varsa bile bu bağımlılığı tamamen kaldırıp tamamen c++ tarafından dinamikleştirmek en iyisi olacaktır. uitaskbar.py düzelt, uiinventory.py düzelt, uicharacter.py düzelt falan işkence..
Evet tam olarak bunu yapıyorum. Daha önce c# la consol app üzerinde oyunlar yaptım. Oradaki durumda kullanılan materyalleri dinamikleştirmek basitti hepsi zaten daha önceden tanımlı olan şeyler, ama metin2 ye baktığımızda her bir buton veya benzeri ui elementi sıfırdan dizayn ediliyor. Dolayısıyla tek tek işkence ederek düzenlemem gerekiyor. Toplu bir şekilde ayarlamaya çalışıyorum. C++ taraflı yapmak daha mantıklı tabi ama pythondan daha basit nasıl yapılabilir araştırıyorum. Eğer c++ taraflı bakma şansın olursa çok iyi olur. 1 logini bile düzenlemek ve pencere boyutuna göre otutturmak için işkence çektim resmen.
Kısmen çözüm; 2k olarak ayarladığımızda interface ölçeği daha iyi görüntü detayı ise 4k kadar keskin olmasada 1080p göre çok daha iyi. Fakat bunun geliştirilmesi elzem bir ilkellik