mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-06-27 20:08:13

문명 5/모딩

파일:상위 문서 아이콘.svg   상위 문서: 문명 5
||<tablewidth=100%><tablealign=center><tablebordercolor=#000,#fff><tablebgcolor=#000>
파일:civ5_logo.png
시드 마이어의
문명 5
||
<bgcolor=#ffffff,#191919>{{{#!wiki style="margin:5px 0px;"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: 0 0 -10px;"
<colcolor=#373a3c><colbgcolor=#ffdd55>



<colbgcolor=#ffeeaa,#554400>문명과 외교 <colbgcolor=#fff> 등장 문명 · 외교 · 도시국가 · 첩보 · 세계 의회
유닛 개요, 기타 유닛 · 비전투 · 위인 · 육군 · 해군 · 공군 · 고유 유닛 · 진급
자원 · 건물 지형 · 자원 · 시설 · 건물 · 불가사의 · 자연경관
내정 기술 · 사회 정책 · 종교 · 문화와 관광
기타 게임 설정 · 시나리오 · 도전과제 · 비판 ·
모드 및 모딩 모딩 · Community Patch Project (VP) · 모드 문명 · 모드 불가사의
커뮤니티 문명메트로폴리스 · 문명 마이너 갤러리 }}}}}}}}}



1. 개요2. 도움말
2.1. 기본적 문제
2.1.1. 문명이 안뜨거나 고유 유닛이 안나올 경우2.1.2. 건설 패널이 안 나올 경우2.1.3. 사회정책 UI가 뜨지 않을 경우2.1.4. 사회정책 UI의 버튼이 안 뜰 경우2.1.5. 맵이 안나오고 그냥 승리로 끝나는 경우2.1.6. MSB4018 / SevenZip Exception 오류
3. ModBuddy 이용법과 파일 양식
3.1. 모드 파일 연결
4. XML/SQL을 통한 데이터베이스 모딩
4.1. 문명 자체4.2. 지도자
4.2.1. Leader4.2.2. Leader_MajorCivApproachBiases4.2.3. Leader_MinorCivApproachBiases4.2.4. Leader_Flavors4.2.5. 예시 지도자4.2.6. 지도자 대사
4.3. 특성
4.3.1. Trait4.3.2. Trait_YieldChangesStrategicResources4.3.3. Trait_ImprovementYieldChanges4.3.4. Trait_SpecialistYieldChanges4.3.5. 예시 특성 1
4.4. 시설
4.4.1. Build
4.5. 건물
4.5.1. Buildings4.5.2. Building_AreaYieldModifiers4.5.3. Building_BuildingClassHappiness4.5.4. Building_BuildingClassYieldChanges4.5.5. Building_ClassesNeededInCity4.5.6. Building_FreeUnits4.5.7. Building_DomainFreeExperiences4.5.8. Building_DomainFreeExperiencePerGreatWork4.5.9. Building_DomainProductionModifiers4.5.10. Building_FreeSpecialistCounts4.5.11. Building_Flavors4.5.12. Building_GlobalYieldModifiers4.5.13. Building_HurryModifiers4.5.14. Building_LocalResourceAnds4.5.15. Building_LocalResourceOrs
4.6. 유닛4.7. 전문가4.8. 자연경관4.9. 자원
4.9.1. 그래픽 관련 텍스트 파일
4.10. 텍스트4.11. 승급4.12. 기술
4.12.1. 시대
4.13. 사회 정책
4.13.1. Policies4.13.2. Policy_TourismOnUnitCreation
4.14. 세계 대회
4.14.1. 프로젝트
4.15. 기타
4.15.1. Process4.15.2. Process_Flavor4.15.3. Process_ProductionYields
4.16. 종교
5. LUA
5.1. UI 모딩5.2. 이벤트와 판결 지원
6. 2D 이미지 그래픽/음향 추가7. 지도자 3d

1. 개요

문명 5의 모드랑 데이터에 대한 문서.

문명 5는 모듈화가 되어 있어 모딩이 매우 쉬운 축에 속한다. 모드 문명 문서에 가면 알겠지만 별의별 게 다 나온다. 문명 5의 모딩은 세 부분으로 나뉘어져 있는데, 데이터베이스 모딩, LUA 스크립트와 모델링, 텍스쳐 모딩이 있다. 데이터베이스의 경우 XML이나 SQL로 하며, LUA 스크립트는 말 그대로 LUA로 쓰며, 모델링의 경우 모델링 프로그램 + (텍스쳐를 위한) 이미지 에디터와 3자 파티 스크립트랑 공식 도구박스로 해결한다.

XML/SQL과 LUA로 모딩을 만드려면 스팀에서 문명 5 SDK를 받아서 ModBuddy를 돌리자. 이거 없이 순수히 텍스트 에디터로 모드를 만들 수 있기는 하지만 파일 임포트 같은 것을 수동으로 처리해야 하고 모드 요구사항/참조 같은 것을 더하는 데 매우 불편해서 그냥 이거 쓰는 게 낫다.

2. 도움말


ModBuddy는 컴파일러지만 자체적으로 XML이든 LUA든 신택스 같은 것을 점검하지 않아서 모드를 막상 시험하려 하면, 특히나 첫 작품일 경우 웬만해서는 오류가 쏟아져 나온다. 로깅을 키면 게임에서 무엇을 제대로 못 읽었는지 잡아준다. 먼저 로깅을 활성화하기 위해서는 문명 5 세팅 폴더에 들어가야 하는데, 윈7 기준으로 기본적으로 내 문서/내 게임들/Sid Meier's Civilization 5가 그 폴더다. 그 폴더 안에는 config.ini가 있는데, 여기서 바꿔야 할 것은

EnableTuner = 1 (FireTuner를 쓸 경우)

ValidateGameDatabase = 1

EnableLuaDebugLibrary = 1 (LUA 코딩을 쓰는 모드를 썼을 경우)

LoggingEnabled = 1

이 네 항목이다. 이것들을 게임 시작 전에 바꿔서 저장하면 된다. 이중 LoggingEnabled와 ValidateGameDatabase는 필수적이며, 오류가 나타났다 하면 폴더 안의 Log 폴더에서 Database.log를 확인하면 된다. 보통 제작자의 모드에 오류가 있으면 제작자가 만들 파일에 연결된 오류가 로그에 잡힌다. 이것에 있는 문제 덕에 문명이 제대로 돌아가지 않는게 십중팔구므로 아예 백업 config.ini 파일을 만들어서 빨리 Ctrl+CV를 할 수 있게 하자. LUA의 경우 위에 있는 코드에 오류가 있으면 밑에 있는 코드는 죄다 씹으므로, lua.log를 보아서 빨리 버그를 제거하자.(정확히는 Runtime Error일 경우이다. Syntax Error일 경우 그냥 코드 파일이 통째로 로드되지 않는다)

아이템 효과 테스팅 같은 것에 도움이 된다. 또한 더미 건물들 같은것도 체크하므로 더더욱 유용하다. 더미의 경우 구분이 쉽도록 따로 Description 항목에 키를 적은후에 Language_ko_KR (한국어 기준)에 Row Tag="(Description항목에 넣은 키)" 항목을 만들어서 이름을 넣으면 된다.

건물 클래스랑 건물 XML을 체크해라. 클래스 이름이 정확히 건물 BuildingClass 항목의 것이랑 동일해야하며, 클래스를 지정한 경우 그 클래스를 위한 건물이 있어야 한다. 없거나 틀리면 CTD.

2.1. 기본적 문제

2.1.1. 문명이 안뜨거나 고유 유닛이 안나올 경우

위에 있는 로깅을 킨 후 통상적으로 Sid Meier's Civilization V 폴더에 있는 Database.log를 찾아야 한다. 윈도우스 7 기준으로 내 문서 → My Games → Sid Meier's Civilization V → Logs 폴더로 들어가면 찾을 수 있다.

