Reverse Engineering gry - Nietypowa propozycja: Sonic Chronicles (3/3)

in #gry7 years ago

Oryginalny wpis: The Odd One Out: Sonic Chronicles (3/3) (napisany przez DrMcCoy).


Teraz, gdy mam (prawie) wszystko dotyczące grafiki, nadszedł czas, aby wpleść to wszystko razem w coś na kształt gameplay'u Sonic Chronicles.

Rozmiar okna

Będąc grą na Nintendo DS, Sonic Chronicles działa na dwóch ekranach 256x192 każdy, ułożonych jeden nad drugim. Aby ułatwić sobie pracę, postanowiłem na razie zmienić rozmiar okna xoreos na 256x384 i wyświetlać tak, jakby to były ekrany Nintendo DS. W przyszłości będziemy musieli zastanowić się, jak obsługiwać skalowanie.
Są co najmniej dwa sposoby, aby sobie z tym poradzić:
-Render na dwie tekstury, jeden dla każdego ekranu, a następnie przeskalować.
-Skalować położenie elementów osobno.
Pierwsze jest łatwym wyjściem, ale drugie może zapewnić wyższą jakość. Być może jest też trzeci, "środkowy" sposób: wyciągnąć wszystkie elementy 2D w połączeniu ze skalowaniem i renderowaniem obiektów 3D w wyższej rozdzielczości.

Panele intro

Aby gra wydała się nieco bardziej realna, przygotowywałem kilka statycznych paneli przedstawiających różne ekrany powitalne, i "Rozpocznij swoją przygodę" w Graficznym interfejsie użytkownika. Należy pamiętać, że przycisk nie działa na prawdę: w rzeczywistości to tylko obraz, który czeka na kliknięcie myszką.


Naciśnij by zacząć / Rozpocznij swoją przygodę / Rozdział 1

Obszar tła

Po panelach intro Sonic Chronicles w xoreos zrzuca cię do pierwszego levelu. Korzystając z panelu statycznego wyświetla mini mapę na górnym ekranie, a tło w dolnym obszarze ekranu. Za pomocą klawiszy strzałek, można poruszać kamerą wzdłuż osi X i Y, a panel obszaru tła podąża za kamerą i rysuje sekcję.

Umieszczanie modeli przedmiotów

To było dość łatwe. Zmarnowałem większą część dnia starając się prześledzić w jaki sposób gra ładuje i umieszcza obiekty 3D (użytkowe) w okolicy. Opis obszaru, w listach plików ARE, posiada wszystkie modele przedmiotów, każdy składający się z liczby całkowitej ("nazwa") z 40.023, który wydaje się być ID i liczbą całkowitą o nazwie 40018, który jest unikalny dla każdego typu. To znaczy: pierścienie do zbierania mają wartość 40.018 z 0, skrzynia ze skarbem wartość 6, oraz stos drewna w pierwszym obszarze ma wartość 15. nazwy modeli są wymienione w appearances.gda. Jak na razie wszystko względnie jasne. Jednak model na stos drewna jest w rzędzie 101 i nie udało mi się znaleźć spójnego sposobu na połączenie tych dwóch liczb, 15 i 101, albo matematyczne lub z pomocą innych plików danych, które pracowały dla innych modeli przedmiotów.

Nie mając lepszych pomysłów spróbowałem demontażu. Lecz było tylko gorzej. Nie ma dobrego sposobu aby połączyć te liczby, bo instancja ich jest ustalona: Wielki stary przełącznik ze wszystkich możliwych wartości (43 z nich, dla 0-42) liczby całkowitej 40.018, z obiektu instancji dla każdego z nich.
By to uprościć dodałem tablicę mapowania, która wpisuje identyfikator na rząd w appearances.gda. Nie wszystkie komórki się zgadzają, ale przynajmniej na tyle, że pierwszy obszar ma sens.

Jednak, aby modele wyświetlały się poprawnie, czegoś wciąż brakowało. Xoreos tworzy macierz projekcji odpowiedniej perspektywy, w której obiekty w odległości są mniejsze itp. Sonic Chronicles jednak wykorzystuje ortogonalną projekcję pod kątem 45°, więc dodałem metodę w GraphicsManager aby kod gry wybierał rzut prostopadły.

I po kilku innych drobnych poprawkach związanych z tym, jak skalowanie szybkości ruchu kamery, aby dopasować kąt 45 ° (tak, że obiekty 3D pozostają w tym samym miejscu na obrazie tła podczas przenoszenia) i dodanie zmienionego na prostopadły rzutu kamery (tak, że wykryty kursorem myszy obiekt działa poprawnie), wyświetlanie się modeli przedmiotów i ich zachowanie się są prawidłowe na każdym poziomie.


Green Hill Zone / Blue Ridge Zone / Voxai Beta Interior

To wszystko?

Więc, czego brakuje? Właściwie, dość sporo:
Animacje modeli. Mogą to być zarówno oparte o geometrię i tekstury. W animacji geometrycznej, kości poruszają i obracają się, co prowadzi do różnych położeń wierzchołków. Animacje oparte na teksturach, tekstury przesuwają, obracają lub skalują, lub nawet są zastępowane przez inne.
Większość zmiennych nie jest jeszcze rozpoznawalnych. Modele przedmiotów nie wykonują żadnych poleceń. Nie tworzymy stworzeń, aktywatorów zdarzeń i zbiorów. Nie mamy też postaci gracza, który może się poruszać po okolicy. Nie ma również wszelkiego rodzaju dialogów, i nie ma właściwego wsparcia GUI i menu.

Brakuje dźwięku i muzyki. Istnieje dla nich częściowa dokumentacja, tak więc powinno to być stosunkowo łatwe do zrobienia. Filmy, których wciąż brakuje, będą trudniejsze: musimy użyć inżynierii wstecznej kodeków wideo ActImagine VX, ponieważ nikt jeszcze tego nie zrobił.

To wszystko jest na liście rzeczy rzeczy do zrobienia. Nic z czego nad czym chcę pracować już w tej chwili. Oczywiście, będziemy wdzięczni za wkład, więc proszę, nie wahaj się skontaktować z nami, jeśli chcesz doprowadzić do rozwiązania jednego z powyższych zagadnień, lub cokolwiek związanego z tematem!


Teksty tłumaczone na podstawie wpisów z bloga Xoreos.
Sort:  

Oo patrzcie Polak, prawdziwy Polak.

A są nieprawdziwi Polacy? :)

Coin Marketplace

STEEM 0.18
TRX 0.14
JST 0.029
BTC 57174.31
ETH 3071.24
USDT 1.00
SBD 2.40