Autorem niniejszego tekstu jest David D'Angelo   Shovel Knight to gra, która próbuje emulować swoim stylem klasyczne tytuły epoki NES-a. Mimo to, przyglądając się jej wystarczająco uważnie znaleźć można szereg nieścisłości, które zdradzają jej współczesną naturę. Nakreślając style estetyczny i sposób rozgrywki tytułu, mieliśmy w zamyśle kilka celów. Zamiast odtwarzać możliwości tej konsoli, chcieliśmy stworzyć wizję ośmiobitowej gry obserwowanej przez różowe okulary.Co gdyby nigdy nie przestano tworzyć gier na NES-a? Jak wyglądałaby ośmiobitowa gra przygotowana dzisiaj? Doszliśmy do wniosku, że sposób prowadzenia rozgrywki wzbogaciłby się dzięki lekcjom wyciągniętym ze sposobu projektowania współczesnych gier, a technologia byłaby aktualizowana w subtelny, ale znaczący sposób. Podobnie, z pomocą czipów wbudowywanych prosto w kartridże wzbogacano możliwości prawdziwego NES-a. Kartridże późniejszych gier na ten sprzęt, takich jak Super Mario Bros. 3 wypełnione były elektroniką o dużo wyższym stopniu zaawansowania niż ich poprzedniczki, takie jak oryginalny Super Mario Bros. Różne chipsety udostępniały nowe funkcje - ukośne przewijanie ekranu, większe sprite'y albo (wyłącznie w japońskim Famicomie, o czym troszkę później) dodatkowe kanały odtwarzania dźwięku. W połączeniu ze wzrostem doświadczenia w tworzeniu gier na ten sprzęt i zrozumieniu jego mocnych i słabych stron, różnica między pierwszymi i ostatnimi grami na NES-a potrafiła być uderzająca. Mario 1 kontra Mario 3 Pomyśleliśmy, że być może dalsze postępy w technologii kartridżów umożliwiłyby nam wykorzystanie technik, które zaaplikowaliśmy w Shovel Knight. Przekroczyliśmy również kilka ograniczeń NES-a z czystej preferencji… zdecydowaliśmy się zignorować wszystkie wady sprzętu, które w jakiś sposób wpłynęłyby negatywnie na rozgrywkę. Jednym z przykładów może być mruganie sprite'ów pojawiające się, gdy NES próbował wyświetlić więcej niż 8 obiektów w jednej poziomej linii. Dla niektórych jest to element nostalgiczny, ale my uznaliśmy, że przeszkadza w zabawie, więc pozbyliśmy się go. Mimo tego, wiele z naszych decyzji w sferze projektowania rozgrywki tworzonych było z uszanowaniem zasad wiążących się z owym mruganiem: próbowaliśmy uniknąć zapychania obrazu obiektami na ekranie i ograniczyliśmy liczbę dodatków pokroju efektów cząsteczkowych. Świadomość reguł pomogła nam w tym przypadku stworzyć grę sprawiającą wrażenie prostej i przejrzystej. A to przecież jedna z największych cech najlepszych gier na NES-a. Przykładów na naginanie zasad jest wiele więcej. Przyjrzyjmy się więc sposobom, w jakie przymknęliśmy oko na ograniczenia konsoli, na której się wzorowaliśmy. Jak popsuliśmy NES-a! Współczesny sprzęt! Wersje konsolowe i PC! Dlaczego nie ma nas na NES-ie? Shovel Knight uruchamiany jest natywnie na współczesnym sprzęcie i nie odpali się na NES-ie. To zaskoczyło część osób, która wzięła sobie nasze NES-owe pomysły bardzo do serca. Niektórzy gracze mieli nadzieję, że pograją w Shovel Knight na amatorskim kartridżu. Prawda jest taka, że Shovel Knight to niezwykle skomplikowana gra, zdolna do włączenia się na całym szeregu platform sprzętowych i konfiguracji. Na współczesnych konsolach Nintendo, tytuł wspiera specjalne funkcje sieci bezprzewodowych i internetu z funkcjonalnością Miiverse i Streetpass na czele. Zintegrowaliśmy również obsługę oprogramowania wspomagającego takiego jak FMOD dla audio czy wsparcie dla kontrolera SDL. Obraz panoramiczny 16:9 (lub 5:3 na 3DSie) MegamanJednym z udoskonaleń na jakie się zdecydowaliśmy było zwiększenie widocznego obszaru ekranu, unikając w ten sposób czarnych pasów po bokach ekranu widocznych na przykład w NES-owych grach na wirtualnej konsoli. To oznacza, że na większości współczesnych monitorów gra wyświetlana jest w natywnej dla nich rozdzielczości 16:9. Mimo że zmieniliśmy proporcje obrazu, nie zmieniliśmy rozdzielczości postrzeganej, unikając grafik o dużym zagęszczeniu pikseli. W rzeczywistości każdy piksel Shovel Knight zajmuje 4.5x4.5 pikseli rozdzielczości 1080p tworząc wirtualną rozdzielczość 400x240. NES wyświetla obraz w 256x240, więc otrzymujemy w ten sposób tę samą rozdzielczość pionową. Kafelki z których składają się tła (jak w większości NES-ówek) mają rozmiar 16x16. Mamy więc też taką samą liczbę pionowych kafelków co NES. Utrzymanie rozdzielczości pionowej i rozmiarów kafelków było dla nas niezwykle ważne, by wiernie oddać estetykę tytułów na tę platformę. Jedyną różnicą jest dodatkowa przestrzeń w poziomie, która dała nam więcej miejsca na zaprojektowanie interesujących zagadek i krajobrazów. Plansze wydają się w ten sposób również mniej zapchane. Efekt paralaksy tła Przewijanie paralaksowe tła to możliwość przesuwania różnych warstw lub części obrazu w różnym tempie. W ten sposób nadaje się trójwymiarowości ruchu dwuwymiarowym warstwom. Wyobraźcie sobie, że zerkacie przez boczną szybę pędzącego samochodu: góry w oddali nie wydają się ruszać w ogóle, podczas gdy słupki przy autostradzie suną nam przed nosem w ekspresowym tempie. Początek naszego pierwszego zwiastuna pokazuje ten efekt w praktyce. Ta zaawansowana technika jest dużo powszechniejsza na SNES-ie. Na NES-ie dostępna była wyłącznie dzięki wykorzystaniu skomplikowanych sztuczek. By osiągnąć taki efekt, twórcy mieli kilka opcji: Już we wczesnym stadium tworzenia Shovel Knighta zadecydowaliśmy, że podkręcimy paralaksę tworząc średnio 5-6 warstw przewijanego tła. Wydawało się to nam kolejnym krokiem w rozwoju NES-a, więc nie uważaliśmy go za element niepasujący do naszej wizji. Co więcej, dodanie tej funkcji spowodowało, że na dłuższą metę gra stała się bardziej czytelna. Taka znacząca liczba warstw pomogła nam w jeszcze jednym względzie - mogliśmy je wykorzystać do stworzenia świetnego efektu stereoskopicznego na trójwymiarowym ekranie 3DS-a! Mruganie obiektów ReccaMruganie sprite'ów na ekranie NES-a miało miejsce, gdy na ekranie wyświetlało się więcej niż osiem obiektów w tym samym poziomym rzędzie. Staraliśmy się zminimalizować liczbę obiektów na ekranie, ale jak wspominaliśmy wcześniej, nie przejmowaliśmy się dokładnymi liczbami. Niektóre z naszych obiektów wytwarza więcej cząsteczek niż pozwoliłby sobie na to NES… ale uznaliśmy, że warto było to zrobić dla efektu wizualnego. Niektóre gry takie jak Recca czy Contra obchodziło ograniczenia w wyświetlaniu sprite'ów wyświetlając niektóre z nich co drugą klatkę (w 30fps zamiast standardowego 60fps). Na monitorach CRT wyświetlających niskiej rozdzielczości wideo z przeplotem obiekty wyglądały wówczas jak gdyby były rysowane co klatkę. Co więcej, wiele grafik cząsteczek konsoli było tworzone z myślą o mruganiu przy animowaniu efektów w stylu eksplozji. My wykorzystaliśmy ten efekt, by w niektórych sytuacjach emulować przezroczystość kanału alfa. Na przykład, Shovel Knight mruga w stanie "niezniszczalności", po otrzymanych obrażeniach. Ogółem rzecz biorąc, nie było to ograniczenie, którego trzymaliśmy się w sposób kurczowy, z wyjątkiem sytuacji w których działało to na niekorzyść typowo NES-owej rozgrywki. Dodatki do palet kolorów NES mógł wyświetlać wyłącznie 54 kolory. To niewiele. Nasz problem polegał głównie na stworzeniu gradientów o większej palecie barw. Na przykład, na konsoli brakuje wartościowych żółci czy interesujących reprezentantów ciemniejszej grupie kolorów. Brak również odcieni pasujących do postaci o ciemniejszych karnacji. Trzymanie się NES-owej palety było dla nas jednak priorytetem, bo nadaje ona bardzo rozpoznawalnego tonu. Ostatecznie wykorzystaliśmy więc tylko kilka dodatkowych kolorów. Więcej informacji o kolorach konsoli Nintendo znajduje się na tej stronie wiki: http://en.wikipedia.org/wiki/List_of_video_game_console_palettes#Famicom.2FNE