이것을 열어서 While executing이나 no such tables같은 항목이 나온 다음 줄에 제작한 모드 파일 이름이 있다면 거기에 문제가 있어서 파일에 있는 모든 내용이 통째로 읽히지 않으므로 꼼꼼히 점검해야 한다.

2.1.2. 건설 패널이 안 나올 경우

건설 패널을 열 수 없으면 모딩에 따라 다르다. 하지만 문제와 이에 따른 해법은

2.1.3. 사회정책 UI가 뜨지 않을 경우

2.1.4. 사회정책 UI의 버튼이 안 뜰 경우

Policies의 항목이 지워져서 그렇다.

Policies의 항목이 지워진 이후 다른 게 들어가면 해당 ID는 비고 그 후로부터 채워지는데, 문명 UI는 해당 ID에 항목이 없을때까지만 스캔한다. 즉, 그 공백을 인식하지 못하고 공백을 보고 바로 Policies 목록을 다 읽었다고 판단한다. 이렇기 때문에 Policies에 있는 항목은 Delete로 지워서는 안된다.[1]

2.1.5. 맵이 안나오고 그냥 승리로 끝나는 경우

스타팅 조건을 점검해라.

2.1.6. MSB4018 / SevenZip Exception 오류

스팀을 끈 뒤 Sid Meier's Civilization V SDK 폴더에 들어가서 Sid Meier's Civilization V SDK.exe 파일을 연 뒤 모드버디를 켜고 빌드를 실행하면 문제 없이 잘 된다. 단, 스팀 창작마당에 등록하기 위해서는 스팀에 접속한 뒤에 모드버디를 켜야 한다.

3. ModBuddy 이용법과 파일 양식

우선적으로 문명 5 SDK 메뉴에서 ModBuddy를 키면 비쥬얼 스튜디오 2010을 기반으로 하는 IDE가 뜬다. 새로운 프로젝트를 만드는 것은 그냥 File→New...→Project를 눌러 뜨는 창에서 Empty Mod를 선택해 주고 그 후에 텍스트를 영문으로 적당히 써주면 된다.

그 후 비쥬얼 스튜디오 형식의 솔루션이 뜨며, 그 후 프로젝트 이름에 오른쪽 클릭을 통해 파일이나 폴더를 추가하고 편집하면 된다.

3.1. 모드 파일 연결

그러나 그냥 파일만 다 쓰고 테스트 하려고 하면 아무것도 안뜨는데, 이유는 데이터베이스에 파일을 읽어 업데이트하지 않았기 때문이다. 이들 중 XML이나 SQL 파일들은 모조리 데이터베이스 업데이트 행동에 연결해야 하는데, 먼저 프로젝트 이름에 오른쪽 클릭을 하여 Property를 선택한다. 그 후 Action 탭에 가서 Add를 누른 후 Event에서는 OnModActivated, Action에서는 UpdateDatabase를 선택해주고 지도자 씬 파일을 제외한 XML파일들을 모조리 선택해서 이렇게 연결해주면 된다. 웬만한 LUA 코드의 경우 Content 탭에 가서 Add를 누른 후 파일에서 LUA 파일을 우선 선택한 후 Type에서 InGameUIAddin을 선택해주면 땡.

그러나 그게 끝이 아니다. 텍스쳐 파일과 음악의 경우 따로 손을 봐줘야 하는데, 솔루션 탐색기에서 .dds 파일이나 음악 파일을 선택한 후에 오른쪽에 보면 Property 탭이 있는데, 여기서 Misc 하위 항목에 Import int(o VFS) 항목에 True라고 설정해 주어야 한다.

4. XML/SQL을 통한 데이터베이스 모딩

여기서는 문명 5의 기본 데이터베이스에 추가함으로서 새로운 요소를 추가하거나 기존의 요소를 변경한다. 문명 5의 Asset 파일들은 XML로 되어 있어서 참조하기 쉬워서 XML을 중심으로 서술한다.

하지만 게임 자체는 XML을 SQL로 전환해서 읽는다고 한다.

4.1. 문명 자체

새로운 문명을 더하겠다면 기본적으로 선택할 문명을 위한 XML(이나 SQL) 파일을 만들고 특정 태그들을 추가해야 한다. XML파일 기준으로 우선적으로 Civilization 항목을 만들고 그 안에 Row 항목을 만든 후에 그 Row 하위 항목 안에서 이것들을 더해야 한다. 후술할 Row의 경우 모두 XML 파일 기준이다.

그 후에 추가적인 항목들을 만들어야 한다. 여기서는 볼드체는 (반)필수 항목. 주 항목 밑에 있는 항목들은 다 Row 하위 항목 안에서 쓰는 것이다. 밑의 항목들은 문명 고유 항목들에 대한 것으로서, 최소한 2개가 필요하다.
예시 문명
<GameData>
	<Civilizations>
		<Row>
			<Type>CIVILIZATION_KOREA</Type>
			<Description>TXT_KEY_CIV_KOREA_DESC</Description>
			<ShortDescription>TXT_KEY_CIV_KOREA_SHORT_DESC</ShortDescription>
			<Adjective>TXT_KEY_CIV_KOREA_ADJECTIVE</Adjective>
			<CivilopediaTag>TXT_KEY_CIV5_KOREA</CivilopediaTag>
			<DefaultPlayerColor>PLAYERCOLOR_KOREA</DefaultPlayerColor>
			<ArtDefineTag>ART_DEF_CIVILIZATION_KOREA</ArtDefineTag>
			<ArtStyleType>ARTSTYLE_ASIAN</ArtStyleType>
			<PortraitIndex>0</PortraitIndex>
			<IconAtlas>SEJONG_CIV_COLOR_ATLAS</IconAtlas>
			<AlphaIconAtlas>SEJONG_CIV_ALPHA_ATLAS</AlphaIconAtlas>
			<MapImage>MapKorea360x410.dds</MapImage>
			<ArtStyleSuffix>_ASIA</ArtStyleSuffix>
			<ArtStylePrefix>ASIAN </ArtStylePrefix>
			<DawnOfManQuote>TXT_KEY_CIV5_DAWN_KOREA_TEXT</DawnOfManQuote>
			<DawnOfManImage>DOM_SEJONG.dds</DawnOfManImage>
			<DawnOfManAudio>AS2D_DOM_SPEECH_KOREA</DawnOfManAudio>
		</Row>
	</Civilizations>
	<Civilization_CityNames>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_SEOUL</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_BUSAN</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_JEONJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_DAEGU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_PYONGYANG</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_KAESONG</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_SUWON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GWANGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GANGNEUNG</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_HAMHUNG</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_WONJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_ULSAN</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_CHANGWON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_ANDONG</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GONGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_HAEJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_CHEONGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_MOKPO</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_DONGDUCHEON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GEOJE</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_SUNCHEON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_JINJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_SANGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_RASON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GYEONGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_CHUNGJU</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_SACHEON</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_GIMJE</CityName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<CityName>TXT_KEY_CITY_NAME_ANJU</CityName>
		</Row>
	</Civilization_CityNames>
	<Civilization_FreeBuildingClasses>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<BuildingClassType>BUILDINGCLASS_PALACE</BuildingClassType>
		</Row>
	</Civilization_FreeBuildingClasses>
	<Civilization_FreeTechs>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<TechType>TECH_AGRICULTURE</TechType>
		</Row>
	</Civilization_FreeTechs>
	<Civilization_FreeUnits>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<UnitClassType>UNITCLASS_SETTLER</UnitClassType>
			<Count>1</Count>
			<UnitAIType>UNITAI_SETTLE</UnitAIType>
		</Row>
	</Civilization_FreeUnits>
	<Civilization_Leaders>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<LeaderheadType>LEADER_SEJONG</LeaderheadType>
		</Row>
	</Civilization_Leaders>
	<Civilization_UnitClassOverrides>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<UnitClassType>UNITCLASS_CARAVEL</UnitClassType>
			<UnitType>UNIT_KOREAN_TURTLE_SHIP</UnitType>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<UnitClassType>UNITCLASS_TREBUCHET</UnitClassType>
			<UnitType>UNIT_KOREAN_HWACHA</UnitType>
		</Row>
	</Civilization_UnitClassOverrides>
	<Civilization_Religions>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<ReligionType>RELIGION_CONFUCIANISM</ReligionType>
		</Row>
	</Civilization_Religions>
	<Civilization_SpyNames>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_0</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_1</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_2</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_3</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_4</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_5</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_6</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_7</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_8</SpyName>
		</Row>
		<Row>
			<CivilizationType>CIVILIZATION_KOREA</CivilizationType>
			<SpyName>TXT_KEY_SPY_NAME_KOREA_9</SpyName>
		</Row>
	</Civilization_SpyNames>
