방문자

오늘
—
어제
—
누적
—

불러오는 중

게임 개발 · 기술 동향 · 팀 블로그MIRO
헤드라인

Factorio · 게임 설계

벨트 한 칸이 아니라 전체의 물건을 세기

Factorio 개발 일지 405의 벨트 한 칸이 아니라 전체의 물건을 세기 관련 화면
Wube Software의 Factorio 개발 일지 #405 본문 이미지입니다. · 이미지 출처

한 타일의 물건과 구간의 재고

2024년 4월 5일의 Factorio 개발 기록 #405는 벨트 전체 읽기 모드를 소개합니다. 순환 벨트에 필요한 품목이 얼마나 있는지 알고 싶을 때 한 타일의 값은 충분하지 않습니다. 기존처럼 각 벨트를 모두 회로로 연결하면 배선이 많아지고 물건도 가립니다. 지하 벨트 구간을 같은 방식으로 다루기 어려운 문제도 있었습니다.

새 모드는 읽는 벨트와 같은 Transport line의 내용을 집계합니다. 중요한 제한은 연결된 모든 공장을 하나로 읽는 기능이 아니라는 점입니다. 원문에 따르면 지하 벨트는 이어서 읽지만 분배기와 다른 벨트로의 측면 투입은 구간을 나눕니다.

전체라는 말의 범위를 표시해야 합니다

이 기능을 사용할 때는 눈으로 이어져 보이는 벨트와 집계 단위가 같다고 가정하지 않는 편이 좋습니다. 분배기 앞뒤에서 읽은 값이 다르면 읽기 오류가 아니라 집계 경계가 달라진 결과일 수 있습니다. 원문은 경계 동작을 설명하지만 내부 합산 알고리즘의 전체 코드는 공개하지 않습니다.

다른 게임에서 구간 단위 재고를 표시한다면 집계에 포함되는 연결과 제외되는 연결을 시각적으로 보여주는 방법을 검토할 수 있습니다. ‘전체’ 버튼만 제공하는 것보다 사용자가 범위를 확인할 수 있어야 제어 조건을 신뢰할 수 있습니다. 이는 사례에서 얻은 응용 제안입니다.

읽기 활성화와 읽기 모드는 다릅니다

현재 공식 LuaTransportBeltControlBehavior 문서에는 read_contents와 read_contents_mode가 별도 속성으로 있습니다. 내용을 회로로 보내는지와 어떤 방식으로 읽는지를 따로 설정하는 계약입니다. 모드 값만 바꾸고 읽기 활성화 상태를 확인하지 않으면 의도한 신호가 나오지 않을 수 있습니다.

공개 API 문서는 존재하는 조작 범위를 확인하는 근거이지, 매 틱 벨트 전체를 순회한다거나 캐시된 합계만 사용한다는 내부 구현의 근거는 아닙니다. 성능 설명을 더하려면 실제 소스나 개발진의 추가 설명이 필요하므로 여기서는 추정하지 않았습니다.

경계를 하나씩 추가해 보기

아직 수행하지 않은 실험으로, 정해진 개수의 아이템을 넣은 직선 벨트에서 시작하는 절차를 제안합니다. 일반 읽기와 전체 구간 읽기 값을 비교한 다음 지하 벨트, 분배기, 측면 투입을 하나씩 추가합니다. 각 변경 후 어떤 아이템이 집계에 포함되는지 수동 개수와 대조하면 범위를 이해하기 쉽습니다.

공급을 켜고 끄는 회로에 연결한다면 입력한 임계값과 실제 벨트 수량이 언제 일치하는지도 기록합니다. 공급 투입기 안에 들려 있거나 아직 구간에 진입하지 않은 물건까지 벨트 재고로 간주해서는 안 됩니다. 읽기 구간 밖의 재고는 별도 측정이 필요합니다.

마지막으로 벨트를 철거했다 다시 연결하거나 방향을 바꿔 집계 범위가 다시 형성되는 경우를 확인할 수 있습니다. 이 글은 공개된 읽기 규칙을 정리했으며 특정 공장의 공급 안정성이나 회로 성능을 실험으로 보장하지 않습니다. 편리한 집계일수록 범위와 측정 시점을 함께 설명하는 것이 중요합니다.

출처

댓글

이 글에 대한 생각을 남겨 주세요.

댓글 삭제

헤드라인

같은 카테고리의 글

게임 기술 전체 보기 ↗