Çözüldü Unreal patroling hatası nasıl çözülür?

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

pogacas

Centipat
Katılım
19 Haziran 2024
Mesajlar
82
Daha fazla  
Cinsiyet
Erkek
Oyundaki canavarın beni görmeyince kovalamayı bırakmasını sağladım, gayet güzel oldu.
Fakat YouTube'dan izlediğim adamın yaptığı oyunda canavar hareket ederken asla ışınlanma olmuyor.
Bende ise canavar duruyor, yürüme animasyonuna giriyor, 2 saniye yürüyor, sonra durduğu yere geri ışınlanıyor ve ardından sorunsuz yürümeye devam ediyor.
Sanki pingi varmış gibi görünüyor. @Bayram Reis Bayram Abir müsaitsen bakar mısın? :D
 
Çözüm
Unutmuşum abi ya :D
Do Once ilk görselde mantıklı gibi gözükebilir ama hemen arkasından _CanAttack değişkeni var. Bundan dolayı klonlanan boolean var. Yâni ne demek istiyorum:

Do Once yerine branch can attack true ise devam etsin ve direkt false'a çevir. Sonra da en sonda true yap.
Kod artıyor gibi geliyor ama aslında Do Once ile aynı işlemi klonlamış oluyorsun, bu da gereksiz oluyor.
İstersen Do Once'a çift tıkla ve demek istediğimi anlarsın.

Bir de Attack Fonc'un varmış. Hiyerarşin, benim ilk yazılıma başladığım zamanları andırdı. Böyle karışık yapmak, ileride başını ciddi ölçüde ağrıtır.

Diğer kodda da AI'nin On See eventini kullanmışsın ama karakter olup olmadığını doğrulamamışsın. İleride birden fazla Pawn'da sorun yaratır.
Oyundaki canavarın beni görmeyince kovalamayı bırakmasını sağladım, gayet güzel oldu.
Fakat YouTube'dan izlediğim adamın yaptığı oyunda canavar hareket ederken asla ışınlanma olmuyor.
Bende ise canavar duruyor, yürüme animasyonuna giriyor, 2 saniye yürüyor, sonra durduğu yere geri ışınlanıyor ve ardından sorunsuz yürümeye devam ediyor.
Sanki pingi varmış gibi görünüyor. @Bayram Reis Bayram Abir müsaitsen bakar mısın? :D
Kodlar vahiy mi geliyor canım.
 

Dosya Ekleri

  • 1771080740442.png
    1771080740442.png
    106,6 KB · Görüntüleme: 6
  • 1771080755764.png
    1771080755764.png
    208,6 KB · Görüntüleme: 7
  • 1771080763514.png
    1771080763514.png
    128,7 KB · Görüntüleme: 9
  • 1771080783866.png
    1771080783866.png
    69,7 KB · Görüntüleme: 7
Unutmuşum abi ya :D
Do Once ilk görselde mantıklı gibi gözükebilir ama hemen arkasından _CanAttack değişkeni var. Bundan dolayı klonlanan boolean var. Yâni ne demek istiyorum:

Do Once yerine branch can attack true ise devam etsin ve direkt false'a çevir. Sonra da en sonda true yap.
Kod artıyor gibi geliyor ama aslında Do Once ile aynı işlemi klonlamış oluyorsun, bu da gereksiz oluyor.
İstersen Do Once'a çift tıkla ve demek istediğimi anlarsın.

Bir de Attack Fonc'un varmış. Hiyerarşin, benim ilk yazılıma başladığım zamanları andırdı. Böyle karışık yapmak, ileride başını ciddi ölçüde ağrıtır.

Diğer kodda da AI'nin On See eventini kullanmışsın ama karakter olup olmadığını doğrulamamışsın. İleride birden fazla Pawn'da sorun yaratır.
 
Çözüm
Do Once ilk görselde mantıklı gibi gözükebilir ama hemen arkasından _CanAttack değişkeni var. Bundan dolayı klonlanan boolean var. Yâni ne demek istiyorum:

Do Once yerine branch can attack true ise devam etsin ve direkt false'a çevir. Sonra da en sonda true yap.
Kod artıyor gibi geliyor ama aslında Do Once ile aynı işlemi klonlamış oluyorsun, bu da gereksiz oluyor.
İstersen Do Once'a çift tıkla ve demek istediğimi anlarsın.

Bir de Attack Fonc'un varmış. Hiyerarşin, benim ilk yazılıma başladığım zamanları andırdı. Böyle karışık yapmak, ileride başını ciddi ölçüde ağrıtır.

Diğer kodda da AI'nin On See eventini kullanmışsın ama karakter olup olmadığını doğrulamamışsın. İleride birden fazla Pawn'da sorun yaratır.
Çok sağ ol abi, hem düzelttim hem de daha iyi oldu. Bir de birşey soracağım; mesela oyun gün gün olarak gerçekleşmesi gereken olaylar var ama bir gün içersinde çok olay gerçekleşirse, branchler çakışmaya başlıyor. Bunu nasıl önlerim? Mesela bir trigger boxa girmeden diğeri çalışmıyor. O branch'in false kısmını çalışması gereken olaya bağlıyorum ama bundan 13 14 tane olunca sıkıntı çıkarıyor.
 
Son düzenleyen: Moderatör:
Çok sağ ol abi, hem düzelttim hem de daha iyi oldu. Bir de birşey soracağım; mesela oyun gün gün olarak gerçekleşmesi gereken olaylar var ama bir gün içersinde çok olay gerçekleşirse, branchler çakışmaya başlıyor. Bunu nasıl önlerim? Mesela bir trigger boxa girmeden diğeri çalışmıyor. O branch'in false kısmını çalışması gereken olaya bağlıyorum ama bundan 13 14 tane olunca sıkıntı çıkarıyor.
İşte bunun sebebini az önce söyledim. Hiyerarşi, kod akışı. Eğer senkronsa kolay yönetim ama oyunların çok büyük çoğunluğu asenkron çalışır. Yâni yapıyı öyle bir sağlam kurmalısın ki, asla geriye dönmemelisin. Yâni sen şu anda şöyle yapıyorsun:

Mekanik 1 -> Ekle -> Çalışıyor tamam.

Mekanik 2 -> Ekle -> Çalışıyor tamam.

Kullanıcı yanlışlıkla veya isteyerek 2 mekaniği çalıştırdı -> Patladın.

Dön -> Mekanikleri düzelt.

X gün sonra:

Mekanik 3 -> Ekle -> Çalışıyor tamam.

Bu da patladı.

Dön geriye -> Diğer 2 mekaniğe şart vs. ekle düzelt.

Bu çok yanlış. Eskiden ben de aynısını yapardım ve inanılmaz gereksiz vakit kaybı yaşıyorsun.

Olay şu kadar basit, düz ve sağlam mantıkla ilerlemeli ->

Mekanik 1:

Çalıştırma fonc
Her adımda bool (state kontrol)
Helper ve Manager'larla kodları global yönetmek.
İlgili olmayan şeyi, oradan kaldırmak.
Kod tekrarını azaltmak.
Aynı işlevi daha az kodla mantıklı yazmak.
Erken müdahale, performans konuları. (Örn, giren nesne karakter değilse return gibi)
blabla...

Örnek için şuna bakabilirsin:
Hatta üstteki olay yönetimim bile eksik. Ama en kötü hâli bile öyle düzgün olmalı.
 

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Yeni konular

Geri
Yukarı