Кіріспе
id Software компаниясы жасаған ойын тетігі Quake — id Software компаниясының 1996 жылғы Quake ойыны үшін жасаған ойын тетігі. Ол нақты 3D уақыт режимінде көрсетуді қамтамасыз етеді. 2012 жылдан бері ол GNU General Public License v2.0 немесе одан кейінгі нұсқаларының шарттарымен лицензияланды. Жарыққа шыққаннан кейін Quake тетігі бірден тармақталды. Тегіктің көп бөлігі Quake II және Quake III Arena ойындарында сақталды. Quake тетігі, Doom тетігі сияқты, әлемді көрсетуді оңтайландыру үшін екілік кеңістікті бөлу (BSP) әдісін қолданды. Quake тетігі жылжымалы нысандар үшін Gouraud көлеңкелеуін, ал жылжымайтын нысандар үшін статикалық жарық картасын пайдаланды. Тарихи тұрғыдан алғанда, Quake тетігі оның ізбасары Quake II тетігінен бөлек тетік ретінде қарастырылды. Quake және Quake II код базалары жеке GPL релиздері болғанымен, екі тетік те қазір id Tech 2 нұсқалары болып саналады.
The Quake engine is the game engine developed by id Software to power their 1996 video game Quake. It featured true 3D real time rendering. Since 2012, it has been licensed under the terms of GNU General Public License v2.0 or later. After release, the Quake engine immediately forked. Much of the engine remained in Quake II and Quake III Arena. The Quake engine, like the Doom engine, used binary space partitioning (BSP) to optimise the world rendering. The Quake engine also used Gouraud shading for moving objects, and a static lightmap for non moving objects. Historically, the Quake engine has been treated as a separate engine from its successor, the Quake II engine. Although the codebases for Quake and Quake II were separate GPL releases., both engines are now considered variants of id Tech 2.
Жылдамдықты арттыру үшін 3D күрделілігін азайту
Quake - бұл 3D ортаның кейбір элементтерін алдын ала өңдейтін және алдын ала көрсетілетін арнайы карта жобалау жүйесін қолданған алғашқы нағыз 3D ойын, бұл сол кездегі 50–75 МГц процессорларда ойынды ойнағанда қажетті өңдеуді азайту үшін жасалған. Ойын өтетін 3D орта карта деп аталады, бірақ ол 2D кеңістік емес, үш өлшемді болып табылады. Карта редакторы бағдарламасы қоршаған ортаны құру үшін өлшемдері мен бұрылысын өзгертуге болатын «щеткалар» деп аталатын бірнеше қарапайым 3D геометриялық нысандарды пайдаланады. Щеткалар орналастырылып, жабық, бос, көлемді кеңістік құрылады, ал дизайн аяқталғаннан кейін карта рендерлеу алдын ала өңдегіші арқылы өтеді. Алдын ала өңдегіш картадағы екі түрлі бос орынды табу үшін қолданылады: ойын ойналатын щеткалармен қоршалған бос орын және ойыншы ешқашан көрмейтін щеткалардың сыртындағы бос орын. Алдын ала өңдегіш ойын кеңістігінен тыс орналасқан жеке щеткалардың артқы беттерін алып тастайды, сонда жабық ойын кеңістігінің сыртқы шекарасын анықтайтын бірнеше көпбұрыш қалады. Әдетте, карта алдын ала өңделгеннен кейін оны қалыпты тәсілмен қайта өңдеу мүмкін емес, өйткені бастапқы щеткалар кішкентай бөліктерге бөлінеді. Оның орнына, щеткалармен бірге карта редакторының бастапқы деректері сақталады және картаның жаңа нұсқаларын құру үшін қолданылады. Бірақ өңделген картаны арнайы нүкте редакторында ашып, шикі нүкте деректерін өңдеу арқылы немесе жеке үшбұрышты беттерді қосу немесе алып тастау арқылы өңдеуге болады. Бұл әдіс қиын болғанымен, кейде алдаушылар қабырғаларда терезелер жасау үшін, есіктер мен қабырғалардың артында жасырынған жауларды көру үшін қолданған. Бұл соңғы 3D ойындарда қолданылатын алдауға қарсы механизмға әкелді, ол ойында қолданылатын әрбір файл үшін тексеру сомасын есептейді, соның арқылы ойыншылардың әлеуетті түрде бұзған карта файлдарын пайдалануын анықтайды. Өңделген карта файлында бастапқы өңделмеген картаға қарағанда көпбұрыштар саны әлдеқайда аз болуы мүмкін, көбінесе 50–80% -ға дейін. Сол кездегі 50–75 МГц компьютерлерде картаны кесу үшін көп сағат қажет болды, картаның дизайны өте күрделі болған жағдайда, көбінесе түнде жұмыс істеді. Бұл алдын ала өңдеу қадамы ішкі ойын кеңістігін сыртқы бос кеңістікпен байланыстыратын кішкентай саңылаулар немесе «ақаулар» болса, жұмыс істемейді, және карта жасаушы картадағы ақауларды таба алмағандықтан күрделі карта жасау жобаларынан бас тарту жиі кездесетін жағдай. Ақаулардың пайда болуын болдырмау үшін щеткалар бір-бірімен жабысып, сәл бір-біріне еніп тұруы керек; тордағы ерекше пішінді щеткалардың шеттерімен толықтай туралауға тырысу өте кішкентай, табу қиын саңылауларға әкелуі мүмкін. Қазіргі заманғы деңгейлік редакторлар ақауларды анықтау мүмкіндігін ұсынады, бұл мәселені жеңілдетеді. Quake карталарындағы ашық аспан шын мәнінде ашық емес, бірақ үлкен щеткалармен жабылады және жабылады, сондай-ақ арнайы аспан қорабы текстурасымен, ол сфералық карталауды қолдануға бағдарламаланған, сондықтан әрқашан кез келген қарау бұрышынан бірдей көрінеді, бұл алыстағы аспанның иллюзиясын тудырады.
Жарық пен көлеңкені алдын ала есептеу
Quake сонымен қатар бұрынғы ойындарда қолданылған секторлық статикалық жарықтандырудың орнына, жарық карталарын және 3D жарық көздерін пайдалануды енгізді. id Software-дің бұл жаңалығынан кейін көптеген 3D ойындарда, әсіресе бірінші тұлға атыс ойындарында қолданылды, бірақ id Software Doom 3 үшін біріктірілген жарықтандыру және көлеңке моделіне көшті (дегенмен, RAGE ойынынан бастап жарық картасымен немесе жартылай жарық картасымен жұмыс істеуге қайта оралды). Картадағы артық көпбұрыштарды қысқартқаннан кейін, ойынды ойнағанда процессордың (CPU) жүктемесін азайту үшін жарық карталарын ойын картасына алдын ала есептеп және «пісіруге» екінші алдын ала өңдеу жүйесі қолданылды. Дегенмен, жарықты толық өңдеуге өте көп уақыт кеткендіктен, бастапқы карта жобалау кезінде жарықтың сапасын төмендетіп өңдеуге болады, бірақ бұл жарықтардың айналасында қадамды тік жарық сәулесін тудыратын еді.
Жылдамдықты арттыру үшін картаны қиып алу
3D рендерингтің жұмыс жүктемесін одан әрі азайту үшін, ойыншыға қазіргі уақытта көрінбейтін картаның үлкен аймақтарын бөліп шығару механизмі жасалды, соның арқасында қозғалтқыш сол көрінбейтін кеңістіктерді көрсетуге қатыспайды. Ешқандай оптимизацияларсыз 3D рендеринг қозғалтқышы әлемнің барлық бөліктерін суреттеуі керек, содан кейін қай көпбұрыштар ең жақын екенін анықтауға тырысып, осы ең жақын көпбұрыштардың артында қалған барлық көпбұрыштарды жасыру керек (бұл Z-буферлеу деп аталатын әдіс). Көпбұрыш көрінбейді деген сөз, ол сахна есептеулерінен шығарылған дегенді білдірмейді. Quake қозғалтқышы осы мәселені жою үшін арнайы оптимизацияланды. Қозғалтқышқа ойыншының көру қабілетінен тыс жердегі барлық нысандарды көрсетуді есептеуден тоқтатуға бұрыннан хабар беруге болады, бұл процессордың рендеринг жүктемесін күрт азайтады. Бұл эффект ойында бір үлкен кеңістіктен екіншісіне апаратын тік 90 градустық бұрылыстармен кішкентай туннельдер түрінде көрінеді. Бұл кішкентай туннель көрнеуді шектеу үшін қызмет етеді, ал оның ішінде ерекше мөлдір щетка (виспортал деп аталады) орналасқан, ол қозғалтқыштың көрші кеңістікті көрсетуді тоқтату шегін анықтайды. Бастапқы Quake ойынында картаның толық ұзындығын көру сирек кездеседі, ал сыртқы кеңістіктер көбінесе өте биік және тар болады, негізінен жоғарыдағы ашық аспанға немесе төмендегі лаваға дейінгі қашықтықты пайдаланып, кеңістіктің төмен полигоналды иллюзиясын жасайды.
Бөлімдеудің әдісі
Картадан бинарлық кеңістікті бөлу (BSP) ағашы салынады, бұл берілген көпбұрышты іздеудің күрделілігін O(көпбұрыштар санына) дейін төмендетеді. Әрбір жапырақ 3D кеңістіктің бір бөлігін құрайды (пирогты кездейсоқ бөліктерге бөлуді көзге елестетіңіз). Бұл екілік ағаштың жапырақтарына бастапқы картаның көпбұрыштары байланыстырылған, олар әр аймақтың көрінуін есептеу үшін қолданылады. Әрбір аймақ үшін VSD алгоритмі картаның көру сызығы бар бөліктерін анықтайды. Бұл потенциалды көрінетін жиын (ПВС) деп аталады. Бұл процесс көп жадты қажет етеді, себебі ол (қайда көпбұрыштар саны n) биттерді сақтауды талап етеді (тек көрінетін/жасырылған ақпарат ғана қажет). Джон Кармак бір аймақтың басқа аймақтардың шағын бөлігін ғана көретінін түсінді, сондықтан ол осы ақпаратты жүгіру ұзындығының кодтауын (RLE) қолдану арқылы қысқартты. Осының арқасында Quake-тің күрделі геометриясы сол кездегі аппараттық құралдарда осылай жылдам көрсетілді.
Рендерингті жылдамдату және рендерингтің реті
Овердрауды азайту үшін (бұрын рендерингтелген нүктені жасыратын жаңа пикселді рендерингтеу, яғни бұрынғы жұмыс қажетсіз және ысырап болады), қоршаған орта алдымен, алдыңғы жағынан артқа қарай көрсетілді. Қабырғалардың басқа қабырғалармен жасырылған бөліктерін жасыру үшін Global Edge List бұрын рендерингтелген көпбұрыштардың жиектерін сұрыптады; жаңа көпбұрыштар алдымен бұрынғы жиектерге сәйкес қиылып, тек көрінетін бөліктері ғана фрейм буферіне жіберілді. Сондай-ақ, қоршаған ортаны рендерингтеу кезінде z-буфер толтырылды, бірақ қоршаған ортаны рендерингтеу кезінде оқылған жоқ, өйткені BSP ағашы мен Global Edge List әр пикселдің бір рет ғана рендерингтелуін қамтамасыз етті. Z-буфер кейіннен кейіпкерлерді және қоршаған ортамен ішінара жасырылған басқа да қозғалатын объектілерді дұрыс рендерингтеу үшін пайдаланылды. Пикселдік рендеринг циклы ассемблерде іске асырылды. Текстура координаттарының перспективалық түзетуі мен интерполяциясы шектеулі бүтін сан тізілімдеріне байланысты жылжымалы нүктелік бөлімді пайдалану арқылы жасалды; сонымен қатар, бұл жылжымалы нүктелік бөлімде қымбат бөлу операциясын (перспективалық түзетудің бөлігі) бүтін сан интерполяциясымен бірге (яғни, қосымша шығынсыз) есептеуге мүмкіндік берді. Қабырғаның негізгі текстурасы мен жарық картасы бір уақытта рендерингтелді: "бет кэші" жаңа беттерді құрды, олар негізгі және жарық картасы текстураларын біріктірілген, жаңа алдын ала жарықтандырылған текстуралар болып табылады. Бірнеше кадр пайдаланбаған беттер босатылды, ал қажетті жаңа беттер динамикалық түрде құрылды. Беттерді құру, екінші жарықтандырудан аз уақыт алды. Жадыны үнемдеу үшін бастапқы текстураның мип-карталарын пайдалана отырып, алдымен қабырғалар үшін кішігірім беттер жасалды. Кейіпкерлер қоршаған ортаның жарығымен және кейіпкер тұрған едендегі жарық деңгейіне байланысты қашықтықтағы жарықпен жарықтандырылды. Жақын тұрған кейіпкерлер Gouraud көлеңкесімен және аффиндік текстурамен рендерингтелді, ал алыс тұрған кейіпкерлер үшбұрыш бөлінісін пайдаланып рендерингтелді.
Жабдықтық 3D жылдамдату
Quake - 3D аппараттық үдетуді қолдаған алғашқы ойындардың бірі болды. Алғашқыда тек бағдарламалық рендерингпен шығарылған, Джон Кармак Rendition-ның Vérité 1000 графикалық чипін (VQuake) пайдаланатын Quake-тің орындалатын нұсқасын жасады. OpenGL қолдауы Windows 95 және одан жоғары нұсқалары үшін GLQuake орындалатын файлы түрінде қосылды. GLQuake-ті рендерингке қабілетті басқа карталар – кәсіби (және өте қымбат) Intergraph 3D OpenGL картасы және кейінірек PowerVR карталары болды. Бағдарламалық рендеринг қозғалтқышын оңтайландыру үшін, жарық карталары кеңістікте жақын орналасқан және BSP ағашының бір жапырағындағы көпбұрыштармен ортақ пайдаланылды. Бұл дегеніміз, бірдей негізгі текстураны қолданатын көпбұрыштарды 3D үдетумен бір уақытта көрсету жиі мүмкін болмады, себебі көп текстуралық екінші блок басқа жарық картасымен қайта конфигурациялануы керек болды. Бұл архитектуралық шешім аппараттық үдетілген рендерингтің өнімділігін төмендетті.
Желідегі ойын
Quake LAN немесе Интернет арқылы кооперативтік және deathmatch көп ойыншы режимдерін қамтиды. Кейіннен модтар арқылы қосымша көп ойыншы режимдері қосылды. Quake клиент-серверлік модельді қолданады, онда сервер барлық ойын оқиғаларын басқарады. Барлық ойыншылар осы серверге қосылып, қатысу үшін, ал сервер клиенттерге ойында не болып жатқанын хабарлайды. Сервер арнайы сервер немесе тыңдау сервері болуы мүмкін. Соңғы жағдайда да Quake клиент-серверлік модельді қолданады, кейбір басқа ойындарда қолданылатын теңдестірілген желіге қарамастан. Осылайша Quake әр түрлі клиенттердің келіспеуінен туындаған синхронды емес желілік ойындарға ұшырамайды, себебі сервер әрқашан соңғы шешімді қабылдайды.
Деривативтік қозғалтқыштар
1999 жылы 21 желтоқсанда id Software компаниясының Джон Кармак Quake қозғалтқышының бастапқы кодын GPL 2.0 немесе одан кейінгі нұсқалар бойынша Интернетке жариялады, бұл бағдарламашыларға қозғалтқышты өңдеуге және жаңа мүмкіндіктер қосуға мүмкіндік берді. Көп ұзамай бағдарламашылар қозғалтқыштың жаңа нұсқаларын желіге шығара бастады. Ең танымал қозғалтқыштардың кейбіреулері:
DarkPlaces Engine – Бірнеше жеке ойындарда және Quake модификацияларында қолданылатын, маңызды өзгерістер енгізілген қозғалтқыш. Соңғы тұрақты нұсқасы 2014 жылдың 13 мамырында шыққан, бірақ содан бері SVN репозиторийі арқылы көптеген жаңартулар алынған. Оның бас беті 2021 жылға дейін Icculus.org сайтында орналасқан, содан кейін қозғалтқыш GitHub-та орналасқан Git репозиторийіне көшті. Xonotic әзірлеушілері ойын қозғалтқыштың даму нұсқасымен бірге құрылып, таратылатындықтан, DarkPlaces бастапқы кодының көшірмелерін әртүрлі әлеуметтік кодтау платформаларында ұсынады.
GoldSrc – Valve компаниясы жасаған алғашқы қозғалтқыш. Half-Life сериясында қолданылып, Source қозғалтқышының пайда болуына себеп болды.
vkQuake – (Quakespasm-нан туындаған) id Software қызметкері Аксель Гнейтинг бағдарламалаған Vulkan API-ін пайдаланады, GPLv2 лицензиясы бойынша шығарылған.
DarkPlaces Engine – A significantly modified engine used in several standalone games and Quake mods. Although the last stable release was on May 13, 2014, it has received numerous updates through its SVN repository since then. Its home page was hosted on Icculus. org until 2021, when the engine switched to a Git repository hosted on GitHub. The developers of Xonotic provide mirrors of DarkPlaces source code on various social coding platforms since the game is built on and distributed with the development version of the engine. GoldSrc – The first engine to be created by Valve. It was used in the Half Life series, and gave rise to the Source engine. vkQuake – (Derivative of Quakespasm) Uses Vulkan API for rendering programmed by id Software employee Axel Gneiting, released under the GPLv2.
Quake қозғалтқышын қолданатын ойындар
Жыл Атауы Дамушы(лар) Баспасөзші(лер) 1996 Quake id Software GT Interactive 1997 Quake Mission Pack No. 1: Армагонның азабы Hipnotic Interactive 3D Realms Quake Mission Pack No. 2: Мәңгіліктің тарауы Rogue Entertainment 3D Realms Hexen II Raven Software id Software, Activision Malice Ratloop Quantum Axcess Shrak Quantum Axcess Quantum Axcess X Men: Апокалипсистің салдары Zero Gravity Entertainment WizardWorks 1998 Hexen II Mission Pack: Praevus порталы Raven Software id SoftwareActivision 2000 Лазерлік арена Trainwreck Studios ValuSoft 2001 CIA Оперативтігі: Жеке тапсырмалар Trainwreck Studios ValuSoft Қалалық жалдамалы әскер Moshpit Entertainment Moshpit Entertainment 2002 Мәңгілік соғыс: Жарықтың көлеңкелері Two Guys Software Two Guys Software 2005 Nexuiz Alientrap Alientrap 2011 Xonotic Team Xonotic Team Xonotic 2021 Doombringer Anomic Games Anomic Games 2023 Қаһар: Қирау дәуірі Wrath: Aeon of Ruin Killpixel 3D Realms, 1C Entertainment Blood West Hyperstrange Hyperstrange
Жер сілкінісі қозғалтқыштары құралдары
QuArK – Quake қозғалтқышындағы ойындар үшін көп мақсатты құрал. Trenchbroom 2.0 – Quake қозғалтқышындағы ойындар үшін карта редакторы. PakExpl – Quake моделі, дыбысы және деңгей деректерін, сондай-ақ progs.dat файлындағы деректерді ашу үшін қолданылады. fteqccgui – ентітілердің мінез-құлқына жауап беретін quakec файлдарын өңдеу үшін progs.dat файлымен жұмыс істеуге мүмкіндік береді. qME 3.1 – Quake модельдерін өңдеу құралының соңғы нұсқасы, ол дәстүрлі 3D модель файлдарын Quake-тің mdl форматына түрлендіруге арналған. qPAK – Quake pak архивтерін ашуға арналған тағы бір құрал. qME құралымен бірге келеді.