Çözüldü Metin2 gui tasarımları nasıl yapılır?

  • Konuyu açan Konuyu açan SinopLu57
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 87
Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

SinopLu57

Üye
Üye
Mesaj
121
Çözümler
2
Beğeni
83
Puan
719
Ticaret Puanı
0
Selamlar,

Sunucu açamama sebeplerimden olan bir taneside gui tasarımları. Yalan yok hiç bu işe girişmemiştim ama aklıma gelen sistemleri yaptırdığımda sistem kusursuzda olsa gui tasarımı kötü olabiliyor, eski sistemlerin guisinden farklı olabiliyor veya gui tasarımları için ücret isteyebiliyorlar.
Bende açacağım oyunumun önce benim gözüme hitap etmesini istiyorum ve bunun içinde bu aşağıdaki soruların cevabını yüzeysel değilde derinlemesine bulmam gerekiyor. Bilgisi olan arkadaşlar cevaplarsa mutlu olurum seviliyosunuz <3

1-) Oyun içinde görmüş olduğumuz sistemlerin gui tarafı yani tasarım tarafı nasıl yapılıyor?
2-) Python tarafındaki kodlamalar, oyundaki gui tasarımlarının tam olarak neresinde yer alıyor?
3-) .sub uzantılı dosyalar ne işe yarıyor, nasıl oluşturuluyor?
4-) Neden sistemin tüm gui tasarımları tek bir resim olarak eklenmiş?
5-) Oyun tek bir resim içerisindeki butonları veya tasarımları nasıl tek tek algılayabiliyor?
6-) Bu guileri ayrı ayrı tasarladıktan sonra nasıl tek bir resimde birleştiriyorlar?
7-) Photoshop üzerinden bir resmin rengini alıp yeni yapacağım tasarımın üzerine nasıl ekleyebilirim?
8-) Resimde görmüş olduğunuz bir gui tasarımı, peki neden her bir buton ayrı ayrı kaydedilmemiş?
1752609557360.webp
 
Çözüm
1-) Oyun içinde görmüş olduğumuz sistemlerin gui tarafı yani tasarım tarafı nasıl yapılıyor?
1- Oyun için bir gui designer aracı olmadığından tüm tasarım ve tasarımı etkileyen dinamik işlemler manuel olarak Python'da yazılıyor.

2-) Python tarafındaki kodlamalar, oyundaki gui tasarımlarının tam olarak neresinde yer alıyor?
2- Ui bileşenlerini (pencere, buton, yazı ve yazı girilebilecek alan vs) göstermek/gizlemek ve barındırdığı veriyi gerektiğinde dinamik olarak güncellemek için yani her yerinde kullanıldığından, bir yerinde kalıyor demek zor.
Örneğin zindan takip penceresini düşün, bir liste var ve sağda da zindan ile ilgili detaylar (ismi, nerede bulunduğu, level aralığı vs) var. Listeden bir tanesine...
1-) Oyun içinde görmüş olduğumuz sistemlerin gui tarafı yani tasarım tarafı nasıl yapılıyor?
1- Oyun için bir gui designer aracı olmadığından tüm tasarım ve tasarımı etkileyen dinamik işlemler manuel olarak Python'da yazılıyor.

2-) Python tarafındaki kodlamalar, oyundaki gui tasarımlarının tam olarak neresinde yer alıyor?
2- Ui bileşenlerini (pencere, buton, yazı ve yazı girilebilecek alan vs) göstermek/gizlemek ve barındırdığı veriyi gerektiğinde dinamik olarak güncellemek için yani her yerinde kullanıldığından, bir yerinde kalıyor demek zor.
Örneğin zindan takip penceresini düşün, bir liste var ve sağda da zindan ile ilgili detaylar (ismi, nerede bulunduğu, level aralığı vs) var. Listeden bir tanesine tıklıyorsun ve sağdaki bilgiler güncelleniyor. Burada iki değişim var.
Bir tanesi tasarım değişikliği bir tanesi de veri değişimi. Liste index'ine göre bir dictionary yapısından bilgiler geliyor, bunlara göre de örneğin render target sistemi varsa o boss'un modeli gösteriliyor falan filan.

3-) .sub uzantılı dosyalar ne işe yarıyor, nasıl oluşturuluyor?
3- Eski oyunlarda olan bir pratik bu, hâlâ da modern oyunlarda kullanılıyor. Örneğin oyundaki bir onay butonunu düşün, bu birden fazla yerde kullanılabilir. Karakter seçme ekranında karakteri silerken bu butonu görebilirsin, simyada sınıf arındırması yaparken görebilirsin, yere eşya atarken onaylarken görebilirsin vs. Her kullanım için dosya olarak bir kopyasını oluşturmak gittikçe çok fazla yer kaplayacak. .sub uzantılı dosyalar bu noktada şu işe yarıyor; bir tane imaj dosyası oluşturuyorlar ve içerisine ui bileşenlerini ekliyorlar. Örneğin butonun normal hali, üzerine gelindiğindeki (hovered) ve basıldığındaki hali (pressed) bulunuyor.
Küçük, orta, büyük butonlar olabiliyor, her biri için bir .sub dosyası yazılıyor. Büyük resim içerisinden 4 nokta arasında kalan kısmı almak için. Böylelikle her istediğin uygun yerde o butonu kullanabiliyorsun.

