Skip to content

기차 페리와 비 ​

출처: pulsexlb/OpenTTD-patches px-patch (2026-10 배치, pxp-2610.1 ~ pxp-2610.3), git merge로 jrpm에 통합.

이번 배치에는 두 가지 큰 새 기능이 들어왔다: 기차 페리(선박으로 열차를 운반)와 비 시스템(세계 어두워짐과 빗방울 오버레이).

기차 페리 ​

자동차가 기차·선박·비행기에 실리는 기존 「차량 운송(RoRo)」를 바탕으로, 이제 선박이 열차 전체를 운반할 수 있다.

RoRo와의 관계 ​

차량 운송 (VEHC)열차 운송 (RAIL)
운반 수단기차, 선박, 비행기선박
운반 대상도로 차량열차 (기관차와 객차 모두)
화물 라벨VEHCRAIL
화물 슬롯NUM_CARGO - 1NUM_CARGO - 2

두 화물 슬롯 모두 NewGRF의 64개 슬롯 밖에 있어 서로 충돌하지 않는다.

적재 ​

  • 선박은 수동 개조로 「운송 차량(열차)」 화물에 지정해야 열차 전체를 운반할 수 있다;
  • 객차 단위 분실 적재: 열차를 여러 선실에 나누어 실을 수 있어, 열차 전체가 한 선실에 들어가야 한다는 제약이 없어졌다. 긴 열차가 한 선실 용량을 넘는 문제가 해결된다;
  • 운송 옵션의 표지판 선택에서 열차 표지판과 자동차 표지판을 각각 고를 수 있어, 운송 방식마다 목적지를 따로 선언할 수 있다;
  • 상태 표시줄이 실린 차량 목록을 자세히 표시하지 않아, 더 중요한 운행 정보에 공간을 내준다.

적재량 표시 ​

  • 선박 정보 창이 선실별 적재 가능한 화물 무게를 보여준다;
  • 열차 정보 창이 객차별 용량을 보여준다.

관련 수정 ​

이번 배치에서는 적재·하역과 승강장 예약 관련 결함도 여럿 고쳤다:

  • 선박이 열차를 내릴 때 선로 유형을 호환되지 않다고 오판해 열차가 내리지 못하던 문제;
  • 열차가 실릴 때 승강장 예약을 정리하지 않고, 내릴 때 구조 및 예약 오류가 발생하던 문제;
  • 승강장 예약이 남아 열차가 다시 승강장에 내리지 못하던 문제;
  • 일부 승강장 방향에서 열차를 내리지 못하던 문제;
  • 운송용으로 개조된 차량의 객차 수 제한이 적용되지 않던 문제.

비 시스템 ​

순수히 장식적인 날씨 시뮬레이션으로, 화면 표현에만 영향을 주고 게임 로직이나 경제 수치에는 손대지 않는다.

날씨 표현 ​

  • 무작위 강우 기간: 날씨 상태는 지도 생성 시드로 초기화된 결정론적 난수 생성기로 구동되며, 따라서 모든 플레이어와 서버가 완전히 동일한 날씨를 본다;
  • 점진적 세계 어두워짐: 비가 오면 세계가 점차 어두워지고 그치면 다시 밝아진다. 어두워짐은 RAIN_SHADE_LEVELS 단계로 진행되며 뷰포트를 그릴 때 읽힌다;
  • 빗방울 오버레이: 전체 화면 빗방울 레이어로 줌에 맞춰 크기가 변하고 무작위 흔들림이 있어 정지된 텍스처처럼 보이지 않는다.

설정과 치트 ​

  • 난이도 설정 difficulty.rain: 새 게임을 시작할 때 비 올 때의 세계 어두워짐을 사용할지 결정한다;
  • 샌드박스 치트 「날씨」: 자동 / 강제 비 / 강제 맑음 세 가지 순환.

저장 파일 ​

날씨 상태(현재 비가 오는지, 난수 시드, 현재 강우 기간의 시작 시각)와 샌드박스 날씨 치트가 저장 파일과 함께 보존되며, 읽은 뒤에는 어두워짐이 다시 서서히 나타나지 않고 현재 날씨로 즉시 맞춘다.

  • 청크: WTHR;
  • 기능 플래그: XSLFI_WEATHER;
  • 코드: src/weather.cpp, src/weather.h, src/sl/weather_sl.cpp.

관련 코드 ​

  • 기차 페리와 적재량: src/roadveh_transport.cpp, src/cargo_type.h(CT_RAILVEHICLES), src/table/cargo_const.h
  • 비 시각 효과: src/weather.cpp, src/blitter/32bpp_anim.cpp, src/blitter/40bpp_anim.cpp, src/viewport.cpp
  • 날씨 저장: src/sl/weather_sl.cpp, src/sl/extended_ver_sl.cpp(XSLFI_WEATHER)
  • 설정과 치트: src/table/settings/difficulty_settings.ini(difficulty.rain), src/cheat_gui.cpp, src/cheat_type.h