lanson 发表于 2010-11-2 12:13:37

解读罗马地图气候植被和地表文件

本帖最后由 lanson 于 2011-1-16 21:06 编辑

研究了这么久的移植,现在有空写一下我对rs2的移植心得

对于罗马全战,无论是原版,bi,alx,对于战略环境和战役环境主要都是由跟目录下的data文件夹下文件控制。

先介绍几个重要文件
descr_climates.txt………………气候带控制与标记,即热带什么的,同时还有战场植被的引用,就是对应不同气候的植被引用,战略植被的控制与引用这个文件要在相应的档案下,就是要对应的data,如bi,alx,或者是独立mod的data

descr_climates_lookup.txt,………………气候带引用注册,姑且这么叫,因为你想创建新的气候带,就要在这个文件和descr_climate.txt中添加

descr_aerial_map_ground_types.txt ……………… 气候带的战略地皮,就是三国2.0的战略地图上的农田,沙漠等的控制,

descr_vegetation.txt……………植物模型的具体引用和综合,就是树种模型引用路径和战役树种的设定

descr_vegetation.db………………这个文件是对应上一个的vegetation,就是说罗马引擎从这个文件中认出树种,再有descr_vegetation.txt引导而在战役中产生

注意修改descr_vegetation.txt时,descr_vegetation.db也要修改,不然会跳出

descr_geography.txt………………地表控制与地皮文件控制,这是最麻烦的文件,顾名思义,如果你想换战役地皮,就是这个了,例如我可以把沙漠变成绿洲就是这么来的

descr_geography.db………………这个才是罗马引擎读取的文件,对应上面descr_geography.txt,原理与descr_vegetation.txt和descr_vegetation.db一样

descr_grass.txt………………草地参数修改,就是根据气候带不同而有不同草地,

lanson 发表于 2010-11-2 12:15:22

descr_climates.txt与descr_climates_lookup.txt

本帖最后由 lanson 于 2010-11-7 04:59 编辑

descr_climates_lookup.txt和descr_climates.txt这两个文件要在对应的data下才能生效

先说descr_climates_lookup.txt,这个很简单,以原版为例
打开文件你会发现只有这些
test_climate
sandy_desert
rocky_desert
temperate_grassland_fertile
temperate_grassland_infertile
temperate_forest_open
temperate_forest_deep
swamp
highland
alpine
sub_arctic
volcanic
semi_arid

原版中的气候就这几个如果你要添加新的气候带,这里也要对应添加

再说descr_climates.txt,这个文件很重要,下面举例子说明

打开后,你会看到

climates
{
        test_climate
        sandy_desert
        rocky_desert
        temperate_grassland_fertile
        temperate_grassland_infertile
        temperate_forest_open
        temperate_forest_deep
        swamp
        highland
        alpine
        sub_arctic
        semi_arid
}
这段就是下面要用到的气候带,接着以test_climate…………三国中为江南-----成都一带
climate test_climate       ;;done
{
        colour        236 0 140 ………………这个就是该气候带所对应的颜色,对照world/maps/base下的map_climates.tga的颜色带,顺便说说,这个颜色的对照非常的不准,就是你明明指着红色,它读取时很可能是读成深红,具体规律我还没找到。
        heat        3………………热力参数加成,就是单位对于该气候的温度影响
        winter………………有这个的时候,战略地图上才会有冬天

        strategy        summer        sparse_tree        cypress_a.cas                        11
        strategy        summer        sparse_tree        olive_a.cas                                10
        strategy        summer        dense_tree        olive_a_impassable.cas        10
        strategy        summer        canopy                olive_a_canopy.cas                12…………………………这段就是夏季时战略地图上的植被模型,后面那个参数应该是密度,这个我没留意过,自己研究
       
        strategy        winter        sparse_tree        birch_a_winter.cas                                5
        strategy        winter        dense_tree        birch_a_impassable_winter.cas        4
        strategy        winter        canopy                birch_a_canopy_winter.cas                12
……………………同上
        battle_vegetation…………夏季的战役植被
        dense_forest                rs_sparse_arctic_forest………………密集森林,后面那些就是树种类的总名称
        dense_scrub                rs_sparse_arctic_forest_win………………灌木类

        battle_winter_vegetation………………冬季的
        dense_forest                rs_arid_forest_win
        dense_scrub                rs_arid_shrub_win
        env_map                        data/battlefield/envmaps/grass.dds…………覆盖地图样式,没仔细研究过
}

替换树种时有两种办法,1,要对应descr_vegetation.txt和descr_vegetation.db文件
                                    2,直接对应vegetation文件夹的vege文件名