Fiolet w Shovel Knight Wykorzystany fiolet to #22123B

Jakimi kolorami musieliśmy się więc hańbić? W powyższym ujęciu, w detalach platform znaleźć można ciemny fiolet. Po dodaniu go do palety użyliśmy go również w innych miejscach, głównie jako pomost między czernią, a chłodniejszymi kolorami teł.

Czerwień w Shovel Knight Głęboka czerwień to #360900

Podobnie jak w przypadku fioletu, potrzebowaliśmy koloru, który stałby pomiędzy czerną, a cieplejszymi barwami. Ta ciemna czerwień pojawia się głównie w planszy Rycerza Kreta, Zaginionym Mieście. Odcienia tego nie używaliśmy tak często jak fioletu ponieważ paleta kolorów NES-a składa się głównie z barw chłodnych. Znanym faktem jest, że Mega Man wymyślony został jako czerwony robot, ale jego kolor uległ zmianie [na błękitny - przyp. redakcji], gdy twórcy bliżej przyjrzeli się spektrum dostępnych kolorów.

Beż w Shovel Knight Beżowa peleryna w #9E9E5C

Następnym oszukanym kolorem jest barwa, którą stworzyliśmy jako pierwszą. Potrzebowaliśmy koloru pasującego do owczego runa noszonego przez Rycerza Polarnego. Żaden z kolorów palety nam nie podpasował. Beż wykorzystany został również do pokolorowania jego skóry i dopasowaniu obiektów na jego planszy do ogólnego tematu. Chcieliśmy nawet wrócić i poprawić go na prawidłowy kolor palety, bo jest to jedyne miejsce w grze w którym wykorzystujemy ten odcień, ale żaden z dostępnych kolorów po prostu nie pasował. Ostatecznie zdecydowaliśmy się go zostawić.

Brąz w Shovel Knight Cieniowanie mieszczanina: #824e00

Ostatni oszust pomógł nam zdywersyfikować postaci w Shovel Knight. Podstawowa paleta kolorów NES-a udostępnia bardzo mało kolorów dla postaci o ciemniejszych kolorach skóry. Stało się to dla nas dużym problem przy realizowaniu nagród "Pixel My Face" z Kickstartera (przy pewnym progu wsparcia można było zostać uwiecznionym jako portret w grze), ponieważ brały w nim udział osoby ze wszystkich zakątków świata. Naszym ostatnim oszukanym kolorem jest więc jasny brąz, który cieniuje twarz tego kolesia. Ciąg dalszy artykułu na stronie drugiej… Liczba kolorów na sprite The Legend of ZeldaSprite'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.

Przed i Po 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.

Cykl Animacji

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. Smok w Mega Man 2 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 Hud jako tło w Shovel KnightCiekawostką 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 Castlevania III - NESMuzyka 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!