当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4172871.html

相关文章:

  • 计算机考研408核心考点:虚拟内存地址转换机制深度解析与真题实战
  • 机器人应用泛化:从汽车产线到千行百业的技术变革与实践指南
  • ESP-FC 低成本飞行控制器完整指南:约 5 美元打造自己的 ESP32 四轴飞控
  • Spec4j:基于Java注解的REST API文档自动化生成方案
  • AI招聘技术:原生智能体如何重塑人才选拔流程
  • pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清
  • 网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404
  • AltTab 使用指南:macOS 上的窗口切换技巧
  • C++运算符重载与函数模板:从语法特性到工程实践的核心设计工具
  • Czkawka 跨平台视频查重:从安装到批量清理的完整指南
  • C++模板编程中typename关键字的深度解析与应用实践
  • 数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南
  • TimeSage-MT:构建多轮对话时间序列智能体的评测基准与工程实践
  • andrej-karpathy-skills:把 AI 的“顺手重构“管住
  • 视频标题 - BV1xx411c7mX
  • palera1n 越狱工具:从连上设备到完成越狱的完整指南
  • 5分钟清干净满地物品:流放之路过滤器 NeverSink Filter 快速上手指南
  • 告别手动整理!FileMover开源工具实现文件批量自动化管理
  • wewe-rss RSS订阅管理前端错误监控完整指南:从白屏到分层防御
  • 数学建模中的概率模型:从随机变量到蒙特卡洛模拟的完整指南
  • Auto.js 简介与避坑指南
  • 工业AGV多车路径规划:从轻量级算法到仓库落地实践
  • 从文件到屏幕:Python/java 字符编码、解码、文本处理的底层逻辑解析
  • OPTEE 3.15运行在QEMU ARMv8上
  • MiniMax H3前瞻:技术评估、部署准备与效果验证全指南
  • 机器学习十大经典算法实战指南:从原理到数学建模应用
  • 工业机器人Socket通信:3D视觉引导路径传输的完整协议设计与实现
  • Vue.js面经应用开发实战与核心技巧解析
  • react-rangeslider快速上手指南:5分钟搭建你的第一个React滑块组件
  • 用google-ads-python增删改查广告:10个高频广告操作代码示例,简单到直接复制就能用