[Biblioteka gracza] „Gears” A look inside the Final Fantasy VII Game Engine

Zaczęty przez Janusz, Kwiecień 09, 2020, 12:48

Poprzedni wątek - Następny wątek

Janusz


hankie

Stanowczo nie jestem - ale przeczytać zawsze przeczytam. Może coś dla noobów się znajdzie ;D

Janusz

Raczej nie.  ;)

Keita

GB, GBC, GBA, DS, 3DS, Famicom, SNES, N64, GC, Wii, NS, PSP, PS1, PS2, PS3, SMS, SMD, Lynx, 2600, 65XE, 486, K-6, PIII

verteks

Cytat: Bodzio w Kwiecień 09, 2020, 12:48
Dzisiaj ciekawostka na czasie, dla fanów programowania, silników, tabelek, liczb itp.

https://strefapsx.pl/gears-look-inside-the-final-fantasy-vii-game/
O, to dla mnie! Zakrzyknąłem jak w tym znanym filmiku reklamie pasztetu. Dzisiaj mam akurat taki jakiś dzień do kitu a dzięki tobie Bodzio coś pozytywnego się dziś wydarzyło!
Na razie doczytałem do 30 strony, technikalia są zrozumiałe tylko że nigdy nie grałem w FF7 i opisy dotyczące mechanik gry nic mi nie mówią. Ciekawe że kod niejako pamięta pierwszą część jeszcze z NES albo to że w trakcie tworzenia serii były liczne perturbacje z platformami, deadline'ami i portami na różne platformy.

Janusz

O kurde, nie do końca byłem przekonany, że trafi się ktoś, kto w to będzie w stanie się  wczytać. Ja mimo najszczerszych chęci musiałem się ograniczyć do bardziej newsowej formy wpisu. :)

Jakbyś ogarnął temat i był w stanie napisać jakiś krótkie résumé tych najlepszych ciekawostek to z miłą chęcią dorzucę do tekstu. ;)

Mcin

Zerknąłem. do pewnego momentu jest dla mnie zrozumiałe (co nie znaczy ani trochę, że umiem podobne rzeczy), ale rozgryzanie składni C/C++ już mnie nie kręci.
verteks, kodzisz coś? Nie pamiętam, aby ś się chwalił dziełami :)
Net Yaroze to życie. Net Yaroze to Nadzieja.

JabuPL

Przeczytałem to chyba z dwa lata temu.
W sumie moge zrobić to jeszcze raz.
Discord: Jabu#6618    PSN: JabuPL

verteks

Przeczytałem całe, trochę obniżam ocenę bo jest wiele sekcji nieopisanych i w ich miejsce jest wstawione "Lorem Ipsum". Ponoć bardziej aktualne informacje są na tym forum Qhimm co piszą w dokumencie.

Cytat: Bodzio w Kwiecień 09, 2020, 22:33
O kurde, nie do końca byłem przekonany, że trafi się ktoś, kto w to będzie w stanie się  wczytać. Ja mimo najszczerszych chęci musiałem się ograniczyć do bardziej newsowej formy wpisu. :)

Jakbyś ogarnął temat i był w stanie napisać jakiś krótkie résumé tych najlepszych ciekawostek to z miłą chęcią dorzucę do tekstu. ;)

Jasne. No to dokument scharakteryzowałbym tak:
- wyraźny podział na wersję z PS1 i port na PC
- zero deasemblacji kodu źródłowego gier...
- ...ale za to dość powierzchowna analiza jak ten kod działa, podziału na moduły i jak one ze sobą współpracują
- skupienie się na zasobach / danych jakie FF7 używa, to jest formaty modeli, tekstur, teł, budowa szkieletów postaci i tak dalej
Te "kody" w C++ / Delphi to sposób na opisanie formatów danych, typy danych z tych języków upraszczają opis wielkości poszczególnych pól - zamiast pisać, że oś X ma rozmiar 32 bitów / 4 bajtów, łatwiej napisać że jest w rozmiarze int i programiści wiedzą jakich wartości się spodziewać.
- dużo matematycznych wzorów na liczenie obrażeń danej broni, czarów - mechaniki gry, jakieś materie, stany postaci, hodowla Chocobo i tak dalej (nie wiem jak to działa w grze, nie grałem jak pisałem wcześniej)

Generalnie grupa ludzi za to odpowiedzialna skupiła się na hackowaniu zasobów w celu podmiany teł, modeli i tym podobnych.

Ciekawostki:
- podział kodu na rdzeń (kernel) oraz moduły wywodzi się z pierwszej gry w serii, to jest Final Fantasy na konsolę Family Computer / Nintendo Entertainment System i niezmieniony zachował się do siódmej części włącznie. W pierwowzorze wynikał on z tego, jak Famicom / NES działają
- moduły te mają ściśle wyspecjalizowane zadania i nie odwołują się bezpośrednio do sprzętu - od tego jest rdzeń, taka warstwa abstrakcji pomogła w przeportowaniu gry na PC
- FF7 został napisany z pomocą środowiska Psy-Q, popularnego wśród twórców gier na PS1, dowodem na to są statycznie dołączone do kodu biblioteki Psy-Q i kilka formatów danych zgodnych z narzędziami będącymi częścią środowiska developerskiego
- w zapisie gry pierwsze 80 bajtów to zduplikowane dane z dalszej części sejwa - zrobiono to w celu przyspieszenia wczytywania podglądu w menu save w grze; zmiana tych danych jest tylko kosmetyczna - zmienione dane się wyświetlą, ale po wczytaniu gra z nich nie skorzysta, tylko z tych w dalszej części pliku zapisu
- filmiki FMV są w palecie kolorów o rozmiarze 24 bitów, ale grafiki wykorzystane podczas rozgrywki mają paletę kolorów tylko 15 bit
- gra kontroluje napęd PS1 w specjalny sposób w celu uniknięcia zwiech przy zmienianiu modułów
- gra ma ukryty duży tryb debugowania, gdzie poszczególni twórcy mieli swoje pokoje w grze do testowania różnych zdarzeń z gry - część zdarzeń nie działa prawidłowo powodując bugi
- gra używa własnego języka skryptowego do obsługi rozgrywki, język ma 246 (!) różnych poleceń
- w celu obliczania obrażeń podczas walk gra wykonuje 19 kroków na podstawie wielu danych (bardzo nerdowych danych nadmienię)
- w grze jest 319 unikalnych przedmiotów a jest tylko 256 unikalnych identyfikatorów, początkowe ID są przypisane do dwóch przedmiotów jednocześnie, a jaki jest to przedmiot rozróżnia się po ilości - jeżeli ilość jest nieparzysta, no to jest to jeden przedmiot, jak parzysta to drugi (w grze można mieć tylko 127 / 128 sztuk danego przedmiotu?)
- dane generalnie wszystkie są skompresowane, użyte algorytmy to LZS (specyficzny, dobrze opisany w dokumencie) i GZIP

To takie ciekawostki które wydają mi się najciekawsze, jeśli coś konkretnego miałbym napisać to dajcie znać co.

Cytat: Mcin w Kwiecień 09, 2020, 22:35
Zerknąłem. do pewnego momentu jest dla mnie zrozumiałe (co nie znaczy ani trochę, że umiem podobne rzeczy), ale rozgryzanie składni C/C++ już mnie nie kręci.
verteks, kodzisz coś? Nie pamiętam, aby ś się chwalił dziełami :)
Tak jak pisałem, z języków programowania jest tam tylko użycie typów danych, zero kodu. Ważniejsze jest wiedzieć jak tworzy się grafikę 3D - szkielety postaci, animacje szkieletowe, sceny, kamery, wierzchołki, poligony, wektory, teksturowanie... Tutaj nie ukrywam moja wiedza nie jest kompletna ale podstawy znam.

Cały czas się kręcę wokół programowania (z 10 lat będzie) i wiążę z tym swoją przyszłość ale od tych fajnych, ciekawych, kręcących mnie rzeczy odciągają mnie takie nudne aktywności jak klepanie apek CRUD co by z branży nie wylecieć, inne takie korpobzdurne programowanie, szkoły / uczelnie i życie. Brakuje doby na to żeby być graczem, programistą hobbystą, uprawiać sport, rozwijać się muzycznie i inne aktywności. Coś tam mam do pochwalenia się, ale wiedza nie idzie w parze z praktyką - często jest tak, że bym coś napisał ale po chwili szukania okazuje się że ktoś już coś takiego zrobił i kończy się temat na tym że nic nie tworzę.
Jakiego typu dzieła by cię interesowały?

Janusz

Dobra robota! Gdzie to wszystko tam znalazłeś to nie wiem, bo ja przy tym się trochę czułem jakby hieroglify musiał czytać. Masa bardzo szczegółowych ciekawostek, zwłaszcza ciekawy ten podział kodu. Widać też, że pomimo ograniczonych możliwości, wynikających ze specyfiki PSX, starano się to jakoś obchodzić na różne sposoby.

Dorzuciłem Twoją pracę do materiału na głównej. Teraz to można nazwać merytoryczną analizą, a nie tylko ciekawostką z linkiem. Dzięki!

Mcin

Cytat: verteks w Kwiecień 10, 2020, 17:29Jakiego typu dzieła by cię interesowały?
Nic bardzo konkretnego. Po prostu zdziwiłem się, że masz wiedze w tym temacie, parę lat krążymy po podobnych forach i nie pamiętam, żebyś coś na ten temat wcześniej wspominał.
Net Yaroze to życie. Net Yaroze to Nadzieja.

verteks

Cytat: Bodzio w Kwiecień 10, 2020, 19:45
Dobra robota! Gdzie to wszystko tam znalazłeś to nie wiem, bo ja przy tym się trochę czułem jakby hieroglify musiał czytać. Masa bardzo szczegółowych ciekawostek, zwłaszcza ciekawy ten podział kodu. Widać też, że pomimo ograniczonych możliwości, wynikających ze specyfiki PSX, starano się to jakoś obchodzić na różne sposoby.

Dorzuciłem Twoją pracę do materiału na głównej. Teraz to można nazwać merytoryczną analizą, a nie tylko ciekawostką z linkiem. Dzięki!
Fajnie się dokument zaczął właśnie od takich rzeczy mocno powiązanych z kodem i architekturą PS1, później entuzjazm nieco mi opadł jak kolejny strony skupiały się tylko na formatach danych użytych w grze.
W porządku, widzę że nawet są linki do innych artykułów. Jakimś cudem nie kojarzę żebym czytał o zestawach developerskich, muszę nadrobić. Możesz nawet przeredagować językowo ten mój opis, jestem świadomy że często pisze "niepolskim" szykiem zdania i zdania mogą nie brzmieć zbyt "wyjściowo". Przez całą moją edukację poloniści nie dali rady tego naprostować heh.

Cytat: Mcin w Kwiecień 11, 2020, 16:39
Cytat: verteks w Kwiecień 10, 2020, 17:29Jakiego typu dzieła by cię interesowały?
Nic bardzo konkretnego. Po prostu zdziwiłem się, że masz wiedze w tym temacie, parę lat krążymy po podobnych forach i nie pamiętam, żebyś coś na ten temat wcześniej wspominał.
Zawsze starałem się brać udział w dyskusjach na takie tematy i w ten sposób niebezpośrednio, subtelnie dawałem do zrozumienia że mam jakiś związek z kodowaniem. Samemu zaczynać temat to tak nie bardzo w moim stylu, ale jak ktoś zapoda coś to jak najbardziej się dołączę. To chyba taki pierwszy post typu kawa na ławę.
No też od kilku lat znajomy jest mi pseudonim "Mcin", jak go widzę to wiem że wypowiedź będzie napisana z pasją do gier.

W komentarzach pod artykułem @ikskoks wspomniał, że udostępniono źródła gier na PS1. Dzięki za tą informację, temat mi jest nieznany, może rzucę okiem na to i też będę mógł jakoś pomóc w tworzeniu artykułów.

Janusz

Cytat: verteks w Kwiecień 11, 2020, 19:28Możesz nawet przeredagować językowo ten mój opis, jestem świadomy że często pisze "niepolskim" szykiem zdania i zdania mogą nie brzmieć zbyt "wyjściowo". Przez całą moją edukację poloniści nie dali rady tego naprostować heh.

Jakby coś było nie tak, to przeredagowałbym i bez pytania. :D Więcej wiary w siebie. ;)

Mcin

Cytat: verteks w Kwiecień 11, 2020, 19:28W komentarzach pod artykułem @ikskoks wspomniał, że udostępniono źródła gier na PS1.
Samo udostępnienie takich źródeł jest warte newsa, moim zdaniem.
Net Yaroze to życie. Net Yaroze to Nadzieja.

ikskoks

Cytat: Bodzio w Kwiecień 11, 2020, 20:20Cytat: verteks w Kwiecień 11, 2020, 19:28:27

    W komentarzach pod artykułem @ikskoks wspomniał, że udostępniono źródła gier na PS1.

Samo udostępnienie takich źródeł jest warte newsa, moim zdaniem.

Hej, natrafiłem dzisiaj na bardzo ciekawe linki i tak sobie przypomniałem o istnieniu tego tematu na strefie :p

https://en.wikipedia.org/wiki/List_of_commercial_video_games_with_available_source_code
https://en.wikipedia.org/wiki/List_of_commercial_video_games_with_later_released_source_code

Znajdziecie tam spis wszystkich kodów źródłowych, które zostały udostępnione lub w jakiś sposób wyciekły
(na przykład SpongeBob czy Mortal Kombat na PS1).