Кіріспе

QuakeC – 1996 жылы id Software компаниясының Джон Кармак жасаған, Quake видео ойынының бөліктерін бағдарламалауға арналған құрастырылған тіл. QuakeC-ті пайдалану арқылы бағдарламашы, Quake ойынына қару-жарақ қосу, ойын логикасы мен физикасын өзгерту және күрделі сценарийлерді жазу арқылы оны кең ауқымда бейімдей алады. Ол ойынның жасанды интеллектісінің бөліктері, триггерлер немесе деңгейдегі өзгерістер сияқты көптеген аспектілерін басқару үшін қолданылуы мүмкін. Quake ойын қозғалтқышы QuakeC-ті қолдаған жалғыз ойын қозғалтқышы болды. Id Tech 4 және одан кейінгі қозғалтқыштарда C және C++ тілдерінде жазылған DLL ойын модульдері қолданылды.

Шолу

QuakeC бастапқы коды, id Software компаниясының Quake ойынының логикасы 1996 жылы жарияланды және жалауды басып алу сияқты түрлендірулердің негізі ретінде қолданылды. QuakeC бастапқы коды qcc деп аталатын құрал арқылы байт-кодқа компиляцияланады, ол прогтар.dat файлында сақталады. Quake түрлендірулерін жасаушы бағдарламашылар өздерінің бастапқы кодын жарияламай-ақ байт-кодарын жариялай алатын болды. Quake түрлендірулерінің көпшілігі осылай шығарылды. QuakeC, Quake ойын қозғалтқышының бірінші тұлғадан ату жанрына бағыт беруіне мүмкіндік берді. Кармактың видео ойындардың өмірін шексіз кеңейту арқылы ұзарту идеясының (Doom ойынында кеңейту мүмкіндігі маңызды рөл атқарды) арқасында, ойыншылар мен бағдарламашылардан құралған үлкен интернет қауымдастығы пайда болды, ал көптеген қазіргі заманғы көп ойыншылы ойындар белгілі бір деңгейде кеңейтіледі. QuakeC интерпретацияланған тіл деп есептеледі, себебі Quake іске қосылғанда, ол үнемі прогтар.dat файлындағы кодты интерпретациялайды.

Өзгертілген компиляторлар мен тілдік кеңейтулер

Армин Риго (DEACC және REACC деп аталады) декомпилятор және рекомпилятор шығарды. Бұл бағдарламалар кері инженерия процесі арқылы жасалды және qcc шығарылғанға дейін жарияланған болуы мүмкін. id Software 1996 жылы өздерінің QuakeC компиляторы qcc-нің бастапқы кодын, сонымен қатар бастапқы QuakeC кодын жариялады. Көп ұзамай, өзгертілген нұсқалар пайда болды, оның ішінде Джонатан Ройдің fastqcc және Райан "FrikaC" Смиттің FrikQCC. Бұл бағдарламалар функционалдық мүмкіндіктерді, оңтайландыруды және компиляция жылдамдығын арттырды. 1999 жылы id Software Quake қозғалтқышының кодын GNU General Public License (GPL) лицензиясы бойынша шығарғанда, байт-код интерпретаторының жұмысы зерттелді және J. P. Grossman'ның qccx сияқты жаңа QuakeC компиляторлары шығарылды, сондай-ақ FrikQCC-нің жаңа нұсқасы да пайда болды. Бұл компиляторлар жаңадан ашылған мүмкіндіктерді артқа қарай үйлесімділікпен пайдаланды, соның салдарынан байт-кодты өзгертілмеген Quake қозғалтқыштары дұрыс интерпретациялай алды. Жаңа мүмкіндіктерге массивтер, сілтемелер, бүтін сандар, for циклдары және жолдармен жұмыс істеу кіреді. Quake қозғалтқышының бастапқы кодын өзгертуге мүмкіндік болғандықтан, QuakeC-ке жаңа функциялар түрінде қосымша мүмкіндіктер енгізілді. QuakeC бағдарламашылары ұзақ жылдар бойы күткен мүмкіндіктер, сондай-ақ файлдармен және жолдармен жұмыс істеу функциялары, кеңейтілген жол буферлері, математикалық функциялар және т.б. енді іске асырылды. Дегенмен, осы өзгерістерді пайдаланған бағдарламашылар өзгертілмеген Quake қозғалтқышымен артқа қарай үйлесімділікті жоғалтты. Xonotic 0.7 нұсқасынан бастап gmqcc компиляторын пайдаланады.

Клиенттік QuakeC

Кейбір жетілдірілген Quake қозғалтқыштары (әсіресе Darkplaces және FTEQW) қалыпты QuakeC-нің кеңейтілген нұсқасын қолдайды (қазір көбінесе серверлік QuakeC деп аталады), бұл Quake қозғалтқышын тек клиенттік жағынан ғана бағдарламалауға мүмкіндік береді, және CSQC (клиенттік QuakeC) деп қысқартылады. Бұл әсіресе графикалық интерфейстер, HUD және серверде модельдеуді қажет етпейтін және желі арқылы жіберілмейтін визуалды эффекттер үшін өте пайдалы.