3 puan yazan GN⁺ 2024-01-30 | 1 yorum | WhatsApp'ta paylaş
  • Boardzilla, tarayıcıda masa oyunları oynamayı ve geliştirmeyi mümkün kılarak dijital masa oyunu üretmenin giriş bariyerini düşürmeyi hedefleyen bir framework
  • Geliştiricilerin oyun kurallarını ifade etmesini, oyuncuların da olası seçenekleri basit bir arayüz üzerinden görmesini sağlayan bir akış amaçlıyor
  • Yayındaki örnek oyunlar arasında 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma, Stunt Kites gibi oyunlar bulunuyor
  • Oyunlara göre desteklenen oyuncu sayısı tek kişilikten 4 kişiliğe kadar değişiyor; 7 Wonders Duel, Hex ve Skirma 2 kişilik, Hearts ise 4 kişilik
  • Kendi masa oyununu yapmak isteyen kullanıcılar, sunulan dokümantasyon ve tanıtım sayfası üzerinden geliştirmeye başlayabilir

Boardzilla neler sunuyor

  • Boardzilla, dijital masa oyunlarını kolayca yapmak için web tabanlı bir ortam
  • Tarayıcı içinde masa oyunlarını oynamayı ve geliştirmeyi mümkün kılıyor
  • Oyun kurallarını ifade etmeyi kolaylaştırıyor ve oyunculara olası seçenekleri basit bir arayüzle sunuyor

Oynanabilir oyun örnekleri

Geliştirmeye başlama yolu

