2 puan yazan GN⁺ 2024-01-08 | 1 yorum | WhatsApp'ta paylaş

AoE assembly ile mi yazıldı? - Bu gerçekten doğru mu?!

  • AoE ve AoK'da assembly kodu yazımı: Yaklaşık 13.000 satır x86 32 bit assembly kodu yazıldı. Bunun büyük kısmı, SLP sprite'larını çeşitli şekillerde çizen yaklaşık 11.500 satırlık "çizim çekirdeği"nden oluşuyordu.
  • Assembly kodunun derlenmesi: .asm dosyaları, Microsoft Macro Assembler 6.1 kullanılarak .obj dosyalarına "derlendi".
  • C++ kodu içinde inline assembly: Derleyici, fonksiyonların içine __asm { } anahtar sözcüğüyle assembly kod blokları eklemeyi sağlayan "inline assembly" desteği sunuyordu.
  • Çizim çekirdeğinin performans artışı: Assembly kullanılan çizim çekirdeği, C++ referans uygulamasına göre sprite çiziminde yaklaşık 10 kat daha yüksek hız sağladı.
  • Assembly kodunun teknik tasarımı: Önbellek mimarisi ve UV pipe dikkate alınarak tasarlandı; Pentium işlemcilerin özelliklerinden yararlanıyordu.
  • AoK:HD Edition'da assembly kodu: AoK:HD Edition'da da (32 bit oyun) assembly kodu kullanıldı.
  • Definitive Editions'ta C++ ile yeniden yazım: 64 bit program olan Definitive Editions'ta assembly fonksiyonları C++ ile yeniden yazıldı.

AoE topluluğu ve kaynaklar

  • Canlı yayınlar: Twitch ve Facebook'ta farklı dillerde yapılan AoE yayınlarının listesi.
  • Çevrimiçi oynama: Steam ve Microsoft Store üzerinden AoE2 Definitive Edition dahil çeşitli sürümler oynanabiliyor.
  • Güncel yama: 26 Temmuz 2023'te güncellenmiş yama bilgileri sunuluyor.
  • Turnuvalar ve etkinlikler: AoEZone, AoE2 Liquipedia ve etkinlik takvimi üzerinden turnuva bilgileri sağlanıyor.
  • Topluluk siteleri: Resmi Age of Empires sayfası, forumlar, Discord, AoK Heaven ve çeşitli topluluk sitelerine bağlantılar.
  • Birim ve bina istatistikleri: Birimler ve counter bilgileri, hata düzeltmeleri, oyun ipuçları ve yama bilgileri sunan wiki ve kaynak bağlantıları.
  • YouTube kanalları: Resmi kanal ve tanınmış AoE2 YouTuber'larının listesi.

GN⁺ görüşü

  • Assembly kodunun önemi: AoE serisinin ilk sürümlerinde assembly kodu, oyunun performansı üzerinde büyük etkiye sahipti. Özellikle grafik işleme tarafında, modern yüksek seviyeli dillerle elde edilmesi zor optimizasyonlar sağladı.
  • Teknolojik gelişmenin etkisi: Zamanla 64 bit derleyicilerin gelişmesi ve çok çekirdekli işlemeye geçilmesiyle assembly koduna duyulan ihtiyaç azaldı. Bu, programlama dilleri ile donanımın gelişiminin yazılım geliştirmeyi nasıl etkilediğini gösteriyor.
  • Topluluğun rolü: AoE topluluğu, oyunun kalıcı popülerliği ve gelişiminde önemli rol oynuyor. Farklı kaynaklar ve tartışmalar aracılığıyla hayranların oyuna olan tutkularını paylaşabilecekleri ve bilgi alışverişi yapabilecekleri bir platform sunuyor.

1 yorum

 
GN⁺ 2024-01-08
Hacker News yorumu
  • Bir Hacker News kullanıcısı, 1999-2000 yıllarında Konami oyunlarını PSX'ten PC'ye port etme deneyimini paylaştı. C dilinde yazılmış kodda, satır içi assembly içeren çok sayıda #ifdef vardı ve özgün C kodunun korunduğunu söyledi. Bu özgün C kodunun port etme işinde çok yardımcı olduğunu belirtti. Ayrıca Intel'in Katmai işlemcisi için yazılım geliştirme sırasında SIMD komutlarını kullanma deneyiminden ve assembly optimizasyon çalışmalarından bahsetti. Bu süreçte Intel'in VTune aracının çok yardımcı olduğunu söyledi. Ancak assembly ile yazdığı kodun, derleyicinin ürettiği koddan daha yavaş olduğu durumlar da olduğunu hatırlattı.

  • Başka bir kullanıcı, şu anda Berlin'de devam eden, 'Age of Empires 2' (AoE2) oyununun büyük ölçekli turnuvası NAC5'ten bahsetti ve ilgili bağlantıyı paylaştı.

  • Bir geliştirici röportajına atıfla, bir oyunun çıkmadan önce yamaya ihtiyaç duyacağını biliyorsanız, o oyunu hiç çıkarmamanız gerektiği yönünde bir görüş dile getirildi.

  • 'Age of Empires'ın hız artışı sağlayan tekniklerinden birinin, iD Software programcısı ve optimizasyon uzmanı Michael Abrash ile yenilen bir öğle yemeği sırasında konuşulduğunu belirterek, internet yüzünden kaybolan o serbest etkileşim biçimine duyduğu özlemi ifade etti.

  • Assembly kullanılan bir grafik çekirdeğinin, C++'a kıyasla sprite çizim hızında yaklaşık 10 kat artış sağladığı gibi şaşırtıcı bir bilgi paylaşıldı.

  • Michael Abrash'ın, grafik alanında ne zaman bir yenilik olsa orada beliriyor gibi göründüğü yönünde bir yorum yapıldı.

  • Bir kullanıcı, 'Age of Empires 2: Definitive Edition'ın Wine üzerinde neden düşük performans gösterdiğini anlamak için bunun bir fırsat olabileceğini söyledi.

  • 'Age of Empires 2: Definitive Edition'ın, oyun kodunun kendisi olmasa da, çalıştırılabilir dosyanın çalışma zamanında oyun kodunu açan elle yazılmış assembly hâlâ içerdiği belirtildi. Bu yüzden tüm kodun okuma, yazma ve çalıştırma izinleri açık (RWX) durumda kaldığı ve bunun güvenlik açısından çok zayıf olduğu ifade edildi.

  • Borland tarihini okuyan bir kullanıcı, Turbo Pascal derleyicisinin büyük ölçüde assembly ile yazıldığını ve Delphi 1.0'da da kullanıldığını söyledi. Borland içinde kimse koda büyük değişiklikler yapamadığı için sonunda Delphi 2.0 için kodun baştan yazıldığını belirtti. Assembly diliyle karmaşık CPU'lar için yazılım geliştiren programcıların kendine özgü özellikleri olduğunu düşündüğünü de ekledi.