Basit DirectMedia Katmanı - Simple DirectMedia Layer
Orijinal yazar(lar) | Sam Lantinga |
---|---|
Geliştirici(ler) | SDL Topluluğu |
İlk sürüm | 1998 |
kararlı sürüm | 2.0.16 / 10 Ağustos 2021
|
depo | |
Yazılmış | C |
İşletim sistemi |
Linux , Windows AmigaOS'a , MacOS 10.4 ve üzeri , iOS 3.1.3+ , tvOS , Android 2.3.3 ve sonraki sürümleri , FreeBSD 8.4+ , Haiku Ayrıca önce v2.0.0 (kullanımdan kaldırıldı): RISC OS |
Tip | API |
Lisans |
2.0.0'dan Önce zlib Lisansı : GNU LGPL |
İnternet sitesi | www |
Basit DirectMedia Katmanı ( SDL ), bilgisayar multimedya donanım bileşenleri için bir donanım soyutlama katmanı sağlamak üzere tasarlanmış, platformlar arası bir yazılım geliştirme kitaplığıdır . Yazılım geliştiriciler, Android , iOS , Linux , macOS ve Windows gibi birçok işletim sisteminde çalışabilen yüksek performanslı bilgisayar oyunları ve diğer multimedya uygulamaları yazmak için kullanabilir .
SDL, video , ses , giriş aygıtları , CD-ROM , iş parçacıkları , paylaşılan nesne yükleme, ağ oluşturma ve zamanlayıcıları yönetir . 3D grafikler için OpenGL , Vulkan , Metal veya Direct3D11 (daha eski Direct3D sürüm 9 da desteklenir) bağlamını işleyebilir . Yaygın bir yanılgı, SDL'nin bir oyun motoru olduğudur , ancak bu doğru değildir. Bununla birlikte, kütüphane doğrudan oyun oluşturmaya uygundur veya üzerine inşa edilmiş motorlar tarafından dolaylı olarak kullanılabilir .
Kitaplık dahili olarak C dilinde yazılmıştır ve muhtemelen hedef platforma, C++ veya Objective-C'ye bağlı olarak ve mevcut diğer dillere bağlantılarla C'de uygulama programlama arabirimi sağlar . Öyle ücretsiz ve açık kaynak yazılım gereklerine tabi zlib Lisansı sürüm 2.0 beri ve öncesinde versiyonları konuyla GNU Genel Kamu Lisansı . Zlib Lisansı altında, SDL 2.0 için serbestçe kullanılabilir statik bağlama içinde kapalı kaynak SDL 1.2 aksine, projeler. 2013'te piyasaya sürülen SDL 2.0, önceki sürümlerden önemli bir ayrılma oldu ve 3D donanım hızlandırması için daha fazla fırsat sunuyor, ancak geriye dönük uyumluluğu bozuyor.
SDL, endüstride hem büyük hem de küçük projelerde yaygın olarak kullanılmaktadır. Kütüphane web sitesinde 700'den fazla oyun, 180 uygulama ve 120 demo yayınlanmıştır.
Tarih
Sam Lantinga kütüphaneyi yarattı ve ilk olarak 1998'in başlarında Loki Software için çalışırken yayınladı . Bir Windows uygulamasını Macintosh'a taşırken aklına geldi. Daha sonra liman için SDL kullanılan Doom için BeOS (bkz Doom kaynak bağlantı noktaları ). SDL ile birlikte çalışmak üzere SMPEG ve OpenAL gibi birkaç başka ücretsiz kitaplık geliştirildi . Ayrıca 2008'de SDL'yi ticari olarak desteklemeye yardımcı olmak için Galaxy Gameworks'ü kurdu, ancak şirket planları şu anda zaman kısıtlamaları nedeniyle askıya alındı.
Galaxy Gameworks'ü beklemeye aldıktan kısa bir süre sonra Lantinga, SDL 1.3'ün (daha sonra SDL 2.0 olacak) zlib Lisansı altında lisanslanacağını duyurdu . Lantinga, 14 Temmuz 2012'de SDL 2.0'ı duyurdu ve aynı zamanda ilk versiyonu şirkete katıldığı gün açıklanan Valve'e katılacağını duyurdu. Lantinga, 13 Ağustos 2013'te SDL 2.0.0'ın kararlı sürümünü duyurdu.
SDL 2.0, geriye dönük uyumlu olmayan farklı bir API ile SDL 1.2 kod tabanına yapılan büyük bir güncellemedir . 1.2 API'nin birkaç parçasını birden çok giriş ve çıkış seçeneği için daha genel destekle değiştirir. Bazı özellik eklemeleri, çoklu pencere desteği, donanım hızlandırmalı 2D grafikler ve daha iyi Unicode desteği içerir.
Mir ve Wayland desteği , SDL 2.0.2'de eklendi ve SDL 2.0.4'te varsayılan olarak etkinleştirildi. Sürüm 2.0.4 ayrıca Android için daha iyi destek sağladı.
Yazılım mimarisi
SDL, oyunun erişmesi gereken işletim sistemine özgü işlevlerin etrafındaki bir sarmalayıcıdır . SDL'nin tek amacı, birden çok işletim sistemi (çapraz platform) için bu işlevlere erişmek için ortak bir çerçeve sağlamaktır. SDL, 2D piksel işlemleri, ses, dosya erişimi, olay işleme, zamanlama ve iş parçacığı oluşturma için destek sağlar. OpenGL yalnızca oluşturmayı içerdiğinden , genellikle grafik çıktısını ayarlayarak ve fare ve klavye girişi sağlayarak OpenGL'yi tamamlamak için kullanılır .
Basit Doğrudan Katman kullanarak bir oyun olacak değil otomatik olarak her işletim sisteminde çalışmak; ilave uyarlamalar uygulanmalıdır. SDL ayrıca bir işletim sistemi tarafından sunulan sık işlevler için birkaç soyutlama API'si içerdiğinden bunlar minimuma indirilmiştir.
SDL'nin sözdizimi işlev tabanlıdır: SDL'de yapılan tüm işlemler, parametreleri alt programlara (fonksiyonlara) geçirerek yapılır . SDL'nin işlemesi gereken belirli bilgileri depolamak için özel yapılar da kullanılır. SDL işlevleri birkaç farklı alt sistem altında sınıflandırılır.
alt sistemler
SDL birkaç alt sisteme ayrılmıştır:
- Temel bilgiler
- Başlatma ve Kapatma, Yapılandırma Değişkenleri, Hata İşleme, Günlük İşleme
- Video
- Görüntü ve Pencere Yönetimi, yüzey işlevleri, işleme hızlandırma vb.
- Giriş Olayları
- Olay işleme , Klavye, Fare, Joystick ve Oyun denetleyicisi desteği
- Geribildirimi Zorla
- SDL_haptic.h, "Geri Bildirimi Zorla" desteği uygular
- Ses
- SDL_audio.h, Ses Aygıtı Yönetimi, Çalma ve Kaydetme özelliğini uygular
- İş Parçacığı
- multi-threading : İplik Yönetimi, İplik Senkronizasyonu İlkelleri, Atomik İşlemler
- zamanlayıcılar
- Zamanlayıcı Desteği
- Dosya Soyutlama
- Dosya Sistemi Yolları, Dosya G/Ç Soyutlama
- Paylaşılan Nesne Desteği
- Paylaşılan Nesne Yükleme ve İşlev Arama
- Platform ve CPU Bilgileri
- Platform Algılama, CPU Özellik Algılama, Bayt Sırası ve Bayt Değiştirme, Bit Manipülasyonu
- Güç yönetimi
- Güç Yönetimi Durumu
- Ek olarak
- Platforma özel işlevsellik
Bu temel, düşük seviyeli desteğin yanı sıra, daha fazla işlev sağlayan birkaç ayrı resmi kitaplık da vardır. Bunlar "standart kütüphaneyi" oluşturur ve resmi web sitesinde sağlanır ve resmi belgelere dahil edilir:
- SDL_image — çoklu görüntü formatları için destek
- SDL_mixer — özellikle ses miksajı için karmaşık ses işlevleri
- SDL_net — ağ desteği
- SDL_ttf — TrueType yazı tipi oluşturma desteği
- SDL_rtf — basit Zengin Metin Biçimi oluşturma
Diğer, standart olmayan kütüphaneler de mevcuttur. Örneğin: Amir Taaki tarafından oluşturulan SourceForge üzerinde SDL_Collide .
Dil bağlamaları
SDL 2.0 kitaplığı aşağıdakiler için dil bağlamalarına sahiptir :
Desteklenen arka uçlar
SDL'nin tasarlanma şekli nedeniyle, kaynak kodunun çoğu, temeldeki sisteme çağrı yapmak için her işletim sistemi için ayrı modüllere bölünür. SDL derlendiğinde, hedef sistem için uygun modüller seçilir. Aşağıdaki arka uçlar mevcuttur:
- Microsoft Windows için GDI arka ucu .
- DirectX arka ucu; Daha eski SDL 1.2, varsayılan olarak DirectX 7'yi kullanırken, 2.0 varsayılan olarak DirectX 9'u kullanır ve DirectX 11'e kadar erişebilir.
- macOS için kuvars arka uç (2.0'da düştü).
- 2.0.8'den beri macOS / iOS / tvOS için metal arka uç ; eski sürümler varsayılan olarak OpenGL kullanır.
- Çeşitli işletim sistemlerinde X11 tabanlı pencereleme sistemi için Xlib arka ucu .
- Çeşitli platformlarda OpenGL bağlamları.
- Wayland tabanlı pencereleme sistemi, Raspberry Pi ve diğer sistemlerle birlikte kullanıldığında EGL arka ucu .
- Onu destekleyen platformlarda Vulkan bağlamları.
- sceGu arka uç, PSP'ye özgü Sony OpenGL benzeri bir arka uç .
SDL 1.2, RISC OS desteğine sahiptir (2.0'da düşürülmüştür).
SDL 1.2 için resmi olmayan bir Sixel arka ucu mevcuttur.
Rockbox'un MP3 çalar firmware de gibi oyunları çalıştırmak için kullanılan SDL 1.2, bir sürümünü dağıtan Quake .
Karşılama ve evlat edinme
Yıllar boyunca SDL birçok ticari ve ticari olmayan video oyunu projesinde kullanıldı. Örneğin, MobyGames 2013 yılında SDL kullanarak 120 oyun listelenir ve SDL web sitesi kendisi 2012. Önemli ticari örneklerde 700 oyunlar etrafında sıralanan Angry Birds , Unreal Tournament ve oyunlar kullanılarak geliştirilen Valve 'nin Kaynak Altyapısı çapraz için yoğun SDL kullanır, -platform uyumluluğu; açık kaynak alanından olanlar OpenTTD , The Battle for Wesnoth veya Freeciv'dir .
Linux, Mac ve Android için popüler Humble Indie Bundles'ın platformlar arası oyun sürümleri genellikle SDL tabanlıdır.
SDL, genellikle eski kodlu yeni platformlardaki sonraki bağlantı noktaları için de kullanılır. Örneğin, PC oyunu Homeworld , SDL aracılığıyla Android için Pandora avuçiçi ve Jagged Alliance 2'ye taşındı .
Ayrıca, birkaç video oyunu olmayan program SDL kullanır; örnekler taklitleri gibi DOSBox , SİGORTA ZX Spectrum emülatörü ve VisualBoyAdvance .
SDL ile geliştirme için yazılmış birkaç kitap vardı (ilerideki okumalara bakın).
SDL, örneğin, 2010 yılında Cadiz Üniversitesi'nde libSDL kullanılarak oyun programlama hakkında bir atölyede veya 2015 yılında UTFPR'de (Ponta Grossa kampüsü) bir Oyun Tasarımı disiplininde, multimedya ve bilgisayar bilimi öğreten üniversite derslerinde kullanılmaktadır .
SDL kullanan video oyunu örnekleri
Ayrıca bakınız
Referanslar
daha fazla okuma
- Alberto García Serrano: Videojuegos en SDL Programları , Ediversitas, ISBN 84-95836-08-4 (İspanyolca)
- Ernest Pazera: SDL , Muska & Lipman/Premier-Ticaret'e Odaklanma , ISBN 1-59200-030-4
- Ron Penton: Oyun Programcıları için Veri Yapıları , Muska & Lipman/Premier-Trade, ISBN 1-931841-94-2 ( SDL ile oyun programlama örnekleri )
- John R. Hall: Linux Oyunları Programlama , No Nişasta, ISBN 1-886411-49-2 ( First SDL kitabı, Loki Games , online versiyonu arşivlenen: PDF at Wayback Machine (22 Ocak 2003) arşivlenmiş, LaTex kaynakları en Wayback Makine (arşivlenmiş 14 Şubat 2003))
- Shaun Mitchell tarafından SDL Oyun Geliştirme
- SDL Eğitimleri
- SDL 2.0 ile Oyun Geliştirme üzerine YouTube - 11 Şubat 2014 video Ryan C. Gordon