모딩 정보
맵 팩은 .oamap 파일 하나, 모드는 .oamod 파일 하나, 뮤테이터는 .oamut 파일 하나, 브레인은 .oabrain 파일 하나이며, 모두 최상위에 매니페스트가 있는 zip입니다. 게임은 매니페스트를 검증하고, 패키지를 ID 기준으로 설치하며, 선언된 규칙대로 플레이합니다. 이 가이드는 폴더 하나에서 목록 릴리스까지 안내하며, 각 장은 엔진 문서에서 그 장이 요약한 표준으로 연결됩니다.
폴더에서 플레이어의 게임까지대화형 흐름도
맵 팩의 구조
.oamap zip, oamap.yaml 매니페스트, 패커가 쓰는 맵 인덱스, 그리고 맵의 크기와 지형지물로 게임에 맞는지 정하는 방식.
GitHub ·docs/maps/oamap-standard.md02모드의 구조
.oamod zip과 프로필 oamod.yaml: 식별 정보, 레이아웃, 제한, 데이터 키, 스크립트 확장, 프로필이 켜는 표준 수정 항목.
GitHub ·docs/mods/oamod-standard.md03뮤테이터 만들기
기본 게임이나 어떤 모드 위에든 덧씌우는 작은 .oamut: 폴더, 매니페스트, mutate가 돌려주는 계획, 옵션, 샌드박스, 여러 개를 쌓을 때의 적용 순서.
GitHub ·docs/mutators/oamut-standard.md04Lua 예제
실제 패키지에서 가져온 작동하는 스크립트 6개: 규칙 하나, 상한이 있는 배율, 진영별 규칙, 게임을 거부할 수 있는 units 훅, features 훅, 레이어로 쌓은 폴더를 쓰는 files 계획.
GitHub ·docs/mutators/oamut-standard.md#61-the-lua-forms05구형 뮤테이터 이식하기
KroggyComm 1.1을 아카이브에서 패키지로 옮기기, 그리고 TA: Mutation 규칙 파일을 sm으로 유지하거나 Lua로 다시 쓰기.
GitHub ·docs/mutators/authoring.md#15-importing-a-ta-mutation-mutator06확인, 패키징, 공개
oa-tool mutator check와 pack, 시험 실행, 목록 페이지에 표시되는 내용, 아이콘, 그리고 Core Prime에 패키지를 제출하는 방법.
GitHub ·docs/mutators/authoring.md#1-a-first-mutator07브레인 만들기
컴퓨터 자리 하나를 플레이하는 .oabrain: 폴더, 모든 매니페스트 키, 태그, 레벨, 전체 시야, 스크립트가 실행되는 곳, 예산, 그리고 중단될 때 일어나는 일.
GitHub ·docs/brains/oabrain-standard.md08브레인의 Lua
Steady Commander의 매니페스트와 스크립트, 훅, 브레인이 알 수 있는 것과 할 수 있는 것, 숫자, 난수, 타이머, 채팅.
GitHub ·docs/brains/oabrain-standard.md#7-what-a-brain-may-know09실제 예제: Classic
Lua로 쓴 기본 제공 컴퓨터 플레이어: 파일, 작업 테이블, 작업 하나, 특이 동작 주석, 엔진에 남는 것, 그리고 같은 명령을 내린다는 것을 검증하는 방법.
GitHub ·docs/brains/authoring.md#13-classic-a-walkthrough10학습된 네트워크
브레인이 .oann을 담는 이유, 정수 연산, 레이어, 실행하기, oa-tool brain net, 제한, 라이브러리에 표시되는 내용.
GitHub ·docs/brains/oabrain-standard.md#9-neural-networks11브레인 확인, 패키징, 공개
oa-tool brain pack과 check, 헤드리스 경기와 트레이스, 라이브러리의 확인과 자리 로그, 목록의 oabrain 종류, 그리고 Core Prime에 패키지를 제출하는 방법.
GitHub ·docs/brains/authoring.md#11-testing12표준 수정 항목
프로필이 켤 수 있는 문서화된 규칙과 각각의 키, 값, 그 규칙이 비롯된 동작. 시뮬레이션 수정 항목은 플레이어 사이에 일치해야 합니다.
GitHub ·docs/mods/standard-hacks13스크립트 확장
프로필이 모드의 유닛 스크립트에 줄 수 있는 값(유닛의 처치 수, 소유자의 동맹 등)과 COB 스크립트가 각 값을 읽는 방법.
GitHub ·docs/mods/script-extensions14버전과 릴리스
버전은 자유 텍스트이며 순서를 따지지 않습니다. packaging.revision은 다시 패키징할 때마다 올라가고, 목록은 릴리스에 번호를 매깁니다. 같은 버전과 리비전을 다른 바이트로 다시 쓰지 마세요.
GitHub ·docs/mods/oamod-standard.md#47-catalogue-releases15Core Prime에 공개하기
패키지 확인, 콘텐츠 라이브러리에 제출하기, 릴리스가 목록과 모든 플레이어의 라이브러리에 나타나는 방식, 직접 저장소를 운영하는 방법.
GitHub ·docs/registries빠른 시작: 맵 팩
# 폴더 하나에 맵을 넣고, 최상위에 매니페스트를 둡니다 my-maps/ oamap.yaml Ridge.tnt Ridge.ota Long Lakes.tnt Long Lakes.ota # oamap.yaml oamap: 1 id: my-maps name: My Maps version: "1.0" author: {name: A. Mapper} packaging: {revision: 1, date: 2026-10-18, packager: A. Mapper} # 검증하고 패키징합니다. 인덱스는 자동으로 작성됩니다 $ oa-tool pack my-maps/ -o my-maps.oamap
빠른 시작: 모드
# 유닛 제한을 늘리고 공유 규칙 두 개를 켜는 모드 oamod: 1 id: small-mod name: Small Mod version: "1.0" author: {name: A. Modder} packaging: {revision: 1, date: 2026-10-04, packager: A. Modder} limits: units-per-player: {default: 500, max: 1000} hacks: units.id-reuse-delay: true economy.deterministic-wind: true # 파일에 쓰지 않은 것은 모두 3.1c대로 플레이됩니다 $ oa-tool pack small-mod/ -o small-mod.oamod
빠른 시작: 뮤테이터
# Drinken의 Commander Radar: 폴더 하나, 최상위에 매니페스트 commander-radar/ oamut.yaml mutator.lua # mutator.lua: 규칙 하나. radar 옵션이 거리를 정합니다 function mutate(ctx) local distance = ctx.options.radar == "none" and 0 or 2880 return { rules = { where { commander = 1, bmcode = 1 }:change { radardistance = set(distance), }, }, } end # 폴더 밖에서 패키징한 다음 .oamut 파일을 확인합니다 $ oa-tool mutator pack commander-radar $ oa-tool mutator check commander-radar-1.oamut
빠른 시작: 브레인
# Steady Commander: 폴더 하나, 최상위에 매니페스트 steady-commander/ oabrain.yaml brain.lua # oabrain.yaml oabrain: 1 id: steady-commander name: Steady Commander version: "1.0" author: name: Ridge Workshop description: "Builds a little economy, then a factory, and sends a squad when it is ready." tags: - economy - teaching works-with: - "*" # 폴더를 패키징한 다음 게임에 대고 .oabrain 파일을 확인합니다 $ build/oa-tool brain pack brains/examples/steady-commander --out /tmp/brain-scratch/steady-commander.oabrain $ build/oa-tool brain check /tmp/brain-scratch/steady-commander.oabrain --game-dir "$OA_GAME_DIR"