• 主线程卡死

    • 刚开始我是直接在主线程计算,主线程渲染,实在慢的惨败
    • 后来仔细看了mapgen4的实现,它是开了一个worker的
  • 弄了个Thread计算地形数据也卡

    • 我也开了一个线程,专门用来计算地图数据
    • 在编辑器上面跑,也才200ms-300ms这样,慢呀
    • mapgen4跑起来渲染只用70ms-80ms这样
  • 导出可执行程序,速度很快

    • 尝试导出可执行程序
    • 刚开始把 调试代码 勾上导出,速度也不理想
    • 然后去掉 调试,速度勉强跟得上mapgen4了,80ms-90ms这样
  • 弄了个Jobs System,限制太多

    • 某天看到unity有个Jobs System
    • 然后尝试用了 NativeArray<T>
    • 然后对array不满意,直接用了 IntPtr
    • 哇,回到了我的C++时代,各种指针操作随心所欲
    • 我想说这个Jobs是弱鸡吗,虽然它 可能可以往GPU上扔数据 计算,但是,但是,它竟然 不能在另外一个线程上调用
  • 弄了个Parallel.For

    • 网上搜索了一下C#并行计算
    • C#果然有Parallel接口,虽然不能直接往GPU扔数据,但是我对Parallel很满意,之前Jobs的接口直接调用起来
    • 好了,导出程序跑起来40ms,我很开心 ^_^..
    • 有个缺点,地形计算的时候cpu会占用高一下子
  • 想优化一下河流生成的算法

    • 以适应并发计算,但是以失败告终
    • 事实证明我没有理解透彻河流生成算法,还是把它翻译一遍吧
    • 很遗憾,未能超越前辈
  • 发现gpu占用好像挺高的

    • 发现程序跑起来电脑响声很大
    • 是gpu占用很高,然后想着,每次更新地图后才渲染一次