Şimdi Ara

Multiplayer oyunda, oyuncu bilgileri nereye ve nasıl kaydedilir ?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
29
Cevap
1
Favori
1.267
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Merhabalar. Diyelim ki ben oyunu yazdım bitti. Ama şu an sadece oyundan 2 tane açıyorum, oyuncular karşılıklı oynuyor. Peki biri kazandığında mesela kupası artacak. Bunu nasıl yapacağım bu bilgiyi nerede ve nasıl tutacağım ? Bunu ne zaman yapacağım ?

    Benim aklıma gelen tek şey txt dosyası oluşturup, satır satır oyuncu bilgilerini tutmak. Beni bir aydınlatırsanız :))



  • Valla henüz o kadar karmaşık bir kodlama yapmamış olsam da sorunuza cevap verebilmek için öncelikle hangi programlama diliyle çalıştığınızı ve hangi ortamda uygulama geliştirdiğinizi öğrenmemiz gerektiğini biliyorum.
    Siz detayları verin sonrasında benzer bir projede çalışan bir arkadaş varsa yorum yazacaktır zaten.
  • Server da tutulacak bu bilgi.
  • Genelde mysql uzerinde tutuluyor.
  • zwanzig kullanıcısına yanıt
    C# ile Unity'de yazıyorum. Şu an iki oyuncu bağlanıyor ve savaşıyorlar, kulelerine vuruyorlar. Benim sorum şu: Ben bu veri kaydetme işini ne zaman yapacağım ? Oyunda her şeyi bitirdikten sonra sunucu satın alıp mı yapacağım ? Yoksa en baştan yapabiliyor muyum ? Ve tabi ki nasıl yapıyorum ?
  • Veritabanı MySQL üzerinde tutulur.

    Oyunun online sistemi farklıdır veritabanı farklıdır. Oyun bittiğinde oyuncunun kazancağı veya kazandığı altın, skor gibi bilgileri veritabanına kaydettirebilirsiniz. Daha detaylı tutları var burada açıklamak uzun sürer.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 20 Temmuz 2019; 23:22:43 >
  • Şu videyo bakmayı bir dene belki yardımı olur: https://www.youtube.com/watch?v=SKbY-0zt2VE
  • yanard18 Y kullanıcısına yanıt
    Çok teşekkürler. Bir bakayım...
  • Yanlış sordum ben. Oyun bittiğinde değil, oyunu yazmayı bitirdiğimde mi yapacağım diye sormak istemiştim. Yani ben oyunu en son aşamaya getirdikten sonra mı başlamalıyım veri kaydetmeye ? Yoksa veritabanı öğrenmeye şimdiden başlamalı mıyım ?
  • Excalıburr E kullanıcısına yanıt
    Tabi burada daha kullanıcının google play store hesabı ile giriş yapıp verilerini oraya kaydetme var. Önce kullanıcının play hesabına nasıl giriş yapmasını sağlayabilirim onu sorayım ?
  • quote:

    Orijinalden alıntı: Excalıburr

    Yanlış sordum ben. Oyun bittiğinde değil, oyunu yazmayı bitirdiğimde mi yapacağım diye sormak istemiştim. Yani ben oyunu en son aşamaya getirdikten sonra mı başlamalıyım veri kaydetmeye ? Yoksa veritabanı öğrenmeye şimdiden başlamalı mıyım ?
    Play hesabına giriş yaptırtma şahsen ben play'e hiç bulaşmam bile achievementları bile düzgün çalışmıyor artık.

    1 site alıcaksın ve ona basit bir veritabanı kurucaksın. Unity PHP-MySQL bağlantısını araştır siteye veri kaydettirip, veri çekiyorsun hile yapılmasıda imkansız oluyor. Burada oyuncuya kullanıcı hesabı açtırabilirsin.

    İstediğin zaman başla baştan yaparsan daha doğru olur.

    Altta ki oyunumu inceleyebilirsin giriş kayıt olarak oyuncunun kıyafetini her şeyini kaydettiriyorum kullanıcıyahttps://play.google.com/store/apps/details?id=com.zkgames.apex.online.legends.strike
    (PHP - MySQL - Unity)



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 21 Temmuz 2019; 19:22:16 >




  • Oyunu oynadım süper olmuş bağımlılık yapıyor :D Kontroller biraz sıkıntılı sadece.

    Şimdi benim izlediğim multiplayer tutorial'da adam bir menü yapmış. Host butonu var birde connect butonu. İlk oyuncu host'a basıyor kendisi hem host hem client oluyor. İkinci oyuncu ona bağlanıp sadece client oluyor.

    Benim düzenlemem gereken anladığım kadarıyla şu: Benim host'um aynı zamanda client olmayacak. Doğru mudur ? Doğruysa nasıl bir düzenleme yapmam gerekiyor tam olarak ?

    Bu arada merak ettim sunucu, play hesabı vs. toplam gider ne kadar oluyor ? Ve ne kadar kazanıyorsunuz paylaşabilir misiniz ?
  • quote:

    Orijinalden alıntı: Excalıburr

    Oyunu oynadım süper olmuş bağımlılık yapıyor :D Kontroller biraz sıkıntılı sadece.

    Şimdi benim izlediğim multiplayer tutorial'da adam bir menü yapmış. Host butonu var birde connect butonu. İlk oyuncu host'a basıyor kendisi hem host hem client oluyor. İkinci oyuncu ona bağlanıp sadece client oluyor.

    Benim düzenlemem gereken anladığım kadarıyla şu: Benim host'um aynı zamanda client olmayacak. Doğru mudur ? Doğruysa nasıl bir düzenleme yapmam gerekiyor tam olarak ?

    Bu arada merak ettim sunucu, play hesabı vs. toplam gider ne kadar oluyor ? Ve ne kadar kazanıyorsunuz paylaşabilir misiniz ?
    Oyunun kendi multiplayer sistemi Photon veya UNET onu farklı tutuyoruz. Onlar zaten gerçek zamanlı multiplayer oluyor.

    Ek olarak oyunun bilgilerini veritabanına kaydettiriyoruz yani 2 farklı internet sistemi var. Birbirinden bağımsız bunlar.

    O oyunun sunucu gideri yok şu anda 100$ verdim 1 kerelik 5 yıl boyunca anlık 100 oyuncuya kadar destekliyecek. Anlık 100 oyuncuda baya zor milyon indirmesi yoksa oyunun. Photon planlarına bakabilirsiniz.

    Host veya Client olması önemsiz. Veritabanına bilgiyi hostun kaydettirmesi gerekmiyor herkes kendi scriptinden kaydedicek. Oyun Bitti fonksiyonu çalışınca kayıt işlemine başlayabilirsiniz.

    Nasıl bir şey yapmak istiyorsun bilmiyorum direk txt dosyasına şifreleyebilirsin çokta önemli bir bilgi değilse. Bu kolay yöntem ama zayıfı hile yapılabilir olmasıdır. Oyuncunun kupada hile yapması çokta önemli değil diyorsan (oyuncuların maks %1'i hile yapar)
    Direk normal save yöntemlerine başvurabilirsin.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 21 Temmuz 2019; 21:57:43 >




  • Unet kaldırılacakmış. Kalktığında ise sanırım yaptığın oyunu bir daha güncelleme şansın olmayacak. Olacak tabi ama çok şey değiştirmen gerekecek. Oyunu baştan yazmak gibi olacak diyorlar. O yüzden low level API ile yazıyorum ben. Yani kendi server ve client kodumu yazıyorum.
    Host butonuna basınca:

    Server s = Instantiate(serverPrefab).GetComponent<Server>();
    s.Init();

    Client c = Instantiate(clientPrefab).GetComponent<Client>();
    c.clientName = nameInput.text;

    c.ConnectToServer("127.0.0.1", 6321);


    Connect butonuna basınca:


    Client c = Instantiate(clientPrefab).GetComponent<Client>();
    c.clientName = nameInput.text;

    c.ConnectToServer(hostAddress, 6321);



    Böyle bir kod çalışıyor.

    Ben tam olarak anlamadım. Şimdi oyunu oynayan herkes bir client. Hiçbiri server değil. Peki oyunu 10 kişi oynuyor diyelim anlık. 1v1 olacak şekilde 5 oyun oynanıyor şu an. Ben server diye bir şey instantiate etmeyecek miyim ? Server hep açık olan bir şey olduğu için mantıklı aslında. Sonuçta bir kez server oluşturulacak ve tüm oyuncular sürekli ona bağlanıp duracak.




  • Excalıburr E kullanıcısına yanıt
    Sadece Photon kullandım diğer networkleri bilmiyorum.

    Photon lobi şeklinde çalışan bir multiplayer sistemi. 1v1 2v2 3v3 4v4 5v5 istediğini yaptırtabilir, oyuncuyu host ettirebilir, tüm dünyada istediğin yerden sunucu açabilirsin sadece parasını vererek.

    Lobi şeklinde çalışan bir multiplayer sistemi olduğu için direk connect atıyor, lobi yoksa lobi kuruyor kalanlarda direk bu lobilerden birine bağlanıyo.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 21 Temmuz 2019; 22:33:21 >
  • Anladığım kadarıyla Photon sadece bağlantı sağlıyor mesela 3v3 oynayacaklar bunların birbirine bağlanmasını sağlıyor. Ama bu oyuncuların konumlarını vs. senkronize ediyor mu ?
  • quote:

    Orijinalden alıntı: Excalıburr

    Anladığım kadarıyla Photon sadece bağlantı sağlıyor mesela 3v3 oynayacaklar bunların birbirine bağlanmasını sağlıyor. Ama bu oyuncuların konumlarını vs. senkronize ediyor mu ?
    Evet ediyor. Hatta direk Photon View koyduğunuzda playerın transformunu sürükleyin oluyor

    Onun dışında kendi scriptinide yazıcağınız ekstra kod ile o bilgileride oyuncular arası dağıtabiliyorsunuz.

    Tutorial & Ders videolarına bakarsanız daha iyi anlarsınız. Kullanımı gayet kolay mantığını kavradıktan sonra.



    < Bu mesaj bu kişi tarafından değiştirildi Okeanix -- 22 Temmuz 2019; 2:2:46 >
  • Merhaba bir iki aklima takilan soru var da mumkunse cevaplayabilirmisiniz.
    Bu 100 $ lik paket, sectigimiz bir uygulama icin surekli kalici degistirilemez mi oluyor yoksa hesabimizdan yeni oyun yapinca eskiyi iptal edip ona kullanabiliyormuyuz, herhangi bir limit var mi .?

    Mysql le veri kaydetme isini php ilemi yaptiniz ?
  • Photon ile oyun yazmak high level api'ye giriyor o zaman. Ya ben low level ile baya birşeyler yaptım. Photon öğrenip baştan mı başlamalıyım çünkü low level api'de böyle bir yerde takılınca kalıyorsun. Kaynak da yok doğru düzgün. Çok basit şeyler anlatıyorlar tutorial'da. Yayımlanan bir oyun tutorial'ı göremedim hiç low level api ile yazılan.

    Bu şekilde server nerden alacağım nasıl yapacağım onu da bilmiyorum. Ne yapmalıyım sizce photon mu öğrensem :/
  • quote:

    Orijinalden alıntı: Baxa

    Merhaba bir iki aklima takilan soru var da mumkunse cevaplayabilirmisiniz.
    Bu 100 $ lik paket, sectigimiz bir uygulama icin surekli kalici degistirilemez mi oluyor yoksa hesabimizdan yeni oyun yapinca eskiyi iptal edip ona kullanabiliyormuyuz, herhangi bir limit var mi .?

    Mysql le veri kaydetme isini php ilemi yaptiniz ?
    bu 100$ bir ID'ye kaydettiriyorsun. İstersen tüm oyunlarında aynı ID'yi kullan sana kalmış. Eski kalanı kullanabiliriniz adını değiştirip.

    Limit olarak şöyle 2 kere aynı paketi aynı ID'ye alamıyorsun ama 500 anlık kullanıcı daha aldığında 600 oluyor 500 değil o kullanıcı paketide ayrıca devam ediyor.
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.