Oyun geliştirme

Oyun motoruna giden yol

MKA Engine'e nasıl başladık: dört oyunu okumak, belirlenimciliği yasa saymak, aşama aşama ölçerek ilerlemek ve şu an neredeyiz.

İçindekiler

İlk yazımızda neden kendi büyük strateji motorumuzu yazdığımızı, ikincisinde bu kararın arkasındaki düşünceyi anlattık. Bu yazıda işin mutfağına giriyoruz: bir oyun motoruna nasıl başladık, hangi sırayla ilerliyoruz ve şu an neredeyiz.

Önce oyunları okuduk

Kod yazmadan önce bu türün en bilinen dört oyununun (Europa Universalis, Victoria, Crusader Kings ve Hearts of Iron) oyuncunun dokunduğu her sistemi tek tek inceledik. Nüfus, ekonomi, ticaret, diplomasi, savaş, karakterler, olaylar, haritalar. Her birine aynı soruyu sorduk: bu bir düzenek mi, yoksa bir oyunun kuralı mı?

Bu ayrım bütün projenin omurgası oldu. "Bir değer her gün nasıl hızlı ve doğru hesaplanır" sorusu motorun işidir. "Savaş nasıl ilan edilir, barış nasıl yapılır" sorusu oyunun işidir. Motora yalnız birden çok oyunun farklı kurallarla kullandığı, içeriksiz düzenekler giriyor. Kalan her şey oyunun ya da modların elinde.

Belirlenimcilik bir kural değil, yasa

Çok oyunculu bir strateji oyununda her oyuncunun bilgisayarı aynı dünyayı kendisi hesaplar; ağdan yalnız komutlar gider. Bu yöntemin tek şartı var: aynı başlangıç ve aynı komutlar, her makinede bit bit aynı sonucu vermeli. Bir bilgisayarda bir kuruş farklı çıkan vergi, birkaç yıl sonra iki oyuncunun bambaşka dünyalarda oynamasına yol açar.

Bu yüzden motorun çekirdeğinde ondalıklı sayı kullanmıyoruz; bütün hesaplar sabit noktalı sayılarla yapılıyor. Rastgelelik tek bir kaynaktan, tohumdan türetiliyor. Saat, dosya ya da ağ çekirdeğe giremiyor. Aynı testleri farklı işlemci mimarilerinde ve tarayıcıda çalışan sürümde koşup sonuçları karşılaştırıyoruz.

Adım adım, her adım ölçülerek

Motoru aşamalara böldük ve her aşamaya baştan bir çıkış ölçütü yazdık. Ölçüt tutmadan aşama kapanmıyor. Kabaca sıra şöyle ilerledi:

  1. Sayılar, rastgelelik ve verinin bellekte tutulma biçimi
  2. Varlıklar ve dünyanın durumu
  3. Komutlar, kayıt ve tekrar oynatma
  4. İçerik veritabanı ve diller
  5. Olaylar, çarpanlar ve yalnız değişeni yeniden hesaplayan altyapı
  6. Nüfus, ekonomi, diplomasi gibi sistemlerin ortak düzenekleri
  7. Mod barındırma ve geliştirici araçları
  8. Çok oyunculu oyun

Her aşamanın sonunda bir oyun gününün ne kadar sürede hesaplandığını ölçüyoruz. Hedefimiz on binlerce bölge ve milyonlarca nüfus biriminin olduğu geç oyunda bile bir günü birkaç milisaniyede hesaplamak.

Modlar birinci sınıf vatandaş

Bu türün ömrünü uzatan şey modlardır. Biz bir adım daha ileri gidip oyunun kendisini de bir mod olarak kuruyoruz. Bir mod içeriği yamayabilir, yeni bir sistem ekleyebilir ya da var olan bir sistemi tamamen kapatıp kendininkini koyabilir. Modlar güvenli bir kum havuzunda çalışıyor; bir mod oyuncunun bilgisayarındaki dosyalara erişemiyor.

Şu an neredeyiz?

Çekirdek, kayıt sistemi, mod arayüzü ve çok oyunculu altyapının ilk sürümü yazıldı ve testlerden geçiyor. Şu an yapay zekâ ve savaşın motora girecek ilkeleri üzerinde çalışıyoruz. Gerçek dünya haritasını oyunlara hazırlayan bir harita üretim hattı da motorla birlikte gelişiyor.

Henüz oynanabilir bir oyun yok ve bunu saklamıyoruz. Motor bitmeden oyuna geçmemek bilinçli bir karar. Temel sağlam olmazsa üstüne kurulan her şey bir gün çöker.

MKA Engine'i yakından takip etmek isteyenler için sitemize MKA Engine sayfasını ekledik. Yol ilerledikçe burada yazmaya devam edeceğiz.

Kaynaklar ve ilgili belgeler

Bunlar da ilginizi çekebilir