</GameData>

4.2. 지도자

대항목들이 5개로서, 각각 Leader, Leader_Traits, Leader_Flavors, Leader_MinorCivApproachBiases랑 Leader_MajorCivApproachBiases다.

4.2.1. Leader

항목: 지도자 자체를 추가하는 항목이다. Row 하위 항목은 지도자 하나당 한 개가 있으면 된다.

4.2.2. Leader_MajorCivApproachBiases

지도자의 타 문명을 대하는 태도에 영향을 끼치는 지수를 저장하는 항목이다. 위와 달리 밑의 항목마다 Row 하위 항목에 LeaderType과 Bias 치수와 같이 MajorCivApproachType 항목에 넣어야 한다.

4.2.3. Leader_MinorCivApproachBiases

지도자의 도시국가를 대하는 태도에 영향을 끼치는 지수를 저장하는 항목이다. 위의 MajorCivApproachBiases랑 동일하다. MajorCivApproachType게 MinorCivApproachType으로 바뀌지만.

4.2.4. Leader_Flavors

AI의 전반적인 운영 스타일에 영향을 끼치는 지수를 저장하는 항목. 여기도 역시 MajorCivApproach처럼 Row당 LeaderType, FlavorType, 그리고 Bias 항목이 종속되어 있다. 밑은 FlavorType 목록.

단, 주의해야 할 것은 이는 그냥 무늬일 뿐이며, 모드를 통해 새 유닛이나 건물같을 것을 만들면 이에 상응하는 Flavor 수치를 지정해야 한다. 그러므로 지상 유닛에게 FLAVOR_NAVAL을 높게 지정했으면 해상 문명이 이 유닛을 선호하게 된다.

4.2.5. 예시 지도자

<GameData>
	<Leaders>
		<Row>
			<Type>LEADER_SEJONG</Type>
			<Description>TXT_KEY_LEADER_SEJONG</Description>
			<Civilopedia>TXT_KEY_LEADER_SEJONG_PEDIA</Civilopedia>
			<CivilopediaTag>TXT_KEY_CIV5_SEJONG</CivilopediaTag>
			<ArtDefineTag>Korea_Sejong_Scene.xml</ArtDefineTag>
			<VictoryCompetitiveness>6</VictoryCompetitiveness>
			<WonderCompetitiveness>6</WonderCompetitiveness>
			<MinorCivCompetitiveness>4</MinorCivCompetitiveness>
			<Boldness>4</Boldness>
			<DiploBalance>6</DiploBalance>
			<WarmongerHate>4</WarmongerHate>
			<DenounceWillingness>4</DenounceWillingness>
			<DoFWillingness>7</DoFWillingness>
			<Loyalty>7</Loyalty>
			<Neediness>6</Neediness>
			<Forgiveness>7</Forgiveness>
			<Chattiness>4</Chattiness>
			<Meanness>4</Meanness>
			<PortraitIndex>0</PortraitIndex>
			<IconAtlas>SEJONG_LEADER_ATLAS</IconAtlas>
		</Row>
	</Leaders>
	<Leader_MajorCivApproachBiases>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_WAR</MajorCivApproachType>
			<Bias>4</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_HOSTILE</MajorCivApproachType>
			<Bias>3</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_DECEPTIVE</MajorCivApproachType>
			<Bias>4</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_GUARDED</MajorCivApproachType>
			<Bias>5</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_AFRAID</MajorCivApproachType>
			<Bias>7</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_FRIENDLY</MajorCivApproachType>
			<Bias>6</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MajorCivApproachType>MAJOR_CIV_APPROACH_NEUTRAL</MajorCivApproachType>
			<Bias>6</Bias>
		</Row>
	</Leader_MajorCivApproachBiases>
	<Leader_MinorCivApproachBiases>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MinorCivApproachType>MINOR_CIV_APPROACH_IGNORE</MinorCivApproachType>
			<Bias>6</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MinorCivApproachType>MINOR_CIV_APPROACH_FRIENDLY</MinorCivApproachType>
			<Bias>6</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MinorCivApproachType>MINOR_CIV_APPROACH_PROTECTIVE</MinorCivApproachType>
			<Bias>4</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MinorCivApproachType>MINOR_CIV_APPROACH_CONQUEST</MinorCivApproachType>
			<Bias>3</Bias>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<MinorCivApproachType>MINOR_CIV_APPROACH_BULLY</MinorCivApproachType>
			<Bias>7</Bias>
		</Row>
	</Leader_MinorCivApproachBiases>
	<Leader_Flavors>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_OFFENSE</FlavorType>
			<Flavor>4</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_DEFENSE</FlavorType>
			<Flavor>7</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_CITY_DEFENSE</FlavorType>
			<Flavor>6</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_MILITARY_TRAINING</FlavorType>
			<Flavor>4</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_RECON</FlavorType>
			<Flavor>3</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_RANGED</FlavorType>
			<Flavor>7</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_MOBILE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_NAVAL</FlavorType>
			<Flavor>7</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_NAVAL_RECON</FlavorType>
			<Flavor>4</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_NAVAL_GROWTH</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_NAVAL_TILE_IMPROVEMENT</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_AIR</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_EXPANSION</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_GROWTH</FlavorType>
			<Flavor>6</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_TILE_IMPROVEMENT</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_INFRASTRUCTURE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_PRODUCTION</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_GOLD</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_SCIENCE</FlavorType>
			<Flavor>8</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_CULTURE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_HAPPINESS</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_GREAT_PEOPLE</FlavorType>
			<Flavor>8</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_WONDER</FlavorType>
			<Flavor>6</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_RELIGION</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_DIPLOMACY</FlavorType>
			<Flavor>4</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_SPACESHIP</FlavorType>
			<Flavor>8</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_WATER_CONNECTION</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_NUKE</FlavorType>
			<Flavor>6</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_USE_NUKE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_ESPIONAGE</FlavorType>
			<Flavor>6</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_ANTIAIR</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_AIR_CARRIER</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_ARCHAEOLOGY</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_I_LAND_TRADE_ROUTE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_I_SEA_TRADE_ROUTE</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_I_TRADE_ORIGIN</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_I_TRADE_DESTINATION</FlavorType>
			<Flavor>5</Flavor>
		</Row>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<FlavorType>FLAVOR_AIRLIFT</FlavorType>
			<Flavor>5</Flavor>
		</Row>
	</Leader_Flavors>
	<Leader_Traits>
		<Row>
			<LeaderType>LEADER_SEJONG</LeaderType>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
		</Row>
	</Leader_Traits>
</GameData>

4.2.6. 지도자 대사