4-) Neden sistemin tüm gui tasarımları tek bir resim olarak eklenmiş?
4- Eğer sistemin pencere boyutu çoğu çözünürlük için sorunsuz görüntülenebilecek boyuttaysa işi kolaylaştırmak için bunu yapabiliyorlar. Gui üzerindeki her ui bileşenini tek tek oluşturmak yerine Photoshop gibi bir yazılımla hepsini tut-sürükle yöntemiyle kolayca yapıp oyunda pencere arkaplanı amacıyla kullanıyorlar. Bu genellikle en az ZOrder (sanki Metin2'de farklı bir ismi vardı ama mantık aynı) değerine sahip olan bileşen oluyor.
Hangi ui bileşeninin hangi katmanda olacağını belirliyor bu değer. Monitörde x=genişlik, y=uzunluğu ifade ediyor, z de az önce anlattığım amaçla kullanılıyor. Tüm tasarım tek katmanda olamaz. Örneğin arkaplan için bir imaj dosyası koyduğunda bu, en az ZOrder değerine sahip olur. Örneğin sonradan bir resim, buton vs eklendiğinde bunlar arkaplan üzerine bineceğinden her şey normal gözükür.

5-) Oyun tek bir resim içerisindeki butonları veya tasarımları nasıl tek tek algılayabiliyor?
5- Sanırım Windows.dds, Public.dds dosyalarından bahsediyorsun. Öyle değilse, biraz daha açarsan soruyu cevaplarım.
.sub dosyaları tam olarak bu iş için.

6-) Bu guileri ayrı ayrı tasarladıktan sonra nasıl tek bir resimde birleştiriyorlar?
6- Bir ana pencere oluyor, sonradan eklenen diğer pencereler buna göre konumlandırıldığı için tek pencereymiş gibi gözüküyor.
Diğer pencereler genellikle ana pencere sınıfı içerisinde bir üye değişken olarak tutuluyor.

7-) Photoshop üzerinden bir resmin rengini alıp yeni yapacağım tasarımın üzerine nasıl ekleyebilirim?
7- Renk kodu kullanımını destekleyen fonksiyonları inceleyip alabildiği değerlere göre değer verip deneyebilirsin. Aynı rengi bulamayabilirsin.

8-) Resimde görmüş olduğunuz bir gui tasarımı, peki neden her bir buton ayrı ayrı kaydedilmemiş?
8- Bu da 3. maddedeki ihtiyaçtan dolayı çıkan bir çözüm. Bu resimelr sadece balık oyununda kullanılacakmış gibi gözüküyor, o zaman neden tasarımı Photoshop'ta bitirip öyle kullanmadılar? diye sorabilirsin. Öyle yaptıklarını varsayalım, bahsettiğin resimde görebiliyorsun; 4 tane buton var. Her birinin olaya göre (normal, hovered, pressed) durumlarını tasarlamışlar. Photoshop'ta tasarım yapılıp bitirilmiş olsa, oyuna aktardığında buton üzerine geldiğinde bir parlama vs göremeyeceksin. Sabit bir fotoğrafa bakıyormuşsun gibi. Aslında yine .sub dosyasıyla o butonu alıp butonun olduğu yere yerleştirerek bir illüzyon yapabilirsin, her şey normal gözükür ama madem bunu yapacaktın o zaman neden en başta yapmadın. Çok saçma yani.
Kaldı ki bu tasarımlar bu oyun için tasarlanmış olsa bile, bazı parçaları başka yerlerde kullanılmaya müsait. Yani sonradan başka yerlede ihtiyaç duyulabilir.
 
Son düzenleme:
Çözüm
ben gui yaptığımda arka planı yüzde 90 tek resimden çektirtip buttonları üzerine ekliyorum, raskolnikov zaten ayrıntılı yazmış çok eski zamanlarda resimleri tek tga dosyasında birleştirmek bir miktar performansa etki ediyordu ama şu an benim metin2 işlerinde kullandığım 2017'de alınma pc'mde bile birleşik olup olmamasının farkı olmuyor.
 
1- Oyun için bir gui designer aracı olmadığından tüm tasarım ve tasarımı etkileyen dinamik işlemler manuel olarak Python'da yazılıyor.


