확장팩 FFF 모음 정리 링크





https://www.factorio.com/blog/post/fff-380



FFF #380 - 원격 제어

게시자 kovarex, Hrusa

2023-10-13



안녕하세요,

2.0 게임 업데이트에서 변경되는 원격 뷰어에 대해 이야기하고자 합니다. 이것은 나중에 우주 플랫폼과 행성에 대해 이야기할 수 있는 기초 중 하나이므로 지금부터 시작하겠습니다!



원격 뷰어 - 코바렉스


FFF-362에서는 스파이더트론이 등장하면서 원격 및 고스트 건물의 중요성이 더욱 커짐에 따라 이를 개선해야 하는 이유를 설명했습니다. 우주 시대 확장팩에서 행성과 우주 플랫폼이 도입되면서 원격 제어의 중요성은 더욱 커졌습니다. 동시에 모든 곳에 있을 수는 없으니까요.


목표는 로컬에서 할 수 있는 모든 작업을 원격 뷰어로 할 수 있도록 하는 것입니다. 또한 로컬 건물과 원격 건물 간에 가능한 한 많은 불일치를 제거하여 플레이어의 머슬 메모리가 어디서나 거의 동일하게 작동하도록 하는 것이 최종 목적입니다.



원격 제어 해금


현재 1.1에서는 레시피를 변경하기 위해 조립 기계를 원격으로 열거나 필터를 설정하기 위해 투입기를 원격으로 열 수 없습니다. 하지만 "청사진 트릭"을 사용하면 원격으로 이 작업을 수행할 수 있습니다. 이는 지난 FFF-379에서 설명한 원격 배선과 비슷한 문제입니다.


그래서 1.1에서는 기차 정류장과 기관차에만 가능했던 모든 엔티티의 원격 개방 기능을 구현했습니다. 이를 통해 엔티티의 모든 것을 구성할 수 있지만, 인벤토리 아이템을 그곳으로 순간이동할 수는 없습니다.




원격 뷰어에서는 왼쪽에 고스트 선택창이 활성화됩니다.



고스트 아이템


거의 모든 것을 할 수 있게 하려면 원격으로 아이템을 조작할 수 있는 방법이 필요했습니다.

플레이 테스트를 통해 얻은 가장 큰 동기는 멈춰 있는 기관차에 연료를 추가하고, 원래 있어야 할 곳에 없는 아이템을 무작위로 제거하고, 모듈을 추가/업그레이드/제거할 수 있어야 한다는 것이었습니다.


따라서 인벤토리 슬롯에 고스트 커서를 클릭하기만 하면 고스트 아이템을 만들 수 있으며, 이 고스트 아이템은 현지 건설 로봇에 의해 슬롯으로 전달됩니다. 철거도 마찬가지인데, 철거를 위해 마우스를 우클릭하면 로봇에게 철거를 명령하게 됩니다.






회전하는 건물


1.1에서는 이미 원격으로 엔티티의 방향을 변경할 수 있습니다. 문제는 엔티티를 고스트 리빌드해야만 변경할 수 있고, 회전만 할 수 있는 'R' 버튼은 작동하지 않아 로컬 빌드에 비해 또 다른 모순이 발생한다는 점입니다. 내부적으로 '실제 방향'과 '미래 방향'과 관련된 로직이 상당히 많아서 여러 곳에서 고려해야 할 사항이 많았고, 이로 인해 항상 더 많은 문제가 발생하고 있었습니다.



또한 회전 순서는 벨트가 회전/연결되는지 여부에 대한 피드백을 제공하지 않습니다.



이와 관련된 또 다른 문제를 해결하던 중 회전을 즉각적인 액션으로 만드는 것이 해결책이 될 수 있다는 것을 깨달았습니다. 몰입도를 크게 떨어뜨리지 않으면서도 저희와 플레이어에게 모든 것을 크게 단순화할 수 있는 방법이라고 생각해서 그렇게 했습니다.





고스트 열기


원격 엔티티 구성을 허용하자 새로운 성가신 문제가 발생했습니다. 로컬에서는 조립 기계를 만들고 바로 구성하는 데 익숙할 수 있습니다. 하지만 원격 빌드에서는 고스트를 배치하고 로봇이 빌드할 때까지 기다린 후에야 비로소 구성할 수 있었습니다.


놀랍게도 고스트를 열고 구성하는 것은 기술적으로 그렇게 어렵지 않았습니다.








