확장팩 FFF 모음 정리 링크



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



FFF #391 - 2023년 요약

게시자 Vinzenz, raiguard

2023-12-29



안녕하세요,

또 한 해가 저물어가고 있습니다. 여기 계신 모든 분들이 다가오는 새해에 행운이 가득하시길 기원합니다.




모드 포털 요약 2023 - Vinzenz


2023년이 끝났지만, 놀랍게도 여전히 모드 다운로드 수를 집계하고 있습니다. 대부분의 다운로드는 내장된 모드 관리자를 통해 이루어지지만, 일부 사용자는 다운로드 스크립트나 도커 컨테이너를 사용하여 팩토리오 설치를 자동화하는 것을 좋아합니다.


그들 중 일부는 모드를 업데이트할 때 충돌한 다음 다시 시작하고, 모든 모드를 다시 다운로드하고, 충돌하고, 다시 시작하고, 잠시 후 팩토리오 인증 서버가 다운로드 스크립트를 무시하기 시작할 가능성이 매우 높습니다. 따라서 이번 연말연시에는 잊혀진 벽장 속에 앉아 무의식적으로 '파워 아머 MK3'를 반복해서 다운로드하는 불쌍한 미니 PC를 기억하게 될지도 모릅니다.



2023년에는 다음과 같습니다:


- 676,651명의 엔지니어가 44,954,072개의 모드를 다운로드했습니다.

- 2,043개의 신규 모드가 업로드되었고 7,832개의 모드가 업데이트 되었습니다.

- 1,368명의 활성 모드 크리에이터가 105명의 공동 작업자의 지원을 받고 있습니다.


개인 모드 포털 사용량에 대한 몇 가지 통계를 보려면 여기에서 개인 요약 정보를 확인하세요.



작년에는 사람들이 보통 얼마나 다양한 모드를 다운로드하는지 살펴봤습니다. 올해는 올해 모드 업로드의 다양성에 대해 조금 보여드리고자 합니다. 첫 번째 차트는 2023년에 출시된 모드의 다양한 카테고리를 보여줍니다.








두 번째 차트는 2023년의 모든 플레이어 다운로드를 모드 카테고리별로 그룹화한 것입니다. 사람들이 콘텐츠만 보러 온다는 진부한 진리를 확인시켜 주는 차트로, 차라리 모드 태그에 대한 차트를 준비했어야 했습니다.









모드 포털 변경 로그 2023 - Vinzenz


올해도 저희는 검색 편의성을 개선하기 위한 노력을 계속했습니다. 먼저 자동 하이라이트 페이지를 추가하여 매주 흥미로운 모드를 엄선해 보여드리기 위해 노력했습니다. 이 기능은 잘 작동하지만 아직은 '실험적' 단계로, 다음 단계로 나아갈 방향을 결정하지 못했습니다.


얼마 후 모드 포털 검색을 개편하고 탐색 페이지를 출시했습니다. 이 페이지는 입력하는 대로 빠르게 검색할 수 있는 환경을 제공합니다.


또한 많은 비하인드 스토리 작업도 진행했는데, 그 중 몇 가지를 소개해드리고자 합니다:


- 4월에 Imgur가 이미지를 삭제하기 시작하자 Sanqui는 모드 페이지나 토론에 게시된 외부 이미지를 자동으로 리호스팅하는 시스템을 구축했습니다. 이를 통해 이전 스크린샷을 보존하고 로딩 시간을 개선했습니다.

- 비용 절감을 위해 탐색 페이지를 Algolia에서 Meilisearch로 마이그레이션했습니다.

- 모드 저장소를 sftp 기반 솔루션에서 s3와 유사한 오브젝트 저장소로 변경하여 모드 업로드 엔드포인트의 가용성을 개선했습니다.







모드 관리자 개선 - raiguard


모딩은 팩토리오에서 빼놓을 수 없는 부분이며, 저희는 좋은 모드 관리 경험을 제공하기 위해 많은 노력을 기울여 왔습니다. 하지만 서드파티 모드는 항상 기본 게임 작업의 부차적인 부분이었기 때문에 "좋은" 경험이지만 "훌륭한" 경험은 아니었고, 해결되지 않은 마찰이 많았습니다. 2.0부터는 여러 개의 내장 모드가 포함된 게임을 출시할 예정이므로 이제 모드 관리와 종속성 관리가 "기본 게임 경험"에 속하게 되었습니다. 저는 광범위한 모드 제작 경험을 바탕으로 사용자와 모드 제작자 모두를 위한 모드 관리 개선에 개인적으로 관심이 있고, 현재 시스템의 문제점을 잘 알고 있습니다. 저는 가장 큰 바람과 불만 사항의 해결 목록을 작성하고 이를 해결하기 위해 직접 나서기로 결정했습니다.



모드 종속성 오류


이 상황을 상상해 보세요: 크라스토리오 2의 새로운 플레이를 위해 모드 목록을 구성하고 새 게임을 시작합니다. 자신도 모르게 크라스토리오 2가 호환되지 않는 것으로 표시한 파워 아머 MK3 모드를 실수로 활성화했습니다. 플레이를 시작한 지 한 시간이 지나야 크라스토리오 2 콘텐츠가 누락되었다는 사실을 알게 되고, 이제 저장을 삭제하고 처음부터 다시 시작해야 합니다.


