Quake motor | |
---|---|
Type | Spilmotor ( liste ) |
Udvikler | ID-software |
Nøgleprogrammører _ | John Carmack , Michael Abrash |
Del af en serie af motorer | ID Tech |
Tidligere motor i serien | Doom motor |
Den næste motor i rækken | ID Tech 2 |
Hardware platform |
PlayStation personlig computer |
Understøttet OS | DOS , Windows |
Skrevet i tunger | C , samlesprog |
Licens | gratis , GNU GPL |
www.idsoftware.com |
Quake engine (“ Quake engine ”) er en spilmotor udviklet i 1996 af det amerikanske firma id Software til brug i first-person shooter Quake . Quake-motoren var en af de første motorer, der var i stand til realtidsbehandling af fuld 3D-grafik . Udviklingen af motoren blev anvendt af virksomheden i udviklingen af næste generations spilmotorer - id Tech 2 og id Tech 3 , som blev skabt til henholdsvis Quake II og Quake III Arena -spillene .
I overensstemmelse med id Softwares tradition blev motoren et stykke tid efter vellykket kommerciel licensering gjort tilgængelig til fri brug under betingelserne i GNU General Public License , som indebærer retten til at kopiere, ændre og distribuere indholdet. Dette havde en stor indflydelse på udviklingen af open source- verdenen og gav også anledning til et stort antal gaffel -tredjeparts spilmotorer baseret på Quake-motoren .
I lighed med Doom -motoren bruger Quake-motoren et system af BSP-træer . Motoren bruger også gouraud-skygge til at flytte objekter og lyskort til statiske objekter.
Den oprindelige version af motoren understøtter DOS- og Windows -operativsystemer , men den åbne kildekode og brugen af OpenGL -standarden giver brede muligheder for at portere programmet til andre operativsystemer eller platforme (for eksempel til en spillekonsol ).
Motoren blev skrevet af den amerikanske programmør John Carmack i 1996 i C specifikt til Quake . Michael Abrash var også involveret i udviklingen , som hjalp Carmack med algoritmer og optimering af assembler -koden [1] .
Udviklingen af motoren havde en enorm indflydelse på udviklingen af computerspilindustrien, såvel som på den måde, de udvikles på. . Faktisk var det en af de første motorer, der havde en åben arkitektur. Det betyder, at udviklere har fleksibiliteten til at bruge og ændre spil, fordi alle de anvendte ressourcer er indeholdt i separate arkiver med en .PAK. Derudover indeholder motoren en konsol , der bruger sit eget kommandosystem. En bemærkelsesværdig funktion er også brugen af specielle konfigurationsfiler til tilpasning, som brugeren kan åbne i enhver teksteditor . Disse tekstfiler indeholder spilparametre relateret til både grafikbehandling og kontroller. Ved at ændre parametrene i tekstfilen, kan brugeren tilpasse spillet til deres egen smag.
Takket være den åbne arkitektur af motoren til Quake -spillet blev der udviklet et stort antal modifikationer , hvoraf nogle var i stand til at ændre spillet til ukendelighed, tilføje nye placeringer, våben, karakterer og introducere deres egne regler i gameplayet . Mange Quake moddere har efterfølgende etableret deres egne virksomheder på markedet. Et eksempel er Ritual Entertainment -studiet , som udviklede den officielle tilføjelse til den første del af Quake , og efterfølgende andre uafhængige projekter, såsom SiN -skydespillet . Samtidig førte skabelsen af Quake til et nyt trin i udviklingen af computerspilindustrien, der praktisk talt afsluttede æraen, hvor en enkelt entusiast kunne udvikle et kommercielt computerspil på kort tid .
Den største konkurrent til Quake på det tidspunkt var Duke Nukem 3D , som brugte Build [2] spilmotoren . Denne teknologi brugte sprite -modeller og forældede niveaumodelleringsmetoder, hvilket gjorde den meget ringere end Quake-motoren med hensyn til grafik og nød derfor ikke en sådan succes, når den blev licenseret af tredjepartsudviklere. Quake -motoren var grundlaget for udviklingen af GoldSource , teknologien som Half-Life- spillet blev skabt på [1] [3] . Spil og ændringer på denne motor frigives stadig aktivt.
Computerspillet Quake var et af verdens første "fuldgyldige" tredimensionelle spil.
Spillet bruger et specielt kortdesignsystem , der udfører forbehandling og præ- gengivelse af 3D-miljøet for at reducere den kraft, der kræves til billedbehandling under spilprocessen. Denne funktion var efterspurgt, da på det tidspunkt, hvor spillet blev udgivet, havde standardprocessorer en frekvens på 50-75 MHz. 3D-miljøet, som spillet foregår i, refererer til kortet, selvom miljøet er 3D i naturen og ikke fladt 2D-rum. Kortredigeringsprogrammet bruger mange simple konvekse tredimensionelle geometriske objekter, kendt som "børster" (fra engelsk brush - Russian brush ), som har evnen til at indstille deres størrelse og rotationsgrad - forskellige objekter i miljøet kan være f.eks. genstande.
Børsterne placeres og roteres for at skabe lukkede, tomme, voluminøse rum. Når designet af et kort er færdigt , sendes det kort gennem gengivelsespræprocessoren . Denne præprocessor bruges til at lokalisere to typer tomme pladser på kortet: den tomme plads, der skabes af børsterne, som spilleren vil være i under spillet; og endnu et tomt rum, der er uden for børsterne, og som spilleren aldrig vil se. Derefter fjerner præprocessoren usynlige overflader fra individuelle børster, der er uden for spillerummet, og efterlader kun de polygoner, der kun definerer den ydre omkreds af det indre spilrum - på denne måde opnås en betydelig optimering af motoren, og som et resultat, dens arbejdet fremskyndes.
Den behandlede kortfil kan have væsentligt færre polygoner end den originale råfil. På datidens computere, hvis centrale processorer havde en frekvens i området 50-70 MHz, var det normalt, at klippeoperationen tog mange timer.
Forbehandlingsprocessen kan ikke udføres, hvis der blot er ét lille hul eller "lækage" ( engelsk læk ), der forbinder det interne spilrum med det eksterne tomme rum. Dette problem var almindeligt på komplekse kort med mange bygningsobjekter, da niveaudesigneren ikke kunne holde styr på alle lækager på kortet. For at forhindre utætheder skulle børsterne overlappe hinanden og trænge lidt ind i hinanden. At forsøge at justere underligt formede børster perfekt langs deres kanter og ansigter kunne resultere i meget små huller, som var meget svære at finde.
Himlen med skyer i Quake -spillets kort er faktisk ikke åben, men den er dækket og lukket fra det ydre tomme rum med store børster og er også struktureret med en speciel skybox- tekstur, der altid ser ens ud fra ethvert synspunkt. Dette skaber en illusion af en uendelig horisont.
Når et kort er blevet forbehandlet, kan det ikke længere ændres. I stedet gemmes de originale data fra korteditoren sammen med børsterne og bruges til at oprette nye versioner af kortet. På trods af dette er det muligt at redigere det behandlede kort ved at åbne det i en speciel vertex - editor og redigere de rå toppunktsdata eller tilføje eller fjerne specifikke polygoner. Snydere brugte denne teknik til at skabe "vinduer" i vægge for at se modstandernes bevægelser under onlinespil . I moderne spil er det svært at gøre dette, da spil normalt kontrollerer kontrolsummen af hver fil ved hjælp af et anti-cheat-program, og hvis filen ikke matcher originalen, er adgang til netværksspillet ikke tilladt.
Quake -motoren gør også brug af lyskort og 3D-lys, i modsætning til den sektorbaserede statiske belysning, der blev brugt i tidligere spil. Denne innovative id-softwareteknik begyndte at blive brugt i mange spil, der blev udgivet efter Quake , især first-person shooters. Samtidig skiftede id Software selv til at bruge en ny samlet belysnings- og skyggemodel , der anvendte den i id Tech 4 -motoren (det første spil baseret på den var Doom 3 ) [4] .
Efter at kortet slap af med ekstra polygoner, blev der brugt et andet forbehandlingssystem, som beregnede og implementerede lyskort i spilkortet, og derved yderligere reducerede belastningen på CPU'en under spillet.
For at optimere gengivelsen er der udviklet en teknik, der gør det muligt ikke at behandle de dele af rummet, som i øjeblikket ikke er synlige for afspilleren (f.eks. er de bag en væg). Hvis spilleren under spillet ikke kan se et område af kortet, der er i nærheden, kan motoren på forhånd ikke inkludere usynlige objekter i gengivelsesprocessen, hvilket reducerer CPU-belastningen betydeligt.
En 3D-motor uden denne form for optimering ville være tvunget til at tegne alle dele af spilrummet og derefter prøve at bestemme, hvilke polygoner der er tættest på. Den uoptimerede motor ville derefter skjule alle polygoner placeret bag de nærmeste (en teknik kendt som Z-buffering ).
Denne effekt kan ses i spillet som små tunneler med retvinklede bøjninger, der fører fra et stort rum til et andet stort rum (dette designtrick er især mærkbart i spillet Half-Life , hvor små korridorer i rette vinkler skjuler det næste spilniveau) . En lille tunnel bruges til at spærre for udsynet til tilstødende uudviklet rum, og en speciel type gennemsigtig børste (kaldet visportal ) bruges til at definere kanterne af, hvor motoren skal stoppe med at gengive det tilstødende rum. I et Quake -spil er evnen til at se på tværs af kortets fulde længde ret sjælden, åbne rum er ofte meget smalle og høje, primært ved hjælp af afstande "over" åben himmel og "under" lava (i stedet for "bredere" og " fjernere"); dermed skabes en lav-poly illusion af åbent rum.
YdeevneDet binære rumopdelingstræ ( BSP ) oprettet fra kortet forenkler søgningen efter en polygon til O (antal polygoner) . Hvert blad af BSP-træet skaber en del af 3D-rummet (som at skære en tærte i skiver). Bladene på dette binære træ har polygonerne på det originale kort forbundet med dem, som derefter bruges til at beregne synligheden af hvert område. For hvert område søger VSD-algoritmen efter de dele af kortet, for hvilke der er en sigtelinje. Dette kaldes Potentially Visible Set ( PVS ) .
Processen bruger meget hukommelse, da den skal tage O (antal polygoner * antal polygoner) bits (kun synlig/skjult information er nødvendig). John Carmack indså, at én region kun ser en lille del af andre regioner, og han komprimerede denne information ved hjælp af run -length-kodning (RLE-kodning). Det var det, der gjorde, at så kompleks grafik til den tid kunne arbejde ret hurtigt på datidens hardware.
Quake-motoren var, udover at være en af verdens første 3D-motorer, også den første motor, der understøttede 3D-hardwareacceleration (acceleration). Oprindeligt havde Quake-spillet (og i forlængelse heraf motoren) kun understøttelse af softwaregengivelse . John Carmack skabte dog senere en version af motoren, der udnyttede Renditions Vérité 1000 grafikchip (denne version af motoren fik internt navnet VQuake).
OpenGL - understøttelse blev snart tilføjet til motoren til Windows 95 og nyere (det interne navn på denne version er GLQuake). Mange tror, at det var det, der skabte en slags revolution i produktionen og salget af specialiserede videokort , som derefter var nødvendige for at flytte grafikbehandlingen fra den centrale processor, og GLQuake var den første applikation, der virkelig demonstrerede mulighederne i Voodoo-grafikchipsættet fra 3dfx . Kun to andre kort var i stand til at gengive på GLQuake: Intergraph 3D OpenGL -kortet og PowerVR -kortet . Begge disse kort var professionelle og meget dyre.
I modsætning til moderne first-person shooters , hvor spilleren fuldstændig styrer hovedpersonens blik med computermusebevægelser , bruger Quake som standard tastaturet til at dreje til venstre og højre, samt bevæge sig frem og tilbage. Du kan bruge musen til at lave de samme bevægelser, svarende til spillet Doom . Karakterens bevægelser var ret akavede og krævede muligheder såsom auto-level, som automatisk justerede synsvinklen baseret på spillerens bevægelser og automatisk sigte for at skyde på ting under eller over karakteren. Placeringsdesign i Quake blev forenklet og ligner pseudo -3D (2.5D) miljøerne i Doom. Kun nogle få niveauer af spillet havde et monster, der var i stand til at angribe et niveau over eller under spilleren.
Quake havde mulighed for at vælge en mus til blikstyring og et tastatur til bevægelse, men denne mulighed var som standard deaktiveret. I det senere spil i Quake III Arena -serien blev denne mulighed taget i betragtning med det samme.
Erfarne spillere brugte musesynskontrol og tastaturbevægelse i både single og multiplayer , da det gav dem mulighed for bedre at kontrollere karakteren og udføre rotationsbevægelser, der kunne undvige skud.
Oprindeligt understøttede Quake-motoren kun LAN - multiplayer og to online-tilstande, co- op og deathmatch . Sådan et netværksspil fungerede efter klient-server- princippet .
Det betyder, at alle spillere, for at starte et fælles spil, opretter forbindelse til en dedikeret server , som sender dem et svar på begivenhederne i spillet. Derudover beskytter brugen af et sådant princip spillere mod de-synkronisering af serveren. Afhængigt af den specifikke rute til serveren har forskellige klienter forskellige pings (den hastighed, hvormed en pakke information transmitteres på det lokale netværk). En spillers høje ping forårsager lag , som hæmmer deres bevægelse og gør dem mere sårbare over for andre spillere.
Netværkskoden for spilmotoren blev redesignet, og en separat tilføjelse til Quake blev frigivet - QuakeWorld - som gjorde det muligt for spillere at spille mod hinanden over en internetforbindelse ved hjælp af spiltilstande, der ville blive klassikere. Multispilleren af det originale Quake erhvervede efterfølgende navnet LAN-Quake (fra det engelske Local Area Network, LAN - lokalt netværk) i spillerfællesskabet.
En af innovationerne i QuakeWorld er forudsigelse på klientsiden . Denne tilstand gør det muligt for spillerens computer at forudsige bevægelsen af objekter, før serveren reagerer, hvilket reducerer kravene til internetforbindelseshastighed markant og derved åbner adgang til det samtidige spil på serveren for et stort antal mennesker.
Udover at have stor indflydelse på spiludviklingsmetoder og spilindustrien som helhed, har Quake-motoren haft en enorm indflydelse på spildesignmetoder. Mange af de teknologier, der bruges i Quake-motoren, er stadig efterspurgte i moderne spilmotorer .
Stort set alle post-Quake-spil og alle moderne spil bruger en 3D-optimering kaldet preprocessing for at øge spilhastigheden på brugernes pc'er og spillekonsoller . Det er derfor, 3D-spil er i stand til at vise billeder og effekter af så høj kvalitet - det meste af de ekstra data blev fjernet, selv før spilleren kunne se dem. Essensen af forbehandling er, at unødvendige genstande aflæses fra RAM, efter de er brugt, for eksempel skyder en spiller et våben, og de brugte patroner, der flyver ud af det, forsvinder med det samme (mens de aflæses fra hukommelsen).
Alle spil adskiller sig væsentligt fra professionelle 3D-modelleringspakker ( CAD ). Professionelle programmer har ingen tidsbegrænsninger for gengivelse af et billede. Intet kan slippes for at fremskynde gengivelsen af en teknisk 3D -model, da enhver del af modellens design kan ændres til enhver tid. Af denne grund var professionelle grafikkort betydeligt dyrere og stærkere end de grafikkort, der blev brugt i hjemmecomputere til at køre computerspil. Professionelle grafikkort skal have væsentligt mere processorkraft, da de håndterer den fulde kompleksitet af rå 3D-rum.
Da Quake var det første fuldt 3D-spil af sin slags, skulle det kunne køre på en computer, der ikke havde en videoaccelerator, så det indeholdt rige muligheder for software billedbehandling, det vil sige, at grafikoutputprocessen ikke falder på videokortet, men på CPU.
Dengang udgjorde videoacceleratorer et nyt og uforudsigeligt marked, og der var usikkerhed om de ville blive efterspurgt eller ej. Grafikkort er nu et velkendt og højt udviklet marked og er en nødvendig komponent i enhver ny computer. Langt de fleste moderne computerspil kan slet ikke køre, medmindre hardware 3D-acceleration er tilgængelig, det vil sige et videokort , mens spil fra tiden overvejende brugte processoren til at outputte grafik.
Det følgende er en liste over kommercielle spil, der bruger Quake-motoren [5] .
Spil, der er lavet på motorer baseret på Quake (såsom DarkPlaces ), er ikke på listen.
Adskillige korteditorer er blevet frigivet til Quake -motoren og brugt af moddere .
Mange af editorerne nedenfor er også kompatible med senere versioner af motor- id Tech 2 og id Tech 3 , såvel som deres modifikationer.
Quake-motoren var grundlaget for udviklingen af en anden id-softwareteknologi , id Tech 2 -motoren (tidligere kendt som Quake 2-motoren). Efterfølgende motorer fra virksomheden, såsom Id Tech 3 (til spillet Quake III Arena ) og id Tech 4 (først brugt i Doom 3 ), indeholder sandsynligvis også små stykker kildekode fra den første motor i serien , fordi de var baseret på tidligere versioner. Kildekoden til id Tech 2, id Tech 3 og id Tech 4 er også blevet åbnet.
Valve brugte Quake -spilmotoren med indbygget QuakeWorld- netkode under udviklingen af Half-Life . Da den var stærkt omskrevet, fik den navnet GoldSrc (GoldSource) [1] [3] . Tidligere blev Half-Life- motoren beskrevet af spilpublikationer som værende baseret på den forenede Quake -teknologi . Ifølge nogle rapporter blev nogle udviklinger fra Id Tech 2 -motoren også integreret i motoren . På de gamle skærmbilleder af spillet, lavet tilbage i udviklingsperioden, kan det ses, at motoren aktivt bruger dynamiske skygger fra objekter [6] . Deres støtte blev sandsynligvis fjernet fra den endelige version af spillet, da udviklerne besluttede, at hjemmecomputere fra den tid endnu ikke var klar til så kompleks behandling.
Half-Life 2 -spilmotoren - Source - er baseret på motoren fra Half-Life , og indeholder derfor små sektioner af Quake-motorkode [7] .
Quake-motorens open source den 21. december 1999 resulterede i et stort antal gafler og gjorde det også muligt for entusiaster at overføre motoren til andre platforme såsom Symbian- eller Java - operativsystemet .
De bedst kendte gratis spilmotorer baseret på Quake-motoren er DarkPlaces [8] og Tenebrae . Begge teknologier understøtter komplekse shader-effekter, bump-mapping , kompleks belysning og andre avancerede visuelle effekter, såsom HDR - gengivelse, samt dynamiske skygger.
ID-software | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Spil |
| ||||||||||||||||
Medarbejdere |
| ||||||||||||||||
Selskab | |||||||||||||||||
Teknologi | |||||||||||||||||
Andet |
|