KV3 파일 프로필 및 DOTA 2 사용자 정의 사 운 드 제작

7924 단어
최근 에 COTA 의 음향 효 과 를 만 들 고 kv3 파일 을 깊이 파고 들 었 습 니 다. kv3 는 kv2 보다 쓰기 쉽 고 코드 가 상대 적 으로 간결 합 니 다. 그리고 KV3 는 json (형식 이 너무 비슷 하기 때 문) 으로 편리 하 게 전환 할 수 있 습 니 다. 만약 에 우리 가 어떤 기 존의 도구 로 kv3 파일 을 관리 하려 면 간단 한 kv3 - json 변환기 만 쓰 면 됩 니 다.
본론 으로 들 어가 면 먼저 kv3 파일 을 말씀 드 리 겠 습 니 다.
현재 dota 2 사용자 정의 게임 에서 kv3 파일 에 사용 되 는 부분 은 vmdl, vpcf, vsndevts, 즉 모델, 필터 와 사 운 드 파일 을 포함 하고 custom 도 있 습 니 다.net_tables. txt 도 kv3 파일 을 사용 합 니 다. 더 많은 부분 (예 를 들 어 npc 폴 더 의 것들) 은 kv3 를 사용 할 수 있 습 니까? 저 는 아직 시도 해 본 적 이 없습니다. 해 보 세 요.
1. KV3 의 문법 형식
kv3 는 V 사가 개발 한 특수 데이터 형식 으로 json 과 매우 비슷 합 니 다. 추 가 된 기능 은 바 이 너 리 인 코딩, 버 전 제어 와 데이터 주석 등 입 니 다. 그 밖 에 여러 줄 주석 과 여러 줄 문자열 등 추가 적 인 문법 지원 도 있 습 니 다.
1.1 파일 헤더
KV3 파일 마다 하나의 파일 헤더 가 필요 합 니 다. 표지 인 코딩 과 형식의 guid 가 포함 되 어 있 습 니 다. 대부분의 사람들 에 게 파일 을 만 들 때 이 줄 을 파일 헤더 에 복사 해서 붙 여 넣 는 것 만 기억 하면 됩 니 다.


문법
문법 은 매우 간단 해서 한 파일 로 모든 문 제 를 설명 하기에 충분 하 다.

{
    boolValue = false //    
    intValue = 128 //   
    doubleValue = 64.000000 //    
    stringValue = "hello world" //    
    stringThatIsAResourceReference = resource:"particles/items3_fx/star_emblem.vpcf" //      resource flag       
    multiLineStringValue = """
First line of a multi-line string literal.
Second line of a multi-line string literal.
"""
//      
    arrayValue =
    [
        1,
        2,
    ]
//   ,           
    objectValue =
    {
        n = 5
        s = "foo"
    }
// Object,            
/*
        
*/
}

1.3 여러 줄 문자열 의 특수 설명
kv3 에 여러 줄 의 문자열 을 쓰 려 면 세 개의 괄호 로 시작 한 다음 에 바로 새 줄 을 시작 해 야 합 니 다. 여러 줄 의 문자열 이 끝 난 후에 새 줄 을 시작 하고 괄호 세 개 를 써 야 합 니 다.이 두 개의 새 줄 은 모두 필수 적 이다.이 여섯 개의 괄호 사이 의 모든 문 자 는 해석 되 지 않 고 직접 읽 힌 다.
2. kv3 사용자 정의 사 운 드
dota 2 의 사용자 정의 음향 효 과 를 사용 하려 면 두 가지 유형의 파일 이 필요 합 니 다. 하 나 는 soundevents 에 있 는 vsndevts kv3 파일 이 고 하 나 는 sounds 폴 더 에 있 는 오디 오 파일 (mp3 와 wav 형식의 음악 파일 은 모두 지원 되 며 다른 유형의 파일 은 테스트 되 지 않 았 습 니 다) 입 니 다.오디 오 파일 은 말 하지 않 고 두 면 됩 니 다. vsndevts 편집 이 완료 되면 오디 오 파일 은 자동 으로 vsnd 파일 로 컴 파일 됩 니 다.여기에 먼저 예시 파일 을 놓 고 다시 자세하게 말 하 자.

{
    Rock.ui_startup =
    {
        type = "dota_update_ui_startup"
        vsnd_files =
        [
            "sounds/ui_startup_01.vsnd",
            "sounds/ui_startup_02.vsnd",
        ]
        volume = "1.000000"
        weights =
        [
            "1",
            "1",
        ]
    }
}

