Кіріспе

Ойын әзірлеу бағдарламалаудың бір саласы – бейне ойындар.

Ойын бағдарламалау, ойын әзірлеудің бір саласы болып табылады және бейне ойындардың бағдарламалық жасақтамасын жасауды қамтиды. Ойын бағдарламалауға белгілі бір тілде бағдарламалық жасақтама жасау және компьютерлік бағдарламалау саласындағы мол дағдылар қажет, сондай-ақ келесі салалардың бірі немесе бірнешесінде мамандану керек: модельдеу, компьютерлік графика, жасанды интеллект, физика, аудио бағдарламалау және кірістіру. Көп ойыншылы ойындар үшін желілік бағдарламалау білімі қажет (осының нәтижесінде алынған код, өнімділік сипаттамаларымен қатар, ойыншылар мен бағдарламашылар тарапынан ойынның желілік коды деп аталады). Кейбір жанрларда, мысалы, жартылай жекпе-жек ойындарында, желілік бағдарламалаудың жоғары деңгейі талап етіледі, себебі желілік код және оның қасиеттері (мысалы, жауап беру уақыты) ойыншылар мен сыншылар үшін ойын сапасының маңызды көрсеткіштері болып саналады. Көп ойыншылы онлайн ойындар (MMOG) үшін дерекқорларды бағдарламалау және жоғары деңгейдегі желілік бағдарламалау туралы одан да көп білім қажет. Көбінесе кәсіби ойын бағдарламашыларымен айналысса да, баспа компаниясымен байланысы жоқ тәуелсіз әзірлеушілердің белсенді қауымдастығы бар.

Даму процесі

Кәсіби ойын әзірлеу көбінесе ойын дизайнымен басталады, ал ойын дизайнының өзі бірнеше түрлі бастау нүктесі болуы мүмкін. Кейде ойын әзірлеу процесі нақты дизайн болмастан, тек тәжірибелер тізбегі ретінде басталады. Мысалы, ойын дизайнері Уилл Райт The Sims ойынын жасауды бағдарламашыларға бірнеше идеяны тәжірибелеуді тапсыру арқылы бастады.

Үлгілеу

Бағдарламашылар жиі ойын идеялары мен мүмкіндіктерінің прототиптерін жасауға міндетті болады. Прототиптеудің көп бөлігі алдын ала өндіріс кезінде, жобалау құжаты толыққанша дайын болмас бұрын жүргізілуі мүмкін, және жобаның қандай мүмкіндіктерін анықтауға көмектеседі. Прототиптер көбінесе идеяларды тестілеу немесе тұжырымдаманы дәлелдеу үшін, алдын ала жобалауға аз уақыт жұмсап, жылдам әзірленеді. Олардың қатесіз жұмыс істеуі күтілмейді, бірақ жаңа, кейде ерекше идеяларды сынап көру үшін жасалады.

Ойынның дизайны

Бағдарламашының негізгі жұмысы ойын дизайнын жасау болмаса да, бағдарламашылар, ойын суретшілері сияқты, дизайнға үлес қосады. Ойын дизайнері ойын дизайны үшін идеялар мен стратегиялар алу үшін продюсерден, сондай-ақ көркемдік жетекші мен бағдарламалау жетекшісінен кеңес сұрайды. Көбінесе жетекші емес қызметтегі адамдар да, мысалы, мәтін жазушылар және басқа бағдарламашылар мен суретшілер де өз үлесін қосады. Бағдарламашылар ойынның жобалау құжатын тығыз қадағалайды. Ойын даму барысында, бағдарламалау шектеулері мен жаңа мүмкіндіктер анықталғанда және пайдаланылғанда жобалау құжаты өзгеріске ұшырайды.

Өндіріс

