Textfeldy - od A do Z - tekst w OMSI | |||
Nie wiem czy już taki poradnik istnieje, ale postanowiłem napisać własny.
Textfeldy z niemieckiego pola tekstowe - służą do wyświetlania zmiennego tekstu. Nie ma zbyt wielu różnić między tekstem na obiektach scenerii a tych w pojazdach. Jedno i drugie, może być kontrolowane przez skrypt, przy czym w obiektach scenerii możemy wpisać sobie w obiekt co ma na nim być, np nazwa przystanku czy ulicy. Po pierwsze, to od czego musimy zacząć to dobrać odpowiedni font. Font inaczej czcionka dla mówiących mniej cool młodzieżowo. OMSI ma podfolder Fonts w którym możemy znaleźć wszystkie dostępne dla OMSI fonty, tak jak wskazuje nazwa. Font w OMSI składa się z 2 plików - .oft i .bmp. Plik .oft jest plikiem konfiguracyjnym fontu, gdzie wyznaczone są koordynaty wszystkich znaków, jakie są odległości między znakami w pixelach, jego nazwę oraz nazwę pliku bitmapy. Plik .bmp jest bitmapą gdzie mamy zapisane wszystkie dostępne znaki dla danego fontu. Nie muszą to być koniecznie znaki ABCDE, bo można tu zrobić nawet jakieś szlaczki. Ważnym jest, aby zgadzały się koordynaty, oraz żeby nie dublowały się znaki, jak i również żeby nie było spacji za znakami. Ostatnią istotną rzeczą jest to, żeby plik .bmp był zapisany jako 24-bitowy, inaczej OMSI nie odczyta poprawnie fontu. Mając to za sobą, przejdźmy do struktury plików fontów i spójrzmy na nie dokładnie. To ważne, aby zrozumieć jak najlepiej robić własne fonty. Pliki .bmp 24-Bitowe bitmapy zawierające 'mapę' wszystkich znaków dla danego fontu, lub fontów. Na jednej bitmapie możemy mieć zmapowanych kilka różnych fontów, co polecam robić, jeżeli mówimy o fontach na matrixy. Przykładowe bitmapy wyglądają tak: ![]() ![]() Kolor niebieski (R:0 G:0 B:255 / HEX 0000FF) wyznacza obszar który nie jest używany do mapowania znaków, ułatwia to pracę w przypadku gdy mapujemy plik .oft ręcznie. Zacznim zaczniemy, w przypadku gdy robimy zwykły font pokroju Ariala, NIGDY, podkreślam N I G D Y nie używajcie zbyt dużego rozmiaru czcionki. Według mnie, optymalnym jest całkowity rozmiar wysokości w okolicach 40-60 pikseli. Używając większej rozdzielczości, to tekst pokroju zegarka który odświeża się co sekundę, zagwarantuje czkawkę całej gry. Ładny i ostry font brzmi fajnie na papierze. Jeżeli zrobicie zbyt duży font i zorientujecie się że powoduje on problemy z wydajnością, to całą pracę trzeba wykonać de facto od nowa. Dlatego sam fakt dobrania odpowiedniej wysokości dla znaków jest tak istotny. Do edycji polecam Paint.net, chociaż możecie korzystać z czego chcecie i w czym wam się pracuje najwygodniej. Tutaj mówię o przypadku programu graficznego obsługującego warstwy. Mając przygotowany plik, pora przygotować sobie zestaw znaków. Polecam użyć poniższego: Kod: 0123456789 ABCDEFGHIJKLMNOPRSTUWYZXQV abcdefghijklmnoprstuwyzxqv !?:;.,%^&*()-_'"/\<>+ ÄÖÜäöüß ĄĆĘŁŃÓŚŻŹ ąćęłńóśżź Możemy podejść do tego na 2 sposoby - albo zrobić kilka linijek znaków, albo zrobić jedną długą linijkę ze wszystkimi znakami. Polecam zostawić rezerwę miejsca na wypadek gdybyście kiedyś chcieli dodać jakiś dziwny znak, bo będziecie mieli taki kaprys. ![]() Jak widać na załączonym obrazku, wysokość naszej bitmapy niekoniecznie musi oznaczać wysokość tekstu który wpisujemy. Musimy mieć na uwadze znaki szczególne takie jak Ą czy Ć, które będą wykorzystywać więcej marginesu górnego/dolnego niż pozostałe znaki. ![]() Następnie na warstwie pod czcionką ale nad niebieskim tłem, wyznaczamy obszary dla znaków. Musi się on pokrywać na szerokość znaków. Odstępami między znakami w OMSI się nie przejmujcie, ponieważ to rozwiąże plik .oft . W przypadku gdyby jakieś znaki były 'sklejone ze sobą', to przesuńcie dalszą część znaków o 1-2 pixele w bok, aby zachować odstęp między 'czarnymi' polami. ![]() Mając gotową bitmapę, zapisujemy ją jako 24-bitową. Pliki .oft Pliki te mówią OMSI gdzie znajduje się jaki znak, ich wysokości, odstępy i nazwę. Kod: [newfont] <- Nagłówek pliku .oft Obrazując o co chodzi z koordynatami: ![]() Alternatywnie można użyć tej strony LINK która je dla nas wygeneruje, ale trzeba mieć na uwadze to że wysokość znaku utnie, oraz że czasami potrafi dostać padaczki przy większych plikach, oraz jak jest kilka linijek ze znakami. Trzeba robić 'po linijce', ale nie zmieniając wysokości bitmapy. Ergo zakryć inne linijki niż ta którą obecnie chcemy żeby ta strona nam zmapowała. Struktura modelu 3D Aby tekst nam się gdzieś pojawił, musi mieć się na czym pojawić. ![]() Mając nas wymarzony plane na którym chcemy żeby pojawiały się jakieś bzdury, musimy go zmapować oraz dać mu odpowiedni materiał z teksturą. Nie będę się do tego zagłębiał tutaj, bo tu trzeba znać podstawy blendera lub innego programu do edycji 3D którego używacie. Teraz tak, żeby odpowiednio to potem wpisać w model.cfg/.sco, polecam zrobić sobie screena naszego plane'a tak aby mieć go na wprost od kamery. Następnie ucinamy screen do samej planszy. Rozdzielczość tego co nam zostało, to mamy współczynnik proporcji. Jak jesteście leniwi jak ja, to zmieńcie sobie jego rozdzielczość do takiej jaką mamy w wysokości fontu jaki chcemy użyć (załóżmy 50 pikseli). W tym wypadku wychodzi nam 191 na 50 pikseli. To będzie rozdzielczość którą wpiszemy w konfiguracji modelu. Wpisy w model.cfg / obiekt.sco Wpisy gdzieś u góry w model.cfg: Kod: makdolan <- dowolny tekst, możemy sobie tu wpisać własne notatki Wpisy dla naszego modelu .o3d: Kod: [mesh] W przypadku pojazdów i obiektów scenerii wygląda to tak samo. Uwaga odnośnie zmiennych string Podstawową podstawą podstawy - miejcie poprawnie przypisany plik stringvarlist.txt! W nim musi się znaleźć nazwa tego co wpisaliśmy wcześniej w texttexture. W plikach scenerii można wpisać 0.
[wymoderowano - Ik132]
2.1. Wulgaryzmy /+70%
| |||
Użytkownicy przeglądający ten wątek: |
1 gości |