news 2026/8/23 11:09:48

HyperRogue的.tes镶嵌文件格式完全指南:定义并加载你的自定义几何

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HyperRogue的.tes镶嵌文件格式完全指南:定义并加载你的自定义几何

HyperRogue的.tes镶嵌文件格式完全指南:定义并加载你的自定义几何

【免费下载链接】hyperrogueA SDL roguelike in a non-euclidean world项目地址: https://gitcode.com/gh_mirrors/hy/hyperrogue

HyperRogue 是一款运行在非欧几里得世界(庞加莱圆盘)里的像素风 Roguelike 游戏,而它的.tes镶嵌文件格式正是定义游戏地面几何的核心:用纯文本描述图块、边角长度与连接规则,即可加载你的自定义镶嵌世界。HyperRogue 内置了几十个.tes样例,格式为人类可读设计——所有数值都可以写成公式,甚至支持在引擎里实时拖动滑动条改变几何。本文是面向新手的.tes镶嵌文件格式完整指南:从加载第一个文件,到写出带滑动条、对称与非周期结构的自定义镶嵌。

1️⃣ .tes 镶嵌文件格式是什么?

一个.tes文件描述一套镶嵌(tessellation):由若干图块(tile)按规则拼接成的世界地面。它决定游戏中六角、七边等地板的形状与连接方式。

核心特点:

  • 纯文本、人类可读:用公式而非死数字描述几何,天然支持"参数化镶嵌"
  • 三种几何通用:双曲(h2.)、欧几里得(e2.)、球面(s2.),外加仿射平面(a2.
  • 可交互:滑动条(slider)允许在游戏菜单中实时改变角度/边数
  • 出错可调试:镶嵌定义非法时引擎会进入调试器,可沿连接规则手动行走验证

官方格式说明文档:tessellations/sample/README.md

2️⃣ 如何加载你的 .tes 镶嵌文件?

两种方式:

菜单加载:游戏主菜单 →Special ModesExperiment with GeometryGeometry→ 选择hyperbolic*(欧几里得/球面入口也行,任何文件都能从任意入口加载)→Load from file,弹出文件对话框(入口逻辑见 arbitrile.cpp 中的choose())。

命令行加载

./hyperrogue -tes tessellations/sample/marjorie-rice.tes

文件加载失败或镶嵌定义非法时,HyperRogue 会自动启动镶嵌调试器,让你查看已定义的图块并按连接规则移动——这是排查.tes错误最快的办法。

3️⃣ .tes 文件结构速览

一个典型.tes文件按顺序由以下部分组成:

行/指令含义示例
## 名称镶嵌显示名(##开头的行)## HyperRogue standard tiling
h2./e2./s2./a2.几何类型h2.
angleunit(...)/distunit(...)角度/距离单位定义distunit(arcmedge(6,6,7))
tile(...)定义图块(边长、内角)tile(1, 90, 1, 90, 1, 90, 1, 90)
conway(...)/c(...)定义边与边的连接conway("(0 0)(1 2)")
slider/intslider可选:滑动条与特殊指令slider(a, 40, 0, 120)

以 HyperRogue 标准镶嵌 tessellations/sample/hr-standard-tiling.tes 为例:

## HyperRogue standard tiling h2. distunit(arcmedge(6,6,7)) # 距离单位:{6,6,7} 阿基米德镶嵌的边长 let(u6 = regangle(1, 6)) # 边长为1的六边形内角 let(u7 = regangle(1, 7)) # 边长为1的七边形内角 unittile(u6,u6,u6,u6,u6,u6) # 图块0:六边形 unittile(u7,u7,u7,u7,u7,u7,u7) # 图块1:七边形 c(0,0,0,0,0) # 六边形边0自连 c(0,1,1,0,0) # 六边形边1 连 七边形边0
  • tile(e0, a0, e1, a1, ...)按顺时针给出边长与内角;边长全为 1 时可写unittile(a0, a1, ...)。图块从 0 编号。
  • c(i1,n1,i2,n2,m)表示"图块 n1 的边 i1 连 图块 n2 的边 i2",m=1表示镜像连接。
  • Conway 记号更紧凑:conway("(0 0)(1 2)")表示 0 号图块的边 0 自连、边 1 连边 2。ii'i''i@n分别指 0、1、2、n 号图块的边 i;用[ ]代替( )表示镜像连接。

4️⃣ 公式系统:让几何"算出来"而不是"填死数"

.tes中所有数值都可以是公式,支持复数。

可用常数与函数pideg(π/180)、eiinf;运算符+ - * / ^;函数sin cos tan sinh cosh tanh asin acos atan asinh acosh atanh exp sqrt log re im conj floor frac min max;以及let(x=a,b)(定义变量)、ifz(x,a,b)/ifp(x,a,b)(条件)。

定义镶嵌最常用的几何函数

函数作用
edge(a,b){a,b} 正镶嵌的边长
edge_angles(x,y,z)角为 x,y,z 的三角形的边长(非欧几何)
arcmedge(3:^2,4:^3)使 2 个三角形+3 个四边形内角和恰为 360° 的边长
regangle(d,s)边长 d 的正 s 边形内角
regradius(a,b){a,b} 图块外接圆半径

例如 tessellations/sample/sliders.tes 用edge_angles把三个角反解出三条边,做出一个角可拖动的三角形镶嵌。

5️⃣ 滑动条:一个文件,无限种镶嵌

.tes文件最强大的特性是滑动条,让同一份文件描述一整族镶嵌:

  • 实数滑动条slider(x, 默认值, 最小值, 最大值):改变几何参数但不改结构,可免重生成地图。见 tessellations/sample/sliders.tes
  • 整数滑动条intslider(x, 默认, 最小, 最大):会改变镶嵌结构,菜单中修改后自动重新生成地图

经典示例是 tessellations/sample/regular.tes:两个整数滑动条分别控制{a,b}的边数 a 与价数 b,并用arcmcurv自动判断该组合属于双曲、欧氏还是球面——一个文件生成全部正镶嵌。加载后在游戏菜单Experiment with GeometryTessellation sliders中拖动即可实时预览。

6️⃣ 高级特性:对称、无限边、非周期与调试

  • 旋转对称tile(e0, a0, e1, a1, *3)表示边/角模式重复 3 次;也可写repeat(tile_index, qty)
  • 镜像对称tile(..., |2)表示镜像对称,边 i 与边 2-i 互为镜像;旋转+镜像并用时*写在|
  • 无限边形(apeirogon):倍数写*inf,见 tessellations/sample/pseudogons.tes
  • 星形镶嵌:加一行star.,如 tessellations/sample/star.tes
  • (超)理想角:在tile中写e1, [a1, e2, a2], e3,配合ideal_angle/ideal_edge函数,见 tessellations/sample/inf.tes
  • 非周期镶嵌:用treestate(...)定义构造树规则,见 tessellations/sample/horotiling.tes
  • 仿射镶嵌:几何行写a2.,配stretch_shear等指令,见 tessellations/affine/affine-square.tes
  • 调试debug(tile_index)手动进入调试器;定义非法时引擎也会自动进入

7️⃣ 让镶嵌画面更好看

加载.tes后默认会开一局游戏,若只想"画几何",用Experiment with GeometryPattern,常用图案模式:单色、随机、按类型、按边数。

实用技巧(来自 tessellations/sample/README.md):

  • 文件中加boundary_ratio(value)控制地板描边宽度,或菜单里Display full floors
  • 线条不够平滑:设置 → 通用图形 → 矢量设置,调高线质量/线宽
  • 截图菜单可隐藏玩家、居中于图块/顶点/边、改配色,还可导出SVG 矢量格式(适合论文插图)
  • 命令行一把梭示例:hyperrogue -tes tessellations/sample/hr-standard-tiling.tes -canvas B -wsh 9 -shot-1000 -shott 1 -noplayer -vlq 3 -lw 5

另外,引擎支持给 3D 模型贴纹理(如 3D 模式下展示星形多面体),项目rogueviz/models/目录附带了 rattex.png 这类高分辨率纹理资源,配合.tes定义的几何可以做出完整的 3D 场景。

8️⃣ 参考资料速查表

文件说明
tessellations/sample/README.md格式权威文档(结构/公式/对称/截图技巧/实现原理)
tessellations/sample/hr-standard-tiling.tesHyperRogue 标准 {6,6,7} 镶嵌
tessellations/sample/regular.tes双滑动条生成的全部正镶嵌
tessellations/sample/sliders.tes实数滑动条三角形镶嵌
tessellations/sample/marjorie-rice.tesMarjorie Rice 非周期四边镶嵌
tessellations/sample/aperiodic_pentagons.tes非周期五边形(含 solve 高级用法)
tessellations/sample/horotiling.testreestate 非周期镶嵌
tessellations/affine/affine-square.tes仿射镶嵌入门
tessellations/sample/inf.tes / pseudogons.tes / star.tes理想角 / 无限边形 / 星形

写在最后.tes镶嵌文件格式是 HyperRogue 的几何引擎开放接口——读懂 hr-standard-tiling.tes 这 30 行,你就掌握了 80% 的日常用法;再结合滑动条与对称记号,即可构建自己的参数化镶嵌家族。更庞大的社区文件库与源码解析入口(arbitrile.cpp)可供进阶参考。祝你的庞加莱圆盘之旅愉快! 🎲

【免费下载链接】hyperrogueA SDL roguelike in a non-euclidean world项目地址: https://gitcode.com/gh_mirrors/hy/hyperrogue

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 11:08:46

计算机考研408核心考点:虚拟内存地址转换机制深度解析与真题实战

如果你正在准备计算机考研,特别是408专业课,那么“地址转换机制”这个知识点一定不陌生。它几乎是每年必考的核心考点,但很多同学在复习时,常常陷入一个误区:以为只要背下“页式管理”、“段式管理”的定义和公式&…

作者头像 李华
网站建设 2026/8/23 11:06:56

机器人应用泛化:从汽车产线到千行百业的技术变革与实践指南

上周和一位在北美做自动化集成的朋友聊天,他提到一个很有意思的现象:过去几年,他们公司接到的机器人项目,十个里有七八个是汽车厂的焊接、喷涂或搬运。但从去年开始,情况变了,来自食品包装、医药分拣、实验…

作者头像 李华
网站建设 2026/8/23 10:57:52

Spec4j:基于Java注解的REST API文档自动化生成方案

如果你在开发 REST API 时,厌倦了在代码和冗长的 YAML 或 JSON 规范文件之间来回切换、手动同步的繁琐工作,那么今天介绍的这个开源项目 Spec4j 或许能让你眼前一亮。它的核心目标非常直接:让你的 REST API 实现“无 YAML”化,通…

作者头像 李华
网站建设 2026/8/23 10:57:41

AI招聘技术:原生智能体如何重塑人才选拔流程

1. 项目概述:AI招聘技术的现状与未来 最近两年,我深度参与了多家头部企业的智能招聘系统改造项目。一个明显的趋势是:传统招聘平台的效果正在断崖式下滑,而基于原生智能体的新一代AI招聘技术正在重塑整个行业。2026年即将到来&…

作者头像 李华
网站建设 2026/8/23 10:55:52

pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清

pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清 【免费下载链接】pypdf A pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files 项目地址: https://gitcode.com/GitHub_Trending/py/pypdf …

作者头像 李华