Ugur

Yeni üye
19 Ocak 2016
2
0
0
Belirtilmemiş
İyi günler. Bir kaç gündür araştırmalar yapıyorum. C# bilgim oldukça var. C++ 'ın pointer olayınında mantık ve kullanım mantığını biliyorum. UE4 de database olayları nasıl dönüyor ? Bir class yaratıp ondan miras alarak bir yere bir şekilde bir şeyler mi yazdırıyoruz yoksa örneğin MS SQL veya MySQL gibi database lara mı bağlıyoruz ? ve bu işlemleri VS de mi yoksa UE4 de mi yapacağız ?
 
Bunun cevabı nasıl bir veritabanı oluşturmak istediğine göre değişir.

Öncelikle web tabanlı ve dışarıya bağımlı olarak değişen veriler üzerine çalışıyorsan, SQL veritabanları kullanılabilir. Veritabanlarının söz konusu olduğu yer buna göre değişir. Veriler dışarıya bağımlı olarak değişmiyorsa veritabanı kullanmaya gerek yoktur. Örneğin Unreal Engine Turkiye kullanıcılarının açmış olduğu konuları oyun içerisinde kullanmamız gerekiyorsa; mevcut veritabanındaki verileri belki güvenlik ve başka nedenlerle bir webservis de yazarak kullanabiliriz. Veritabanına doğrudan erişim pek tavsiye edilmez. SQL veritabanlarına doğrudan bağlanmak için hazır kütüphaneler bulunmamakla birlikte örneğin MySQL için mevcut C++ kütüphaneleri UE4 C++ projesi içerisinde rahatlıkla kullanılabilir. Yine bir webservis kullanımı mevcut ise "FHttpModule" kullanılarak http istekleri oluşturulabilir.

Eğer bahsettiğin veritabanı çoğunlukla oyun içinde kullanılıyorsa; örneğin RPG Item Database yada prosedürel bir içerik için veri tutmak ise durum daha farklı ve detaylı.

Aşağı yukarı nasıl bir amaçla kullanılmak istendiği açıklanırsa daha detaylı bilgi verilebilir.
 
cahitburak' Alıntı:
Bunun cevabı nasıl bir veritabanı oluşturmak istediğine göre değişir.

Öncelikle web tabanlı ve dışarıya bağımlı olarak değişen veriler üzerine çalışıyorsan, SQL veritabanları kullanılabilir. Veritabanlarının söz konusu olduğu yer buna göre değişir. Veriler dışarıya bağımlı olarak değişmiyorsa veritabanı kullanmaya gerek yoktur. Örneğin Unreal Engine Turkiye kullanıcılarının açmış olduğu konuları oyun içerisinde kullanmamız gerekiyorsa; mevcut veritabanındaki verileri belki güvenlik ve başka nedenlerle bir webservis de yazarak kullanabiliriz. Veritabanına doğrudan erişim pek tavsiye edilmez. SQL veritabanlarına doğrudan bağlanmak için hazır kütüphaneler bulunmamakla birlikte örneğin MySQL için mevcut C++ kütüphaneleri UE4 C++ projesi içerisinde rahatlıkla kullanılabilir. Yine bir webservis kullanımı mevcut ise "FHttpModule" kullanılarak http istekleri oluşturulabilir.

Eğer bahsettiğin veritabanı çoğunlukla oyun içinde kullanılıyorsa; örneğin RPG Item Database yada prosedürel bir içerik için veri tutmak ise durum daha farklı ve detaylı.

Aşağı yukarı nasıl bir amaçla kullanılmak istendiği açıklanırsa daha detaylı bilgi verilebilir.

Şuan için yeterli bir cevap aldım. Generic bir yapı öğrenmeyi düşünüyorum, yani hem içe bağlı veya içe bağlı olmayan bir yapının opsional bir şekilde Visual Studio da ayarlaya biliyorsak Entitty Framework yapısının verdiği gücü kullanarak programı kuvvetlendirmeyi düşünüyorum. Fakat, şuan için bunlara girişmeyeceğim. En azından ilk etap için bir txt belgesinde basit bir yapı tutarak okutabilirim.
 
Ugur' Alıntı:
Şuan için yeterli bir cevap aldım. Generic bir yapı öğrenmeyi düşünüyorum, yani hem içe bağlı veya içe bağlı olmayan bir yapının opsional bir şekilde Visual Studio da ayarlaya biliyorsak Entitty Framework yapısının verdiği gücü kullanarak programı kuvvetlendirmeyi düşünüyorum. Fakat, şuan için bunlara girişmeyeceğim. En azından ilk etap için bir txt belgesinde basit bir yapı tutarak okutabilirim.

İşte tam da bunun için ".txt" yerine "FTableRowBase" yapısından kalıtım almış bir yapı tanımlayıp, "Data Table" kullanabilirsin. Kod içerisinde aşağıdaki gibi alanlar tanımladığında "Content" kısmına "Data Table" eklediğinde bu yapı kullanılır hale gelecektir.

Kod:
struct FUserData: public FTableRowBase
{
    GENERATED_USTRUCT_BODY()


public:

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = User Database) FString UserName;
    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = User Database) int32 Age;
    //...


public:

    FUserData()
        : Age(0)
    {
        UserName = "Unnamed";
    }
}


Yüzlerce, binlerce kopyası olmayan farklı çeşitlere sahip veriler için de "Data Asset" öneririm. O da benzer şekilde çalışmakta. Ancak tekil veri örnekleri oluşturmak için kullanılıyor.

Kod:
struct FUserData: public FDataAsset
{
    GENERATED_USTRUCT_BODY()


public:

    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = User Database) FString UserName;
    UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = User Database) int32 Age;
    //...


public:

    FUserData()
        : Age(0)
    {
        UserName = "Unnamed";
    }
}

UE4 içinde Entity Framework kullanmayı bekleme. Hem (pek) mümkün değil hem de gereksiz.