지도자 대사에 관여하는 항목은 2개 있다. DiplomacyResponses 항목과 직접적으로 출력될 텍스트를 저장할 Languages_(언어코드)항목이 있다. 후자는 텍스트 항목에 더 자세히 설명되며, DiplomacyResponses에서는 대략 이런 구조를 가지고 있다.
<DiplomacyResponses>
	<Row LeaderType="LEADER_SEJONG">
		<ResponseType>RESPONSE_FIRST_GREETING</ResponseType>
		<Response>TXT_KEY_LEADER_SEJONG_FIRSTGREETING%</Response>
		<Bias>1</Bias>
	</Row>
</DiplomacyResponses>

<Language_en_US>
	<Row Tag="TXT_KEY_LEADER_SEJONG_FIRSTGREETING_1>
		<Text>Welcome to the Joseon Court, friend.  I have done much to help my people - can you say the same?</Text>
	</Row>
	<Row Tag="TXT_KEY_LEADER_SEJONG_FIRSTGREETING_2>
		<Text>Greetings - I am Sejong of Korea.  Have you come seeking wisdom and enlightenment, enjoyed by many in my presence?</Text>
	</Row>
</Language_en_US>

<Language_ko_KR>
	<Row Tag="TXT_KEY_LEADER_SEJONG_FIRSTGREETING_1>
		<Text>조선에 온 것을 환영하노라.  짐은 민중을 위해 많은 일을 했느니라. 그대는 어떠한가?</Text>
	</Row>
	<Row Tag="TXT_KEY_LEADER_SEJONG_FIRSTGREETING_2>
		<Text>어서오게. 난 조선의 세종대왕이노라.  많은 이들이 짐의 왕국에서 누리고 있는 지혜와 깨우침을 찾아 이곳에 온 것인가?</Text>
	</Row>
</Language_ko_KR>


DiplomacyResponses안의 Row 항목 안의 부가 항목 설명

4.3. 특성

4.3.1. Trait

제일 기본적으로 필요한게 Traits 항목이다. 이게 바로 특성을 만드는 것으로, 어떤 특성들은 모두 LUA로 실행해서 껍데기로만 만드는 특성도 존재한다. Row 항목이 하나 있으며, (반)필수적인 것은 볼드체.

4.3.2. Trait_YieldChangesStrategicResources

특성을 지닌 문명의 영토 안의 전략 자원의 산출량을 조절한다.

4.3.3. Trait_ImprovementYieldChanges

특성을 지닌 문명이 소유하고 있는 시설의 산출량을 조절한다.

4.3.4. Trait_SpecialistYieldChanges

특성을 지닌 문명의 전문가의 산출량을 조절한다.

4.3.5. 예시 특성 1

<GameData>
	<!-- Table data -->
	<Traits>
		<Row>
			<Type>TRAIT_SCHOLARS_JADE_HALL</Type>
			<Description>TXT_KEY_TRAIT_SCHOLARS_JADE_HALL</Description>
			<ShortDescription>TXT_KEY_TRAIT_SCHOLARS_JADE_HALL_SHORT</ShortDescription>
			<TechBoostFromCapitalScienceBuildings>true</TechBoostFromCapitalScienceBuildings>
		</Row>
	</Traits>
	<Trait_ImprovementYieldChanges>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_ACADEMY</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_CUSTOMS_HOUSE</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_MANUFACTORY</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_CITADEL</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_LANDMARK</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<ImprovementType>IMPROVEMENT_HOLY_SITE</ImprovementType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
	</Trait_ImprovementYieldChanges>
	<Trait_SpecialistYieldChanges>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<SpecialistType>SPECIALIST_ARTIST</SpecialistType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<SpecialistType>SPECIALIST_SCIENTIST</SpecialistType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<SpecialistType>SPECIALIST_MERCHANT</SpecialistType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
		<Row>
			<TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
			<SpecialistType>SPECIALIST_ENGINEER</SpecialistType>
			<YieldType>YIELD_SCIENCE</YieldType>
			<Yield>2</Yield>
		</Row>
    		<Row>
     			 <TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
     			 <SpecialistType>SPECIALIST_WRITER</SpecialistType>
     			 <YieldType>YIELD_SCIENCE</YieldType>
     			 <Yield>2</Yield>
    		</Row>
   		 <Row>
    			  <TraitType>TRAIT_SCHOLARS_JADE_HALL</TraitType>
     			 <SpecialistType>SPECIALIST_MUSICIAN</SpecialistType>
    			  <YieldType>YIELD_SCIENCE</YieldType>
     			 <Yield>2</Yield>
   		 </Row>
	</Trait_SpecialistYieldChanges>
</GameData>

4.4. 시설

시설은 여러의 항목이 있다. 기본적인 시설 정의를 하는 Improvement 항목, 시설의 기본적 산출량을 지정하는 Improvement_Yields 항목, 시설 건설의 유효 지형을 지정하는 Improvement_ValidTerrains, 시설 건설의 유효 추가 지상 지형을 지정하는 Improvement_ValidFeatures, 유효 자원을 표시하는 Improvement_ResourceTypes, 자원 산출량을 조절하는 Improvement_ResourceType_Yields, 기술 해금시 산출량 변경을 조정하는 Improvement_TechYieldChanges, 시대마다 산출량 변경을 지정하는 Improvement_YieldPerEra, 담수 타일일 경우 변경 산출량을 지정하는 Improvement_TechFreshWaterYieldChanges등 많고, 건설 명령 버튼과 기본 건설 시간을 저장하는 Builds과 추가 지형에 대한 수식을 지정하는 BuildFeatures이 있다.

Improvement 항목

4.4.1. Build

시설 건설 명령에 상응하는 항목.

4.5. 건물

건물과 관련된 데이터는 BuildingClasses와 Buildings 2항목에서 정의가 되며, 그리고 Buildings 항목에 포함되어 있지 않는 효과들은 타 항목에서 정의가 된다. 다만 Buildings 항목 자체만은 새 건물을 넣을 때 필수적이다. BuildingClasses는 새 건물 종류를 정의하며, Buildings는 이에 종속된 건물 종류들을 정의한다. 예를 들어서 BuildingClasses의 BUILDINGCLASS_BANK의 경우 보통 은행인 BUILDING_BANK랑 페르시아 고유 건물인 BUILDING_SATRAPS_COURT라는 건물 Type들이 있다.

4.5.1. Buildings

Buildings 자체에 들어가있는 항목은 건물 종류 하나당 Row 태그가 필요하다. 진짜 많다

4.5.2. Building_AreaYieldModifiers

4.5.3. Building_BuildingClassHappiness

건물을 소유할 경우 제국 전역에 일정한 종류의 건물 당 (대체 고유 건물을 포함) 부여되는 지역 행복도.

4.5.4. Building_BuildingClassYieldChanges

건물을 소유할 경우 제국 전역에 일정한 종류의 건물 당 (대체 고유 건물을 포함) 부여되는 산출량.

4.5.5. Building_ClassesNeededInCity

이 건물을 짓는데 필요한 건물 종류.

4.5.6. Building_FreeUnits

건물 건설 시 주어지는 유닛.

4.5.7. Building_DomainFreeExperiences

건물이 있는 도시에서 해당 종류의 유닛 생성시 주어지는 경험치

4.5.8. Building_DomainFreeExperiencePerGreatWork

건물에 있는 걸작 당 주어지는 경험치

4.5.9. Building_DomainProductionModifiers

4.5.10. Building_FreeSpecialistCounts

4.5.11. Building_Flavors

건물에 대한 AI의 선호도

4.5.12. Building_GlobalYieldModifiers

전역 보정. 단, 신앙과 문화는 소수점이 적용되지 않아 효과가 없으며, 문화는 위 Building 태그의 GlobalCultureRateModifier을 써야 함.

4.5.13. Building_HurryModifiers

4.5.14. Building_LocalResourceAnds

건물 건설에 도시내에 개발되아야 하는 자원 종류들. 여기 있는 것은 모두 다 만족해야 건설 가능함.

4.5.15. Building_LocalResourceOrs

