找回密码
 注册
X系列官方授权正版
搜索
查看: 2930|回复: 7

[原创] 修改开局星球洞数的关键字段在traits文件中???

[复制链接]
发表于 2013-2-25 22:25:53 | 显示全部楼层 |阅读模式
RT,刚用GA1.81的数据一个个的测试,在只替换一个文件的测试下,终于找到一个关键的文件了~!可喜可贺~~!

此关键文件位于Star Ruler\Game Data里面的traits.XML
用GA1.81的traits.XML,完全替换原版traits.XML,重新在标准模式开局试试看,是不是发现星系随机变量有些奇怪?
我目前测试了几盘,前3次开局,开始的星系中星球数量多达9个,个别星球洞数居然只有可怜的1个!!!!
后面几次开局,平均3~4个星球了,母星30个洞,另外一个星球20~30上下,其余的,全是渣渣的1~4~7个洞,跟原版熟悉的开局相比,已经可以50%的肯定这些关键数据在这个文件里面的某个程序段里面啦~

如果我的发现纯属偶然,大家可以帮忙测试一下,用GA的traits.XML替换原文件,多次测试,让我们离手动修改我们想要的超级星星(我的目标,是要修改成100洞!)更进一步吧


由于程序段比较乱,一时看不太清(记事本打开眼睛就晕 ),所以请有贤之士帮忙看看?
发表于 2013-2-26 19:29:55 | 显示全部楼层
新版本可能已经改了- -我看了1.9.3的这个文件。。。没看到可疑的内容- -
回复

使用道具 举报

发表于 2013-2-26 23:08:25 | 显示全部楼层
我记得是一个叫galaxy什么的文件里...也可能是一个galaxy开头的变量
太烦了有点。A指向B文件。在B里看没有。结果发现B引用了另外3个文件,这绕来绕去的很烦啊

我都是通过种族特性来修改,就是貌似AI也可以选比较坑
回复

使用道具 举报

发表于 2013-2-27 21:25:36 | 显示全部楼层
maxStructSpace = 25.5 在map_generation.as里面,但是我见到过26的啊,不过改到100后进游戏确实是100了,但初始建筑还是那点,不知道高手们研究过哪里改星系产生的数量,我想让可住人的少点,多点小行星的

评分

参与人数 1UCC +2 好评 +1 收起 理由
虔诚 + 2 + 1 帮助我节省好多时间了!

查看全部评分

回复

使用道具 举报

发表于 2013-2-27 22:09:00 | 显示全部楼层
风中的黑骑士 发表于 2013-2-27 21:25
maxStructSpace = 25.5 在map_generation.as里面,但是我见到过26的啊,不过改到100后进游戏确实是100了, ...

25.5 四舍五入=26
回复

使用道具 举报

 楼主| 发表于 2013-2-27 22:21:12 | 显示全部楼层
本帖最后由 虔诚 于 2013-2-27 22:23 编辑
风中的黑骑士 发表于 2013-2-27 21:25
maxStructSpace = 25.5 在map_generation.as里面,但是我见到过26的啊,不过改到100后进游戏确实是100了, ...




万分感谢!

为了平衡一下游戏的体验性,我把母星改成初始值45个洞,开局选择额外空间+23个洞。
(谁让GA有”地球化“这种坑爹的东西呢,我感觉这个翻译不好,硬是改掉了)

你后面那个是指在恒星周围漂浮的陨石圈吗?(就是不住人,有金属矿的那个)
是的话
mickleroi_real_systems_map_generation.AS

// Settings
float RS_minPlanetRadius = 100, RS_maxPlanetRadius = 400;  (请忽视,我只是单纯的想把天体改大)
float RS_orbitRadiusFactor = 400.f;
float RS_tempFalloffRadius  = RS_orbitRadiusFactor * 6.f;
uint RS_maxStructSpaceHome = 45;
uint RS_maxStructSpaceRock = 34;
uint RS_maxNumberMoonsGas = 40;
uint RS_maxNumberMoonsOther = 5;

红色部分研究看看,我把这里的数值增大后,重新读图时出现陨石的几率增加了很多,数量也很多
可以往这个文件看下去,后面又很多程序段使用到gas、moon这2个变量,应该跟这2个函数有关。

回复

使用道具 举报

 楼主| 发表于 2013-2-27 23:39:38 | 显示全部楼层
风中的黑骑士 发表于 2013-2-27 21:25
maxStructSpace = 25.5 在map_generation.as里面,但是我见到过26的啊,不过改到100后进游戏确实是100了, ...

真情回馈呀

帮你找出陨石(小行星)的程序段了

// {{{ Asteroid belt
System@ RS_makeAsteroidBelt(Galaxy@ glx, vector pos) {
        // Create the system
        System@ sys;
        sysDesc.Position = pos;
        sysDesc.AutoStar = false;
        float maxRad = randomf(3.f, 8.f) * RS_orbitRadiusFactor;
        sysDesc.StartRadius = 3.f * maxRad;
       
        @sys = @glx.createSystem(sysDesc);

        // Create the asteroids制造陨石(小行星)
        asteroid_desc.clear();
        asteroid_desc.setFloat(strOrbMass, 0.1f); //Slow down the orbit

        uint rocks = rand(40, 60) * round(maxRad / RS_orbitRadiusFactor);;
        float radius;
  //自定义大小
       
        for(uint i = 0; i < rocks; ++i) {
                if (i == 0)
                        radius = 140.f;
                else if (i % 10 == 0)
                        radius = randomf(30.f, 90.f);
                else
                        radius = randomf(6.f, 30.f);

                float oreVal = randomf(25000.f, 26000.f) * radius * radius;

                asteroid_desc.setFloat(strMass, oreVal);

                asteroid_desc.setFloat(strRadius, radius);
                asteroid_desc.setFloat(strOrbYaw, randomf(twoPi));
                asteroid_desc.setFloat(strOrbEcc, randomf(0.9f,1.1f));
                asteroid_desc.setFloat(strOrbPitch, randomf(twoPi));
               
                if (i == 0) {
                        asteroid_desc.setFloat(strOrbRad, 0.01f);
                        asteroid_desc.setFloat(strOrbMass, 0.0001f); //Slow down the orbit
                        asteroid_desc.setFloat(strOrbDays, 0.f);
                }
                else {
                        asteroid_desc.setFloat(strOrbRad, 160.f + randomf(1.2f) * (maxRad - 160.f));  //貌似数量函数.....,有待测试
                        asteroid_desc.setFloat(strOrbMass, 0.1f); //Slow down the orbit
                        asteroid_desc.setFloat(strOrbDays, randomf(3.f, 6.f));
                }
               
                Object@ asteroid = sys.makeOddity(asteroid_desc);

                if (i == 0)
                        asteroid.setGlobalVisibility(true);
               
                State@ ore = asteroid.getState(strOre);
                ore.max = oreVal;
                ore.val = oreVal;
               
                State@ hp = asteroid.getState(strDmg);
                hp.val = 0;
                hp.max = oreVal;
        }
        return sys;
}
// }}}


红色数字部分需要花时间测试,如果你测试出哪个是关键数字,请也告诉我一声哈~  
回复

使用道具 举报

发表于 2013-2-28 17:21:44 | 显示全部楼层
虔诚 发表于 2013-2-27 23:39
真情回馈呀

帮你找出陨石(小行星)的程序段了

非常感谢,有机会多交流吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|DeepTimes.NET 太空游戏站