Attributkonflikt eller krockar är en grafikartefakt som visas på gamla hemdatorer och är associerad med hårdvarubegränsningar. Mest känd för ZX-Spectrum- användare .
Affärsdatorer, i motsats till hemdatorer, minskade färgpaletten, men tillät inte sådana begränsningar; vilken pixel som helst kan skrivas vilken färg som helst från N . CGA hade bara fyra färger, medan Apple Macintosh i allmänhet var monokrom.
För att spara minne och påskynda arbetet, tillät de första färgdatorerna inte att någon färg tilldelas någon pixel . Istället delades skärmen upp i block, och varje block fick två färger - förgrund och bakgrund. I vart och ett av blocken hade pixeln en av dessa två färger (och kodades med en bit). När man försöker visa tre färger i ett block går en av dessa tre färger förlorad, vilket leder till specifika artefakter [1] .
Speciellt tilldelade ZX-Spectrum ett attribut på 1 byte till varje teckenutrymme på 8×8 pixlar - en trebitars förgrundsfärg INK, en trebitars bakgrundsfärg PAPER, 1 bits ljusstyrka BRIGHToch 1 bits blinkande FLASH[2] [3 ] . Detta gav 15 färger (endast på vissa kombinationer av "videokontroller + TV" kan svart på något sätt skiljas från ljust svart) [3] . Således, vid en upplösning på 256×192, upptog videominnet endast 6912 byte [2] [3] . Förresten användes den blinkande effekten extremt sällan, bland annat på grund av att det blinkande området tydligt består av fyrkantiga block.
I MSX 1 är attributet tilldelat till horisontella block på 8×1 pixlar. Dessutom fanns det hårdvarusprites som inte kom i konflikt med varandra och med bakgrunden. Men vid portering från ZX-Spectrum multiplicerades ofta attributbytes, men sprites användes inte, vilket ledde till ett nästan omöjligt spel. I NES är konfliktzonen 8×8 pixlar – men med hårdvarusprites, hårdvarurullning och en bred palett (52 färger totalt, samtidigt 8 paletter med 3 färger + bas [4] ) märks detta knappast.
Statiska bilder byggs naturligtvis upp med hänsyn till videominnets begränsningar. I spel byggs bilden dynamiskt och problemet måste lösas på något sätt.
Detta är den enklaste metoden att programmera - programmeraren manipulerar bara pixlarna utan att röra attributplanet. I det här fallet finns det ingen färg "tegelsten", men spriten försvinner i bakgrunden ( Double Dragon [1] [5] ).
För att denna metod skulle ge resultat av hög kvalitet utvecklades en speciell stil ( Saboteur!, Bomb Jack , Cyclone , Strike Force Cobra ). Utformningen av spelet är baserad på svart , svart färg finns nästan överallt: i väggmönster, i dekorationer, i fiendens kläder ... Icke-svart färg spelar rollen som belysning: till exempel en svart ninja som springer längs en gul vägg blir svart och gul, mot bakgrund av en blå himmel att ninjan är svart och blå. Det kommer att bli en konflikt om svart överges i någon förtrogenhet (stolryggarna i Saboteur II: Avenging Angel ).
+ : intressant visuell stil; färgbilden kombineras med mindre artefakter; ingen attributhantering.
− : Kräver att tecken är svarta, med ett minimum av ljusa linjer, och bakgrunder ska vara svartvita. Om så inte är fallet kommer förtrogenhet att vara tydligt synlig.
Spriten utökar sitt attribut till bakgrunden, vilket resulterar i en färgad "tegelsten" som följer hjälten. Denna mekanism används sällan, vanligtvis bara för huvudpersonen, men inte för fiender - till exempel Pac-Mania [6] eller en serie spel om Wally ( Everyone's a Wally , etc.)
+ : spriten separeras med färg från bakgrunden; inga restriktioner för stil eller rörelse.
− : Artefakter är tydligt synliga.
Ett av de mest populära sätten. Bakgrunden är målad i en färg (oftast svart), med ett minimum av dekoration, och spelet är uppbyggt på ett sådant sätt att sannolikheten för en kollision mellan två objekt av olika färg är minimal. De flesta delar av nivån är oframkomliga och orsakar inte konflikt; få är gångbara antingen förgrund och överlappande sprites ( Exolon , Rex ), eller utökar deras attribut till sprite ( Dizzy ).
De flesta spel av labyrinttyp visas på detta sätt: Manic Miner [5] , Monty series , Abu Simbel Profanation , Cybernoid , Into The Eagle's Nest . Också typiskt för rymdrullande skyttar ( Zynaps , R-Type ), eftersom en svart bakgrund med ett litet antal punkter är väl lämpad för att avbilda rymden.
+ : extrem enkelhet.
− : Ljus bakgrundsgrafik.
Inom spelplanen blir hela bilden tvåfärgad ( Elite , Chimera , Head Over Heels , Robocop , Quazatron , Terra Cresta ). Men färgen som spelplanen är målad i kan också innehålla viss information. I spelet Robocop är dessa olika nivåer, i Quazatron är dessa olika platser, i Terra Cresta är dessa zoner inom nivån. Ofta ( Draconus , Turbo Esprit ) är huvuddelen av bilden tvåfärgad, och endast några viktiga objekt återges i andra färger.
De flesta pseudo-3D (racing) och isometriska spel renderas på detta sätt.
+ : total frånvaro av artefakter; inga rörelsebegränsningar; ingen attributhantering.
− : Förmågan att rita i färg går förlorad.
Sprite-rörelsesteget är begränsat till ett rutnät på 8 pixlar. Denna metod är väl lämpad för spel som inte kräver dynamisk rendering av scener (strategi, logikspel), men den används även för dynamiska spel - det är så vi uppnådde ett snabbt spel Centipede [5] . Spriterörelser och bakgrundsrullning i steg om 8 pixlar syns väl i Savage , Astro Marine Corps , Dan Dare III , Extreme .
Denna mekanism hjälper inte alltid, och kompletteras ofta med andra metoder. Till exempel använder spelen Trapdoor och Flunky stora sprites med en enfärgad fyllning, där den stora bakgrundsbilden återger sin färg i bakgrundsfärgen på den främre spriten.
I vissa fall används den så kallade sprite- förskjutningen , när endast en sprite (och eventuellt bakgrunden) ritas i en 8x8-familiaritet. I Savage och Astro Marine Corps ersätter den främre spriten helt den bakre spriten. Sprite-förskjutning är mycket påtaglig i spelet Golden Axe , vilket förstör helhetsintrycket av spelets grafik.
+ : enkelhet; Bara detta steg minskar artefakter allvarligt.
− : inte alltid lämpligt, leder i dynamiska spel till ryckiga rörelser.
Vissa demos ändrar attribut dynamiskt och synkroniserar med den horisontella skanningen av monitorn. Konflikterna försvinner inte utan konfliktzonen reduceras till 8x1 pixlar.
+ : Försök att kringgå videominnesgränser.
− : Metoden tar mycket CPU-tid.