Oyun Geliştirme

KILLSTREAM

Geliştirme Aşamasında

Distopik bir yayında geçen, 2–6 oyunculu bir parti oyunu — Steam için geliştirme aşamasında.

Rol
Proje Lideri · Oyun Tasarımı & Geliştirme
Ekip
3 kişilik ekip
Yıl
2026
Motor
Unity · C#
Araçlar
  • Unity 6
  • C#
  • URP
  • FishNet
  • Steamworks.NET
  • Unity Localization
  • Timeline
  • Figma
  • GitHub
  • VS Code
  • Ağ altyapısını kurdum — Steam üzerinde FishNet, doğrulanan Steam kimliği, lobiler ve yeniden bağlanma
  • Mini oyun framework'ünü tasarladım — tanım, yaşam döngüsü ve sonuç sözleşmesi; ağ altyapısından bağımsız
  • Run katmanını kurdum — run koordinatörü, set sıralamalarına dayalı puanlama ve idempotent bir skor defteri
  • Giant Dwarf ve Assembly Memory'yi geliştirdim; Steam üzerinden çevrim içi oyun testlerini yönettim
  • Teknik yönü belirliyorum; tasarım, paketler ve sürümlerde son söz bende
İçindekiler

Bağlam

KILLSTREAM, bir mini oyun kataloğu etrafında kurulu, 2–6 oyunculu bir parti oyunu; Unity ile PC için geliştiriliyor ve Steam’de yayımlanmayı hedefliyor. Oyunu üç kişi yapıyoruz: ben projeyi yönetiyor, hem tasarımda hem geliştirmede çalışıyorum; Baran oyun tasarımcısı ve sanata liderlik ediyor; Ozanay ise ikinci geliştirici ve ilk üç mini oyundan birini de baştan sona üstleniyor.

Oyun hâlâ geliştirme aşamasında olduğu için kaynak kodu ve asset’ler herkese açık değil. Bu sayfa oyunu ve arkasındaki sistemleri göstermek yerine anlatıyor.

Oyunun çıkış noktası distopik bir yayın. Ultra zenginlerin eğlenceye ihtiyaç duyduğu bir gelecekte, on sekiz yaşını geçmiş erkekler her yıl düzenlenen bir kuraya dahil ediliyor; adın çıkarsa, kabul etsen de etmesen de canlı yayındasın. Program kendini parlak ve enerjik diye pazarlıyor — oyun ise onu yarışmacının gerçekte yaşadığı hâliyle, kasvetli bir cyberpunk tonunda gösteriyor.

Elevator pitch: zenginler için eğlenceye dönüştürülmüş bir makine partisi.

Oyun

Bir oturum, ekrandaki bir sunucunun yönettiği kısa mini oyunlardan oluşan bir run’dır. Her mini oyun birkaç set üzerinden oynanır; her set her oyuncu için bir sıralama üretir ve bu sıralamalar ortak bir skor tablosunda puana dönüşür. Amaç tek bir mini oyunu kazanmak değil — yayının tamamını zirvede bitirmek.

İlk üç mini oyun, hepsi 2–6 oyuncu için:

  • Giant Dwarf — bir refleks oyunu. Sunucu yukarı ya da aşağı der; arkasındaki bir televizyon ise bu komuta uyman mı yoksa tersini yapman mı gerektiğini söyler. Zamanlamayı kaçırırsan elenirsin ve tepki süresi giderek kısalır.
  • Assembly Memory — bir hafıza ve görsel arama oyunu. Makine parçaları sergilenir, ardından tek bir nesnede birleştirilir; her oyuncu, süre dolmadan dağınık bir çalışma tezgâhından doğru parçaları doğru sayıda bularak seti yeniden kurmak zorundadır.
  • Chair Grab — spot ışığı altında sandalye kapmaca. Müzik çalarken sandalyeler ortadaki bir platformda döner; müzik kesildiğinde herkes bir sandalye kapmak için koşuşturur — rakibini itip yoldan çekmek de serbest.

Rolüm

