1 puan yazan GN⁺ 2023-09-21 | 1 yorum | WhatsApp'ta paylaş
  • Wing Commander I’deki “Thank you for playing Wing Commander” anlatısı, bir kapanış hata mesajının hex düzenleme ile değiştirildiği hikâyesine dayanıyor, ancak bu hata yayımlanan sürümde olduğu gibi kalmış değildi
  • Asıl kaynağa en yakın kayıt, 2009 tarihli Gamasutra Dirty Coding Tricks yorumudur; burada Ken Demarest, geliştirme sırasında EMM386 kapanış hatasını geçici olarak gizlediğini anlatır
  • DOSBox, dönem donanımı ve ikili dosya dizgesi aramalarında, normal çıkışta bu ifadenin görünmediği; yalnızca kışladaki airlock çıkış yolunun ayrı bir şaka mesajı verdiği görüldü
  • Electronic Arts’ın elinde bulunan eksik Wing Commander I kaynak kodu içinde de airlock mesajının normal oyun kodu olduğu doğrulandı; bu, bellek yöneticisini hex düzenleme vakasından farklıydı
  • Ken Demarest, hack’in kendisinin gerçekten yapıldığını ancak hatanın nedenini bulduktan sonra çıkıştan önce kaldırdığını söyleyerek, bu anlatının özensiz bir piyasaya sürümden çok geçici bir mühendislik numarasına daha yakın olduğunu belirtti

“Thank you for playing Wing Commander” anlatısının kaynağı

  • Yaygın olarak bilinen hikâye, Wing Commander geliştiricisinin oyun kapanırken oluşan EMM386 bellek yöneticisi hatasını düzeltemediği için, hata metnini hex düzenleme ile “thank you for playing Wing Commander” olarak değiştirdiğini söyler
  • Bu anlatı son 10 yılda internette “eğlenceli yazılım hack’leri” örneği olarak yayıldı ve “dirty-but-functional hack” anlamına gelen bir örnek gibi kullanılmaya başlandı
  • Bazı Star Citizen hayranları bu örneği Chris Roberts’ın yetkinliğini eleştirme bağlamında da gündeme getirdi
    • Roberts’ın diğer CEO’lardan farklı olarak Star Citizen’da da kod yazmayı sürdürmesi bağlantı noktası olarak kullanıldı
  • Wing Commander I hayranları ise birlikte dolaşıma giren ekran görüntüsünden şüphe duydu
    • Wing Commander I’in varsayılan kurulum yolu c:/wc1 değildir
    • Yayımlanan sürüm oyun kapanırken “Thank You for Playing Wing Commander!” yazdırmaz

2009 tarihli Gamasutra yorumu asıl kaynağa daha yakın

  • Orijinal ifade ve ekran görüntüsünün kaynağı izlenince, 20 Ağustos 2009 tarihli Brandon Sheffield Gamasutra yazısı Dirty Coding Tricks altındaki yorum bulundu
  • Yorumun özü şöyleydi
    • Wing Commander 1’de oyundan çıkarken EMM386 bellek yöneticisi istisnası oluşuyordu
    • Ekran temizlenince “EMM386 Memory manager error...” gibi tek satırlık bir mesaj görünüyordu
    • Hızlı çıkmaları gerektiği için, bellek yöneticisi içindeki hata dizgesi hex düzenleme ile “Thank you for playing Wing Commander” olarak değiştirildi
  • Gamasutra, oyun geliştiricileri arasında popüler bir siteydi ve 2021’de Game Developer olarak yeniden markalandı
    • Orijinal yazı yeni sitede duruyor, ancak yorumlar geçiş sürecinde kaybolmuş görünüyor
  • Yorumu yazan kişi Ken Demarest’ti
    • Ken Demarest III, Origin Systems’ta ilk Wing Commander’da yazılım mühendisi olarak çalıştı; daha sonra Ultima VII’nin baş programcısı ve şirketin Director of Technology’si oldu
    • Wing Commander yazarı Jeff George, Chris Roberts hariç tutulursa oyunun yayımlanmasını sağlamaya en büyük katkıyı Demarest’in yaptığını söylemişti

