https://www.factorio.com/blog/post/fff-377
FFF #377 - 새로운 철도
게시자 V453000
2023-09-22
안녕하세요!
팩토리오에는 오랫동안 변경할 용기를 내지 못했던 부분이 있습니다. 그 중 하나가 바로 철도 시스템입니다...
철도 시스템에 변화가 필요할까요?
게임을 플레이할 때마다 기술적 한계로 인해 발생하는 두 가지 불편한 점이 떠올랐습니다.
두 개의 평행한 철도를 연결하려면 수직 방향으로 최소 6개의 타일이 필요하기 때문에 소위 "S-커브"는 불가능합니다.
철도 두 개가 쉽게 연결되지 않았던 경험이 몇 번이나 있으신가요?
곡선 철도가 다른 철도를 가로지르는 순간 신호 위치가 매우 제한되는 경우가 많습니다. 따라서 교차로를 구축할 때 제대로 신호를 보낼 수 있는지 확인하기 위해 많은 시행착오를 겪어야 합니다.
교차로 내부에 신호를 배치할 수 없어 교차로를 재구성해야 했던 적이 몇 번이나 있었나요?
이 외에도 철도 시스템의 코드에는 시간이 지남에 따라 다음과 같은 기술적 부채가 누적되었습니다:
- 하드 코딩된 연결 규칙
- 하드 코딩된 철도 플래너 로직
- 여러 바운딩 박스가 있는 유일한 엔티티인 곡선형 철길
- 대각선 철도의 앞뒤 신호 위치가 겹치는 경우
boskid는 거의 모든 철도 모양을 쉽게 정의할 수 있다는 새로운 이점 때문에 기본 철도 코드의 많은 부분을 다시 작성하는 데 열중했습니다. 이는 솔루션에 대해 정말 열심히 생각할 수 있는 좋은 기회였습니다.
철도 시스템을 업데이트하려면 모든 주요 문제를 설득력 있게 개선해야 합니다...
S자 커브
S-커브 조각을 추가하는 것은 매우 간단한 변경처럼 들리지만, 트랙을 2개씩 오프셋할 수 있는 특별한 조각일 뿐입니다.
잠시 꿈을 꾸고 이런 S자 커브가 얼마나 아름다운지 상상해 보세요.
하지만 팩토리오에 관한 한 언제나 그렇듯이 일은 결코 간단하지 않습니다...
이 5가지 방향은 모두 하나의 철도 조각에 연결해야합니다.
현재 모든 철도는 왼쪽, 직선, 오른쪽 등 최대 세 방향으로만 연결할 수 있습니다. 특수 철도를 추가하면 커브가 S자 커브와 호환되지 않거나(같은 지점에 둘 다 만들 수 없고 하나만 만들 수 있음), 플레이어가 그 이유를 알 수 없는 기술적 제한이 생깁니다.
또는 두 개의 연결이 더 필요하거나(좌회전, 우회전), 옵션이 많아져 철도 성능이 저하될 수 있으며, 열차를 수동으로 운전할 때 화살표 키만으로는 가고자 하는 방향을 명확하게 결정할 수 없게 됩니다.
S-커브 특수 부품을 하나만 추가하는 것만으로는 충분하지 않기 때문에 상황은 더 나빠집니다. 철도를 2타일씩 오프셋하는 것도 좋지만 더 중요한 것은 4타일 오프셋인데, 이는 2타일 오프셋 중 2개를 연속으로 만들면 달성할 수 있지만... 그래요, 그냥 한번 보세요:
이런 말이 필요한지 모르겠지만, 많은 사람들에게 픽셀은 악몽과도 같습니다.
아이디어
그래서 커브를 반으로 나누고 반대쪽 커브가 서로 연결되도록 하여 S자 곡선을 만들고 중간에 신호를 배치하는 것이 이상적이라는 결론에 도달했습니다. 또한 철도에 반대각선 방향을 추가하여 S자 커브를 원하는 만큼 확장할 수 있습니다.
두 개의 반곡선 사이의 대각선 철도 - 모든 길이의 S-커브!
이 아이디어는 훌륭하지만 타일, 철도 모양 및 실제 그래픽에 어떻게 적용해야 할까요?
지오메트리
위의 모든 것이 서류상으로는 훌륭하게 들리지만 구현에 있어서는 지오메트리가 무자비합니다.
새로운 철도 구현에서도 준수하는 한 가지 주요 규칙이 있는데, 바로 모든 연결 지점은 정수 그리드 좌표에 위치해야 한다는 것입니다. 이는 철도 플래너와 철도 신호 위치가 합리적이고 간단하게 작동하도록 하기 위해 필요합니다.
직선 트랙은 쉽게 만들 수 있지만, 컨트롤 포인트를 전체 타일 단위로만 움직일 수 있을 때 어려운 것은 곡선입니다.
커브를 반으로 자르면 커브를 보기 좋게 만들 수 없는 위치에 제어점이 추가됩니다. 새 철도 모양 후보 커브가 얼마나 들쭉날쭉한지 살펴보십시오:
이는 부분적으로는 컨트롤 포인트가 너무 많기 때문입니다. 대각선 철도와 연결되는 삼각형은 일반적으로 빌드하기 이상하고 기하학적으로 많은 어려움을 야기하기 때문에 저는 대각선 삼각형이 없어지는 것을 매우 기쁘게 생각했습니다.
안타깝게도 아래에서 볼 수 있듯이 이러한 커브의 중간은 타일의 중앙에 위치하게 되는데, 이는 정의할 수 있는 허용된 위치가 아니므로 이 방법도 작동하지 않습니다.
또한 커브의 중간 부분이 훨씬 부드러워졌지만 끝 부분은 여전히 1.1 철도보다 훨씬 날카로워 자연스러운 원처럼 보이지 않는다는 것을 알 수 있습니다.
즉, 멋진 곡선을 만들 수 있는 옵션이 거의 바닥났다는 뜻입니다. 적어도 이 곡선 반지름으로는 말이죠. 하지만 곡선을 더 크게 만들려고 하면 어떨까요?
실제로 반경이 가장 작은 11~13개의 타일만 증가해도 큰 도움이 되며, 가장자리 조각은 완벽한 원의 단면이고 중간 제어점은 정수 그리드 좌표에 있습니다.
최종적으로 결정한 철도 커브 모양입니다. 멋지고 매끄러우며 중간에 삼각형이나 다른 직선 부분이 필요하지않습니다.
새로운 팩토리오 2.0 철도
커브 크기 증가는 미미하고 여전히 별로 중요하지 않습니다. 실제로 의외로 큰 문제가 되지 않습니다. 예를 들어, 신호 위치가 추가되었기 때문에 T자 교차로 청사진은 일반적으로 동일하게 유지됩니다.
장난감 기차는 다양한 철도 조각 중에서 선택하여 달릴 수 있습니다.
새로운 곡선과 대각선을 사용하면 훨씬 더 미묘한 모양을 만들 수 있으므로 좁은 틈새를 통과하는 것이 훨씬 쉬워집니다.
이제 트랙 방향 사이에 타일 간격을 4개 또는 6개로 설정할 수 있으며, 타일 간격을 2개로 설정할 수도 있어 더욱 흥미로워졌습니다.
철도 세그먼트 시각화가 변경되어 이제 신호 방향이 화살표로 표시되는 것도 확인할 수 있습니다.
사실 가능한 신호 위치가 너무 많아서 중간에 타일 2개가 있는 교차점도 이제 가능하지만, 팩토리오 친구들이 32x32 모듈형 철도 청사진에 익숙해졌다면 이를 용납하지 않을 수도 있습니다.
말하자면, 커브 반경이 커진다는 것은 방향 사이에 4개의 타일이 있다는 것을 의미하며, 이제 최소한의 편리한 청사진 모듈 크기는 32x32 타일입니다.
이에 맞춰 대형 전봇대 범위도 32타일로 늘렸습니다.
엔티티를 재작업할 때는 그 잔해도 재작업하는 것이 좋습니다. 보너스로 가장자리가 흐릿하게 처리되어 철도 잔해가 끝날 때 이전처럼 어색해 보이지 않습니다.
그래픽 프로세스
새로운 철도의 그래픽은 제가 특히 자랑스러워하는 부분입니다. 시각적 개선을 위해 철도를 재작업하는 것이 목표가 아니었고, 고해상도 철도(FFF-163)에 대해 불평하는 사람도 없었습니다.
하지만 저는 철도 그래픽 작업을 정말 좋아하기 때문에 이번 기회에 철도를 그 어느 때보다 멋지게 만들려고 노력했습니다.
금속 부품이 더 두꺼워져 축소해도 더 일관되게 보이고, 철도 내부에 가짜 그림자가 많이 생겨 일반적으로 덜 평평해 보이며, 개별 조각의 레이어링이 이전보다 훨씬 더 까다롭고 흉측해졌고, 지면 통합이 훨씬 더 잘 이루어지며, 그 외에도 많은 작은 개선 사항이 적용되었습니다.
물론 이전 철도에는 없던 새로운 문제, 특히 모든 철도가 이제 3개의 다른 철도로 분기할 수 있기 때문에 철도 조각을 결합하는 것과 관련된 새로운 문제가 나타났습니다. 예를 들어 저는 몇 주 동안 나무 끈을 하나하나 정리하는 데 정신없이 시간을 보냈지만 이제는 서로 다른 철도 조각이 정말 잘 맞습니다.
철도뿐만 아니라 새로운 철도에 맞게 업데이트해야 할 사항이 산더미처럼 쌓여 있었습니다. 철도 끝단 마무리, 기차 정류장, 모든 잔해들, 철도 세그먼트 시각화 그래픽, 철도 신호 후보 지점 시각화를 위한 그래픽과 시스템, 회로 커넥터(노란색 상자)에도 새로운 방향이 필요할 정도로 많은 새로운 방향의 철도 신호 등 아직도 잊고 있는 것이 많을 것입니다.
제가 다른 작업으로 넘어갈 수 있도록 이 눈사태를 용감하게 처리해 준 3D 아티스트 Jerzy에게 말로 다 표현할 수 없을 만큼 감사하고, 최소한의 정신적 여유를 유지할 수 있게 해준 것에 대해 감사드립니다.
저희는 변경해야 할 사항이 얼마나 많은지 잘 알고 있었습니다. 그중 일부는 2016년에 철도 그래픽을 고해상도로 업데이트하는 과정에서 이미 수행한 작업이고, 일부는 철도 신호/철도 세그먼트 도우미 오버레이와 같이 시간이 지남에 따라 추가된 새로운 기능입니다.
당연히 이 모든 그래픽 프로세스를 위한 시스템을 이미 갖추고 있기 때문에 이전보다 더 빠르게 진행될 것이라고 예상할 수 있습니다. 문제는 항상 개선할 점을 찾아내면서 품질 기준도 계속 높아지고 있기 때문에 이 전체 프로세스를 구현하는 데 여전히 몇 달이 걸렸습니다.
boskid와 Kovarex가 해결해야 할 기술적 문제가 많았습니다. 특히 철도 청사진이 선택할 수 있는 철도 조각이 더 많을 때에도 작동하도록 하는 것은 상당히 어려웠습니다.
결국 저는 이 모든 것이 그만한 가치가 있었다고 확신하며, 여러분도 이 게임을 플레이해 보면 같은 느낌을 받을 것이라고 믿습니다.
결론
새로운 철도는 우주시대 dlc가 없어도 팩토리오 2.0의 무료 업데이트로 제공될 예정입니다.
짐작할 수 있듯이 새로운 철도 커브는 이전 버전의 철도 커브와 호환되지 않습니다. 1.1의 세이브게임을 열면 이전에 건설한 철도에서 기차가 정상적으로 운행되지만, 이전 철도는 더 이상 건설할 수 없습니다.
향후 팩토리오 업데이트(예: 2.1)에서 1.1 세이브의 게임 호환성을 삭제하기로 결정하면 이전 철도 모양이 완전히 제거될 것입니다.
언제나 그렇듯이 평소 자주 이용하는 장소에서 여러분의 의견을 알려주세요.
시발섹스 - dc App
커브가 커졌다는 말인가? 이거만 가지고는 얼마나 흥미로워질지 모르겠군 일단 기차게티 볶는건 좀 쉬워질지도모르겠네 - dc App
13번짤 보면 대각선도 각도 다양해져서 좋음
호오올리 쉐에에엣
진짜 철도역 비슷한걸 만들수 있겠군
와 미친놈들;;; 진짜;;; 와
이게 야스지
철도 곡선만들때 뒤지게 안꺾여서 좀 열받던데 이젠 편하게 꺾을 수 있겠네
보기에만 이쁘지 잘 안쓰일거 같기도?
대기역만들때 꼬운것들 다 해결되겠네
그거 편할 듯.. 한 곳에서 뻗을 수 있어서.. - dc App
존나하고싶엉
S자는 절벽이 있는 경우엔 좀 편할 거 같고.. 한 라인에서 여러 라인으로 나눌 수 있는 건 대기역 같은 걸 만들 때 편 할 듯 하네요 - dc App