02장
모드의 구조
.oamod zip과 프로필 oamod.yaml: 식별 정보, 레이아웃, 제한, 데이터 키, 스크립트 확장, 프로필이 켜는 표준 수정 항목.
패키지
.oamod는 모드 폴더를 zip으로 묶은 것입니다. 프로필은 최상위나 최상위에 있는 유일한 폴더 안에 둡니다(Finder의 ‘압축’으로 만들면 이렇게 됩니다). 무압축 저장 또는 deflate 압축 항목만 쓰고, 링크, 장치 이름, 절대 경로, .. 경로는 쓸 수 없으며, 압축을 풀었을 때 최대 4 GiB입니다.
escalation.oamod플레이어가 다운로드하거나 여는 파일├─ oamod.yaml필수 프로필: 식별 정보, 레이아웃, 제한, 수정 항목├─ badge.png256 × 256, 라이브러리와 이 사이트에 표시됨├─ totala1.hpi · esc.ufo아카이브, layout 아래에 로드 순서대로 나열├─ units/ · weapons/ · features/아카이브 위에 덧씌우는 낱개 파일 데이터 폴더├─ scripts/ · objects3d/ · textures/COB 스크립트, 3DO 모델, GAF 텍스처├─ sounds/ · bitmaps/ · guis/모드가 교체하는 오디오, 그림, 메뉴└─ README · LICENCE그 밖의 파일은 함께 담기지만 무시됩니다프로필
엄격한 YAML입니다. 문서 하나, 최상위 매핑 하나이며 앵커와 블록 스칼라는 쓸 수 없습니다. 파일에 쓰지 않은 것은 모두 3.1c대로 플레이됩니다.
oamod: 1 id: escalation # 케밥 케이스, 1~32바이트. 설치 폴더 이름 name: Escalation version: "10.2.0" # 자유 텍스트, 순서를 따지지 않음 author: {name: Wotan and the ESC team} packaging: {revision: 1, date: 2026-10-15, packager: Core Prime} homepage: https://example.net/escalation tags: [units, balance, ai] requires: {base: ta-3.1c, engine: ">= 0.8.0"} # 엔진 범위는 따옴표로 감싸세요 layout: archives: [esc.ufo, escgui.ccx] limits: units-per-player: {default: 1500, max: 5000} hacks: ai.income-multipliers: {easy: 1.0, medium: 1.5, hard: 2.0} weapons.high-arc-ballistic: true veterancy.model: escalation
선언할 수 있는 것
| 키 | 하는 일 | 표준 |
|---|---|---|
identity | 이름, 배지, 홈페이지, 태그, 필요한 기본 게임과 확장팩. | §6.1 |
layout | 모드를 이루는 아카이브와 폴더, 로드 순서대로. | §6.2 |
limits | 모드가 늘리는 엔진 제한. 각각 기본값과, 호스트가 고를 수 있는 최댓값이 있습니다. | §6.3 |
script-extensions | 모드의 유닛 스크립트가 읽는 추가 값(예: unit.kills-x100). | §7 |
data-keys | 엔진이 따라야 하는 FBI, TDF 파일의 추가 키. | §8 |
hacks | 모드가 켜는 표준 수정 항목. 시뮬레이션 수정 항목은 플레이어 사이에 일치해야 합니다. | §9 |
strings, media | 메뉴에 쓰는 번역된 이름과 모드 자체의 그림, 사운드. | §10 |
설치 위치
파일 이름이 아니라 프로필의 ID에 따라 Documents/Open Annihilation/Mods/
공개 전 확인 사항
- 프로필이 불러올 때와 똑같이 검증을 통과해야 합니다. 두 번 해석하며, 두 번째에는 패키지의 INI와 플레이어의 레지스트리 설정을 함께 씁니다.
- ASCII 대소문자만 다른 두 이름이 없고, 이름이 같은 파일과 폴더도 없습니다.
- version과 packaging.revision이 다른 바이트로 공개된 적이 없어야 합니다. 공개 스크립트가 이를 거부합니다.
- 지정한 수정 항목은 모두 이 Open Annihilation이 구현한 것이어야 합니다. 그렇지 않으면 라이브러리에 모드가 표시되지만 설치할 수 없습니다.