HyperRogue的.tes镶嵌文件格式完全指南:定义并加载你的自定义几何
HyperRogue的.tes镶嵌文件格式完全指南定义并加载你的自定义几何【免费下载链接】hyperrogueA SDL roguelike in a non-euclidean world项目地址: https://gitcode.com/gh_mirrors/hy/hyperrogueHyperRogue 是一款运行在非欧几里得世界庞加莱圆盘里的像素风 Roguelike 游戏而它的.tes镶嵌文件格式正是定义游戏地面几何的核心用纯文本描述图块、边角长度与连接规则即可加载你的自定义镶嵌世界。HyperRogue 内置了几十个.tes样例格式为人类可读设计——所有数值都可以写成公式甚至支持在引擎里实时拖动滑动条改变几何。本文是面向新手的.tes镶嵌文件格式完整指南从加载第一个文件到写出带滑动条、对称与非周期结构的自定义镶嵌。1️⃣ .tes 镶嵌文件格式是什么一个.tes文件描述一套镶嵌tessellation由若干图块tile按规则拼接成的世界地面。它决定游戏中六角、七边等地板的形状与连接方式。核心特点纯文本、人类可读用公式而非死数字描述几何天然支持参数化镶嵌三种几何通用双曲h2.、欧几里得e2.、球面s2.外加仿射平面a2.可交互滑动条slider允许在游戏菜单中实时改变角度/边数出错可调试镶嵌定义非法时引擎会进入调试器可沿连接规则手动行走验证官方格式说明文档tessellations/sample/README.md2️⃣ 如何加载你的 .tes 镶嵌文件两种方式菜单加载游戏主菜单 →Special Modes→Experiment with Geometry→Geometry→ 选择hyperbolic*欧几里得/球面入口也行任何文件都能从任意入口加载→Load from file弹出文件对话框入口逻辑见 arbitrile.cpp 中的choose()。命令行加载./hyperrogue -tes tessellations/sample/marjorie-rice.tes文件加载失败或镶嵌定义非法时HyperRogue 会自动启动镶嵌调试器让你查看已定义的图块并按连接规则移动——这是排查.tes错误最快的办法。3️⃣ .tes 文件结构速览一个典型.tes文件按顺序由以下部分组成行/指令含义示例## 名称镶嵌显示名##开头的行## HyperRogue standard tilingh2./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 连 七边形边0tile(e0, a0, e1, a1, ...)按顺时针给出边长与内角边长全为 1 时可写unittile(a0, a1, ...)。图块从 0 编号。c(i1,n1,i2,n2,m)表示图块 n1 的边 i1 连 图块 n2 的边 i2m1表示镜像连接。Conway 记号更紧凑conway((0 0)(1 2))表示 0 号图块的边 0 自连、边 1 连边 2。i、i、i、in分别指 0、1、2、n 号图块的边 i用[ ]代替( )表示镜像连接。4️⃣ 公式系统让几何算出来而不是填死数.tes中所有数值都可以是公式支持复数。可用常数与函数pi、degπ/180、e、i、inf运算符 - * / ^函数sin cos tan sinh cosh tanh asin acos atan asinh acosh atanh exp sqrt log re im conj floor frac min max以及let(xa,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 Geometry→Tessellation 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 Geometry→Pattern常用图案模式单色、随机、按类型、按边数。实用技巧来自 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),仅供参考