1 yorum

 
GN⁺ 2024-01-30
Hacker News yorumları
  • Açılış sayfasındaki en göze çarpan mesajın “Discord’a katıl” çağrısı olmaması gerektiğini düşünüyorum
    Önce örnekler ve kaynak/belge bağlantıları görünmeli. Böyle projelerde “Discord’a katıl” fazla öne çıkarılınca kişisel olarak bende tam tersine mesafe hissi yaratıyor. Sanırım yalnız değilimdir

    • Ben de aynı fikirdeyim
      Discord’u, arkadaşlar arasında kullanılan tek seferlik bir iletişim platformu gibi durumlar dışında gerçekten sevmiyorum. Ama insanlar yalnızca destek soruları için değil, dokümantasyon için bile Discord’u ana platform gibi kullanma eğiliminde. Arama kalitesi kötü, arama motorları tarafından da indekslenmiyor; bu yüzden bir çözüm bulmanız gerektiğinde gerçekten en kötü seçenek
  • Güzel görünüyor. Kapsamı geniş olduğu için çok fazla hareketli parça vardır; epey emek gerektirmiş olmalı. En azından masaüstü oyunlara odaklanan ama yalnızca render etmeye odaklanmayan bir oyun motoru olması sevindirici
    Ancak kart ve zar oyunlarını saf HTML/JavaScript ile çevrimiçi oynanabilir hâle getirmiş biri olarak, aynı şeyi bu sistemle nasıl yeniden kuracağımı henüz pek anlayabilmiş değilim. Belgelere bakınca kartlar destekleniyor ve soyutlamalar da çeşitli oyunlara uyacak kadar genel görünüyor; ama adım adım bir öğretici çok yardımcı olurdu. Actions, Flows, selections, conditions, prompts gibi soyutlamaların neden seçildiğini anlıyorum, fakat pratikte nasıl bir araya geldiklerini görmeden değiştirmek istediğim noktayı nerede değiştirmem gerektiğini kestiremiyorum. Öğretici olmadan kişisel olarak fazla ilerleyemeyecek gibiyim

    • Fiziksel masa oyunu bağlamından bakınca çekirdek yapı iki ana sınıfa dayanıyor gibi görünüyor. Eldeki ya da oyuncular (Player) arasında hareket eden ve masadaki alanların (Space) üzerine konan şeyleri, yani Piece’leri ele alan bir yapı
      Kartlar ve zarlar Piece’ten türetilerek tanımlanır, oyuncular Player’dan türetilir; desteyi yöneten Teller gibi bir varlık da Player olarak konabilir. Sonra kurallar için gereken Space örneklerini tahtaya nasıl yerleştireceğinizi düşünürsünüz. Kurallar Game sınıfı örneğinin içine girer; onun içinde de Action sınıfı örnekleri olan eylem kavramı bulunur. Bu eylem, kullanıcı istemini, yasal yürütme koşullarını ve yürütme etkisini tanımlayan argümanlar alır. Bunun dışında parçaları bulma, karşılaştırma ve beklenebilecek kolaylaştırıcı fonksiyonlar epey var; gerisi oyun mantığına kalıyor. Örneklere bakınca Space ve Piece’leri filtreleyen fonksiyonlar da var, bu yüzden UI mantığını hızlıca kurmak mümkün görünüyor
    • Dokümantasyonu daha da genişletmek istiyorum ama çok zaman alıyor. Basit görünen bir oyunu bile kalıplaşmış bir API’ye taşımaya çalışmanın göz korkutucu olabileceğini anlıyorum. İşe yarar mı bilmiyorum ama bir oyunun bazı kısımlarını yaparken kaydettiğim bir video var
      https://docs.boardzilla.io/game/creating-a-game
  • Proje adında *Zilla kullanmamak daha iyi olur. Godzilla’nın telif hakkı sahiplerinin “Zilla” sonekini kullanmak isteyenleri aktif biçimde takip ettiği biliniyor. Mozilla da uzun zaman önce dersini alıp ayrı bir anlaşma yapmak zorunda kalmıştı

    • Hiç bilmiyordum. Hazırda oldukça iyi başka alan adlarım da var; belki artık bir karar vermem gerekecek
    • Bunun Godzilla’yla ya da telif hakkıyla en ufak nasıl bir ilgisi olduğunu anlamıyorum. Devasa nükleer canavardan epey uzak
      Toho’nun kaybettiği tek marka davası, ‘trashzilla’ adlı bir çöp torbası şirketine karşıydı; bunun Toho’nun ticari çıkarları için risk oluşturmaması da gerekçelerden biriydi. Düzenleme: Logoyu görmemişim. Bu kesinlikle sorun olabilir
    • Bu epey şaşırtıcı. *Zilla telif hakkının bu kadar agresif olduğunu bilmiyordum
    • Meta da ‘book’ ile biten markalar için başvuranlara karşı marka haklarını aktif biçimde uyguluyor
    • Revzilla ve Partzilla da *zilla adları yüzünden uzun hukuki ihtilaflar yaşadı
  • TypeScript+CSS kullanıyorsunuz. Oyun mantığı için sunucuda Python desteği olmasını ummuştum. Zamanlama şu an iyi; BGA kullanan geliştiriciler ve yayıncılar Asmodee’nin iş modeli nedeniyle huzursuz.
    BGA Studio yığını JS/CSS + PHP (istemci ve sunucu) + MySQL [0]
    Yucata.de JS + HTML + sunucuda .NET 4.5 kullanıyor [1]
    TTS Lua kullanıyordu; baktığımda tuhaf ve sınırlı görünmüştü. Nesne yönelimli bile değilken, board game için neden nesne yönelimli olmayan bir dil seçilir anlamıyorum. 2021 tarihli site/framework incelemesi “VassalEngine: Survey of other boardgame software” da faydalı [2]
    Sunucuda Python ile entegre edilebilirse gerçekten harika olurdu
    [0]: https://boardgamearena.com/doc/Studio
    [1]: https://www.yucata.de/en/FAQ#t17
    [2]: https://forum.vassalengine.org/t/survey-of-other-boardgame-s...

    • “Board game için neden nesne yönelimli olmayan bir dil seçilir” kısmına gelirsek, Lua oyun geliştiricileri arasında zaten oldukça popüler bir tercihti. Sebeplerinden biri, oyun içine betik dilini kolayca gömebilmek
      Sınıflar olmadan da nesne yönelimli programlama yapmak mümkün [0]. Ayrıca bir geliştiricinin sırf yeni bir programlama dili öğrenmek istemediğiniz için tüm projeyi Python’a taşımasını ve bakımını yapmasını beklemek fazla olur
      [0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
    • Sunucunun Python olmamasının nedeni, boardzilla’da oyunu istemci ve sunucu için iki kez ifade etmiyor olmanız. Bunun yerine TypeScript ile yalnızca bir kez yazıyorsunuz ve o kod gerçekten hem sunucuda hem istemcide kullanılıyor. İstemci, yalnızca gizli bilgileri olmayan bir sunucu gibi çalışıyor
    • Arka uçta Python’ı neden bu kadar güçlü istediğinizi merak ediyorum. TypeScript, arka uçta ve çeşitli ön uçlarda çalıştığı için oldukça mantıklı bir seçim. Yalnızca web’de değil, Unity gibi oyun motorlarında da kullanılabiliyor. Tip sistemi de Python’dan daha iyi
    • Asmodee’nin iş modelinin ne olduğunu ve bunun BGA ile ne ilgisi olduğunu merak ediyorum
    • TypeScript’in kendisi sorun değil ama React kısmı beni endişelendiriyor. Oyun ön ucu için React yerine Svelte, Marko, Solid gibi daha hafif bir şey istenmez mi?
  • Güzel. Bir gün web oyunu olarak yapmak istediğim çok sayıda board game prototipim olduğu için, board game yapımı için bazı genel amaçlı kütüphane fonksiyonları yazmayı denemiştim. Izgara oluşturma, özel zar atma, kart çekme, turnuva fonksiyonları, birden çok senaryoyu gösteren testler ve birkaç şeyde kaldı; ama diğer projelerle birlikte yürüttüğümden bunu düzgünce geliştirmeye pek zamanım olmayacak gibi. Bu kütüphanenin ne kadar kolay kullanılabildiğine bakmam gerekecek
    BGA platformunu öğrenmenin epey sancılı olduğuna katılıyorum. 1) Platforma bağlı kalıyorsunuz, oyunu başka yere koyamıyorsunuz; 2) her şey PHP, artık pek kullanmak istemiyorum; 3) dokümantasyon birçok yere dağılmış ve PowerPoint sunumları bile içeriyor

  • Daha düşük seviyeli bir şey arıyorsanız boardgame.io’yu önerebilirim
    [1] https://boardgame.io/

    • boardgame.io da kesinlikle önerilebilir. Nicolo gerçekten nazik ve çok yardımcı oluyor. Diğer projesi https://boardgamelab.app/’e de bakmak iyi olur
  • Bu alan gerçekten zor. Başarılı olmak için ya anında hit olan bir oyununuz olmalı ya da yıl boyunca her gün oyuncu toplamak için muazzam bir topluluk emeği harcamalısınız diye düşünüyorum
    BGA alternatiflerinin neredeyse hiç olmadığı ilk dönemde https://acos.games ile şansımı denemiştim. Hâlâ canım sıkıldığında arkada geliştirmeye devam ediyorum. En büyük başarısızlık UI/UX idi. İnsanlar arkasında saklı duran harika teknolojiyle pek ilgilenmiyor

    • Çok iyi yapılmış görünüyor. Dokümantasyon da çok iyi yazılmış. Şu an kullanacak bir durumum yok ama nelerin mümkün olduğunu görmek için dokümanları okumak bile ilginçti. Durum yönetimi ve oyun tekrar oynatma özellikleri güzel görünüyor. Ben de kendi oyun paketimi yapıyorum; sistemi başkalarının entegre edebileceği kadar esnek hâle getirmeyi düşünmek bile büyük bir iş gibi geliyor. Verilen emek etkileyici
  • Çok havalı görünüyor, başlangıç için tebrikler
    Prototip geliştirme için harika olabilir ama BGA alternatifi oluşturmak için yayıncılardan oyunları uygulama/yayınlama izni almanız gerekir. BGA çok büyük ve Asmodee’ye ait olduğu için bu kolay görünmüyor. Umarım yanılıyorumdur

    • Hukuk uzmanı değilim ama aynı kart/tahta görsellerini kullanmadığınız veya kural kitabını kelimesi kelimesine kopyalamadığınız sürece oyun mekaniklerinin telif hakkıyla korunmadığı anlaşılıyor
      “Özetle, ad ve logo marka olarak korunabilir, sanat eserlerinin telif hakkı vardır (tahtanın kendisi de sanat eseri olarak buna girebilir). Mekanikler, prosedürler ve kurallar telif hakkıyla korunamaz. Bu yüzden Monopoly/Scrabble klonları var.”
      https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
      Burada şu YouTube videosuna atıf yapılıyor
      https://www.youtube.com/watch?v=iZQJQYqhAgY
    • Asmodee’nin gerçek bir rakibin pazara girmesini fiilen engellediğine tamamen katılıyorum. BGA ile doğrudan kapışmak yerine, indie yayıncıların daha küçük oyunlarına bakma fikrim var. Ne kadar uygulanabilir bilmiyorum ama başka ne yapacağımı da pek bilmiyorum
  • Gerçekten harika görünüyor. Kendim kurcalamayı dört gözle bekliyorum
    Eşzamanlı eylemlere izin veren everyPlayer akış komutu olması sevindirici. Denediğim diğer masa oyunu framework’lerinde eksik olan bir özellikti
    [1]: https://docs.boardzilla.io/game/flow#everyplayer

  • Tüm örnek oyunlarda hata alıyorum
    Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)
    Stack trace şöyle
    su@https://www.boardzilla.io/build/_shared/chunk-ZEYFFM3P.js:16:114536
    Fs@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:9:128279
    Ch@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:11:180657
    Bir polyfill eklemek gerekecek gibi

    • Polyfill’i ekledim. Düzelip düzelmediğini bildirirsen iyi olur
    • Polyfill’i yakında ekleyeceğim