« Xbox'ın Mimarisi (index)

Xbox'ın Mimarisi

Chapter 8: Oyunlar


İçindekiler

  1. Geliştirme ekosistemi
    1. Donanım Soyutlama
    2. Microsoft XDK
    3. NXDK
  2. Medya Ortamı
  3. Ağ hizmeti
  4. Yeni bir trendin başlangıcı

Bu bölüm biraz kafa karıştırıcı olabilir, özellikle diğer konsollara göre düşük seviyeli belgelerin eksikliği nedeniyle. Microsoft/Nvidia'nın gerçekten geliştiricilerin kütüphanelerini kullanmalarını ve her şeyi unutmalarını istediği gibi görünüyor. Bu yine de ilginç bir stratejidir.

Her durumda, mümkün olduğunca bilgilendirici bir şekilde belgelemeye çalıştım, ancak çok derine inmeden.

Geliştirme ekosistemi

Bu konsolda oyun geliştirmek, kütüphaneler, terimler ve benzeri açılardan oldukça karmaşıktır. Bu nedenle bunu Framework'lere göre ayırdım.

Donanım Soyutlama

Image
HAL'nin temsili.

'Bir mikro kodlu programlanabilir yardımcı işlemci' gibi unsurların genellikle başta çok ses getirdiğini, ancak geliştiricilerin yeni donanımın gerçek karmaşıklığını keşfettikçe yavaşça azaldığını gördük.

Geliştirici perspektifinden, bu konsolun çekiciliğinden biri, düşük seviyeli işlevleri etkili bir şekilde yönetebilen popüler yüksek seviyeli kütüphanelerin bulunmasıydı. Microsoft ve Nvidia'nın stratejisi, donanımlarının her düşük seviyeli yönünü belgelemek yerine, donanımın iç işleyişi hakkında tam bilgi gerektirmeden geliştiricilerin bulmayı bekleyeceği işlemleri gerçekleştirebilen tam işlevli bir donanım soyutlama kütüphanesi sağlamaktan ibaretti.

Bu konsol için geliştirme yapmak için birkaç SDK bulunmaktadır; bazıları 'resmi' ve kısıtlayıcıyken, diğerleri 'pek de resmi olmayan' ama esnek olanlardır. En popüler olanlara bir göz atalım.

Microsoft XDK

Image
XDK yapısı

Microsoft'un Xbox Development Kit veya 'XDK', Xbox geliştirmek için kullanılan resmi SDK'dır. Bu, birçok aracı, kütüphaneyi ve derleyiciyi içeren bir pakettir. Özellikle, o dönem için oldukça bir IDE olan Visual Studio .NET (2002 sürümü) ile birlikte kullanılır.

Grafik kütüphanesi, Xbox özel özellikleri de içerecek şekilde genişletilen Direct3D 8.0'in özel bir uygulamasıdır. Direct3D, birçok GPU ile uyumlu kod geliştirmek için kullanılan çok güçlü bir API idi. Bu sayede, (teoride) PC geliştiricileri oyunlarını pek çok değişiklik yapmadan taşıma fırsatına sahipti. Ancak, vertex programları ve piksel shader'lar için kullanılan sözdizimi neredeyse tamamen montaj dilini anımsatır.

Bunun dışında, ses işlevselliği, ses verilerini taşıma konusunda endişe etmeden APU ile ilgilenen DirectSound tarafından sağlanır. Çok oyunculu gibi çevrim içi işlevselliğe ulaşmak için oldukça uygun olan bazı ağ kütüphaneleri de bulunmaktadır. Ağ API'si, yalnızca Windows tabanlı bir protokol kullanarak ağ iletişimini basitleştirmeye yönelik Microsoft'un girişimidini temsil eden Windows Sockets üzerine dayanmaktadır (ancak BSD soketlerine dayanan standartlaştırılmış bir tasarıma sahiptir).

