Oyun Dengesini Veri Tablosunda Tutulan Değerlerle Ayarlama

Oyun geliştirirken düşman hasarı, oyuncu sağlığı, ekonomi oranları gibi değerleri kodun içine sabitlemek bataklık gibi. Her ayarlamada yeniden derlemek zorunda kalırsın. Bunun yerine bu değerleri bir tabloda (CSV, JSON, Excel) tutup runtime'da yüklemek çok daha akıllıca.

Tabloda tutulan değerler sayesinde oyun oynarken, hatta canlı yayında, dengeyi anında değiştirebilirsin. Tasarımcılar kodu dokunmadan test edebilir, hızlı iterasyon yapabilir.

Adım 1: Veri Tablosunu Hazırla

Önce bir JSON dosyası oluştur. Örneğin balance.json:

1{
2"player": {
3"max_health": 100,
4"damage": 15,
5"attack_speed": 1.2
6},
7"enemy": {
8"max_health": 50,
9"damage": 8,
10"attack_speed": 0.8
11},
12"economy": {
13"gold_per_kill": 100,
14"gold_per_second": 5
15}
16}

Adım 2: Tabloyu Koda Yükle

Python örneğiyle başlayalım:

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import json
2
3class GameBalance:
4def __init__(self, filepath):
5with open(filepath, 'r') as f:
6self.data = json.load(f)
7
8def get(self, category, key):
9return self.data[category][key]
10
11balance = GameBalance('balance.json')
12player_damage = balance.get('player', 'damage')
13enemy_health = balance.get('enemy', 'max_health')
14
15print(f"Oyuncu hasarı: {player_damage}")
16print(f"Düşman sağlığı: {enemy_health}")

Çıktı:

1Oyuncu hasarı: 15
2Düşman sağlığı: 50

Adım 3: Simülasyonda Kullan

Bir savaş simülasyonu yazalım:

1class Character:
2def __init__(self, name, balance_data):
3self.name = name
4self.health = balance_data['max_health']
5self.damage = balance_data['damage']
6self.attack_speed = balance_data['attack_speed']
7
8def take_damage(self, amount):
9self.health -= amount
10return max(0, self.health)
11
12balance = GameBalance('balance.json')
13player = Character('Oyuncu', balance.get('player', None) or balance.data['player'])
14enemy = Character('Düşman', balance.data['enemy'])
15
16# Savaş
17for turn in range(5):
18enemy_health = enemy.take_damage(player.damage)
19player_health = player.take_damage(enemy.damage)
20print(f"Tur {turn+1}: Oyuncu HP={player_health}, Düşman HP={enemy_health}")
21if enemy_health <= 0 or player_health <= 0:
22break

Çıktı:

1Tur 1: Oyuncu HP=85, Düşman HP=35
2Tur 2: Oyuncu HP=70, Düşman HP=20
3Tur 3: Oyuncu HP=55, Düşman HP=5
4Tur 4: Oyuncu HP=40, Düşman HP=0

Şimdi balance.json dosyasını açıp düşman hasarını 8'den 5'e değiştir. Kodu yeniden derlemeden oyunu çalıştır, oyuncu daha az hasar alacak. Dengeyi ayarlamak bu kadar kolay.

Tableda tutulan değerler, oyun tasarımında hızlı feedback döngüsü oluşturur. Verileri sürüm kontrol sistemine koyabilir, ekip üyeleri aynı anda farklı parametreleri test edebilir.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz