
Doom SQL-ը գործարկեցին տվյալների բազայում
Ծրագրավորող Լուկաս Ֆոգելը Doom SQL-ը գործարկեց տվյալների բազայում: SQLDoom նախագիծը խաղի լոգիկան իրականացնում է 1300 տողանոց SQL հարցումներով և ստեղծում է 35 կադր վրկ-ում, իսկ փոքր Python կլիենտը կառավարում է մուտքագրումը, ժամանակի կառավարումը և կադրերի արտապատկերումը էկրանի վրա:
Ծրագրավորող Լուկաս Ֆոգելը 1993 թվականի Doom խաղը գործարկեց տվյալների բազայում: Երկար բլոգ-գրառման մեջ նա նկարագրում է, թե ինչպես է իր SQLDoom խաղը արտապատկերվում գրեթե ամբողջությամբ SQL հարցումներով, և ինքն է ճանաչում. «Doom-ը տվյալների բազայում արտապատկերելը ակնհայտորեն վատ գաղափար է»:
Ինչպես է աշխատում
SQLDoom-ը էմուլյատոր չէ. մուտքագրումը, ելքը, ժամանակը և կադրերի արտապատկերումը էկրանի վրա կառավարում է փոքր Python կլիենտը, իսկ ինքը խաղը ընթանում է դրա հետո՝ CedarDB-ի աղյուսակներում: Մոտավորապես 1300 տողանոց SQL հարցում, որը բաշխված է 89 CTE-ի վրա, իրականացնում է խաղի լոգիկան և ստեղծում է 35 կադր վրկ-ում բիթմապի տեսքով:
Doom-ի դասական WAD ֆայլերը ռելյատիվ բազայում տեղափոխելը համեմատաբար հեշտ անցավ, քանի որ նախնական մոտորը մակարդակները բաժանում է գագաթների, գծերի և սեկտորների: SQL-ում ներառվում են նաև երկչափ տարածության բաժանման (BSP) ծառերը. օբյեկտների համար նախապես հաշվարկված sort_key-ն հնարավորություն է տալիս ORDER BY հարցմանը՝ յուրաքանչյուր կադրում որոշել, թե պատի որ մասը պետք է նկարել, իսկ որը՝ ոչ: Հենց այս խոցն է դարձնում խաղը արագ:

ASCII-ից մինչև գունավոր կադրեր
SQLDoom-ը շատ ավելի լավն է, քան Ֆոգելի նախորդ տարվա նախագիծը՝ DoomQL-ը: Այդ ժամանակ նա փորձում էր ստեղծել «ամբողջությամբ SQL-ի վրա հիմնված բազմախաղացով, Doom-ի նման շուտեր», բայց արդյունքում ստացվեց միայն ռեյկաստինգի վրա հիմնված մոխրագույն ASCII գրաֆիկա, որը ավելի շատ հիշեցնում էր Wolfenstein 3D-ի 90 աստիճանանոց քարտեզները, քան Doom-ը: Այժմ նախագիծը ստեղծում է ամբողջական 640×480 կադրեր, որոնք հիշեցնում են նախնական Doom-ի կադրերը:
Ամենադժվարը հանդիսանում էր հատակի և առաստաղի արտապատկերումը: Նախնական խաղում դրանք նկարվում են ուղղահայացորեն՝ visplanes-ի և վիճակի փոփոխությունների միջոցով, ինչը SQL-ում լավ չի փոխանցվում: Փոխարենը Ֆոգելը գրեց «բավականին հակերային» լուծում, որը հիմնված է վահանակների դասավորված ցուցակի վրա իտերացիաների վրա:
Արդյունավետություն և բազմախաղաց
Չնայած ամեն ինչ SQL աղյուսակներում կարդացվում և գրվում է, ըստ Ֆոգելի՝ SQLDoom-ը աշխատում է մոտավորապես 60 կադրի արագությամբ վրկ-ում Ryzen 7-ով աշխատող լեպտոպում, իսկ բեռնված տեսարաններում երբեմն իջնում է մինչև 35 կադր:
Նրա խոսքերով՝ տվյալների բազան առավելություն է տալիս բազմախաղաց սերվերներին. պահպանում է խաղի վիճակի կայուն պատճենը և ինքն է կանոնավորում միաժամանակային մուտքը, ուստի «գոյություն չունի մասնակի օգտագործվող թարմացումներ, ֆիզիկայի սխալներ կամ հակասություններ այն մասին, թե արդյոք հրթիռը իսկապես հասավ»:
Խաղը գործարկելու համար անհրաժեշտ են GitHub-ի կոդը, CedarDB-ն և Doom-ի WAD ֆայլը: Գոյություն ունի նաև անվճար առցանց դեմո, սակայն Ars Technica-ի թեստավորման ժամանակ այս տարբերակը վատ աշխատում էր:
SiTech — AI-ով հզորացված վեբ մշակում
Ստեղծում ենք արագ ու ժամանակակից կայքեր և AI-ը ներդնում իրական բիզնես գործընթացներում։ Ունե՞ք նախագիծ կամ հարց։ Ուրախ կլինենք օգնել։