Skip to content

m4NFOmanual

extrazi edited this page May 16, 2021 · 21 revisions
original    original
EN     PL

Pokaż pełny zestaw ramek, aby ułatwić nawigację (en.)

Introduction

m4nfo, proponowany i 'wdrażany' od 2009 roku, jest frontendem języka wysokiego poziomu do generowania niskopoziomowego kodu-bajtowego nfo. nfo byte-code to zorientowany maszynowo język opracowany przez Josefa Drexlera w 2000 roku do programowania 'nowych' plików zasobów gry (newGRF) dla następców gry Transport Tycoon, a mianowicie TTDPatch i OpenTTD.

Aby zapewnić programistom newGRF wysoki poziom kontroli, elastyczności i wsparcia, m4nfo stosuje dwojakie podejście: zachowując wydajność charakterystyczną dla zwykłego nfo, z priorytetowym celem generowania małego i szybkiego kodu, wprowadza wyższe poziomy abstrakcji gdzie ma to sens dla programisty, biorąc pod uwagę ustalone nawyki kodowania newGRF.

Aby osiągnąć te cele, m4nfo został zaimplementowany jako zestaw małych modułów zamiast jako duża monolityczna aplikacja. Istnieją oddzielne moduły dla pociągów, stacji, obiektów ..., co odzwierciedla fakt, że przez większość czasu newGRF zajmuje się tylko jedną z 'cech' ( features) TTD.

Takie podejście nie tylko sprawia, że ​​m4nfo jest mały i lekki (M4: 143kB, moduł 'trains': 50kB), ale także pozwala na użycie identycznych identyfikatorów i nazw dla tych samych metod w różnych funkcjach, zachowując niewielką przestrzeń nazw i unikając zbędnych etykiet .

Biorąc pod uwagę modułową strukturę m4nfo, bardzo łatwo jest dodać dodatkowe funkcje dostarczane przez użytkownika, a nawet całe moduły. Można to zrobić 'w locie' (on-the-fly) , umieszczając nowe funkcje bezpośrednio w plikach źródłowych użytkownika; lub można to zrobić dodając dodatkowe pliki nagłówkowe, zawierające większą liczbę nowych funkcji. Jest nawet możliwa wstępna kompilacja modułów dostarczonych przez użytkownika lub - raczej egzotycznie - włączenie sekcji zwykłego kodu nfo bezpośrednio do plików źródłowych m4nfo.

Ponadto m4nfo natywnie zawiera potężny procesor makr odpowiedni do prywatnych aplikacji dostosowywania lub tworzenia szablonów (w rzeczywistości m4nfo jest napisany w M4, bardzo wydajnym procesorze makr), więc nie ma potrzeby stosowania żadnych zewnętrznych narzędzi, takich jak CPP do używania makr lub sztucznie stworzyłem dodatkowe warstwy Pythona, co skutkowało rozdętymi instalacjami.

Istnieją wstępnie skompilowane moduły, które nie wymagają plików dołączanych do systemu m4nfo i działają nawet nieco szybciej, dla większości funkcji TTD, które można łatwo wykorzystać ręcznie lub ze skryptu makefile.

Podsumowując, m4nfo najlepiej sprawdza się w dużych projektach ze względu na niezrównaną szybkość i wydajność kodu, przy czym ta ostatnia zależy tylko od doświadczenia programisty, ponieważ nie ma dodatkowego narzutu związanego z procesem kompilacji. Wreszcie, zdolność m4nfo do obsługi rozproszonych plików źródłowych, w tym "łączenia" (linking) wstępnie skompilowanych plików części grf, najlepiej sprawdza się przy użyciu narzędzia do budowania śledzenia zależności, takiego jak 'Make' , aby stworzyć wydajne środowisko programistyczne dla naprawdę duże projekty.

przypadki użycia

...
MariCo (by mb)
Kolejny duży zestaw, ale tym razem zajmujący się wyłącznie funkcją newobjects . Sam charakter tego zestawu wymagał sprytnej obsługi wszelkiego rodzaju stoków i fundamentów, a także zastosowania skomplikowanych animacji i zadań związanych z przemalowywaniem. Narzędzia m4nfo do modularyzacji były niezbędnymi warunkami wstępnymi prawidłowego wdrożenia.

NewStations (by mb)
NewStations v0.6 to dość duży zestaw stacji, wykorzystujący skomplikowane funkcje newGRF, takie jak zmiana koloru, animacja i niektóre z bardziej 'niezbadanych' funkcji stacji. Narzędzia m4nfo do obsługi układów stacji, a także możliwość ich szablonowania były tutaj podstawowymi wymaganiami.

Content

Niniejsza dokumentacja składa się z trzech części. Manual Użytkownika skierowany jest do tych, którzy wcześniej zaznajomili się z programowaniem nfo i chcą uzyskać dostęp do bardziej przyjaznego dla użytkownika stylu tworzenia newGRF. Stąd też styl Manual`a jest mniej więcej podobny do tutorial`a , z wieloma przykładami pokazującymi różne funkcje m4nfo.

Ponadto manual zawiera Index zawierający listę wszystkich stałych i funkcji m4nfo.

OTOH, Raport ma służyć jako zwięzłe odniesienie zarówno dla programistów newGRF, jak i re-implementatorów m4nfo. Definiuje standard jako wspólną podstawę dla różnych dodatkowych wdrożeń m4nfo (np. Dla przemysłu i budynków).

Na koniec jest Tutorial , który w tej chwili dotyczy tylko wywołań zwrotnych i animacji , ale w przyszłości będzie on rozszerzany.