홈 › 모딩 정보 › 모드의 구조
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/에 설치됩니다. 같은 버전의 새 리비전은 기존 것을 교체하되 한 버전 전의 것을 .backup에 보관하고, 다른 버전은 Mods/-으로 나란히 설치될 수 있습니다. 무엇이든 쓰기 전에 모든 것을 검사하며, 어느 시점에 멈추더라도 폴더는 변경 전이나 변경 후 상태로 남습니다.

공개 전 확인 사항

  • 프로필이 불러올 때와 똑같이 검증을 통과해야 합니다. 두 번 해석하며, 두 번째에는 패키지의 INI와 플레이어의 레지스트리 설정을 함께 씁니다.
  • ASCII 대소문자만 다른 두 이름이 없고, 이름이 같은 파일과 폴더도 없습니다.
  • version과 packaging.revision이 다른 바이트로 공개된 적이 없어야 합니다. 공개 스크립트가 이를 거부합니다.
  • 지정한 수정 항목은 모두 이 Open Annihilation이 구현한 것이어야 합니다. 그렇지 않으면 라이브러리에 모드가 표시되지만 설치할 수 없습니다.