27 puan yazan GN⁺ 2025-05-22 | 2 yorum | WhatsApp'ta paylaş
  • 90s.dev, web tabanlı çalışan yeni bir oyun yapım API'si olup 90'lar tarzı bir GUI uygulaması geliştirme deneyimi sunuyor
  • Bu platform doğrudan bir oyun motoru ya da oyun yapım aracı değil; oyunlar, oyun motorları ve oyun geliştirme araçları üretmek için API sağlıyor
  • HTML Canvas tabanlı, 320x180 ekran, WebGL2 desteği ve web worker üzerinden güvenlik ile performans sağlaması öne çıkan özellikleri arasında
  • TypeScript-first SDK ve farklı dillerdeki wasm modüllerini içe aktarma desteği sayesinde hızlı ve ölçeklenebilir prototipleme mümkün
  • Kullanıcılar kendi uygulamalarını oluşturup GitHub veya NPM üzerinden paylaşabiliyor ya da yükleyebiliyor; amaç geliştirici topluluğuyla iş birliği ve genişletilebilirlik

90s.dev'in tanıtılmasının önemi

  • 90s.dev, web'de çalışan yeni tür bir oyun yapım API platformu
  • 90'lar tarzı bir GUI uygulaması geliştirme ortamı sunuyor ve oyunlar, oyun motorları ile oyun yapım araçları oluşturmak için API'ler sağlıyor
  • Amaç, herkesin HTML Canvas üzerinde piksel sanat, sprite, harita gibi oyun varlıkları ve araçlarını kolayca üretip paylaşabildiği bir ekosistem kurmak

Başlıca özellikler ve vizyon

Platforma temel bakış

  • 90s.dev, tarayıcıda çalışıyor ve 320x180 (16:9) çözünürlükte web penceresini dolduran bir ekran sunuyor
  • Tüm uygulamalar web worker ortamında çalışarak daha iyi güvenlik ve performans sağlıyor
  • WebGL2 offscreen canvas ile oyunlar en fazla 60fps hızında çalışabiliyor
  • GitHub ve NPM'de barındırılan uygulama modülleri serbestçe çağrılabiliyor ve dağıtılabiliyor
  • VSCode dostu TypeScript SDK ile hızlı prototipleme destekleniyor
  • WebAssembly (wasm) olarak derlenmiş farklı dil modülleriyle uyumluluk sunuyor

Varsayılan olarak sunulan uygulamalar

  • Varsayılan olarak piksel sanat, sprite üretim aracı ve harita editörü gibi oyun varlığı üretimine yönelik temel uygulamalar sunuluyor
  • Ses ve müzik düzenleme araçları henüz yok; ancak herkes bunları geliştirip yayımlayabilir/paylaşabilir
  • Yazılan uygulama ve araçlar iframe ya da bağlantı ile tüm kullanıcılara paylaşılabiliyor

İlham kaynakları ve farkları

Referans alınan oyun geliştirme araçları

  • pico8: minimalizm odaklı, tek dil desteği
  • tic80: pico8'in birçok kısıtını kaldırıyor
  • love2d: harici IDE gerektiriyor
  • picotron: işletim sistemi mimarisi getiriyor
  • 90s.dev, meta düzeyde bir pico8 ve TypeScript eklenmiş bir love2d ya da dikey genişlemeye odaklanan bir tic80'e daha yakın

GUI yenilikleri ve teknik ayrıntılar

Yerleşim sistemi

  • Elle yerleştirme ve yeniden boyutlandırmanın zahmetini azaltmak için basit ama güçlü bir otomatik yerleşim sistemi uygulanmış
  • View (API), ekranı doğrudan çiziyor ve çocuk view ağacı yapısını kullanıyor

Ref sistemi

  • View özellikleri (boyut, çocuklar, arka plan rengi vb.) watchable pointer (ref) üzerinden yönetiliyor
  • Tüm özelliklere referans nesnesi (ref) atanıyor; özellik değişiklikleri otomatik algılanıp uygulanıyor
  • Mevcut React/Vue ref'lerinden tamamen ayrı olarak tasarlanmış

