https://factorio.com/blog/post/fff-274
팩토리안들 안녕
유체 업데이트를 담당하는 Dominik 입니다.
현재 시간을 기준으로 꽤 많은 부분이 마무리 되었으므로 예상이 아닌 사실을 알려드릴 수 있게 되었습니다.
새로운 알고리즘이 어떻게 작용되는지, 몇가지 새로운 편리한 기능을 소개시켜 드리겠습니다.
FFF-#260에서는 어떻게 시작하게 되었는지, 왜 그것을 하고 있는지, 그리고 계획이 무엇인지에 관해 알려드렸습니다.
여러분 모두로부터 엄청난 반응이 있었고, 저는 그들의 기여에 대해 감사 드리고 싶습니다.
처음에는 포럼에서만 응답하기 시작 했으므로 reddit 유저들에게 사과드립니다. 제가 reddit에도 의견이 있다는 것을 알게 되었을 땐, 그곳엔 이미 제가 처리 할 수 없을정도로 많은 의견이 쌓여 있었습니다.
포럼 사용자는 시스템 작동 방식에 대한 많은 아이디어를 보내주었습니다. 그 중 33%는 유체 순간 이동(fluid teleportation)에 대해 의견을 주셨습니다. 많은 의견이 나왔고, 많은 부분이 새롭고 흥미로웠습니다.
가장 흥미로웠던 점은 그들이 다양한 배경 - 다른 종류의 엔지니어(기계, CS, 전기 등등..) 수학자, 물리학자, 심지어 실제 파이프를 다루는 사람들이었다는 것입니다.
포럼이나 레딧에서 관련 의견을 찾을 수 있습니다. 따로 이부분에 대해 짚고 가진 않겟습니다.
토론회에서는 두 가지 제안이 있었는데 quinor와 TheYeast의 제안이 가장 인상 깊었습니다.
이 두 가지 제안은 이전 게임 논리와 매우 유사했고 비슷했습니다.
이전 게임과의 공통된 점은 기술자가 여전히 유체 물리학 시물레이션과(fluid physics simulation) 파이프의 볼륨을 움직임 계산(movement calculation)의 기초로 사용하고 있다는 것입니다.
결과적으로 첫눈에 보기엔 많은 변화는 없습니다. 그러나 그들이 추가하는 것은 유체 네트워크 업데이트가 현재 상태와 독립적이라는 것을 강조하고 있으며, (즉 한 파이프의 업데이트에는 마지막 체크에 따라 달라짐) 때때로 터무니없는 교차점 행동을 야기한 기존 모델의 가장 큰 어려움 중 하나인 평가 순서에 독립적인 성격을 부여하였습니다.
이 두 차이는 비교적 작았습니다.
Quinor의 버젼은 유체 상자(Fluidbox는 유체를 관리하는 시스템으로 유체에 대해 이야기 할 때 같이 설명 할 것입니다.)를 3 Pass하면서 완벽한 처리량을 보여 줬고 Yeast의 경우에는 1/4의 처리량을 가진 2 Pass 를 하였습니다.
하지만 물리학자 theyeast가 멋진 이론적 배경과 놀라운 JS 시뮬레이터를 만들어 이 모델의 다양한 수정값을 테스트하고 비교할 수 있게 했다는 점입니댜.
quinor의 버젼은 완벽한 처리량에 비해 너무 비싼 가격이었기 때문에, 나는 theyeast의 2 Pass를 선택했습니다
기존 알고리즘에서는 업데이트에 대해 엔티티가 실행하는 single pass 만 사용했기 때문에 먼저 새 시스템을 수용할 수 있도록 전체 시스템을 점검해야할 필요가 있었습니다.
single pass 에서 2 pass 로 가는 것은 분명 연산이 더욱 복잡해진다는것을 의미하기 때문에 우리는 FFF-271에 kovarex가 쓴 pass보다 더 빨리 끝날 수 있도록 할 수 있는 모든 것을 최적화 하기 위해 많은 노력을 기울였습니다.
1. 새로운 알고리즘
이 새로운 알고리즘은 현실적인 파동 방정식(realistic wave equations)을 따릅니다. 이것은 두 가지 변수와 함께 작동합니다.
1. 유체 박스(Fluid Box) 내 오일 볼륨 및 해당 칼럼 높이
2. 유체 상자 사이의 흐름 속도.
정확한 동작은 두가지 상수에 따라 달라집니다
1. C^2 - 액체의 질량에 해당합니다. 변화(파동)이 얼마나 빨리 전파되는지에 영향을 줍니다.
2. Friction(마찰) - 파이프 길이와 함께 처리량이 얼마나 빨리 떨어지는지에 영향을 미칩니다.
첫번째 좋은 소식은 이 변수들이 이제 유체에 대해 별도로 설정 될 수 있어서 유체마다 다른 시스템을 구축 할 수 있을 것입니다.
(예를 들면 원유 파이프라인은 약간의 펌프가 필요할 것이며, 증기의 경우에는 그런거 없어도 괜찮을 것이다.)
하나의 업데이트를 위한 두개의 패스 알고리즘은 다음과 같습니다.
모든 연결의 흐름 속도 업데이트
A, d = 오일 칼럼의 차이(입력값은 항상 0이고 출력은 최대값이 있음)
B. d* = C^2
C. mechanism for damping waves (감쇠 장치)
D. 흐름 속도 + = d
E. 흐름을 차단하여 최대 1/4을 저장(혹은 0 보다 낮게 할 수 있음 - 마지막 파이프의 체크 정보만 사용)합니다. 유체는 일시적으로 최대치를 초과할 수 있으며, 모든 연결부를 따라 이동합니다.
A. 액체의 '속도'를 유체박스에서 다른 유체박스로 이동하기만 하면 됩니다.
이 알고리즘은 매우 간단하고 잘 작동하며, 또한 아주 작은 변화면 요구하므로 확실히 좋았습니다.
주요 단점은 한번에 FB 함량의 1/4만 이동 할 수 있기 때문에 FB를 확대해서 보정 해야 한 다는 점이었습니다.
또 다른 하나는 해당 액체가 빈 파이프로 나아가며 아주 천천히 움직이는 것처럼 보일 수도 있지만, 그것은 사실 꽤 현실적이고 멋져 보인다는 것입니다.
세번째 문제는 현실적인 모델의 결과이며, 현재의 감소 모델에서는 작은 파동이 일 수도 있습니다. 이는 지속적인 유체 생산/소비를 도입함으로써 더욱 제한될 수 있지만, 현재로서는 필요하지 않습니다.
작지만 편리한 개선사항으로서, 이제 당신은 각 파이프의 엔티티 정보에서 흐름률 정보를 볼 수 있습니다.
저는 quinor와 theyeast에게 모델을 고안해 내고 저와 함께 그것을 조율하고 지금처럼 움직임을 좋게 만들기 위한 개선책을 찾아낸 것에 대해 다시 한번 감사드립니다.
자세한 내용은 theyeast의 포럼 게시물과 시뮬레이터 소스 코드를 참고하세요.
2. 효율성
FFF-271의 과울과 최적화는 일부 하이엔드 CPU의 업데이트 시간을 50%에서 최대 10배까지 단축시켰습니다.
새로운 알고리즘을 도입하자마자 30퍼센트 느려졌습니다.
간단히 말해서 알고리즘 1을 다시 통과하게 한 작은 변화를 포함한 다양한 수정들을 통해 느려짐이 15%로 줄어들었습니다
하지만 전체적인 결과는 유체 업데이트가 여전히 예전보다 훨신 빠르다는 것 입니다.
저는 여전히 세그먼트 합병에 대해 논쟁하고 있습니다. 그것이 그렇게 간단하지 않고 시뮬레이션에 약간의 비용이 들 것이기 때문에 말이죠
이것은 다른 부분들에 비해 지금 시점에서는 우선순위가 낮습니다.
3. 유체 섞임 (fluid mixing)
거기에 유체 혼합, 그리고 그것은 사라졌다.
맞아요 더 이상 유체는 섞이지 않을 것입니다.
비어있는 유체 시스템(파이프, 생산 건물 등)이 유체 또는 유체 필터에 닿으면 시스템은 해당 유체에 잠깁니다.
다른 유체로 다른 시스템에 연결하는 것은 불가능 합니다.
시스템 병합을 초래할 수 있는 몇가지 조치가 있으므로 각각을 점검해야 합니다:
유체 상자로 엔티티 구축
액체 입출력으로 레시피 설정하기
엔티티 회전
시스템을 다른 유체로 변경하려면 먼저 유체를 전부 배출하고 모든 필터를 제거하여 시스템을 재 설정 해야 합니다.
오래된 세이브에서 만약 유체가 섞여있으면, 자동으로 한 유체로 고정 됩니다
이 작업은 일부 유체를 제거하거나, 레시피를 해제하거나, 필요할 경우 엔티티를 파괴하여 수행될 것 입니다.
3. macOS 개발자 필요
이번 주 초에 우리의 오랜 마코스 관리인 겸 웹 관리자 HanziQ는 팀을 떠나 다른 프로젝트로 옮겨갈 것 임을 알려주었습니다.
그는 거의 4년 동안 Factorio 팀의 일원이었으며, 그 기간 동안 게임과 팀을 위해 많은 기여를 했습니다.
우리는 그가 앞으로 하는일이 잘 풀리기를 바라고 있습니다.
HanziQ가 떠난다는 것은 다른 MacOS개발자 Jiří의 탈퇴와 어우러져, 현재 이 게임의 Mac 버젼을 개발할 팀원이 아무도 없다는 것을 의미합니다.
이것은 매우 중요한 문제인데, 우리는 대체로 테스트되지 않은 GFX 엔진을 0.17로 출시할 예정이기 때문입니다.
이 직책을 충원하는 데 도움을 줄 수 있는 사람을 알고 계신다면, 우리 회사의 macOS 개발자 직장으로 보내주세요.
4. 사이트에서 스팀 키 구매 가능
우리는 오랫동안 웹사이트를 통해 게임을 팔았습니다만 이 방식은 코드 수신과 계정 등록 등의 과정을 거쳤어야 했습니다.
이에 관해 저는 커뮤니티 피드백을 많이 받았으며 피드백을 통해 우리 사이트를 통해 직접 Steam 키를 판매하기로 결정 했습니다. 구매 페이지에서 웹 사이트 키 또는 스팀 키를 선택 할 수 있습니다.
많은 사람들이 더욱 편리해지기를 바랍니다. 특히 이번 휴가철에 게임을 선물로 보내고 싶으시다면 더욱 좋습니다.
5. 스팀 어워드 2018
스팀 어워드 2018 투표가 시작 되었고 Factorio는 'Most fun with machine' (기계와 함께 하는 즐거움)에 지명되었습니다.
체코의 다른 두 게임도 같은 카테고리에 지명되어 있기 때문에 이 나라의 특징이 잘 대변됩니다.
(정보. factorio는 체코 게임이다.)
6. 게임 이름을 딴 동물
새로운 전갈 'Neobuthus Factorio'의 새로운 종은 확인/분류만 되었습니다. 제 아버지는 위험한 곳에 가셔서 발견되지 않은 전갈과 거미의 종류를 찾아내시는 취미를 가지고 있습니다. 그는 재미로 게임을 한 후 자신이 찾아낸 분류 중 한 가지에게 재미로 이름을 짓겠다고 제안했습니다. 여기서 전체 출판물을 볼 수 있습니다.
언제나처럼 우리 포럼에서 어떻게 생각하는지 알려주세요.
===요약===
1.유체 체적화 거의 완료됨. 두 고인물과 함께 개발한 유체 시스템이 적용 될 것.
2. 유체마다 다른 속도 개념이 적용되어 더욱 현실적으로 바뀌게 됨. 각 유체마다 펌핑 시스템이 달라질 듯
3. 현재 유체 업데이트가 적용되며 게임 속도가 30%정도 느려졌지면 현재 지속적인 최적화로 15%로 완화함. 계속 최적화 할 것
4. 더이상 유체끼리 섞이지 않는다!
5. 우리 마지막 macOS 개발자가 팀을 떠났음. 0.17이 새로운 GFX엔진을 쓰기 때문에 꼭 필요함. 일 할 사람 급구.
6. 이제 사이트에서도 스팀 키 구매 가능. 이전 판매 방식도 유지
7. 스팀 어워드에서 우리 게임은 "기계와 함께 하는 즐거움" 항목에 후보로 올라감. 근데 우리를 포함해 3개의 게임이 체코 게임임
8. 우리 아버지가 현실에서 새로운 전갈을 발견해 냈는데 그 전갈 이름이 네오버터스 팩토리오로 명명됨
움짤은 클릭하면 움직임, 스팀어워드 투표 사이트>
https://store.steampowered.com/SteamAwards/2018/
얽ㅋㅋㅋ 팩토리오 전갈ㅋㅋ
근데 새로운 종을 발견하시다니 ㄷ
유저풀 돋네 게임에서도 일하시는 그 분들
그럼 이제 좆같은 태양광 갖다버릴수 있는거냐??