lanson 发表于 2010-11-2 12:16:04

descr_aerial_map_ground_types.txt

本帖最后由 lanson 于 2010-11-2 09:06 编辑

战略地图地皮,descr_aerial_map_ground_types.txt文件 ,该文件位置一直不变,就是原data下,无论你用什么mod,都是这个位置



打开后,有以下

;
;
;
;        cultivated_low                       
;        cultivated_medium       
;        cultivated_high               
;        fertility_low               
;        fertility_medium       
;        fertility_high               
;        forest_dense               
;        forest_sparse               
;        hills                               
;        mountains_high               
;        mountains_low               
;        swamp                               
;        beach                               
;        scorched                       
;
;
;
这段不用管,废的,就是个作者编程习惯
举例,还是江南气候带的test_climate
climate test_climate
{
        cultivated_low                RSdefault_farm1.tga          RSdefault_winter_farm2.tga      
        cultivated_medium        RSdefault_farm2.tga           RSdefault_winter_farm2.tga         
        cultivated_high                RSdesert_farm_winter.tga        RSdefault_winter_farm2.tga            
        fertility_low                RSmediterraneangrass_winter.tga   RSsubarcticgrass_winter2.tga
        fertility_medium        RSmediterraneangrass_winter.tga   RSsubarcticgrass_winter2.tga
        fertility_high                RSmediterraneanforest_winter.tga   RSsubarcticgrass_winter2.tga
        forest_dense                RSdefault_forest.tga                      RSdefault_winter_open_forest.tga
        forest_sparse                RSmediterraneangrass_winter.tga                RSdefault_winter_open_forest.tga
        hills                        RShighland_forest.tga                     RSdefault_hills.tga
        mountains_high                RShighland_mountains.tga               RSalpine_mountains_winter.tga
        mountains_low                RShighland_hills.tga                RSrockydesert_fertilityhigh.tga
        swamp                        RSarid_swamp.tga
        beach                        RSdesert3.tga
        scorched                scorched.tga
}


cultivated……农田的地表发展程度的贴图,有三级,low,medium,high后面的tga就是我们要用到的战略地图地表文件
如:
cultivated_low                RSdefault_farm1.tga          RSdefault_winter_farm2.tga   前者tga为夏季时的地表,后者则是冬季
而贴图文件位置在Rome - Total War\Data\terrain\aerial_map\ground_types中

随便说说我是如何实现遇山是梯田,平原是田字田的方法,其实就是保留low为梯田文件,到了最后high时为田字田

fertility为地表的肥沃度,其实这个很重要,就是气候带战略地表的基本色调,这个就是实现热带与温带的色彩不一样的地方

forest_dense和forest_sparse,森林密集程度地表

hills小山地地表

mountains山脉地表

swamp湿地

beach沙滩

scorched焦土

顺带一提,如果在descr_climate.txt中没有在对应气候出有winter字样,说明在战略地图上地表不会读取地表贴图的后者,就是冬季地表文件tga

lanson 发表于 2010-11-2 12:16:45

descr_vegetation.txt和descr_vegetation.db

本帖最后由 lanson 于 2010-11-2 09:32 编辑

descr_vegetation.txt和descr_vegetation.db这个文件位置有些争议,理论上应该是在原data下的,反正我自己是两边都在

先讲讲格式:descr_vegetation.txt



第一段:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LODs就是Levels of Detail,意为多细节层次,LOD技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。

下面是对应的树和灌木等,具体我就不会改了
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lod trees
{
        low
        {
                billboard    inf        10.0        ; 10 degree tolerance
        }

        medium
        {
                model      50        150        1        15
                billboard    inf        10.0        ; 10 degree tolerance
        }

        high
        {
                model      50        400        1        15
                billboard    inf        10.0        ; 10 degree tolerance
        }

}

lod shrubs
{
        low
        {
                billboard    inf        10.0        ; 10 degree tolerance
        }

        medium
        {
                model      50        150        1        15
                billboard    inf        10.0        ; 10 degree tolerance
        }

        high
        {
                model      50        400        1        15
                billboard    inf        10.0        ; 10 degree tolerance
        }

}


然后第二种,

;;;;;;;;;;;NEW MODELS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; almond_tree.tga………………我叫它树种模型
model almond_tree ………………模型名字
{
    level models_vegetation/almond_tree.cas………………路径
}
这段是模型的具体应用模型文件,你想添加新的树种模型,就在按照上述格式添加

