Netcode State Machine


Bu yazıda neden kendim bir state machine geliştirmeye ihtiyaç duyduğumu, geliştirdiğim versiyonun ne gibi farklılıkları olduğunu anlatacağım. State Machine’in ne olduğuyla ilgili fikriniz yoksa önceki yazımda kısaca özetlemeye çalıştım. Yazının sonundaki linkten koda ulaşabilirsiniz.

Yaptığım projelerde birçok farklı şekilde kullandıktan sonra hem NetworkVariable‘ları destekleyen, hem de editör üzerinden ayarlayabileceğim, koşulları geriye dönük olarak kontrol edebilen bir state machine geliştirmeye karar verdim.

Animator bazlı çözümler hem araya daha fazla katman katarak karmaşıklaştığı, eğer daha basit bir şey yapmak istenirse de editör desteğinin doğrudan MonoBehaviour bazlı yapılarak göre daha kısıtlı desteği olduğu için tercih etmiyorum. Tamamen class bazlı geliştirdiğim versiyonlar ise editörden güncellenemediği için hem yeniden kullanılabilirlik olarak kötü oluyor, hem de her değişiklikte kod güncellemesi yapmak gerekiyor. Bu yüzden Behaviour bazlı, basit ancak etkili bir şekilde çalışan bir versiyon geliştirdim. Şu ana kadar kullandığım az sayıda alternatifte test ettiğimde ise hem performanslı hem de kararlı olarak çalıştığını gördüm.

Netcode State Machine kullanan turretlar

State Machine game objesinin altındaki objelere stateleri ekliyoruz ve runtime’da kendisi conditionları gezerek state’lerden bir path oluşturuyor. Bu state machine’in network tarafıysa conditionlar NetworkVariable olduğu için tüm oyuncularda aynı şekilde çalışabiliyor.

Network State Machine’i buradan görüntüleyebilir, dilerseniz SimpleU Repository‘sindeki diğer araçlara da erişebilir, kendi projelerinizde kullanabilirsiniz.



Bir yanıt yazın