放肆の青春 发表于 2016-7-3 08:58

drop_weight语句翻译

有大神看得懂这个语句么?

放肆の青春 发表于 2016-7-3 08:59

这个文件在event\deposits里

放肆の青春 发表于 2016-7-3 10:22

顺便问一下:AI优先选择权重大的还是权重小的?

七杀 发表于 2016-7-4 09:50

没看懂
大概明白一点点是说如果行星权重为1,如果小行星权重为3?最后那个faction不明白。

sssjda 发表于 2016-7-4 18:44

本帖最后由 sssjda 于 2016-7-4 18:56 编辑

之前没有看群星的脚本,刚才大致看了下这个文件,根据代码我猜的啊,以下我添加注释:

d_vast_mineral_deposit = {
      resources = { minerals = 3 }//资源 3 矿
      station = shipclass_mining_station //采矿船
      orbital_weight = {//这个没有做试验存属猜测了,大概是计算总全职用的(因为代码中总权重的计算不可能涉及drop_weight里的诸多条件),或者出现在地图之上的权重,星系生成的时候用的
                weight = 30
      }
      
      drop_weight = {
                weight = 0//这个是探索后资源“掉落”出来的权重,默认为0
                modifier = { //当是以下行星种类时权重改为1
                        weight = 1
                        planet = {
                              OR = { //逻辑或
                                        is_planet_class = pc_gaia
                                        is_planet_class = pc_continental
                                        is_planet_class = pc_ringworld_habitable
                                        is_planet_class = pc_tropical
                                        is_planet_class = pc_ocean
                                        is_planet_class = pc_arid
                                        is_planet_class = pc_desert
                                        is_planet_class = pc_tundra
                                        is_planet_class = pc_arctic
                                        is_planet_class = pc_frozen
                                        is_planet_class = pc_molten
                                        is_planet_class = pc_toxic
                              }
                        }
                }
                modifier = { //是小行星时权重改为3
                        weight = 3
                        planet = {
                              is_asteroid = yes
                        }
                }
                modifier = { //factor在文本头上注释的是添加,可见以上代码是按顺序执行的,如果同时符合上面的条某个条件和符合以下条件,就再加0.5权重
                        factor = 0.5
                        planet = {
                              is_asteroid = yes
                              is_in_cluster = resource_cluster_0
                        }
                }
      }
}

关于权重算法,一般都是遍历循环得出一个总数total, 用当前数current除以它,就是概率了,即概率百分比 percent = current/total
文本第一行是空资源行星的概率,有一行是黑洞的权重是0,所以游戏里遇到的黑洞总是有资源的


sssjda 发表于 2016-7-4 18:55

本帖最后由 sssjda 于 2016-7-4 19:00 编辑

算法猜测伪代码

float current = current.getDropWeight();
float total = 0;

for(deposit in deposits[]) {
    total += deposit.orbital_weight.weight;
}

returncurrent / total;

放肆の青春 发表于 2016-7-5 22:52

问题已经解决了,谢谢
页: [1]
查看完整版本: drop_weight语句翻译