Өндіріс кезінде бағдарламашылар ойынның жобалау құжатында сипатталған ойынды жасау үшін көптеген бастапқы код жасайды. Осы процесте жобалау құжаты шектеулерге байланысты өзгертіліп, немесе жаңа мүмкіндіктерді пайдалану үшін кеңейтілуі мүмкін. Жобалау құжаты – бұл "тірі құжат", оның өмірінің көп бөлігі бағдарламашылардың кестесіне, қабілетіне және шеберлігіне байланысты. Көптеген бағдарламашылар ойынның мазмұнына қатысты пікір білдіргенімен, ойын өндірушілердің көпшілігі ойын бағдарламасын дамыту барысы туралы бас бағдарламашыдан ақпарат алады. Бас бағдарламашы ойынның барлық аспектілерінің жай-күйін білуге және шектеулерді анықтауға жауапты. Сондай-ақ, бас бағдарламашы бағдарламашылар ұсынған мүмкін болатын жаңа мүмкіндіктерді де жеткізе алады. Бүгінгі таңдағы графикалық контенттің байлығын ескере отырып, бағдарламашылар көбінесе суретшілермен бірлесіп жұмыс істеуі керек. Бұл, әрине, бағдарламашының қызметіне байланысты. Мысалы, 3D графика бағдарламашысы ойынның 3D модельдеушілерімен стратегиялар мен дизайн мәселелерін талқылап, тығыз жұмыс істеуі мүмкін, ал жасанды интеллект (AI) бағдарламашысы суретшілермен өте аз немесе мүлдем қарым-қатынасқа түспеуі де мүмкін. Суретшілер мен деңгей дизайнерлеріне олардың жұмысына көмектесу үшін бағдарламашылар өз еріктерімен немесе шақыру бойынша құралдар мен қосымша бағдарламаларды жасауы мүмкін. Олардың көпшілігі нақты бір мақсатқа арналған болады және уақыт шектеулеріне байланысты (мұндай құралдарды жасауға кеткен уақыт көбінесе ойын жоспарына енгізілмейді), сондай-ақ олар тек ішкі пайдалануға арналғандықтан, қателерге ұшырауы мүмкін. Көптеген ойын құралдары жылдам дамыту үшін RAD тілдерінде жасалады және ойын аяқталғаннан кейін қолданыстан шығарылуы мүмкін.

Сынау

Кәсіби ойын тестілеушілер жүргізетін сапаны қамтамасыз етудің ресми тестілеу процесі ойын әзірлеудің орта кезеңінде басталады. Жоғары бюджетті ойындар алғашқы ойналатын альфа нұсқасымен сынақтан өтуі мүмкін, ал төмен бюджетті және жеңіл ойындар шығарылымға дайын нұсқасы келгенге дейін сынақтан өтпеуі мүмкін. Бағдарламашылардың міндеті – QA командалары тапқан қателер мен ақауларды түзету.

Аяқталу алдында

Соңғы тапсырмалар ойынды "жақсартуды" қамтиды, мысалы, бағдарламашылар сынақтың соңғы кезеңдерінде пайда болатын кездейсоқ қателерді – ең шағыннан бастап, өте ауырларына дейін – түзетуі мүмкін. Ойын жасаушылар бета-тестілеу кезеңін өткізуі мүмкін, бірақ оның мағынасы әр жасаушыда әртүрлі болады. Көбінесе бета-версияда ойынның барлық мүмкіндіктері болады, бірақ кейбір қателер немесе толық емес мазмұн кездесуі мүмкін. Аз ғана ойындарға, мысалы, ойын серверлерінің жүктемеге төзімділігін сынау үшін, жалпыға қолжетімді бета-тестілеу кезеңі беріледі. Ойын дайын деп танылғанда, ол "алтынға жетті" деп айтылады және баспагерге жіберіледі. Баспагер, жағдайға қарай, оны өз сапа бақылауынан өткізуі немесе алтын үлгісінен ойынды көбейтуді бастауы мүмкін.

Сақтау

Ойын шығарылғаннан кейін, бейне ойынның техникалық қолдау кезеңі басталады. Бағдарламашылар мүмкіндігінше көп қате туралы хабарлама алу үшін белгілі бір мерзім күтеді. Дамытушы жеткілікті пікір жиналды деп ойласа, бағдарламашылар түзету жұмыстарын бастайды. Түзетуді дамытуға апталар немесе айлар қажет болуы мүмкін, бірақ ол ойындағы көптеген қателерді және мәселелерді жоюға бағытталған. Кейде түзетуге қосымша мүмкіндіктер немесе контент қосылуы мүмкін, тіпті ойын процесі де өзгеруі мүмкін.

Ұзақтығы

Қазіргі заманғы ойындардың көпшілігін жасауға бірден үш жылға дейін уақыт кетеді. Даму мерзімі бірнеше факторға байланысты, бірақ ойын дизайнының өте басындағы кезеңдерден басқа, дамудың барлық кезеңдерінде бағдарламалау қажет.

Құралдар