건물 건설에 도시내에 개발되아야 하는 자원 종류들. 여기 있는 것 중 하나만 만족해도 건설 가능함.

4.6. 유닛

4.7. 전문가

새로운 전문가를 정의하여 XML에서 기본적인 연결된 위인, 위인 점수와 산출량을 부여할 수 있다. 그 후의 기타 효과는 더미 건물과 LUA 코드로 해결해야 한다.

4.8. 자연경관

새로운 자연경관도 만들수 있다. XML에서는 Features 항목과 이에 종속된 주요 항목으로서 Feature_YieldChanges, Natural_Wonder_Placement이 있다. 다만, 이렇게 만든 자연경관은 ArtDefineTag에 무엇이 있는지 모조리 씹고 후지산에서 쓰이는 흰 눈이 쌓인 산 그래픽을 쓰게 되며, 후지산의 봉우리 구름은 없다.

4.9. 자원

자연경관처럼 새로운 자원도 만들 수 있다. 다만, 그래픽 (텍스쳐 수정만이라도 할 경우라면) gr2 파일을 수정해야 하기 때문에 골치아프고, 또한 ModNexus를 통하여 기존의 양식을 추출해 오는게 가장 편하다. 파일 자체는 게임데이터를 받아들이는 XML, 모델의 텍스쳐에 관여하는 fxsxml, 소리에 관여하는 ftsxml, 모델 자체인 gr2, 그리고 텍스쳐 파일인 dds가 있다.

다만, 여기서는 순수 XML, 그러니까 게임 효과만 고려한다면 Resources, Resource_YieldChanges, Resource_Flavors, Improvement_ResourceTypes, Resource_TerrainBooleans, Improvement_ResourceType_Yields, IconFontTextures, IconFontMapping, 그리고 ArtDefine_Landmarks이 있다.

Resources에 들어가는 항목 (자원 종류당 Row 항목 하나)

4.9.1. 그래픽 관련 텍스트 파일

아이콘이랑 자원 텍스쳐와 모델에 관련된 항목이다.

자원 특유의 아이콘을 만드는데 ggxml 파일 형태가 쓰이지만. 이는 그냥 보통 텍스트 에디터로 편집이 가능하다.

4.10. 텍스트

게임에서 직접 출력되는 설명 및 텍스트. 기본적으로 Language_en_US는 필수적이며, 그 후에 타 언어 태그를 넣어서 그 로칼을 지원하게 할 수 있다. 한국어의 경우 Language_ko_KR. 이 곳의 경우 Row 항목이 Tag="항목 이름"으로 뒤에 추가되어 있다. 예를 들어서 <Row Tag="TXT_KEY_FEATURE_LAKE_VICTORIA><Text>빅토리아 호수</Text></Row>의 경우 빅토리아 호수 자연경관에 마우스를 올리거나 문명 백과사전에서 표시되는 이름을 정의한다. 다만, Language_ko_KR 항목에서만 Row항목들을 만들 수는 없고, Language_en_US에 반드시 똑같은 Tag가 있는 항목을 만들어야지 한국어 쪽에서 인식을 한다(...) 더러운 영어제일주의

예를 들어 건물을 위해 한국어도 지원하겠다고 보자.

<-- 기본적인 포인터 -->
	<Traits>
		<Row>
			<Type>TRAIT_SCHOLARS_JADE_HALL</Type>
			<Description>TXT_KEY_TRAIT_SCHOLARS_JADE_HALL</Description>
			<ShortDescription>TXT_KEY_TRAIT_SCHOLARS_JADE_HALL_SHORT</ShortDescription>
			<TechBoostFromCapitalScienceBuildings>true</TechBoostFromCapitalScienceBuildings>
		</Row>
	</Traits>
<Buildings>
...
<Description>TXT_KEY_BUILDING_BARRACKS</Description>
...
</Buildings>

<-- 영문 텍스트 -->
<Language_en_US>
  <Row Tag="TXT_KEY_BUILDING_BARRACKS">
    <Text>Barracks</Text>
  </Row>
  <Row Tag="TXT_KEY_TRAIT_SCHOLARS_JADE_HALL">
    <Text>+2 [ICON_RESEARCH] science for all specialists and for all Great Person tile improvements. Receive a tech boost each time a scientific building/Wonder is built in the Korean capital.</Text>
  </Row>
  <Row Tag="TXT_KEY_TRAIT_SCHOLARS_JADE_HALL_SHORT">
    <Text>Scholars of the Jade Hall</Text>
  </Row>
</Language_en_US>

<-- 한글 텍스트 -->
<Language_ko_KR>
  <Row Tag="TXT_KEY_BUILDING_BARRACKS">
    <Text>병영</Text>
  </Row>
  <Row Tag="TXT_KEY_TRAIT_SCHOLARS_JADE_HALL">
    <Text>전문가와 위인 관련 타일 시설 당 [ICON_RESEARCH] 과학이 2만큼 증가합니다. 한국의 수도에 과학과 관련된 건물이나 불가사의가 건설될 때마다 과학이 증가합니다.</Text>
  </Row>
  <Row Tag="TXT_KEY_TRAIT_SCHOLARS_JADE_HALL_SHORT">
    <Text>집현전</Text>
  </Row>
</Language_ko_KR>


이렇게 보면 된다. 한 파일에 모든 텍스트에 관한 항목을 넣을 지 각각 항목에 (예: 유닛/건물 XML) 하나씩 넣을지는 자유. 나무위키에 있는 모드 문명은 대다수가 Language_ko_KR가 없어서 거의 다 영문으로 나온다. 그냥 영문으로 즐기는 자야 별 문제가 없겠지만 한국어판을 한다면 조금 깨기는 하다.

ICON_RESEARCH는 바로 과학 이모티콘이다. 모든 기본 아이콘들은 여기 참고 바람.

순수히 한글만 쓰고 Language_ko_KR 항목까지 만들기 귀찮으면 Language_en_US에 한국어 텍스트를 집어넣어도 문제 없다.

4.11. 승급


승급의 구조는 다음과 같다.(예 : 전격전)

<Row>

<Type>PROMOTION_BLITZ</Type>
<Description>TXT_KEY_PROMOTION_BLITZ</Description>
<Help>TXT_KEY_PROMOTION_BLITZ_HELP</Help>
<Sound>AS2D_IF_LEVELUP</Sound>
<PromotionPrereqOr1>PROMOTION_SHOCK_3</PromotionPrereqOr1>
<PromotionPrereqOr2>PROMOTION_DRILL_3</PromotionPrereqOr2>
<OrderPriority>7</OrderPriority>
<ExtraAttacks>1</ExtraAttacks>
<PortraitIndex>9</PortraitIndex>
<IconAtlas>PROMOTION_ATLAS</IconAtlas>
<PediaType>PEDIA_MELEE</PediaType>
<PediaEntry>TXT_KEY_PROMOTION_BLITZ</PediaEntry>

</Row>

이런 식으로 되어있다.

Type : 승급의 데이터 상 이름. 유닛이나 문명특성 등에 쓸 때 이걸 써야한다.
Description : 승급이 게임 내에서 보이는 문구
Help : 승급 관련 설명
Sound : 승급 얻을 때 나오는 소리인듯?
PromotionPrereqOr1,2,... : 승급을 얻기위해 미리 얻어야할 승급
OrderPriority : 승급의 우선순위. 정확하게 어떤 원리인지는 모르겠는데 즉시회복은 이 부분이 99로 되어있다.
ExtraAttacks : 승급의 하위 항목. 이 승급이 어떤 기능을 하는지를 말한다. 여기선 n회 공격할 수 있는 기능
PortraitIndex : 승급 그림의 번호. 여러 그림이 같이 있는 그림 파일에서 해당 승급 그림이 몇번째 그림인지 나타냄
IconAtlas : 승급 그림 파일
PediaType
PediaEntry

====승급 기능====