Composites (bileşik view kavramı)

  • JSX'te küçük harfli string tag'ler ile büyük harfli value tag'leri tersine çevirerek, uygulama ile kullanımın ayrımını güçlendiriyor
  • Soyut view'ler global tabloya kaydediliyor ve sistemin diğer bölümlerinde serbestçe kullanılabiliyor
  • Örnek: colorpicker view varsayılan bir uygulama sunuyor, ancak geliştirici bunu istediği stille değiştirebiliyor
  • GUI uygulama geliştirmede yüksek esneklik ve genişletilebilirlik sağlıyor

Uygulama dağıtımı ve topluluk iş birliği

Uygulama dağıtım yöntemindeki değişim

  • Önceden şirket içi veritabanı tabanlı net/ paylaşım sürücüsü kullanılıyordu
  • Son dönemde NPM/GitHub üzerinden CDN ile modülleri doğrudan barındırma ve içe aktarma desteği eklendi
    • Örnek: /os/fs/ghb/someuser/project@1.0.0/some/file.js
  • Service worker kullanımıyla farklı kaynaklardan yükleme mekanizması tamamlandı

Katılım ve iş birliği

  • İşletim sistemi benzeri tasarım sayesinde zorunlu uygulamalar (temel uygulamalar) dışında topluluk uygulaması geliştirilmesi teşvik ediliyor
  • Issue tracker, forum ve wiki (tamamı GitHub repo üzerinde) ile iletişim ve iş birliği destekleniyor
    • Sorunlar: özellik talepleri ve hata bildirimi
    • Forum: proje duyuruları ve tartışmalar
    • Wiki: proje derlemeleri ve kürasyon

Uygulama paylaşımı

  • Uygulamalar /os/#app biçimindeki bağlantılarla paylaşılabiliyor
  • Topluluk odaklı olarak uygulama, kütüphane ve varlıkların özgürce üretilip yayılması hedefleniyor

Sonuç ve yönelim

  • 90s.dev, oyun yapım ekosisteminin kendisini tasarlayan ve tanımlayan bir API platformu
  • Herkesin kolayca uygulama üretip dağıtabildiği ve kullanabildiği genişletilebilir bir web oyun geliştirme ortamı hedefliyor
  • Topluluk iş birliği ve açık platform felsefesine dayanan gelecek odaklı bir oyun geliştirme aracı

2 yorum

 
lazyhack 2025-05-23