Projeyi yönetiyorum ve iki geliştiriciden biriyim; teknik yön, paketler ve sürümler konusunda son karar yetkisi bende. Şimdiye kadar geliştirdiklerim:

  • Ağ ve Steam katmanı — Steam üzerinde FishNet transport’u, doğrulanan Steam kimliği ve bir oyuncu kaydı (player registry), lobi oluşturma/host etme/katılma, eşler arasında sahne akışı ve aynı oyuncu kimliğini geri getiren bağlantı kopması → yeniden bağlanma
  • Mini oyun framework’ü — tanım ve onun Editor doğrulaması, yaşam döngüsü ve sonuç sözleşmesi ve bir mini oyunu yüklemeden temizliğe kadar götüren koordinatör; hepsi ağ altyapısından bağımsız tutuldu
  • Run katmanı — production run koordinatörü, set sıralamalarının birleştirilmesi, saf bir sıralama → puan politikası ve idempotent bir skor defteri; bunlar önce sahte sonuçlarla çalışan, üç mini oyunluk yerel bir çekirdek döngüyle kanıtlandı
  • Çekirdek sistemler — oyun durum makinesi, deterministik rastgelelik kaynağı, composition root ve başlangıç sırası; ayrıca yerelleştirme, ses ve ara sahne adaptörleri
  • Mini oyunlar — Giant Dwarf ve Assembly Memory; çalışma zamanı kurallarından ağ adaptörlerine, sunum katmanlarına ve oyun testi araçlarına kadar
  • İlk oynanabilir sürüm (first playable) arayüzü — kalıcı UI yönlendiricisi; giriş, lobi, skor ve skor tablosu ekranları; ve UI yönü için bir Figma çalışması
  • Test altyapısı — ortak fixture’lar ve fake’ler; her sistemin önünde kapı görevi gören EditMode ve PlayMode test paketleri

Tasarım Sütunları

Her mini oyunun ölçüldüğü beş sütun:

  1. Kolay anlaşılır — bir mini oyun anında okunabilmeli; karmaşık mekanik yok
  2. Basitken bile eğlenceli — basit kurallar sorun değil, sıkıcı olanlar sorun
  3. Oyuncular etkileşir — oyuncular arasında manipülasyona ya da iş birliğine alan var
  4. Kararında kaos — rastgelelik, eğlenceli kaldığı sürece memnuniyetle karşılanır
  5. Rekabetçi — puanlama rekabeti canlı tutmalı

Hedef, 16 yaş ve üzeri oyuncular için hafif rekabetçi bir parti oyunu; arkadaşlarla oynamak ve klip olarak kesildiğinde de etkisini koruyan türden anlar için tasarlandı.

Mimari

Burada en çok önemsediğim şey, bir mini oyunun ağ altyapısının nasıl çalıştığını bilmek zorunda olmaması. Framework bir mini oyunun ne olduğunu tanımlıyor — bir tanım, bir yaşam döngüsü ve bir sonuç — onun etrafındaki her şey ise koordinatöre ait: oyun sırası, puanlama, sahne geçişleri ve oturum akışı. Ağ altyapısı bir adaptörün arkasında duruyor; böylece bir mini oyun, çok oyunculu kısma hiç dokunmadan önce yerelde geliştirilip test edilebiliyor.

Her mini oyun aynı ayrımı izliyor: server tarafında çalışan saf bir kural katmanı, ayrı bir ağ adaptörü ve en üstte bir sunum katmanı. İlk üç mini oyunun üçü de bu şekilde, iki farklı geliştirici tarafından yapıldı ve ikimizden hiçbiri onlara uydurmak için framework’ü değiştirmek zorunda kalmadı. Üç kişilik bir ekip için >30 mini oyunluk bir kataloğu makul kılan kısım da bu — her yeni mini oyun, yeni bir entegrasyon problemi değil, bir sözleşmeye karşı yazılmış içerik.

Puanlama da aynı şekilde ortak. Bir mini oyun yalnızca her sette kimin kaçıncı olduğunu bildiriyor; bu sıralamaları puana çevirmek, beraberlikleri çözmek ve set ortasında oyundan düşen bir oyuncuyu ele almak tek bir ortak politikanın işi. Böylece skor tablosu, hangi mini oyundan gelirse gelsin aynı anlamı taşıyor.