다음은 승급의 하위 항목들이다. 이것을 이용해서 새로운 승급을 만들어낼 수도 있다.

CannotBeChosen 참/거짓 : 레벨업으로 얻을 수 없다
LostWithUpgrade 참/거짓
InstaHeal 참/거짓 : 즉시회복
Leader 참/거짓
Blitz 참/거짓 : 쓰지 않음
Amphib 참/거짓
River 참/거짓
EnemyRoute 참/거짓
RivalTerritory 참/거짓
MustSetUpToRangedAttack 참/거짓
RangedSupportFire 참/거짓
CanMoveAfterAttacking 참/거짓 : 공격 후 이동 가능
AlwaysHeal 참/거짓
HealOutsideFriendly 참/거짓
HillsDoubleMove 참/거짓
RoughTerrainEndsTurn 참/거짓
IgnoreTerrainCost 참/거짓
HoveringUnit 참/거짓
FlatMovementCost 참/거짓
CanMoveImpassable 참/거짓
NoCapture 참/거짓
OnlyDefensive 참/거짓
NoDefensiveBonus 참/거짓
NukeImmune 참/거짓
HiddenNationality 참/거짓
AlwaysHostile 참/거짓
NoRevealMap 참/거짓
Recon 참/거짓
CanMoveAllTerrain 참/거짓
FreePillageMoves 참/거짓 : 행동력 소모 없이 약탈 가능
AirSweepCapable 참/거짓
AllowsEmbarkation 참/거짓
EmbarkedNotCivilian 참/거짓
EmbarkedAllWater 참/거짓
HealIfDestroyExcludesBarbarians 참/거짓
RangeAttackIgnoreLOS 참/거짓
RangedAttackModifier 정수값
InterceptionCombatModifier 정수값
InterceptionDefenseDamageModifier 정수값
AirSweepCombatModifier 정수값
ExtraAttacks 정수값
ExtraNavalMovement 정수값
VisibilityChange 정수값
MovesChange 정수값
MoveDiscountChange 정수값
RangeChange 정수값
InterceptChanceChange 정수값
NumInterceptionChange 정수값
EvasionChange 정수값
CargoChange 정수값
EnemyHealChange 정수값
NeutralHealChange 정수값
FriendlyHealChange 정수값
SameTileHealChange 정수값
AdjacentTileHealChange 정수값
EnemyDamageChance 정수값
NeutralDamageChance 정수값
CombatPercent 정수값
CityAttack 정수값
CityDefense 정수값
RangedDefenseMod 정수값
HillsAttack 정수값
HillsDefense 정수값
OpenAttack 정수값 : 개방지역 공격력 증가
OpenRangedAttackMod 정수값
OpenDefense 정수값
RoughAttack 정수값
RoughRangedAttackMod 정수값
RoughDefense 정수값
AttackFortifiedMod 정수값
AttackWoundedMod 정수값
NearbyEnemyCombatMod 정수값
NearbyEnemyCombatRange 정수값
UpgradeDiscount 정수값
ExperiencePercent 정수값
AdjacentMod 정수값
AttackMod 정수값
DefenseMod 정수값
DropRange 정수값
GreatGeneral 참/거짓
GreatGeneralModifier 정수값
FriendlyLandsModifier 정수값
FriendlyLandsAttackModifier 정수값
OutsideFriendlyLandsModifier 정수값
HPHealedIfDestroyEnemy 정수값
ExtraWithdrawal 정수값
EmbarkExtraVisibility 정수값

====예시 승급====

-<GameData>


-<UnitPromotions>


-<Row>

<Type>PROMOTION_SNIPER_ELITE</Type>
<Description>TXT_KEY_PROMOTION_SNIPER_ELITE</Description>
<Help>TXT_KEY_PROMOTION_SNIPER_ELITE_HELP</Help>
<Sound>AS2D_IF_LEVELUP</Sound>
<OrderPriority>2</OrderPriority>
<CannotBeChosen>true</CannotBeChosen>
<CanMoveImpassable>true</CanMoveImpassable>
<RangeChange>9</RangeChange>
<FlatMovementCost>true</FlatMovementCost>
<VisibilityChange>3</VisibilityChange>
<OpenRangedAttackMod>200</OpenRangedAttackMod>
<RoughRangedAttackMod>100</RoughRangedAttackMod>
<PortraitIndex>23</PortraitIndex>
<IconAtlas>PROMOTION_ATLAS</IconAtlas>
<PediaType>PEDIA_HEAL</PediaType>
<PediaEntry>TXT_KEY_PROMOTION_SURVIVALISM_1</PediaEntry>

</Row>

</UnitPromotions>


<UnitPromotions_UnitCombats>

<Row>

<PromotionType>PROMOTION_SNIPER_ELITE</PromotionType>
<UnitCombatType>UNITCOMBAT_ARCHER</UnitCombatType>

</Row>
<Row>

<PromotionType>PROMOTION_SNIPER_ELITE</PromotionType>
<UnitCombatType>UNITCOMBAT_GUN</UnitCombatType>

</Row>

</UnitPromotions_UnitCombats>


<Language_ko_KR>


<Row Tag="TXT_KEY_PROMOTION_SNIPER_ELITE">
<Text>스나이퍼 엘리트</Text>
</Row>

<Row Tag="TXT_KEY_PROMOTION_SNIPER_ELITE_HELP">
<Text>공격범위+9, 시야+3, 개방지역 대상 데미지 +200%, 험지 대상 데미지 + 100%, 모든타일 이동력 소모 동일</Text>
</Row>

</Language_ko_KR>

</GameData>

UnitPromotions_UnitCombats는 어떤 병종에게 해당 승급을 부여할 지 정하는 부분이다. UnitCombats는 UnitClasses와는 다르다.

4.12. 기술

4.12.1. 시대

새 시대를 만드는 것

이에 상응하는 이미지를 넣고 싶으면 NewEraPopup.lua 파일을 덮어 씌우는 파일을 만들어야 한다. 그렇지 않으면 새 시대가 뜰 때 가장 마지막에 뜬 이미지가 뜨거나, 게임 로드 후 처음으로 뜨는 팝업이라면 중세시대 이미지가 뜬다.

만드는 방법은 Era 항목을 만든 뒤, 원하는 수의 시대 만큼의 Row 태그를 넣은 뒤 정보를 삽입하면 된다.

4.13. 사회 정책

사회 정책을 새로이 만들거나 수정이 가능하다.

사회 정책으로 건물이나 종특에 있는 XML 항목으로 구현이 어려우나 정책으로 구현이 쉽게 가능하면 쓰는 경우가 있으며, 또한 정책 트리에 새로운 정책을 더하는 것도 가능하다, 단, 사회 정책 UI가 9개의 트리(이념 추가 10개)로만 구성되어 있어서 UI를 만지지 않는 이상 새로운 트리를 넣을 수 없으며, 이념도 UI에 관여하는 LUA를 만져야 하며, AI는 추가적인 이념을 선택하지 않는다.

4.13.1. Policies

4.13.2. Policy_TourismOnUnitCreation

4.14. 세계 대회

새로운 (시대로 인해) 세계 대회 종류는 LeagueSpecialSession, 안건 자체는 Resolutions, 그리고 대업의 경우 LeagueProject와 이에 대한 보상은 LeagueProjectRewards에서 설정할 수 있다.

