Liczba kolorów na sprite
Sprite’y NES-a limitowane były do czterech kolorów (lub 3 kolorów i przezroczystości). Widać to dokładnie na postaciach w poniższym kadrze z gry The Legend of Zelda.
Niektórzy developerzy tworzyli wielokolorowe obiekty używając pewnej sztuczki. Postaci takie jak Mega Man zbudowane były z dwóch sprite’ów. Jednego dla ciała (niebieski, błękitny i czarny) i drugiego dla twarzy (beż, biel i czerń). Następnie nakładano je na siebie. Dlatego czasami twarz Mega Mana mruga osobno od jego ciała. W Shovel Knight potraktowaliśmy nasze obiekty jak w Mega Manie dając im 4-5 kolorów plus dodatkową przezroczystość.
Odpowiednie zbalansowanie barw było dość problematyczne, bo bohaterowie o zbyt dużej liczbie kolorów wybijali się na tle otoczenia. Bawiliśmy się poziomem szczegółów, aż znaleźliśmy balans, który wyglądał świetnie.
Postacie zbyt szczegółowe są bardzo trudne do zanimowania!
Na tym przykładzie widzimy oryginalny projekt Rycerza Króla. Mimo że sprite po lewej korzystał z wyłącznie 5 kolorów (jak ustaliliśmy w naszym limicie), był zbyt szczegółowy i przypominał bardziej grafikę 16-bitową. Po paru kolejkach uproszczeń służących usubtelnieniu kształtów dla czytelności i prostoty, dotarliśmy do grafiki, która trafiła do gry!
Wiele palet kolorów na raz
Mimo że każdy sprite w Shovel Knight stworzony został w oparciu o ograniczone palety, nie zmuszaliśmy wszystkich obiektów do trwania przy tylko jednej palecie. Wykorzystując ponownie Mega Mana jako przykład, zmiany koloru bohatera wpływają również na kolor ikon żyć i innych elementów. To wszystko przez jednolitą paletę kolorów. Gdy zmienimy kolor jednego obiektu, zmieniają się kolory wszystkich. Zdecydowaliśmy się nie martwić tym ograniczeniem, bo trud pracy z jedną paletą nie wpłynąłby pozytywnie na rozgrywkę. Wykorzystaliśmy za to ograniczone palety do stworzenia wariacji typów wrogów oraz efektów eksplozji i otrzymywania obrażeń.
Te efekty czynią rozgrywkę bardziej przejrzystą i ekscytującą. Na przykład cykl animacyjny obrażeń intuicyjnie uwidacznia fakt, że atakowany przeciwnik otrzymuje obrażenia ponieważ efekt ten był stały dla wszystkich obiektów. Sprawia on też więcej frajdy, bo jest wydatniejszy niż standardowa animacja czy mruganie. Zmiana palet i efekty przejść stworzone zostały poprzez przetworzenie indeksowanej niepodpisanej tekstury reprezentującej sprite i pełnej 32-bitowej tekstury reprezentującej paletę przez pixel shader… niezły skok od technologii ośmiobitowej, by imitować stare dobre czasy.
Ta strona wykorzystuje efekty palety do granic możliwości pokazując niesamowite animacje, które można stworzyć zmieniając wyłącznie kolejność kolorów jednej palety.
Ograniczenia pamięci
Kartridż NES-a mógł pomieścić bardzo ograniczoną ilość danych. Kod, animacje, tła, tekst, muzyka i wszystko inne musiało zmieścić się w 32k pamięci, ale wartość ta mogła zostać powiększana za pomocą „maperów pamięci”, dodatkowych czipów instalowanych w kartridżach. Te stały się nieodzowne wraz z pojawianiem się coraz bardziej zaawansowanej grafiki i efektów, które mogły wymagać ROM-u o rozmiarach dochodzących nawet do 4-6 megabitów (0,5 ~ 0,75 MB). Shovel Knight waży niemal 1.2 gigabita (około 150MB z czego większość zajmują pliki mp3). Ponieważ nie musieliśmy mieścić się na małym karcie, nie musieliśmy optymalizować i kompresować danych z myślą o ograniczonej przestrzeni i mogliśmy skupić się na rozwijaniu stabilności i systemów rozgrywki.
Nasz kompozytor i dźwiękowiec Jake 'Virt’ Kaufman lubi nam przypominać, że ścieżka dźwiękowa, gdy skompiluje się ją do kodu maszynowego (więcej informacji niżej), może zmieścić się na sześciomegabitowym kartridżu Kirby’s Adventure… pod warunkiem, że usunie się z niego kod i grafikę.
Duże sprite’y
Sprzęt odpowiedzialny za sprite’y na NES-ie nie był zoptymalizowany pod kątem rysowania dużych, poruszających się obiektów – nawet kilka małych wywoływało mruganie ekranu. Aby obejść to ograniczenie, bystrzy developerzy wyświetlali duże grafiki jako animowane warstwy tła. To dlatego za każdym razem, gdy walczy się z dużym przeciwnikiem na NES-ie, tło zastępowane jest czarnym kolorem. To boss staje się tłem.
Naszym zdaniem czarne tło i wielcy bossowie nadawali grom na NES-a bardzo imponującej, wzniosłej atmosfery, gdzie nacisk kładziony był wyłącznie na starcie bohatera z wrogiem. Zdecydowaliśmy więc, że jest to ważny aspekt do zachowania. Jednak bez ograniczeń w liczbie sprite’ów nie musieliśmy bawić się warstwami tła, ani innymi sposobami na obejście problemu powiększania obiektów. Wykorzystaliśmy po prostu nasz kod animowanych postaci, podeszliśmy bardzo ostrożnie do tworzonych projektów, by upewnić się, że sprite pojawiał się na czarnym (lub bardzo ciemnym) tle.
Wstrząsy kamery
Potrząsanie kamerą sygnalizujące potężny wstrząs to w grach wideo efekt niemal prehistoryczny. Na NES-ie wstrząsy kamery mogły występować tylko na jednej osi. Warto zwrócić uwagę na Bowsera rozbijającego podłoże podczas ostatecznego starcia w Super Mario Bros. 3. NES ma problemy z przewijaniem po skosie. Złamaliśmy to ograniczenie, bo nie znaleźliśmy żadnego sensownego powodu, żeby z niego nie rezygnować.
Interfejs jako warstwa
Ciekawostką w grach na NES-a jest fakt, że obiekty rysowane są zazwyczaj przed interfejsem. Większość NES-owskich interfejsów rysowanych było na warstwie tła. To dlatego, że istniała tylko jedna warstwa więc tło i interfejs musiały dzielić się miejscem. W wielu przypadkach mappery pamięci, które zwiększały pojemność kartridżów zawierały również specjalne moduły licznika, który pozwalał na paski statusu na „podzielonym ekranie”, ale warstwa tła zawsze pozostawała tłem, a obiekty rysowane były na pierwszym planie. Jeżeli więc gracz mógł dotrzeć do szczytu ekranu, intefejs zostawał zasłonięty przez bohatera. Czasami zachowanie to wykorzystywane było jako dodatkowa mechanika kryjąca sekretne ścieżki do znalezienia w tych „niedostępnych” miejscach ekranu. Bardzo podoba nam się ta ciekawostka więc postanowiliśmy w miarę możliwości przy niej trwać, ale czasami warstwy mieszały się tak bardzo, że w paru miejscach musieliśmy trochę je pozmieniać.
Ograniczenia dźwięku
Muzyka jest prawdopodobnie najbardziej autentycznym aspektem Shovel Knight chociaż może wydawać się trochę bardziej kwiecista i pełna niż mógłby oferować NES. To dlatego, że napisana została pod specjalny mapper pamięci/układ dźwiękowy nazywany VRC6, który wykorzystywany był przez Konami pod koniec ery NES-a. Czip ten pozwalał na wykorzystanie zaawansowanych technik graficznych, ale jego najbardziej znanym zastosowaniem było dodanie dodatkowych trzech kanałów dźwiękowych nadających muzyce dodatkowego bogactwa i głębi. Niestety, zewnętrzne moduły dźwiękowe takie jak VRC6 działały wyłącznie na japońskim Famicomie ponieważ zachodnim NES-om brakowało odpowiednich połączeń na kartridżu przez co dla większości zachodnich graczy brzmią one bardzo obco. Wystarczy porównać muzykę amerykańskiej wersji Castlevanii III z jej japońskim odpowiednikiem, Akumajou Densetsu, by przekonać się, że różnica jest uderzająca.
Kompozytor Jake Kaufman stworzył muzykę i efekty dźwiękowe dla Shovel Knight z pomocą darmowego programu o nazwie Famitracker. Famitracker zapisuje muzykę w formacie kodu maszynowego NES-a, który da się uruchomić na prawdziwej konsoli NES lub Famicom obsługując przy tym wszystkie ograniczenia sprzętu. Audio sfinalizowane zostało za pomocą narzędzi do masteringu (EQ i kompresja), by nadać mu trochę więcej mięsistości podczas odtwarzania na współczesnym sprzęcie audio. Unikaliśmy przy tym miksowania stereo i pogłosu, który popsułby surowy charakter dźwięków. Wszelkie echa i efekty specjalne słyszalne w grze zaprogramowane zostały nuta po nucie w taki sam sposób jak tworzono je na NES-ie. Oto wideo w którym Jake demonstruje zawiłości kilku ścieżek przygotowanych w Famitrackerze z myślą o Shovel Knight.
Kolejnym ograniczeniem NES-a był fakt, że efekty dźwiękowe często przejmowały jeden z kanałów audio. NES dzielił swoje 5 kanałów między muzykę i dźwięk więc efekty dźwiękowe musiały tymczasowo podkradać jeden lub więcej z kanałów dźwiękowych, by mogły się odtwarzać. Efekt ten nie istnieje w Shovel Knight – efekty dźwiękowe nakładane są na muzykę co jest całkowicie nieautentyczne, ale dużo przyjemniejsze w odbiorze.
Następnym razem, gdy uruchomicie swoje NES-y, przysłuchajcie się dobrze, a bez problemu zauważycie jak większość gier tymczasowo wycisza bas, perkusję czy harmonię, by zmieścić trochę więcej efektów dźwiękowych.
Popsuliśmy NES-a!
Sumując wszystkie zmiany dochodzimy do gigantycznej przepaści między Shovel Knight, a technologią NES-a. Naszym zdaniem jednak udało nam się zachować, a może nawet i wzbogacić rdzeń estetyki ośmiobitowej ery.
Shovel Knight był projektem marzeń, który umożliwił nam eksplorowanie stylu rozgrywki, który nie jest już dziś zbyt powszechny. Próby rozwiązania problemów technologii ubiegłych dekad przy jednoczesnym ominięciu przeszkód, które eksponowałyby współczesność produkcji były dla nas niezwykle fascynujące. Mamy nadzieję, że wiernie naśladując NES-a w sposób nie tylko powierzchowny stworzyliśmy podstawę dla gry twardą niczym skała!