2- Ui bileşenlerini (pencere, buton, yazı ve yazı girilebilecek alan vs) göstermek/gizlemek ve barındırdığı veriyi gerektiğinde dinamik olarak güncellemek için yani her yerinde kullanıldığından, bir yerinde kalıyor demek zor.
Örneğin zindan takip penceresini düşün, bir liste var ve sağda da zindan ile ilgili detaylar (ismi, nerede bulunduğu, level aralığı vs) var. Listeden bir tanesine tıklıyorsun ve sağdaki bilgiler güncelleniyor. Burada iki değişim var.
Bir tanesi tasarım değişikliği bir tanesi de veri değişimi. Liste index'ine göre bir dictionary yapısından bilgiler geliyor, bunlara göre de örneğin render target sistemi varsa o boss'un modeli gösteriliyor falan filan.


3- Eski oyunlarda olan bir pratik bu, hâlâ da modern oyunlarda kullanılıyor. Örneğin oyundaki bir onay butonunu düşün, bu birden fazla yerde kullanılabilir. Karakter seçme ekranında karakteri silerken bu butonu görebilirsin, simyada sınıf arındırması yaparken görebilirsin, yere eşya atarken onaylarken görebilirsin vs. Her kullanım için dosya olarak bir kopyasını oluşturmak gittikçe çok fazla yer kaplayacak. .sub uzantılı dosyalar bu noktada şu işe yarıyor; bir tane imaj dosyası oluşturuyorlar ve içerisine ui bileşenlerini ekliyorlar. Örneğin butonun normal hali, üzerine gelindiğindeki (hovered) ve basıldığındaki hali (pressed) bulunuyor.
Küçük, orta, büyük butonlar olabiliyor, her biri için bir .sub dosyası yazılıyor. Büyük resim içerisinden 4 nokta arasında kalan kısmı almak için. Böylelikle her istediğin uygun yerde o butonu kullanabiliyorsun.


4- Eğer sistemin pencere boyutu çoğu çözünürlük için sorunsuz görüntülenebilecek boyuttaysa işi kolaylaştırmak için bunu yapabiliyorlar. Gui üzerindeki her ui bileşenini tek tek oluşturmak yerine Photoshop gibi bir yazılımla hepsini tut-sürükle yöntemiyle kolayca yapıp oyunda pencere arkaplanı amacıyla kullanıyorlar. Bu genellikle en az ZOrder (sanki Metin2'de farklı bir ismi vardı ama mantık aynı) değerine sahip olan bileşen oluyor.
Hangi ui bileşeninin hangi katmanda olacağını belirliyor bu değer. Monitörde x=genişlik, y=uzunluğu ifade ediyor, z de az önce anlattığım amaçla kullanılıyor. Tüm tasarım tek katmanda olamaz. Örneğin arkaplan için bir imaj dosyası koyduğunda bu, en az ZOrder değerine sahip olur. Örneğin sonradan bir resim, buton vs eklendiğinde bunlar arkaplan üzerine bineceğinden her şey normal gözükür.


5- Sanırım Windows.dds, Public.dds dosyalarından bahsediyorsun. Öyle değilse, biraz daha açarsan soruyu cevaplarım.
.sub dosyaları tam olarak bu iş için.


6- Bir ana pencere oluyor, sonradan eklenen diğer pencereler buna göre konumlandırıldığı için tek pencereymiş gibi gözüküyor.
Diğer pencereler genellikle ana pencere sınıfı içerisinde bir üye değişken olarak tutuluyor.


7- Renk kodu kullanımını destekleyen fonksiyonları inceleyip alabildiği değerlere göre değer verip deneyebilirsin. Aynı rengi bulamayabilirsin.


8- Bu da 3. maddedeki ihtiyaçtan dolayı çıkan bir çözüm. Bu resimelr sadece balık oyununda kullanılacakmış gibi gözüküyor, o zaman neden tasarımı Photoshop'ta bitirip öyle kullanmadılar? diye sorabilirsin. Öyle yaptıklarını varsayalım, bahsettiğin resimde görebiliyorsun; 4 tane buton var. Her birinin olaya göre (normal, hovered, pressed) durumlarını tasarlamışlar. Photoshop'ta tasarım yapılıp bitirilmiş olsa, oyuna aktardığında buton üzerine geldiğinde bir parlama vs göremeyeceksin. Sabit bir fotoğrafa bakıyormuşsun gibi. Aslında yine .sub dosyasıyla o butonu alıp butonun olduğu yere yerleştirerek bir illüzyon yapabilirsin, her şey normal gözükür ama madem bunu yapacaktın o zaman neden en başta yapmadın. Çok saçma yani.
Kaldı ki bu tasarımlar bu oyun için tasarlanmış olsa bile, bazı parçaları başka yerlerde kullanılmaya müsait. Yani sonradan başka yerlede ihtiyaç duyulabilir.

Eline sağlık hocam, senin gibi bildiğini eksiksiz paylaşan, sorulara güzel cevap veren insan sayısı bir elin parmağını geçmez.
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst