Version numbers
en
EN
pl
PL

nfo

Te specyfikacje NewGRF dotyczą różnych numerów wersji. Ta strona wyjaśnia warunki dotyczące numerów wersji.

Contents

Version of a specific NewGRF

Obsługiwane przez OpenTTD 1.11.1 Nieobsługiwane przez TTDPatch

Numer wersji określonego NewGRF wyróżnia wersje tego samego NewGRF i określa, która wersja jest "nowsza" czy "starsza" . Nie ma to wpływu na specyfikacje NewGRF ani ogólne zachowanie NewGRF. NewGRF definiuje swoją wersję za pomocą Action 14 , może także zdefiniować minimum version , z którą jest kompatybilny z zapisywaniem.

Przed wprowadzeniem Action14 - i zawartych w niej numerów wersji - NewGRF służyły do ​​zmiany GRFID w przypadku niezgodności zapisu. Jednak autorzy NewGRF nie zrobili tego konsekwentnie, szczególnie. ponieważ spowodował problemy w innych miejscach (np. testy NewGRF dla innych NewGRF).

GRF version

Wersja GRF definiuje wersję specyfikacji NewGRF, do której stosuje się NewGRF. Zmiana wersji GRF może wpłynąć na działanie NewGRF, ponieważ może zmienić zachowanie różnych funkcji NewGRF.

W specyfikacjach zależności i zmiany między wersjami GRF są wskazywane za pomocą ikony GRFv .

NewGRF definiuje wersję specyfikacji, do której się stosuje Action8.

GRF version 0 and 1

Nieobsługiwane przez OpenTTD Nieobsługiwane przez TTDPatch

Te wersje GRF pochodzą ogólnie z dni alfa i beta NewGRF. W szczególności wprowadzono wersję 1 Action8 , która pozwala NewGRF na określenie wersji GRF, do której się stosuje. Wersja 2 GRF jest zgodna z TTDPatch 2.0, pierwszą stabilną wersją TTDPatch obsługującą NewGRF. Jest wyposażony w twardą obniżkę kompatybilności w NewGRF: TTDPatch 2.0 jest pierwszą wersją obsługującą GRF w wersji 2, jednocześnie usuwa obsługę wersji 0 i 1 w tym samym czasie (co oznacza, że ​​działanie 8 jest obowiązkowe).

Podczas opracowywania specyfikacji GRF zaprojektowano, wdrożono i przeprojektowano różne funkcje. Jako taka GRF wersja 2 jest pierwszą stabilną wersją specyfikacji.

GRF version 2 to 6

Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.02.0

Te wersje GRF zostały wprowadzone w nieco arbitralnych miejscach rozwoju TTDPatch, aby umożliwić NewGRF określenie wymagań dla nowszych funkcji GRF. Później to podejście do wersjonowania specyfikacji zostało porzucone. Zamiast tego NewGRF mogą teraz czytać i testować wersję TTDPatch / OpenTTD w Action9 i wyłączać się przy pomocy ActionB z odpowiednim komunikatem o błędzie.

GRF version 7

Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.52.5

Wersja 7 GRF wprowadza różne zmiany semantyczne do różnych funkcji NewGRF. Ten sam kod może być poprawny zarówno dla wersji 6, jak i 7, ale będzie miał inne znaczenie. Najważniejsze zmiany to:

Zmiany zostały szczegółowo opisane na stronach dla funkcji, których dotyczą.

GRF version 8

Obsługiwane przez OpenTTD 1.21.2 Nieobsługiwane przez TTDPatch

GRF wersja 8 ponownie wprowadza różne zmiany semantyczne do różnych funkcji NewGRF. Najważniejsze zmiany to:

Np. specjalne znaczenie 0xFF ?? wyniki wywołania zwrotnego zostały usunięte. Również wszystkie połączenia zwrotne są teraz 15-bitowymi połączeniami zwrotnymi.

Np. wyniki wywołania zwrotnego, które wcześniej były testowane tylko na zero lub niezerowe, muszą teraz zwracać określoną wartość 0 lub 1.

GRF container version

Format kontenera GRF to format binarny pliku GRF. Podczas gdy wersja GRF kontroluje znaczenie zawartości NewGRF, to Wersja kontenera GRF określa dla niego format przechowywania. W związku z tym ta wersja wpływa na oprogramowanie, które odczytuje/zapisuje pliki NewGRF, takie jak grfcodec, nml i oczywiście także OpenTTD i TTDPatch.

Format kontenera GRF jest określony w grfcodec documentation.

GRF container version 1

Obsługiwane przez OpenTTD 0.60.6 Obsługiwane przez TTDPatch 2.02.0

Jest to tradycyjny format pliku z TTD.

GRF container version 2

Obsługiwane przez OpenTTD 1.21.2 Nieobsługiwane przez TTDPatch

Jest to nowy format pliku wprowadzony w GRFCodec 6.0. Implementacje, które znają tylko wersję 1 kontenera GRF, uznają GRF z tą wersją za pustą / niepoprawną.

Nowe funkcje w tej wersji to:

Brak wpływu na wersję kontenera GRF, wersję GRF i wersję NFO. Chociaż oczywiście niektóre rzeczy są możliwe tylko w przypadku kontenera GRF w wersji 2.

NFO version

Jest to format pliku NFO, wejście/wyjście (input/output) GRFCodec i NFORenum. Brak wpływu na wersję kontenera GRF, wersję GRF i wersję NFO. Chociaż oczywiście niektóre rzeczy mogą być reprezentowane tylko przy użyciu nowszych wersji NFO.

Różnice między formatami są udokumentowane (documented) w GRFCodec source code , który nadal może czytać wszystkie formaty (choć nie pisać).

NFO version 1 to 7

Wzdłuż tych wersji do GRFCodec dodano wiele zaawansowanych formularzy składniowych. Jednak każdą wersję można przekonwertować na każdą z tych wersji bez utraty informacje podczas kodowania/dekodowania NewGRF (z wyjątkiem komentarzy do kodu źródłowego, które są tracone podczas kodowania GRF). Chociaż starsze wersje NFO mogą nie być tak wygodne do reprezentowania niektórych funkcji GRF (np. binarne obejmują 'sprites').

NFO versions 8 to 31

Historycznie wartości liczbowe wersji GRF i wersji NFO były często takie same (szczególnie w przypadku długo trwających wersji 6 i 7), powodując dość pewne zamieszanie wśród autorów NewGRF, którzy następnie używali numerów wersji nieprawidłowo. Kiedy GRF wersja 8 ponownie zbiegła się (w czasie) z wymogiem nowej wersji NFO, postanowiono pominąć wersje NFO od 8 do 31, aby uzyskać wartości liczbowe znacznie się różni, przez co prawdopodobieństwo pomieszania jest mniejsze.

Wartość "32" dla nowej wersji została wybrana z nieokreślonych powodów. Plotki mówią, że wartość 32 oznacza:

NFO version 32

Wersja NFO 32 dodaje obsługę specyficznych funkcji kontenera GRF w wersji 2, takich jak grafika 32bpp lub grafika specyficzna dla poziomu powiększenia. Jednak NFO wersja 32 i wcześniejsze wersje mogą być również zakodowane w kontenerze GRF wersja 1 lub. 2) Kodowanie do kontenera GRF w wersji 1 lub dekodowanie do wersji NFO < 32 może jednak spowodować usunięcie dodatkowych 'sprites', których nie można przedstawić w tych formatach.

TTDPatch version

Niektóre funkcje NewGRF są obsługiwane tylko od niektórych wersji TTDPatch. Te wymagania dotyczące wersji są wymienione w specyfikacji za pomocą ikony Obsługiwane przez TTDPatch . NewGRF mogą sprawdzić wersję TTDPatch za pomocą Action9 dla zmiennych 0B and 1D i wyłączyć się, używając ActionB .

TTDPatch jest w wersji alfa, beta i stabilnej. Jednak przed wersją 2.6 alfy wersje alfa zostały nazwane innymi numerami wersji niż wersje beta / stabilne, do których by doprowadziły; zamiast tego używali poprzedniej stabilnej wersji z przyrostem o 0.0.1.

Seria Wersje alfa Wersje beta Stabilne 'Konserwacje wydań stabilnych'
1.9 [1]

1.8.1 alpha XX 1.9 beta X 1.9

2.0 1.9.1 alpha XX 2.0 beta X 2.0 2.0r1
2.5 2.0.1 alpha XX 2.5 beta X 2.5 [2]

2.6 2.6 nightly rXXXX

  1.  Te wersje nie miały w ogóle obsługi NewGRF i są wymienione tylko w celu wyjaśnienia 'następujących wierszy'.#  'Jeszcze nie wydane'.

OpenTTD version

Niektóre funkcje NewGRF są obsługiwane tylko od niektórych wersji OpenTTD. Te wymagania dotyczące wersji są wymienione w specyfikacjach za pomocą ikony Obsługiwane przez OpenTTD . NewGRF mogą sprawdzić wersję OpenTTD za pomocą Action9 dla zmiennych 21 and 1D i wyłącz się przy użyciu ActionB.

OpenTTD ma wersje alfa, beta i stabilne. Główny i podrzędny numer wersji pozostaje taki sam dla alf, bet i 'stables' prowadzących do siebie, z wyjątkiem sytuacji, gdy główny numer wersji jest zwiększony.

Seria wersje Alpha wersje Beta Stabilne Konserwacje wydań stabilnych
0.6 0.6 nightly rXXXX 0.6.0-beta X 0.6.0 0.6.x
0.7 0.7 nightly rXXXX 0.7.0-beta X 0.7.0 0.7.x
1.0 0.8 nightly rXXXX, 1.0 nightly rXXXX [1] 1.0.0-beta X 1.0.0 1.0.x
1.1 1.1 nightly rXXXX 1.1.0-beta X 1.1.0 1.1.x
1.2 1.2 nightly rXXXX 1.2.0-beta X 1.2.0 1.2.x
1.3 1.3 nightly rXXXX

...

1.4 - 8

  1.  'Nightlies'; zmienili wersję po decyzji, że 1.0 będzie następował po 0.7 zamiast 0.8.