开门见山,开源项目地址:
https://github.com/MoebiusMeow/PixelSandbox
做了一晚上的新玩意——
(资料图)
协议是MIT,欢迎各位Mod爱好者参考和使用!
演示gif:
简要说明一下功能
落沙模拟系统,模仿noita
支持整个世界范围的任意量落沙(使用动态区块加载、卸载)
支持可持久化保存(保存在World目录下的一个子目录下,每个chunk单独存了一个文件)
使用GPU计算落沙,跑得很快(60帧)
演示交互方式是
按T放置沙子
挖掘任意物块时会产生一堆沙子
如果你是一个模组开发者或者对模组开发感兴趣的萌新,都可以去clone一下这个项目自己试试看——
https://github.com/MoebiusMeow/PixelSandbox
最后是一些 Q&A
和小k(@-Kyoll-)前两天发的那个落沙模拟有什么关系/区别?
我是看到小k做了才来做的。小k的那个是基于CPU的实现,不支持太多的落沙,因此我就用了一个晚上做了个GPU落沙系统并且开源分享给大家参考。
实现的技术原理是什么?
大致原理就是用大家平时做特效的那种shader来模拟落沙的并行计算。每个像素基于周围几个像素的状态进行更新,类似细胞自动机。
把整个世界划分成区块,计算在区块内部更新。跨区域的落沙移动比较细节,需要额外处理,我的实现方式是给落沙区域加上重叠的padding。
动态区块加载是记录若干最近已经访问过的区块,旧的区块存成文件。因此能够支持超大范围的落沙。
这些技术思路都是来源于noita。所以是的没错,这就是学的noita。大家如果感兴趣可以去搜索noita的gdc talk,里面包含了很多有趣的技术细节。
你的投影Mod怎么样了
还在更新新版本。最近有些别的事,加上过年休息了一段时间,所以进度不是很快。今天是忙里偷闲花了若干小时写了个这个。
关于这个落沙Mod我没有特别想要做成完整的gameplay模组,我是希望其他模组开发者如果感兴趣就直接拿去用,帮ta们做一些本来觉得不好实现的玩法。
感谢大家看到这里~ 希望对各位有帮助!
下次见~