• 29-11-2022, 18:37:49
    #1
    Selamun aleykum, kelime oyunu yapmaya çalışıyorum. Benzer bir kaç fikrim daha var. Ama burada milyonlarca satır veriyi EN VERİMLİ şekilde nasıl kullanırım bir fikir arıyorum.

    Nedense bu konuda hiç gelişmiş bir tutorial yada örnek proje bulamadım. Hep giriş seviyesi eğitimler ki işime yaramıyor maalesef.

    Çalışan bir oyun yapabilirim ama en ideal, sağlam ve verimli yöntemi arıyorum. Bu kadar kelime oyunu var ama hangi mantıkla yaptıklarına dair bilgi bulamamak ilginç.

    Milyonlarca veri olacak. Yüzbinlerce Kelimeye sahip farklı diller, binlerce seviye datası vs...

    Değişiklik olduğunda uzaktan güncellenebilir olmasına da ihtiyacım var. Level editör kodlamayı da düşünüyorum.
    Ama değişiklik yoksa veya internet kapalıysa yerel olarak çalışması lazım.

    Bu sistemi sayısız oyun kullanıyor. Oyun açılışında veri değişimi veya yeni veri var mı kontrol sağlanıyor. Varsa eşitleme yapılıyor. Yoksa devam ediyor. Bu şekilde veri transferi en alt düzeyde korunuyor.

    Yerel veritabanı olarak sqlite düşünmüştüm. Fakat araştırdığım kadarıyla bunu uzaktan güncellemenin yolunu bulamadım. Redditte sqlite sadece yerel veritabanıdır online olarak kullanılamaz denilmiş.

    Realm, başlangıç için iyi ama gelişmiş durumlarda karışır denilmiş.

    Room (sqlite ara katmanı) kolay ama unitye adapte etmenin yolunu bulamadım. iOS için de desteklenmiyor galiba.

    Firebase için de veri çok fazla gibi geldi. Kotayı hemen doldurmak istemem. Ayrıca gerçek zamanlı çalışıyor sürekli. Local database kısmı sadece internet yokken.

    Txt, json, xml filan kullanmak çok mantıklı gelmiyor.

    Milyonluk bir dictionary oluşturmakta öyle.

    Ne tavsiye edersiniz? Bu tür büyük veri gerektiren oyunların hangi yöntemi kullandığını bulamadım bir türlü.

    Evet, yukarıdakilerle çalışan bir oyun yapılabilir de en verimli seçeneği arıyorum. Daha sonra değişiklik yapmak zor çünkü.

    En mantıklısı sqlite local database kullanıp, bunları uzak sunucuda başka bir veritabanından eşitlemek gibi duruyor. Ama bu ikisi için de hangi aracı kullanmalıyım? Veritabanı ve backend işlerinden pek anlamıyorum.

    Tavsiyeleriniz neler? Teşekkürler
  • 30-11-2022, 00:23:28
    #2
    Merhaba, şu şekilde bir şey düşünebilirsiniz. Uzak sunucudaki veritabanında database versiyonu sistemi gibi bir değer tutup yeni eklenen her kelime, level vs de bu versiyon değerine göre arka planda veriler sqlite içerisine aktarılabilir.Sürekli veritabanından veri çekmesi gerekmez, oyunun ilk girişinde kısa süreli bir splash ile bu değer kontrol edilir, ona göre yükleme vs yapılır. Ya da service ile oyun kapalıyken arka planda bu işlemi yaptırabilirsiniz orası size kalmış. Böylece sunucuya çok fazla yük binmez ve tasarruf sağlarsınız. Sürekli ve anlık bağlantıya ihtiyacınız olsaydı nosql bir veritabanına Node.js+mongodb ikilisi gibi tavsiye ederdim ama buna da pek ihtiyacınız yok gibi. Mysql ve buna bağlantı kuracağınız bir web servis(php, phyton vs hangisini biliyorsanız...) işinizi rahatlıkla görecektir. Naçizane tavsiyem bu olur.
  • 30-11-2022, 14:06:28
    #3
    gataman adlı üyeden alıntı: mesajı görüntüle
    Merhaba, şu şekilde bir şey düşünebilirsiniz. Uzak sunucudaki veritabanında database versiyonu sistemi gibi bir değer tutup yeni eklenen her kelime, level vs de bu versiyon değerine göre arka planda veriler sqlite içerisine aktarılabilir.Sürekli veritabanından veri çekmesi gerekmez, oyunun ilk girişinde kısa süreli bir splash ile bu değer kontrol edilir, ona göre yükleme vs yapılır. Ya da service ile oyun kapalıyken arka planda bu işlemi yaptırabilirsiniz orası size kalmış. Böylece sunucuya çok fazla yük binmez ve tasarruf sağlarsınız. Sürekli ve anlık bağlantıya ihtiyacınız olsaydı nosql bir veritabanına Node.js+mongodb ikilisi gibi tavsiye ederdim ama buna da pek ihtiyacınız yok gibi. Mysql ve buna bağlantı kuracağınız bir web servis(php, phyton vs hangisini biliyorsanız...) işinizi rahatlıkla görecektir. Naçizane tavsiyem bu olur.
    Evet hocam fikir de bu zaten. Konuda belirtmiştim bunları, Oyun başında sadece değişen veya yeni verileri indirip eşitlemek. Mesele hangi sistemi araştırıp kullanacağım aslında..

    Sadece değişen tabloları tesbit edebilmenin tek yolu da bildiğim kadarıyla versiyon bilgisi eklemek yada degistirilme tarihi eklemek. Sonra talep edince bunları filtreleyip indirmek.

    İşte asıl soru bu, Konuda belirttiğim yöntemler en iyi tercih mi, bunlar mümkün mü, mümkünse nasıl yapılır? Vs sorularının cevaplarını bilmiyorum.

    Bunun için en uygun sistem, araç şu şu olur vs diyen olursa onları hızlıca araştırmaya başlayacağım inşallah. Tercih çokken en iyi tercihi bulmak için hepsini öğrenme çabası konuyu dağıtıyor.

    Nosql bu projeye pek uygun olmaz zaten.

    Dediğim gibi hem yöntem, hemde araçlar konusunda tecrübeye dayalı görüşe ihtiyacım var. Çünkü benim veritabanı tecrübem yok. Fikirlerin var ama mümkün mü bilmiyorum. Teşekkürler