예를 들어 새로운 시대를 만들어서 새로운 대회를 만들고 싶다면 대략
<GameData>
  <Row>
    <Type>LEAGUE_SPECIAL_SESSION_START_INTERNATIONAL_PROTOCOLS</Type>
    <Description>TXT_KEY_LEAGUE_SPECIAL_SESSION_START_INTERNATIONAL_PROTOCOLS</Description>
    <Help>TXT_KEY_LEAGUE_SPECIAL_SESSION_START_INTERNATIONAL_PROTOCOLS_HELP</Help>
    <SessionSplashImage>Victory_Cultural.dds</SessionSplashImage>
    <EraTrigger>ERA_FUTURE</EraTrigger>
    <ImmediateProposal>RESOLUTION_CHANGE_LEAGUE_HOST</ImmediateProposal>
    <RecurringProposal>RESOLUTION_DIPLOMATIC_VICTORY</RecurringProposal>
    <TurnsBetweenSessions>5</TurnsBetweenSessions>
    <CivDelegates>6</CivDelegates>
    <HostDelegates>6</HostDelegates>
    <CityStateDelegates>2</CityStateDelegates>
    <UnitedNations>true</UnitedNations>
  </Row>
</GameData>


이렇게 해주면 된다. UnitedNation 태그의 경우 UnitedNation과 관련된 불가사의나 건물을 지으면 자동적으로 해금된다는 뜻이지만, 모드 없이는 국제 연합 불가사의가 없으므로 무시된다. 한편, 게임적으로 중요한 것은

4.14.1. 프로젝트

프로젝트를 만들려면 우선적으로 이를 해금하는 Resolutions, 프로젝트를 정의하는 LeagueProject, 그리고 이에 상응하는 보상을 나열하는 LeagueProjectRewards, 그리고 Process 항목을 만져야 한다.

해금하는 안건의 예
<GameData>
  <Resolutions>
    <Row>
      <Type>RESOLUTION_LARGE_HADRON_COLLIDER</Type>
      <Description>TXT_KEY_RESOLUTION_LARGE_HADRON_COLLIDER</Description>
      <Help>TXT_KEY_RESOLUTION_LARGE_HADRON_COLLIDER_HELP</Help>
      <VoterDecision>RESOLUTION_DECISION_YES_OR_NO</VoterDecision>
      <ProposerDecision>RESOLUTION_DECISION_NONE</ProposerDecision>
      <TechPrereqAnyMember>TECH_PARTICLE_PHYSICS</TechPrereqAnyMember>
      <LeagueProjectEnabled>LEAGUE_PROJECT_LARGE_HADRON_COLLIDER</LeagueProjectEnabled>
    </Row>
  </Resolutions>
</GameData>

여기서 중요한 것은 LeagueProjectEnabled다.

프로젝트 자체를 만들려면
<GameData>
  <LeagueProjects>
    <Row>
      <Type>LEAGUE_PROJECT_LARGE_HADRON_COLLIDER</Type>
      <Description>TXT_KEY_LEAGUE_PROJECT_LARGE_HADRON_COLLIDER</Description>
      <Help>TXT_KEY_LEAGUE_PROJECT_LARGE_HADRON_COLLIDER_SPLASH</Help>
      <ProjectSplashImage>Large_Hadron_Collider_project.dds</ProjectSplashImage>
      <Process>PROCESS_LARGE_HADRON_COLLIDER</Process>
      <CostPerPlayer>1100</CostPerPlayer>
      <RewardTier1>LEAGUE_PROJECT_REWARD_LARGE_HADRON_COLLIDER_1</RewardTier1>
      <RewardTier2>LEAGUE_PROJECT_REWARD_LARGE_HADRON_COLLIDER_2</RewardTier2>
      <RewardTier3>LEAGUE_PROJECT_REWARD_LARGE_HADRON_COLLIDER_3</RewardTier3>
      <PortraitIndex>0</PortraitIndex>
      <IconAtlas>INTL_PROJECT_ATLAS_EXP2</IconAtlas>
    </Row>
  </LeagueProjects>
</GameData>

이렇게 해주면 된다. 다만 보상 레벨은 직접 지정할 수 없으며, RewardTier1은 항상 CostPerPlayer의 반, RewardTier2는 CostPerPlayer, 그리고 RewardTier3는 최대 공헌자에게 주어진다. CostPerPlayer는 문명당 필요한 생산. 중요한 것은 Process인데 이를 지정하고 Process 항목에 이에 상응하는 건설작업을 선택하지 않으면 교육이나 길드가 해금하는 부, 연구 같은 기타 항목에 있는 것이 해금될 경우 건설 패널이 뜨지 않는다.

4.15. 기타

특수한 능력들, 예를 들어 세계 대회에러 통과한 프로젝트나 부같은 것은 Process 항목에 포함되어 있다.

4.15.1. Process

4.15.2. Process_Flavor

Flavor가 들어간게 다 그렇듯 AI가 이것을 얼마나 선호하는지를 지정한다.

4.15.3. Process_ProductionYields

4.16. 종교

교리의 경우 Belief 항목에서 정의가 된다.

예시 교리들
<GameData>
  <Beliefs>
  <Row>
    <Type>BELIEF_LIFEGIVER</Type>
    <Description>TXT_KEY_BELIEF_LIFEGIVER</Description>
    <ShortDescription>TXT_KEY_BELIEF_LIFEGIVER_SHORT</ShortDescription>
    <Pantheon>true</Pantheon>
  </Row>
  <Row>
    <Type>BELIEF_SANCTUARY</Type>
    <Description>TXT_KEY_BELIEF_SANCTUARY</Description>
    <ShortDescription>TXT_KEY_BELIEF_SANCTUARY_SHORT</ShortDescription>
    <Founder>true</Founder>
  </Row>
  <Row>
    <Type>BELIEF_TECHPRIEST</Type>
    <Description>TXT_KEY_BELIEF_TECHPRIEST</Description>
    <ShortDescription>TXT_KEY_BELIEF_TECHPRIEST_SHORT</ShortDescription>
    <Follower>true</Follower>
  </Row>
  </Beliefs>
  <Belief_FeatureYieldChanges>
    <Row>
      <BeliefType>BELIEF_LIFEGIVER</BeliefType>
      <FeatureType>FEATURE_OASIS</FeatureType>
      <YieldType>YIELD_CULTURE</YieldType>
      <Yield>2</Yield>
    </Row>
    <Row>
      <BeliefType>BELIEF_LIFEGIVER</BeliefType>
      <FeatureType>FEATURE_OASIS</FeatureType>
      <YieldType>YIELD_FAITH</YieldType>
      <Yield>2</Yield>
    </Row>
    <Row>
      <BeliefType>BELIEF_LIFEGIVER</BeliefType>
      <FeatureType>FEATURE_OASIS</FeatureType>
      <YieldType>YIELD_FOOD</YieldType>
      <Yield>1</Yield>
    </Row>
  </Belief_FeatureYieldChanges>
  <Belief_BuildingClassYieldChanges>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_TEMPLE</BuildingClassType>
      <YieldType>YIELD_SCIENCE</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_TEMPLE</BuildingClassType>
      <YieldType>YIELD_PRODUCTION</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_TEMPLE</BuildingClassType>
      <YieldType>YIELD_FAITH</YieldType>
      <YieldChange>1</YieldChange>
    </Row>

    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_UNIVERSITY</BuildingClassType>
      <YieldType>YIELD_SCIENCE</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_UNIVERSITY</BuildingClassType>
      <YieldType>YIELD_PRODUCTION</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_UNIVERSITY</BuildingClassType>
      <YieldType>YIELD_FAITH</YieldType>
      <YieldChange>1</YieldChange>
    </Row>

    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_WORKSHOP</BuildingClassType>
      <YieldType>YIELD_SCIENCE</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_WORKSHOP</BuildingClassType>
      <YieldType>YIELD_PRODUCTION</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_WORKSHOP</BuildingClassType>
      <YieldType>YIELD_FAITH</YieldType>
      <YieldChange>1</YieldChange>
    </Row>

    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_FACTORY</BuildingClassType>
      <YieldType>YIELD_SCIENCE</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_FACTORY</BuildingClassType>
      <YieldType>YIELD_PRODUCTION</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
    <Row>
      <BeliefType>BELIEF_TECHPRIEST</BeliefType>
      <BuildingClassType>BUILDINGCLASS_FACTORY</BuildingClassType>
      <YieldType>YIELD_FAITH</YieldType>
      <YieldChange>1</YieldChange>
    </Row>
  </Belief_BuildingClassYieldChanges>

  <Belief_HolyCityYieldChanges>
    <Row>
      <BeliefType>BELIEF_SANCTUARY</BeliefType>
      <YieldType>YIELD_FAITH</YieldType>
      <Yield>4</Yield>
    </Row>
    <Row>
      <BeliefType>BELIEF_SANCTUARY</BeliefType>
      <YieldType>YIELD_CULTURE</YieldType>
      <Yield>4</Yield>
    </Row>
  </Belief_HolyCityYieldChanges>
