Tanshaydar'ın Mekânı
Başka bir şey yok
Kategori: Oyun Geliştirme

Bir Oyun Geliştiricinin Günlüğü

29 Ocak Pazar günü İngiltere üzerinden üç ay önce almış olduğum bir freelance işi sonunda bitirmek istedim ve o sabah erken kalkıp, kahvaltımı yaparak işe koyuldum.

Öncelikle iş tanımı üzerinden geçeyim biraz. İki boyutlu (2D) bir oyunun programcılığı. Bana sprite’lar spritesheet’ler filan verilecek, ben oyunu programlayıp bu verilen asset’lerle seviyeleri oluşturacağım falan filan, bildiğiniz meseleler işte. Bir açıdan Neon Town’da ne yaptıysam o.
Sıkıntı şu ki, karakter sprite ve animasyonları Spine ile yapılmış ve benim Spine ile zerre tecrübem yok. Ha dokümantasyon vardır, şu vardır bu vardır, forumlarda youtube’ta filan dersler vardır dedim pata küte daldım. Ve günümüz başlıyor…

Koltuğa Yerleşme

Şimdi, sakın ola bunu küçük görmeyin. O koltuğa öylesine oturmak var, bir de bugün çok iyi çalışacağım, efsane çalışacağım, en iyi ben çalışacağım diyerek oturmak var.

Ayrıca benim koltuğum DxRacer Racing serisi. Dolar rabia olmadan baya önce, geçen sene başında almıştım. Neyse, yine bugün sağlam çalışacağım diyerek oturdum işte ben de. Motivasyon efsane!
Şuradan Spotify’ı da açayım bi hele…

Dokümantasyonlara Bakmak

Dokümantasyon okumak önemli. Ne ile uğraştığınızı bilmeniz, en azından fikir sahibi olmanız gerek. Ben de haliyle böyle yaptım…

Ama lanet olası Spine dokümantasyonunun bildiğin kendine faydası yok ya la!
Import et diyorsun, etmiyor. Sonra gidip arıyorsun bakıyorsun JSON formatında import edilmesi gerekiyor, e bana gönderilen dosyalar arasında var JSON formatı; ama okumuyor! Neymiş efendim, sonuna .txt uzantısı eklemek gerekiyormuş, hem de orjinal dosyayı da tutarak. Neyse, vardır bir bildikleri dedim, tatava yapmadan import edip geçtim.

E bu defa da animasyonlar arası geçiş, bunları kontrol etme, collider falan filan. Yok. Hiç yok.
Geçmiş tecrübeler üzerinden bir şeyler yaptım neyse ki… Ama hiçbiri istediğim gibi olmuyor.

Algoritma Çıkarma


Bakın burası çok önemli. Öyle sprite’ları import ettim, animasyonları gördüm deyince iş bitmiyor. Hadi sağa sola hareket ettirdiniz filan güzel; ama iş blending tree‘lere gelince aşırı acılı çiğ köfte yemiş hâle gelirsiniz.

O yüzden oturup tüm olası state‘lerin üzerinden geçtim. Mesela space tuşuna basılıyken hangi noktada nerede bir aksiyon ateşlenmeli (action fire), hangi durumlarda collision box’lar (çarpışma kutuları) hareket etmeli, animasyonlar override edilmeli. Yer çekimi hangi hareketlere etki etmeli falan filan. Bütün olası tuş kombinasyonları, bunların geçişlerini engelleme durumları gibi gibi gibi. Yani bildiğiniz dandik bir 2D karakteri animasyonları ile hareket ettirmek bile başa bela olabiliyor bazen.

Fizik döngüsü ile senkronize bir iş olmalı demiş miydik? Neyse bu algoritma çalışmıyor yenisini yazayım ben…

Hesap Vermek

Freelance iş yapıyorsunuz, deadline geçeli 2 ay olmuş… Şaka şaka, deadline yoktu. Ama adam o kadar süreden sonra meraklanır tabi. Siz de yaptığınız şeyleri göstererek içini rahatlatmalı, güveni tazelemelisiniz. Tabi yaptığınız kısım biraz tırt geliyorsa size hafif bir tırsma da geliyor, acaba ne der diye.

Bir de tabi tüm bilgisayarlı sunumların vazgeçilmez, az önce çalışyordu bu ya oluyor. Hıncınızı güzelim klavyenizden çıkarıyorsunuz. Tabi klavye size ne cevap veriyor ne de kendini savunuyor. Hayat size güzel lan.

O değil de adama bir de haftasonu build elinde demiştim. Çaktırmadan da bahane üretmeye çalışıyorum. Bilmiyorum, öğreniyorum, o yüzden uzadı diyemiyorum, yediremiyorum kendime.

