ZnTexmCraft 产品发布...

化学
ZnTexmCraft 产品发布帖 (不是

用户头像
七碲化学 ZnTellurium 更新于2026-5-11 09:15:43

ZnTexmCraft 最新地址发布页:https://www.mywiki.cn/ZnTellurium

下方是从 4.22 起所有的更新日志。按发布时间排序,最新的日志排在前列。

========

没次数了...

@一坨蚊子鱼 灰度... 我觉得不好区分就是了,比如说要是底层变黑,那么底层石头和顶层深板岩不好区分

分层设色是什么意思。底下采用不同的纹理?

那这个设计难度可能不太友好喵()我之前是想过这个,但是一直在犹豫

还有一种办法就是顶层方块往斜向上偏移,但这个只能保证顶层方块和它下面的方块有边界感,和上面没有


明天板砖要还回去进行学校资产的每半年的检修,周末拿回来,所以我会消失三天,望周知

========

5.5 凌晨

地形生成初具雏形--指的是单纯的高度而已,矿洞生成未做,河流生成未做,生物群系未做,树啊啥的未做。

但是由高度直接控制的--巨山、平原(绿色,其实我还没想好纹理到底怎么做,这些纹理是临时随便乱定的)、海洋 包括平原上的小山和湖泊,做掉了。

高度系统模仿了 Minecraft 的大陆骨架值控制系统,不过我同样做了一些让它更加轻量快速的优化

文字看着是不是会枯燥喵... 那上图吧,先上一张正常渲染的局部

Screenshot_20260505-021617.png

这个纹理看不惯的话忍一忍,乱做的,目前还没想好怎么区分比如一个草方块是在脚下还是无法逾越的固体方块,有建议欢迎踢我

绿色草方块是平地,泥土和石头是山体,可以想象为世界的一个水平截面,山体在截面中是会 Dirt → Stone 渐近的

好的我们开始上小地图吧,我专门写了个函数就为了搞这个缩略图展示,累死

小地图是 400 格 * 400 格,每个 Canvas 像素是 1 格

Screenshot_20260505-013254.png

这个是一个典型的平原,上面有很多小山,也有湖泊。

食指摁上去食指的宽度大约是 30 格,所以这些山是那种一分钟能挖穿的,湖是那种一分钟能游过去的,都不算大

接下来是一个湖泊稍多的平原

Screenshot_20260505-013450.png

仍然是典型的分形噪声,这玩意调了好久,不过反正最终性能是一流的,板砖这种性能的也可以满帧运行

但是上面这些不叫海洋,手指贴上去比一下大约两分钟就能游过去

Screenshot_20260505-020735.png

没试出来比较大的海洋,因为我的缩略图函数是固定展示一张地图的 x/y 0~400,要一个个试,这个比较小将就看吧

深一点的蓝色是 DeepOcean,我计划的机制是 DeepOcean 无法搭建桥梁,就是 Ocean 你可以搭建一个桥梁在脚下覆盖水,这样可以在上面走,即改造自然

但是 DeepOcean 没法改

我自己乱走的时候碰到过长达几百米的深海,不过现在没有找到。

我们接着看最后一张图吧

Screenshot_20260505-021009.png

这是一个真正的大山,有深板岩可以挖钻石的那种,钻石一定是生成在深板岩层

Dirt-Stone 浅灰-Deepslate 深灰-CaveAir 黑。

CaveAir 就相当于 Minecraft 里面的巨大深板岩层洞穴。很遗憾这次也没有找到大的洞穴给各位看

但有的洞穴是能做到几百格的,不像这个这么可怜,三十格

这种大山的出现频率很低,有意为之,因为我计划在里面放非常强的敌对生物,那么这种山前期就不应该轻易找到(钻石前期也不应该轻易挖到)

没了,真没了,睡觉了喵,都两点半了



5.1 早上

Perlin Noise Fixed !

他喵是两个角点的高度蒙版和权重蒙版的截断索引反了,改了喵

各位可以看到这个地形 (尽管还没有加分形 :D) 非常丝滑,而且它生成地形所需的时间甚至不到引用外部库 simplex noise 的 10%

15 个区块的地形可以在一帧内生成喵!这要归功于 Zn 自创的 64 向梯度预计算优化喵 :3

Screenshot_20260501-100834.png

Screenshot_20260501-100847.png



4.30 晚上

我的简化版 Perlin Noise 算法似乎有点有点有点大大大大问题,它... 各位自己看吧。

这是一张相同地图的不同部分。第一张图是比较漂亮的部分,这个局部还算是比较满意的,在角点嵌套多层分形噪声后应该能得到一个很好的效果。

但是!第二张图... 喵的,为什么会这样啊... 区块边界有明显的分界感。有的地方会产生这种该死的分界!喵的!...

可能是我的高度-方块映射有点问题,我取了 128 作为分界点,可能会带来一定的问题。

Anyhow, 明天修吧喵。睡觉!

Screenshot_20260430-233328.png

Screenshot_20260430-233316.png



4.29 晚上

圆 石 的 纹 理!

该纹理由纹理 #AASSS1AA 自动生成,调用了蒙版 #ilUKpgSmkIJY (A: cobblestone)。

至于这两个 #什么什么的 的看起来奇奇怪怪的压缩字符串是什么意思,往下翻到 4.28 中午有文档可以看喵。

tip: 那个代码有 BUG,不过逻辑是通的,能看,所以我懒得改了 :3

Screenshot_20260427-210911.png



4.28 中午

删掉了之前的所有纹理生成代码,换了一个又短又好读可维护性可自定义性又强的

Screenshot_20260427-132909.png



4.27 晚上

终于把屎山梳理完了... 喵的...

What am I doing: 删了一堆代码,改了一堆代码

下面是一些展示

Screenshot_20260426-231301.png

Screenshot_20260426-231348.png



4.23 中午

适配了 G128 自带的谷歌拼音输入法劫持导致的 Keyup、Keydown 事件混乱的问题。

现在谷歌拼音输入法即使希望导致 keyState 状态混乱也束手无策了:我们测试了许多按键组合,都反映了本机的真实物理按键状态。

Screenshot_20260423-120050.png



4.22 晚上

进行了 strxy 字符串绘制函数的常数优化,G128 上绘制字符串『Version Pre.0』的时长自 ~5ms 降低到 0.15ms。

原生 fillText 需要约 0.04ms 完成这个任务,它是 JS 引擎在 C 底层优化的,而我们达到了其速度的 25%。25% 光速喵!

Screenshot_20260422-202254.png

收起
26
18
共33条回复
时间正序
用户头像
七碲化学 ZnTellurium
1月前

把人都叫过来看看喵

@飞燕草素(是白芥呀) @鸠鸠咕咕 @一只苹果(水木球)

6条评论
用户头像
一只苹果(品尝格调限定版)
1月前

这个需要图片吗,需要的话我有m的贴图

用户头像
七碲化学 ZnTellurium 回复 一只苹果(品尝格调限定版)
1月前

这个不用,因为我的贴图方案是想好了的喵,贴图将会极致压缩并硬编码(不想借助外部库,因为我希望它可以尽量方便和轻)

比如,石头的纹理需要 18 个 bit 存储纹理,其中 3 个 bit 是存储策略,RGB 各 3 个 bit,然后剩下六个是模糊度之类的两个参量()


tip: 关于帖子内容为什么不见了:本来我把源代码 INK 截图 post 在这的,但由于我打算把 Coding 阵地从 INK 转移到帖子正文所以我把截图删掉了

但当我突然想起帖子只能一万字符的时候我就放弃了,自己做了一个 Coding IDE()而且帖子也没改回来()

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

grt

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

?自己造的IDE?(反射弧超长)

用户头像
七碲化学 ZnTellurium 回复 一只苹果(品尝格调限定版)
1月前

其实没那么复杂

比自己造一个 Python IDE 容易 1×10⁴ 倍左右

它的核心不过是下面这行

document.open(); document.write(MyContenteditable.innerText); document.close();

是的,就是用输入框里输入的 HTML 把网页覆盖掉,仅此而已


那么为什么要一万字符呢,这一万字符在做什么?例如

①将粘贴的超文本除了是否加粗和颜色过滤掉,不要复制一个颜色想用进来结果发现字体不一样字号不一样,那会很恶心

②因为点击 contenteditable 时浏览器会自动滚到最上面(移动端是他喵这样的),所以监听 mousedown,然后在浏览器执行这一谜之操作后把滚动进度拉回来

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

有点意思

hao
好高级的东西あ()本锶也想玩~
7条评论
用户头像
七碲化学 ZnTellurium
1月前

然而现在发现 js 越来越难写,因为各种魔法般的 API 满天飞,没有 C++ 直观和顺手

我打算放弃使用那些 API,试着封装一切,通过放弃优雅性来得到直观性

用户头像
UE_锶键子_经典版本_高炉烤制 回复 七碲化学 ZnTellurium
1月前

板砖能上手吗?还是要先破解

用户头像
麦小鼠 回复 UE_锶键子_经典版本_高炉烤制
1月前

bro你的意思是你想用板砖开发网页是吗🤔

用户头像
七碲化学 ZnTellurium 回复 麦小鼠
1月前

可是我这个就是用板砖开发的啊(笑)

今天编了一天啥都没编,80% 的时间都在 debug 上,还有 15% 的时间虽然真正在写但是写完都推倒了,架构不好

然后还是去找 Ds 花一两个小时学了一下 js 操作,那些魔法操作太... 太逆天了,不学就会像今天这样一直被魔法而不是使用魔法

我把最新 UI 扔顶上喵,虽然除了那个初始界面啥都没做

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

?你咋编的代码,板砖啥也没有(佬用的什么环境?推荐一下吧~)

用户头像
鸠鸠咕咕 回复 一只苹果(品尝格调限定版)
1月前

有一些东西可以开外部网页的咕,但是没有目的的探索应该是找不到的咕(?虽然我就是随便翻翻就找到了)

用户头像
七碲化学 ZnTellurium 回复 鸠鸠咕咕
1月前

我说这个帖子怎么浮上来了()

话说我现在在考虑彻底扔掉我的一些坏想法,我自己还是太浅薄了

豆包告诉我,熵编码的自动字典压缩效率远远高过手动字典压缩,也就是我的用两个字符存方块数据再加重复判定的办法

而且我的编码实现困难,代码长度剧增

JS 他喵魔法满天飞...... 太神奇了......

Muggle into Magical World

用户头像
白芥芥芥芥芥
1月前

纯Canvas呐,有点厉害啊~

白芥没有看到懂base64是什么意思,好像只是赋给grta,似乎后面也没有用到

greet写的好复杂,导致白芥第一时间没看懂,笔记本运行不起来,也看不出来是什么...

(人肉计算机加草稿纸隐约看出来一个不规则的圆?)

好奇你的greet想画什么,这里一直在重绘吗?!是不是我理解的问题?

3条评论
用户头像
七碲化学 ZnTellurium
1月前

嗯,我上面部分的代码真的就是史山,它们用了极不优雅的逻辑进行实现

不过,它们能跑!这才是最重要的

我的习惯是封装好测试表明完全无 BUG 以后就压行。压行完就不动了,就搁那放着()

我感觉要是再放个两三天我自己都看不懂这个函数了喵 qwq

Screenshot_20260414-000342.png


用户头像
七碲化学 ZnTellurium
1月前

话说我今晚本来想做纹理 unzipper 的,我的方块纹理也打算打包压缩硬编码成 base64,然后写解码函数

但是写到一半就发现自己无法思考了,因为今天状态也不太好,写的时候很困,可能是因为昨晚一点才睡吧...

我的纹理文件不打算 atob,打算自己写解码函数

压缩格式如 !AA9oS,!ABXXX,!ACXXX, ......

! 代表采用通用压缩策略,后续可能加入其他压缩策略,! 压缩策略用五个字符表示一个方块的纹理

AA 代表方块的 ID,9oS 是 base64,拆成 6 个值可为 0~7 的参量,R G B M I O

M 是自发光系数,代表显示时有百分之多少不受环境亮度影响

I 是横向扰动强度,O 是无向扰动强度,嗯... 这个怎么解释喵,就比如 Minecraft 木板纹理都是横向的,那么我们考虑这么生成

首先木板的平均颜色就是上面所说的 R G B,在这个基础上用伪随机进行扰动,得到木板纹理

如果是圆石的话显然要更换扰动策略,所以分 I 和 O

I 意思就是像 I 一样一条一条的,O 意思就是像 O 一样一块一块的

差不多这个意思喵



不管了,至少我做好了字体喵,也发出来,这个模块我觉得效果很令人满意

IMG_20260414_001351_133.jpg

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

$我知道bro为什么不需要贴图了 \sout{细思及恐}$

用户头像
全世界无产者联合起来
1月前

哈哈哈1.png好玩 想玩 上链接嘛

用户头像
七碲化学 ZnTellurium
1月前

@全世界无产者联合起来 然而只编了基本的支持库喵... 比如在画布绘制 ASCII 字符

预计至少要编两三周才能出来最小可玩版本

第一次用 js 写游戏,而且比我初二写的复杂度爆表的小 2D 架构什么的都要高很多,我感觉不太习惯,也不太容易驾驭

我平均一天求助 Ds 的次数应该超过了 20 次

2条评论
用户头像
全世界无产者联合起来
1月前

你这才是真正的板砖玩家啊 molllllllllllll

对了 你这个网址链接咋没了啊 想玩(

用户头像
七碲化学 ZnTellurium 回复 全世界无产者联合起来
1月前

过期了喵...

但实则只有一个空壳子喵,没得玩,我之前那个链接就是用来展示 HTML CSS 壳子的,能用的只有 /help 命令

用户头像
苯宝宝被硝化了
1月前
坏了这个真吓哭了😱😱😱😱
用户头像
七碲化学 ZnTellurium
1月前

@一只苹果(水木球) @一只苹果(水木球) 是的。(为啥有两个?)

其实我现在就在做和贴图有关的事()做纹理编辑器,跑回来看一眼

我也不知道为什么这么正好居然能撞上一秒前的回复


还有你会发现我的 IDE 新增了标签页功能()

Screenshot_20260416-192223.png

3条评论
用户头像
一只苹果(品尝格调限定版)
1月前

贴图方法有点意思(我一开始没看懂你说的什么,现在才知)(赞少的那个是网页的)(可$$$$恶的CD)

用户头像
七碲化学 ZnTellurium 回复 一只苹果(品尝格调限定版)
1月前

首先,我的板砖如下图。最左边是 INK,中间是 IDE,右边是论坛。

其次,我的 IDE 是我指导 Ds 写的,对我自己很好用。我这码力自己写不出来,不过足够指导 Ds 写出来。

还有要注意,它是手动高亮,内部是一个 contenteditable。没有你想的自动智能高亮喵。

如果你还要的话我可以发出来,因为代码一万多的代码存在 LocalStorage 里面,然后加载出来覆盖页面。youxiheai.xin 那个代码输入框会自动高亮,板砖超过 300 字符就开始极度卡顿,所以我用了专门的代码把 IDE 源码写到 LocalStorage,这样就能规避在代码输入框里粘贴大量内容导致的板砖卡死。

Screenshot_20260416-193430.png

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

。那不用了

用户头像
七碲化学 ZnTellurium
1月前

Zn 猫梁的第三个蓝 V

前两个是打上花火和 Lemon

Screenshot_20260416-224518.png

用户头像
七碲化学 ZnTellurium
1月前

好该死啊喵... 我给豆包码的四五十行回复被 INK 给我卡没了

刚才突然卡死,按电源键都黑不了屏那种,然后我长按电源强制关机,然后文件就损坏变成灰色了

那个文件里的十五页代码备份也都没了

看来我把 IDE 本身的源代码保存到 IDE 自己的缓存里真是一个明智的选择,那里永远不会丢

用户头像
不可思议
1月前

虽然不懂编程完全看不懂...但是感觉好厉害👀(星星眼✨)佬你是要做一个小游戏还是啥吗?而且话说为啥可以在板砖上弄


5条评论
用户头像
七碲化学 ZnTellurium
1月前

第一个问题:请看源码展示最顶上的注释喵

第二个问题:为什么不能在板砖上弄喵 qwq...

用户头像
不可思议 回复 七碲化学 ZnTellurium
1月前

第一个问题其实我刚发完就看到答案了Orz()第二个的话是因为对于我这种对编程完全不懂的人,也完全不知道从板砖哪里可以搞出编编程的界面👀()

不管怎么说期望佬成功完成👀💪

用户头像
一只苹果(品尝格调限定版) 回复 不可思议
1月前

这是他自己写的编辑器(肃然我也不知道从哪运,难不成乐播可以运代码?)

用户头像
七碲化学 ZnTellurium 回复 一只苹果(品尝格调限定版)
1月前

为啥不行喵...

乐播本质是一个 WebView 窗口,虽然受限,但没你想得那么受限

不是在运行代码啊,JS 可以操作网页元素你知道吧,那我直接创建一个元素然后内容是我输入的代码这样不就行了

我正在大刀阔斧地改革我的编辑器,原来的太卡了,我正在考虑引入 Ace

用户头像
一只苹果(品尝格调限定版) 回复 七碲化学 ZnTellurium
1月前

原来如此

尽然专门改了名字