vegetation rs_forest_deep………………我叫它树种类
{
    layout 180 rs_forest_dense2_layout.tga………………分布有前面的数字和tga文件负责
    radius 1……………………………………………………………………
    height_range 0.7 1.3…………………………………………………这几个就是分布参数,具体多少,没研究
    aspect_range 0.7 1.0…………………………………………………
    lod trees
    model almond_tree …………………………………………
    model european_beech_deep_forest…………………
    model oak2………………………………………………………这四个是该树种类的引用模型,就是对应文本上面的
    model deep_forest_rock……………………………………
}

这段是把你几个的模型文件整合到一种系列的树种类,植被种类vegetation rs_forest_deep由decsr_climate.txt文件引用

当你添加或修改过vegetation文本后,要把原有的descr_vegetation.db文件删去,并把对应的sprite文件删去,下次启动游戏时就会自动生成descr_vegetation.db,和对应的sprits,当然要对照以下的贴子,去做,植被创建还是有限制的,rs2的植被都被原作者们采用了防盗技术,只能引用,不能改造

老外的这个对于如何创建新树种讲的很清楚,我就不多说了,http://forums.totalwar.org/vb/showthread.php?60901-Tutorial-creating-new-vegetation-for-battlemaps

lanson 发表于 2010-11-2 12:17:14

descr_geography.txt和descr_geography.db

本帖最后由 lanson 于 2010-11-2 10:01 编辑

descr_geography.txt和descr_geography.db这两个文件是我最为头痛的
这连个文件的位置也是固定在原版的data下,而且要一起修改,否这无效

主要是参数太多,我们先看看descr_geography.txt的格式
看上图,我们这里只讲这样为你的战场气候换地皮,看第2副图的box4和box5,box上就是气候的default(默认)
这个就是对应的冬夏气候地皮修改,


                texture                rock                        terrain/battlefield/highland/summer/rock.tga…………这些就是对应地皮文件路径
                texture                gravel                        terrain/battlefield/semi_arid/summer/shrub_base.tga
                texture                sand_caked                terrain/battlefield/semi_arid/summer/rock.tga
                texture                sand                        terrain/battlefield/temperate_forest_open/summer/sand.tga
                texture                sand_blown                terrain/battlefield/test_climate/summer/sand.tga
                texture                dirt                        terrain/battlefield/test_climat1/summer/oz_medi_shrub_base.tga
                texture                mud                        terrain/battlefield/test_climate/summer/mud.tga
                texture                swamp                        terrain/battlefield/test_climat1/summer/oz_medi_shrub_base.tga
                texture                grass_dry                terrain/battlefield/test_climate/summer/oz_medi_gras2.tga
                texture                grass_short                terrain/battlefield/temperate_forest_open/summer/grass1.tga
                texture                grass_long                terrain/battlefield/temperate_forest_open/summer/grass.tga
                texture                shrub_sparse                terrain/battlefield/test_climat1/summer/oz_medi_shrub_base.tga
                texture                shrub_dense                terrain/battlefield/test_climat1/summer/oz_medi_grass.tga
                texture                forest_sparse                terrain/battlefield/test_climat1/summer/oz_medi_grass.tga
                texture                forest_dense                terrain/battlefield/test_climat1/summer/oz_medi_grass.tga
                texture                env_map                        battlefield/envmaps/grass.dds

rock什么的就是什么地形是什么地皮,其实也是很一目了然,这个自己找地皮替换,其他的参数就是地形的修改什么的

然后就是descr_geography.db这个文件,涉及到游戏的内存修改,我原来都愁了很久,后来发现老外已经有自己一套软件修改了,在这不得不感叹下中国的技术水平真的不咋的,我在国内找了很久就是没找到,人家连原理,技术,和应用软件都有了。
就是这个软件修改descr_geography.db的

傻瓜版,别告诉我你不懂

这个一定要修改,而且要准确无误,否这就跳出,修改前要记得备份

其他的关于地形参数见这里

http://www.twcenter.net/forums/showthread.php?t=55785

lanson 发表于 2010-11-2 12:19:06

最后就是descr_gress.txt

本帖最后由 lanson 于 2010-11-2 10:23 编辑

descr_gress.txt这个文件也是固定位置,原data下

例子:test_climate-————江南气候--(三国)
打开后找到