Басқа бағдарламалық жасақтама сияқты, ойын әзірлеу бағдарламалары да бастапқы кодтан нақты бағдарламаға (атқарылатын файл деп аталады) компилятор арқылы құрастырылады. Бастапқы кодты кез келген мәтіндік редакторда жазуға болады, бірақ көптеген кәсіби ойын бағдарламашылары толыққанды интеграцияланған даму ортасын пайдаланады. Қай IDE-ні пайдалану керектігі – мақсатты платформаға байланысты. IDE-лерден басқа, көптеген ойын әзірлеу компаниялары өздерінің ішкі пайдалануы үшін арнайы құралдар жасайды. Олардың кейбіреулері прототиптер мен активтерді түрлендіру құралдарын қамтиды (мысалы, суреттерді ойынның жеке форматына өзгертетін бағдарламалар). Кейбір арнайы құралдар тіпті ойынмен бірге берілуі мүмкін, мысалы, деңгей редакторы. Ойын әзірлеу компаниялары өз бағдарламашыларын ең жақсы құралдармен қамтамасыз ету үшін мыңдаған доллар жұмсауға жиі дайын. Жақсы жабдықталған бағдарламашының кеңсесі немесе жұмыс орны екі-үш даму жүйесімен және бірнеше мониторлармен толық болуы мүмкін.

Бағдарламалау тілдері

Тіл ерекшеліктері Ассемблер Мүмкіндігінше минималды CPU жүктемесі C Көп танымал, кеңінен қолданылатын, көптеген API, машиналық кодқа компиляцияланады C++ Объектіге бағытталған, кеңінен танымал, көптеген API, машиналық кодқа компиляцияланады Java Объектіге бағытталған, автоматты түрде қоқыс жиналады, кеңінен қолданылатын (виртуалды машина арқылы) C#, Visual Basic NET және т.б. Объектіге бағытталған, автоматты түрде қоқыс жиналады, Microsoft өнімдерімен байланысады Objective C, Swift Объектіге бағытталған, Apple өнімдерімен байланысады Lua, Python, JavaScript, Tcl және т.б. Таныс синтаксис, жоғарыда аталған тілдерге оңай енгізіледі, көбінесе скрипттер үшін қолданылады Lisp, Pascal, Perl, Smalltalk және т.б. Көбінесе қолданылмайтын ойын тілдері, бірақ танымал кітапханаларға қосылымдар жиі кездеседі Ойынның бастапқы дизайны келісілгеннен кейін, даму тілі таңдалуы керек. Таңдау көптеген факторларға байланысты, мысалы, бағдарламалаушылардың тілді білу деңгейі, мақсатты платформалар, орындалу жылдамдығының талаптары және қолданылатын ойын қозғалтқыштары, API немесе кітапханалар тілі. Компьютерлер үшін таңдалған тіл көбінесе жеке талғамға байланысты болады. SDL және Allegro сияқты танымал кітапханаларға тілдік байланыстар кең таралған, ал қазіргі компиляцияланатын тілдерде жазылған кодтың орындалу жылдамдығы арасындағы айырмашылық көріне алмайды. Ең танымал тілдер әдетте процедуралық немесе объектіге бағытталған және компиляторлар арқылы іске асырылады; мысалы, C және Java. Дегенмен, әзірлеушілер доменге тән ерекшеліктерді, мысалы операциялық жүйемен байланыстыруды және онлайн видео ойындарда кері инженерияға қарсы тұруды ескере алады. Көптеген ойындар бір тілде ғана жазылмайды, екі немесе одан да көп тілді біріктіруі мүмкін; мысалы, танымал ойын қозғалтқышы Unity C, C++ және C# тілдерінде жазылған әртүрлі бөліктерді қамтиды. Консольдер үшін мақсатты платформаның қолдауы көбінесе ең маңызды фактор болып табылады. Бұрын консольдер үшін видео ойындар көбінесе ассамблерде жазылған, себебі жад және процессор жылдамдығы шектеулі болған. Алайда, технология жетілген сайын консольдерде ойын әзірлеудің мүмкіндіктері де артты. Nintendo, Microsoft және Sony әрқайсысының Wii U, Nintendo Switch, Xbox One және PlayStation 4 консольдары үшін әртүрлі SDK бар. Жоғары деңгейлі скрипт тілдері жиі құрастырылған бағдарламалау тілінде жазылған негізгі ойынның еншілес кеңейтулері ретінде қолданылады, бұл бастапқы әзірлеушіге де, ойынды өзгертуді қалайтын әркімге де ыңғайлы. Lua өте танымал таңдау, өйткені оның API ANSI C-де жазылған және тіл басқа қосымшаларға енгізілуі үшін жасалған. Көптеген әзірлеушілер өздерінің ойындары үшін, мысалы id Software-дің QuakeC және Epic Games-тің UnrealScript сияқты, арнайы тілдер жасады.

