Tanshaydar'ın Mekânı
Başka bir şey yok
Kategori: Başlık, White Night

White Night Şimdi Steam Workshop’ta

Kendim bile hatırlamakta zorlandığım için çoğunuzun hatırlamayacağına emin olmakla beraber, 2011’de Amnesia: The Dark Descent için bir tam çeviri modu yapmıştım White Night adında. Sıfırdan bir hikâye ve o dönem pek mümkün olmayan aravideo teknikleriyle birlikte, modern dönemde geçmesiyle de oldukça ses getirmiş, birçok siteden ve editörden büyük övgüler almıştı. Hatta Frictional Games tarafından henüz yayınlanmadan önce en büyük potansiyel, yayınlandığı yılın sonundaysa ModDB editörleri tarafından da yılın en iyi tek oyunculu modu olarak seçilmişti. Bunların arasında benim kişisel favorim GameFront’un verdiği Silent Hill in FPS övgüsü olmuştu ki herhalde ömrüm boyunca bir daha böyle bir övgü almadım.

Tabii o vakitlerden bu vakitlere dişe dokunur yeni bir şeyler yapmayınca sadece eskilerden tanıyanlar ve “aga şu oyuna da Türkçe yama yapar mısın” diyenler kaldı. Tanshaydar mı? Hani şu Amnesia’lara çeviri yapan? denmesi bile bir noktada iyi, çünkü onun da öncesinde Amnesia çıkmadan önce yaptığım tahşidatlara bile bir sürü laf gelmişti. (Sonra Amnesia iyi patlayınca herkes bir anda fanı oldu.) Neyse. Beni oyun geliştirme dünyasına gerçek ve ciddi anlamda sokan oyun Amnesia: The Dark Descent’tir ve rüştümü ispatladığım ilk işim de White Night’tır.

Çok uzatmadan, White Night Steam Workshop’ta yerini aldı. Sisteminizde Amnesia: The Dark Descent kuruluysa abone olup indirebilir ve Amnesia içerisinden açabilirsiniz.

Yazının bu kısımdan sonrası Steam Workshop desteği gelene kadar ve dahi sonrasında gelişen süreçle alâkalı ıvır zıvır tecrübelerim, anılarım, anlatmak istediklerim, ve genel boş muhabbetimden ibarettir. İlgilisi için enteresan olabilir.

Gelelim günümüze. Gariptir ki Frictional Games, 2 Temmuz’da Amnesia: The Dark Descent için Steam Workshop’a Custom Story desteği getirdi. Ben de “vay be, White Night’ı bi paketleyip koysam mı acaba?” diye düşündüm; çünkü White Night’ı yaptığım dönemde “isolated full conversion” diye bir muhabbet yoktu ve yüklenmesi, çalıştırılması bazıları için zulümdü. Yani benim dosyalarım oyunun dosyaları ile karman çorman hâle geliyor, modu kaldırmak istersen kaldıramıyorsun, başka bir modla beraber oynamak istesen oynayamıyorsun, fi tarihinden beri girmediğim ModDB sayfasında millet sayıp sövmüş falan filan… Bir ara Desura vardı otomatik mod yükleme ve kaldırma yapıyordu. Şimdi Epic Games Store öven gençler hatırlamaz, Steam’in monopolisine karşı tam bir bağımsız geliştirici dostu bir sistemdi. Ah, nerede o eski günler… Neyse, Desura kapanalı çok oldu. Ben de zaten dönüp bakmadım hiç White Night’a bugüne kadar.

