INNE Tworzenie NewGRF w NML #2 - parowóz Pt31 i inne pojazdy przegubowe.
#1
Cool 
Tym razem zaprezentuję krótki tutorial opisujący budowę pojazdu przegubowego (ang.: articulated), dość często spotykanego w OTTD, zarówno wśród pociągów jak i samochodów. Inspirację do napisania tego dodatku NewGRF będzie stanowił polski parowóz Pt31.

Opracowanie grafiki
Zasady opracowywania grafik dla pojazdów przegubowych są w zasadzie identyczne, jak dla zwykłych pojazdów - dla każdego z członów pojazdu (w tym wypadku: lokomotywy i węglarki) należy opracować osobny zestaw spritesetów, ukazujących pojazd z każdej strony.
W przypadku projektowania grafiki dla pojazdów przegubowych można jednak zastosować pewne triki, które w przypadku normalnych pojazdów są niedostępne. Jeden z takich trików będzie miał miejsce właśnie w przypadku omawianego parowozu Pt31. Powodem jego zastosowania jest długość oryginału. Pt31 jest bowiem drugim (zaraz po Pu29) najdłuższym polskim parowozem - jego całkowita długość to prawie 24m! Tymczasem w OTTD najdłuższy pojazd może mieć rozmiar 8/8 kratek, czyli zaledwie 32 pixele. Zastosowany trik polega na tym, że pojazd dwuczłonowy (lokomotywa + węglarka) może mieć już łącznie 2*8/8 kratek, czyli w sumie 64 pixele. Dodatkowo, te 64 pixele mogą być rozdzielone między człony nieproporcjonalnie, niezgodnie z teoretyczną długością tych członów:

[Obrazek: 752pt31_metoda_10_8.png]

Obrazek powyżej przedstawia zasadę działania zastosowanego triku. Lokomotywa i jej węglarka będą miały nadal zaprogramowaną teoretyczną maksymalną długość 8/8, jednak graficznie będą wyglądały jakby miały długość 6/8 oraz 10/8. Część pixeli należących do węglarki została bowiem wykorzystana do odwzorowania znacznie dłuższej lokomotywy.
Takie realistyczne odwzorowanie lokomotywy ma oczywiście swoje wady i zalety. Długa lokomotywa będzie się prezentowała znacznie lepiej niż oryginalne "ogryzki" z TTD. Będzie to jednak okupione wyraźnym jej "łamaniem" się na zakrętach oraz koniecznością budowy dłuższych stacji.

Zaprojektowanie lokomotywy wymagało opracowania nowego szablonu, dostosowanego do rozmiaru 10/8. Do narysowania węglarki wystarczył natomiast standardowy szablon 8/8, wykorzystywany do projektowania innych pojazdów. Kompletny zestaw grafik obejmuje także widok parowozu, który będzie ukazywał się w menu zakupu pojazdów (purchase menu). Dzięki takiemu obrazkowi w menu zakupu będzie pojawiał się kompletny parowóz, a nie tylko jeden jego człon:

[Obrazek: 858pt31.png]

Kod NML, służący do wczytania sprite-ów z wyżej przedstawionego zestawu grafik, będzie miał następującą postać:
Kod:
/* graphics definition */
template template_sprite_train_10(x, y) {
// [left_x,   upper_y,    width,    height,    offset_x,    offset_y]
    [x,          y,         10,        32,          -5,        -14]
    [x+ 18,      y,         30,        30,         -19,        -17]
    [x+ 54,      y,         44,        20,         -26,        -13]
    [x+104,      y,         30,        30,         -11,        -19]
    [x+140,      y,         10,        32,          -5,        -18]
    [x+158,      y,         30,        30,         -15,        -19]
    [x+194,      y,         44,        20,         -18,        -13]
    [x+244,      y,         30,        30,          -7,        -17]
}
template template_sprite_train(x, y) {
// [left_x,   upper_y,    width,    height,    offset_x,    offset_y]
    [x,          y,         10,        28,          -5,        -14]
    [x+ 16,      y,         26,        28,         -15,        -17]
    [x+ 46,      y,         36,        20,         -18,        -13]
    [x+ 86,      y,         26,        28,          -7,        -17]
    [x+120,      y,         10,        28,          -5,        -14]
    [x+136,      y,         26,        28,         -15,        -17]
    [x+166,      y,         36,        20,         -18,        -13]
    [x+206,      y,         26,        28,          -7,        -17]
}
template template_sprite_purchase(x, y) {
// [left_x,   upper_y,    width,    height,    offset_x,    offset_y]
    [x,          y,         50,        12,         -25,         -6]
}

/* empty sprites */
spriteset(spriteset_pt31_purchase, "gfx/pt31.png") {
        template_sprite_purchase(4, 100)
}
spriteset(spriteset_pt31, "gfx/pt31.png") {
        template_sprite_train_10(4, 20)
}
spriteset(spriteset_pt31_tender, "gfx/pt31.png") {
        template_sprite_train(4, 60)
}

c.d.n.


Wiadomości w tym wątku
Tworzenie NewGRF w NML #2 - parowóz Pt31 i inne pojazdy przegubowe. - przez TadeuszD - 09-11-2011, 11:54

Skocz do:

[-]
Zamknięcie forum OpenTTD Polska
Forum OpenTTD Polska zostało wyłączone. Obecnie znajduje się tu archiwum dyskusji o dodatkach tworzonych przez naszą społeczność.
Po aktualne treści i dyskusje zapraszamy na nasz discord! :)

[-]
Discord