API және кітапханалар

Ойын бағдарламалаудағы маңызды шешім – егер болса, қандай API және кітапханаларды қолдану. Бүгінде ойын бағдарламалаудың маңызды міндеттерін жеңілдететін көптеген кітапханалар бар. Кейбір кітапханалар дыбысты өңдеу, кірістіру және графикалық көрсетумен айналысады. Ал кейбіреулері жол табу сияқты жасанды интеллект міндеттерінің бір бөлігін орындай алады. Тіпті ойын бағдарламалаудың көп бөлігін өздігінен атқаратын, тек ойын логикасын кодтауды талап ететін толыққанды ойын қозғалтқыштары да бар. Қандай API және кітапханаларды таңдау, көбінесе нысаналық платформаға байланысты. Мысалы, PlayStation 2 үшін жасалған кітапханалар Microsoft Windows үшін қолжетімді болмауы мүмкін, керісінше де солай. Дегенмен, платформалар аралық әзірлеуге мүмкіндік беретін немесе оны жеңілдететін ойын фреймворктері де бар, сондықтан бағдарламашылар бір тілде ойынды бағдарламалап, оны бірнеше платформада – Wii, PlayStation 3, Xbox 360, PSP және Microsoft Windows сияқты платформаларда іске қоса алады.

Басқа АЖҚ

Microsoft Windows-та бағдарлама жасау үшін DirectX-тің түрлі API-лерін деректерді енгізу, дыбыс эффектілері, музыка, желілік байланыс және бейнелерді ойнату үшін қолдануға болады. Бұл міндеттерді орындау үшін көптеген коммерциялық кітапханалар бар, бірақ DirectX тегін болғандықтан, ол ең көп таралған. Консольдерді бағдарламалау үшін консоль өндірушілері графиканы көрсету және ойынды әзірлеудің басқа да міндеттерін орындауға мүмкіндік береді. Консоль өндірушілері сонымен қатар толыққанды әзірлеу жүйелерін ұсынады, оларсыз өз жүйелері үшін ойынды заңды түрде шығаруға немесе әзірлеуге болмайды. Үшінші тарапты әзірлеушілер де осы міндеттердің бірін немесе бірнешеуін жеңілдетуге көмектесетін құралдар жиынтығын немесе кітапханаларды сатады, сондай-ақ платформалар арасында әзірлеу мүмкіндіктері сияқты қосымша мүмкіндіктер ұсынады.

Әуесқойлар

Әуесқойлар бағдарламалауға кеңінен қолжетімді жалғыз платформалар – Android, iOS, Windows, Mac, Linux сияқты тұтынушылық операциялық жүйелер. Себебі ойын консольдерінде әзірлеу үшін мыңдаған доллар тұратын арнайы әзірлеу жүйелері қажет. Көбінесе оларды консоль өндірушісінен алу керек, және олар тек кәсіби ойын студияларына сатылады немесе жалға беріледі. Бірақ, Microsoft бұрын Microsoft Windows және Xbox 360 платформаларында жұмыс істейтін XNA ойын әзірлеу құралын таратқан. XNA қолдаудан тоқтатылды, бірақ MonoGame және SharpDX сияқты басқа жобалар ойын кодтауға сондай қолжетімділікті қамтамасыз етуге тырысады. Соңғы кезде Android мобильді әзірлеушілердің таңдаған ең танымал хобби платформасы болып табылады. Кейбір әуесқойлар өздері жасаған ойындарды (homebrew) дамытады, әсіресе портативті жүйелерге немесе өзгертілген консольдерге арналған. Кейбір бағдарламалық инженерия студенттері бағдарламалау тілін немесе операциялық жүйені үйрену үшін жаттығу ретінде ойындарды бағдарлайды. Әуесқойлар ойын әзірлеуге көмектесетін бағдарламалық пакеттерді де пайдалана алады, мысалы Adobe Animate, Unity, Android Studio, pygame, Adventure Game Studio, Roblox Studio, GameMaker Studio, Godot, Unreal Engine, Pixel Game Maker MV немесе Construct.