확장팩 FFF 모음 정리 링크



그냥 평범한 얘기면 나중에 하려고했는데 존나 중요한 내용이라 폰으로나마 대충 해봤음

컴 쓸수있으면 수정하겟슴


수정완



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


FFF #416 - 유체 2.0

게시자 raiguard

2024-06-21



안녕하세요,

유체에 대해 이야기할 시간이니 최고의 윤활유를 준비하세요!





한계점에 도달


팩토리오의 유체 시스템이 예측할 수 없고 직관적이지 않으며 때로는 실망스럽다는 것은 비밀이 아닙니다. 파이프 처리량은 거리에 따라 일관되지 않은 속도로 감소하므로 파이프를 통해 얼마나 많은 유체를 밀어 넣을 수 있는지 확실하게 알 수 있는 유일한 방법은 위키의 표를 참조하는 것입니다. 게다가 처리량은 파이프가 건설된 순서에 따라 달라질 수 있습니다. 재미있게 플레이할 수 있는 시스템이 아닙니다.


유체 시스템을 리워크하려는 시도는 여러 번 있었지만, 이런저런 이유로 모두 실패로 끝났습니다. 기존 알고리즘은 꽤 빠르고 표준 바닐라 게임플레이에 충분히 잘 작동하기 때문에 가능한 한 그대로 두려고 노력했습니다. 하지만 우주 시대 DLC를 플레이 테스트하는 동안 기존 시스템으로는 부족하다는 것이 분명해졌습니다. 새로운 기계들이 제공하는 생산 규모와 퀄리티로 인해 유체 흐름 알고리즘은 무릎을 꿇었습니다.



왜 이렇게 작동하나요?


전면적인 리워크를 피하기 위해 먼저 파이프 볼륨을 늘려 처리량을 늘리려고 시도했습니다. 이 방법은 버퍼 크기를 크게 늘림으로서 처리량 감소라는 주요 문제를 '해결'하기는 했습니다. 하지만 유체 저장 탱크는 사실상 무쓸모가 되었고, 화염방사 포탑을 활용한 방어벽은 수만 단위의 유체를 버퍼링하여 기지를 메마르게 만들었습니다. 결국 어떻게 진행해야 할지 합의에 이르지 못했고, 너무 복잡하다고 판단되었지만 더 나은 아이디어가 없었습니다. 이 문제는 "나중에 다시 논의"하기로 미뤄졌습니다.


저는 이 결론에 매우 불만족스러웠습니다. 볼륨 증가는 제대로 된 해결책이라기보다는 문제를 감추기 위한 임시방편에 불과했습니다. 때로는 허락을 구하는 것보다 용서를 구하는 것이 더 쉽기 때문에 저는 위험을 감수하고 유체 유동 시스템을 다시 작업하기 시작했습니다.





새로운 알고리즘


유체 토론 중 한 번은 Rseding이 자신이 여러 번 사용해 본 알고리즘과 매우 유사한 알고리즘을 제안했는데, 바로 CoFH 팀의 마인크래프트 모드 열팽창(Thermal Expansion)의 알고리즘이었습니다:


- 파이프, 지하 파이프, 저장 탱크가 유체 '세그먼트'로 병합됩니다.

- 각 세그먼트는 이를 구성하는 유체 저장공간에서 부피를 상속받으며 하나의 유체를 담을 수 있습니다.

- 기계는 유체를 세그먼트에 무제한으로 밀어 넣을 수 있고, 세그먼트가 가득 찬 정도에 비례하는 속도로 세그먼트에서 끌어낼 수 있습니다. 즉, 세그먼트가 반쯤 가득 차 있으면 당기는 속도는 최대 속도의 절반입니다.

- 특별한 경우로, 펌프가 저장 탱크에 직접 연결되어 있으면 더 빠른 속도로 당길 수 있습니다.

- 더 이상 파이프를 통한 실제적인 유체 "흐름"이 없으며, 세그먼트로 밀린 유체는 세그먼트를 따라 어느 지점에서든 즉시 사용할 수 있습니다. 이것이 바로 이전 FFF에서 논의되었던 "네트워크형 솔루션"입니다. 그 결과 파이프는 "그냥 작동"하며 처리량에 대해 걱정할 필요가 거의 없습니다.


그냥 작동합니다™.








미리보기


다음 디버그 시각화 그림을 참고하세요:

- 초록색은 엔티티에 있는 유체의 양을 나타냅니다.

- 파란색은 해당 틱에서 엔티티를 통과하는 흐름의 양을 나타냅니다.

유체 흐름 애니메이션은 최종적으로 결정된 것이 아닙니다.





긴 파이프라인


기존 시스템에서는 파이프가 길어질수록 처리량이 악화되었습니다. 문제는 이러한 동작이 반드시 존재한다는 것이 아니라 예측할 수 없다는 것이었습니다.




새 시스템에서는 세그먼트가 단일 단위이므로 더 이상 유체가 파이프라인을 가로질러 전파되지 않습니다. 파이프라인이 길수록 처리량은 증가하지만 완전히 비워지는 데 시간이 더 오래 걸립니다. 정확한 처리량 수치는 추가 플레이 테스트에 따라 변경될 수 있습니다.







갈림길


기존 시스템은 직선 파이프라인에서는 비교적 정상적으로 작동했지만, 경로가 2개가 형성되는 순간 모든 것이 무너졌습니다. 갈림길의 각 측면으로 흐르는 유체의 양은 엔티티가 건설된 순서에 따라 달라집니다.




새로운 시스템에서는 갈림길이 전혀 중요하지 않으며, 세그먼트는 연결된 기계에만 신경을 씁니다. 기계가 업데이트되면 연결된 세그먼트의 채워진 비율에 따라 당겨오는 최대 속도가 제한됩니다. 그 결과 게존에 비해 훨씬 더 균등한 분할이 이루어지며, 아직 완벽하지는 않지만 꽤 근접한 수준입니다.







입력 부족


기존 시스템에서는 기계에 입력 유체가 부족할 때 여러 경로가 있다면 특히 이상해질 수 있었습니다. 연료 화학 공장이 산화제 화학 공장보다 훨씬 더 많은 양의 물을 공급받았기 때문입니다.



새로운 시스템에서는 두 화학 공장이 훨씬 더 균등하게 유체를 분배받습니다.






펌프


기존 시스템에서는 더 높은 처리량을 유지하기 위해 펌프가 필요했습니다. 하지만 예상대로 작동하는 경우는 거의 없었습니다. 다음을 보세요.



새 시스템에서는 더 이상 이러한 목적으로 펌프를 사용할 필요가 없습니다. 펌프는 여전히 방향성 흐름을 강제하고, 회로 네트워크에서 조건부 밸브 역할을 하며, 열차에서 유체를 적재/하역하는 데 유용하지만 이전만큼 많은 펌프를 배치할 필요는 없을 것입니다.








후반부 게임플레이 모습


마지막으로 우리가 가장 좋아하는 처음의 화학 공장으로 돌아옵니다. 이 세팅은 석유 가스가 출력 파이프에 막혀있기 때문에 작동하지 않습니다.




새 시스템에서는 출력 세그먼트의 용량이 충분하여 모든 화학 공장이 석유가스를 밀어낼 수 있습니다.








현실성 이상의 재미


새로운 시스템은 팩토리오의 유체 시뮬레이션의 '현실성' 측면에서 상당히 퇴보했습니다. 하지만 게임 디자이너는 항상 현실 세계에서 말이 되는 것과 게임에서 재미있는 것 사이에서 절충점을 찾아야 합니다. 기계를 조립하면 실제 자동화에 들어가는 엄청난 양의 작업을 추상화하여 깔끔한 작은 사각형에 넣을 수 있습니다. 마찬가지로 새로운 유체 시스템은 실제 유체 흐름의 모든 세부 사항을 추상화하면서 파이프라인에서 기대할 수 있는 동작을 제공합니다.


매우 재미있는 시스템입니다. 이 시스템에는 저희가 예측하지 못했던 흥미로운 가능성이 많이 있으며, 향후 FFF에서 그 중 일부를 공유할 예정입니다. 이 새로운 시스템의 아키텍처와 리팩터링에 어떻게 접근했는지에 대해서도 다음 기회에 자세히 설명할 수 있습니다.


몇 가지 세부 사항은 아직 작업 중이지만 전체적으로 새로운 시스템은 매우 잘 작동하고 있습니다. 여러분도 빨리 사용해보시길 기대합니다!



언제나 그렇듯이 평소와 다름없이 의견을 보내주시기 바랍니다.