Reddit sürümü ve ekran görüntüsünün yarattığı yanlış anlama

  • 2015’te Reddit /r/shittyprogramming üzerinde yayılan sürüm, 2009’daki orijinal yorumdan iki açıdan farklıydı
    • Orijinal yorumda ekran görüntüsü yoktu
    • Çıkış mesajının ifadesi biraz değiştirilmişti ve daha güçlü bir ters köşe gibi görünüyordu
  • Reddit sürümü muhtemelen 2012’de üçüncü bir kişinin LinkedIn paylaşımı üzerinden dolaşıma girdi
  • Sonradan eklenen ekran görüntüsü, bu hatanın yayımlanan sürüme girmiş gibi görünmesine yol açtı; ancak orijinal yorum böyle bir iddia içermiyordu
  • Bu nedenle anlatının kaynağı makul görünse de, bunun “yayımlanan sürümde kalan bir hata” olup olmadığı ayrıca doğrulanmalıydı

Yayımlanan Wing Commander I sürümünde yapılan doğrulama

  • Wing Commander I normal çıkışta “thank you for playing Wing Commander” yazdırmaz
    • DOSBox ve dönem donanımı üzerinde test edildi
    • Oyunun tüm ikili dosyalarında bu dizge arandı, ancak bulunmadı
    • ALT-X tuşlarına basıldığında yalnızca DOS istemine dönülür
  • İstisna olarak Tiger’s Claw kışlasındaki airlock kapısına tıklanarak çıkılırsa farklı bir akış çalışır
    • y/n onay istemi çıkar
    • DOS’a dönülürken “You step out of the airlock and into…” mesajı yazdırılır
    • Bu ifade, doğrudan bu çıkış biçimine bağlı bir şakadır
  • Bu airlock mesajı gerçekten oyun ikilisinde bulunur
  • Ken Demarest’in bu kışla ekranıyla da bağlantısı vardır
    • Kovaya düşen su damlası efektini yapan kişi olarak bilinir
    • Bu efekt, Chris Roberts’ın sürükleyicilik arayışını gösteren örneklerden biri olarak sık anılır

Kaynak kodu ve Ken Demarest’in yanıtı

  • Electronic Arts’ın elinde bulunan eksik Wing Commander I kaynak kodu doğrulama için kullanıldı
    • Bu kaynak dosyaları Wing Commander I’in yayımlanan build’inde kullanıldı ve daha sonra FM Towns portunu geliştiren ekibe de verildi
    • Bellek yönetimi rutinleri dâhil bazı materyaller günümüze kalmamıştı
  • Kalan kod bile airlock mesajının kaynağını doğrulamaya yetti
    • BARRACKS.C, kışla oyun akışı ekranının işlevlerini ayarlar
    • Oyun belleği boşalttıktan sonra airlock mesajını ve satır sonunu yazdırır
    • Bu, gerçek çalışma sonucuyla örtüşür ve bellek yöneticisinin hex düzenlenmesi durumu değildir
  • Diğer çıkış yolu COCKPIT.C içindedir ve herhangi bir mesaj yazdırmaz
  • Darren Xczek, bunun Ultima VII ile ilgili olabileceğini öne sürdü
    • Ultima VII, DOS’a dönerken “thank you for playing Ultima VII” mesajını yazdırır
    • Ken Demarest, Ultima VII’nin baş programcısıydı
    • Ultima VII, iç sistem adının “Voodoo Memory Manager” olmasıyla da gösterildiği gibi, bellek yönetimi sorunlarıyla ünlüydü
  • Ken Demarest’e doğrudan sorulduğunda, hex düzenleme hack’inin geliştirme sırasında gerçekten yaşandığı netleşti
    • Bu hack ile oyunu yayımlama fikrinin aklından geçtiğini, ancak hatanın nedenini bulduktan sonra vicdanen bunu bırakamayacağını söyledi
    • Elle düzenleme sürecinin build tamamlama süresini uzattığı için verimsiz olduğunu da ekledi
  • Sonuç olarak bu anlatı, geliştirme sürecindeki geçici bir numaraydı ve yayımlanan sürümde kalmadı
    • Bu, özensiz bir ürün satıldığının kanıtı değil; çıkıştan önce kaldırılmış geçici bir geliştirme hack’ine daha yakındır

