Խաղային օպտիմիզացիան ամենա կարևոր հանգամանքերից է սահուն ու որակյալ խաղ ունենալու համար: Սա է պատճառը, որ շատ հոդվածներում, նյութերում, ռեվյուներում ու այլ տեսանյութերում հաճախակի ենք առնչվում վերջինիս հետ: Եկեք հասկանանք, թե ինչ է վերջապես այս անտեսանելի, բայց խիստ կարևոր երևույթը:
Բոլորիս համար արդեն հասկանալի է, որ խաղային կազմության 99 տոկոսը դա կոդավորում է: Կոդավորում, որը գրվում է ծրագրավորող-նախագծողների կողմից և որը թույլ է տալիս գործողություններ կատարել այս խաղում կոդավորման հաշվին: Ցանկացած գործողություն, քայլ, վազք, թռիչք, կրակոց ու մնացած ամեն բան տեղի է ունենում համապատասխան գրված հրահանգի միջոցով: Հետևաբար, որքան մեծ է պրոյեկտը և որքան շատ հնարավորություններ է մեզ տրված այս խաղային աշխարհում, այնքան այս կոդավորումները շատ են իրենց հերթին: Իհարկե, մեզ համար դժվար չէ այդ ամենը պահել հիշողությունում ու հարկ եղած դեպքում կիրառել դրանք, անգամ զվարճալի է շատ, բայց ահա մեր համակագիչների համար այս ամենը ստեղծում է իրական դժվարություններ: Այլ կերպ ասած, համակարգիչը, որքան էլ այն հզոր լինի, շատ դեպքերում պարզապես չի կարողանում ժամանակին մեզ հասցնել համապատասխան գրված այն հրահանգը, որը մենք տալիս ենք խաղում՝ օրինակ ավտոմեքենա նստելու ժամանակ: Այս կոդավորումներն ավելի կոկիկ լինելու, ավելի հասանելի լինելու համար էլ առաջ է եկել հենց օպտիմիզացիա հասկացությունը: Պետք չէ օպտիմիզացիան ընկալել որպես առանձին մի տեխնոլոգիա: Բավական է հասկանալ, որ օպտիմիզացիան դա նույն աշխատանքն է ավելի սեղմ, ավելի հասանելի գրված կոդ ներկայացնելով իրենից: Օրինակ բերեմ հենց այս հոդվածի վրա: Ես այն կազմում եմ, օգտագործելով ենթադրենք 10 հազար բառ: Սա երկար է ու կձանձրացնի կարդալու ընթացքում: Կրճատելու համար ես որոշում եմ օգտագործել 3 հազար բառ, միաժամանակ Ձեզ տալով հոդվածի ընդհանուր իմաստը, միտքը: Հենց սա էլ կոչվում է օպտիմիզացիա - այսինքն ավելի կրճատ կերպով ներկայացնել այն ամենը, ինչը ներկայացվում է: Նույն մոտեցումն առկա է նաև խաղերում: Կրճատելով կոդավորումը, հրահանգները դարձնելով ավելի գրագետ ու մաքուր, խաղն ապահովել սահուն գեյմփլեյով:
Խաղային օպտիմիզացիայի հանգուցալուծմանը հասնելու համար գեյմնախագծողներն օգտագործում են տարբեր մեթոդներ: Բայց հիմնական որոշումն այս ուղղության մեջ դա նույնականացման մեթոդն է: Օրինակ մենք խաղում տեսնում ենք մեծ քաղաք, որտեղ կան շատ շինություններ - այս շինություններից նախագծողները որպես հիմք են վերցնում մեկ-երկուսը, և դրանք տեղափոխումից բացի ենթարկում են ձևափոխության: Արդյունքում սկզբնական շինության հիմքի վրա ստեղծում են տասնյակ և ավելի կառույցներ:
Այլ մեթոդ որպես այդպիսին կարելի է համարել այն ռեսուրսների առկայությունը, որ մենք չենք տեսնում: Սա նախագծողների համար բավական շահավետ է, քանի որ լրացուցիչ ժամանակ չեն ծախսում ռենդերինգի վրա: Օրինակ, եթե մենք GTA V-ում քայլում ենք առաջ, մեր թիկունքում շատ օբյեկտներ համապատասխան գրված պրոցեսի հաշվին անհետանում են: Մենք սա չենք տեսնում, բայց դրանք իսկապես այդ պահին անհետացած են լինում: Եթե փորձենք դառնալ, կրկին կհայտնվեն սրանք, բայց այս անգամ արդեն կանհետանան մեր դիմացում եղած օբյեկտները: Չի բացառվում, որ լինեն դեպքեր, երբ տեքսթուրաների վերականգման պրոցեսը չհասցնի գալ նախկին տեսքին: Նման դեպքերում կարելի է տեսնել լուսանկարրում առկա պատկերը:
Իսկ ինչո՞ւ հենց տները և ոչ թե ասենք մոտակայքում գտնվող մարդիկ: Նախագծման ընթացքում ծրագրավորողները հիմք են ընդունում երկու մակարդակներ՝ առաջնային և երկրորդական: Սա արվում է նրա համար, որպեսզի ճիշտ ապահովում հասցնեն համակարգին: Մեր կերպարը, շրջակայքում գտնվող մարդիկ, որոնց հետ մեր կերպարն ունակ կլինի փոխգործունեություն սկսել, կամ սովորական զենքերը, որոնք մենք կկարողանանք վերցնել և այլն, սրանք բոլորը պատկանում են առաջնային մակարդակին: Սրանք գլխավորներն են, որոնք խաղում առաջնային դեր են կատարում: Իսկ տները, շինությունները, ծառերը և այլն, սրանք պատկանում են արդեն երկրորդական մակարդակին ու համեմատած առաջինի հետ, ավելի շատ են ենթարկվում խախտումների: Սրա համար էլ հաճախակի կարելի է տեսնել ամբողջապես չբեռնված պատկերի տեսքը:
Չնայած օպտիմիզացիայի կարևորությանը, շատ դեպքերում նաև անհարաժեշտությանը՝ ի դեմս նախագծողների, սա միշտ չէ, որ պահպանվում է: Ու որքան էլ զարմանալի չլինի, անագամ հատուկ չեն պահպանվում: Պետք է հասկանալ, որ խաղի ստեղծումը պահանջում է ժամանակ: Ու քանի որ այդ ժամանակը խիստ սահմանափակ է լինում գեյմնախագծողների համար, նրանք չեն հասցնում արդեն օպտիմիզացիայի ենթարկել այն կոդը, որը գրվել է խաղի ժամանակ: Բնականաբար այս օպտիմիզացիան ևս պահանջում է երկար ժամանակ: Մի գուցե հարց առաջանա, թե ինչու չեն օպտիմիզացնում զուգահեռ, կամ հենց սկզբից: Սա անհնար է ընկներներ: Ինպես օպտիմիզացնեն մի բան, որը դեռ չի ստեղծվել և կամ ավարտուն տեսքին չի հասել:
Օպտիմիազացման աշխատանքներն առհասարակ մտնում են պրոյեկտ պոստպրադաքշնի մեջ: Հենց այս շրջանում են կրճատվում այս կամ այն խնդիրները, այս շրջանում են լուծվում թերությունները, բայց նույնիսկ այս շրջանում նախագծողները չեն հասնում տեղավորվել ժամանակի մեջ ու արդյունքում վերջնական տարբերակը ուղարկվում է սպառողին, այդպես էլ ոչ հարյուր տոկոսանոց օպտիմիզացիայով: Ու ահա այս դեպքում, երբ Ձեր համակարգը միջինից թույլ է կամ չի համապատասխանում տվյալ խաղի չափանիշներին, որոնք մինչ այդ հեղինակները հրապարակել էին, որպեսզի դուք Ձեր վերջին աշխատավարձը տրամադրեիք նոր տեսաքարթ գնելու համար, բայց դուք այդպես էլ չարեցիք դա, ապա այդ դեպքում Դուք և Ձեր համակարգիչը ստիպված կլինեք տառապել այս Չօպտիմիզացման պատճառով:
Պետք է նաև նկատել շատ կարևոր մի բան: Ժամանակին համընթաց մեծ զարգացում է ունենում նաև տեխնիկան և տեխնոլոգիան: Առաջ են գալիս նոր լուծումներ, նոր էֆեկտներ և այլ և այլն, որոնք ավելի հաճելի ու գեղեցիկ են դարձնում խաղային գրաֆիկան ու խաղն առհասարակ: Ու մենք սիրում ենք օգտտվել այս բազմազանությունից և որոշ դեպքերում չենք ուզում հասկանալ, որ այդ լրացուցիչ հաճույքները պահանջում են նաև ավելյալ ռեսուրսներ, որը վերցնում են մեր պրոցեսսորից կամ տեսաքարթից: Ու երբ դրանց պակասի հետևանքով առաջանում են խնդիրներ, մենք առանց մտածելու ասում ենք, որ հեղինակները վատ օպտիմիզացիաեն կատարել: Հա, լինում է, որ իսկապես վատ օպտիմիզացիաներ են հանդիպում: Բայց շատ դեպքերում նաև լինում են, որ օպտիմիզացիան կատարվել է առավելագույնս, պարզապես տվյալ սենյակում լույսի առկայության համար գրված այդ կոդ-հրահանգը այլ կերպ գրել անհնար է ՊԱՐԶԱՊԵՍ:
Իսկ ինչ տարբերություն կարող է լինել PC պլատֆորմայի և կոնսոլների միջև օպտիմիզացիայի հարցում: Չնայած Անհատական Համակարգիչների անսահմանափակ հնարավորություններին, կոնսոլներն ունակ են խաղերում ավելի լավ դրսևորել իրենց, թեկուզ 30 fps սահմաններում: Այս դեպքում ամեն ինչ հասկանալի կդառնա, եթե փորձենք ըմբռնել մի պարզ բան: Իրականում ինչ է Անհատական Համակարգիչը և ինչ է կոնսոլը: Սկսենք վերջից: Կոնսոլը «խաղալիք» է: Այս խաղային սարքը նախատեսված է հենց խաղալու ու խաղերի համար: Նրա առաջադրանք է օգտատիրոջն ապահովել խաղով ու նա դա անում է շատ լավ: Կոնսոլում առկա ցանկացած սարք՝ պրոցեսսոր, տեսաքարթ և այլն, ստեղծվել է, հաշվի առնելով միայն մեկ բան՝ Խաղ: Իսկ Անհատական Համակարգիչը թեպետ թույլ է տալիս խաղալ բայց նա կատարում է նաև այլ առաջադրանքներ, որոնք ոչ տասն են ոչ էլ հարյուրը: Այդ առաջադրանքները եթե ես ասեմ հասնում են հազարի, դուք ավելացրեք տաս հազարի: Ու պետք է նաև իմանալ, որ կոնսոլներում առկա սարքերը հիմանակնում լինում են ստանդարդի բերված: Օրինակ, 3 միլիոն կոնսոլնեերի մոտ յուրաքաչյուր 1000-ի մոտ է, որ կարող է դրանում առկա տեսաքարը լինի այլ մոդելի: Իսկ նույն թվաքանակի Անահտական Համակարգիչների դեպքում յուրաքանչյուր 10-րդը կարող է ունենալ այլ տեսաքարթ: Սա արդեն խաղ ստեղծողների մոտ դժվարություններ է առաջ բերում: Ժամանակ ծախսել օպտիմիզացնել պրոյեկտը ամեն տեսաքարթի համար, սա աներևակայելի է, առավել ևս, որ այս տեսաքարթում ինչ-որ օբյեկտի օպտիմիզացումը չի կարող երաշխիք հանդիսանալ, որ մյուս տեսաքարթում դա չի խախտվի: Ու բացի այդ, Անհատական Համակարգիչների օգտատերերը գոնե լուծում կունենան, եթե օպտիմիզացիան այս պլատֆորմայում նրանց սրտով չլինի: Գոնե հնարավորություն կունենան գնել նոր տեսաքարթ, իսկ ահա կոնսոլների օգտատերեը զրկված են սրանից և այս պատճառով էլ գեյմնախագծողները մշտապես կենտրոնանում են կոնսոլների վրա:
Ահա, ընկերներ: Սա այն ամենն էր, ինչ պետք է իմանալ օպտիմիզացիայի ու նրա բարդությունների մասին: Իհարկե համացանցում կգտնվեն ավելի ծավալուն հոդվածներ այս թեմայով, ուղակի ես որոշեցի այս անգամ օպտիմիզացիայի ենթարկել նյութը և այն հասցնել Ձեզ: Եթե կունենք հարցեր, կարող եք կապնվել մեր Պաշտ. Էջին:
Comments