Ankieta: Czy popierasz w tworzeniu tego Setu?
Nie posiadasz uprawnień, aby oddać głos w tej ankiecie.
Tak! Popieram ten pomysł i pomogę w kodowaniu.
0%
0 0%
Tak! Popieram ten pomysł i pomogę w rysowaniu.
30.30%
10 30.30%
Tak! Nie popieram ale mi się nudzi.
6.06%
2 6.06%
Nie! Popieram pomysł ale nie pomogę.
57.58%
19 57.58%
Nie! Jestem przeciwny. Kto by takie coś chciał?
3.03%
1 3.03%
Nie! Nie wiem o co chodzi i wszedłem przypadkiem.
3.03%
1 3.03%
Razem 33 głosów 100%
*) odpowiedź wybrana przez Ciebie [Wyniki ankiety]

KOLEJ Polish PKP Set + additional company
#23
W związku z zainteresowaniem nowym taborem spółek prywatnych (KM, CTL, DB Schenker, itp.), którego obecnie nie ma w PKP Secie, chciałbym przedstawić techniczne propozycje dalszego rozwoju polskich setów kolejowych.

Moim zdaniem, tabor przewoźników prywatnych zdecydowanie powinien być realizowany jako odrębne sety. Przemawiają za tym następujące argumenty:
- nowe sety mogą być rozwijane niezależnie przez różne zespoły osób,
- development nowych setów nie będzie wpływał na kompatybilność i stabilność podstawowego PKP Setu,
- dodawanie i usuwanie przez gracza taboru należącego do innych spółek będzie odbywało się w najprostszy możliwy sposób – poprzez dodanie lub usunięcie setu z listy NewGRF, bez konieczności tworzenia skomplikowanej parametryzacji setów,
- każdy set może mieć własne, niezależnie rozwijane parametry i logikę działania.
Jedyną wadą może być ograniczenie wynikające z maksymalnej ilości NewGRF-ów, obsługiwanych jednocześnie przez OTTD. Ale chyba mało kto używa 64 dodatki naraz.

Kompatybilność - warunki wymagane
Aby sety przewoźników prywatnych były kompatybilne z PKP Setem, muszą one korzystać z tych samych template'ów, definiujących rozmiary i pozycję sprite’ów. Inaczej grafiki będą "rozjechane". Wszystkie template'y są dostępne w repozytorium PKP Setu:
http://dev.openttdcoop.org/projects/pkpset/repository
Dodatkowo, nowe sety powinny być wykonane w zbliżonej do PKP Setu skali. Stosowany w PKP Secie przelicznik długości wygląda nastepująco:
(D jest rzeczywistą długością wagonu w [m], a d jest długością sprite'a wyrażoną w jednostkach OTTD)
dla D<=12m: d=D/1.5
dla 12m<D<24m: d=4+D/3
dla D>=24m: d=12
Dla pojazdów wieloczłonowych długość jest wyznaczana dla każdego członu osobno, a nie dla całego pojazdu. Zaokrąglenie wartości powinno być realizowane raczej w dół. Zaokrąglenie w górę tylko w szczególnych przypadkach, np. gdy nie da się inaczej poprawnie zobrazować danego pojazdu.

Współpraca setów - propozycja rozwiązań technicznych
Logika napisana dla jednego setu, nie będzie działała w innym secie. Dlatego, aby uniknąć takich absurdów jak np. EN57 i pendolino podpięte jako wagony do Freightliner'a, każdy polski set kolejowy (w tym także PKP Set) powinien zasadniczo blokować możliwość mieszania taboru z różnych setów w jednym pociągu. Będzie to nawet zgodne z rzeczywistością, gdzie tabor różnych przewoźników co do zasady nie jest łączony z taborem konkurencji.
Od tej reguły mogą oczywiście istnieć wyjątki. Do obsługi takich sytuacji konieczny jest jednak pewien "interfejs" pomiędzy setami. Do tej roli proponuję przeznaczyć ostatni (najstarszy) bit parametru bitmask_vehicle_info, który można właśnie odczytywać między setami. Ustawienie tego bitu na 1 w definicji pojazdu powinno informować inne sety, że dany pojazd może być dołączany do pociągów z innych setów. W przeciwnym wypadku (domyślnie) pojazd powinien zostać odrzucony.

Jak to powinno działać? Poniżej przykład dwóch setów (w nawiasie wartość omawianego bitu):
Set A: EU07 PKP(0), Eaos(1), ABdnu(0)
Set B: Class66 FPL(0), Eaos FPL(1)
Powyższa konfiguracja powinna zabraniać połączenia ze sobą EU07 i Class66 w jakiejkolwiek konfiguracji (obie mają 0). Będzie za to możliwe mieszanie obu typów węglarek (obie mają 1) w jednym składzie i podpinanie ich albo pod EU07, albo pod Class66. Ale już skład osobowy złożony z ABdnu będzie mógł jeździć wyłącznie z EU07 (tylko w ramach własnej spółki).

Oczywiście każdy set może wprowadzać odstępstwa od tej logiki. Przykładowo taka SM42 PKP, jako lokomotywa manewrowa, może mieć zdjęte te ograniczenia, zaś SA106 na pewno będzie miał całkowicie zablokowane podpinanie czegokolwiek poza tym, co jest możliwe do tej pory.

Implementacja rozwiązania
Aby powyższa logika działała, każda lokomotywa w każdym ze współpracujących ze sobą setów powinna być wyposażona w krótki kawałek kodu, który sprawdzi, czy dołączany pojazd należy do jednego z polskich setów. Jeśli tak, to sprawdzi odpowiednią flagę. W zależności od tego pozwoli dołączyć pojazd lub wyświetli komunikat z ostrzeżeniem.
Poniższy przykładowy kod NML sprawdza, czy dołączany pojazd należy do PKP Setu i wykonuje wspomniane wyżej czynności:

Kod:
switch(FEAT_TRAINS, SELF, switch_check_pkpset, hasbit(bitmask_consist_info, 7)) {
    1:  return CB_RESULT_ATTACH_ALLOW;                      // bit 'interfejsu' ustawiony - można dołączyć
    return string(STR_ALIEN_VEHICLE_DISALLOWED);            // komunikat błędu
}
switch(FEAT_TRAINS, SELF, switch_can_attach, grfid) {
    str2number("TD\01\03"):  return switch_check_pkpset;    // dołączany pojazd pochodzi z PKP Setu, sprawdzamy dalej
    return CB_RESULT_ATTACH_ALLOW;
}

item(FEAT_TRAINS, item_jakas_lokomotywa) {
    ...
    graphics {
        ...
        can_attach_wagon:         switch_can_attach;       // włączamy sprawdzanie możliwości podpięcia pojazdu
    }
}


Wiadomości w tym wątku
RE: Polish PKP Set + additional company - przez TadeuszD - 03-02-2015, 01:18
RE: Polish PKP Set + additional company - przez Rysh - 06-02-2015, 20:04
RE: Polish PKP Set + additional company - przez Lw25 - 11-06-2015, 01:35
RE: Polish PKP Set + additional company - przez Lw25 - 11-06-2015, 15:06
RE: Polish PKP Set + additional company - przez Lw25 - 11-06-2015, 16:37

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