Çözüldü 2D top-down oyunlarda yüksek yapılar oluşturulabilir mi?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Krasnilyev

Hectopat
Katılım
23 Kasım 2015
Mesajlar
35
Yer
Antalya
Top-down oyunlar, bilindiği üzere kuş bakışı olarak nitelendirebileceğim bir bakış açısı ile oynanan oyunlardır. İçerisinde bir çeşitliliğe sahip olsa da 2D izometrik benzeri türlerde gözlemlediğim kadarıyla, harita içerisinde görüş açısının kısıtlanmaması adına yüksek yapılar bulunmamaktadır. Genellikle görüş açısına göre oyun karakteri, alçak bir yapının veya duvarın arkasında bulunursa da karakterin bir silueti oluşmakta ve bu siluete göre hareketler takip edilebilmektedir.

Bahsettiğim tür için yüksek yapıların (ör. gökdelen) kullanılması adına bir teknik mevcut mudur? Görüş açısına göre karakter, bu yapıların arkasında bulunursa nasıl bir sonuç ortaya çıkabilir? Ayrıca varsa örneklerini paylaşmanızı rica ediyorum.

Bahsi geçen tür için örnek bir harita tasarımı:
indir.jpg
 
Çözüm
Bu nasıl yapılıyor? Bir örnek söyler misin?

İzlediğim bir gameplay videosunda olsa gerek. Hatırlamıyorum, örnek veremem. Onun için "görmüşlüğüm var" gibi yarı somut bir ifade kullandım.
Teknik olarak nasıl yapılabileceği konusunda fikirlerim var ama. Yapının arkasında görünmeyen her bir tile için bir custom property içine yapının kimiliğini yazarım. Karakter bu property'ye sahip bir tile üzerine gelirse; yapının alfasını düşürür ve karakterin sort order değerini yapının 1 fazlası yaparım. Yapının alfasıyla oynamayacaksam ise karakterin alfasını sıfır yapıp outline eklerim. (örneğin Unity'de shader grap ile)
Yapının arkasında olup olmama durumunu tespit için bir diğer yöntem daha var. Muhtemelen GPU için daha maliyetli bir yöntem. Collision Mask diye de ifade edilen (Örneğin Tiled programında object layer üzerine çizilebilen) bir geometrik şekli yapının arkası sayılan bölgeyi kapsayacak şekilde çizer ve karakterin bu şekil ile kesişimini (intersection) dinlerim.

Yuuns

Picopat
Katılım
13 Haziran 2020
Mesajlar
270
Çözümler
3
Geliştirme sürecinde genellikle bu tür yüksek yapılardan kaçınılır. Yapılırsa da bakış açısı değiştirme özelliği, karakter arkasına geçince karakterin hatlarının bir şekilde belirtilmesi gibi çözümler uygulanır.
 

wefra

Kilopat
Katılım
30 Kasım 2013
Mesajlar
311
Makaleler
1
Çözümler
13
Yer
İstanbul
Bu nasıl yapılıyor? Bir örnek söyler misin?

İzlediğim bir gameplay videosunda olsa gerek. Hatırlamıyorum, örnek veremem. Onun için "görmüşlüğüm var" gibi yarı somut bir ifade kullandım.
Teknik olarak nasıl yapılabileceği konusunda fikirlerim var ama. Yapının arkasında görünmeyen her bir tile için bir custom property içine yapının kimiliğini yazarım. Karakter bu property'ye sahip bir tile üzerine gelirse; yapının alfasını düşürür ve karakterin sort order değerini yapının 1 fazlası yaparım. Yapının alfasıyla oynamayacaksam ise karakterin alfasını sıfır yapıp outline eklerim. (örneğin Unity'de shader grap ile)
Yapının arkasında olup olmama durumunu tespit için bir diğer yöntem daha var. Muhtemelen GPU için daha maliyetli bir yöntem. Collision Mask diye de ifade edilen (Örneğin Tiled programında object layer üzerine çizilebilen) bir geometrik şekli yapının arkası sayılan bölgeyi kapsayacak şekilde çizer ve karakterin bu şekil ile kesişimini (intersection) dinlerim.
 
Çözüm
KS
Krasnilyev

Krasnilyev

Hectopat
Katılım
23 Kasım 2015
Mesajlar
35
Yer
Antalya
Evet, zoom in & zoom out trickleri ile yapiliyor. ( Yuksek yapinin etrafindakiler ufaliyor )

Ornek GTA-1:

Cevabınız için teşekkürler. Herkese cevapları için teşekkür ediyorum. Ancak burada örneğini atmış olduğunuz GTA oyununda yere 90°'lik bir görüş açısı mevcuttur. Ayrıca binalar bildiğim kadarıyla farklı bir teknik kullanılarak, 3D olarak geliştirilmiştir. Benim bahsettiğim türde yaklaşık 45°'lik bir görüş açısı ve tamamen 2D objeler bulunmaktadır. Şuan için sadece arkadaşların dediği gibi yapıların alfasını düşürerek veya karaktere outline ekleyerek bu sorun için çözümlerimi geliştirebileceğimi düşünüyorum. Ancak bahsettiğiniz tekniği de değerlendireceğim. Verdiğiniz fikrin, bahsettiğim 2D bir ortama uyarlanabilmesi ile daha farklı tekniklerin geliştirilmesi için yararlı olabileceği düşüncesindeyim.
 
Yukarı