Bu Custom Story muhabbetini görünce gittim tüm oyun dosyalarını tek klasör altında toplayıp güzelce paketledim. O arada oyuna gelen güncellemelerle zaten çalışmaz hâle gelen ayar dosyalarını elden geçirdim, bahaneyle bir iki tur da açıp başlangıcı oynadım. Sesler gelmiyor, altyazılar açılmıyor filan, bir dünya uğraş dur düzenlemek için. Sonra bir ara Fransızca çeviri yapıp bana gönderen arkadaşın çevirisini bulup onu da içine koydum. Tam Steam Workshop’a yükleyececeğim, ne göreyim? Sadece “custom story” için çalışıyor, “total conversion” çalışmıyor. Elimde öyle kalakaldı. Ben de boş durmasın bari deyip GitHub‘a yükledim. Sanki ne işe yarayacaksa?

White Night’ın Steam Workshop’a yüklenmiş hâli, tüm kaynak dosyaları ile birlikte GitHub‘ta.

Tabii hazır paketlemiş ve Isolated Full Conversion (IFC) hâline getirmişken ModDB’ye de yükledim ki ne göreyim, biri “keşke bu mod IFC olsaymış” yazmış birkaç gün öncesinde. Ben de “isteyenin bir yüzü kara” diyerek cevap verdim. Zaten Reddit’te, Steam’de, ModDB’de filan Amnesia: The Dark Descent’a gelen 1.3 güncellemesi ile birlikte benimki gibi eski modların çalışmadığına dair açılmış başıklar vardı. Arada onları da eylemiş, oyunun son hâli olan 1.5 ile uyumlu çalışır hâle getirmiş oldum.

Ask and ya shall receive!

Bilmeyenler için açıklayayım, Amnesia: The Dark Descent 13 yıl önce çıktığında millet kendi hikâyelerini yapabilsin diye mod araçları yayınlamıştı; ama oyunun ana menüsünden girip seçiliyordu bu hikâyeler ve oyuna yeni bir harita eklemek dışında pek bir şey yapamıyordunuz. Özellikle kendi menünüzü, envanterinizi, hele hele gaz lambasını değiştirmeyi filan unutun yani. White Night gibi oyunu baştan sona makyajlayıp sanki sıfırdan yeni bir oyunmuş gibi yapabilmek için çok daha geniş ölçekli bir değişikliğe, “custom story” sisteminin izin vermediği ayar dosyalarını düzenlemeye gerek vardı. White Night için yapmak istediklerim, hele ki asıl büyük değişikliklerden biri olan gaz lambasını el feneri ile değiştirmem, sadece “total conversion” ile mümkündü, ben de öyle yapmıştım. Ama 13 yıl sonra Workshop desteği gelen oyuna bunu değişikliklerimi yükleyemiyordum, çünkü benimkisi bir Custom Story değil, bir Total Conversion‘dı.

Hâlen kafanızda canlanmadıysa, Half Life 2’ye bir harita yapmak bir custom story; ama Half Life 2’yi alıp bunu Portal yapmak bir total conversion.

Motor aynı, arka planda çalışan sistem genel itibariyle aynı, asset’lerin çoğu aynı; ama oyun bambaşka.

Ben de tabii “neyse, en azından izole etmiş oldum” diyerek güncellemeleri GitHub’a yolladım ve peşini bıraktım.

Sonra hiç beklemediğim bir şey oldu, Frictional Games’in ana programcısı Luis bana e-posta attı. Dedi ki “hacı şimdi custom story desteği getirdik ya steam workshop’a, hah işte ben ona total conversion desteği de getircem. Test etmek için de White Night’ı kullanıyorum, şimdilik çalışıyor gibi duruyor. Bak Steam’de beta kanalına bir güncelleme attım, sen de gir dene, hatta istersen yayınlarsan güzel olur” dedi.

Ben de dedim “şahane olur, zaten izole edilmiş bir tam çeviri moduna çevirmiştim“.

Bu konuşma geçeli 2 ay oldu.

