싱글/멀티 구별없이 모든 미션에 적용되는 부분이고 활용되는 부분이기 때문에 꼭 배워둬야 할 부분이라고 생각된다.
이와 이어지는 Dialog부분은 이어서 다룰 예정이다.
Description.ext는 미션의 최상위폴더에 존재하는 미션에 대한 설정을 담당하는 파일이다. config.cpp 스트럭처를 유지하더라도 많은 하위 클래스들이 제약을 받고, CfgVehicles같은 많은 것들이 작동하지 않는다.
이 부분에서 dialog와 관련된 클래스를 미리 생성해놓은뒤 게임 내부에서 createDialog등으로 dialog를 호출해서 사용한다.
미션에디터에서 테스트 해볼때는 일단 저장을 한 뒤 저장한 폴더에 description.ext파일을 만들고 다시 미션 에디터로 불러와야 내용이 적용된다.
현재 Alpha인 상황에서 테스트 해보기 가장 좋은 방법은 Editor의 Export를 사용하는 것이 아니라 Play의 Multiplayer의 Editor를 사용하는 것 같다.
Description.ext 항목
author
미션의 제작자. 기본적인 설정에서 여기서 설정한 문자열은 하단에 작은 폰트로 "by"라는 문자열과 이어서 나온다.- type = String
- author = "John Doe";
onLoadName
미션 로딩시 출력되는 문자열을 설정한다. loadScreen으로 설정하는 이미지 위에 큰 글씨로 표시된다.- type = String
- onLoadName = "onLoadName";
onLoadMission
미션 로딩중에 메세지를 출력한다. 로딩이 빠르면 메세지를 짧은 시간동안만 출력한다.이 메세지는 유저에게 현재 진행중인 메세지명으로 사용된다. 멀티에서는 GameSpy 탐색기로 미션을 선택할때 출력된다.- type = String
- onLoadMission = "YourMissionName";
loadScreen
미션이 로딩되는 동안 이미지를 출력한다. 경로는 미션폴더에 따른다. 파일은 paa파일을 사용해야한다.PAA파일은 BI Tools중 TexView로 전환하면 된다. 비율은 2:1로 가장 이상적인 사이즈는 1024x512라고 한다.- type = String
- loadScreen = "pictures\intro.paa";
onLoadName = "onLoadName"; author = "dbmst.blogger.com"; loadScreen = "loadScreen.paa"; onLoadMission = "onLoadMission"; |
onLoadIntro
인트로가 로딩되는 동안 메세지를 출력한다.- type = String
- onLoadIntro = "YourMessage"
OnLoadMissionTime
미션이 로딩되는 동안 시간과 날짜를 출력하도록 설정한다. 1일때 출력한다.- onLoadMissionTime = 1;
OnLoadIntroTime
인트로가 로딩되는 동안 시간과 날짜의 출력여부를 설정한다. 1일때 출력한다.- onLoadIntroTime = 1;
cfgLoadingTexts
로딩화면에 대해서 설정한다.- type = class
header
멀티플레이 게임 브라우저에서 미션에 대해서 표시되는 내용을 설정한다.- gameType
- DM : Death Match
- CTF : Capture the Flag
- FF : Flag Fight
- COOP : Cooperative Mission
- Team : Team Mission
- Scont : Sector Control
- Hold : Hold Location
- Unknown : 특별히 지정된 것이 없을때
- minPlayers
- 최소 유저수
- maxPlayers
- 최대 유저수
onLoadName = "onLoadName"; author = "dbmst.blogger.com"; loadScreen = "loadScreen.paa"; onLoadMission = "onLoadMission"; class Header { gameType = unknown; }; |
briefing
싱글 미션일때 브리핑을 스킵할 수 있도록 한다. 만약 briefing.html파일이 없으면 이 값과 무관하게 스킵한다.- briefing = 0;
debriefing
미션 종료시 미션수행결과에 관한 내용을 출력할 것인지를 설정한다.- debriefing = 0;
minScore
미션의 최소스코어값을 설정한다. 점수는 미션 종료 후 보고화면에서의 별점과 관련이 있다.- minScore = 0;
avgScore
미션의 평균 스코어를 설정한다. 점수는 미션 종료 후 보고화면에서의 별점과 관련이 있다.- avgScore = 1800;
maxScore
미션 최대 스코어를 설정한다. 점수는 미션 종료 후 보고화면에서의 별점과 관련이 있다.- maxScore = 75000;
respawn
리스폰 타입을 설정한다.- 0 또는 "NONE" : 리스폰 없음
- 1 또는 "BIRD" : 갈매기로 리스폰
- 2 또는 "INSTANT" : 죽은 곳에서 리스폰
- 3 또는 "BASE" : 기지에서 리스폰
- 필요한 리스폰 마커명
- respawn_west
- respawn_east
- respawn_guerrila
- respawn_civilian
- 마커명 뒤에 추가적인 텍스트로 여러군데에서 랜덤하게 리스폰되도록 설정할 수 있다.
- 예시
- respawn_west_1
- respawn_west_2
- respawn_westABC
- 차량 리스폰을 위해서 필요한 마커명
- respawn_vehicle_west
- respawn_vehicle_east
- respawn_vehicle_guerrila
- respawn_vehicle_civilian
- 4 또는 "GROUP" : 자신의 그룹으로 리스폰한다. 만약 그룹내의 AI가 아무도 남아있지 않다면 갈매기로 리스폰된다.
- 5 또는 "SIDE" : 자신의 진영에 속한 AI유닛에게 리스폰된다. 만약 아무도 남아있지 않으면 갈매기로 리스폰된다. 이 리스폰타입을 사용하면 AI중 플레이가능으로 설정된 유닛으로 팀 스위치가 가능하다.
respawnDelay
리스폰 대기시간을 설정한다.- type = Number;
- respawnDelay = 42;
respawnVehicleDelay
차량의 리스폰대기시간을 설정한다.- type = Number;
- respawnVehicleDelay = 11;
respawnDialog
리스폰 타입을 3번으로 설정해놓으면 이 설정으로 점수판과 남은 리스폰시간을 보여준다. 기본값은 1이다.- type = Number
- respawnDialog = 0;
cfgSounds
게임 내에서 사용되는 사운드에 대해서 설정한다. 후에 커맨드 그룹의 Sounds를 다룰때 사용될 것 같다.- class명 :playSound나 say등으로 호출할때 쓰인다
- name : 에디터에서 호출하는 이름
- sound : 사용될 파일들의 경로등을 설정한다.
class CfgSounds { sounds[] = {}; class wolf1 { // how the sound is referred to in the editor (e.g. trigger effects) name = "my_wolf_sound"; // filename, volume, pitch sound[] = {"fx\wolf1.ogg", 1, 1}; titles[] = {}; }; }; //http://community.bistudio.com/wiki/description.ext#cfgLoadingTexts 기본 예제
playSound "wolf1"; // use the class name! player say ["wolf1", 100];
cfgRadio
라디오를 통해 사용되는 것들을 설정한다.후에 커맨드 그룹의 Radio Control부분을 다룰때 사용하게 될 것같다.- class명 : sideRadio나 globalRadio같은 명령들로 호출될 때 사용된다.
- name : 에디터에서 호출하는 이름
- sound : 출력되는 소리
- title : 화면에 보여지는 텍스트
cfgMusic
BGM을 설정한다. 후에 커맨드 그룹의 Sounds를 다룰때 사용될 것 같다.- name : 보통은 공란으로 비워두지만, 트리거의 environment option을 통해서 사용하고 싶다면 특정명을 명시해두어도 된다.
- title : 음악이 재생될때 화면에 표시되는 이름이다.
cfgIdentities
유닛의 세부설정을 하는 부분으로, 얼굴과 안경, 목소리톤과 이름등을 설정할 수 있다. 미션 중 setIdentity를 통해서 유닛에게 정해진 내용을 적용할 수 있다.- class명 : 호출용
- name
- face
- glasses
- speaker
- pitch
/* description.ext */ class CfgIdentities { class idTest { name = "dbmst"; face = "face1"; glasses = "none"; speaker = "Dan"; pitch= 1.1; }; }; /*init*/ this setIdentity "idTest" |
keys
아래의 keysLimit에 사용할 키를 설정한다.- type = Array
- keys[] = {"key1","key2","key3"};
keysLimit
미션을 언락하기 위해서 필요한 키의 수를 설정한다.- keysLimit[] = 2;
doneKeys
싱글 플레이 미션이 완료된 것으로 표시되기 위한 키를 지정한다. 사용하려면 activateKey와 isKeyActivate를 통해야한다.- donKeys[] = {"key4"};
disabledAI
멀티플레이시 이 값이 1이면 유저들이 사용하고 있는 유닛을 제외하고 전부 제거한다.- disabledAI = 1;
aiKills
값이 1일때 AI유닛을 점수판에 표시하도록 한다.- aiKills = 1;
showGPS
GPS의 사용유무를 설정한다.- showGPS = 0;
showCompass
나침판의 표시 유무를 설정한다.- showCompass = 0;
showMap
지도를 표시할 것인지를 설정한다. showGPS가 활성화 되어있으면 showMap이 비활성화 되어있어도 지도가 출력된다.- showMap = 0;
showMap = 0; showGPS = 0; |
showNotePad
메모장 표시 유무를 설정한다.- showNotePad = 0;
showWatch
시계의 표시 유무를 설정한다.- showWatch = 0;
scriptedPlayer
scriptedPlayer를 활성화시킬 경우 플레이어가 없는 상황이라도 미션을 시작했을때 "No player select"라는 문구가 뜨지 않는다.- scriptedPlayer = 1;
rscTitles
UI 디스플레이를 설정할때 쓰인다. 나중에 나올 커맨드 그룹중 Interaction부분에서 쓰일 것 같다.weapons
브리핑동안 무기를 설정할 수 있다.- class : 무기명
- count = 수량
magazines
브리핑동안 탄약을 설정할 수 있다.- class : 탄창명
- count = 수량
backpacks
브리핑동안 가방을 설정할 수 있다.- class : 가방명
- count = 수량
weaponPool
캠페인의 이전 미션 무기 상태를 다음 미션의 브리핑의 기어 메뉴에서 넘겨받을 수 있다. 커맨드 그룹중 Weapon Pool에서 다루게 될 것 같다.- weaponPool = 1;
titleParam%
titleParam1과 titleParam2는 멀티플레이용 옵션이다. 이 옵션들은 멀티플레이의 로비에서 볼 수 있다. 이 설정은 세팅 타임 제한과 깃발뺏기나 데스매치와 같은 게임에서의 스코어 제한등에서 유용하게 쓰인다. 다른유용한 용도로는시간가속, 미션의 난이도 설정, 인트로의 유무등을 설정할때에 있다.- valuesParam%
- deValueParam%
- textsParam%
params
titleParam을 좀 더 정확히 설정하기 위함이다. 내부에서 paramsArray로 호출해서 사용할 수 있다 (예- paramsArray select 0)- class Params
- class 명
- title
- value
- texts
- default
//description.ext titleParam1 = "TEST"; valuesParam1[] = {0, 1, 2}; defValueParam1 = 1; TextsParam1[] = {"Zero", "One","Two"}; //init hint str param1; |
disableChannels
해당 채팅 채널을 차단한다.- disableChannels[] = {0,1,2,6};
- 0 : Global
- 1 : Side
- 2 : Command
- 3 : Group
- 4 : Vehicle
- 5 : Direct
- 6 : System
enableItemsDropping
수영시 아이템을 떨어뜨릴지에 대해서 설정한다.- enableItemsDropping = 0;
- 0 : Disable
- 1 : Enable
이야~ 깔끔하게 정리해두셔서 정말 좋네요.
답글삭제유용하게 사용하겠습니다~
확실히 꿀팁이로군요. 하지만 이해가 안되는... 번거로우시겠지만 리스폰에 대한 예시를 하나 적어주실수 있으십니까? WEST팀이 그자리에서 5초후에 살아나도록 설정하려면 어떤 식으로 입력해야 합니까?
답글삭제요즘 ARMA를 안해서 틀릴지도 모르지만, 죽은 그 자리에서 부활하는 것을 말씀하시는거라면 respawn = 2 후에 respawnDelay = 5로 설정해주면 될 것 같네요.
삭제WEST팀이 죽고나서 베이스에 태어나게 할려면 어떻게 해야하나요? 봐도 이해가 안됩니다...알려주세요
답글삭제