terraria吧 关注:737,645贴子:9,726,782

关于草药种植深度与生长速度的问题

只看楼主收藏回复

新档突发奇想把基地建到洞穴层,同时把草药园也移到了地下。这里可以捉很多宝石动物还可以种宝石树,但却感觉草药生长得没那么快了……


IP属地:加拿大1楼2022-08-31 14:22回复
    于是楼主用旅途档做了一个小小的测试,看看草药在地表和洞穴层生长的情况,如下图
    地表长得确实更快一些,看起来还是很明显的,想来也很合理


    IP属地:加拿大2楼2022-08-31 14:26
    回复
      但这里还是有很多疑问,种植深度和生长速度到底有怎样的关系?以及还有没有别的方式可以提高种植的效率?
      或者,还有没有喜欢把基地建到别的群落的吧友不会都是建在出生点吧


      IP属地:加拿大3楼2022-08-31 14:28
      回复
        度娘不要乱吞


        IP属地:加拿大4楼2022-08-31 14:36
        回复
          草药成熟相对随机,做过重复实验吗🧐


          IP属地:中国香港来自Android客户端5楼2022-08-31 14:45
          收起回复
            插眼。我太阳花种好几轮了闪耀根才出几根


            IP属地:北京来自Android客户端6楼2022-08-31 15:02
            回复
              我认为应该没影响,毕竟泰拉没有草药根据高度来生长的


              IP属地:贵州来自Android客户端7楼2022-08-31 15:15
              收起回复
                应该是没有关系的,Wiki上也没说


                IP属地:广东来自Android客户端8楼2022-08-31 15:33
                收起回复
                  多做几组实验,看着第一次实验差距还是很明显的,说不定你能发现新的tr设定


                  IP属地:湖南来自Android客户端9楼2022-08-31 15:56
                  收起回复
                    已看源码,确实不一样。
                    相关代码在WorldGen.cs的GrowAlch方法,这个方法在UpdateWorld_OvergroundTile方法与UpdateWorld_UndergroundTile方法中被分别引用。而这俩在一个UpdateWorld循环内次数是不一样的。
                    前者是maxTilesX * maxTilesY * 3E-05f * worldUpdateRate,后者是maxTilesX * maxTilesY * 1.5E-05f * worldUpdateRate,正好差出一倍来。


                    IP属地:重庆10楼2022-08-31 16:11
                    收起回复
                      想看源码的话搞个ilspy或者dnspy,可以把游戏的源码整出来,只是如果想要可编译源码的话需要手动添加一些依赖库... 这游戏是C sharp写的,如果不熟悉的话还得去了解一下这门语言。
                      我搞出来的源码可以Build成功但是游戏怪怪的,还有各种bug,悲... 但即便如此看源码来搞清楚游戏机制还是足够的。


                      IP属地:重庆11楼2022-08-31 16:19
                      回复
                        虽然10楼已经有高手从源码层面看出了问题,不过楼主还是想试一下
                        新的试验:在一个世界中五个不同的深度各种100盆太阳花,从第一天12:00开始每天的12:00左右来观察各高度生长情况,记录开花的数量





                        吧友们如果有想看的试验也欢迎提出


                        IP属地:加拿大12楼2022-08-31 16:49
                        回复
                          楼主的回复被吞了...
                          public static void GrowAlch(int x, int y)
                          首先草药分为未成熟草药,成熟草药,开花草药。
                          一、如果位于(x, y)位置的是未成熟草药,
                          1. 有1/50的概率变为成熟草药(但是寒颤棘要命中额外1/2的概率,也就是1/100)
                          2. 白天时未成熟的太阳花有1/50概率变成熟
                          3. 晚上时未成熟的月光草有1/50概率变成熟
                          4. 下雨时未成熟的幌菊有1/50概率变成熟
                          5. 深度不高于地下时,未成熟的闪耀根有1/50概率变成熟
                          6. 深度在地图底部200格以内时,未成熟的火焰花有1/50概率变成熟
                          以上是用if-else语句连接的,也就是说会执行首个满足条件(也就是随机数命中)的情况,然后跳过之后的情况。
                          二、(x, y)位置的是闪耀根,那么成熟的闪耀根和开花的闪耀根有一定概率互相转化
                          三、(x, y)位置的是成熟寒颤棘,那么有1/30概率开花
                          注意一,二,三这三条也是if-else语句连接的,一次最多只会执行一个代码块。
                          这个方法里没写太阳花,月光草,幌菊,火焰花和死亡草的开花,大概是因为这五种草药都有特定的开花条件而不是随机开花吧...


                          IP属地:重庆13楼2022-08-31 16:55
                          收起回复
                            12楼重发一下


                            IP属地:加拿大来自iPhone客户端14楼2022-08-31 17:12
                            回复
                              这些细节的东西是很复杂的……要不然就大量重复实验,要不然就读代码


                              IP属地:广东来自Android客户端15楼2022-08-31 17:31
                              收起回复