Bunları denemek için Microsoft, kendi geliştirme kiti donanımlarını dağıttı, bu sadece çift RAM (toplamda 128 MiB) ile yeşille kaplı perakende bir ünitedir ve bazen farklı bir MCPX yongası içerir (Flash ROM'dan doğrudan önyükleme yapan MCPX-2 olarak adlandırılır). Bu, XDK tarafından imzalanmış yürütülebilir dosyaları başlatan bir geliştirme kiti sürümü içerir. Öte yandan, Xbox Neighbourhood (Xbox Komşusu) (bir Windows uygulaması), geliştirme kiti ile Visual Studio'yu bağlamak için kullanıldı ve böylece kolayca dağıtma ve hata ayıklama yapma imkanı sağlar. Xbox Live ile deneme yapmak için Microsoft ayrıca sandbox sunucuları sağladı.

NXDK

Image
NXDK yapısı. Dikkat edilmesi gereken, bazı düşük seviye kütüphanelerin yüksek seviyeli olanlarla sarmalanmış olmasına rağmen, geliştirici tarafından hala erişilebilir olduğudur

Homebrew geliştiricilerine resmi SDK kullanımında Telif Hukuku davalarını önlemek için, Microsoft ile bağlantılı olmayan bir grup geliştirici, resmi SDK'nın bir alternatifi olan Open XDK'yı oluşturdu. Birkaç yıl sonra geliştirmesi durdu, bu nedenle başka bir grup onu devraldı ve yeni bir çatalı New XDK veya 'nxdk' olarak adlandırdı.

Devam eden proje, düşük seviyeli donanım bileşenlerini (mikro kod, push-buffer, vb.) tersine mühendislik yaptı ve sistemin her bölümüne yüksek seviyeli çağrılar sağlayan C/C++ dilinde yeni bir API tasarladı.

Direct3D'ye güvenmeden grafik katmanını basitleştirmek için nxdk, CG derleyicisini kullanır . CG, shader geliştirmek için Nvidia tarafından oluşturulan bir dildir. CG, Xbox ile uyumlu kodu üretmek üzere diğer derleyicilerle zincirlenir. Derleme sırasında, CG kodu NV20 uyumlu montaj diline dönüştürülür, ardından bu, NV2A uyumlu mikro kodu ve pushbuffer üretmek için özel bir derleyici kullanılarak tekrar çevrilir. CG kullanmak istemeyenler için nxdk, düşük seviyeli shader'lar yazmak için geri kalan derleyicileri de açığa çıkarır.

Kullanılabilecek diğer API'lar, diğer hizmetleri yönetir (ses, ağ vb.). Sonuç olarak, bu kütüphane, Microsoft'un API'larını (tümüyle mülkiyeti olan de facto standart) kullanmamak karşılığında donanım üzerinde daha fazla kontrol sağlar. Bununla birlikte, nxdk, yasal Homebrew programları geliştirmek için en uygun seçenek olarak kalmaya devam eder.

Medya Ortamı

Oyunlar çift katmanlı DVD diskler üzerine dağıtılır (8.5 GB'a kadar!), ve bunlar daha sonra özel bir DVD sürücüsü tarafından okunur ve bu sürücü, standart bir arabirim olan ATA'ya rağmen korsanlığa karşı korumalar içerir. XDK, verilerin diskin düzenini özelleştirmek için bazı araçlar içerdiğini belirtmekte fayda var, bu da programcıların okuma hızlarını iyileştirmelerine olanak tanır!

Şimdi, konsol aynı zamanda dahili 8 GB HDD içerir, oyunlar bunu kayıtları saklamak veya geçici içerik önbelleğini kullanmak için kullanır. Öte yandan sistem, dashboard, Xbox Live ayarları ve ağ ayarlarını saklar.

Ağ hizmeti

Modemlere veya deneysel hizmetlere takılmanıza gerek yok. Xbox, bir Ethernet bağlantısı ve merkezi bir çevrim içi altyapı (adı Xbox Live) sağlamak için şu anda genellikle kabul ettiğimiz her şeye sahipti.

Image
Xbox Live Logo.

Dahası, Xbox Live sadece çevrim içi çok oyunculu değil, aynı zamanda gerçek zamanlı sesli sohbet için ses paylaşımı da içeriyordu.

Ancak Xbox Live tam olarak nedir? Şirketlerin çevrim içi platformlarını oluşturmak için kullanabilecekleri bir dizi birbirine bağlı çevrim içi hizmetten ibaretti. Örneğin, hizmetlerden biri kullanıcı profillerini sağlar, böylece stüdyolar bir oyunun çevrim içi işlevlerine erişirken kimlik doğrulama yöntemi olarak kullanabilir. Resmi SDK'da, Microsoft, Xbox Live sunucuları ile iletişim kurmak için bazı API'ları içerir.

Microsoft'un Xbox Live erişimini kime vereceğini kontrol ettiğini belirtmek önemlidir, bu nedenle geliştiricilerin oyunları tarafından kullanılacak kimlik doğrulama anahtarlarını almak için Microsoft'a kaydolmaları gerekecektir.

Gerçek çevrim içi deneyim, Title Server (Başlık Sunucusu)'da gerçekleşir, bu da dünya genelinde istemcilere (Xbox konsolları) cevap veren ve gerçek zamanlı iletişimi yöneten bir sunucu türüdür. Microsoft, SDK'larında bu tür sunucuları nasıl oluşturacaklarını göstermek için bazı örnekler sağlamıştır, ancak bunlar Windows sistemlere dayanıyor ve Windows Server çalıştıran veri merkezlerine dağıtılmak üzere tasarlanmıştır.

Yeni bir trendin başlangıcı

Microsoft'un Xbox Live uygulamasını analiz ettikten sonra bunun sektör üzerindeki etkisini inceledik. şimdi oldukça açık görünüyor, değil mi? 'Doğru çevrim içi oyun' tarifi (yani Ethernet + Altyapı) her zaman oradaydı, ancak her şirket buna yatırım yapmak istemiyordu gibi görünüyor.

Aslında durum bu kadar basit değil: Microsoft, kullanıcılara bu işlevselliğe 'ihtiyaçları' olduğunu, çevrim içi çok oyunculu oyunun sadece isteğe bağlı bir ekleme olmadığını, ancak bazı oyunların temel bir parçası olduğunu 'ikna etmek zorundaydı. Aksi takdirde, Microsoft'un çabaları sadece bir başka 'çevrim içi girişim' anlamına gelecektir.

Konsol oyuncularının çevrim içi oyun istemediği ve kimsenin bir PC mimarisinin bir konsol olabileceğine inanmadığı bir dünya hayal edin. İşte gerçekten öyleydi. Şimdi açık gibi görünüyor ama ÖYLE DEĞİLDİ.

- Seamus Blackley


Previous: 7. İşletim Sistemi

Next: 9. Korsanla Mücadele ve Homebrew


Rodrigo Copetti © 2026 RSS Feed

Modern baskıya geçin

Ana sayfa · Yazılar · Destek · Yazar hakkında · Web sitesini hakkında