Ulu Önder Mustafa Kemal Atatürk'ü aramızdan ayrılışının 88. yılında saygı, minnet ve özlemle anıyoruz.

Oyunlarda kayıt (save) sistemi tasarlamak

kaan.yildiz Mid 1 saat önce · 0 görüntülenme

Kayıt sistemi genellikle projenin sonuna bırakılır, sonra da oyunun her yerine dokunmayı gerektirdiği için en çok uğraştıran özelliklerden biri olur. Baştan birkaç kurala uymak işi çok kolaylaştırır.

Neyi kaydedeceğini belirle

Her şeyi kaydetmeye çalışma, oyunu yeniden kurmak için gereken en küçük veriyi kaydet:

  • Oyuncunun konumu, canı, envanteri, açılan yetenekler
  • Görevlerin durumu, açılan kapılar, toplanan nesneler (kimlikleriyle)
  • Ayarlar (ses, kontroller) genellikle ayrı bir dosyada tutulur

Ekrandaki her düşmanın animasyon karesini kaydetmen gerekmez. Bölümü yeniden yükleyip "toplanan nesneler listesinde olanları sil" demek çoğu zaman yeterlidir.

Veriyi oyun nesnelerinden ayır

Sahnedeki nesneleri doğrudan serileştirmek yerine sade bir veri yapısı oluştur:

{
  "surum": 3,
  "oyuncu": { "x": 412.5, "y": 88.0, "can": 74, "envanter": ["anahtar_kirmizi", "iksir"] },
  "bolum": "magara_2",
  "toplananlar": ["altin_017", "altin_018"],
  "gorevler": { "kayip_kedi": "tamamlandi" },
  "kayit_zamani": "2026-11-10T21:14:00Z"
}

Her kaydedilecek nesnenin sabit bir kimliği olsun (altin_017). Sahnedeki sırası ya da motorun verdiği otomatik kimlik, bölümü düzenlediğinde değişebilir.

Sürüm numarası ekle

Oyunu güncellediğinde kayıt yapısı değişecek. Dosyaya surum alanı koy ve yükleme sırasında eski sürümleri dönüştür:

yükle → surum 1 ise 2'ye çevir → surum 2 ise 3'e çevir → oyuna ver

Bunu yapmazsan güncellemeden sonra oyuncuların kayıtları bozulur, bu da en kötü yorumları getirir.

Bozulmaya karşı korun

  • Önce geçici dosyaya yaz, sonra yeniden adlandır. Yazma sırasında oyun çökerse ya da elektrik giderse eski kayıt sağlam kalır.
  • Bir önceki kaydı yedek olarak tut. Yeni kayıt okunamazsa yedeği yükle.
  • Yükleme sırasında hata olursa oyunu çökertme, kullanıcıya açıklayıcı bir mesaj göster.

Nereye kaydedilir?

Oyun klasörüne değil, platformun kullanıcı verisi klasörüne kaydet. Oyun motorlarının çoğu bunun için hazır bir yol sunar (Unity'de Application.persistentDataPath, Godot'ta user://). Oyun klasörüne yazma izni her sistemde olmayabilir.

Biçim seçimi

  • JSON: Okunabilir, hata ayıklaması kolay. Çoğu bağımsız oyun için yeterli.
  • İkili (binary) biçim: Daha küçük ve hızlı, ama hata ayıklaması zor.
  • Şifreleme: Hile yapılmasını tamamen engellemez, en fazla zorlaştırır. Tek oyunculu oyunda buna çok emek harcamaya değmez. Çok oyunculu oyunlarda ise önemli veri zaten sunucuda tutulmalı.

Erken başla

Kayıt sistemini ilk prototipten sonra, oyunun 2-3 temel sistemi oturduğunda kur. Her yeni özellik eklediğinde "bu kaydediliyor mu?" sorusunu sor. Sona bırakırsan bütün sistemleri geri dönüp değiştirmen gerekir.

0

0 cevap

Henüz cevap yok. İlk cevabı sen yaz.

Cevap yaz

Cevap yazmak için giriş yapmalısın.

Konu bilgisi
  • Açılış10.11.2026
  • Son etkinlik1 saat önce
  • Cevap0
  • Görüntülenme0
  • Beğeni0
Yeni konu aç