Skip to content

차량 운송 (RoRo: Road-vehicle on Road-vehicle) ​

출처: pulsexlb/OpenTTD-patches px-patch (2026년 9월 배치), git merge를 통해 jrpm에 병합.

개요 ​

"차량 운송"은 기차, 배, 비행기가 자동차를 직접 운송할 수 있게 합니다:

  • 자동차는 더 이상 모든 곳을 스스로 달릴 필요가 없습니다. "이동수단을 타고" 갈 수 있습니다: 운반 차량이 먼 역까지 실어다 주면, 그곳에서 내려 도로로 스스로 달려갑니다;
  • 운반 차량(기차/배/비행기)은 "Vehicles (Road)" 화물로 리핏되면 자동차 운송 능력을 얻습니다 (전용 화물 VEHC, 화물 공간을 사용);
  • 자동차 쪽에서는 "운송 대기", "여기서 하차" 주문 플래그가 운반 차량의 "자동차 적재" / "자동차 하역" 플래그와 짝을 이룹니다.

사용 방법 ​

운반 차량 쪽 (기차/배/비행기) ​

  1. 차고지에서 기차를 수동으로 "Vehicles (Road)" 화물로 리핏합니다 — 운반 차량이 되는 것은 수동 리핏으로만 가능하며, 주문을 통한 리핏은 적용되지 않습니다;
  2. 역 주문에서 "자동차 적재"를 활성화합니다: 기차는 해당 역에서 대기 중인 자동차를 싣습니다;
  3. 선택적 짝 옵션:
    • "적재 대기" (다 실어야 출발);
    • "목적지 일치": 선언된 하차 역이 운반 차량의 다음 정차지와 같은 자동차만 적재;
    • "여기서 모두 하차": 각 차량이 선언한 역과 무관하게 전부 내립니다.

자동차 쪽 ​

  1. 역 주문에 "운송 대기"를 설정합니다: 자동차는 그곳에서 멈춰 운반 차량을 기다립니다;
  2. "여기서 하차"를 설정합니다: 자동차는 이 역에서 운반 차량에서 내립니다;
  3. 두 옵션은 상호 배타적입니다 (주문당 하나);
  4. 하차 시 자동차는 경로 탐색을 한 번 실행해 최적의 승강장을 고릅니다.

세부 사항 및 규칙 ​

  • 전용 화물 슬롯: 차량 운송은 화물 슬롯 128(NUM_CARGO - 1)을 사용하며, NewGRF가 정의할 수 있는 64개 슬롯 밖입니다; 화물 종류 총수도 64에서 128로 확장되었습니다;
  • 전용 운반 차량 판정: 차량의 모든 부분이 "Vehicles (Road)"로 리핏되어 있으면 주문 버튼이 기본적으로 차량 운송을 표시합니다; 일반 화물을 싣는 차량은 일반 화물을 표시합니다;
  • 운반 부분 설정: vehicle.rv_transport_carrier_parts가 어느 부분이 자동차를 실을 수 있는지 결정합니다;
  • 타사 적재: 다른 회사 차량의 적재/하역과 수수료 자동 정산을 허용할 수 있습니다;
  • "너무 오래 운반됨" 경고: 차량이 너무 오래 실려 있으면 1회 경고를 표시합니다;
  • 플레이어 작성 주문 목록: 공유/독립 주문 목록도 차량 운송 플래그를 지원합니다.

세이브게임 호환성 ​

  • 대기/운반 상태와 주문 플래그가 저장됩니다;
  • 구형 세이브(XSLFI_CARGO_TYPES_128 플래그 없음)는 64개 화물 슬롯으로 읽히며 호환됩니다.

콘솔 디버그 명령 (기본 꺼짐) ​

rvtransport 명령군은 회귀 테스트를 위해 CMake 옵션 RORO_DEBUG_COMMANDS=ON일 때만 컴파일됩니다.

관련 코드 ​

  • 핵심: src/roadveh_transport.h, src/cargo_type.h (VEHC 화물)
  • 주문: src/order_cmd.cpp, src/order_gui.cpp, src/order_base.h (OrderExtraInfo)
  • 기차 적재: src/train_cmd.cpp, src/station_cmd.cpp
  • 화물 확장: src/sl/station_sl.cpp, src/sl/company_sl.cpp (XSLFI_CARGO_TYPES_128)