스파이더트론 및 장비 블루프린팅


원격으로 할 수 없었던 또 다른 일은 스파이더트론을 만들거나 장비를 재구성하는 것이었습니다.

거미를 설계하면 로봇이 스파이더트론에 장비를 설치할 수 있도록 장비 고스트를 추가하는 것이 주요 기술 비용이었습니다.


추가로 이제 갑옷에 고스트 장비를 넣을 수 있으므로 갑옷을 위해 일회성 요청 주문을 할 필요가 없습니다. 품질 시스템 때문에 확장팩에서는 훨씬 더 많이 유용할거에요.





고스트 타일 위의 고스트 엔티티


이는 플랫폼 건물에서 특히 중요한데, 모든 우주 플랫폼 타일이 하늘로 배달되고 그 위에 고스트 개체를 배치하기 위해 물리적으로 건설될 때까지 기다릴 필요가 없습니다. 이런 맥락이 아니더라도 고스트 매립지에 고스트 개체를 건설할 수 있는 기능은 저희는 물론 많은 플레이어의 오랜 소원이었습니다.






해체


해체 계획기의 ALT+D 단축키는 이제 제 기억 속에 자리 잡았지만, 여전히 채굴 버튼을 사용하여 로컬에서 엔티티를 제거할 수는 있지만 원격으로 제거할 수는 없는 모순이 있었습니다. 이제 원격으로 엔티티를 '채굴'하여 해체 예정을 표시할 수 있게 된 것도 바로 이 때문입니다.







원격 뷰어 살펴보기 - 코바렉스


행성과 우주 플랫폼이 존재하기 때문에 원격으로 다른 장소로 이동할 수 있는 방법을 만들어야 했습니다. 오른쪽에 이러한 장소로 이동할 수 있는 새로운 버튼을 만드는 것은 당연한 일이었습니다.





다른 장소의 미리보기를 볼 수 있고 뷰어 버튼을 통해 해당 장소로 '이동'할 수 있는 GUI로 연결됩니다.





하지만 게임을 시작하고 나니 이 시스템이 끔찍하다는 것이 분명해졌습니다. 예를 들어 행성에서 무언가를 확인한 다음 플랫폼으로 전환하려면 이렇게 해야 합니다:

행성 GUI → 행성 선택 → 보기 → 닫기 → 플랫폼 GUI → 플랫폼 선택 → 보기 → 닫기 순서로 진행해야 합니다.


또한 행성 GUI의 미리보기는 마치 원격 뷰어인 것처럼 직접 행성에서 무언가를 시도하도록 유도했습니다. 그래서 저희는 기능도 없는 미리보기 위젯을 클릭한 것이 어리석었다는 생각이 반복해서 들었습니다.


해결책은 모든 것을 하나로 통합하는 것이었습니다. 원격 뷰어(지도)를 열 때마다 왼쪽에 항상 행성/플랫폼 선택 항목이 표시되므로 원격 뷰어를 정상적으로 사용하면서 모든 작업을 수행할 수 있을 뿐만 아니라 장소 간에 전환할 수도 있습니다.


따라서 이전 예제는 다음과 같이 단순화됩니다:

원격 뷰어 → 행성 선택 → 플랫폼 선택 → 닫기





이것이 행성/플랫폼 여행 및 플랫폼 생성에 대한 액세스가 언뜻 보기에 약간 또는 직관적이지 않은 위치에 있는 이유입니다. 장기적으로는 훨씬 더 잘 작동합니다.

추신: 기차에도 동일한 전략을 사용했기 때문에 원격 뷰어에 GUI를 '붙인' 것일 뿐이므로 상호작용이 불가능한 지도만 보는 대신 일반적인 방식으로 선택한 기차 주변의 세계와 상호작용할 수 있습니다.




고스트 셰이더 - Hrusa


이전 이미지/동영상의 고스트들이 익숙한 모습과 조금 다르게 보인다는 것을 눈치채셨을 텐데요, 그럴 만한 이유가 있습니다.


고스트 개체의 외형을 수정하는 것은 기본 게임 출시 이전부터 저희 내부적으로 고민해왔던 부분입니다. 1.1에서는 고스트가 별도의 플레어 없이 반투명하게 그려져 있었습니다. 작업은 완료되었지만 다소 어수선하고 구분하기 어려울 수 있습니다. 우주시대 확장팩에서는 원격 상호작용이 중요한 역할을 하기 때문에 제 GPU 하드웨어 기술을 활용할 수 있는 좋은 기회였습니다. 저는 고스트에 생명력과 선명함을 불어넣기 위해 제 손으로 직접 작업했습니다.



