Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Save Sistemi ve Patch
#1
Question 
Merhabalar,

Aklımı kurcalayan bir soruyu iletmek istiyorum.

Örneğin; oyunun save objectinde 1 adet Struct verimiz var. (O struct içinde de başka structlar, değişkenler mevcut) Bu şekilde oyunu yayınladık. Daha sonra oyuna patch atmak istiyoruz fakat bu structın içeriği değişti, bazı alanlar silindi bazılarına yenisi eklendi. Örneğin oyuncu bir eşyanın kilidini açtı ve bu o save dosyasında tutuluyor. Fakat daha sonrasında yeni eşyalar ekledik diyelim save dosyasını silip tekrar yüklediğimizde eski eşyalarında kilidi tekrar kapanacaktır. 

Bu şekilde sorunlar oluşmaması için oyunu bozmadan mantıklı bir sistem nasıl tasarlanabilir?
Ara
Cevapla
#2
Save işinde structure maalesef bela, evet dediğin yöntem geçerli herşeyi tek struct içinde toplayıp kaydetmek ancak dediğin gibi structure içinde değişiklik yapıp güncellersen maalesef patlıyor, eski save dosyasını silinmezse direk bug olarak dönüyor geriye, en önemlisi baştan doğru structure kurmak, son çare (denemeden söylüyorum) yeni patch te eski save dosyasını alıp yeni structure ile karşılaştırmak, mevcut olanları yeniye işleyip yeniden kaydettirmek.
Ara
Cevapla
#3
Bunun için uygulanan yöntemler var. Sanırım ismine "versioning" deniyor. Sistemi şöyle özetleyim:
1. İki save game objectin olacak. Birinin içinde structın diğerinde de versiyon tutan bir değişkenin ile birlikte struct ı gösteren bir "slotname" yada id olacak.
2. Save işlemlerini yöneten ve kolaylaştıran yeni bir sınıf yaratacaksın. Bu bir singleton, uobject hatta actor bile olabilir. SaveObject sınıfından türettiğin yeni bir sınıfta uygundur. Game instance ta yapacağın yardımcı fonksiyonlar da kullanabilirsin.
3. Bu yeni yarattığın yardımcı class, içerisinde yapacağın fonksiyonlarla, sistem versiyon yönetimini gerçekleştirecek. Diyelim ki yeni bir versiyon ekleyeceksin. Version 6 diyelim. Bunun için bu yardımcı class ında 2 yeni  fonksiyon olacak. Birinci fonksiyon save zamanında versiyon numarasını kaydettikten sonra ona tekabül eden struct ı da save edecek. İkinci fonksiyon ise load zamanında eğer kayıt son versiyondaysa direk yükleme yapacak ancak daha önceki versiyonlardaysa onları load edip yeni versiyona dönüştürecek.
4. Böylece save sistemine her versiyon eklemek istediğinde bu iki fonksiyonda güncellemeler yapman gerekecek. 
Zaten çok sık olacak bir şey değil. Bir oyun geliştirme süreci için 6 ya da 7 kere değişiklik yapmak istesen, her seferinde bu fonksiyonları güncellediğinden sana en fazla ekstra 8 10 saate mal olacaktır toplamda.
Ara
Cevapla
#4
Versiyon kontrolü ile bir yapı tamamladım. Şimdilik çalışıyor. Sadece istediğim verileri güncelliyorum. Bazı verileri yine kullanıcının save dosyasından çekiyorum. Bir şeyler silinmedikçe bu şekilde bir yapı gelecekte sorun çıkarmayacak gibi duruyor. 

Sonuç  Smile 

thubssn.JPG
Ara
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Q ve E yle eğilme sistemi FreSTT 3 33 27-05-2023, Saat: 15:31
Son Yorum: serhatwxe
  AI Sistemi hk mrtcnaslnts 5 148 16-03-2023, Saat: 10:43
Son Yorum: omer.hatay
  [ACEMİ SORUSU] Slot sistemi Mustafa0203 2 126 22-02-2023, Saat: 19:25
Son Yorum: Mustafa0203
  AI Sistemi mrtcnaslnts 3 154 30-01-2023, Saat: 22:46
Son Yorum: erginegider
  Matcmaking sistemi mrtcnaslnts 6 396 03-12-2022, Saat: 00:57
Son Yorum: Cnrtnbl
  [ACEMİ SORUSU] Aktor (Save ve Load Edilmiyor) dgnsparta 4 231 21-08-2022, Saat: 16:33
Son Yorum: dgnsparta
  [ACEMİ SORUSU] SaveGame Sistemi VictorLazeranka 3 449 23-03-2022, Saat: 22:28
Son Yorum: VictorLazeranka
  YAPAY ZEKA MÜŞTERİ SİSTEMİ yusufcnyilmaz 3 766 26-06-2021, Saat: 12:10
Son Yorum: emin2045
  Multiplayer Bölge Ele Geçirme Sistemi MR Studio 10 1,946 24-02-2021, Saat: 22:03
Son Yorum: MR Studio
  Çalışmayan puan sistemi fatih789 1 573 06-02-2021, Saat: 17:24
Son Yorum: nonlinear

Hızlı Menü:


Konuyu Okuyanlar: 4 Ziyaretçi

Unreal Engine Türkiye

This forum is community driven and supported by voluntary community members. It has nothing to do with Epic Games.

Bu site sadece destek amaçlıdır. Epic Games ile bir ilgisi yoktur.