Yazılım

Tek Kişilik Ekip Rust ve WebAssembly ile Yürünebilir ASCII Siberpunk Şehir Yarattı

Tek kişilik geliştirici stüdyosu Grow Now! Games, yürünebilir bir ASCII Siberpunk Şehir prototipini tarayıcı üzerinden oynanabilir hale getirdi.

Teknokutu Editör3 dakikalık okuma
ASCII karakterlerinden oluşan siberpunk şehir görselleştirmesi

Tek kişilik geliştirici stüdyosu Grow Now! Games, yürünebilir bir ASCII Siberpunk Şehir prototipini tarayıcı üzerinden oynanabilir hale getirdi. Proje, yalnızca 283 kilobaytlık bir Rust WebAssembly motorunun beslediği WebGL tabanlı bir render sistemi üzerinde çalışıyor ve tamamen metin karakterlerinden oluşan üç boyutlu bir şehir deneyimi sunuyor. Yayın, stüdyonun "ASCII City Update: Interiors, Elevation & Skyscrapers" başlıklı ikinci YouTube videosuyla eş zamanlı olarak geldi; ilk video ise bir milyondan fazla izlenme ve 9 bini aşkın yorum toplamıştı.

ASCII Siberpunk Şehir Nasıl Çalışıyor?

Tarayıcı, ascii-city-engine_bg-DqjAhqbp.wasm adında 283KB büyüklüğünde bir modül indiriyor. Bu modül başlangıçta 1.152KB doğrusal bellek ayırıyor ve tarayıcı dışında çalıştırıldığında motor sürümünü 0.1.0 olarak bildiriyor. Dışa aktarılan fonksiyonlar arasında initialise_native_game, step_native_game ve generate_native_local_map gibi isimler dikkat çekiyor. Derleme dosyasında kalan hata ayıklama izleri, bu fonksiyonların arkasındaki Rust kaynak modüllerinin isimlerini de ele veriyor: city.rs, world.rs, population.rs, interiors.rs ve rendering.rs. Dünya üretimi tamamen Rust tarafında gerçekleşiyor; bina yükseklikleri, döşeme türleri, yüzeyler, renk tonları, doygunluk değerleri, pencere stilleri, aydınlatma bayrakları ve kat planı kimlikleri gibi veriler base64 ile paketlenmiş bayt dizileri halinde JavaScript'e aktarılıyor.

Render Motorunun Perde Arkası

Sistem bir WebGL bağlamı talep ediyor ve bir çift vertex-fragment shader derliyor; fragment aşaması tek bir texture2D okumasından ibaret. Karakterler, fillText komutuyla bir atlas tuvaline yalnızca bir kez çiziliyor, her karakter-renk kombinasyonu için önbelleğe alınıyor, GPU'ya tek bir texImage2D çağrısıyla yükleniyor ve ardından altışar köşeli dokulu dörtgenler olarak çiziliyor. Atlas hücreleri 11 piksel yüksekliğinde ve monospace ilerleme genişliği artı iki piksel olarak tasarlanmış. Her karede görünür tüm hücreler tek bir tampon yüklemesiyle GPU'ya gönderiliyor ve sadece bir drawArrays çağrısı yapılıyor. WebGL desteklenmediğinde devreye giren bir Canvas 2D drawImage yedeği ve ?direct URL parametresiyle erişilebilen hücre başına fillText yedeği de mevcut.

Performans Detayları ve Cihaz Uyumu

Masaüstü oturumları, 10 piksellik Consolas fontuyla ve satır başına dokuz piksel yükseklikte 180 sütun 80 satır, yani toplam 14.400 karakter hücresi çiziyor. Dokunmatik cihazlarda bu sayı 48 satıra ve 96 ile 168 sütun arasına düşerken, Rust motoru ayrı bir 160x112 profili kullanıyor. Vertex tamponu başlangıçta 2,76MB olarak ayrılıyor ve bir kare bu sınırı aştığında otomatik olarak iki katına çıkıyor. Grow Now! Games, projeyi PC Gamer'a anlatırken "Ne Unity var, ne Unreal, ne 3D modeller, dokular ya da shader'lar" diyerek işin özünü özetlemiş.