Ben önce bir kere izole ettiğim paketi aldım. Sonra yok efendim Custom Story resmi lazım, yok efendim Workshop resmi lazım. Yok açıklaması lazım, yok yazarı lazım filan derken deneye yanıla yüklemeyi başardım. Sonra bir baktım, ne açıklama gözüküyor, ne White Night açılınca dil seçilebiliyor, ne değiştirilen dil ayarı uyarlanıyor. Baya bildiğin mantar bu.(Çok aşırı bir inside joke)

Luis’e dönüş yaptım, dedim böyle böyle. Tamam dedi, bana bu ve bununla alâkalı birkaç geri dönüş oldu dedi, bunları düzelteceğim dedi, sonra yine ortadan kayboldu. Tatile çıkmış adam. E hakkı tabii. Sen sürekli büyük ses getiren oyunların moturunun ana programcısısın, hakkındır.

Neyse bunlar düzeldi, ben de düzenlemeleri yaptım, yükledim. Çalışıyor gibi. Tek sorun, White Night içerisinden dil seçince aktifleştirebilmek için oyunu yeniden başlatmak lazım. O da artık nazar boncuğu olsun, hani hata değil de, kolaylık da sağlanmamış diyelim.

Sonra yine araya bir sürü zaman girdi, bu total conversion steam workshop olayı baya arafta kaldı. Betadan çıkmıyor, benim Steam Workshop sayfası gizli şekilde duruyor filan. Olay tamamlanınca haber vereceğim dedi, ben de başka işlerle uğraşmaya devam ettim. Başka işler dediğim, işte kendi maaşlı işim, bir de ufak tefek projeler, freelance’ler vs. Hiçbir bir yere varmıyor. Hanginiz beddua etti bana?

Neyse gel zaman git zaman, Luis e-posta attı, “hacı tamamdır, güncelleme yayınlandı, White Night’ı yayınlayabilirsin“. Bir hoşuma gitti. 12 yıl önce yaptığım bir işten ötürü böyle ciddiye alınmak, kaale alınmak, insan yerine konmak filan. Pek sık karşılaştığım şeyler değil.

Luis Steam’de güncellemenin haberini yayınladı, ben de modun sayfasını halka açık yaptım. Sonra millet indirip oynamaya başladı.
Bir de ne göreyim?

Amnesia: The Dark Descent 1.5 güncellemesi ile benim kullandığım bazı özellikler patlamış, millet 12 yıllık modda ilerleyemiyor.

Koştur koştur Luis’e bir e-posta daha, “hacı bak ben böyle bir fonksiyon kullandım, bunun callback’i var, onunla da buradan bunu çağırıyordum. Şimdi bunlar çalışmıyor, var mı bir bilgin?” diye.

Değme programcılara taş çıkaran adam bana anında dönüş yaptı, motorun içerisinde ilgili kısımdaki güncellemenin neden olduğu hatayı buldu, çat diye de çözdü. Ben de kendime bilgisayar mühendisi, yazılımcı filan diyerek geziyorum ortalıkta.

Neyse, test ettim, çalışıyor. Ben de bu olayı, hani bir butonun durumunu kod üzerinden değiştirip, sonra o butonun kendi üzerinde “benim durumum değişirse şu fonksiyonu çağıracağım” şeklindeki callback özelliğini biraz abartmışım. Oyunun gidişatına pek müdahale etmeyen; ama hikâyenin anlatım kısmında elzem kalan kısımlarda baya bir kullanmışım. Yani oynayanlar baya hikâyenin bazı kısımlarını görmeden bilmeden asansöre kadar gelmiş. Asansörde takılıp ilerleyemeyince de millet basmış eksiyi.

Ya arkadaşlar, yazılım böyle işte.


Savunma Sanayii yıllarımdan bir anı