이는 플레이어로서, 그리고 모드 제작자로서 개인적으로 여러 번 경험한 상황입니다. 1.1 버전에서는 충돌이 발생해도 게임에서 이를 알려주지 않고, 가능한 모드를 자동으로 로드하고 계속 진행합니다. 이로 인해 많은 모드 제작자가 종속성을 요구하는 것을 기피하고, 사용자는 모드에 종속성이 많으면 불만을 제기했습니다. 이 문제를 둘러싼 문제가 너무 흔해서 Space Exploration은 사용자에게 어떤 모드가 없는지 알려주는 자체 종속성 오류 시스템을 구현했습니다.


팩토리오 2.0은 종속성 오류가 발생하면 이를 알려주며, 오류가 해결될 때까지 게임을 로드할 수 없도록 합니다.






구성 -> 다시 시작 -> 구성 -> 다시 시작


이제 종속성 오류를 제대로 파악했으니 이를 해결하기 위한 워크플로를 개선해야 합니다. 1.1에서는 오류가 발생하면 영향을 받는 모드를 비활성화하거나 모든 모드를 비활성화하는 두 가지 옵션이 제공됩니다. 문제를 해결하기 위해 모드를 활성화하거나 활성 모드 버전을 변경하거나 모드를 업데이트해야 하는 경우, 먼저 모드를 비활성화하여 게임을 로드할 수 있도록 해야 모드 관리자 GUI에 액세스하여 문제를 해결할 수 있습니다. 저는 이 작업이 너무 짜증이 나서 게임을 계속 다시 시작하는 것을 방지하기 위해 명령줄 모드 관리자를 작성했습니다.


해결책은 간단했습니다: 2.0에서는 모든 모드 포털 기능을 포함하여 모드 관리자 GUI에 대한 전체 액세스를 허용하는 새로운 모드 관리 버튼을 추가했습니다. 위의 스크린샷에서 확인할 수 있습니다.




모드 설치하기


1.1에서 모드 관리자의 설치 탭은 비교적 단순합니다. 몇 가지 기본 정렬/필터링 옵션이 있는 모드 목록과 모드 세부 정보를 표시하는 정보 창이 있습니다. 게임에서 전체 모드 목록을 가져와서 전체 테이블을 한 번에 생성하기 때문에 게임이 디버그 모드일 때 눈에 띄는 성능 문제와 거의 사용할 수 없는 성능을 초래할 수 있습니다.


모드 포털 웹사이트에 새로운 탐색 페이지가 등장하면서 모드 포털 웹사이트와 게임 내 모드 브라우저의 사용성 차이가 더욱 커졌습니다. 저는 웹사이트에서 모드를 검색하고 필요한 모드를 찾은 후에야 게임 내에서 모드를 검색하는 워크플로에 익숙해졌습니다. 게임에서도 동일한 검색 및 필터링 기능을 통해 동일한 경험을 할 수 있다면 좋지 않을까요?


2.0에서는 완전히 새로워진 탐색 탭을 통해 바로 이 기능을 사용할 수 있습니다.






참고: 북마크된 모드를 기준으로 필터링하는 기능은 새 GUI에서 구현되지 않았지만, 2.0 릴리스에는 포함될 예정입니다.



이 새로운 인터페이스를 구현할 때 고려해야 할 몇 가지 사항이 있었습니다. 매번 전체 모드 목록을 가져오는 1.1 방식은 성능과 네트워크 사용량 측면에서 좋은 해결책이 아니었고, 복잡한 검색 알고리즘을 클라이언트 측에서 C++로 다시 구현해야 했습니다. 이렇게 하면 웹사이트 검색과 게임 내 검색 간에 불가피한 차이가 발생하여 사용자 경험이 좋지 않을 것입니다. 반면, 모드 포털 검색 API를 구현하면 웹사이트와 게임 내 검색 결과 간에 동등성을 보장할 수 있습니다.


서버 측 접근 방식을 선택했습니다. 프로젝트를 더 빨리 시작하고 실행하기 위해 기존 모드 포털 API에서 데이터를 가져와 새로운 형식으로 제공하는 모의 서버를 Go로 구현하기로 했습니다. Go에 내장된 HTTP 라이브러리와 매우 사용하기 쉬운 JSON 구문 분석 덕분에 노트북에서 이 서버를 실행하는 데 몇 시간 밖에 걸리지 않았습니다. 탐색 GUI를 구현하면서 개발 시간을 들이지 않고도 필요에 따라 API를 자유롭게 조정할 수 있었습니다. 덕분에 탐색 탭을 더 쉽게 구현하고 향후 더 많은 변화를 위한 기반을 마련하기 위해 모드 관리자 GUI를 정리하고 리팩토링하는 데 시간을 할애할 수 있었죠.


클라이언트 측 구현이 완료된 후 실제 API를 구현하는 것은 Vinzenz의 몫이었습니다. 모의 서버의 견고함 덕분에 실제 API를 대상으로 테스트하는 동안 몇 가지 문제만 발견되었고 기능 병합은 비교적 순조롭게 진행되었습니다.




향후 계획


이번 변경으로 모드 관리에 대한 가장 큰 불만이 해결된 것 같습니다. 아직 완료된 것은 아니지만, 가능한 한 빨리 2.0을 여러분께 선보이기 위해 대부분의 계획은 이후 버전으로 미뤄야 할 것 같습니다. 앞으로 더 많은 소식을 기대해 주세요!



언제나 그렇듯이 평소 자주 이용하는 장소에서 여러분의 의견을 알려주세요.