Retro Teknikleri Modern Motorlarla Buluşturan Bir Trend

ASCII Siberpunk Şehir, son dönemde görülen "kısıtlı araçlarla büyük iş çıkarma" trendinin bir parçası. Örneğin 1994 model Sega 32X için sıfırdan C ve SH-2 assembly ile yazılmış bir raycasting motoruyla çalışan birinci şahıs Backrooms oyunu benzer bir felsefeyi yansıtıyor. Çok oyunculu bir Doom saygı duruşu ise raycasting ve sprite projeksiyonunu SQL view'ları yığını olarak uyguluyor ve 128x64 çözünürlükte yaklaşık 30 FPS'e ulaşıyor. ASCII tabanlı roguelike oyunu Thunder Lizard'da ise karakter ızgarası yapay zekâ görsel modelleriyle yeniden çizilerek yaklaşık 10 FPS'de tam hareketli görüntülere dönüştürülüyor.

Türkiye'deki Bağımsız Geliştiriciler İçin Ne İfade Ediyor?

Bu proje, büyük stüdyo bütçeleri ya da hazır oyun motorları olmadan da etkileyici teknik gösteriler yapılabileceğini kanıtlıyor. Türkiye'de son yıllarda büyüyen bağımsız oyun geliştirici topluluğu için bu tarz "minimalist mühendislik" örnekleri özellikle öğretici; zira Rust ve WebAssembly kombinasyonu, düşük donanım gereksinimiyle tarayıcı üzerinden dağıtım yapmak isteyen geliştiriciler için ciddi bir maliyet avantajı sunuyor. Türkiye'deki mobil internet altyapısı ve orta seviye cihaz kullanım oranı düşünüldüğünde, bu denli küçük dosya boyutuyla çalışan bir motorun erişilebilirlik açısından ilham verici olduğu söylenebilir. Ayrıca Unity ve Unreal gibi lisans maliyeti taşıyan motorlara alternatif arayan geliştiriciler için, bu tür özgün mühendislik çözümleri hem teknik hem de ekonomik açıdan yol gösterici bir örnek teşkil ediyor.

PaylaşXFacebookLinkedInWhatsApp

Kaynaklar

Sıkça Sorulan Sorular

ASCII Siberpunk Şehir projesi hangi teknolojilerle geliştirildi?
Proje, 283KB büyüklüğünde bir Rust WebAssembly motoru ve bu motorun beslediği WebGL tabanlı bir render sistemi üzerine inşa edildi. Hazır oyun motoru, 3D model, doku veya shader kullanılmadı.
Bu ASCII şehir demosuna nasıl erişilebilir?
Grow Now! Games, projeyi tarayıcı üzerinden oynanabilir bir build olarak yayınladı. WebGL desteklenmeyen cihazlarda Canvas 2D yedek modu, ?direct parametresiyle de hücre başına render modu devreye giriyor.
Proje kaç karakter hücresi render ediyor?
Masaüstünde 180 sütun ve 80 satır olmak üzere toplam 14.400 karakter hücresi çiziliyor. Dokunmatik cihazlarda bu sayı düşerken, motorun kendi iç profili 160x112 olarak çalışıyor.

Teknokutu Editör

Genel Yayın Yönetmeni

Teknokutu yayın ekibi.

Pixel 10 modem güvenliğiTeknoloji

Pixel 10 Modem: Rust ile Güvenliği Üst Seviyeye Taşıyor

Pixel 10 modem güvenliği, Google’ın Rust dilini entegre etmesiyle birlikte yeni bir boyut kazanıyor. Modern akıllı telefonlarda en savunmasız noktalardan biri olan modemler, artık daha güvenli hale geliyor. Peki, bu yenilik kullanıcılar için ne anlama geliyor? Rust Neden Tercih Edildi? Telefon modemleri, genellikle C ve C++ dillerinde yazılır. Bu diller, güçlü fakat karmaşık kod yapıları…

Semih Ateşçi · · 3 dakikalık okuma

Yorumlar

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yaz