Oyun motorunun kendisinin nasıl olduğunu da merak ettiriyor.

 
GN⁺ 2025-05-22
Hacker News yorumları
  • Bir gün şubatta sabahın 2’sinde uyanıp öylesine kodlamaya başlama deneyimini paylaşıyor; artık beklemekten sıkıldığını, durmadan kod yazarak API tabanlı bir oyun yapıcı araç, oyun motoru ve oyunlar ortaya çıkardığını, asıl gerçek tutkusunun API tasarımı olduğunu fark ettiğini anlatıyor; insanın tutkusunu bu şekilde bulup kendini ona adamasını çok etkileyici bulduğunu söylüyor

  • Övgü için teşekkür ediyor, ama projenin özünün yeterince iyi anlatılamamış olmasından yakınıyor; aslında en ilginç kısmın API olduğunu fakat bunun dışarıdan görünmediğini, API’nin yenilikçi kullanılabilirliğini gösteren daha fazla örnek olana kadar beklemesi gerektiğini düşündüğünü, çıkışı fazla aceleye getirdiği için pişman olduğunu söylüyor

  • Bu projedeki yazarın kendisi olduğunu belirtiyor ve geri bildirimler için teşekkür ediyor; erken bir çıkış yaptığını net biçimde hissettiğini, çeşitli eleştirileri iyileştirmek için çalıştığını ve birkaç ay içinde geri döneceğini söylüyor

  • Bunun hiç de erken bir çıkış olmadığını düşünüyor; projenin son derece havalı ve aşırı derecede özenle tasarlanmış olduğunu söylüyor, meşhur bike shed benzetmesiyle zirve olarak değerlendiriyor ve bağımsız bir reaktif sistem bile uygulanmış olmasına büyük hayranlık duyuyor

  • Bunun tam bir Show HN zamanlaması olduğunu düşünüyor; Hello World turuna bakınca projenin ne olduğu sezgisel olarak anlaşılıyor, daha önce PICO-8 ve React deneyimi olanlar için daha da eğlenceli geliyor; 16:9 oranı seçimini de akıllıca buluyor, çünkü PICO-8’in kare oranının tuhaf olduğunu düşünüyor

  • Erken yayınladığı için teşekkür ediyor, sık yayın yapma stratejisini güçlü biçimde öneriyor; başarıya giden yolun 10.000 tekrar olduğunu söyleyerek tek bir denemenin sadece başlangıç olduğunu vurguluyor

  • Bunun fazla erken bir çıkış olmadığını söyleyerek cesaret veriyor, yazarın gerçekten çok iyi iş çıkardığını belirtiyor

  • Derinlemesine ele almasa da, bu retro havaya gizliden gizliye daha çok çekildiğini itiraf ediyor; muhtemelen geçmişin daha basit ve rahat zamanlarından gelen teselli hissinin, böyle projeleri görünce yeniden canlandığını söylüyor

  • paint uygulamasının çalışıp çalışmadığını soruyor; Firefox ve Chrome’da denediğini ama renk seçip tıklasa da hiçbir şey çizilmediğini, konsolda da hata görünmediğini söylüyor; ayrı bir konu olarak, 90’lar hissinin çok başarılı biçimde yeniden yaratılmasına hayran kalıyor; ilk başta bunu 70’ler/80’ler terminal estetiği sanmış ama dikkatli bakınca bunun gerçekten tam anlamıyla 90’lar olduğunu fark ettiğini, ileride nasıl gelişeceğini merakla beklediğini söylüyor

  • Kafa karıştırdığı için özür diliyor; yalnızca renk seçiciyi geliştirdiğini, sonrasının henüz uygulanmadığını söylüyor; muhtemelen yakında bir saat içinde tamamlayabileceğini ekliyor; aynı zamanda asıl niyetinin GUI uygulama geliştirmenin keyfini ve gücünü 90’lar hissiyle yeniden yaratmak olduğunu, rahatsızlığı değil sadece hayreti taşımak istediği için bu adı 90s.dev koyduğunu açıklıyor

  • Bunun muhtemelen henüz uygulanmadığını söylüyor; pencerenin sol üstündeki “hash” düğmesine tıklayıp “View Source” seçildiğinde yalnızca arayüzün mocklandığını, kaydırma alanında ise sadece desen gibi görünen kodlar bulunduğunu fark edebileceğini belirtiyor

  • Kendisinde de çalışmıyor

  • Projenin kendisini tam olarak anlayamadığını ama havasına ciddi biçimde kapıldığını söylüyor; belli bir duygusal atmosfer ve görsel öğelerin tek başına insanların duygularını bu kadar etkileyip daha fazla ilgi uyandırabilmesini ilginç buluyor

  • Kendi açısından bunu nasıl açıklayacağını düşündüğünü söylüyor; daha kullanışlı bir pico8 yapmak istediği için 320x180 tasarım ve prototip oluşturduğunu, aynı zamanda VS Code’un tüm kolaylıklarını ve TypeScript desteğini de istediğini, bu yüzden sonunda pico8’in sekmelerinde bulunan şeyleri yapıp dağıtılabilir bir platform kurmayı hedeflediğini anlatıyor; dönüp bakınca bunun da fazla erken yayınlandığını düşündüğünü ekliyor

  • Havanın kendisini sevdiğini ama 16:9 oranı ile 90’lar PC kombinasyonunun pek uyuşmadığını düşünüyor; CRT monitörlerin kareye yakın kendine özgü hissini daha çok sevdiğini söylüyor

  • Teşekkür ediyor ve bir şeyi açıklamanın çok zor olduğunu söylüyor; bu yazının da aslında ne yaptığını olabildiğince kısa anlatma girişimi olduğunu itiraf ediyor; kısa versiyonda bile içeriğin hâlâ muğlak kalmasının kaçınılmaz olduğunu düşünüp pes ettiğini dürüstçe söylüyor

  • Projeyi çok havalı buluyor ama başlamanın biraz zor geldiğini söylüyor; mini bir oyun yapma sürecine dair kısa bir adım adım rehber olmasının iyi olacağını öneriyor

  • Teşekkür ediyor ve şu an oyun oluşturma şeklinin uygulama oluşturma öğreticisiyle aynı olduğunu, ancak özel bir görünüm oluşturup draw metodunun üzerine yazarak yapılabildiğini açıklıyor; performans için OffscreenCanvas oluşturup kullanmanın daha iyi olacağını, henüz WebGL2yi daha kolay saran bir API sunmadığını, ama ileride yeni başlayanların da baştan sona bir oyun yapabileceği bir öğretici hazırlayacağına söz veriyor; şimdilik odaklarının daha çok uygulamalar olduğunu, bu yüzden önce oyun yapıcı araçları (sprite, map vb.) geliştirmeye ağırlık verdiğini ve Hello World öğreticisinin bağlantısını paylaştığını belirtiyor

  • Projeyi aşırı ilgi çekici buluyor; kendisini anında çocukluğuna dönmüş gibi hissettirdiğini söylüyor; pico8’i de sevdiğini ama kendisinin masaüstü ve GUI ile büyüyen kuşaktan geldiği için pico8’in ona bir nesil fazla erken hissettirdiğini, bu projenin ise sanki yeniden CD satın alıyormuş gibi bir nostalji verdiğini anlatıyor

  • Pico8 geliştiricisinin yaptığı Picotron’dan da söz ediyor; bunu pico8’e benzeyen ama kısıtları biraz daha az olan bir masaüstü işletim sistemi olarak tanımlıyor; kendisinin kullanmadığını, sadece GIF’lerini gördüğünü, ancak proje paradigmasının benzer olduğunu, özellikle içinde pico8 yapılabilecek bir “platform” olma yönelimi bakımından kendi projesine benzediğini ve farklı yollarla aynı ideali kovaladıklarını düşündüğünü söylüyor

  • Getting Started rehberinin ilk adımında takıldığını söylüyor; helloworld.zip dosyasını yereline indirdikten sonra web’de filer.app.js açtığını, mount düğmesine basıp drive name olarak helloworld/app girdiğini ama hiçbir şey olmadığını belirtiyor; zip dosyasını 90s.dev örneğine nasıl yüklemesi gerektiğinin kafa karıştırıcı olduğunu ekliyor

  • Geri bildirim için teşekkür ediyor; büyük ihtimalle Firefox kullandığını, çünkü bu özelliğin showDirectoryPickera dayandığını ve Firefox’un bunu desteklemediğini, bu yüzden Chrome önerdiğini söylüyor; ayrıca drive name alanına yol değil yalnızca ad girilmesi gerektiğini ("foo" gibi) ve rehberi yakında düzelteceğini belirtiyor; sonrasında foo/helloworld.app.js yolunun gerçek yerel dizine bağlanacağını açıklıyor

  • 90’lar hissini gerçekten çok sevdiğini, özellikle yazı tipinin çok etkileyici olduğunu söylüyor; 80’ler tarzı piksel sanatından ziyade 90’lar tasarımına çok daha fazla çekildiğini fark ettiğini belirtiyor

  • Landing page’e yönelik bir eleştiri getiriyor; projeyi bir yandan ‘game maker’ diye adlandırırken öte yandan ‘game maker değil’ denmesinin kafa karıştırıcı bir çelişki yarattığını, terim kullanımının tutarlı olmadığını söylüyor

  • Adlandırmanın zaten başlı başına zor bir mesele olduğunu hatırlatıyor; bunu bilgisayar bilimindeki en zor problemlerden biri olarak görüyor ve cache invalidation ile birlikte anıyor