- 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
Oyun motorunun kendisinin nasıl olduğunu da merak ettiriyor.
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
paintuygulaması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üyorKafa 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.devkoyduğunu açıklıyorBunun 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
drawmetodunun üzerine yazarak yapılabildiğini açıklıyor; performans içinOffscreenCanvasoluşturup kullanmanın daha iyi olacağını, henüzWebGL2yi 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ı belirtiyorProjeyi 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.zipdosyasını yereline indirdikten sonra web’defiler.app.jsaçtığını,mountdüğmesine basıp drive name olarakhelloworld/appgirdiğ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 ekliyorGeri 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ındafoo/helloworld.app.jsyolunun gerçek yerel dizine bağlanacağını açıklıyor90’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