1 yorum

 
GN⁺ 2023-09-21
Hacker News yorumları
  • Sega Genesis/Megadrive için Sonic 3D Blast’ta Traveller's Tales’ın eklediği hack aklıma geldi
    Konsol açıkken kartuşu yeterince sallayınca ya da vurunca "secret level select" ekranı çıkıyordu; uzun süre bir easter egg sanıldı ama aslında ana CPU’nun hata kesmesini yakalayıp seviye seçim ekranına yönlendiren özel bir çökme işleyicisiydi
    Sega QA’dan build’in reddedilip çıkışın gecikmesini önlemek için yapılmış bir düzendi; QA birkaç hafta sürdüğü için tek bir çökme her şeye baştan başlamayı gerektiriyordu. Kartuş sallanınca temas anlık olarak kesiliyor ve işlemci hatası oluşuyordu
    Kaynak, 3 dakikalık YouTube videosu: https://www.youtube.com/watch?v=ZZs2HUW9tDA
    Bağlantıdaki "Coding Secrets" YouTube kanalında benzer hack’leri ele alan başka videolar da var; o dönemin geliştiricilerinin donanım ve iş kısıtları içinde oyunları çalışır hale getirmek için yaptıkları gerçekten etkileyici

    • Oyun yapısının bugüne göre çok daha basit olduğu zamanlarda bile QA’nın haftalar süren bir süreç olması anlamlı
      Günümüz AAA oyunlarında bazen yayıncı ya da konsol üreticisi birkaç dakikalık QA’yı bile atlıyor gibi görünüyor
    • Bu videolar kısa oldukları için ferahlatıcı. Bugünlerde abone olduğum YouTube kanallarının hepsi 45 dakikalık videolar yapıyor gibi
  • Böyle konularda birincil kaynaklara ulaşabilmek gerçekten sihirli bir güç gibi
    Özellikle benim gibi yaş farkı ya da coğrafi mesafe varsa, bazen neredeyse imkânsız görünebiliyor
    80’lerde İsveç’te büyüdüm ve o zamanlar da bilgisayarlara tamamen kapılmıştım. Commodore 128 kullanıyordum, sonra Amiga’ya geçtim; C64 modunda çok oyun oynadım ve tabii "Uridium" [1] ile "Paradroid" [2] herkesin bildiği, neredeyse olmazsa olmaz yapımlardı
    Ama bunların geliştiricisi Andrew Braybrook’un Xitter akışımda [3] olması ve hâlâ oyun geliştirmesi bana hâlâ tuhaf geliyor. O dönemde İngiltere’de yaşayan, benden 10 yaşından fazla büyük, uzak bir büyücü gibiydi; şimdi ise en azından mesleki açıdan bir ölçüde meslektaş gibi geliyor
    İnternet öncesinde de böyle şeyler olmuştur ama çok daha zor ve nadir olduğunu düşünüyorum
    [1]: https://en.wikipedia.org/wiki/Uridium
    [2]: https://en.wikipedia.org/wiki/Paradroid
    [3]: https://twitter.com/UridiumAuthor

  • 2023’te bile güncel tutulan bir Wing Commander haber sitesi olması gerçekten güzel

  • Füze kodunu denetleyen bir geliştiriciyle ilgili bir hikâye duymuştum. Kodun birçok yerinde bellek sızıntısı olduğunu hemen işaret etmiş; meğer bu bilinçli bir tasarımmış ve füze uçuşun sonunda kendi çöp toplamasını yapıyormuş
    Bellek yetersizliği sorunu da füzenin uçuş sırasında beklenen bellek kullanımını iki kat varsayarak çözülmüş

    • "Füzenin belleği yetersiz, silaha geçiliyor"
    • Açıkçası inanması zor
  • Bağlantısı verilen Reddit başlığında şöyle bir yorum var:

    Wing Commander I’i ilk çalıştırdığımda saatlerce oynadığımı hatırlıyorum... Uzun bir oynayışın sonunda çıkarken o cümleyi okuyup "aa, ne nazik" diye düşünmüştüm
    Şimdi gerçeği öğrenince, bunun yalan mı yoksa sadece yanlış hatırlama mı olduğunu merak ediyorum

    • Muhtemelen Mandela etkisi. Ben de aslında var olmayan o mesajı hatırlıyorum
      Ultima VII’yi de çok oynadığım için, makalede söylendiği gibi anılar birbirine karışmış olabilir
    • Disketimin hâlâ çalışıp çalışmadığını kontrol edip GOG/Kilrathi Saga sürümüyle farklı olup olmadığına bakabilirim. Muhtemelen olmaz ama
    • Tabii ki yanlış hatırlıyor. Hafıza kötü şöhretli derecede güvenilmezdir ve düşündüğümüzden çok daha istikrarsızdır
      Bu tür çıkış mesajları eskiden nadir değildi; o hikâyeyi okumak bile sahte ya da karışmış anılar oluşması için yeterli
    • Büyük ihtimalle çok daha sonra çıkan bir sürümü kullanıyordur. İnternette en kolay bulunan sürümler çok daha sonraki sürümler
  • Bu hikâye sonunda doğru olmadığı ortaya çıktı ama 1999/2000’de Half-Life 1 çok oyunculu oyun başlatıcısını kurduğumu hatırlıyorum
    "install"a basınca bir iletişim kutusu çıkıp kabaca "Kurulum programı kurulumun başarısız olduğunu söylese de endişelenmeyin. Program düzgün şekilde kuruldu" diyordu
    Ekran görüntüsünü de almıştım ve yıllarca sakladım. Kaybettim ya da ailemin evindeki eski bir bilgisayarın bir yerlerinde olabilir, ama gerçekten olduğuna yemin edebilirim
    Gerçekten bir hata mesajı çıkmıştı ve program düzgün şekilde kurulmuştu
    Bir kez Twitter’da bu hikâyeyi anlatınca biri bunun bilinen bir sorun olduğunu söylemişti; yanlış hatırlamıyorsam Windows 97’nin kayıt defteri güncellemesiyle ilgiliydi

    • Half-Life 1’de yer alan Sierra Utilities kaldırıldığında, kurulduğu konumun bir üst dizinini siliyordu
      Genelde Program Files tamamen uçuyordu
    • Windows 97
      Sanırım sorunu bulduk

  • Çocukken "Thank you for playing Wing Commander!" mesajını gördüğümü kesin hatırlıyor gibiyim; bu yüzden tuhaf geliyor. Sadece ben mi böyleyim?

    • O "thank you for playing" mesajı aslında Wing Commander 2’de vardı sanırım
    • Ben de ilk okuduğumda çok tanıdık gelmişti
      Geriye dönüp bakınca çok DOS oyunu oynadığım için muhtemelen karışmış olabilir. Çıkışta bir şeyler yazdırmak pek nadir değildi
    • Ben de o teşekkür cümlesini kesinlikle gördüğümü hatırlıyorum. Tabii akla Mandela etkisi geliyor ama anı o kadar canlı ki ürkütücü
  • Bir hikâye yayıldıkça ona yavaş yavaş çarpıtmalar eklenmesi gerçekten can sıkıcı olabiliyor. Bu örnekte zararsız ama

  • Bu mesajın orijinal oyunda değil, Wing Commander 2’de olduğundan oldukça eminim