방문자

오늘
—
어제
—
누적
—

불러오는 중

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

Factorio · 게임 설계

전선 연결을 아이템 소비와 분리하기

Factorio 개발 일지 379의 연결 상태를 아이템 대신 작업 도구에 두기 관련 화면
Wube Software의 Factorio 개발 일지 #379 본문 이미지입니다. · 이미지 출처

전선을 자원과 편집 동작으로 나누기

2023년 10월 6일의 Factorio 개발 기록 #379는 전선을 직접 연결하는 조작과 생산 재료로 쓰는 아이템을 분리합니다. 기존에는 붉은색·초록색 전선을 제작해야 했지만 청사진에는 무료로 연결이 포함되는 등 사용 방식에 불일치가 있었습니다. 원격에서 직접 연결하지 못하는 작업도 청사진을 이용하면 우회할 수 있었습니다.

개선안은 연결 도구를 필요할 때 꺼내 쓰는 추상 아이템으로 만드는 것이었습니다. 구리 케이블도 제작 재료인 실물과 전신주 연결에 쓰는 도구를 구분했습니다. 중요한 점은 연결 관계가 도구 안에 저장된다는 뜻이 아니라, 연결 조작을 인벤토리 자원 소비에서 분리했다는 것입니다.

실제 개체와 고스트의 연결을 통합하기

원문은 이 변화의 기반이 된 리팩터링도 설명합니다. 실제 전신주와 고스트가 서로 다른 방식으로 연결을 보관하던 구조에서는 파괴, 재건, 청사진 생성 때마다 조합별 예외 처리가 필요했습니다. 개발진은 연결 처리를 WireConnector라는 공통 구조로 묶었습니다.

고스트를 일반 연결 체계에서 반드시 격리해야 한다는 전제를 바꾸자, 이를 보호하려고 만든 복잡한 주변 코드도 줄일 수 있었습니다. 이는 모든 특수 상태를 무조건 합치라는 일반 법칙이 아니라, 당시 전선 기능에서 분리 비용을 다시 평가한 사례입니다.

현재 공개 API가 보여주는 경계

공식 LuaWireConnector 문서에는 연결 확인, 연결·해제, 도달 가능 거리 검사와 is_ghost 속성이 나옵니다. 연결된 전체 목록과 실제 연결 목록도 구분합니다. 따라서 사용자에게 같은 도구를 제공하더라도 예정된 연결과 실제 동작 중인 연결을 구별할 필요는 남아 있음을 알 수 있습니다.

공개 API는 연결이 만들어졌는지를 반환하는 계약까지 확인하게 해주지만, 엔진 내부 C++ 소스 전체를 검토한 근거는 아닙니다. 또한 현재 문서의 추가 속성을 2023년 발표 시점의 구현으로 소급하지 않았습니다.

편집 도구를 만들 때 시험할 내용

아래는 별도 프로젝트에서 해볼 수 있는 실험이며 실행 결과는 없습니다. 실제 개체끼리, 고스트끼리, 실제 개체와 고스트 사이의 연결을 만들고 저장·복원해 봅니다. 이후 한쪽을 파괴하거나 재건했을 때 연결 표시와 기능 상태가 함께 일관적인지 검사합니다.

다음으로 같은 연결을 직접 도구와 청사진 방식으로 각각 생성해 결과를 비교합니다. 둘의 최종 그래프가 다르면 UI 편의성만 바뀐 것이 아니라 서로 다른 규칙이 남아 있을 수 있습니다. 실패한 연결 요청이 빈 상태를 남기는지, 취소 후 재시도가 중복 선을 만드는지도 점검할 만합니다.

이 관점은 노드 편집기나 건설 게임에도 응용할 수 있습니다. 도구 선택 상태, 연결 데이터, 자원 소비 규칙을 따로 설명할 수 있어야 원격 편집과 되돌리기를 추가할 때 책임이 섞이지 않습니다. 기존 제목의 ‘도구에 두기’는 이런 조작의 분리를 가리키며 연결 데이터의 저장 위치를 단정하는 표현으로 읽지 않아야 합니다.

출처

댓글

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

댓글 삭제

헤드라인

같은 카테고리의 글

게임 기술 전체 보기 ↗