Кіріспе

Тегін бағдарламалық қамтамасыз ету мультимедиа кітапханасы

Simple DirectMedia Layer (SDL) – компьютерлік мультимедиа аппараттық компоненттері үшін аппараттық абстракция қабатын қамтамасыз етуге арналған кросс-платформалық бағдарламалық қамтамасыз ету кітапханасы. Бағдарламашылар оны Android, iOS, Linux, macOS және Windows сияқты көптеген операциялық жүйелерде жұмыс істейтін жоғары өнімділіктегі компьютерлік ойындар мен басқа да мультимедиалық қосымшаларды жасау үшін пайдалана алады. SDL бейне, аудио, енгізу құрылғыларын, CD-ROM, жіптерді, ортақ нысандарды жүктеуді, желілік байланыстарды және таймерлерді басқарады. 3D графика үшін OpenGL, Vulkan, Metal немесе Direct3D11 (ескі Direct3D 9 нұсқасы да қолдау көрсетіледі) контекстін қолдануға болады. SDL-ді ойын қозғалтқышы деп санау – жиі кездесетін жаңылыс пікір. Дегенмен, кітапхана ойынды тікелей құруға немесе оның үстіне салынған қозғалтқыштар арқылы жанама түрде пайдалануға жарамды. Кітапхана C тілінде жазылған, ал мақсатты платформаға байланысты C++ немесе Objective C тілдерінде де болуы мүмкін, және C тілінде қосымша бағдарламалау интерфейсін ұсынады, сонымен қатар басқа тілдермен байланыс мүмкіндігі де бар. Бұл 2.0 нұсқасынан бастап zlib лицензиясының талаптарына сәйкес келетін тегін және ашық кодты бағдарламалық қамтамасыз ету, ал бұрынғы нұсқалары GNU Lesser General Public License талаптарына бағынады. 2013 жылы жарық көрген SDL 2.0 нұсқасы бұрынғы нұсқалардан айтарлықтай өзгеше болды, 3D аппараттық үдетуге көбірек мүмкіндік берді, бірақ бұрынғы нұсқалармен үйлесімділікті бұзды. SDL өнеркәсіпте, үлкен де, кіші де жобаларда кеңінен қолданылады. Кітапхананың веб-сайтында 700-ден астам ойын, 180 қосымша және 120 демонстрациялық нұсқа орналастырылған.

Тарих

Сэм Лантинга кітапхананы 1998 жылдың басында, Loki Software компаниясында жұмыс істеген кезде жасады. Бұл идея Windows қолданбасын Macintosh-қа көшіру кезінде туындады. Одан кейін ол SDL-ді Doom-ды BeOS-қа порттау үшін пайдаланды (Doom-ның бастапқы кодтарын қараңыз). SDL-мен бірге жұмыс істеу үшін SMPEG және OpenAL сияқты бірнеше басқа да тегін кітапханалар жасалды. Ол сондай-ақ 2008 жылы Galaxy Gameworks компаниясын құрды, SDL-ді коммерциялық тұрғыдан қолдау мақсатында, бірақ компанияның жоспарлары уақыт шектеулеріне байланысты қазір тоқтатылған. Galaxy Gameworks компаниясының жұмысын тоқтатқаннан кейін көп ұзамай Лантинга SDL 1.3 (кейін SDL 2.0 болады) zlib лицензиясымен лицензияланатынын хабарлады. Лантинга SDL 2.0-ді 2012 жылдың 14 шілдесінде жариялады, сонымен бірге ол Valve компаниясына қосылатынын да мәлімдеді, ал оның алғашқы нұсқасы компанияға қосылған күні жарияланды. Лантинга SDL 2.0.0 тұрақты нұсқасын 2013 жылдың 13 тамызында жариялады. SDL 2.0 – бұл SDL 1.2 код базасының маңызды жаңартуы, бұрынғы нұсқалармен үйлесімсіз жаңа API-мен. Ол 1.2 API-нің бірнеше бөлігін көптеген кіріс және шығыс опцияларын қолдаумен алмастырады. Жаңа мүмкіндіктердің ішінде бірнеше терезелерді қолдау, аппараттық үдетілген 2D графика және жақсартылған Unicode қолдауы бар. Mir және Wayland қолдауы SDL 2.0.2 нұсқасында қосылды және SDL 2.0.4 нұсқасында әдепкі бойынша қосылды. 2.0.4 нұсқасы Android үшін де жақсырақ қолдау ұсынады.

Бағдарламалық жасақтама архитектурасы

SDL – ойынға қажетті операциялық жүйенің арнайы функцияларын қамтитын қабықша. SDL-дің жалғыз мақсаты – бірнеше операциялық жүйеде осы функцияларға қолжеткізу үшін ортақ платформа құру (платформааралық қолдау). SDL 2D пикселдік операциялар, дыбыс, файлдарға қолжеткізу, оқиғаларды өңдеу, уақыт және жіптерді (threading) қолдауды қамтамасыз етеді. Ол көбінесе OpenGL-ді графикалық шығысты орнату және тышқан мен пернетақтадан кіріс алу арқылы толықтырады, себебі OpenGL тек графиканы көрсетумен (rendering) айналысады. Simple DirectMedia Layer-ді пайдаланатын ойын әрбір операциялық жүйеде автоматты түрде іске қосылмайды; қосымша бейімделулер қажет. Бұл бейімделулер SDL операциялық жүйе ұсынатын жиі қолданылатын функциялар үшін абстракциялық API-лерді қамтитындықтан, ең төменгі деңгейге дейін азайтылады. SDL синтаксисі функцияларға негізделген: SDL-дегі барлық операциялар ішкі бағдарламаларға (функцияларға) параметрлерді жіберу арқылы орындалады. SDL-ге қажетті нақты ақпаратты сақтау үшін арнайы құрылымдар қолданылады. SDL функциялары бірнеше түрлі жүйелерге бөлінген.

Қабылдау және асырап алу

SDL жылдар бойы көптеген коммерциялық және коммерциялық емес бейне ойын жобаларында қолданылды. Мысалы, MobyGames 2013 жылы SDL-ді пайдаланатын 120 ойынды, ал SDL веб-сайтының өзі 2012 жылы 700-ге жуық ойынды тізімдеген. Маңызды коммерциялық мысалдар – Angry Birds, Unreal Tournament және Valve компаниясының Source Engine-ін пайдаланып жасалған ойындар, ол платформааралық үйлесімділік үшін SDL-ді кеңінен қолданады; ашық кодтық доменнен OpenTTD, The Battle for Wesnoth немесе Freeciv. Linux, Mac және Android үшін танымал Humble Indie Bundles ойындарының кросс-платформалық шығарылымдары көбінесе SDL негізінде жасалған. SDL сонымен қатар, ескі кодты жаңа платформаларға кейінгі порттау үшін жиі қолданылады. Мысалы, PC ойыны Homeworld SDL арқылы Pandora қол құрылғысына және Android үшін Jagged Alliance 2 ойынына көшірілді. Сонымен қатар, бірнеше бейне ойын емес бағдарламалар SDL-ді пайдаланады; мысалдар – DOSBox, FUSE ZX Spectrum эмуляторы және VisualBoyAdvance. SDL-ді пайдаланып дамыту үшін бірнеше кітап жазылды (құрамына қараңыз). SDL мультимедия және компьютерлік ғылымдарды оқытатын университет курстарында қолданылады, мысалы, 2010 жылы Кадис университетінде libSDL-ді пайдаланып ойын бағдарламалау бойынша семинарда немесе 2015 жылы UTFPR (Ponta Grossa кампусы) ойын дизайны пәнінде.