Yıllar önce savunma sanayiinde çalışırken sunucudan gelen bir değeri gösterme ve bunu güncelleme kısmında masaüstü istemcisinin kodunu yazıyordum. Bir tık daha düzgün iş yapıp, eğer sunucudan hiç veri gelmediyse, veyahut da NaN (Not A Number. Yani siz sayı beklerken yazı veya başka bir veri türü gelmesi) geldiyse ilgili veriyi güncelleme kısmında varsayılan değerleri otomatik olarak yerleştiriyordum. Yaptım, test ettim, gönderdim, konuyu kapattım. Üzerinden az bir süre geçince proje lideri gelip “Tansel senin yaptığın şey çalışmıyor” (Çalışma hayatım boyunca birkaç kez duyduğum; ama her defasında karşıdan kaynaklı olan bir durum diyalogu) deyip bir güzel azarlamaya başlamışken “yok ya ben onu yaptım, çalışıyordu” diye kendimi savunurken “aç göster lan” diyerek karşı atağa geçmiş, sonrasında da ben gösterirken çalışmaması ile bir güzel göt olmuştum. “Yahu insan bunu bir düşünür, bu tarz edge case’leri önden halleder” diye de bir güzel haşlamıştı. Adam gittiken sonra “daha geçen çalışan şey niye şimdi çalışmıyor?” diye düşünüp araştırırken kod geçmişinde sunucu ve istemcide ortak kullanılan ve ilgili verinin tutulduğu kütüphanenin güncellendiği, hem sunucuda hem de istemcide yeni versiyonunun kullanıldığı, bunun benden habersiz yapılması, testlerin koşturulmamış olması gibi tüm durumları görünce, üstüne üstlük ben bunu yüzyüze sorduğumda “abi böyle bir değişiklik yaptınız mı?” diye, gevrek gevrek “evet ya” diye cevap verip, niye pull request’e beni reviewer olarak eklemediklerini, neden testleri koşmadıklarını, neden kütüphane sürüm güncellemesini haber vermediklerini sorduğumda da gülüp geçmeleri beni çileden çıkarmıştı, üstüne üstlük proje yöneticisine gidip bunu haber verdiğimde “yazılım sürecini bu kadar boktan yönetip üstüne beni suçlu çıkarmak için özel çaba mı gösteriyorsunuz?” diyemediğim için “takip etmen lazım böyle şeyleri” deyip geri yollamıştı. Ne bir özür, ne de süreci hatalı ilerleten diğer ekip arkadaşına bir uyarı.

Bu da böyle bir anımdır.


12 yıl sonra White Night nedir merak eden, hâlen oynamak isteyen, acık nostalji yapayım diyen varsa deneyebilir.

Bana sorarsanız, dönüp baktığımda çoğu şeyi farklı yapardım. Hatta test etmek için oynarken kötü bile buldum diyebilirim. 12 yılda ben de büyüdüm, geliştim, yetiştim elbette. O yüzden White Night için artık bir Amnesia modu yerine doğru düzgün, kendi başına bir oyun olma vakti gelmiş, hatta geçiyor bile. İlerleyen zamanlarda buna bir el atmam lazım. Sırası gelirse tabii…

3 şey demişler
  1. Ah be Tansel(bey). 12 yıl önce seni erken keşfettiğim Yoko Taro, kendimi de başka bir şeylerin erken hali sanırken ne de kolaydı her şey.
    Aksilik silsileleriyle dolu kodlama hikayelerini bile 3 yılda bir yazar oldun artık.
    En kısa süre de tekrar oynayacağım White Night. Elinize sağlık.

    lamelesss 13 Kasım '23 tarihinde | Cevapla
    • Valla White Night’a gelen “Silent Hill in FPS” övgüsünden sonra en iyi övgü olabilir bu. Bence hâlen geç değil bazı şeyler için 🙂
      Şimdi elimdeki küçük projeye güncelleme yapıp üstüne bir de video çekince asıl yapmak istediğim projeye geri döneceğim. Sıra da artık bir White Night remake’e gelecektir mutlaka.

      Tanshaydar 20 Aralık '23 tarihinde |
    • s

      poisontree 9 Şubat '24 tarihinde |

Söz uçar yazı kalır