기반시설 스케줄링 프로토콜
약 632 단어약 2 분
resource/custom_infrast/*.json 파일의 사용법 및 각 필드 설명
팁
JSON 파일은 주석을 지원하지 않으므로, 텍스트 내의 주석은 예시용입니다. 직접 복사하여 사용하지 마세요.
전체 필드 목록
{
"title": "小号的换班方案", // 작업명, 선택 사항
"description": "哈哈哈哈", // 작업 설명, 선택 사항
"plans": [
{
"name": "早班", // 계획명, 선택 사항
"description": "lol", // 계획 설명, 선택 사항
"description_post": "", // 계획 실행 완료 후 표시되는 설명, 선택 사항
"period": [
// 교대 시간대, 선택 사항
// 현재 시간이 이 구간 내에 있으면 해당 계획을 자동으로 선택합니다 (전체 json 파일에 여러 계획이 포함될 수 있음)
// 이 필드가 없으면 매번 교대가 끝난 후 자동으로 다음 계획으로 전환됩니다
// core는 이 필드를 처리하지 않으므로, 인터페이스를 사용하여 maa를 통합하는 경우 이 로직을 직접 구현하세요
[
"22:00", // hh:mm 형식 요구, 현재는 단순히 숫자 크기만 비교합니다. 날짜를 넘기는 경우 이 예시처럼 작성하세요
"23:59"
],
[
"00:00",
"06:00"
]
],
"duration": 360, // 작업 지속 시간(분), 예약된 필드로 현재는 효과가 없습니다. 나중에 시간이 되면 교대 알림을 띄우거나 자동으로 교대할 수 있습니다
"Fiammetta": {
// "피아메타"를 어느 오퍼레이터에게 사용할지, 선택 사항, 비워두면 사용하지 않음
"enable": true, // "피아메타" 사용 여부, 선택 사항, 기본값 true
"target": "巫恋", // 목표 오퍼레이터, OCR을 사용하지만 OcrReplace를 지원하기에, 중문명으로 작성해야 함
"order": "pre" // 전체 교대 전에 사용할지, 교대 후에 사용할지, 선택 사항, 값 범위 "pre" / "post", 기본값 "pre"
},
"drones": {
// 드론 사용, 선택 사항, 비워두면 드론을 사용하지 않음
"enable": true, // 드론 사용 여부, 선택 사항, 기본값 true
"room": "trading", // 어느 유형의 시설에 사용할지, 값 범위 "trading" / "manufacture"
"index": 1, // 몇 번째 해당 유형의 시설에 사용할지, 왼쪽 탭 순서에 대응, 값 범위 [1, 5]
"rule": "all", // 사용 규칙, 예약된 필드로 현재는 효과가 없습니다. 나중에 플러그인 등 조작을 지원하는 데 사용할 수 있습니다
"order": "pre" // 오퍼레이터 교대 전에 사용할지, 교대 후에 사용할지, 선택 사항, 값 범위 "pre" / "post", 기본값 "pre"
},
"groups": [
// "control" / "manufacture" / "trading" / "recycle"에 대해 오퍼레이터 편성을 설정할 수 있음
{
"name": "古+银",
"operators": ["古米", "银灰", "梅"]
},
{
"name": "清流",
"operators": ["清流", "森蚺", "温蒂"]
}
],
"rooms": {
// 시설 정보, 필수
// 값 범위 "control" / "manufacture" / "trading" / "power" / "meeting" / "hire" / "dormitory" / "processing" / "training" / "recycle"
// 하나라도 빠지면 해당 시설은 기본 알고리즘을 사용하여 교대합니다.
// 시설 배열의 방 항목 수가 실제 방 수보다 적으면, 설정되지 않은 첫 번째 방부터 해당 시설의 나머지 방은 교대하지 않으며, 시설 전체에 대한 미설정 알림이 한 건 전송됩니다.
// 시설 배열이 비어 있는 경우(시설 키를 명시적으로 썼지만 내용이 []인 경우) 해당 시설 전체를 그대로 유지하며 교대하지 않습니다. 이는 시설 키가 없는 경우(기본 알고리즘으로 교대)와 구분되며, 응접실 단서, 훈련실 훈련 계속 등 시설 수준 작업은 정상적으로 실행됩니다.
// 방 항목을 작성했지만 배치 의도가 없는 경우(operators/candidates가 비어 있거나 생략, autofill 및 오퍼레이터 편성 미설정) 해당 방은 인원 교체만 건너뛰고 기존 배치를 그대로 유지한 채 「방 유지」 콜백을 보내며, 산물 등 다른 필드의 처리에는 영향을 주지 않습니다
// skip 필드는 해당 방의 인원 교체와 산물 교체를 모두 건너뛰며, 드론은 정상적으로 사용됩니다(방 교대가 없을 때 pre/post는 순서 차이가 없음). 응접실의 단서 흐름, 훈련실의 훈련 계속 등 시설 수준 작업에는 영향을 주지 않습니다. skip은 로그만 남기고 「방 유지」 콜백을 보내지 않는 점이 차이입니다
// 특정 시설의 교대를 원하지 않으면 skip 필드를 사용하거나, 소프트웨어 「작업 설정 - 기반시설 교대」 에서 해당 시설의 체크를 해제하세요
"control": [
{
"operators": [
"夕", // OCR을 사용하지만 OcrReplace를 지원하기에, 중문명으로 작성해야 함
"令",
"凯尔希",
"阿米娅",
"玛恩纳"
]
}
],
"manufacture": [
{
"operators": ["芬", "稀音", "克洛丝"],
"sort": false // 정렬 여부 (위의 operators 순서대로), 선택 사항, 기본값 false
// 예: 씬, 팔라스, 샤마르 등의 오퍼레이터를 사용하고 "sort": false인 경우, 오퍼레이터 순서가 섞여 예열 효과가 손실될 수 있습니다.
// "sort": true를 사용하면 이 문제를 피할 수 있습니다
},
{
"skip": true // 현재 시설을 건너뛸지 여부 (배열 순서 대응), 선택 사항, 기본값 false
// true일 경우, 다른 필드는 모두 비워둘 수 있습니다. 오퍼레이터 교체와 산물 교체 작업을 건너뛰며, 드론은 정상적으로 사용되고 단서 교환, 훈련실의 훈련 계속 등 시설 수준 작업에도 영향을 주지 않습니다
},
{
"operators": ["Castle-3"],
"autofill": true, // 기존 알고리즘을 사용하여 남은 위치를 자동으로 채움, 선택 사항, 기본값 false
// operators가 비어 있거나 생략되면, 해당 방은 앞서 설명한 빈 배치 의도 규칙에 따라 그대로 유지됩니다
// operators가 비어 있지 않으면, 단일 오퍼레이터 효율만 고려하며 전체 조합 효율은 고려하지 않습니다
// 뒤에 정의된 사용자 오퍼레이터와 충돌할 수 있으니 주의하세요. 예를 들어 뒤에 필요한 오퍼레이터를 여기서 가져다 쓸 수 있으므로 신중하게 사용하거나, autofill 시설 순서를 마지막으로 배치하세요
"product": "Battle Record" // 현재 제조 생산품, 선택 사항.
// 현재 시설과 작업에 설정된 생산품이 일치하지 않는 것으로 식별되면, 인터페이스에 빨간 글씨로 힌트가 뜹니다. 나중에 더 많은 기능이 생길 수 있습니다
// 값 범위: "Battle Record" | "Pure Gold" | "Dualchip" | "Originium Shard" | "LMD" | "Orundum"
},
{
"operators": ["多萝西"],
"candidates": [
// 후보 오퍼레이터, 선택 사항. 여기에 있는 오퍼레이터 중 있는 것을 사용하며 꽉 찰 때까지 선택합니다
// 다른 시설에서 근무 중인 오퍼레이터는 선택되지 않습니다(선택 단계에서 제외).
// 컨디션이 기반시설 교대 컨디션 임계값 미만인 오퍼레이터는 건너뛰며,
// 숙소는 반대로 컨디션이 가득 찬 오퍼레이터만 휴식 자리를 내주고,
// 가득 차지 않은 오퍼레이터(이 숙소에서 휴식 중인 오퍼레이터 포함)는 계속 선택 가능합니다
// autofill=true와 호환되지 않습니다. 즉 이 배열이 비어 있지 않으면 autofill은 false여야 합니다
"星源",
"白面鸮",
"赫默"
]
},
{
"use_operator_groups": true, // true로 설정하여 groups의 오퍼레이터 편성을 사용, 기본값 false
"operators": [
// 활성화 시, operators의 이름은 편성명으로 해석됨
"古+银", // 컨디션 임계값 및 설정 순서에 따라 편성 선택
"清流" // 만약 古+银 그룹에 컨디션이 임계값보다 낮은 오퍼레이터가 있다면 清流 그룹 사용
// 모든 편성을 사용할 수 없는 경우 후보 명단(candidates)은 정상적으로 적용됨. 후보도 autofill도 설정하지 않은 경우 해당 방은 그대로 유지되며 기본 알고리즘 자동 선택으로 대체되지 않음
]
}
],
"meeting": [
{
"autofill": true // 이 시설 전체 autofill
}
],
"training": [ // 훈련실, 훈련 슬롯 오퍼레이터와 지원자를 구성
{
// 지원자 후보, 선택 사항. 생략 시 지원자를 선택하지 않습니다. 지원 슬롯에는 훈련 슬롯과
// 같은 참가 조건이 없어 어떤 오퍼레이터든 배치할 수 있으나, 범용 후보 필드와 마찬가지로
// 다른 시설에서 근무 중인 후보는 선택되지 않습니다(선택 단계에서 제외). 지원자 후보에도
// 생산 시설과 동일한 의미로 기반시설 교대 컨디션 임계값이 적용되어 임계값 미만의 후보는
// 선택 단계에서 건너뛰며, 후보가 모두 제외되면 지원자는 그대로 유지됩니다. 다른 시설 오퍼레이터의
// 「기반시설에 같은 진영 오퍼레이터가 배치되면 효율 상승」 류 스킬 조건을 충족하는 용도에도
// 쓸 수 있습니다(해당 진영 오퍼레이터 한 명을 operatorsA에 넣으면 되며 전문화와는 무관).
// 이름 요구 사항은 operators와 같음
"operatorsA": ["杜宾"],
// 훈련 슬롯 오퍼레이터 후보, 선택 사항. 생략 시 훈련 슬롯 오퍼레이터를 교체하지 않습니다.
// 게임 내 선택 목록에서 처음 나타나는 오퍼레이터를 배치합니다. 배치는 훈련 슬롯의 참가
// 조건을 받아 오퍼레이터가 정예화 2단계이며 전문화가 만렙에 도달하지 않은 스킬이 남아
// 있어야 합니다. 모든 스킬의 전문화가 만렙인 오퍼레이터는 선택 목록에 표시되지 않아
// 설정해도 사실상 건너뜁니다. 훈련 진행 중에는 훈련 슬롯이 고정되어 바뀌지 않습니다.
// 배치만 할 뿐 새 훈련을 시작하지 않으며, 전문화 훈련 시작은 여전히 수동으로 해야 합니다.
// 이름 요구 사항은 operators와 같음
"operatorsB": ["银灰"]
// operators/candidates 같은 일반 필드는 훈련실에 효과가 없으며 skip과 operatorsA/operatorsB만 유효함
// 「훈련 계속」 은 스케줄과 독립적인 GUI 옵션으로 rooms의 세 가지 상태(빈 배열 / skip / 빈 배치 의도)의 영향을 받지 않으며, 어느 상태에서든 훈련 계속은 정상적으로 실행되고 인원 교체만 건너뜁니다
// 「훈련 계속」 이 켜져 있으면 교대 흐름은 먼저 현재 오퍼레이터의 전문화 계속을 시도하고, 성공하면 훈련 슬롯은 그대로 두고 지원자만 설정에 따라 교체하며, 계속할 수 없을 때(재료 부족 또는 이미 만렙)는 설정에 따라 훈련 슬롯 오퍼레이터를 교체합니다
}
],
"recycle": [ // 回收站(두 자리는 역할 구분이 없으며 제조소와 동일한 형식, product 필드는 효과 없음)
{
"operators": ["芬", "克洛丝"]
}
]
}
},
{
"name": "晚班"
// ...
}
]
}예시
스케줄 확장 프로토콜
MAA 기본 스케줄링 프로토콜에는 오퍼레이터의 근무 교대 정보만 포함됩니다. 스케줄 확장 프로토콜은 MAA 스케줄링 프로토콜을 기반으로 선택적인 시설 배치 layout, 오퍼레이터 정보 operators, 출처 및 버전 정보 metadata를 추가합니다. 이를 통해 MAA, 明日方舟一图流-스케줄 자동 생성 도구, 明日方舟一图流-스케줄 수익 계산기 등 서드파티 애플리케이션이 같은 파일을 공유하고 데이터를 양방향으로 교환할 수 있습니다. 확장 필드는 모두 선택 사항이며 서드파티 애플리케이션의 실제 요구 사항에 따라 조정할 수 있습니다.
| 최상위 필드 | 용도 |
|---|---|
layout | 시설 유형, 레벨, 위치를 포함한 시설 배치를 기록 |
operators | 오퍼레이터 정예화 단계와 레벨 정보를 기록 |
metadata | 프로토콜 버전, 생성 도구, 모듈 버전 등의 데이터와 서드파티 도구에 필요한 추가 데이터를 기록 |
확장 필드 일람
예시는 기본 프로토콜의 plans 등의 필드와 함께 사용해야 합니다. 육성 정보와 버전 번호는 예시 값이며 실제 JSON에서는 주석을 삭제해야 합니다.
{
// 세 최상위 필드는 모두 선택 사항이며 각각 제공할 수 있고 MAA의 기본 스케줄 실행에는 영향을 주지 않음
// 도구는 가져오기, 편집, 내보내기 과정에서 확장 정보를 유지해야 함
"layout": [ // 전체 건설 시설 배치, 선택 사항. 생략하면 배치 정보가 없음
// 목록에 없는 시설은 미건설. plans[].rooms에서 생략한 시설은 기본 프로토콜의 기본 규칙을 따름
// type: 시설 유형, level: 시설 레벨, position: 실제 위치
{ "type": "control", "level": 5 },
// 동일 유형 시설 순서는 plans[].rooms 및 드론 index 번호와 대응
{ "type": "trading", "level": 3, "position": "B101" },
{ "type": "trading", "level": 3, "position": "B102" },
{ "type": "trading", "level": 1, "position": "B103" },
{ "type": "manufacture", "level": 3, "position": "B201" },
{ "type": "manufacture", "level": 3, "position": "B202" },
{ "type": "manufacture", "level": 2, "position": "B203" },
{ "type": "manufacture", "level": 2, "position": "B301" },
{ "type": "power", "level": 3, "position": "B302" },
{ "type": "power", "level": 3, "position": "B303" },
{ "type": "meeting", "level": 3 },
{ "type": "processing", "level": 3, "position": "B105" },
{ "type": "hire", "level": 3, "position": "B205" },
{ "type": "training", "level": 3, "position": "B305" },
{ "type": "dormitory", "level": 1, "position": "B104" },
{ "type": "dormitory", "level": 1, "position": "B204" },
{ "type": "dormitory", "level": 1, "position": "B304" },
{ "type": "dormitory", "level": 1, "position": "B404" },
{ "type": "recycle", "level": 1, "position": "B405" }
],
"operators": { // 육성 정보, 선택 사항. 게임 내 ID를 키로 사용
// 시설 내 오퍼레이터 배치를 대체하지 않음
"char_002_amiya": {
"name": "아미야", // 오퍼레이터 이름, 선택 사항
"elite": 2, // 정예화 단계: 0, 1, 2
"level": 80 // 현재 정예화 단계의 레벨
},
"char_124_kroos": {
"name": "크루스",
"elite": 1,
"level": 55
}
},
"metadata": { // 출처와 버전 등의 부가 정보, 선택 사항
"extensionVersion": "1.0", // 전체 확장 프로토콜의 버전 문자열, 선택 사항. 생략하면 버전 없는 형식
"generator": { // 원래 생성 도구 정보
"id": "yituliu-riic-schedule-generator",
"name": "明日方舟一图流-排班表自动生成工具",
"url": "https://ark.yituliu.cn/tools/scheduleV3"
},
"moduleVersions": { // 생성 당시 모듈 버전. 식별자는 생성 도구가 정의하며 generator.id와 함께 해석
"layout": "v20260924.2314", // 시설 배치 모듈
"data": "v20260924.2314", // 데이터 모듈
"team": "v20260928.1118", // 팀 모듈
"assembler": "v20260822.2233", // 스케줄 조립기
"yield": "v20261002.1334", // 수익 계산기
"recommendation": "v20260928.1102" // 디버그 정보
}
}
}