Neyse adam beğendi yaptığım kısımları, hadi yine iyiyim.

Aile ile Telefon Görüşmesi

Sizi bilemem tabi; ama ben 14 yıldır evden uzakta yaşıyorum. Aile ile yapılan telefon görüşmeleri popülerdir bende. Haliyle Pazar günü görüşmeleri daha bir popüler oluyor. Hani haftanın kritiği filan. Ayrıca o çıkmazın içerisindeyken tanıdık ve güvenilir bir ses duymak da güzel. Tabi çalışmamak için daha iyi bir bahane de olamaz.

Ha, aileniz yaptığınız işleri biliyor ve bunlarla yakından ilgileniyorsa o zaman biraz sıkıntı olabiliyor. İşler ne âlemde? tarzında sorulara eski zamanların politikacıları gibi eeeee diyerek cevap veriyorsunuz. Sonra anlıyorlar çok üstünüze gelmiyorlar. Malum zaten stresli bir iş, normal yazılım geliştiriciliğinden çok farklı. Evet format atmayı biliyorum.

Bir de şu Spine’ı bilsem… neyse.

Çalışmaya Geri Dönüş, Algoritmaları Gerçekleştirme

Diğer bir deyişle implementasyon zamanı. Yazacağınız bin satır da olabilir, elli satır da. Fark etmez. Doğru bileşenleri (component) doğru yerde (FixedUpdate / LateUpdate / Delegate vs vs) kullanmak ve fizik kurallarını biraz eğip bükmek gerekiyor. Bir saat kadar üzerine düştükten sonra karakteriniz her sıçramada atmosfer dışına çıkıyor…

En güzeli ise animasyonlar arası geçişlerde saçmalayarak sizi trajikomik bir hale bırakması. Requirements’ta verilenler ile fiziksel olarak elinize ulaşanların farklı olduğundan bahsetmiş miydim?
Production sırasında değişiklik yapmak birçok IT çalışanı için kâbustur. Ha, oyun programcıları için zaten kâbus olmayan ne var ki?

Bi dakka ya, yürüme animasyonu niye durmuyor?

Motivasyonu Geri Toplamak

Freelance iş yapıyorsunuz, ve yurt dışına. Dolar rabia olmuşken vergileri düşünce bile çok lan! Dur biraz daha bakayım şu koda.

Hayattaki Yerini Sorgulamak

İşi bitiremezseniz zırnık alamayacağınızın ve vaktinizi boşa harcamış olacağınızın farkına varınca insan biraz daha ciddileşiyor. Gereksiz sekmeleri kapat, gaza getirici hafif bir müzik aç. Bırak ellerin klavye üzerinde dans etsin.

Çalışmıyor.

Kendini Başkalarıyla Karşılaştırmak

Elbetteki işe ara verip biraz kendinize vakit ayırmalısınız. E bu sırada da sizin konumunuzda olan başkaları neler yapıyor biraz bakmak lazım.
Frictional Games mi o? Vay arkadaş SOMA üzerine yeni bir oyuna mı başlamışlar?
Wadjet Eye Games mi o? Vay arkadaş Primordia’yı öven bir başka yazı mı? Kaç sene oldu lan!
TellTale Games mi o? Lan yeter istemiyorum artık yeni TWD, almayın şu yılın oyunu ödüllerini!

Böyle iş olmaz olsun.

Atom Fiziğine de Profesörlüğe de Lanet Etmek


Internal state‘lerin override edilmesi gerektiğini; ama loop flaginin aynı döngü içerisinde erişime kapatıldığını ve assign edilemediğini ne bir doküman, ne bir forum başlığı, ne de bir youtube videosu söylememiş…

Eee artık o raddeye geldi iş… Bilgisayar mühendisliğine de oyun geliştiriciliğe de lanet olsun!

Kısa süre sorna 28 yaşına girecek biri olarak Onedio tarzı tırt blog yazıları yazma tecrübemin çok az olduğunu fark ederek bu konuda daha istikrarlı bir çalışma yapmaya karar verdim.
İstikrar önemli.
Siz de çok tatava yapmayın paylaşın geçin.

2 şey demişler
  1. Benlen arkadaşlık kurmayı deneseydi bunların hiçbiri başına gelmezdi.

    Ziya 4 Şubat '17 tarihinde | Cevapla
    • Bunların hiçbiri derken işin içine freelance iş alma ve kendi başına çalışabilme disiplinine sahip olma dâhilse kalsın 🙂
      Ha yok, başladığım işi en kısa sürede en iyi şekilde bitirme becerisine sahip olabileceksem hemen arkadaşlık kurmayı denemek istiyorum 🙂

      Tanshaydar 5 Şubat '17 tarihinde |

Söz uçar yazı kalır