Attributkonflikt eller sammenstød er en grafikartefakt , der vises på gamle hjemmecomputere og er forbundet med hardwarebegrænsninger. Bedst kendt af ZX-Spectrum- brugere .
Forretningscomputere, i modsætning til hjemmet, indsnævrede farvepaletten, men tillod ikke sådanne begrænsninger; enhver pixel kan skrives i en hvilken som helst farve fra N . CGA havde kun 4 farver, mens Apple Macintosh generelt var monokrom.
For at spare hukommelse og fremskynde arbejdet tillod de første farvecomputere ikke at tildele nogen farve til nogen pixel . I stedet blev skærmen opdelt i blokke, og hver blok fik to farver – forgrund og baggrund. I hver af blokkene havde pixlen en af disse to farver (og var kodet med en bit). Når du forsøger at vise tre farver i en blok, går en af disse tre farver tabt, hvilket fører til specifikke artefakter [1] .
Især tildelte ZX-Spectrum en 1-byte attribut til hvert 8×8 pixel tegnrum - en tre-bit forgrundsfarve INK, en tre-bit baggrundsfarve PAPER, 1 bit lysstyrke BRIGHTog 1 bit blinkende FLASH[2] [3 ] . Dette gav 15 farver (kun på visse kombinationer af "videocontroller + TV" kan sort på en eller anden måde skelnes fra lys sort) [3] . Ved en opløsning på 256×192 optog videohukommelsen således kun 6912 bytes [2] [3] . Blinkeffekten blev i øvrigt brugt yderst sjældent, blandt andet på grund af det faktum, at blinkområdet tydeligvis består af firkantede blokke.
I MSX 1 er attributten tildelt vandrette blokke på 8×1 pixels. Derudover var der hardware -sprites , der ikke kom i konflikt med hinanden og med baggrunden. Men ved portering fra ZX-Spectrum blev attributbytes ofte ganget, men sprites blev ikke brugt, hvilket førte til et næsten umuligt spil. I NES er konfliktzonen 8×8 pixels – men med hardware-sprites, hardware-scrolling og en bred palet (52 farver i alt, samtidig 8 paletter af 3 farver + base [4] ) er dette næppe mærkbart.
Statiske billeder er selvfølgelig bygget under hensyntagen til videohukommelsens begrænsninger. I spil er billedet bygget dynamisk, og problemet skal løses på en eller anden måde.
Dette er den nemmeste metode at programmere - programmøren manipulerer kun pixels uden at røre ved attributplanet. I dette tilfælde er der ingen farve "mursten", men spriten er tabt i baggrunden ( Dobbelt Drage [1] [5] ).
For at denne metode kunne give resultater af høj kvalitet, blev der udviklet en speciel stil ( Saboteur!, Bomb Jack , Cyclone , Strike Force Cobra ). Spillets design er baseret på sort , sort farve er næsten overalt: i vægmønstre, i dekorationer, i fjenders tøj ... Ikke-sort farve spiller rollen som belysning: for eksempel en sort ninja , der løber langs en gul væg bliver sort og gul, på baggrund af en blå himmel, at ninjaen er sort og blå. Der vil være en konflikt, hvis sort bliver forladt i en eller anden fortrolighed (stoleryggene i Saboteur II: Avenging Angel ).
+ : interessant visuel stil; farvebilledet er kombineret med mindre artefakter; ingen attributstyring.
− : Kræver, at tegn er sorte med et minimum af lyse linjer, og baggrunde skal være sorte og hvide. Hvis dette ikke er tilfældet, vil fortrolighed være tydeligt synlig.
Spriten udvider sin egenskab til baggrunden, hvilket resulterer i en farvet "mursten", der følger helten. Denne mekanisme bruges sjældent, normalt kun til hovedpersonen, men ikke til fjender - for eksempel Pac-Mania [6] eller en række spil om Wally ( Everyone's a Wally , etc.)
+ : spriten er adskilt af farve fra baggrunden; ingen restriktioner på stil eller bevægelse.
− : Artefakter er tydeligt synlige.
En af de mest populære måder. Baggrunden er malet i én farve (oftest sort), med et minimum af dekoration, og gameplayet er bygget på en sådan måde, at sandsynligheden for en kollision mellem to objekter i forskellige farver er minimal. De fleste elementer i niveauet er ufremkommelige og forårsager ikke konflikt; få er walkable enten forgrund og overlappende sprites ( Exolon , Rex ), eller udvide deres egenskab til sprite ( Dizzy ).
De fleste spil af labyrint-typen vises på denne måde: Manic Miner [5] , Monty series , Abu Simbel Profanation , Cybernoid , Into The Eagle's Nest . Også typisk for rumrullende skydere ( Zynaps , R-Type ), da en sort baggrund med et lille antal prikker er velegnet til at skildre rum.
+ : ekstrem enkelhed.
− : Lys baggrundsgrafik.
Inden for spillefeltet bliver hele billedet tofarvet ( Elite , Chimera , Head Over Heels , Robocop , Quazatron , Terra Cresta ). Farven, som spillefeltet er malet i, kan dog også indeholde nogle oplysninger. I spillet Robocop er disse forskellige niveauer, i Quazatron er disse forskellige steder, i Terra Cresta er disse zoner inden for niveauet. Ofte ( Draconus , Turbo Esprit ) er hoveddelen af billedet tofarvet, og kun nogle vigtige objekter gengives i andre farver.
De fleste pseudo-3D (racer) og isometriske spil gengives på denne måde.
+ : totalt fravær af artefakter; ingen bevægelsesrestriktioner; ingen attributstyring.
− : Evnen til at tegne i farve går tabt.
Sprite-bevægelsestrinnet er begrænset til et 8-pixel gitter. Denne metode er velegnet til spil, der ikke kræver dynamisk gengivelse af scener (strategi-, logikspil), men den bruges også til dynamiske spil - sådan opnåede vi et hurtigt spil Centipede [5] . Sprite-bevægelse og baggrundsrulning i intervaller på 8 pixel ses godt i Savage , Astro Marine Corps , Dan Dare III , Extreme .
Denne mekanisme hjælper ikke altid, og er ofte suppleret med andre metoder. For eksempel bruger spillene Trapdoor og Flunky store sprites med et ensfarvet fyld, hvor det store baggrundsbillede gengiver dens farve i baggrundsfarven på den forreste sprite.
I nogle tilfælde bruges den såkaldte sprite- forskydning , når kun én sprite (og muligvis baggrunden) tegnes i én 8x8-familiaritet. I Savage og Astro Marine Corps erstatter den forreste sprite fuldstændig den bagerste sprite. Sprite forskydning er meget mærkbar i spillet Golden Axe , som ødelægger helhedsindtrykket af spillets grafik.
+ : enkelhed; alene dette trin reducerer artefakter alvorligt.
− : ikke altid egnet, fører i dynamiske spil til rykkende bevægelser.
Nogle demoer ændrer attributter dynamisk og synkroniserer med den vandrette scanning af skærmen. Konflikterne forsvinder ikke, men konfliktzonen reduceres til 8x1 pixels.
+ : Forsøg at omgå grænser for videohukommelse.
− : Metoden tager meget CPU-tid.