climate test_climate …………气候名称
{
        texture                                        data/textures/forest_open.tga………………所引用的草地文件
        spacing                                        0.5       
        present_in_winter                false

        ground_type grass_short
        {
                avg_height                        1.0                       
                width                                2.0                               
                density                                40
                tex_v1                                0.0                       
                tex_v2                                0.19                       
                falloff                                0.4
                colour                                0,255,0
                correction                        0.1
        }

        ground_typemud
        {
                avg_height                        1.0                       
                width                                2.0                               
                density                                50
                tex_v1                                0.0                       
                tex_v2                                0.19                       
                falloff                                0.4
                colour                                0,255,0
                correction                        0.1
        }

        ground_type grass_long
        {
                avg_height                        1.2                       
                width                                2.0                               
                density                                60
                tex_v1                                0.4                       
                tex_v2                                0.59                               
                falloff                                0.4
                colour                                0,255,0
                correction                        0.1
        }

        ground_type scrub_dense
        {
                avg_height                        1.2                       
                width                                2.0                               
                density                                40
                tex_v1                                0.4                       
                tex_v2                                0.59                       
                falloff                                0.4
                colour                                0,255,0
                correction                        0.1
        }

        ground_type forest_dense
        {
                avg_height                        0.8                       
                width                                2.0                               
                density                                50
                tex_v1                                0.8                       
                tex_v2                                0.99                       
                falloff                                0.4
                colour                                0,255,0(实话说,这个作用我就没见过有效)
                correction                        0.1
        }
}


上面的英文都很好理解,我特别说说tex_v1和tex_v2这两个,看图

tex_v1和tex_v2就是这个草类ground_type 的说取草地文件的位置范围,就是说如ground_type forest_dense的tex为0。8-0。99指的就是自上而下最后一种草的高度,你可以理解他为从0.8厘米到0.99厘米的图片在游戏中出现的意思,再如ground_type grass_long得tex为04-0.59就是第三种草的样式。就是这个意思,至于图中自左到右就是那些草的远景缩小图的意思,就是罗马引擎的草地dds贴图样式

理论上,可以增加第五六…………种草

就是在贴图上增加
这时就要自己手动增加,罗马中还有多种地形可怎增加草地就是
; valid ground types are
;        -grass_short,
;        -grass_long,
;        -sand,
;        -rock,
;        -forest_dense,
;        -scrub_dense,
;   -swamp,
;        -mud,
;        -mud_road,
;        -stone_road,
;        -water,
;        -ice,
;        -snow,
;        -wood,
;   -dirt,
对比上述格式,自己动手做草

参考http://www.twcenter.net/forums/showthread.php?t=377881&highlight=descr_grass

lanson 发表于 2010-11-2 13:04:19

本帖最后由 lanson 于 2011-1-16 21:39 编辑

教程结束,有不对请指出,毕竟有些是经验之谈
声明一下,原来rs2小组没有公开材质时,rs2的树模并不是cas文件,而是vege文件,只能直接运用,而不能做修改,现在有了原cas文件可以直接自由组合~~~


补充下,db文件的创建要在相对完整的cas下生成,已知的db文件除了descr_geography.db不能自动生成外其他都可以~~~,还有就是关于rs2的那个公开材质包里面packs/Mod_0.pak的这个文件夹的文件是.vsh印象中是关于阴影的文件,不能又或者是我不懂用吧~~~~,还有一些细节问题就是关于descr_climates.txt这个文件,罗马的三个引擎位置不同,rtw和alex都是在原版data下的,就是说 alex文件夹下的可以不需要,bi的则要放在bi/data下,其实很多关键性文件都是有优先性的,如descr_vegetation.txt和对应的db就是一个例子,如果是alex引擎,运行时先查看alex/data下有没有相关的文件,如果没有,则直接跳回原版data下找,所以很多mod最开始都是从rtw开始制作 ,因为这样比较妥当,减少出错~~~~

wang326302831 发表于 2010-11-6 18:23:54

好好好


⑨道 发表于 2010-11-7 08:31:59

非常感谢,国内都没有这个方面的教程

⑨道 发表于 2010-11-7 08:32:29

回复 lanson 的帖子

三国的bi已经被废了这个功能,原版本的BI能么,可以试验下

lanson 发表于 2010-11-15 12:31:41

回复 Evenmov 的帖子

现在知道了,原版的bi和alx都不能,听说只有原版的exe可以,把原来的descr_geography.db和descr_vegetation.db删去然后会自动生成新的的db文件

notdiebird 发表于 2010-11-16 10:47:48

:D来支持一下

⑨道 发表于 2010-11-17 15:29:46

恩,地图修改也是,只要原版的就行

人生之路 发表于 2011-5-24 18:44:26

很好很强大就是我看不懂

key999 发表于 2011-5-25 00:16:27

本帖最后由 key999 于 2011-5-25 00:43 编辑

收藏了~慢慢学习
话说原来db文件是这麽回事,我才纳闷这文件怎麽来的呵呵

767985901 发表于 2011-7-2 23:26:56

好强悍啊{:5_155:}
页: [1]
查看完整版本: 解读罗马地图气候植被和地表文件