</GameData>


예시 교리들은
참고로 효과들의 적용 대상은 교리의 종류가 아닌 효과 종류에 따른다. 예를 들어 신앙으로 건물을 해금하는 Belief_BuildingClassFaithPurchase의 경우 어떠한 교리이든 창시자가 아닐지라도 도시가 종교를 믿으면 이 효과를 받는다. 이로서 예수회 교단 개혁 교리의 경우 타 문명의 도시에서도 건물 구입이 가능해진다. 향상 교리를 만들고 싶을 경우 교리에 <Enhancer>true</Enhancer>을 붙이면 되며, 개혁 교리는 <Reformation>true</Reformation>을 붙이면 된다.

5. LUA

자작 UI 추가/변경점을 만들거나 대화창 생성, 아니면 XML만으로 구현 불가능한 게임 효과를 구현하는데 쓰인다.

기본적인 양식은 function을 만들어 게임의 특정 이벤트에 붙이는 것. 이 중 제일 기본적인 이벤트는 GameEvents.PlayerDoTurn으로서, 거기에 function을 붙이면 된다.

더 자세한 내용은 모디키 문서에서 보면 된다. 다만, 효과는 설명하지는 않는다.

예시 LUA
function createGreatEngineer(iPlayer)
    local player = Players[iPlayer]
    if (player:GetCivilizationType() == GameInfoTypes["CIVILIZATION_SAMPLE_CIV"] and player:IsAlive()) then
        local proteuousa = player:GetCapitalCity()
        player:InitUnit(GameInfoTypes["UNIT_ENGINEER"], proteuousa:GetX(), proteuousa:GetY())
    end
end

GameEvents.PlayerDoTurn.Add(createGreatEngineer)

이 LUA 코드는 CIVILIZATION_SAMPLE_CIV라고 등록되어 있는 문명의 턴이 시작될 때마다 그 문명을 위해 수도에서 위대한 기술자를 생성하는 코드다.

LUA의 용도 중 하나가 문명 특성인 경우가 많은데, 이런 경우에는 문명이 있을 때만 이벤트에 효과를 링크 시켜 최적화 시킬 수 있다.

예시 LUA
for iPlayer = 0, GameDefines.MAX_MAJOR_CIVS-1, 1 do
	local paichnides = Players[iPlayer]
	
	if paichnides:GetCivilizationType() == GameInfoTypes["CIVILIZATION_KOREA"] then
		--Players[Game.GetActivePlayer()]:AddNotification(NotificationTypes.NOTIFICATION_GENERIC, "DETECTED", "MUH PLAYA")
		GameEvents.PlayerDoTurn.Add(OnTurnSpecialistsCheck)
		GameEvents.PlayerDoTurn.Add(GiveFreeGreatPerson)
		GameEvents.PlayerDoTurn.Add(PhrourionUpdate)
		paichnides:SetHasPolicy(GameInfoTypes["POLICY_KOREA_GREAT_PEOPLE_PENALTY"], true)
	end
end

여기서 GameEvents.x는 모두 효과가 들어 있는 함수를 이벤트에 연결시키는 것이다. 위의 for 루프는 플레이어들을 검색해 밑의 if에 있는 문명중 CIVILIZATION_KOREA이라는 Type의 문명이 있으면 돌아가라는 뜻.

대화창의 경우 대화창 생김새 자체는 XML에서 짜지만, 효과와 대화창 생성은 LUA쪽에서 담당한다.

5.1. UI 모딩

UI 모드를 만들려면 우선적으로 XML에서 양식을 짜고, 효과와 대화창 생성은 LUA쪽에서 담당한다. 하지만, 이것이 게임에서 정상적으로 작동하게 하려면 XML과 LUA 파일의 이름이 같아야 하며, 동일한 폴더에 있어야 한다. 이 후에 Property에 가서 Content 탭을 누른후 이 중 하나를 선택하고, 도시 UI같은 것을 변경하지 않는 기본적인 UI 대화창일 경우 InGameUIAddin을 선택하면 된다.

5.2. 이벤트와 판결 지원

중요한 팁으로 디버깅 할때 효과인 DoFunc와 조건인 CanFunc안의 내용물은 로깅으로 잡아내지를 않는다. 그렇기 때문에 문제가 생겼으면 반드시 그 안에 있는 내용물을 밖으로 집어내서 디버깅을 해야 한다.

6. 2D 이미지 그래픽/음향 추가

준비하는 것과 모드에 추가하는 것이 따로 있다. 2D 이미지의 경우 문명은 DDS 파일만을 취급하는데, 공짜로 하려면 GIMP를 받은 후에 DDS 플러그인을 받아 쓰면 된다. 이미지를 다 준비하고 DDS 형식으로 내보내려면 최신 버전의 GIMP를 갖고 있을 경우 Export/내보내기를 누른 후에 뜨는 메뉴에서 끝 확장자를 .dds로 하면 끝이다. 압축은 안 하는게 그냥 편하고 밉맵은 꺼야한다.

이렇게 다 되었으면 ModBuddy에서 원하는 디렉토리에 오른쪽 클릭을 한 후에 Add → Existing Item을 뽑아 원하는 것을 넣으면 된다. 그 후에 그 파일을 클릭해서 기본적으로 오른쪽에 있는 Property 바에 있는 항목중 Import into VFS라는 항목이 있는데, 2D 이미지, 음향, 그리고 리더 씬 XML파일의 경우 이것을 True로 세팅해야 한다.

7. 지도자 3d

되기는 되지만, 문제는 fxsxml이라는 특수 3d 파일로만 로딩이 가능하기 때문에 매우 귀찮고, 스팀에서 받을 수 있는 SDK에서 제공되는 Nexus는 현재 이상해서 옛 버전을 써서 3d 모델을 전환해야 한다. 자원이나 유닛도 같은 이치. 이래서 모드 문명의 9할 이상이 그냥 2d 그림으로 땡치고 공식 시나리오의 경우에도 기존의 3d 모델을 쓰거나[5] 그냥 그림으로 끝낸다.[6]

[1] 린큐모드 같이 사회정책 트리에 추가 정책을 추가하는 모드라면 이 문제에 걸릴 수 있으며, 이런 사회정책 트리에 항목을 추가하는 내용이 든 모드가 Policies의 항목을 지우는 모드 뒤에 있으면 이렇게 된다. Policies의 내용물을 지우는 모드 중 하나는 카후우 치노의 토끼집이기 때문에 주의해야 한다. [2] 훈족의 경우 도시 이름이 아틸라 궁정밖에 없어서 훈족이 이렇다. [3] 개척자 유닛을 생산할 때에는 인구수 증가에 기여하는 잉여 식량의 절반만큼이 생산력으로 치환돼서 도시의 성장률은 정체로 바뀌게 된다. 즉, 이 기능을 'true'상태로 해놓으면 그 유닛을 생산할 때에도 도시의 인구수 증가에 영향을 미치게 되는 것. [4] 빠름 .666666, 표준 1, 느림 1.5, 매우 느림 3 [5] 예: 임진왜란, 아프리카 쟁탈전 [6] 예: 산업시대의 제국