- Şehir kurma oyunlarında yol sisteminin gerçekçi biçimde uygulanması temel bir unsurdur; yalnızca görsel bir öğe olmanın ötesinde yapısal bütünlüğü belirleyen bir altyapıdır
- Mevcut oyunlar yolları göstermek için Bezier spline kullanır, ancak bu yöntem gerçek yolların eğriliğini ve paralelliğini koruma konusunda sınırlamalara sahiptir
- Gerçek dünyadaki yolların araçların dingil mesafesi ve eğri kısıtlarını yansıtması gerekir; Bezier yaklaşımında ofset alındığında form bozulur ve gerçekçi olmayan kıvrımlar ortaya çıkar
- Bunu çözmek için çember yayı (Circle Arc) ve klotoid (Clothoid) gibi mühendislik eğrileri uygulanırsa, yumuşak eğrilik değişimi ve paralel ofsetlerin korunması mümkün olur
- Yazar bu sınırlamaları aşmak için kendi yol sistemini doğrudan kurdu ve ileride teknik uygulama sürecini paylaşmayı planlıyor
Yolların ve desenlerin çekiciliği
- Doğadaki düzen içindeki düzensiz desenlerde hissedilen tatmini yollarda da buluyor
- Bunu, karınca yuvaları, petekler ve yaprak damarları gibi basit kuralların birikerek karmaşık yapılar oluşturmasına benzetiyor
- Yol ağları da insanlığın yarattığı en ilgi çekici desenlerden biri olarak anlatılıyor
- Şehirler yok olduktan sonra bile kalacak yol ağlarının izlerini hayal ederek, onların yapısal güzelliğini vurguluyor
Şehir kurma oyunları ve yolların evrimi
- SimCity 2000'den Cities: Skylines 2'ye kadar yol sistemleri sürekli gelişti
- SimCity 4 yükseklik ve çapraz yolları, SimCity 2013 kavisli yolları, Cities: Skylines ise serbest yerleşim ve kavşak düzenlemelerini destekledi
- Buna rağmen hâlâ eğrilerin doğallıktan uzak olması, ani dönüş yarıçapları, gerçekçi olmayan otoyol rampaları gibi sorunlar var
- Mod'lar sayesinde gerçekçi şeritler, işaretlemeler ve eğriler uygulanabilir hâle geldi, ancak bunlar yine de motorun temel kısıtlarını aşamıyor
Bezier spline'ın sınırları
- Bezier eğrisi, iki nokta arasını yumuşak biçimde bağlayan güçlü bir matematiksel araçtır ve çoğu oyun motorunda kullanılır
- Ancak bu eğri türünde ofset alındığında biçim ve eğrilik korunmaz; yani “Bezier eğrisinin ofseti bir Bezier eğrisi değildir”
- Bunun sonucunda iç ve dış eğriler arasında uyumsuzluk, kendini kesme ve pinch olayı ortaya çıkar
- Sonuç olarak gerçek yollardaki gibi araç izlerini yansıtan paralel eğrileri uygulamak zorlaşır
Çember yayı (Circle Arc) ve klotoid (Clothoid) uygulaması
- Çember yayı, ofsetten sonra da aynı biçimi koruyan kusursuz paralellik sağlar
- İki çember yayının kesişimini hesaplamak, Bezier'e kıyasla çok daha basittir ve O(1) hesaplama karmaşıklığıyla verimlidir
- Farklı yarıçaplara sahip çember yayları birleştirilerek mühendislik açısından geçerli yol biçimleri oluşturulabilir
- Ancak çember yayında eğrilik sabittir; bu nedenle düz bir hattan eğriye girişte yanal ivmede ani değişim meydana gelir
- Bunu telafi etmek için klotoid (Clothoid) kullanılır
- Eğrilik kademeli olarak artar ve doğal direksiyon hissi ile sürüş konforu sağlar
- Matematiksel olarak karmaşıktır, ancak yüksek hızlı yol tasarımı için vazgeçilmezdir
- Şehir içi kavşaklar gibi düşük hızlı bölümlerde ise çember yayı tabanlı tasarım bile yeterince gerçekçi olabilir
Kendi yol sistemini yapma nedeni
- Oyuncuların çoğu kavşak eğriliğinin doğruluğuna fazla önem vermez, ancak geliştirici bunu merak ve teknik meydan okuma nedeniyle araştırıyor
- Mevcut ticari oyunların uygulama düzeyi yüksek olsa da, bağımsız geliştiricilerin erişebileceği kaynak ve varlıklar yetersiz
- Basit ızgara tabanlı yollar yerine, daha incelikli ve paylaşılabilir bir sistem oluşturmak için kendi çözümünü geliştiriyor
- Bir sonraki yazıda teknik uygulamanın ayrıntılarını paylaşmayı planlıyor; abonelik yoluyla güncellemeler alınabilir
1 yorum
Hacker News yorumları
Şehir kurma oyunlarında yolların merkezde olduğunu söyleyen yazıyı görünce, şehir plancılarının neden kâbus gördüğünü anladığımı düşündüm
Bir şehrin temeli otomobiller için yol (road) değil, yayaların, bisikletlilerin ve toplu taşımanın birlikte kullandığı cadde/sokak (street) olmalı
İlgili bir kavram olarak Stroad maddesine bakmaya değer
Yol, ulaşım (transportation) odaklı; cadde/sokak ise kamusal etkileşim (public interaction) odaklı
Yine de özgün alıntının gereğinden fazla eleştirildiğini düşünüyorum. Modern toplumda ulaşım talebi çok büyük ve şehir içiyle dışındaki yol ağı, kentin iskeletini oluşturuyor
1900'lerden önce şehirler yalnızca su yollarının yakınında kurulabiliyordu, ama artık yollar sayesinde iç kesimlerde de mümkün
Gerçekçi bir şehir yapmak istiyorsanız sahte yollar yerine böyle bir yaklaşımın doğru olduğunu düşünüyorum
Bazen şunu hayal ediyorum: Eğer şehirleri yalnızca bisiklet ve yürümenin kullanıldığı bir medeniyet tasarlasaydı, nasıl görünürdü?
Yazarın hoşuna gidebilecek bir oyun var. Adı Junxions; yol kavşakları yapmaya odaklanan bir sandbox oyunu
İlgili subreddit burada. Bu oyun, yol tasarlama isteğini epey iyi karşılar gibi duruyor
Junxions'ı ben de seviyorum ama benim yaklaşımım farklı. Onlar node tabanlı Bezier yapısı kullanıyor, ben ise yol segmentleri arasındaki çarpışmalarla kavşakları otomatik oluşturuyorum
Bir sonraki blog yazımda bu iki yaklaşım arasındaki farkı ayrıntılı ele alacağım
“Kavşak köşe yarıçaplarını önemseyen insanlar sadece %1'lik kesim” deniyor ama ben tam da o %1'lik kesimdeyim
Bezier eğrileriyle yol tanımlamak kolay değil
Özellikle sert dönüşlerde görsel olarak pek hoş görünmeyen sonuçlar çıkıyor
Ben de geçen yıl Azoth projesinde aynı sorunla karşılaştım ve basitleştirilmiş bir çözüm buldum
Bakınız: Azoth deposu, Bezier örneği
Oyunlarda çok doğal görünen şeyler aslında muazzam bir emek ve tasarımın ürünü
Mesela yollar, oyuncunun ayrıntılı bakmadığı şeylerdir ama tuhaf görünürlerse hemen göze batar
Bunu yakın zamanda Kingdom Come 2 oynarken hissettim — her şey gerçek hayattaki gibi doğal görünüyor ama bütün o detaylar geliştiricilerin kanı, teri ve gözyaşıyla yapılmış
Bu yüzden oyun sektörünün neden crunch yaşadığını anlayabiliyorum
İlgili yazılar: The Door Problem, IGN makalesi
Böyle yazılar yüzünden Hacker News okumayı sürdürüyorum. Yazara yazmaya devam etmesini söylemek isterim
Benzer ilgi alanlarına sahip çok insan varmış; bundan sonra daha aktif olmayı düşünüyorum
Bu yazı tam benim zevkim. Yol takıntısı bende de aynı şekilde var
Şehirler damarlar gibi yollarla örülür ve Avrupa ile Asya'nın köy yolları, ayak izlerinin açtığı güzergâhlar üzerine kurulmuş hikâyelerdir
Buna karşılık memleketimdeki kırsal yollar dümdüz ilerler, sonra bir çiftçi toprağını satmazsa aniden kırılır
Sömürge dönemleri ya da bazı planlı şehirler dışında sadece bir kısmı ızgara düzenindedir; çoğunun yönü nehir akışına veya arazi şekline göre değişir
Şehirlerdeki en güzel ve mimari açıdan en ilginç yerler, işte bu ızgaraların kesiştiği noktalardır
Kent büyümesindeki bu değişimleri simüle eden bir oyun olsa harika olurdu
Gerçek şehirler, karınca yuvası gibi doğal bir düzen içindeki karmaşıklıkla gelişti
Bu konu hakkında ileride ayrı bir yazı yazmak istiyorum
Bir sonraki oyunum Canalpunk'ta Bezier spline kullanmaya devam edeceğim
Güzergâhın kendi kendini kestiği durumlarda ortaya çıkan felaket sistemi ilginç olabilir
Demiryolu ray editöründe klotoid (curve transition) uygulamaya takmış durumdayım
Boş alanda kolay ama rayları birbirine bağlarken zorlaşıyor
Daha önce hazırladığım bir açıklama materyali var: Euler Spiral Explanation
O kesişim noktasını kullanarak yeni bir spline enterpole etmeyi denemek istiyorum
Referans görsel: görsel örnek
Romalılar gibi düz yollar yaparsanız iş kolay :-)
Tabii Romalılar özel mülk gibi şeyleri pek umursamıyordu. Yaşadığım İngiltere'nin Lincolnshire bölgesinde Roma yolları hâlâ kullanılıyor
Sadece RAF Scampton pistini uzatırken istisna olarak yolu kıvırdılar
Ayrıntılar için Roman aqueduct maddesine bakabilirsiniz
Bugün bile yol orta çizgileri kilise kulelerinin yönüyle tam olarak hizalı. Kilise merkezli arazi anlayışı bu bakımdan Roma'ya benziyor