색조를 칠할 것인지 말 것인지


이 방에서 가장 큰 문제는 색상 변경/틴트입니다. 삽입기나 물류 상자와 같이 색으로만 구분되는 개체는 많습니다. 고스트가 색조를 띠면 이러한 개체가 고스트인지 구분하기가 더 어려워집니다.


그러나 테스트를 진행하면서 고스트 전체를 실제 개체와 구별하는 것이 훨씬 더 중요한 기능이라는 것이 점점 더 분명해졌습니다. 사람들은 어떤 종류의 고스트인지보다는 고스트인지 아닌지에 더 신경을 쓰는 경향이 있습니다. 그리고 색상을 보존하기 위해 몇 가지 트릭을 사용했습니다.





고스트의 해부학


셰이더 마법의 힘을 과시하고 싶었던 저희는 다양한 유형의 왜곡, 블루프린트 그리드, 위험 줄무늬, 섬뜩한 정적, 잭오랜턴을 시도했지만 결국 눈에 거슬리지 않는 오버레이를 선택하기로 결정했습니다. 단순한 곱셈식 색조가 아닌 밝기에 따라 이미지가 분할되고 각 부분마다 고유한 색상 혼합 모드가 적용됩니다. 중간 톤과 하이라이트를 완전히 씻어내지 않고도 그림자의 파란색 요소를 크게 높일 수 있습니다.


퍼즐의 두 번째 조각은 반짝이는 왜곡입니다. 일반적인 상황에서 2D 게임 스프라이트는 직사각형 경계로 잘립니다. 작업 공간을 더 확보하고 잘림을 방지하기 위해 그림을 올바른 위치에 유지하면서 각 고스트 사각형을 소급하여 늘릴 수 있는 방법을 찾아야 했습니다. 이 과정에서 모든 엔티티의 그리기 함수를 다시 작성하지 않는 것이 이상적이었습니다. 또한 이전 고스트 드로잉은 지도에서 정확한 위치를 전달할 필요가 없었습니다. 이 경우에는 이펙트가 절대적으로 월드에 고정되어야 하고 떠다니지 않아야 합니다. (그렇지 않으면 정말 어지럽습니다.)



노란색은 텍스처가 잘리지 않고 왜곡될 수 있도록 추가된 사각형 여백을 나타냅니다.


반짝이는 효과를 내기 위해 실제 숫자를 얻기 위해 심플렉스 노이즈를 사용하기로 결정했습니다. 팩토리오 맵 좌표는 여분의 비디오 메모리를 모두 채우다 보면 용량이 커질 수 있습니다. 가장 간단한 해결책은 이펙트를 몇 개의 청크마다 타일링하는 것입니다. 이를 위해 심플렉스 노이즈의 내부 작동을 커스터마이징하고 타일링 이음새를 고려해야 했습니다.





업데이트 전에는 많은 엔티티를 구분하기 어려웠습니다. 예를 들어, 정유소를 원격으로 설정하려면 눈이 정말 피곤했습니다.




하지만 그 대가는 무엇일까요?


GPU는 엄청난 양의 연산을 매우 빠르게 수행할 수 있지만, PC가 명령을 전송하는 연결은 매우 좁습니다. 홀로그램 효과는 멋지고 멋지지만 게임이 끊기면 좋지 않습니다. 따라서 각 명령어의 크기를 작게 유지하는 것이 가장 중요합니다.


다행히도 팩토리오의 표준 드로우 콜에는 바람에 움직이는 나뭇잎과 같은 매우 구체적인 사항에 대해 사용하지 않는 번호가 몇 개 포함되어 있었습니다. 덕분에 드로우 콜의 크기를 부풀리지 않고도 필요한 정보를 모두 담을 수 있었습니다!



한 가지 더


이제 고스트의 색조를 지정할 수 있으므로 플레이어에게 약간의 추가 정보를 제공할 수 있습니다. 특히 고스트는 건설할 로봇이 할당되면 색조가 변하므로 로봇이 오고 있는지, 필요한 재료가 네트워크에 있는지 한눈에 알 수 있습니다.





언제나 그렇듯이, 평소에 자주 이용하는 장소에서 어떻게 생각하는지 원격으로 알려주세요.