Erişilebilirlik — DFS yine iş başında; bonus: çöp toplayıcı nasıl çalışır?
Topolojik sıralama — teknoloji ağacında araştırma sırası
Döngü tespiti — kilitlenen görev zincirini bulmak
Güçlü bileşenler — oyuncu bir yere sıkışıp kalabilir mi?
🎮 Bu dersin sonunda…
…Civilization’daki teknoloji ağacını doğru sırayla araştıran, görev bağımlılıklarındaki ölümcül hataları bulan ve “oyuncu bu odaya girerse bir daha çıkamaz mı?” (soft-lock) sorusunu yanıtlayan kodu anlayacaksınız.
🤔 ISINMA: TEK YÖNLÜ
Bir uçurumdan aşağı atlayabilirsiniz ama yukarı tırmanamazsınız.
Takip ettiğiniz yayıncı sizi takip etmek zorunda değil.
Düşman YZ’si “devriye”den “saldırı”ya geçebilir ama “ölü”den “devriye”ye dönemez.
Hepsinde kenarların bir yönü var: v → w, w → v demek değil. Yönsüz graf algoritmalarının çoğu çalışmaya devam ediyor — ama yeni ve çok faydalı sorular da doğuyor.
Mini sözlük
digraph · directed edge
yönlü graf · yönlü kenar
v → w: v’den w’ye gidilir (tersi değil)
outdegree · indegree
çıkış / giriş derecesi
Düğümden çıkan / düğüme giren ok sayısı
reachable
erişilebilir
v’den w’ye yönlü bir yol var
DAG
yönlü döngüsüz graf
directed acyclic graph: hiç yönlü döngü yok
topological order
topolojik sıra
Her ok soldan sağa gidecek şekilde düğümleri dizmek
postorder
sonsıra
DFS’de düğümlerin bitme sırası
strongly connected
güçlü bağlı
v’den w’ye ve w’den v’ye yol var
garbage collection
çöp toplama
Ulaşılamayan nesnelerin belleğini otomatik geri almak
Bir yönlü grafta bütün düğümlerin çıkış derecelerinin toplamı neye eşittir?
Her okun tam bir başlangıç noktası var → çıkış dereceleri toplamı = E. Aynı şekilde giriş dereceleri toplamı da E. (Yönsüz grafta her kenar iki uca birden sayılıyordu: 2E.)
LEVEL 1
Erişilebilirlik ve çöp toplayıcı
DFS ve BFS yönlü graflarda da aynen çalışır
terimler
erişilebilirlik ve çöp toplayıcı
topolojik sıralama
döngü tespiti
güçlü bileşenler
Yönlü DFS — iz tablosu
Kod yönsüz DFS ile birebir aynı: sadece okların yönünde ilerler. 0’dan başlayınca 6, 7, 8, 9… hiç işaretlenmez: oralara 0’dan ok yönünde yol yok. Düğüme tıklayıp başka kaynaklar deneyin (ör. 6 ya da 7).
♻️ Çöp toplayıcı: erişilebilirliğin en meşhur uygulaması
Düğüm = bellekteki nesne, ok = referans. Kökler: global/static değişkenler ve o an çalışan fonksiyonların yerel değişkenleri. İşaretlemark: köklerden DFS. Süpürsweep: işaretsiz her nesneyi sil. (1960, John McCarthy, Lisp)
⚙️ Oyunlarda GC neden önemli?
C#, Java, JavaScript, Python: hepsinde çöp toplayıcı var. Unity C# betikleri de öyle.
İşaretleme sırasında programın (bir kısmı) durur → oyunda takılma (GC spike). 16,6 ms’lik kare bütçesinde 5 ms’lik bir GC fark edilir!
Çözüm: her karede yeni nesne üretmeallocation. Mermi, partikül, düşman → nesne havuzuobject pool (Bağlı Listeler sunumu!). string birleştirmeyi ve LINQ’yu Update() içinde azalt.
Referans sayma (Python’un ana yöntemi, Swift, C++ shared_ptr): her nesne kendisine kaç ok geldiğini sayar, 0 olunca silinir. Hızlı ama döngüleri kaçırır → Python ayrıca döngü bulan bir toplayıcı çalıştırır.
Yönlü BFS: en kısa yönlü yollar
BFS de aynen çalışır: kaynaktan ok yönünde en az kenarlı yollar.
Çok kaynaklı BFS: başta kuyruğa birden fazla düğüm koy → “herhangi bir kaynaktan en yakın uzaklık”. 🎮 “En yakın can paketine kaç adım?” haritasını her kare için bir kez hesapla (bütün can paketleri kaynak).
Web tarayıcıweb crawler: başlangıç sayfasından BFS; kuyruk = ziyaret edilecek adresler, küme = görülen adresler.
📜 UyarıBuradaki web tarayıcısı 10 satır! Gerçek bir tarayıcı ise “aynı sayfanın farklı adresleri”, robots.txt, hız sınırı… ile milyonlarca satır. Algoritma iskelet, mühendislik et.
Quiz 2 · erişilebilirlik
Mark-and-sweep çöp toplayıcı, birbirini gösteren ama hiçbir kökten ulaşılamayan iki nesneyi (A → B, B → A) ne yapar?
Mark-and-sweep “referansı var mı?” diye değil, “köklerden erişilebilir mi?” diye sorar. Döngü erişilemezse ikisi de çöp. Referans sayma ise burada ikisinde de sayacı 1 görür ve silemez (bellek sızıntısı).
LEVEL 2
Topolojik sıralama
ön koşulları bozmadan sıraya dizmek
terimler
erişilebilirlik ve çöp toplayıcı
topolojik sıralama
döngü tespiti
güçlü bileşenler
Problem: hangi sırayla?
Görevler ve “v, w’den önce yapılmalı” kuralları var. Bütün kurallara uyan bir sıra bul.
🎮 Teknoloji ağacı: araştırma sırası
🎮 RTS yapı sırası (kışla → atölye → fabrika)
🎮 Oyun motoru: varlıkları derlerken bağımlılık sırası; sahnede güncelleme sırası (önce ebeveyn, sonra çocuk)
80 teknolojilik bir strateji oyunu → 80! ≈ 7 × 10118 sıra. Evrendeki atom sayısı yaklaşık 1080.
Saf yol 2: her turda listeyi baştan tara
Ön koşulları bitmiş ilk teknolojiyi bul, sıraya ekle, baştan tara. Doğru çalışır; ama her tur bütün okları yeniden kontrol eder: V tur × (V + E) iş. 10 000 düğümlü bir bağımlılık grafında yüz milyonlarca kontrol.
Bu sunumdaki yolDFS grafı bir kez gezer: V + E. Kahn algoritması da saf yol 2’nin akıllı hâli: “kalan ön koşul sayısını” saklar, taramayı hiç yapmaz.
Teknoloji ağacı — topolojik sıralama
Algoritma şaşırtıcı derecede kısa: DFS yap, her düğüm bitince listeye ekle (sonsıra), sonunda listeyi ters çevir.
Elle izleme: DFS ile topolojik sıra
Komşu listeleri (bu sırayla bakılır): Taş: Ateş, Tekerlek · Ateş: Çömlek, Bronz · Tekerlek: Araba · Bronz: Araba. Turuncu sayı = bitiş sırası; yeşil oklar DFS’in yürüdüğü oklar, kırmızı kesikli ok işaretli düğüme çarpıp geri döndü.
#
ne oldu?
yığın (açık çağrılar)
sonsıra
1
dfs(Taş) başlar
Taş
—
2
Taş → Ateş: dfs(Ateş)
Taş, Ateş
—
3
Ateş → Çömlek: dfs(Çömlek); oku yok, biter
Taş, Ateş
Çömlek
4
Ateş → Bronz: dfs(Bronz)
Taş, Ateş, Bronz
Çömlek
5
Bronz → Araba: dfs(Araba); oku yok, biter
Taş, Ateş, Bronz
+ Araba
6
Bronz’un okları bitti, biter
Taş, Ateş
+ Bronz
7
Ateş’in okları bitti, biter
Taş
+ Ateş
8
Taş → Tekerlek: dfs(Tekerlek); Tekerlek → Araba: Araba zaten işaretli, atla; Tekerlek biter
Taş
+ Tekerlek
9
Taş’ın okları bitti, biter
—
+ Taş
10. Sonsırayı ters çevir: Taş, Tekerlek, Ateş, Bronz, Araba, Çömlek. Altı kuralın altısı da tutuyor ✔
Dikkat: bir düğüm ancak bütün okları bitince listeye girer; okun ucundakiler ondan önce girmiştir. Ters çevirince her ok soldan sağa bakar.
Neden işe yarıyor?
ÖnermeBir DAG’in DFS ters sonsırası bir topolojik sıradır.
KanıtHerhangi bir v → w okuna bakalım. dfs(v) bu oka baktığında üç durum var:
dfs(w) daha çağrılmamış → şimdi çağrılır ve v’den önce biter
dfs(w) zaten bitmiş → w zaten listede, v’den önce
dfs(w) çağrılmış ama bitmemiş → w yığında, yani w’den v’ye yol var + v → w = döngü! DAG’de imkânsız.
Her durumda w, sonsırada v’den önce → ters sırada v, w’den önce. ∎
Topolojik sıralama — kod
🎒 Fonksiyon içinde fonksiyon (C# “local function”, Python/JS iç fonksiyon): iç fonksiyon dıştakinin değişkenlerini (marked, post) görebilir ve değiştirebilir.
🎒 Kodu okuyalım
ifade
ne demek
neden böyle
post.push(v) döngüden sonra
v’nin bütün torunları bitti, şimdi v bitti
bir görev ancak ondan sonra gelecek her şey listeye girdikten sonra eklenir
post.reverse()
sonsırayı ters çevir
en son biten (hiçbir şeyin ön koşulu olmayan değil, en “temel” olan) başa gelir: ön koşullar önce
dış döngü for v …
her işaretsiz düğümden yeni bir DFS
graf tek parça olmayabilir; hiçbir görev atlanmasın
marked
bu görev zaten sıraya kondu
her düğüm bir kez: toplam iş ~V + E
döngü kontrolü yok
bu kod grafın DAG olduğunu varsayar
döngü varsa çıktı anlamsızdır: önce sonraki slayttaki döngü testi
Alternatif: Kahn algoritması (giriş derecesiyle)
Her düğümün giriş derecesini say (kaç ön koşulu var?)
Giriş derecesi 0 olanları (ön koşulu olmayanları) kuyruğa koy
Kuyruktan v çıkar, sıraya ekle; v’nin her okunu “sil”: indeg[w]--; 0 olan w’yi kuyruğa koy
Sonunda sırada V’den az düğüm varsa → döngü var!
🎮 Oyuncunun gözündenKahn tam bir oyuncu gibi düşünür: “Şu an araştırabileceğim (bütün ön koşulları tamam) teknolojiler hangileri?” Bu kuyruk, teknoloji ekranındaki parlayan, tıklanabilir kutular!
Elle izleme: Kahn algoritması
Rozetler başlangıçtaki giriş dereceleri (kalan ön koşul sayısı). Yeşil = hemen araştırılabilir.
🎮 Oyuncu ekranıHer adımdaki kuyruk, teknoloji ekranında parlayan kutular. 3. adımda Araba hâlâ gri: Bronz bitmeden açılmaz.
#
kuyruktan çıkan
okları “sil”: giriş derecesi azalır
kuyruk (sonra)
0
—
giriş dereceleri sayılır; 0 olan tek düğüm Taş
[Taş]
1
Taş
Ateş 1 → 0, Tekerlek 1 → 0: ikisi de kuyruğa
[Ateş, Tekerlek]
2
Ateş
Çömlek 1 → 0, Bronz 1 → 0: kuyruğa
[Tekerlek, Çömlek, Bronz]
3
Tekerlek
Araba 2 → 1: hâlâ Bronz’u bekliyor
[Çömlek, Bronz]
4
Çömlek
oku yok
[Bronz]
5
Bronz
Araba 1 → 0: kuyruğa
[Araba]
6
Araba
oku yok
[ ]
Sıra: Taş, Ateş, Tekerlek, Çömlek, Bronz, Araba. Sıraya 6 düğüm girdi = V → döngü yok ✔
DFS “Taş, Tekerlek, Ateş, …” demişti; Kahn başka bir sıra buldu. İkisi de doğru: 11 geçerli sıradan ikisi. Döngü olsaydı döngüdeki düğümlerin giriş derecesi hiç 0’a inmez, sıra V’den kısa kalırdı.
🎬 Ara: topolojik sıralama, görsel
Topological Sort Visualized and Explained Carl the Person · 3 dk 27 sn · YouTube’da aç
Topolojik sıralamanın kısa ve çok görsel bir anlatımı. Teknoloji ağacı demosundaki iki yöntemle (DFS sonsırası ve Kahn) karşılaştırarak izleyin.
🤔 İzlerkenVideodaki yöntem bizim iki yöntemimizden hangisine benziyor? Aynı graf için birden fazla doğru sıra çıkabilir mi? Döngü olsaydı ne olurdu; görev zinciri demosundaki hata bununla nasıl bulunur?
Quiz 3 · topolojik sıralama
Teknoloji ağacında Kahn algoritmasının kuyruğu herhangi bir anda neyi temsil eder?
Bir teknoloji, giriş derecesi (kalan ön koşul sayısı) 0 olduğunda kuyruğa girer. Oyuncu arayüzünde “araştırılabilir” durumdaki kutular tam bu küme. Birden fazla seçenek varsa birden fazla geçerli topolojik sıra vardır — oyuncunun stratejisi!
LEVEL 3
Döngü tespiti
kilitlenen görevleri bulmak
terimler
erişilebilirlik ve çöp toplayıcı
topolojik sıralama
döngü tespiti
güçlü bileşenler
Görev zincirinde ölümcül hata
Tasarımcı hata yaptı: “Demirciyle konuş” için kılıç, kılıç için maden, maden için demirci gerekiyor. Oyuncu sonsuza kadar takılır! Fikir: DFS sırasında şu an yığında olan bir düğüme geri dönen ok = döngü. Graf seçicisinden teknoloji ağacını deneyin (döngü yok).
Döngü tespiti — kod
Her düğüm için üç durum:
beyaz: hiç ziyaret edilmedi
gri (on_stack): ziyaret ediliyor, yığında
siyah: bitti
Gri bir düğüme ok → geri kenarback edge → döngü.
⚠️ Yönsüz graftan farkıSiyah (bitmiş) bir düğüme ok döngü değildir: A → C ve B → C, C’ye iki yoldan gelmek döngü yapmaz.
Elle izleme: döngüyü yakalamak
Komşu listeleri demodaki sırayla: Kılıç önce Ejderha’ya, sonra Maden’e bakar. Turuncu = gri (yığında), siyah = bitti; rozet = ziyaret sırası. Kırmızı ok = geri kenar.
#
ne oldu?
gri düğümler (yığın)
siyah (bitti)
1
dfs(Köy)
Köy
—
2
Köy → Demirci: dfs(Demirci)
Köy, Demirci
—
3
Demirci → Kılıç: dfs(Kılıç)
Köy, Demirci, Kılıç
—
4
Kılıç → Ejderha: dfs(Ejderha)
…, Kılıç, Ejderha
—
5
Ejderha → Hazine: dfs(Hazine); oku yok
…, Kılıç, Ejderha
Hazine
6
Ejderha’nın okları bitti
…, Kılıç
+ Ejderha
7
Kılıç → Maden: dfs(Maden)
Köy, Demirci, Kılıç, Maden
…
8
Maden → Demirci: Demirci gri (yığında)! Geri kenar → döngü
9. Döngüyü yazdır: Maden’den edgeTo ile geri yürü (Maden ← Kılıç ← Demirci), Demirci’ye gelince dur: Demirci → Kılıç → Maden → Demirci.
Karşılaştırın: topolojik sıra izlemesinin 8. adımında Tekerlek → Araba oku siyah (bitmiş) bir düğüme gidiyordu: o döngü değildi. Fark tek bir soru: okun ucu şu an yığında mı?
🎒 Kodu okuyalım
ifade
ne demek
neden böyle
onStack[v] = true (gri)
v şu an açık: DFS’in içindeyiz
yığındaki düğümler kökten v’ye giden yol üzerindedir
if (onStack[w]) return true
yoldaki bir düğüme geri ok
yol + bu ok = döngü; bulundu
onStack[v] = false (siyah)
v ve altındakiler bitti
sonradan v’ye ok gelmesi döngü değildir, yalnızca başka bir yoldan ulaşmaktır
marked ve onStack ayrı
“bir kez gezildi” ile “şu an yolda” farklı şeyler
tek dizi kullanılırsa çapraz oklar yanlışlıkla döngü sayılır
&& dfs(w)
alt aramada döngü bulunduysa hemen dön
ilk döngüde dur; bütün grafı gezmeye gerek yok
🐍 Kod laboratuvarı: döngü var mı? (Python)
Bu kod “işaretli bir düğüme ok” gördüğü an döngü diyor. Neden yanlış? (İpucu: [[1, 2], [2], []] grafında döngü var mı?) Bir on_stack dizisi ekleyerek düzeltin.
Quiz 4 · döngü tespiti
Bir Excel tablosunda A1 = B1 + 1, B1 = C1 * 2, C1 = A1 − 3 yazıldı. Excel ne der ve neden?
Excel hücreleri bağımlılık grafının topolojik sırasıyla hesaplar. A1 → B1 → C1 → A1 bir döngü: hiçbirini önce hesaplayamazsınız. Excel’in “Döngüsel Başvuru” uyarısı bu sunumdaki döngü tespitinin ta kendisi.
LEVEL 4
Güçlü bileşenler
strong components — karşılıklı ulaşılabilen bölgeler
terimler
erişilebilirlik ve çöp toplayıcı
topolojik sıralama
döngü tespiti
güçlü bileşenler
Güçlü bağlılık
v ve w güçlü bağlı: v’den w’ye ve w’den v’ye yol var
Bu bir denklik ilişkisi → düğümler güçlü bileşenlere ayrılır (her düğüm tam birinde)
Bileşenleri tek düğüm gibi düşünürseniz kalan graf bir DAG olur: bölgeler arası tek yönlü yolculuk
🎮 Soft-lock tespitiMetroidvania’da tek yönlü kapılar ve uçurumlar var. Oyuncu bir güçlü bileşene girdi; oradan çıkışa giden yol yoksa ve geri dönemiyorsa → sıkıştı (soft-lock)! Seviye tasarım araçları her bölgenin bileşenini hesaplayıp “buradan çıkış bölgesine yol var mı?” diye kontrol eder.
Ekonomide: Web’deki “dev bileşen”, besin ağlarında birbirini yiyen tür grupları.
Kosaraju–Sharir algoritması
İki DFS ile: (1) ters grafta DFS yap ve ters sonsırayı hesapla, (2) asıl grafta düğümleri bu sırayla ele al: işaretsiz her düğümden yapılan DFS tam olarak bir güçlü bileşeni işaretler. Örnek grafın 5 güçlü bileşeni var.
Elle izleme: Kosaraju–Sharir, bir metroidvania haritasında
Mağara → Göl tek yönlü bir uçurum (atlarsın, tırmanamazsın); Kristal → Boss tek yönlü bir kapı. Ters graf: bütün okları çevir.
Saf yolHer oda çifti için iki yönde “yol var mı?” sor: her odadan bir DFS → V × (V + E). 6 oda için sorun değil; 10 000 odalı açık dünyada 10 000 DFS. Kosaraju–Sharir yalnızca iki DFS yapar.
ters sonsıra: Boss, Göl, Kristal, Köy, Mağara, Orman
6
2. aşama: asıl grafta, bu sırayla DFS
7
dfs(Boss): oku yok
bileşen 1 = {Boss}
8
dfs(Göl) → Kristal → (Göl, Boss işaretli)
bileşen 2 = {Göl, Kristal}
9
Kristal işaretli, atla; dfs(Köy) → Orman → Mağara → (Köy, Göl işaretli)
bileşen 3 = {Köy, Orman, Mağara}
Sıra neden önemli? 2. aşamaya Köy’den başlasaydık: Köy → Orman → Mağara → Göl → Kristal → Boss, altı oda tek bileşen sanılırdı ✗. Ters sonsıra, “dışarı oku olmayan” Boss bileşeninden başlatır; her DFS kendi bileşeninde kalır.
Kosaraju–Sharir: neden ve ne kadar?
ÖnermeKosaraju–Sharir algoritması güçlü bileşenleri E + V ile orantılı sürede bulur.
İki DFS + bir ters çevirme. Kanıt fikri: ters sonsıra, bileşenleri “kaynak” bileşenden “havuz” bileşene doğru değil, havuzdan başlayarak verir; böylece ikinci DFS bir bileşenden dışarı sızamaz.
📜 “Basit ama gizemli”Robert Tarjan 1972’de ilk doğrusal zamanlı algoritmayı buldu. S. Rao Kosaraju 1978’de daha basit bu yöntemi derste anlattı ama yayımlamadı; Micha Sharir 1981’de bağımsız olarak yayımladı. Algoritma “basit ama gizemli” diye anılır: kodu 10 satır, doğruluğunu anlamak bir saat!
Quiz 5 · güçlü bileşenler
Bir metroidvania haritasının güçlü bileşenleri hesaplandı. Hangi durum bir soft-lock riski gösterir?
Oyuncu o bileşene girebilir (girişten ulaşılabilir) ama oradan çıkışa hiçbir yol yok → sıkışır. Tek yönlü geçişlerin kendisi (D) sorun değil, tasarımın parçası; sorun “geri dönüşü olmayan çıkmaz”. Tüm harita tek bir güçlü bileşense (C) her yerden her yere gidilebilir — güvenli.
🧪 Kod laboratuvarı: Kahn ile topolojik sıra
TODO kısmını doldurun. Bonus: sonunda order.length < V ise ne demektir? (Döngü!) Bu durumda null döndürün.
Derin hikâye: Çöp toplayıcı bir graf algoritmasıdır
1960: John McCarthy, Lisp’i anlatan makalesinde bellekte artık kullanılmayan hücreleri otomatik geri kazanmanın bir yolunu tarif etti: işaretle ve süpür (mark and sweep).
Bellek bir yönlü graftır: nesneler düğüm, referanslar kenar. “Kökler”den (yığındaki değişkenler, statik alanlar) başlayan bir DFS/BFS, ulaşılabilen her nesneyi işaretler; işaretlenmeyen her şey çöptür ve süpürülür. Yani çöp toplama, bu sunumdaki ulaşılabilirlik sorusunun ta kendisi.
Unity, C# betikleri için muhafazakâr bir çöp toplayıcı (Boehm–Demers–Weiser) kullanır ve 2019’dan beri işi karelere bölen artımlı (incremental) modu sunar. Yine de çok fazla nesne ayırmak, toplama sırasında takılmalara yol açar.
DersOyunlarda her kare yeni nesne ayırmak (new, LINQ, string birleştirme) çöp toplayıcıya iş çıkarır; grafı her taradığında oyun takılabilir. Bu yüzden nesne havuzları (Bağlı Listeler sunumundaki serbest liste) ve “sıfır ayırma” alışkanlığı önemlidir. Grafın ne kadar büyük olduğu = toplayıcının ne kadar çalışacağı.
Sıralamayı DFS’nin ön sırasıyla yapmak (doğrusu: ters son sıra).
Kosaraju’da ters grafı unutmak.
Döngüleri sessizce yutmak: tasarımcıya hangi düğümlerin döngüde olduğunu gösterin.
🤖 Bu konuyu bir YZ kod asistanıyla yazarken
Sık yapılan hatalar — kontrol edin
Döngü kontrolü olmadan topolojik sıra
Ön sırayı topolojik sıra sanmak
Ters grafı unutmak
Döngüyü sessizce yok saymak
İyi bir istek (prompt) örneği
“Unity 6, C#. Bir teknoloji ağacı doğrulayıcı yaz: TechNode ScriptableObject’leri (id, önkoşullar listesi). Editör menüsünden çalışan araç: (1) özyinelemesiz DFS ile döngü bul ve döngüdeki düğümleri Console’a yaz, (2) döngü yoksa topolojik sırayı ve her düğümün “en erken açılabileceği katmanı” hesapla, (3) hiçbir şeyin gerektirmediği ve hiçbir şeye ulaşmayan yetim düğümleri raporla. NUnit testleri ekle.”
Hepsi doğrusal zaman, hepsi DFS’nin küçük değişiklikleri. DFS graf algoritmalarının İsviçre çakısı.
Alıştırmalar 🏋️
Kâğıt-kalem: teknoloji ağacının üç farklı geçerli topolojik sırasını yazın.
Kahn algoritmasında kuyruk yerine öncelik kuyruğu (en ucuz teknoloji önce) kullanın. Hâlâ geçerli bir sıra mı?
Kendi oyununuzdaki bir düşman FSM’sini yönlü graf olarak çizin. “Ölü” durumundan çıkan ok var mı? Hangi durumlar güçlü bileşen oluşturuyor?
Bir diyalog ağacında oyuncunun hiçbir seçimle ulaşamayacağı replikleri (ölü içerik) bulan kod yazın.
Unity Profiler’da bir sahnenin “GC Alloc” sütununa bakın. Her karede bellek ayıran satırları bulun ve nesne havuzuyla düzeltin.
🤖 Bir YZ asistanından “Python’da topolojik sıralama” isteyin. graphlib.TopologicalSorter’ı (Python 3.9+) biliyor mu?
🎮 Bu sunumdaki oyunlar
Adı geçen oyunu tanımıyorsanız: oyuncuların kullandığı wiki sayfası ve oyunu kısaca gösteren bir video. ▶ video slaydın üstünde açılır (Esc ile kapanır); 🎯 işaretli bağlantılar doğrudan bu sunumdaki konuya gider.
Civilization1991– · sıra tabanlı strateji
Bir uygarlığı taş devrinden uzay çağına yönetirsiniz; teknoloji ağacı serinin simgesi.