Unity webgl oyuna, oynandığı sitenin veritabanını bağlama ve üzerinde işlem yapma

Mert KARCI

Hectopat
Katılım
4 Kasım 2019
Mesajlar
13
Merhaba,
Üniversite ders projemde asp.net ve msql kullanarak bir senaryoda site tasarlayıp geliştirip veri tabanı ile işlemler gerçekleştirmem gerekiyor. Benim senaryomda, oyuncu siteye kayıt olup giriş yapıp sitedeki Unity webgl basit bir oyunu oynayarak en yüksek skoru elde etmeye çalışacak. Siteye kayıtlı oyuncular leaderboard sekmesinden diğer kullanıcıların kaç puan yaptıklarını görebilecek.
Yardımın gerektiği konu, bir firmadan aldığım hosta bu siteyi kuracağım ve o hosttaki msql Database'i oyuna entegre edeceğim. Oyun ilk çalıştığında sitedeki login olmuş kullanıcının bilgileriyle başlamalı. Bu kısımlarda hiçbir bilgim yok biraz araştırma yaptım unitywebrequest gibi şeyleri buldum. O eğitimlerde aradığım tam şeyi bulamadığım için buraya konu açmaya karar verdim.
 
Oyun içerisinden veritabanına bağlanma yapmamalısın ki bunu webgl üzerinde çalışan bir oyunda yapamazsın.
Bunun için socket veya normal API kullanacaksın. Senin bu isterinde API mantığı daha mantıklı duruyor.
Yapman gereken WebRequest üzerinden http istek atmak ve gelen dataları işlemek.

İstek atacağın adres belli aslında. WebGL olduğunu söylediğin için kendi host üzerinden gidecek yani;
HOST = "/";
Diyelim Webgl değil o zaman şöyle bir şey olurdu;
HOST = "https://server.blabla.com/";

Neyse çok uzatmadan login için ihtiyacın olan şöyle bir şey;

C#:
IEnumerator Login()
{
    UnityWebRequest request = UnityWebRequest.Get("/api/session");
    yield return request.SendWebRequest();

    if (!request.isNetworkError || !request.isHttpError) return; // Hata verdiğin ne yapacaksan onu yap.

    var loginRes = JsonConvert.DeserializeObject<LoginResponseDto>(request.downloadHandler.text);
    // loginRes değişkenini dilediğin gibi kullan. Bu obje içerisinde jwtToken, userId gibi değerler olabilir.
}

Aynı mantığı leadboard içinde yapabilirsin.

Asp tarafı da şöyle bir şey olur. (Kodsal hata olabilir. Mantık bu şekilde)
C#:
class ApiController {
    [HttpGet("/session")]
    public IActionResult GetSession() {
        var session = HttpContext.Current.Session;
        if(session == null) return Unauthorized();
        return new LoginResponse {
            // Buralar farklılık gösterebilir. Asp sürümü ve mimarine göre şekillenir.
            // Basit olsun diye sallıyorum böyle.
            jwtToken = session["token"];
            userId = session["user-id"];
        };
    }
}


Temel mantık bu şekilde. RestAPI kullanacaksın kısacası. Host olarakta "/" bu. Nereye yüklendiyse o host kabul edilir.
 

Yeni konular

Geri
Yukarı