이렇게 정의 하면 lua 나 js 파일 에서 EmitSound 의 각종 API 를 사용 하여 "Rock. ui startup" 을 사용 하여 sounds 폴 더 에 놓 인 ui 를 재생 할 수 있 습 니 다.startup_01. mp3 혹은 uistartup_02. mp3 입 니 다.
몇 가지 매개 변 수 를 설명 하 십시오. 1. type 소리의 이벤트 유형 입 니 다. 이 사건 은 매우 중요 합 니 다. 현재 가능 한 모든 값 은 다음 과 같 습 니 다.
    dota_src1_2d // 2D  
    dota_src1_3d // 3D  

    battle_end_countdown //          
    dota_gamestart_horn //        

    dota_update_vo_clamped_panning
    dota_update_vo_spatial_stereo
    dota_update_vo_switch
    dota_update_vo_default
    dota_update_vo_clamped
    dota_update_vo_announcer //      voice

    dota_update_ganked_music
    dota_update_music_3layer
    dota_update_battle_music
    dota_update_battle_end
    dota_update_hero_select
    dota_update_default
    
    dota_update_killed
    dota_update_smoke
    dota_update_smoke_end
    dota_update_smoke_end_hero
    dota_update_roshan
    dota_update_roshan_end
    dota_music_respawn
    dota_update_countdown
    dota_update_opvar_track

    dota_music_stinger_stoptracks

    dota_ui_start_multi
    dota_ui_limit_time
    dota_update_ui_startup
    dota_update_ui_main
    dota_stop_loop_ui
    dota_voip

    dota_limit_speakers_ui
    dota_limit_speakers_inv
    dota_limit_speakers_spectui

우 리 는 일반적으로 dota_src1_2ddota_src1_3d 형식의 오디 오 만 사용 하면 된다. 기억 해 야 할 것 은 갑자기 어떻게 정의 해 야 할 지 모 르 면 공식 vsndevts 파일 에서 같은 유형의 파일 을 검색 하고 그대로 베 끼 면 된다 는 것 이다.
2. 소리의 속성 정의
//           
soundlevel "81.000000"     
distance_max "2500.000000"     ,3d    

spread_radius "6000.000000"     

rand_delay_min "1.000000"              
rand_delay_max "5.000000"

volume 0-1      
volume_fade_in "1.500000"     
volume_fade_out "1.500000"     
volume_falloff_min "10.000000"     
volume_falloff_max "1000.000000"
volume_rand_min "-0.149902"               
volume_rand_max "0.149902"

pitch 0-1   ,       

pitch_rand_min "-0.010000"
pitch_rand_max "0.010000"

vsnd_files "sounds/vo/announcer/announcer_now_select.vsnd" //       ,           ,    vsnd   
vsnd_files 
    [
        "sounds/vo/announcer/announcer_now_select1.vsnd",
        "sounds/vo/announcer/announcer_now_select2.vsnd"
    ]

weights
    [
        1,
        1
    ]
//              , weights             

start_point "2.000000"
end_point "9.000000"
restart_time "41.599998"
stop_at_time "40.000000"
//            、   、       
 
position "[5545.06, 4998.54, 1494]"
//        

//           ,           
limiter_on
    0 1
limiter_event_name "ui.spect_pickup_in"
limiter_max "1.000000"
limiter_match_entity "0.000000"
limiter_match_type 0 1
limiter_match_substring "0.000000"
limiter_match_entity "1.000000"

memory_type 0

volume_remap_x1 "0.250000"
volume_remap_x2 "0.500000"
volume_remap_x3 "0.750000"
volume_remap_x4 "1.000000"
volume_remap_y1 "0.250000"
volume_remap_y2 "0.500000"
volume_remap_y3 "0.750000"
volume_remap_y4 "1.000000"

remap_vol_x1 "0.800000"
remap_vol_y1 "0.250000"
remap_vol_x2 "0.900000"
remap_vol_y2 "0.500000"
remap_vol_x3 "1.000000"
remap_vol_y3 "1.000000"
remap_vol_x4 "1.000000"
remap_vol_y4 "1.000000"

volume_move_vol "0.010000"
volume_move_vel "300.000000"
volume_move_filter_vel "1.000000"



pitch_remap_x1 "0.250000"
pitch_remap_x2 "0.500000"
pitch_remap_x3 "0.750000"
pitch_remap_x4 "1.000000"
pitch_remap_y1 "0.250000"
pitch_remap_y2 "0.500000"
pitch_remap_y3 "0.750000"
pitch_remap_y4 "1.000000"

remap_intensity_x1 "0.000000"
remap_intensity_y1 "1.000000"
remap_intensity_x2 "0.200000"
remap_intensity_y2 "1.000000"
remap_intensity_x3 "0.670000"
remap_intensity_y3 "1.000000"
remap_intensity_x4 "1.000000"
remap_intensity_y4 "0.500000"


track "explore2"
random_delay_opvar "laning_01_random_delay_opvar"


use_event_data
laning_master



mixgroup "HeroPick"
mixgroup "Weapons"
mixgroup "Stingers"
mixgroup "Ping"
mixgroup "All"
mixgroup "Ultimates"
mixgroup "Physics"
mixgroup "Ambient"
mixgroup "Creeps"

stops_others 0 or 1

block_name "ui_generic_button_click"
block_time "0.250000"
block_time2 "0.750000"
block_duration "1.500000"

soundevent_01 "ui_menu_fadeout"
soundevent_02 "ui_select_md"

use_01 "1.000000"
use_02 "1.000000"
use_03 "1.000000"



stop_entry_name "random_wheel_spin"

opvar_field_name "dota_random_wheel_speed"
opvar_stack_name "dota_opvars"
opvar_operator_name "opvars"



event_type
    0 1 2 3 4

좋은 웹페이지 즐겨찾기