Random seed
- Oyun Geliştirme kursu
- İleri seviye
- Ders 44/71
- 4 dk
Aynı seed ile tekrarlanabilir rasgelelik öğrenirsin.
Random Seed ve Determinizm
Bilgisayarlardaki rastgelelik aslında sözde-rastgeledir (pseudo-random). Rastgele sayı üreteçleri bir başlangıç değeri olan Seed (tohum) numarası alır.
// Ayni tohum her zaman ayni sayi dizisini uretir
Random.InitState(42);
int sayi1 = Random.Range(1, 100);Aynı seed kullanıldığında üreteç her seferinde tam olarak aynı rastgele sayı dizisini üretir; bu duruma determinizm denir.
Seed Paylaşımı ile Dünya Senkronizasyonu
Çok oyunculu oyunlarda tüm harita verisini ağ üzerinden göndermek yerine sadece tohum numarasını (ör. 94821) paylaşmak yeterlidir.
public void SetWorldSeed(int seed) {
Random.InitState(seed);
}Her iki oyuncunun bilgisayarı da aynı seed ile algoritmayı çalıştırarak birbirinin tıpatıp aynısı olan haritalar oluşturur.
Uygulama Seed ile deterministik üretim
Bir Start metodu tanımla. İçinde int seed = 42; tanımla ve konsola "Kullanilan tohum: " + seed metnini Debug.Log ile yazdır.
Başlangıç kodu
using UnityEngine;
public class SeedTester : MonoBehaviour
{
// Start icinde seed tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class SeedTester : MonoBehaviour
{
void Start()
{
int seed = 42;
Debug.Log("Kullanilan tohum: " + seed);
}
}Beklenen çıktı
Kullanilan tohum: 42
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Unity'de Random.InitState(seed) fonksiyonu aynı tohum (seed) değeri ile çağrıldığında sonuç ne olur?
- Oyun anında çöker ve kapatılır
- Karakterin hızı her karede iki katına çıkar
- Oyunun tüm kayıt dosyaları silinir
- Rastgele sayı üreteci her seferinde birebir aynı sayı dizisini üretir Doğru cevap
Açıklama: Aynı seed değeri rastgele sayı üretecini aynı duruma sıfırlar ve ardından gelen sayılar birebir aynı sırada üretilir.
2 Rastgele tohumunu başlat
Random.____(seedValue);
Random.InitState(seedValue);
Açıklama: Unity'de rastgele sayı üretecini belirli bir tohumla başlatmak için 'Random.InitState' metodu kullanılır.
3 Rastgelelik ve tohum kavramları
| Kavram | Anlamı |
|---|---|
Seed |
Üreteci başlatan tohum değeri |
Random.InitState |
Tohum değerini ayarlayan Unity metodu |
Deterministik |
Aynı girdide aynı çıktıyı veren yapı |
Pseudo-random |
Algoritmayla taklit rastgelelik |