졸려서 대충햇슴
https://www.factorio.com/blog/post/fff-412
FFF #412 - 실행 취소/다시 실행 개선 & 차량 운전 지연 시간
게시자 StrangePan, Lou
2024-05-24
안녕하세요,
오늘 또 몇 가지 흥미로운 사실을 알려드리겠습니다.
다시 실행 (Redo) - StrangePan
실행 취소 기능을 추가한 이후로 실행 다시하기 기능에 대한 요청이 계속 있었습니다. Redo 기능은 제가 Wube에서 처음으로 진행한 프로젝트 중 하나였고, 발표하게 되어 매우 기뻤습니다. 이제 CTRL+Z(또는 ⌘Z)를 사용하여 건축, 해체 또는 업그레이드 등을 되돌릴 수 있을 뿐만 아니라, CTRL+Y(또는 ⌘⇧Z)를 사용하여 이전에 실행 취소한 사항을 다시 실행할 수 있습니다. 단축키 모음에서 새로운 단축키를 설정할 수도 있습니다. 예상했던 것과 똑같이 작동합니다.
새로운 'Redo' 바로가기는 다시 실행할 항목이 있으면 켜지고, 다시 실행할 항목이 없으면 비활성화됩니다.
실행 취소 정보 확인 - StrangePan
가끔 작업을 자기도 모르게 실수로 취소하면 매우 짜증나죠. 심지어 오래 전의 일을 되돌리기도 합니다.
우선, 실행 취소 단축키를 사용할 때 팝업으로 표시되는 알림을 추가했습니다. 이를 통해 방금 무슨 일을 했는지 알 수 있습니다.
또한 몇 분 이상 지난 작업을 실행 취소하려고 할 때 확인창 팝업이 표시됩니다. Genhis는 이 모든 기능을 통합하기 위해 영향을 받을 엔터티를 표시하고, 해체할 엔터티를 강조 표시하고, 건축할 엔터티의 고스트를 보여주는 멋진 시각적 미리 보기 기능을 추가했습니다.
플레이 테스트 중에 발견한 또 다른 문제는 실행 취소 스택에 있는 내용을 잊어버리기 쉽다는 점입니다. 특히 플레이어가 원격 뷰를 사용하여 행성과 우주 플랫폼 사이를 끊임없이 이동하는 우주 시대 DLC에서는 더욱 그렇습니다. 그래서 실행 취소 및 다시 실행 바로 가기 버튼에 실행 취소하려는 항목과 행성 또는 우주 플랫폼을 정확히 설명하는 미리보기 툴팁을 추가했습니다.
실행 취소 개선 - StrangePan
실행 취소는 일반적인 용도로는 훌륭하게 작동하지만 수년 동안 남아 있는 한 가지 중요한 문제가 있습니다. 청사진을 설치한 다음 실행 취소를 사용해도 실제로 모든 것이 실행 취소되지는 않습니다. 다음과 같은 것들이 있었죠.
- 청사진에서 설정한 레시피.
- 생성된 전선.
- 건물 회전.
- 필터/요청 설정.
실행 취소의 공리 중 하나는 "모든 작업은 실행 취소된다"는 것이기 때문에 문제가 있습니다. 실행 취소를 사용하면 잘못 배치된 청사진을 "그냥" 되돌릴 수 있어야 합니다. 그럼 시작해 봅시다.
전선 연결 실행 취소
Boskid가 선 연결 실행 취소 기능를 추가하였습니다. 조합기나 전원선을 조작하다가 실수한 경우 실행 취소 및 다시 실행 기능을 사용하여 빠르게 다시 진행할 수 있습니다.
청사진을 배치할 때 생성된 와이어도 실행 취소 동작에 추가되므로 청사진 문제의 일부가 해결됩니다.
엔티티 설정 실행 취소
Tobias는 엔티티 설정을 실행 취소하는 기능을 추가했습니다. Shift + 오른쪽 클릭을 사용하여 엔티티의 설정을 복사하고 Shift + 왼쪽 클릭을 사용하여 다른 엔티티에 붙여넣는 작업도 실행 취소 스택(및 다시 실행 스택)에 저장됩니다.
이는 엔티티 위에 청사진을 배치할 때 복사된 설정에도 적용되므로 또 다른 청사진 문제가 목록에서 사라졌습니다.
블루프린트 회전 실행 취소
초강력 건설을 사용하면 엔티티 방향을 재정의할 수 있습니다. 이는 로봇이 모든 엔티티를 채굴하고 다시 배치하는 수고를 덜어주는 좋은 기능입니다. 하지만 물론 실행 취소와 함께 작동하도록 만들어야 합니다.
R키를 사용하여 수동으로 회전하는 경우에는 직접 수정하기 쉽고 실행 취소 대기열을 스팸메일로 가득 차게 만들 수 있으므로 이 기능이 적용되지 않습니다.
결론
이러한 모든 기능이 추가되어 이제 블루프린트 배치를 취소하는 것이 완전히 안전하고 깔끔한 작업이 되었으며, 작은 실수로 인해 설정이 혼란스러워지는 일은 없습니다.
몇 가지 세부 사항은 변경될 수 있지만, 실행 취소/다시 실행 시스템은 그 어느 때보다 유용하게 느껴집니다. 이러한 변경 사항은 팩토리오 2.0에 적용되며 모든 플레이어가 사용할 수 있습니다.
자동차 운전 지연 - Lou
멀티플레이어에서 상당한 지연 시간(레이턴시)으로 자동차를 운전하는 모호한 즐거움을 경험해 본 사람이라면 제목을 읽자마자 심장이 100ms를 건너뛰었을 것입니다 :).
나머지 분들을 위해 문제를 설명해드리자면, 팩토리오에서 장애물 주변을 차량으로 운전하는 것은 이미 충분히 어렵고, 특히 일반적으로 운전의 목적이 되는 빠르게 가고 싶을 때 플레이어 조작에 대한 차량의 반응이 지연되는 경우 더더욱 어렵습니다.
1.1에서 30 틱의 지연 시간(60 UPS 사용 시 500ms)으로 주행 중입니다. 맹세컨대 저는 술에 취하지 않았습니다.
기본 아이디어는 다른 모든 레이턴시 숨기기 기능과 동일합니다. 사용 가능한 정보로부터 미래의 게임 상태를 예측하고 플레이어에게 현재 상태 대신 예측된 상태를 표시하는 것입니다. 입력에 대한 즉각적인 반응이 보이는거죠.
전혀 예측할 수 없거나(다른 플레이어의 행동) 예측하기에는 너무 많은 성능이 필요한(적과의 상호작용, 기차와 같은 다른 움직이는 차량, 로봇의 움직임) 요소들이 있지만, 기본 자동차 주행은 정적인 장애물과 자동차의 상태 등 충분히 단순해 보였습니다. 그리고 실제로 기본 구현은 실제로도 충분히 간단했습니다.
하지만 "팩토리오에서 간단한 것은 없다"라는 말이 있듯이, 이번에도 마찬가지였죠. 지연 시간을 숨기기 위해 팩토리오를 효율적으로 시뮬레이션하려고 할 때는 두 배로 그렇습니다.
다음과 같은 몇 가지 문제가 있었습니다:
- 가속도(연료, 지형, 토사물(우리 모두가 좋아하는 스피터와 땅벌레의 점액) 등의 영향)의 값을 잘못 계산합니다.
- 오디오 문제 - 일부 사운드가 재생되어야 할 때 재생되지 않거나, 재생되지 않아야 할 때 여러 번 재생되는 경우.
- 자동차 조명이 제대로 표현되지 않는 것과 같은 간단한 문제부터 트랙 및 배기가스 파티클이 잘못 스폰되는 문제까지 다양한 그래픽 문제가 발생했습니다.
- 이상한 상황에서 차에 타고 내릴 때 많은 문제가 발생합니다.
- 원격 뷰어, 편집기 및 이들 간의 전환과 관련된 몇몇 문제들.
- 게임 상태와 대기 상태의 피해량 계산 순서가 다른 흥미로운 문제가 있었는데, 체력이 거의 남지 않은 개체에 아주 적은 피해를 입힐 때(반올림 오류로 인해)를 제외하고는 거의 항상 동일했습니다. 장애물을 차량으로 밀어서 파괴하려고 할 때 바로 이런 일이 발생했습니다.
- 차량 선택, 차량이 벨트에 의해 움직이지 않음, 아직 일어나지 않은 수리키트와의 상호 작용, 전투시 화면 위치 등 많은 사소한 문제가 발생했습니다.
- 일부 예측 불완전성은 거의 눈에 띄지 않을 것으로 예상할 수 있지만, 안타깝게도 지연 시간 숨기기의 특정 측면을 처리하는 방식 때문에 그렇지 않습니다.
탑승한 차량의 초기 속도가 올바르게 계산되지 않는 버그(지연 시간 60틱).
(차량의 고스트 시각화는 디버그 옵션입니다).
차량이 지연 시간(30틱)동안 벨트에 의해 이동되지 않는 버그.
레이턴시 중 일회성 효과
파티클 스폰이나 사운드 재생과 같이 게임 상태나 레이턴시 업데이트와 관계없이 클라이언트당 한 번만 수행해야 하는 작업이 있습니다.
이를 수행하는 방법의 주요 부분은 이를 LatencyOneTimeEffects로 전환하여 이미 수행된 데이터 구조(레이턴시 및 게임 상태 업데이트를 통해 지속됨)와 비교하고 아직 수행되지 않은 것만 실행하는 것입니다. 안타깝게도 이러한 검사는 매우 엄격해야 합니다(예를 들어 동일한 틱에 동일한 소스에서 여러 파티클이 서로 가깝게 생성되는 것을 허용하기 위해).
그 결과, 예측과 아주 작은 불일치라도 발생하면 모든 레이턴시 업데이트에 대해 사운드와 파티클 추가 세트를 동시에 보상으로 받게 됩니다. 또는 더 나아가, 예상치 못한 상황이 여러 틱 연속으로 발생하면 레이턴시 예측이 이전 게임 상태 업데이트와 다른 모든 게임 상태 업데이트 틱에 대해 추가 세트가 지급됩니다.
이는 작고 눈에 띄지 않을 것 같지만 정반대이므로 모든 작은 결함을 수정해야 합니다(물론 지연 시간이 작을수록 설명되지 않은 상황은 관찰할 수 없을 뿐만 아니라 발생 가능성도 낮아집니다).
결과
현재 버전에서 30틱의 지연 시간(60 UPS 사용 시 500ms)으로 구동 중입니다.
동영상에서 볼 수 있듯이, 그 결과 거의 모든 사람들의 의도와 목적에 맞게 지연 시간을 효과적으로 숨길 수 있게 되었습니다. 2.0이 출시되면 모두 함께 즐거운 드라이빙을 즐길 수 있기를 바랍니다.
항상 그렇듯이 평소와 같은 장소에서 생각을 다시 해보세요.
수고햇어... 근데 넘무 맛이 슴슴하구만... - dc App
자동차 충돌보조시스템 멋지네 - dc App
운전쪽 내용 부연설명 : 멀티게임하면 물리적으로 다른 컴이랑 레이턴시 차이가 나고 그만큼 보이는게 딜레이되는데, 팩토리오에서는 15년도에부터 레이턴시 숨기기 기능이 있었음. 원래는 내 조작 -> 서버에서 계산 -> 결과 전송인데 일단 내 컴에서 계산해서 보여주고 나중에 서버에서 온 데이터랑 보정해서 보여주는거. 그기능 버그난거 고쳤다는 내용임
개쩔긴한데... 맛은 없다
아니 근데 얘내 개 병신같은게 확장팩을 만들려는건지 2.0을 만들려는건지 모르겠음. 이런건 본편에 포함시켜도 되는건데 굳이 확장팩에 몰아넣어야 되는건가
이번건 다 본편에 들어가는 내용임 양쪽 다 만들고 있음
엔진 자체를 업그레이드 하는거라 선업뎃 힘들다고 언급했었음
하 시발 FFF도 본편하고 확장팩해서 2개를 올리는게 맞다고 본다에요
진짜 너무 불폈했던 부분 두개가 딱 해결되네
자동차 저거 개쩌네 해결할 방법도 해결할 필요도 못느낀 문젠데 - dc App
오늘은 좀 슴슴하다
내가 뉴비라 그런데 우주 dlc 아직 안나온거임? 아니면 따로 구매하는거임...?
안나온거임 지금 지들끼리 즐기면서 유저 기만중임
그리고 따로 구매하는것도 맞음 다만 우주시대랑 관련없는 변경점은 본편도 적용됨
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 유저 기만중 개웃기네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