Oyun Testleri

İlk oyun testleri Steam üzerinden, ayrı makinelerde yapıldı; oyuncular üçümüzdük. En net ders Giant Dwarf’tan çıktı: host her istemcinin eğilip doğrulduğunu görebiliyordu, ama istemciler kendi karakterlerinin hareket ettiğini göremiyordu. Sebep, görsel durum paketindeki bir boyut kontrolüydü: kontrol sabit bir genişlik varsayıyordu, oysa transport küçük değerleri daha az bayta sıkıştırıyordu; bu yüzden tamamen geçerli paketler istemcide çöpe atılıyordu. Düzeltme tek bir sayıydı; daha faydalı kısım ise hatayı önce iki ila altı oyuncuyu kapsayan otomatik bir testte yeniden üretmekti — böylece sessizce geri dönemiyor.

Chair Grab da kendi başına birkaç çevrim içi turdan geçti ve bu turlar yalnızca kodu değil tasarımı da değiştirdi: dış zemin artık dönmüyor, ıskalanan bir itiş artık başarılı bir itiş kadar maliyetli ve yere düşürülen bir oyuncu ayağa kalkana kadar tekrar vurulamıyor.

Şu Anki Durum

Üretim hedefi, otuzdan fazla mini oyundan oluşan ve oturum başına on tanesinin oynandığı bir katalog. Mevcut kilometre taşı, tüm döngüyü uçtan uca kanıtlayan üç mini oyunlu bir ilk oynanabilir sürüm (first playable): Steam lobisi → mini oyunlar → puanlama → skor tablosu. Sayfanın en üstündeki oynatma listesinde ilk oyun testimiz ve Deep Jam 2026 için hazırladığımız pitch var — ikisi de devam eden çalışmalar, final sanat değil.

  • Üç mini oyunun hepsi geliştirildi ve oyun testi değerlendirmesinde
  • Çekirdek döngü yerelde uçtan uca çalışıyor ve ağ katmanı ayakta: Steam kimlik doğrulaması, lobiler ve yeniden bağlanma çalışıyor
  • Şimdiye kadarki çevrim içi testler iki ila üç oyuncuyu kapsadı; ikiden altıya kadar tam oyuncu matrisi henüz doğrulanmadı
  • Sanat yönü şekilleniyor — posterize renkler, dithering, CRT parazitleri ve oyuncuların üzerinde neon dış çizgilerle retro, yayın glitch’i estetiğinde bir görünüm — ve ilk oynanabilir sürümün arayüzü tasarlandı, şu an oyuna bağlanıyor
  • Standalone build’ler, Editor’da hiç görünmeyen bir ağ hatasını ortaya çıkardı; bunun izini sürmek, ilk oynanabilir sürümü başkalarının eline ulaştırma sürecinin bir parçası

Tasarım çalışmasını bilinçli olarak kapılı ilerletiyoruz: bir mini oyunun tasarım dokümanı tamamlanıp onaylanmadan o mini oyun geliştirilmiyor; böylece kimse aslında henüz verilmemiş bir karara göre bir şey inşa etmiyor.

Değerlendirme

KAM’dan çıkardığım ders, hardcode etmeyi reddettiğim sistemlerin oyuncularla temastan sağ çıkanlar olduğuydu. KILLSTREAM’de bunu sonda keşfetmek yerine en baştan uyguluyorum — framework, puanlama sözleşmesi ve ağ adaptörü, içlerinden geçirilecek tek bir mini oyun bile yokken sözleşme olarak yazıldı.

Üç mini oyun sonra sözleşmeler ayakta kaldı: ikinci bir geliştirici bunların üzerine bir mini oyun kurdu ve hiçbir şeyin değiştirilmesine gerek kalmadı. Açık soru, bu disiplinin gerçek bir çıkış tarihi baskısı ve bunun on katı büyüklüğünde bir katalog altında da korunup korunmayacağı. Bu, hâlâ öğrenmekte olduğum kısım.