godlearner吧 关注:7贴子:21
  • 9回复贴,共1

【日常】【开发进程】godlearner开发进程实时发布帖

只看楼主收藏回复

首先,请原谅我现在过于严肃。
本帖发帖规范
1.本帖非水贴,请不要插楼、灌水,否则删帖加封号3天。如有正常探讨请在楼中楼恢复,否则视同灌水。
2.在本帖中汇发布日常的开发与更新进程,有时也会发布开发版,但所有资源仅供交流学习,请在24小时内主动删除,开发版网盘资源链接仅保留7天,请不要抄袭或擅自修改。
3.任何bug报告可在另外的bug上传帖中提出,开发版bug一律不予处理,请不要再本帖中上传,否则视同灌水处理。
4.有意见以及建议请私信或回复,所有正式版均为开放资源,美术作品均无版权限制。
5.本游戏暂时无mod支持,以后也许会有,有需要mod开发者包的可以私信,不过任何mod的发布请告知。
最后,请大家多多支持我的游戏,并提出宝贵的建议!


IP属地:浙江1楼2014-09-22 18:35回复
    刘明.张霸大神.不知道和mc一样吗.一样的话我大概可以尝试做mod


    IP属地:美国来自iPhone客户端2楼2014-09-23 18:19
    回复
      好久不见。。。
      最近在分析Minecraft的地形生成算法,发现如下关键代码:
      (该段代码仅生成高度。。)
      public void func_147424_a(int p_147424_1_, int p_147424_2_,
      Block[] p_147424_3_) {
      byte b0 = 63;
      this.biomesForGeneration = getBiomesForGeneration(
      this.biomesForGeneration, p_147424_1_ * 4 - 2,
      p_147424_2_ * 4 - 2, 10, 10);
      this.func_147423_a(p_147424_1_ * 4, 0, p_147424_2_ * 4);
      for (int k = 0; k < 4; ++k) {
      int l = k * 5;
      int i1 = (k + 1) * 5;
      for (int j1 = 0; j1 < 4; ++j1) {
      int k1 = (l + j1) * 33;
      int l1 = (l + j1 + 1) * 33;
      int i2 = (i1 + j1) * 33;
      int j2 = (i1 + j1 + 1) * 33;
      for (int k2 = 0; k2 < 32; ++k2) {
      double d0 = 0.125D;
      double d1 = this.field_147434_q[k1 + k2];
      double d2 = this.field_147434_q[l1 + k2];
      double d3 = this.field_147434_q[i2 + k2];
      double d4 = this.field_147434_q[j2 + k2];
      double d5 = (this.field_147434_q[k1 + k2 + 1] - d1) * d0;
      double d6 = (this.field_147434_q[l1 + k2 + 1] - d2) * d0;
      double d7 = (this.field_147434_q[i2 + k2 + 1] - d3) * d0;
      double d8 = (this.field_147434_q[j2 + k2 + 1] - d4) * d0;
      for (int l2 = 0; l2 < 8; ++l2) {
      double d9 = 0.25D;
      double d10 = d1;
      double d11 = d2;
      double d12 = (d3 - d1) * d9;
      double d13 = (d4 - d2) * d9;
      for (int i3 = 0; i3 < 4; ++i3) {
      int j3 = i3 + k * 4 << 12 | 0 + j1 * 4 << 8 | k2
      * 8 + l2;
      short short1 = 256;
      j3 -= short1;
      double d14 = 0.25D;
      double d16 = (d11 - d10) * d14;
      double d15 = d10 - d16;
      for (int k3 = 0; k3 < 4; ++k3) {
      if ((d15 += d16) > 0.0D) {
      p_147424_3_[j3 += short1] = Blocks.stone;
      } else if (k2 * 8 + l2 < b0) {
      p_147424_3_[j3 += short1] = Blocks.water;
      } else {
      p_147424_3_[j3 += short1] = null;
      }
      }
      d10 += d12;
      d11 += d13;
      }
      d1 += d5;
      d2 += d6;
      d3 += d7;
      d4 += d8;
      }
      }
      }
      }
      }
      private void func_147423_a(int p_147423_1_, int p_147423_2_, int p_147423_3_) {
      double d0 = 684.412D;
      double d1 = 684.412D;
      double d2 = 512.0D;
      double d3 = 512.0D;
      this.field_147426_g = this.noiseGen6.generateNoiseOctaves(
      this.field_147426_g, p_147423_1_, p_147423_3_, 5, 5, 200.0D,
      200.0D, 0.5D);
      this.field_147427_d = this.field_147429_l.generateNoiseOctaves(
      this.field_147427_d, p_147423_1_, p_147423_2_, p_147423_3_, 5,
      33, 5, 8.555150000000001D, 4.277575000000001D,
      8.555150000000001D);
      this.field_147428_e = this.field_147431_j.generateNoiseOctaves(
      this.field_147428_e, p_147423_1_, p_147423_2_, p_147423_3_, 5,
      33, 5, 684.412D, 684.412D, 684.412D);
      this.field_147425_f = this.field_147432_k.generateNoiseOctaves(
      this.field_147425_f, p_147423_1_, p_147423_2_, p_147423_3_, 5,
      33, 5, 684.412D, 684.412D, 684.412D);
      boolean flag1 = false;
      boolean flag = false;
      int l = 0;
      int i1 = 0;
      double d4 = 8.5D;
      for (int j1 = 0; j1 < 5; ++j1) {
      for (int k1 = 0; k1 < 5; ++k1) {
      float f = 0.0F;
      float f1 = 0.0F;
      float f2 = 0.0F;
      byte b0 = 2;
      BiomeGenBase biomegenbase = this.biomesForGeneration[j1 + 2
      + (k1 + 2) * 10];
      for (int l1 = -b0; l1 <= b0; ++l1) {
      for (int i2 = -b0; i2 <= b0; ++i2) {
      BiomeGenBase biomegenbase1 = this.biomesForGeneration[j1
      + l1 + 2 + (k1 + i2 + 2) * 10];
      float f3 = biomegenbase1.rootHeight;
      float f4 = biomegenbase1.heightVariation;
      // if (this.field_147435_p == WorldType.AMPLIFIED && f3
      // > 0.0F)
      // {
      // f3 = 1.0F + f3 * 2.0F;
      // f4 = 1.0F + f4 * 4.0F;
      // }
      float f5 = this.parabolicField[l1 + 2 + (i2 + 2) * 5]
      / (f3 + 2.0F);
      if (biomegenbase1.rootHeight > biomegenbase.rootHeight) {
      f5 /= 2.0F;
      }
      f += f4 * f5;
      f1 += f3 * f5;
      f2 += f5;
      }
      }
      f /= f2;
      f1 /= f2;
      f = f * 0.9F + 0.1F;
      f1 = (f1 * 4.0F - 1.0F) / 8.0F;
      double d12 = this.field_147426_g[i1] / 8000.0D;
      if (d12 < 0.0D) {
      d12 = -d12 * 0.3D;
      }
      d12 = d12 * 3.0D - 2.0D;
      if (d12 < 0.0D) {
      d12 /= 2.0D;
      if (d12 < -1.0D) {
      d12 = -1.0D;
      }
      d12 /= 1.4D;
      d12 /= 2.0D;
      } else {
      if (d12 > 1.0D) {
      d12 = 1.0D;
      }
      d12 /= 8.0D;
      }
      ++i1;
      double d13 = (double) f1;
      double d14 = (double) f;
      d13 += d12 * 0.2D;
      d13 = d13 * 8.5D / 8.0D;
      double d5 = 8.5D + d13 * 4.0D;
      for (int j2 = 0; j2 < 33; ++j2) {
      double d6 = ((double) j2 - d5) * 12.0D * 128.0D / 256.0D
      / d14;
      if (d6 < 0.0D) {
      d6 *= 4.0D;
      }
      double d7 = this.field_147428_e[l] / 512.0D;
      double d8 = this.field_147425_f[l] / 512.0D;
      double d9 = (this.field_147427_d[l] / 10.0D + 1.0D) / 2.0D;
      double d10 = MathHelper.denormalizeClamp(d7, d8, d9) - d6;
      if (j2 > 29) {
      double d11 = (double) ((float) (j2 - 29) / 3.0F);
      d10 = d10 * (1.0D - d11) + -10.0D * d11;
      }
      this.field_147434_q[l] = d10;
      ++l;
      }
      }
      }
      }
      我承认我现在还没有完全分析懂它的工作原理,因此这里就不贴出了来了。
      估计在很长一段时间内就都会用这段代码了。。


      IP属地:浙江3楼2014-10-26 13:34
      回复
        新的截图。。
        修改了光照算法,修复了一系列BUG,主要修改有:
        1.优化光照与渲染算法,速度更快,不易出错。
        2.完全修改浮动显示模式,降低编程难度(虽然现在还不能加mod)
        3.更新命令行模式,解决一些小问题。
        注:本次更新知识开发版,问题依旧多多,因此就不发布了。
        最后上截图:

        可以看到,光照算法有了很大改进,且帧率也提高了不少(一个区块内控制在60帧,跨越区块时帧率有所下降,但不低于20帧,总体运行还算流畅)


        IP属地:浙江4楼2014-10-26 15:39
        收起回复
          大家好,因为本吧人数过少,所以我也比较懒,很少更新,现在来发一下最近的情况。
          主要因为我还要上学,最近又要考试,所以码字的时间比较少,请大家见谅!
          最近打算将整个godLearner的架构好好改一改,主要是把类规划之类的改的好一点什么的
          任务很重,预计大约要寒假结束才能完成,文成后大概功能不会加的很多,但应该bug什么的会少很多,速度也会快一点
          上周打了一千多行代码,累的我。。。(大约用了4个小时左右,上学没时间)
          顺便,大家有没有人擅长鼠绘的,能不能帮我画几张图,有想法的可以私信或者回帖,主要是本人鼠绘渣,家里又没有打印机,谢谢。
          好了,今天就说这么多了,俺又要去码字了。。。TAT


          IP属地:浙江5楼2014-12-12 16:32
          回复
            今天的成就。。。貌似有种程序员式的幽默。。。
            Hello World!!!! ╮(╯▽╰)╭

            --------------------我是分割线,上面是图片-------------------
            好吧,虽然这看上去很简陋,但是他能够运行就是一个好的开始,再说我现在的也不过是一个例子,其实还可以做出许许多多其他的,毕竟架子搭好了,什么都好办,只要努力去做,就没有什么做不到的。(话说我怎么感觉这么感动呢。。)
            好了,今天就这样吧,下次再见!(下次应该就有按钮了。。)


            IP属地:浙江6楼2014-12-14 18:03
            回复
              再来一张


              IP属地:浙江7楼2014-12-14 18:08
              回复
                这两天加入了Unicode字体显示



                呵呵呵呵呵呵


                IP属地:浙江8楼2014-12-21 13:37
                回复
                  突然想吐槽一下。。。(不要在意这些细节)
                  昨天看到有别人送的一盒喜糖,上面写着:
                  I'm comming
                  我随然英语学得不咋地,但这点常识总还是有的:
                  以e结尾的动词现在分词只要去e加ing,不要双写的。
                  也就是说正确的应该是coming而不是comming
                  所以。。。没文化真可怕。


                  IP属地:浙江9楼2015-01-15 08:40
                  回复