Графичен и игрови енджин–какво се крие зад това име?




Графичен и игрови енджин–какво се крие зад това име?

PCMagazine, Брой 1
Категория: Илюстратори , Игри , Технологии
Етикети: 3D , компютърни игри
PC MAGAZINE
21.1.2008

Графичен и игрови енджин–какво се крие зад това име?

Доста често в някоя статия се получава така, че авторът използва понятието графичен или игрови енджин – всъщност какво точно се крие зад тези словосъчетания? Преди да продължим към обясненията, ще отделя няколко думи за самото понятие „енджин“ като цяло. Нарицателното „енджин“ идва от английската дума engine и, както предполагам всички отлично знаят, тя означава буквално „двигател“. В случая се има предвид не толкова буквалното значение на думата, колкото обозначаването с единно име на комплекта програмни инструменти, благодарение на които става възможно онагледяването на виртуалната реалност в компютърните игри.

Дотук добре, но нека отбележа още нещо – много често игровият и графичният енджин се бъркат от потребителите, които си представят под тези две названия едно и също нещо. На практика графичният енджин представлява част (или модул) от игровия и се грижи само и единствено за визуализирането на графиката в играта. Тъй като той всъщност представлява технологии Добрил Доков Графичен и игрови енджин – какво се крие зад това име? една доста основна и важна част, нека първо разгледаме какво точно представлява той и какви компоненти включва в себе си.

Детайлите зад името 3D Engine

Може би за някои от вас ще прозвучи изненадващо, но обикновено, когато играчът се движи във виртуалната реалност на света, в който се намира, единствената част, която наистина съществува и се визуализира, е тази, която той вижда пряко. Това се прави единствено с цел повишаване на производителността на системата, която и без това е затрупана с редица други задачи от цялостния игрови енджин – на това ще се спрем малко по-късно. Ако трябва да използвам буквално сравнение, погледът на играча в играта може да се оприличи на лъч на фенерче в изцяло тъмна стая – това, което попада в обхвата на светлината, се вижда от нашия герой, докато оставащото в тъмнината – не. По този начин значителна част от натоварването над графичната карта се оставя за момента, когато то наистина ще е нужно.

Графичният енджин представлява именно програмната част от кода на играта, която се занимава с поредицата от изчисления, необходими за визуалното представяне на сцените в нея. Задачите, с които се занимава той, са няколко – първата и най- важна от тях е изчисляването на това кои обекти влизат в обхвата на зрението на потребителя възможно най-бързо. След като приключи с тази задача, следващото важно занимание на графичния енджин е да изобрази тази сцена – или, иначе казано, да я рендерира.


Освен тези две доста важни задачи, с които се занимава графичният енджин, в обхвата му на действие влиза още едно доста важно занимание – изобразяването не само на графиката като такава, но и движенията на героите в сцените. Обикновено, когато става въпрос за една игра, едно от нещата, които са от голямо значение, е реалистичността на движението на героите в нея. Често отличното изпълнение на тази задача остава почти незабелязано, тъй като от реалния живот сме привикнали именно на подобен тип поведение при ходене или тичане например. Обратно – лошото и нереалистично поведение на човешките фигури по време на ходене е способно напълно да съсипе иначе добрите впечатления Маркери във от всяка една игра.

Впрочем тук ще отворя малка скоба, за да отбележа още нещо, с което се занимава графичният енджин – често сме ставали свидетели на това как ръка или крак от фигурата на някой от сцената изчезва в иначе плътно изглеждащата стена. Това се дължи на факта, че положението на обектите в сцената се обозначава с по няколко маркера, поставени на определени места в тях. Следенето на тези маркери е още една задача, с която се занимава енджинът, респективно системата – когато тя е натоварена, нерядко някой от маркерите й се „изплъзва“ и отива на място, където не се предполага да се намира. С увеличаването на производителността както на графичните карти, така и на процесорите става възможно поставянето на повече маркери, както и по-добрият контрол чрез тях.

И така, нека се върнем на графичния енджин – сумарно основните задачи, за които той се грижи, са три. Това са проследяване на това какво влиза в зрението на играча, изчисление на това кои обекти трябва наистина да се изобразят и накрая самият процес на рендирането им. Останалата част от графиката се поема от т.нар. Аpplication Programming Interface, известен още като API. Накратко казано, API представлява програмен код, намиращ се или в самата операционна система, или в отделни библиотеки (DLL файлове). Именно в този код се съдържа информацията за това по какъв начин точно следва да се извърши дадено действие от някоя програма. В случая в графичните API се съдържа информацията за извършването на процеси като текстуризиране, прилагане на шейдъри или ефекти, обръщения към буферитеили паметта на видеокартата и т.н. В случая е важно да се направи разграничение между самите API модули и използващия ги софтуер, който често бива наричан и implementation на API. Сами по себе си API библиотеките са напълно неизползваеми, тъй като на потребителите им е необходима програма, която да знае не само как да разчете съдържанието на API модула, но и как да изпълни съдържащите се в него инструкции. В този ред на мисли може да се каже, че графичният енджин представлява имплементация на API, тъй като самият той използва комплекта библиотеки, предоставени му от DirectX/OpenGL.

Игрови енджин – цялостната картина

 

В началото споменах, че графичният енджин като такъв представлява част, или още модул, на цялостния игрови енджин. Именно игровият енджин се явява собствената разработка на дадено студио за производство на игри, тъй като нерядко се използва вече разработен от друга фирма графичен енджин. Подобни примери могат да се посочат много, но все пак нека посоча поне един – вече доста поостарялата игра Medal of Honor използва графичен енджин на ID Software, първоначално представен в Quake 3 Arena. Цялостният игрови енджин обаче е доста по-обемист и включва още модули, занимаващи се с входящите сигнали (например от клавиатурата и мишката), звука, мрежовата комуникация, изкуствения интелект, изчисленията на физиката и др. Особено интересна е последната част, която също както реализмът при движението може напълно да съсипе впечатлението от играта, ако не е реалистично изпълнена. Лично за мен пример може да се даде със съпоставянето на игрите Doom 3 и Half-Life 2. При втората използваният физичен енджин е наистина впечатляващ (и как ли не би бил, след като е разработка на Havok!), докато в Doom 3 реалистичното поведение на предметите определено не е сред достойнствата на играта.

Под названието „игрови енджин“ се крие именно описаният по-горе комплект от модули, занимаващи се с отделните задачи в играта. Той представлява също така най-високото ниво от гледна точка на слоевете в играта и е отговорен за синхронизирането на работата на останалите модули. Ето защо, когато за дадена игра се каже, че използва „графичния енджин“ на някоя фирма, това съвсем не означава, че тя няма собствен енджин. Просто за разработчиците на игри е далеч по-евтино и изгодно да използват вече написан чужд код за графиката и да съсредоточат усилията си върху разработката на самия игрови енджин и неговите особености. И още нещо, което съвсем не е маловажно – разработването на един графичен енджин далеч не приключва с неговото написване – с течение на времето към него се добавят още възможности, като се стига до момент, в който той не прилича по нито една характеристика на своя първообраз. Един чудесен пример в това отношение отново е енджинът на Quake 3, който в последните си версии включваше невероятни ефекти – например играта Call of Duty: United Offensive.

Ето защо, ако някоя игра в първоначалната си версия ви се стори грозновата – не бързайте да я съдите, графичният й енджин тепърва ще трупа мускули.

Съдържание: