尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

TEdit World Generation Scripting API:用 JavaScript/Lua 脚本在 Terraria 地图中重建原生世界生成管线

TEdit World Generation Scripting API:用 JavaScript/Lua 脚本在 Terraria 地图中重建原生世界生成管线 游戏开发桌面应用【免费下载链接】Terraria-Map-EditorTEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you change world settings (time, bosses downed etc), edit chests and change sign, make epic dungeons, castles, cities, and add rewards for your adventurers!项目地址https://gitcode.com/gh_mirrors/te/Terraria-Map-Editor点击查看免费下载本文深入剖析 TEditTerraria Map Editor内置的generate脚本对象——一套面向过程化世界生成的完整 API。该 API 覆盖树木、矿脉、洞穴、液体湖泊、七大生态区、地牢/丛林神庙等结构以及地表装饰等四十余个方法全部支持撤销追踪可由 JavaScript 或 Lua 脚本直接调用。读完本文你将掌握如何用脚本从零构建一个接近 Terraria 原生密度与地貌特征的世界并能读懂仓库自带的worldgen-showcase.js19 步世界生成示例。1. 概述generate对象与 Feature TrackerTEdit 的脚本引擎基于 JintScriptEngine.cs 与 LuaScriptEngine.cs在脚本执行上下文中注入一个generate对象供过程化世界创建使用。该对象在 ScriptApi.cs 中通过Generate new GenerateApi(world, undo, selection)创建因而所有修改都写入 TEdit 的撤销管理器IUndoManager可随时 Undo。脚本中对应的 TypeScript 声明位于 tedit-api.d.ts 的declare const generate段。GenerateApi是一个 partial class按职责拆分为五个源文件均位于src/TEdit/Scripting/Api/文件类别核心方法GenerateApi.cs树木与核心tree、forest、forestInSelection、listTreeTypesGenerateApi.WorldGen.cs地形原语tileRunner、tunnel、lake、oreVein、findSurface、listOreTypesGenerateApi.Biomes.cs生态区iceBiome、corruption、crimson、hallow、mushroomBiome、marbleCave、graniteCave、spiderCaveGenerateApi.Structures.cs大型结构ocean、desert、jungle、underworld、beehive、pyramid、livingTree、dungeon、jungleTemple、undergroundHouseGenerateApi.Deco.cs装饰placeVines、placePlants、placePots、placeStalactites、placeTraps、placeLifeCrystals、smoothWorld、placeSunflowers、placeThorns文档中附带的 Feature Tracker 对比了 TEdit 已实现的 worldgen 功能与 Terraria 原生世界生成的对应关系表面地形剖面TerrainPass 随机游走、土/石填充、岩石/泥土散布TileRunner blob、小孔洞、土层与岩层洞穴、表面竖井、草地蔓延、矿脉Cu/Fe/Ag/Au、粘土/淤泥、水湖/岩浆池/蜂蜜Lakinater、指数深度海洋TuneOceanDepth、冰/丛林/沙漠/蘑菇/腐化/猩红/神圣生态区、地狱、地牢、丛林巨树、蘑菇树、大理石/花岗岩/蜘蛛洞穴、蜂巢、金字塔、生命树、地下房屋、丛林神庙、藤蔓/植物/陶罐/钟乳石/生命水晶/向日葵/荆棘、地形平滑等均已完成漂浮岛、NPC 房屋、附魔剑冢、地狱堡垒、宝石洞穴、微光湖、困难模式矿脉、化石、叶绿矿脉、地表小屋、恶魔祭坛、暗影珠/猩红之心、地牢家具/宝箱、地表沙丘、丛林神龛、冰生态宝箱、发光苔藓洞穴、蜂巢幼虫、灰烬树、珊瑚礁等则列入Phase 2。2. 生态区几何shape 参数与 Biome Shapes所有生态区方法都接受可选的shape参数来控制区域几何底层判定实现为 GenerateApi.Biomes.cs 中的IsInsideShape它将行列坐标归一化到以(x w/2, y)为中心、横向±w/2、纵向0..1的坐标系再套用不同的判定公式并为每个方块在边界处叠加 ±0.12 的随机抖动(_rand.NextDouble() - 0.5) * 0.12形成自然毛边。Shape几何公式源码实现适用场景rectangleabs(nx) 1 jitter且ny ∈ [-0.05, 1.05]轴对齐盒简单区域ellipsenx² (2·ny−1)² 1 jitter椭圆距离判定丛林、蘑菇trapezoidabs(nx) 1 0.5·ny jitter底部更宽冰生态区diagonalLeftabs(nx − 0.4·(2·ny−1)) 1 jitter平行四边形向左倾斜腐化、神圣 V 形条带diagonalRightabs(nx 0.4·(2·ny−1)) 1 jitter向右倾斜猩红 V 形条带hemisphere上半nx² (2·ny)² 1穹顶下半矩形沙漠表面沙丘每个生态区有合理默认值冰trapezoid、腐化diagonalLeft、猩红diagonalRight、神圣diagonalLeft、蘑菇ellipse、沙漠ellipse、丛林rectangle。3. 树木 APItree/forest/forestInSelection/listTreeTypes3.1 方法签名与语义tree(type, x, y) → bool在基座坐标(x, y)种植单棵树y是地面高度树向上生长返回是否成功放置。forest(types, x, y, w, h, density?) → int在矩形内种植多棵树从types数组中随机选种树干之间最少保持 4 格间距Terraria 要求 3 格空隙以免x±1处的枝干重叠相邻树干见 GenerateApi.cs 的minSpacing 4density默认0.15范围0.0–1.0内部用Math.Clamp收紧实际间距在minSpacing与1/density之间随机浮动。返回种树数量。forestInSelection(types, density?) → int与forest相同但使用当前选区矩形无选区时返回 0。listTreeTypes() → object[]返回所有支持树种{ name, tileId }。3.2 支持树种表NameTile IDHeight Range备注oak55–16标准树jungle5965–16活木巨树Living Mahoganypalm32310–20棕榈带 ±8 倾斜mushroom725–16巨型蘑菇菌盖在顶部topaz5837–12宝石树amethyst5847–12宝石树sapphire5857–12宝石树emerald5867–12宝石树ruby5877–12宝石树diamond5887–12宝石树amber5897–12宝石树sakura5967–12樱花树与 jungle 同 tile 不同帧willow6167–12柳树ash6347–12灰烬树地狱类型名匹配使用StringComparer.OrdinalIgnoreCase大小写不敏感。从源码可看出三类生长实现标准树GrowStandardTree逐段放置树干并随机树干帧frameType0–9对应frameX0/22/44 与frameY0/66…中段随机生成左/右/双侧枝frameType 5/6/7顶部放置树冠帧12/13 概率正常树冠frameX221/13 概率秃顶frameX0底部按两侧地面情况生成根部扩展PlaceBase的 4 种 baseStyle棕榈树GrowPalmTree随高度累积 ±2 的frameY倾斜量形成自然弯度蘑菇树GrowMushroomTree则在顶部放置U36的菌盖。4. 地形原语TileRunner 家族与液态湖这些是生态区、洞穴、矿脉、湖泊共用的底层算法全部在 GenerateApi.WorldGen.cs 中实现。4.1tileRunner(x, y, strength, steps, tileType, speedX?, speedY?)移植自 Terraria 的WorldGen.TileRunner——一个“漫游画家”算法从(x, y)出发迭代steps次每次以线性衰减的半径填充菱形斑点半径 strength × remaining/total判定|dx||dy| strength×0.5×(1±15% 抖动)位置随速度矢量游走速度随机抖动并被钳制在 ±1。放置模式下会跳过帧重要方块家具、植物等WorldConfiguration.GetTileProperties(...).IsFramed为真的方块避免破坏已放置结构。测试 GenerateApiTests.cs 中的TileRunner_PlacesTilesInSolidArea、TileRunner_SkipsFrameImportantTiles、TileRunner_WithSpeedBias_PlacesTilesAwayFromStart分别验证了落块、跳帧与速度偏置行为。4.2tunnel(x, y, strength, steps, speedX?, speedY?)与tileRunner同算法但清除方块而非放置用于生成自然洞穴隧道clearModetrue时调用Tile.ClearTile()。4.3lake(x, y, liquidType?, strength?)移植自 Terraria 的WorldGen.Lakinater分两遍完成第一遍以25–50×strength初始半径、向下偏置速度velY钳制在0.5–1.5雕刻不规则空腔并清空液体第二遍从每列底部向上填充液体——因为 TEdit 没有液体物理代码按空腔高度在regionMinY 20%处计算水位线下方填LiquidAmount255满液、上方留空气袋。参数liquidType默认water可选lava、honey、shimmer大小写不敏感其他值回退到 waterstrength默认1.0为尺寸乘数且有20% 概率_rand.Next(5)0整体 1.5× 放大。4.4oreVein(oreName, x, y, size?)tileRunner的命名便捷封装size为small0.5×、medium1.0×、large2.0×对默认 strength/steps 等比例缩放steps 至少为 1。支持 18 种矿石数据表见 GenerateApi.cs 的OreTypesNameTile IDStrengthStepscopper74.010tin1664.010iron64.012lead1674.012silver94.512tungsten1684.512gold85.014platinum1695.014meteorite376.015hellstone586.015cobalt1075.014palladium2215.014mythril1086.016orichalcum2226.016adamantite1117.018titanium2237.018chlorophyte2116.016luminite4088.020listOreTypes()返回同样的{ name, tileId }列表测试断言其长度为 18 且包含 chlorophyte/luminite。4.5findSurface(x, yStart, yEnd) → int在x列从yStart向下扫描到yEnd返回第一个激活实心方块的 y 坐标即地表未找到返回-1。它是所有生态区方法定位地表的关键辅助函数Forest、IceBiome、Corruption等内部均调用它。5. 生态区 API转换规则与 Terraria 对照所有生态区方法返回被转换的方块数内部先把IsInsideShape判定通过的区域按 tile 类型映射表做“石头→XX、泥土→XX、草→XX”等转换再叠加各自的结构特征。5.1iceBiome(x, y, w, h, shape?) → int默认trapezoid越深越宽。转换stone→冰(161)、dirt→雪(147)、grass→雪、mud→雪泥(224)、sand→硬化沙(397)土墙(2)→雪墙(40)。随后额外散布max(3, w*h/5000)个冰洞斑点TileRunnerCore填冰与max(2, w*h/6000)个雪泥斑点。Terraria 对照由 WorldGen.cs 的 12 趟生成形状采用每行 ±4/±5 漂移的随机游走并相对上一行平滑范围从worldSurface雪顶到lavaLine-140雪底包含薄冰覆水、裸露宝石、冰柱钟乳石、冰小堆与冰冻宝箱等子结构。5.2corruption(x, y, w, depth, shape?) → int默认diagonalLeft。转换stone/dirt→黑檀石(25)、grass→腐化草(23)、sand→黑檀沙(112)、ice→紫冰(163)土墙→黑檀石墙(3)。随后在生态区内用ChasmRunner开凿max(1, w/40)条垂直裂隙——这是WorldGen.ChasmRunner的移植宽度 7–11 格、向下速度钳制0.5–2.5、宽度每步衰减 0.1在下半程remaining steps/2有 1/3 概率向左右分支出ChasmRunnerSideways横向侧支宽 7–12、长 20–40 步。Terraria 对照由GenPassNameID.CorruptionAndCrimson生成地表条带约 200–600 格宽竖井150rng(150)步侧支在worldSurface20起另有暗影珠(31) 2×2、恶魔祭坛(26)、死亡草(24)、腐化藤蔓(636)与荆棘(22)等装饰。5.3crimson(x, y, w, depth, shape?) → int默认diagonalRight。转换stone/dirt→猩红石(203)、grass→猩红草(199)、sand→猩红沙(234)、ice→红冰(200)土墙→猩红石墙(83)。裂隙比腐化更宽更有机CrimsonChasmRunner宽 8–15、圆距离判定、向下速度钳制0.3–2.0。Terraria 对照CrimStart→CrimVein→CrimPlaceHearts地表宽度与腐化相同地下由半径 15–25 的下潜段连到半径 40–55 的地下腔室5–8 条CrimVein放射半径 15–25、长 100–150 步在端点放置猩红之心(31 frameX36)另有恶毒蘑菇植物(201)、猩红藤蔓(205)。5.4hallow(x, y, w, h, shape?) → int默认diagonalLeft。转换stone→珍珠石(117)、grass→神圣草(109)、sand→珍珠沙(116)、ice→粉冰(164)、dirt→神圣泥土(477)洞穴墙→神圣洞墙(28)。Terraria 对照原生 worldgen 不生成神圣之地——它由困难模式激活initializeHardMode时的GERunner(i, 0, speedX, speedY, goodtrue)创造半径 200–250 的对角 V 臂扫过世界同时把腐化/猩红方块转回自然或神圣变体神圣藤蔓(382)从土墙洞穴垂下。5.5mushroomBiome(x, y, w, h, shape?) → int默认ellipse。第一遍把 stone/dirt/grass→泥(59)并在空气方块里也补蘑菇墙(80)保证生态判定第二遍把暴露在空气中的泥转成蘑菇草(70)再散布max(2, w*h/4000)个泥块斑点。Terraria 对照ShroomPatch每生态位调 6 次Y 距离乘 2.3 形成扁椭圆宽高比约 4–5:1水平半径 80–100、垂直 20–26随世界尺寸缩放内部 20% 挖空并铺蘑菇墙(80)20%–40% 填泥(59)泥脉经TileRunner带下偏速度生成巨型蘑菇树从蘑菇草(70)上长出位置在rockLayer50到maxTilesY-300每世界最多 50 棵。5.6jungle(x, y, w, h, shape?, ditherWidth?) → int默认rectangle——如 Terraria 一样填满整个纵向空间。边缘抖动dithering代替硬边界ditherWidth默认 15设为 0 即硬边定义了边缘概率衰减带代码按edgeDist/ditherWidth线性衰减、随机跳过。第一遍 stone/dirt/grass→泥(59)、土墙→泥墙(15)第二遍暴露泥→丛林草(60)随后开凿max(5, w*h/3000)条丛林洞穴并散布泥块斑点扩展进抖动带。Terraria 对照单一连续生态主TileRunner以 mud(59)、strength400–600×worldScale、steps10000、speedY-20, noYChangetrue从(maxTilesYrockLayer)/2向上喷射生成巨型有机边缘子结构含蜂巢(225/蜂巢墙86)、丛林神龛、蜥蜴神庙(226/墙87)、活木巨树(383/384)装饰有丛林植物(61)、丛林藤蔓(62)、2×2 丛林植物(233)。5.7desert(x, y, w, h, shape?) → int默认ellipse贯穿地图高度的长椭圆。按深度分三带ty y h/4为沙(53)、ty y h×3/4为硬化沙(397)、更深为砂岩(396)跳过帧重要方块地下补砂岩墙(187)开凿max(2, w*h/10000)条沙漠洞穴。Terraria 对照表面沙丘用SandMound.cs的精确公式sqrt(1−t⁴)4200 宽世界约为 320 格宽、510–680 格深极深三垂直带为表面沙丘穹顶→沙漠过渡→地下蜂巢Voronoi/metaball 簇算法4 类入口Chambers/Anthill/LarvaHole/Pit 各 33%子结构有金字塔、绿洲、沙漠屋宝箱 style 10、化石(404)。5.8 洞穴类marbleCave(x, y, strength?)/graniteCave(x, y, strength?)/spiderCave(x, y, strength?)大理石洞3–5 次游走斑点填大理石(367) 大理石墙(178)半径约 strength×1.3 的PlaceWallBlob再挖 2–4 条内洞。strength默认 40.0。花岗岩洞同上填花岗岩(368)/花岗岩墙(180)内洞更多3–6 条strength 4–9。strength默认 40.0。蜘蛛洞先挖 2–4 条小隧道再铺radius strength×1.5的蜘蛛墙(62)并在墙内空格以 2/3 概率填蛛网(51)。strength默认 10.0。6. 结构 API从海洋到地狱6.1ocean(direction?, oceanWidth?, maxDepth?) → intTuneOceanDepth的移植。direction-1左/西边缘、1右/东边缘默认 1oceanWidth默认max(80, world×15%)格maxDepth默认 80 格。核心特征指数深度曲线depth maxDepth × (1 − e^(−3.5 × distFromBeach))岸边浅、边缘深每列沙床抖动 ±3累积钳制 ±8形成自然海底沙从沙床线向下延伸 8–15 格封死既有洞穴/缝隙找到沙床下方第一个实心方块再深埋 8 格海面到沙床的水柱填LiquidAmount255水海底散布max(5, oceanWidth/6)个珊瑚(81)。6.2underworld(yStart?) → int六趟算法GenerateApi.Structures.cs天花板/岩浆地板剖面天花板每列 ±3 随机游走钳制yStart±30岩浆地板每列 ±10钳制worldH−80 … worldH−25灰烬填充天花板到世界底部全部填灰烬(57)洞穴雕刻max(10, w/80)条大型水平隧道 max(20, w/40)条纹理小洞 烟囱开口每列 1/50 概率3–7 格宽、30–80 格高向上打通到岩石层狱岩石矿脉max(15, w/40)处TileRunnerCore填狱岩石(58)黑曜石max(8, w/60)处靠近岩浆面±15填黑曜石(56)岩浆填充岩浆地板以下所有开放空格填LiquidAmount255的岩浆。yStart默认取worldH×0.8即岩浆线与上层石层无缝衔接。Terraria 对照5-pass 层结构灰烬天花板在maxTilesY−150..190、岩浆地板在maxTilesY−40..70另有 HellFort5×10 黑曜石砖房间网格与困难模式灰烬树等子结构。6.3beehive(x, y, size?)椭圆蜂巢外壳radiusXsize、radiusYsize×0.7填蜂巢块(225)蜂巢墙(86)内部挖空 70% 尺寸的空腔下 60% 填蜂蜜ty y − innerY×0.4处填LiquidAmount255蜂蜜。size默认随机 15–30。6.4pyramid(x, y, height?)以(x, y)为塔尖的砂岩砖(151)金字塔每行宽度 行号逐行下扩内部开凿对角走廊步长 3:2 比例斜向推进通向末端8–14 × 6–10的宝藏室铺砂岩砖墙 10。height默认随机 40–80。6.5livingTree(x, y, height?)活木巨树树干宽 4–8 格、自height×60%处向上逐段收窄内部挖空并铺活木墙(78)向下伸出 2–4 条随机游走树根长 15–40 步、横向速度钳制 ±1.5顶部铺192叶方块 canopy椭圆判定的稀疏树冠。height默认随机 40–80。6.6dungeon(x, y, direction?, style?)分支式“房间-走廊”布局先开凿 5 格宽、15–30 格深的入口竖井再用BFS 队列放置 10–20 个房间每个 10–20×8–14每房间 1–3 条走廊向下/左/右三向随机带轻微漂移水平走廊后常接 5–15 格下坠段加深纵深高房间8 格内 2/3 概率放平台(19)。style0蓝地牢砖(41)/蓝墙(7)、1绿地牢砖(43)/绿墙(8)、2粉地牢砖(44)/粉墙(9)。Terraria 对照DungeonCrawler.MakeDungeon顺序游走算法放置 34–42 个房间常规/蠕虫状/活树状/BiomeSquare/L 形等走廊分 Normal(4–5 宽)/Long/Tall/Intersection入口必为地表竖井房间放置后还有 13 全局特征趟尖刺(48)、门(10)、平台(19)、书架(101)、桌椅、锁住的金地牢宝箱(21 style 2)、灯笼、旗帜、枝形吊灯、喷泉、裂纹地牢砖、蛛网(51)等未击败骷髅王前进入会生成地牢守卫。6.7jungleTemple(x, y, w?, h?)简化版蜥蜴神庙整个矩形填蜥蜴砖(226)蜥蜴墙(87)再按12–18 × 8–14的单元网格挖空房间每个房间从底/左/右三侧随机开 3 格门洞。w默认 80–150、h默认 60–100。6.8undergroundHouse(x, y, style?)简单地下屋8–16 × 5–8的房间边缘填墙、内部挖空铺墙底部一行放平台。style0木(30/墙4)、1石(1/墙1)、2地牢蓝(41/墙7)。7. 装饰 API方法逻辑要点默认参数placeVines(x,y,w,h,biome?)在草/丛林草/神圣草/猩红草上向下垂藤约 60%rand(5)2跳过概率、长 2–10 格biome∈forest/jungle/hallow/crimson分别对应藤蔓(52)/丛林藤蔓(62)/神圣藤蔓(205)/猩红藤蔓(636)biomeforestplacePlants(x,y,w,h,biome?)草地上随机小植物约 30%rand(10)7跳过概率、随机帧U rand(12)×18biome支持forest/jungle/hallow/corruption/crimson/mushroom对应草植物(3)/丛林植物(61)/神圣植物(110)/腐化植物(24)/猩红植物(201)/蘑菇植物(71)biomeforestplacePots(x,y,w,h,count?)实心地面上的陶罐(28)随机帧U rand(4)×36最多尝试count×10次countmax(5, 面积/2000)placeStalactites(x,y,w,h,count?)石/冰天花板挂钟乳石、石/冰地板长石笋tile 165V0挂 /V18立随机帧countmax(10, 面积/1000)placeTraps(x,y,w,h,count?)贴墙面向空地的飞镖机关(137)左墙U0朝右、右墙U18朝左countmax(3, 面积/5000)placeLifeCrystals(x,y,w,h,count?)2×2 生命水晶(12)四个子格各配 U/V 帧0/18需 2×2 空格 下方 2 格实心countmax(3, 面积/10000)smoothWorld(x,y,w,h)依据四向邻居给暴露边缘方块赋BrickStyle单侧缺邻→对应 Slope、上下缺一→HalfBrick跳过帧重要方块返回修改数—placeSunflowers(x,y,w,h,count?)草地上 2×2 向日葵(27)U0、V0/18需 2 宽空格countmax(3, w/30)placeThorns(x,y,w,h,biome?)腐化草/猩红草上向上长荆棘(32/352)约 25%rand(4)!0跳过概率、长 1–5 格biomecorruption这些实现都遵循“随机采样 重试 SaveAndSet撤销写入”的统一模式且与树木一样在放置后手动设置帧坐标U/V保证与游戏原版贴图一致。8. 实战worldgen-showcase.js的 19 步完整世界生成管线仓库自带的 worldgen-showcase.js 演示了完整流程。运行前提通过File New World任意尺寸新建世界脚本依赖 New World 对话框设置的world.surfaceLevel、world.rockLevel文件头部注明“For a Small world (4200×1200): ~15,000 cave calls, ~6,000 ore veins, lakes, lava pools, trees”。其 19 步依次为地形剖面TerrainPass 移植按 5 类特征段0Plateau/1Hill/2Dale/3Mountain/4Valley随机游走生成逐列surfaceY特征段持续rand(5,40)列两端 8% 为平直海滩、中央 4% 强制高原出生点地表钳制在17%–26%世界高度岩层在surface6%..35%内随机游走。地形填充每列地表到岩层填 DIRT、岩层到lavaLine(80%h)填 STONE。散布斑块面积×1.5e-4个石入土、同数土入石、面积×3e-5个泥斑全部走tileRunner。小孔洞面积×0.0015处每处两次tunnelstrength 2–5/8–15。土层洞穴面积×3e-5处strength 5–15、steps 30–200。岩层洞穴面积×0.00013处strength 6–20、steps 50–300。地表洞穴按列数比例生成小型/中型竖井、大型三分支与水平隧道利用speedY控制方向。草地蔓延逐列向下扫描裸露 DIRT 顶格换成 GRASS。矿脉铜/铁各 3 深度区、银 2 区、金仅深层按区密度6e-5 ~ 2e-4乘面积投放tileRunner。粘土与淤泥面积×5e-5粘土地表–岩层面积×3e-5淤泥深层。地下湖w×0.01处lake(x, y, water, 0.8rand×0.8)。岩浆池w×0.005处lake(x, y, lava, 0.6rand×0.6)。蜂蜜池max(3, w×0.002)处lake(x, y, honey, 0.4rand×0.4)。地狱generate.underworld()默认岩浆线自动衔接。海洋generate.ocean(-1, w×0.12, h×0.07)与ocean(1, …)生成左右两侧。生态区冰trapezoid右 65% 起 25% 宽、丛林rectangle 全纵深、沙漠ellipse 全纵深、腐化diagonalLeft、猩红diagonalRight、神圣diagonalLeft、蘑菇ellipse、max(2, w×0.001)个大理石/花岗岩/蜘蛛洞。结构max(1, jungleW×0.02)个蜂巢 max(5, w×0.005)个地下屋。森林地表[oak,oak,oak,sakura,willow]、丛林[jungle]、蘑菇[mushroom]三种forest调用。装饰藤蔓森林/丛林/猩红、植物森林/丛林、陶罐、钟乳石、生命水晶、向日葵、荆棘腐化/猩红、飞镖机关、最后smoothWorld整体平滑。脚本全程使用log.print/log.progress输出每步进度与统计洞穴调用数、矿脉数、湖泊数、生态区转换数、树数等最后打印总结全程任意一步产生的修改都可撤销。该脚本与文档中的 Feature Tracker 一一对应是理解 API 的最佳可运行范本。9. 测试与验证仓库在 GenerateApiTests.cs 中为generateAPI 提供单元测试可直接验证实现事实ListOreTypes_ReturnsAllOres断言 18 种矿石齐全copper 到 luminiteListOreTypes_HasCorrectTileIds校验 copper7、gold8 等 tile IDTileRunner_PlacesTilesInSolidArea在实心区域放置后能查找到对应类型方块TileRunner_SavesUndoForModifiedTiles验证修改均写入撤销栈_undo.SavedTiles非空TileRunner_SkipsFrameImportantTiles宝箱(21)等帧重要方块不会被覆盖TileRunner_WithSpeedBias_PlacesTilesAwayFromStartspeedX/speedY偏置使落点偏离起点Tunnel_ClearsTilesInSolidArea等隧道与生态区相关测试覆盖清除语义。这组测试与 tedit-api.d.ts 的generate类型声明互为印证表明该 API 是引擎层ScriptApi暴露、JintScriptEngine/LuaScriptEngine执行正式支持的一等公民。10. 使用建议与限制运行方式在 TEdit 的脚本侧栏Scripting Sidebar见 ScriptingSidebarViewModel.cs中加载worldgen-showcase.js对新建空世界执行即可也可用.lua编写等效脚本引擎支持 Lua见 LuaScriptEngine.cs。依赖世界属性forest/ocean/underworld等依赖world.surfaceLevel、world.rockLevel、world.height请先通过 New World 对话框创建世界。撤销保证所有方法通过_undo.SaveTile记录每次改动可整体撤销但脚本是批量修改建议在空世界或测试副本上运行。与原生 Terraria 的差异TEdit 无液体物理lake直接按水位线填充jungleTemple、dungeon等为文档明确标注的“简化”实现Phase 2 功能漂浮岛、神庙完全版等尚未提供。帧数据一致树木、植物、陶罐、生命水晶等放置后会手动写 U/V 帧坐标请勿用普通方块替换逻辑覆盖否则渲染会出现错帧。通过generateAPI你可以把 TEdit 当成一个可编程的“Terraria 世界生成沙盒”在几分钟内用脚本重建原生级别的地形、生态区、结构与装饰并反复迭代直到满意——这正是该 API 相对手工逐格绘制最大的价值所在。赞分享游戏开发桌面应用【免费下载链接】Terraria-Map-EditorTEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you change world settings (time, bosses downed etc), edit chests and change sign, make epic dungeons, castles, cities, and add rewards for your adventurers!项目地址https://gitcode.com/gh_mirrors/te/Terraria-Map-Editor点击查看免费下载相关推荐掩日工具环境配置完整指南GCC、TCC、Go编译器一键部署掩日工具环境配置完整指南GCC、TCC、Go编译器一键部署 掩日工具是一款功能强大的免杀执行器生成工具专为红队操作设计。本文将详细介绍如何快速配置GCC、TCataclysm-DDA 怎么编写 JSON 地图生成规则让新建筑在世界中生成Cataclysm DDA 怎么编写 JSON 地图生成规则让新建筑在世界中生成 假设你要给 Cataclysm DDA 加一座新建筑并让它在新游戏世界的城游戏开发上一篇mpv天文观测太空视频数据播放分析下一篇Neon数据库如何通过Rust 2024 Edition实现Serverless架构革命创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表